Cómo usar dispositivos USB con una máquina virtual de VMware vSphere

La función principal de un hipervisor es emular los dispositivos utilizados por las máquinas virtuales a nivel de software. Los dispositivos, como controladores virtuales, discos, unidades de DVD-ROM, tarjetas de video, tarjetas de red, dispositivos de entrada, etc., se crean en una máquina virtual. ¿Pero qué pasa si quieres conectar una impresora, escáner, un dispositivo USB flash drive, un disco duro USB, un lector de tarjetas inteligentes USB, dongles de seguridad, claves de licencia USB, etc.?

Para dispositivos físicos externos con interfaz USB, puedes conectarlos a una máquina virtual ejecutándose en VMware Workstation o un anfitrión ESXi utilizando la característica de passthrough USB. Este artículo de blog cubre el uso de esta característica en VMware vSphere en anfitriones ESXi, incluyendo los requisitos y pasos para conectar dispositivos USB.

¿Qué es el Passthrough USB?

El passthrough de dispositivos USB de VMware es una característica que te permite conectar un dispositivo físico USB conectado a un puerto USB en un anfitrión ESXi físico a una máquina virtual como si el dispositivo USB estuviera conectado directamente a la máquina virtual. El passthrough de VMware es una característica disponible a partir de ESXi 4.1.

Las razones para utilizar passthrough para un dispositivo USB desde el host ESXi hacia un sistema operativo (OS) de una máquina virtual varían. Por ejemplo, si tienes un escáner o impresora más antiguos que no tienen drivers para las últimas versiones del sistema operativo Windows. Puedes instalar la versión antigua de Windows que soporte el dispositivo USB y conectar este dispositivo a una máquina virtual. Otra utilidad práctica de esta característica es cuando necesitas copiar archivos de/a un disco duro USB desde/hacia una máquina virtual directamente a alta velocidad. Puede ocurrir que los usuarios necesiten utilizar software protegido por licencias de hardware USB en máquinas virtuales.

Cómo funciona USB Passthrough

Existen tres componentes principales necesarios para que USB passthrough funcione: el arbitrador, el controlador USB y el dispositivo USB físico.

El arbitrador es un servicio dedicado en un servidor ESXi. El arbitrador explora los dispositivos USB físicos conectados al servidor físico y es responsable de enrutar el tráfico del dispositivo USB entre un host físico y una máquina virtual. Sólo una máquina virtual puede acceder al dispositivo USB al mismo tiempo. La acceso al dispositivo USB conectado a una máquina virtual se bloquea para otras máquinas virtuales. El arbitrador de USB soporta hasta 15 controladores USB (vSphere 7.0). El servicio Arbitrador está habilitado por defecto en ESXi.

Un controlador USB utilizado en un servidor físico ESXi es el controlador al que están conectados los puertos USB físicos. El controlador USB físico trabaja con dispositivos USB físicos insertados en los puertos USB físicos del servidor. Los controladores USB pueden ser integrados en la placa base (también llamados integrados y construidos en un chip en una placa base), o externos (implementados como tarjetas PCI o PCIe que se insertan en los slots correspondientes en la placa base del servidor). El controlador USB integrado actúa como un puente entre un bus USB y un bus PCIe (o PCI). El controlador USB integrado está conectado físicamente a través de la cantidad apropiada de carriles PCIe a un chipset de la placa base.

Un controlador USB virtual es un dispositivo emulado creado específicamente para una máquina virtual ejecutando un hipervisor. Un controlador USB virtual interactúa con un controlador USB físico cuando un dispositivo USB físico es pasado de un anfitrión físico ESXi a un sistema operativo invitado en la máquina virtual. La presencia de un controlador USB virtual es requerida en la configuración de la VM para utilizar la característica de passthrough USB en la VM. Se pueden conectar un máximo de ocho controladores USB virtuales a una máquina virtual en un anfitrión ESXi. Si necesita eliminar un controlador USB virtual de una configuración de VM, debe eliminar primero todos los dispositivos USB conectados a ese controlador. El controlador USB de VMware se instala en un sistema operativo invitado después de agregar un controlador USB virtual a la configuración de la máquina virtual.

Un dispositivo USB físico es cualquier dispositivo que tiene una interfaz USB y un puerto USB para conectarse a una computadora. Se pueden conectar un máximo de 20 dispositivos USB a una sola máquina virtual o anfitrión ESXi.

Las normas USB y los modos de controlador son:

  • USB 2.0 y USB 1.1 (EHCI+UHCI)
  • USB 3.0 (xHCI) Versión de hardware de VM 8 o superior

Después de conectar un dispositivo USB físico a una máquina virtual mediante la característica de passthrough USB de VMware, puede que tenga que instalar controladores para el dispositivo USB conectado en un sistema operativo invitado.

Requisitos para USB 3.0

USB 3.0 está disponible para servidores ESXi a partir de VMware vSphere 5.5, patch 3. Esto requiere el controlador USB xHCI en la configuración de la VM. Los requisitos del sistema operativo para utilizar el passthrough USB 3.0 son: Windows 8.1 o superior, Windows Server 2012 R2 o superior, o Linux con kernel Linux 2.6.35 o superior. Los dispositivos USB 3.1 están soportados a su velocidad completa a partir de VMware vSphere 7.0.

Limitaciones del Passthrough USB

Hay algunas limitaciones que debería tener en cuenta antes de empezar a usar la característica de passthrough USB:

  • Un disco USB no se puede usar como un disco de arranque para una máquina virtual.
  • Si se utiliza un disco USB para arrancar ESXi, este disco USB no se puede conectar a una máquina virtual.
  • Se requiere una versión de hardware virtual 7 o superior para una máquina virtual.

Algunos dispositivos USB pueden no estar soportados por VMware:

  • Hub de USB
  • Dispositivos de audio y cámaras de video que utilizan transferencias de datos asíncronas
  • Algunas computadoras de escritorio y ratones USB (se pueden encontrar más detalles en el artículo de VMware 1021345).
  • Algunas tarjetas inteligentes que utilizan CCID pueden requerir una configuración adicional para conectarse a una máquina virtual.

vMotion es posible para VMs con dispositivos USB passthrough conectados. Después de configurar correctamente la VM y habilitar vMotion, los dispositivos USB permanecen conectados a la VM después de la migración a otro anfitrión ESXi.

Hay limitaciones de vMotion para máquinas virtuales que utilizan discos USB passthrough:

  • El Administración de Potencia Distribuida (DPM) no es compatible porque un anfitrión ESXi no puede apagarse para ahorrar energía sin desconectar un dispositivo USB de una máquina virtual (un dispositivo USB se desconecta si el anfitrión se apaga usando DPM). DPM debería estar deshabilitado en este anfitrión.
  • No se admite la tolerancia a fallos.
  • Una VM no se puede Suspender o Apagar (de lo contrario, los dispositivos USB se desconectan de una VM y solo se pueden volver a conectar después de la migración de la VM al anfitrión ESXi inicial al que están físicamente conectados los dispositivos USB). La VM debe migrarse manualmente al anfitrión ESXi con el dispositivo USB conectado cuando necesite encender esta VM. Los invitados Linux que se reanudaron pueden montar dispositivos USB en puntos de montaje diferentes tras la reconexión.
  • Anfitriones ESXi que tienen máquinas virtuales con dispositivos USB passthrough deben estar accesibles a través de la interfaz de kernel de máquina virtual vmk0 (para redes de gestión) y el puerto TCP 902.

Desconecte los dispositivos USB de una máquina virtual antes de usar la característica de hot-add y agregar CPU, memoria o dispositivos PCI. De lo contrario, los dispositivos USB se desconectan automáticamente y puede perderse algún tipo de datos al usar la característica de hot-add. Si suspende una VM y luego la reanuda, los dispositivos USB se desconectan y luego se vuelven a conectar a la VM.

Con respecto a la creación de una unidad virtual USB o unidad virtual de memoria USB para adjuntar a una máquina virtual que ejecute ESXi o VMware Workstation, tal como montar un disco virtual de floppy o un disco CD/DVD, esta opción no está actualmente soportada.

Cómo conectar un dispositivo USB a una máquina virtual

Ahora que hemos familiarizado con la teoría, podemos pasar a la parte práctica y ver la configuración en VMware vSphere.

  1. Insertar un dispositivo USB en un puerto USB de su servidor ESXi. En mi caso, van a insertar un disco USB.
  2. Entonces, puede verificar si el dispositivo USB está conectado a ESXi en la interfaz de línea de comandos ESXi:

    lsusb

  3. Como puede ver en la siguiente captura de pantalla, mi unidad USB está ahora conectada al servidor ESXi.

  4. El servicio del arbiter USB debe estar en ejecución. Puede ver el estado del servicio con el comando:

    chkconfig usbarbitrator --list

  5. Si se detiene el arbiter USB, puede iniciarlo con el comando

    /etc/init.d/usbarbitrator start

    Nota: Más información sobre ESXiCLI en el post de blog.

    La VM se encuentra en el host ESXi que es gestionado por vCenter Server en mi ejemplo. Windows se ha instalado como un SO invitado en mi máquina virtual. Abra el cliente VMware vSphere, vaya a Hosts y Clusters. En el panel Navegador, seleccione una máquina virtual a la que desee conectar el dispositivo USB utilizando la característica de passthrough. La máquina virtual debe estar apagada. Debe instalar VMware Tools en el SO invitado.

  6. Una vez que haya seleccionado la máquina virtual, haga clic en Acciones > Editar configuración.

  7. En la ventana Editar Configuración, verifique si hay un controlador USB en la configuración de la máquina virtual. Si el controlador USB falta, haga clic en Agregar Dispositivo Nuevo > Controlador USB, y seleccione el tipo de controlador USB (USB 2.0 o USB 3.0).
  8. Si el controlador USB está presente, necesitará agregar el dispositivo USB que está conectado al host ESXi a su VM. Haga clic en Agregar Dispositivo Nuevo > Dispositivo USB del Host.
  9. Se agrega una nueva cadena a la configuración de la máquina virtual. En la cadena Nuevo anfitrión USB, seleccione un dispositivo USB que desee conectar a la VM. Ahora tengo dos unidades USB conectadas a mi servidor físico ESXi y estoy conectando la unidad USB Verbatim a mi VM (producto Verbatim 0x0302). Si necesita habilitar el soporte de vMotion, expanda el dispositivo Nuevo anfitrión USB y seleccione la casilla de verificación “Permitir vMotion mientras el dispositivo está conectado”. Tenga en cuenta los requerimientos y limitaciones de vMotion. Haga clic en Aceptar para guardar la configuración y cerrar esta ventana.
  10. Inicie una máquina virtual. Una vez que se haya cargado el sistema operativo del invitado, espere que inicie y instale la unidad USB. A continuación, abra el Administrador de dispositivos de Windows. Haga clic derecho en My Computer y, a continuación, en el menú contextual, haga clic en Administrar. En la ventana Administración de equipos, haga clic en Administrador de dispositivos y expanda la sección Unidades de disco (dado que conectamos una unidad USB, este dispositivo debe aparecer en esta categoría de dispositivos). Podemos ver el dispositivo USB Verbatim, que es el nombre de mi lápiz USB conectado a la VM utilizando la característica de passthrough USB de VMware.
  11. Abrir Gestión de Discos en la ventana Gestión de Equipos y asegurarse de que la unidad USB tenga asignada una unidad de disco. En mi caso, todo está correcto, y ahora puedo copiar datos de la unidad USB a la unidad virtual de una VM en el invitado Windows y viceversa.

Passthrough de PCI de VMware

Si el dispositivo USB que desea conectar a una VM utilizando la característica de passthrough de USB de VMware no es compatible con VMware, puede intentar usar la característica de passthrough de PCI y conectar la unidad física completa del controlador USB que tiene la interfaz PCI a una VM.

Si su servidor ESXi tiene un controlador USB insertado en una ranura PCI, puede pasar este dispositivo PCI a una máquina virtual. El passthrough de PCI de VMware también se denomina VMDirectPass. Este método es menos conveniente que usar el passthrough de USB, pero puede ayudarle a realizar la tarea.

Requisitos

Debe haber soporte para Intel Directed I/O o tecnología de virtualización de E/S de AMD (AMD IOMMU) en el hardware del servidor y habilitado en UEFI/BIOS. Si solo tiene un controlador USB en su servidor, debería conectar un controlador USB adicional para evitar perder conexiones con los dispositivos USB utilizados por su host físico ESXi.

Restricciones y Limitaciones:

  • No puede suspender una máquina virtual.
  • Una VM no se puede migrar a otros hosts ESXi utilizando vMotion.
  • Las instantáneas de máquina virtual no están soportadas.

Veamos el flujo de trabajo de conectar un dispositivo USB a una VM mediante passthrough PCI y conectar completamente el controlador USB al que está conectado un dispositivo USB a una VM.

  1. Para identificar el dispositivo USB y el controlador USB al que está conectado tu dispositivo USB (si hay varios controladores USB instalados en tu servidor) usa este comando:

    lsusb -v | grep -e Bus -e iSerial

  2. Encuentra la cadena con el nombre de tu dispositivo USB conectado al controlador USB y identifíca la id del controlador (por ejemplo, bus002).
  3. Puedes consultar el registro del VMkernel cuando conectes un dispositivo USB a un servidor ESXi:

    tail -f /var/log/vmkernel.log | grep -i USB

  4. Abre el cliente VMware vSphere y ve a Hosts and Clusters.
  5. Selecciona el host ESXi en el que reside tu máquina virtual (a la que necesitas conectar un dispositivo USB).
  6. Ve a la pestaña Configure y selecciona PCI Devices en la sección Hardware.
  7. Encuentra y selecciona el controlador USB requerido de la lista de dispositivos PCI usando la ID detectada anteriormente.
  8. El estado del controlador seleccionado debería cambiar ahora a Disponible.
  9. Pulsa Aceptar para guardar los ajustes.
  10. Reinicia el host ESXi para que los cambios surtan efecto.
  11. Asegúrese de que su máquina virtual esté apagada. Vaya a los ajustes de la VM, haga clic en Agregar Nuevo Dispositivo > Dispositivo PCI > Agregar. Seleccione su controlador USB de la lista desplegable utilizando el ID correcto.
  12. Encierre la máquina virtual. Revise los dispositivos en el sistema operativo invitado. Si Windows está instalado en la máquina virtual, abra el Administrador de dispositivos y revise los controladores y dispositivos de almacenamiento.

Conexión de tarjeta inteligente USB

Algunos dispositivos USB que tienen la clase apropiada CCID pueden no estar soportados de forma predeterminada para conectarse a las VM. La Advertencia “No se puede conectar ‘path:0/1/6/1’ a esta máquina virtual. No se encontró el dispositivo”. En los registros puede ver la siguiente advertencia:

(vmx-vcpu-0) no reclamó la interfaz 0 antes de usarla

PCSCD es el demonio de ESXi que controla los lectores de tarjetas inteligentes. La acceso a las tarjetas inteligentes USB está deshabilitado para las máquinas virtuales para evitar conflictos, ya que un host ESXi necesita una tarjeta inteligente. Como resultado, no se puede usar el passthrough USB con las configuraciones predeterminadas para las tarjetas inteligentes USB. Debe editar la configuración del host ESXi para habilitar el passthrough USB para las tarjetas inteligentes USB.

  1. Detenga la máquina virtual. Abra los ajustes de la máquina virtual, seleccione la pestaña Opciones de VM y haga clic en Editar Configuración.

  2. En la ventana Parámetros de Configuración, haga clic en Agregar Parámetros de Configuración.

    Alternativamente, puede editar el archivo de configuración VMX de la máquina virtual en la interfaz de línea de comandos conectándose a la consola ESXi mediante un cliente SSH.

  3. Edite o agregue esta línea a la configuración de la máquina virtual si el parámetro no está presente:

    usb.generic.allowCCID = "TRUE"

  4. Guarde las configuraciones de la máquina virtual.
  5. Detenga el servicio PCSCD usando este comando en la línea de comandos ESXi:

    sudo /etc/init.d/pcscd stop

  6. Asegúrese de que el servicio PCSCD no se esté ejecutando:

    ps | grep pcscd

  7. Encuentre y active la máquina virtual y verifique que el lector de tarjetas inteligentes USB está conectado a la máquina virtual.

Conclusión

Puede conectar varios dispositivos conectados a los puertos USB en los hosts físicos ESXi directamente a las máquinas virtuales y usarlos en los sistemas operativos invitados de las máquinas virtuales tal como lo haría con estos dispositivos USB en computadoras físicas normales. Incluso puede migrar máquinas virtuales que utilicen dispositivos externos USB conectados al host primario ESXi con vMotion a otro anfitrión. A pesar de algunas limitaciones, la funcionalidad de passthrough de USB de VMware agrega más capacidades y flexibilidad en diferentes situaciones.

Las copias de seguridad de VMware VM son importantes para aquellos que utilizan VMware vSphere. Descargue NAKIVO Backup & Replication y pruebe esta solución de protección de datos universal para proteger sus máquinas virtuales de VMware vSphere y otros datos en su entorno.

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