Como usar dispositivos USB com uma máquina virtual VMware vSphere

A função principal de um hipervisor é emular dispositivos usados por VMs no nível de software. 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, pen drive 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 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 do 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 do VMware é um recurso que permite conectar 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 do VMware é um recurso disponível a partir do ESXi 4.1.

As razões variam para usar o passthrough para um dispositivo USB do servidor ESXi para um sistema operacional convidado (SO) de uma máquina virtual. Por exemplo, você tem um scanner antigo ou uma impressora que não possui drivers para as últimas versões 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 dessa 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 escaneia dispositivos USB físicos conectados ao servidor físico e é responsável pelo roteamento de tráfego do 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

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 fim. Os requisitos do sistema operacional para usar a passagem 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 Passthrough USB

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

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

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

  • Hub 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 que usam CCID podem precisar de ajustes adicionais para conexão com uma VM

vMotion é possível para VMs com dispositivos de passthrough USB conectados. 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 de passthrough USB:

  • O Gerenciamento de Energia Distribuído (DPM) não é suportado 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 pelo DPM). O DPM deve ser desabilitado 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.
  • Os hosts ESXi que têm 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 o recurso de hot-add e adicionar CPU, memória ou dispositivos PCI. Caso contrário, os dispositivos USB são desconectados automaticamente e, ao usar o recurso de hot-add, alguns dados podem ser perdidos. Se você suspender uma VM e depois retomar a VM, os dispositivos USB são desconectados e depois 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 ir para a parte prática e ver a configuração no VMware vSphere.

  1. Insira um dispositivo USB em uma porta USB do seu servidor ESXi. No meu caso, vou inserir um pen drive 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 você pode ver na captura de tela abaixo, minha unidade flash está agora conectada ao servidor ESXi.
  4. O serviço de arbitrador USB deve estar em execução. Você pode verificar o status do serviço com o comando:
    chkconfig usbarbitrator –list
  5. Se o arbitrador USB estiver parado, você pode iniciá-lo com o comando:
    /etc/init.d/usbarbitrator start

    Observação: Leia mais sobre o ESXiCLI no post do blog.

    A VM está residindo no host ESXi que é gerenciado pelo Servidor vCenter no meu exemplo. O Windows está instalado como um sistema operacional 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 deseja conectar o dispositivo USB usando o recurso de passagem. A VM deve estar no estado desligado. Você deve instalar as VMware Tools no sistema operacional convidado.

  6. Uma vez que a VM esteja selecionada, clique em Ações > Editar configurações.
  7. No Editar configurações janela, verifique se há um controlador USB 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 conectamos uma unidade flash USB, esse dispositivo deve ser exibido nesta categoria de dispositivos). Podemos ver o dispositivo USB da 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 do Gerenciador de Computador, e certifique-se de que uma unidade de disco esteja 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.

Passthrough PCI do VMware

Se o dispositivo USB que você deseja conectar a uma VM usando o recurso de passthrough USB do VMware não for suportado pelo VMware, você pode tentar usar o recurso de passthrough PCI e conectar o controlador USB físico inteiro que possui a 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. O passthrough PCI do VMware também é chamado de VMDirectPass. Este método é menos conveniente do que usar o passthrough USB, mas pode ajudá-lo a concluir a tarefa.

Requisitos

A Tecnologia de E/S Direcionada Intel ou a Tecnologia de Virtualização de E/S da AMD (AMD IOMMU) deve ser suportada pelo hardware do servidor e estar habilitada no UEFI/BIOS. Se você tiver apenas um controlador USB em seu servidor, deve conectar 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 snapshots de VM não são suportadas.

Vamos analisar o fluxo de trabalho de conectar um dispositivo USB a uma VM usando a passagem PCI 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 e Clusters.
  5. Selecione o host ESXi no qual sua VM (à qual você precisa conectar um dispositivo USB) está localizada.
  6. Vá para a guia Configurar, em seguida, selecione Dispositivos PCI 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. Certifique-se de que 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. Ligue a VM. Verifique os dispositivos no sistema operacional convidado. Se o Windows estiver instalado na VM, abra o Gerenciador de Dispositivos e verifique os controladores e dispositivos de armazenamento.

Conectando Smart Cards 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 ‘caminho: 0/1/6/1’ a esta máquina virtual. O dispositivo não foi encontrado” é exibida. Nos logs, você pode ver a mensagem:

(vmx-vcpu-0) não reivindicou a interface 0 antes de usá-la

O PCSCD é o daemon ESXi que controla leitores de cartões inteligentes. O acesso a smart cards USB está desabilitado para máquinas virtuais para evitar conflitos, pois um smart card é necessário por um servidor ESXi. Como resultado, você não pode usar o redirecionamento USB com a configuração padrão para smart cards USB. Você precisa editar a configuração do host ESXi para habilitar o redirecionamento USB para smart cards USB.

  1. Pare a máquina virtual. Abra as configurações da máquina virtual, selecione a guia Opções da VM e clique 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 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 smart card USB está agora conectado à VM.

Conclusão

Você pode conectar diversos dispositivos ligados à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 de USB da VMware adiciona mais capacidades e flexibilidade em diferentes situações.

O backup de VM 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/