Como Usar Dispositivos USB com uma Máquina Virtual VMware vSphere

A função principal de um hipervisor é emular dispositivos utilizados por VMs ao nível de software. Os dispositivos são criados em uma VM, seja controladores virtuais, discos, DVD-ROM, placas de vídeo, placas de rede, dispositivos de entrada, etc. Mas e se você quiser conectar uma impressora, scanner, unidade flash USB, disco rígido USB, leitor de cartão inteligente USB, dongles de segurança, chaves de licença USB, etc.?

Para dispositivos físicos externos com uma interface USB, você pode conectá-los a uma VM em execução no VMware Workstation ou em um servidor ESXi usando o recurso de passagem USB. Esta postagem no blog aborda o uso desse recurso no VMware vSphere em hosts ESXi, incluindo requisitos e os passos para conectar dispositivos USB.

O Que É a Passagem USB?

A passagem de dispositivo USB da VMware é um recurso que permite que você conecte um dispositivo USB físico conectado a uma porta USB de um servidor ESXi físico a uma máquina virtual como se o dispositivo USB estivesse conectado diretamente a uma máquina virtual. A passagem da VMware é um recurso disponível a partir do ESXi 4.1.

Razões variam para usar o passthrough para um dispositivo USB do servidor ESXi para um sistema operacional (SO) convidado de uma máquina virtual. Por exemplo, você tem um scanner ou impressora antigos que não têm drivers para as versões mais recentes do Windows. Você pode instalar a versão antiga do Windows suportada pelo dispositivo USB e conectar este dispositivo a uma máquina virtual. Outro caso de uso desta funcionalidade é quando você precisa copiar arquivos de/para um disco rígido USB de/para uma máquina virtual diretamente com alta velocidade. Pode acontecer que os usuários precisem usar software protegido por chaves de licença USB de hardware em máquinas virtuais.

Como o Passthrough USB Funciona

Há três componentes principais necessários para o funcionamento do passthrough USB: o árbitro, controlador USB e dispositivo USB físico.

O árbitro é um serviço dedicado em um servidor ESXi. O árbitro verifica dispositivos USB físicos conectados ao servidor físico e é responsável pelo roteamento de tráfego de dispositivo USB entre um host físico e uma máquina virtual. Apenas uma VM pode acessar o dispositivo USB de cada vez. O acesso ao dispositivo USB conectado a uma VM é bloqueado para outras VMs. O árbitro USB suporta até 15 controladores USB (vSphere 7.0). O serviço de Árbitro é ativado por padrão no ESXi.

A USB controller used on a physical ESXi server is the controller to which physical USB ports are connected. The physical USB controller works with physical USB devices inserted into the physical USB ports of the server. USB controllers can be onboard (they are also called integrated and are built-in on a chip in a motherboard) or external (implemented as PCI or PCIe cards that are inserted into the appropriate slots on a motherboard of a server). The onboard USB controller acts as a bridge between a USB bus and a PCIe (or PCI) bus. The onboard USB controller is physically connected by the appropriate number of PCIe lanes to a chipset on a motherboard.

A virtual USB controller is an emulated device created especially for a virtual machine running on a hypervisor. A virtual USB controller interacts with a physical USB controller when you passthrough a physical USB device from a physical ESXi server to a guest OS on the VM. Presence of a virtual USB controller in VM configuration is required to use the USB passthrough feature on the VM. A maximum of eight virtual USB controllers can be connected to a VM on an ESXi host. If you need to remove a virtual USB controller from a VM configuration, you have to remove all USB devices connected to that controller first. VMware USB driver is installed in a guest OS after adding a virtual USB controller to VM configuration.

A physical USB device is any USB device that has a USB interface and USB port for being connected to a computer. Maximum 20 USB devices can be connected to a single VM or ESXi host.

Os padrões USB e modos de controlador são:

  • USB 2.0 e USB 1.1 (EHCI+UHCI)
  • USB 3.0 (xHCI) versão de hardware da VM 8 ou superior

Após conectar um dispositivo USB físico a uma máquina virtual usando a funcionalidade de passthrough USB da VMware, você pode precisar instalar drivers para o dispositivo USB conectado em um sistema operacional convidado.

Requisitos para USB 3.0

A USB 3.0 está disponível para servidores ESXi a partir do VMware vSphere 5.5 patch 3. O controlador USB xHCI é necessário na configuração da VM para este propósito. Os requisitos do sistema operacional para usar o USB 3.0 são: Windows 8.1 ou superior, Windows Server 2012 R2 ou superior, ou Linux com kernel Linux 2.6.35 ou superior. Dispositivos USB 3.1 são suportados em sua velocidade máxima desde o VMware vSphere 7.0

Limitações para o USB Passthrough

Há algumas limitações que você deve saber antes de começar a usar o recurso de USB passthrough:

  • A USB drive cannot be used as a boot drive for a VM.
  • Se uma unidade USB é usada para inicializar o ESXi, esta unidade USB não pode ser conectada a uma VM.
  • A versão de hardware virtual 7 ou superior é necessária para uma VM.

Alguns dispositivos USB podem não ser suportados pelo VMware:

  • Concentradores USB
  • Dispositivos de áudio e câmeras de vídeo que usam transferência de dados assíncrona
  • Alguns teclados e mouses USB (você pode encontrar detalhes no artigo VMware 1021345)
  • Alguns cartões inteligentes usando CCID podem precisar de ajustes adicionais para conexão a uma VM

vMotion é possível para VMs com dispositivos USB conectados via passthrough. Após a configuração adequada da VM e a ativação do vMotion, os dispositivos USB permanecem conectados à VM após a migração para outro host ESXi.

Há limitações de vMotion para VMs que usam discos USB via passthrough:

  • Gestão de Energia Distribuída (GED) não é suportada porque um host ESXi não pode ser desligado para economia de energia sem desconectar um dispositivo USB de uma VM (um dispositivo USB é desconectado se o host for desligado por GED). GED deve ser desativada neste host.
  • A Tolerância a Falhas não é suportada.
  • A VM cannot be suspended or powered off (otherwise USB devices are disconnected from a VM and they can be reconnected only after migration of the VM to the initial ESXi server to which USB devices are physically connected). The VM must be manually migrated to the ESXi host with the attached USB device when you need to power on this VM. Linux guests that were resumed can mount USB devices to different mount points after reconnection.
  • Hosts ESXi que possuem VMs com dispositivos de passagem USB devem ser acessíveis através da interface do kernel da VM vmk0 (para a rede de gerenciamento) e a porta TCP 902.

Desconecte os dispositivos USB de uma VM antes de usar a funcionalidade de adição a quente e adicionar CPU, memória ou dispositivos PCI. Caso contrário, os dispositivos USB são desconectados automaticamente e, ao usar a funcionalidade de adição a quente, alguns dados podem ser perdidos. Se você suspender uma VM e, em seguida, retomá-la, os dispositivos USB são desconectados e, em seguida, reconectados à VM novamente.

Quanto à criação de uma unidade USB virtual VMware ou uma unidade flash virtual para anexar a uma máquina virtual em execução no ESXi ou no VMware Workstation, assim como você montaria um disco flexível virtual ou um disco CD/DVD, atualmente essa opção não é possível.

Como Conectar um Dispositivo USB a uma VM

Agora que nos familiarizamos com a teoria, podemos passar para a parte prática e examinar a configuração no VMware vSphere.

  1. Insira um dispositivo USB em uma porta USB do seu servidor ESXi. No meu caso, vou inserir uma unidade flash USB.
  2. Você pode verificar se o dispositivo USB está conectado ao ESXi depois disso na interface de linha de comando do ESXi:
    lsusb
  3. Como pode ver na captura de ecrã abaixo, a minha pen drive está agora ligada ao servidor ESXi.
  4. O serviço de arbitragem USB deve estar em execução. Pode verificar o estado do serviço com o comando:
    chkconfig usbarbitrator –list
  5. Se o arbitragem USB estiver parado, pode iniciar o arbitragem USB com o comando:
    /etc/init.d/usbarbitrator start

    Nota: Leia mais sobre o ESXiCLI no post do blog.

    A VM está a residir no host ESXi que é gerido pelo Servidor vCenter no meu exemplo. O Windows está instalado como um SO convidado na minha VM. Abra o Cliente VMware vSphere, vá para Hosts e Clusters. No painel de navegação, selecione uma máquina virtual à qual pretende ligar o dispositivo USB utilizando a funcionalidade de passagem. A VM deve estar desligada. Deve instalar as Ferramentas VMware no SO convidado.

  6. Uma vez que a VM esteja selecionada, clique em Ações > Editar configurações.
  7. Na janela Editar Configurações, verifique se um controlador USB está presente na configuração da VM. Se o controlador USB estiver ausente, clique em Adicionar Novo Dispositivo > Controlador USB e selecione o tipo de controlador USB (USB 2.0 ou USB 3.0).
  8. Se o controlador USB estiver presente, você deve adicionar o dispositivo USB que está conectado ao servidor ESXi à sua VM. Clique em Adicionar Novo Dispositivo > Dispositivo USB do Host.
  9. A new string is added to the VM configuration. In the New USB Host device string, select one USB device that you want to connect to the VM. Now I have two USB flash drives attached to my physical ESXi server, and I’m connecting the Verbatim Flash drive to my VM (Verbatim product 0x0302).

    Se você precisar habilitar o suporte ao vMotion, expanda o Novo Dispositivo USB do Host e selecione a caixa de seleção “Suportar vMotion enquanto o dispositivo estiver conectado”. Lembre-se dos requisitos e limitações do vMotion. Clique em OK para salvar a configuração e fechar esta janela.

  10. Inicie uma máquina virtual. Assim que o sistema operacional convidado for carregado, aguarde até que a unidade flash USB seja inicializada e instalada. Em seguida, abra o Gerenciador de Dispositivos do Windows. Clique com o botão direito em Meu Computador e, no menu de contexto, clique em Gerenciar. Na janela Gerenciamento do Computador, clique em Gerenciador de Dispositivos e expanda a seção Unidades de Disco (como estamos conectando uma unidade flash USB, esse dispositivo deve ser exibido nessa categoria de dispositivos). Podemos ver o dispositivo USB Verbatim, que é o nome da minha unidade flash USB conectada à VM com o recurso de Passthrough USB da VMware.
  11. Abra o Gerenciamento de Disco na janela Gerenciamento de Computador e certifique-se de que uma unidade de disco está atribuída à unidade flash USB. No meu caso, está tudo correto, e agora posso copiar dados da unidade flash USB para o disco virtual de uma VM no Windows convidado e vice-versa.

VMware PCI Passthrough

Se o dispositivo USB que deseja conectar a uma VM usando o recurso de passagem USB da VMware não for suportado pela VMware, você pode tentar usar o recurso de passagem PCI e conectar o controlador USB físico inteiro que possui interface PCI a uma VM.

Se o seu servidor ESXi tiver um controlador USB inserido em um slot PCI, você pode passar este dispositivo PCI para uma máquina virtual. A passagem PCI da VMware também é chamada de VMDirectPass. Este método é menos conveniente do que usar a passagem USB, mas pode ajudá-lo a concluir a tarefa.

Requisitos

A tecnologia Intel Directed I/O ou a Tecnologia de Virtualização de E/S da AMD (AMD IOMMU) deve ser suportada pelo hardware do servidor e habilitada no UEFI/BIOS. Se você tiver apenas um controlador USB em seu servidor, deve anexar um controlador USB adicional para evitar perder conexões com dispositivos USB usados pelo seu servidor ESXi físico.

Restrições e limitações:

  • A VM cannot be suspended.
  • A VM cannot be migrated to other ESXi hosts with vMotion.
  • As capturas de VM não são suportadas.

Vamos analisar o fluxo de trabalho de conectar um dispositivo USB a uma VM usando PCI passthrough e conectando o controlador USB inteiro ao qual um dispositivo USB está conectado a uma VM.

  1. Para identificar o dispositivo USB e o controlador USB ao qual seu dispositivo USB está conectado (se houver vários controladores USB instalados no seu servidor), use este comando:
    lsusb -v | grep -e Bus -e iSerial
  2. Encontre a string com o nome do seu dispositivo USB conectado ao controlador USB e identifique o id do controlador (por exemplo, bus002).
  3. Você pode verificar o log do VMkernel ao conectar um dispositivo USB a um servidor ESXi:
    tail -f /var/log/vmkernel.log | grep -i USB
  4. Abra o Cliente VMware vSphere e vá para Hosts and Clusters.
  5. Selecione o host ESXi no qual sua VM (à qual você precisa conectar um dispositivo USB) está localizada.
  6. Vá para a aba Configure, em seguida, selecione PCI Devices na seção Hardware.
  7. Encontre e selecione o controlador USB necessário na lista de dispositivos PCI usando o ID que você detectou anteriormente.
  8. O status do controlador selecionado deve mudar para Disponível.
  9. Clique em OK para salvar as configurações.
  10. Reinicie o host ESXi para que as alterações tenham efeito.
  11. Verifique se sua VM está desligada. Vá para as configurações da VM, clique em Adicionar Novo Dispositivo > Dispositivo PCI > Adicionar. Selecione seu controlador USB no menu suspenso usando o ID correto.
  12. Ligar a VM. Verificar os dispositivos no sistema operacional convidado. Se o Windows estiver instalado na VM, abrir o Gerenciador de Dispositivos e verificar controladores e dispositivos de armazenamento.

Conectar Cartões Inteligentes USB

Alguns dispositivos USB que possuem a classe apropriada de CCID podem não ser suportados por padrão para conexão com VMs. A mensagem de erro “Não é possível conectar ‘path:0/1/6/1’ a esta máquina virtual. O dispositivo não foi encontrado” é exibida. Nos logs, é possível ver a mensagem:

(vmx-vcpu-0) did not claim interface 0 before use

O PCSCD é o daemon do ESXi que controla leitores de cartões inteligentes. O acesso a cartões inteligentes USB é desativado para máquinas virtuais para evitar conflitos, pois um cartão inteligente é necessário por um servidor ESXi. Como resultado, não é possível usar a passagem USB com a configuração padrão para cartões inteligentes USB. É necessário editar a configuração do host do ESXi para habilitar a passagem USB para cartões inteligentes USB.

  1. Parar a máquina virtual. Abrir as configurações da máquina virtual, selecionar a guia Opções da VM e clicar em Editar Configuração.
  2. Na janela de Parâmetros de Configuração, clique em Adicionar Parâmetros de Configuração.
    Como alternativa, você pode editar o arquivo de configuração VMX da máquina virtual na interface de linha de comando conectando-se ao console ESXi com um cliente SSH.
  3. Edite ou adicione esta linha à configuração da VM se o parâmetro não estiver presente:

    usb.generic.allowCCID = “TRUE”
  4. Salve a configuração da VM.
  5. Pare o serviço PCSCD usando este comando na linha de comando do ESXi:

    sudo /etc/init.d/pcscd stop
  6. Verifique se o serviço PCSCD não está em execução:

    ps | grep pcscd
  7. Ligue a VM e verifique os dispositivos para verificar se o leitor de cartões inteligentes USB está agora conectado à VM.

Conclusão

Você pode conectar diversos dispositivos conectados às portas USB de servidores ESXi físicos a máquinas virtuais diretamente e usá-los nos sistemas operacionais convidados das VMs, assim como você usa esses dispositivos USB em computadores físicos regulares. Você pode até migrar máquinas virtuais usando dispositivos USB externos conectados ao host ESXi pai com vMotion para outro host. Apesar de algumas limitações, o recurso de passagem USB da VMware adiciona mais capacidades e flexibilidade em diferentes situações.

O backup de VMs do VMware é importante para aqueles que usam o VMware vSphere. Baixe o NAKIVO Backup & Replication e experimente esta solução de proteção de dados universal para proteger suas VMs do VMware vSphere e outros dados em seu ambiente.

Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/