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

A principal função de um hypervisor é simular os dispositivos usados por máquinas virtuais no nível de software. Dispositivos, como controladores virtuais, discos, leitores de DVD, placas de vídeo, cartões de rede, dispositivos de entrada, etc., são criados em uma máquina virtual. Mas e se você quisesse 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 com interface USB, você pode conectá-los à uma máquina virtual executando no VMware Workstation ou em um host ESXi usando a funcionalidade de passagem USB. Este post do blog abrange o uso desta funcionalidade no VMware vSphere em hosts ESXi, incluindo os requisitos e passos para conectar dispositivos USB.

O que é Passagem USB?

A funcionalidade de passagem de dispositivo USB do VMware é uma funcionalidade que permite conectar um dispositivo físico de USB conectado a um porto USB em um host ESXi físico à uma máquina virtual como se o dispositivo USB estivesse conectado diretamente à máquina virtual. A passagem USB é uma funcionalidade disponível a partir da versão ESXi 4.1.

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

Como o Passthrough USB Funciona

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

O arbitrador é um serviço dedicado em um servidor ESXi. O arbitrador scana dispositivos USB físicos conectados ao servidor físico e é responsável pela rotação do tráfego de dispositivos USB entre um host físico e uma máquina virtual. Apenas uma máquina virtual pode acessar o dispositivo USB de uma vez. O acesso ao dispositivo USB conectado à máquina virtual é bloqueado para outras máquinas virtuais. O arbitrador de USB suporta até 15 controladores USB (vSphere 7.0). O serviço Arbitrador está habilitado por padrão em ESXi.

Um controlador USB usado em um servidor físico ESXi é o controlador para o qual os portos USB físicos estão conectados. O controlador USB físico funciona com dispositivos USB físicos inseridos nas portas USB físicas no servidor. Os controladores USB podem ser embutidos (também chamados de integrados e construídos em um chip na placa-mãe) ou externos (implementados como cartões PCI ou PCIe que são inseridos nas slots correspondentes na placa-mãe do servidor). O controlador USB embutido age como um bridge entre um barramento USB e um barramento PCIe (ou PCI). O controlador USB embutido está fisicamente conectado via o número apropriado de pistas PCIe a um chipset da placa-mãe.

Um controlador USB virtual é um dispositivo emulado criado especificamente para uma máquina virtual rodando sobre um hipervisor. Um controlador USB virtual interage com um controlador USB físico quando um dispositivo USB físico é passado de um anfitrião físico ESXi para o guest OS na máquina virtual. A presença de um controlador USB virtual é necessária na configuração da VM para usar a funcionalidade de pass-through USB na VM. Até oito controladores USB virtuais podem ser conectados a uma máquina virtual em um anfitrião ESXi. Se você precisar remover um controlador USB virtual da configuração da VM, você deve primeiro remover todos os dispositivos USB conectados a esse controlador. O driver USB do VMware é instalado no sistema operacional convidado após o adicionar um controlador USB virtual à configuração da máquina virtual.

Um dispositivo USB físico é qualquer dispositivo com uma interface USB e um porto USB para conectar-se a um computador. Até 20 dispositivos USB podem ser conectados a uma máquina virtual ou anfitrião ESXi.

As normas USB e os modos de controlador são:

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

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

Requisitos para USB 3.0

O USB 3.0 está disponível para servidores ESXi a partir da versão 5.5 do VMware vSphere com o pacote de correção 3. Isso exige o driver USB xHCI na configuração da VM. As exigências de 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 o kernel Linux 2.6.35 ou superior. Os dispositivos USB 3.1 são suportados a sua velocidade total a partir da versão 7.0 do VMware vSphere.

Limitações do Passagem USB

Existem algumas limitações que você deve ter em mente antes de começar a usar a funcionalidade de passagem USB:

  • Um disco USB não pode ser usado como drive de inicialização para uma máquina virtual.
  • Se um disco USB for usado para iniciar ESXi, este disco USB não pode ser conectado a uma máquina virtual.
  • É necessária a versão virtual de hardware 7 ou superior para uma máquina virtual.

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

  • Hubs USB
  • Dispositivos de áudio e câmeras de vídeo que usam transferência de dados assíncrona
  • Algumas telas e mouses USB (mais detalhes podem ser encontrados no artigo do VMware 1021345).
  • Algumas cartões inteligentes que usam CCID podem necessitar de configurações adicionais para se conectarem a uma máquina virtual.

vMotion é possível para VMs com dispositivos USB pass-through conectados. Após configurar a VM corretamente e habilitar o vMotion, os dispositivos USB permanecem conectados à VM após a migração para outro host ESXi.

Há limitações de vMotion para máquinas virtuais que usam discos pass-through USB:

  • O Gerenciamento de Energia Distribuído (DPM) não é suportado porque um host ESXi não pode ser desligado para poupar energia sem desconectar um dispositivo USB de uma máquina virtual (um dispositivo USB é desconectado se o host for desligado usando DPM). O DPM deve ser desabilitado neste host.
  • O Tolerância a Falhas não é suportada.
  • Uma VM não pode ser suspensa ou desligada (caso contrário, os dispositivos USB são desconectados de uma VM e só podem ser reconectados após a migração da VM para o host ESXi inicial à qual os dispositivos USB estão fisicamente conectados). A VM deve ser migrada manualmente para o host ESXi com o dispositivo USB conectado quando você precisar ligar esta VM. Os convidados Linux que foram suspensos podem montar dispositivos USB em pontos de montagem diferentes após a reconexão.
  • Hosts ESXi que têm máquinas virtuais com dispositivos USB pass-through devem ser acessíveis através da interface de kernel de máquina virtual vmk0 (para rede de gerenciamento) e o porto TCP 902.

Desconecte dispositivos USB de uma máquina virtual antes de usar a funcionalidade de adição hot e de adicionar CPU, memória ou dispositivos PCI. Caso contrário, os dispositivos USB são automaticamente desconectados e podem perder algumas informações quando a funcionalidade de adição hot for usada. Se você suspender uma VM e depois a retomar, os dispositivos USB são desconectados e depois reconectados à VM.

Quanto a criar um drive virtual USB ou drive virtual de memória USB para anexar a uma máquina virtual executando ESXi ou VMware Workstation, assim como você faria para montar um disco virtual de fita ou um disco CD/DVD, essa opção não é suportada atualmente.

Como conectar um dispositivo USB a uma máquina virtual

Como nós já familiarizamos-nos com a teoria, podemos passar para a parte prática e ver a configuração em VMware vSphere.

  1. Insira um dispositivo USB em um porto USB no seu servidor ESXi. No meu caso, eu vou inserir um drive USB.
  2. Você pode então verificar se o dispositivo USB está conectado ao ESXi na interface de linha de comando ESXi:

    lsusb

  3. Como você pode ver na captura de tela a seguir, o meu drive USB agora está conectado ao servidor ESXi.

  4. O serviço de arbitragem USB deve estar em execução. Você pode verificar o status do serviço com o comando:

    chkconfig usbarbitrator --list

  5. Se o arbiter USB for parado, você pode iniciá-lo com o comando

    /etc/init.d/usbarbitrator start

    Nota: Leia mais sobre ESXiCLI no post do blog.

    A VM reside no host ESXi que é gerenciado pelo vCenter Server no meu exemplo. O Windows está instalado como um sistema operacional convidado na minha máquina virtual. Abra o VMware vSphere Client, vá para Hosts e Clusters. No painel Navegador, selecione uma máquina virtual para a qual você quer conectar o dispositivo USB usando a funcionalidade de passando através. A máquina virtual deve estar desligada. Você deve instalar VMware Tools no sistema operacional convidado.

  6. Assim que você tiver selecionado a máquina virtual, clique em Ações > Editar configurações.

  7. Na janela Editar Configurações, verifique se há um controlador USB na configuração da máquina virtual. Se o controlador USB estiver faltando, 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ê precisará adicionar o dispositivo USB que está conectado ao host ESXi à sua VM. Clique em Adicionar Novo Dispositivo > Dispositivo USB do Host.
  9. Adicionada uma nova string à configuração da máquina virtual. Na string Novo Anfitrião USB, selecione um dispositivo USB que você deseja conectar à VM. Eu agora tenho dois drives USB conectados ao meu servidor físico ESXi e estou conectando o drive USB Verbatim à minha VM (Produto Verbatim 0x0302). Se você precisar habilitar o suporte a vMotion, expanda o dispositivo Novo Anfitrião USB e selecione a caixa de seleção “Permitir vMotion enquanto o dispositivo está conectado”. Note os requisitos e limitações do vMotion. Clique em OK para salvar as configurações e fechar esta janela.
  10. Inicie uma máquina virtual. Assim que o sistema operacional convidado for carregado, espere para o mesmo inicializar e instalar o drive USB. Em seguida, abra o Gerenciador de Dispositivos do Windows. Clique com o botão direito do mouse em Minha Computadora e, a partir do menu de contexto, clique em Gerenciar. Na janela Gerenciamento de Computador, clique em Gerenciador de Dispositivos e expanda a seção Unidades de Disco (pois conectamos um drive USB, este dispositivo deve aparecer nesta categoria de dispositivos). Podemos ver o dispositivo USB Verbatim, que é o nome do meu drive USB conectado à VM usando a funcionalidade USB Passthrough do VMware.
  11. Abra o Gerenciamento de Disco na janela de Gerenciamento do Computador e certifique-se de que a unidade flash USB tenha uma unidade de disco atribuída. No meu caso, tudo está correto, e agora posso copiar dados da unidade flash USB para o disco virtual de uma VM no guest Windows 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 tem um controlador USB inserido em uma 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 Intel Directed I/O ou AMD I/O Virtualization (AMD IOMMU) deve ser suportada pelo hardware do servidor e habilitada em UEFI/BIOS. Se você tiver apenas um controlador USB em seu servidor, você deve conectar um controlador USB adicional para evitar perder as conexões com dispositivos USB usados pelo seu host físico ESXi.

Restrições e Limitações:

  • Você não pode suspender uma máquina virtual.
  • Uma VM não pode ser migrada para outros hosts ESXi usando vMotion.
  • As snapshots de máquina virtual não são suportadas.

Vamos olhar para o workflow de conexão de um dispositivo USB com uma VM usando PCI passthrough e conectar todo o controlador USB para o qual um dispositivo USB está conectado a uma VM.

  1. Para identificar o dispositivo USB e o controlador USB ao qual o seu dispositivo USB está conectado (se houver múltiplos controladores USB instalados no seu servidor), use esse 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 quando você conecta um dispositivo USB the 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 máquina virtual reside (para a qual você precisa conectar um dispositivo USB).
  6. Vá para a aba Configurar e selecione Dispositivos PCI na seção Hardware.
  7. Encontre e selecione o controlador USB necessário da lista de dispositivos PCI usando o ID detectado anteriormente.
  8. A situação do driver selecionado deve agora mudar para Disponível.
  9. Clique em OK para salvar as configurações.
  10. Reinicie o host ESXi para que as mudanças tenham efeito.
  11. Certifique-se de que a sua máquina virtual esteja desligada. Vá para as configurações da VM, clique em Adicionar Novo Dispositivo > Dispositivo PCI > Adicionar. Selecione o seu controlador USB na lista suspensa usando o ID correto.
  12. Ligue a máquina virtual. Verifique os dispositivos no sistema operacional convidado. Se o Windows estiver instalado na máquina virtual, abra o Gerenciador de Dispositivos e verifique os drivers e dispositivos de armazenamento.

Conexão de cartão inteligente USB

Alguns dispositivos USB que possuem a classe apropriada CCID podem não ser suportados por padrão para se conectarem a 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”. Nas logs, você pode ver a mensagem:

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

PCSCD é o demônio ESXi que controla os leitores de cartões inteligentes. Acesso aos cartões inteligentes USB está desabilitado para as máquinas virtuais para evitar conflitos, já que um host ESXi require um cartão inteligente. Como resultado, o passthrough USB não pode ser usado com as configurações padrão para cartões inteligentes USB. Você deve editar a configuração do host ESXi para habilitar o passthrough USB para cartões inteligentes USB.

  1. Parar a máquina virtual. Abra as configurações da máquina virtual, selecione a aba Opções da VM e clique em Editar Configuração.

  2. Na janela de Configurações de Parâmetros, clique em Adicionar Parâmetros de Configuração.

    Alternativamente, você pode editar o arquivo de configuração VMX da máquina virtual através da interface de linha de comando, conectando-se à consola ESXi com um cliente SSH.

  3. Edite ou adicione esta linha à configuração da máquina virtual se o parâmetro não estiver presente:

    usb.generic.allowCCID = "TRUE"

  4. Salve as configurações da máquina virtual.
  5. Use este comando na linha de comando ESXi para parar o serviço PCSCD:

    sudo /etc/init.d/pcscd stop

  6. Certifique-se de que o serviço PCSCD não está em execução:

    ps | grep pcscd

  7. Ligue a máquina virtual e verifique os dispositivos para confirmar se o leitor de cartão inteligente USB está conectado à máquina virtual.

Conclusão

Você pode conectar diferentes dispositivos ligados a portas USB em hospedeiros físicos ESXi diretamente às máquinas virtuais e usá-los em sistemas operacionais de convidados da mesma forma que usaria esses dispositivos USB em computadores físicos normais. Até mesmo as máquinas virtuais podem ser migradas usando dispositivos externos USB conectados ao hospedeiro primário ESXi com o vMotion para outro host. Apesar de algumas limitações, a funcionalidade de passagem de USB do VMware adiciona mais capacidades e flexibilidade em diferentes situações.

As cópias de segurança das máquinas virtuais VMware são importantes para aqueles que usam o VMware vSphere. Baixe o NAKIVO Backup & Replication e teste essa solução universal de proteção de dados para proteger suas máquinas virtuais do VMware vSphere e outros dados no seu ambiente.

Source:
https://www.nakivo.com/blog/vmware-administration-essentials-configuring-esxi-vm-networks-2/