Cómo utilizar dispositivos USB con una máquina virtual VMware vSphere
La función principal de un hipervisor es emular los dispositivos utilizados por las máquinas virtuales a nivel de software. En una máquina virtual se crean dispositivos, ya sean controladores virtuales, discos, DVD-ROM, tarjetas de vídeo, tarjetas de red, dispositivos de entrada, etc. Pero, ¿y si quieres conectar una impresora, un escáner, una unidad flash USB, un disco duro USB, un lector USB de tarjetas inteligentes, dongles de seguridad, llaves de licencia USB, etc.?
Para los dispositivos físicos externos con una interfaz USB, puede conectarlos a una máquina virtual que se ejecuta en VMware Workstation o un servidor ESXi mediante el uso de la función USB passthrough. Esta entrada de blog cubre el uso de esta función en VMware vSphere en hosts ESXi, incluyendo los requisitos y los pasos para conectar dispositivos USB.
¿Qué es el USB Passthrough?
VMware USB device passthrough es una función que permite conectar un dispositivo USB físico conectado a un puerto USB de un servidor ESXi físico a una máquina virtual como si el dispositivo USB estuviera conectado a una máquina virtual directamente. VMware passthrough es una función disponible a partir de ESXi 4.1.
Las razones para utilizar passthrough para un dispositivo USB desde el servidor ESXi a un sistema operativo invitado (SO) de una máquina virtual varían. Por ejemplo, si tienes un escáner o una impresora antiguos que no tienen controladores para las últimas versiones del sistema operativo Windows. Puede instalar la versión antigua de Windows compatible con el dispositivo USB y conectar este dispositivo a una máquina virtual. Otro uso práctico de esta función es cuando se necesita copiar archivos de/a un disco duro USB a/desde una máquina virtual directamente con alta velocidad. Puede ocurrir que los usuarios necesiten utilizar software protegido por llaves de licencia USB de hardware en máquinas virtuales.
Cómo funciona el USB Passthrough
Hay tres componentes principales necesarios para el funcionamiento del USB passthrough: el árbitro, el controlador USB y el dispositivo USB físico.
El árbitro es un servicio dedicado en un servidor ESXi. El árbitro escanea los dispositivos USB físicos conectados al servidor físico y es responsable del enrutamiento del tráfico de dispositivos USB entre un host físico y una máquina virtual. Sólo una máquina virtual puede acceder al dispositivo USB a la vez. El acceso al dispositivo USB conectado a una máquina virtual está bloqueado para otras máquinas virtuales. El árbitro USB admite hasta 15 controladoras USB (vSphere 7.0). El servicio Arbitrator está activado por defecto en ESXi.
Un controlador USB utilizado en un servidor ESXi físico es el controlador al que se conectan los puertos USB físicos. El controlador USB físico funciona con dispositivos USB físicos insertados en los puertos USB físicos del servidor. Los controladores USB pueden ser de a bordo (también se llaman integrados y están incorporados en un chip de una placa base) o externos (implementados como tarjetas PCI o PCIe que se insertan en las ranuras correspondientes de la placa base de un servidor). El controlador USB integrado actúa como puente entre un bus USB y un bus PCIe (o PCI). El controlador USB de a bordo está conectado físicamente mediante el número adecuado de carriles PCIe a un chipset de una placa base.
Un controlador USB virtual es un dispositivo emulado creado especialmente para una máquina virtual que se ejecuta en un hipervisor. Un controlador USB virtual interactúa con un controlador USB físico cuando se pasa un dispositivo USB físico desde un servidor ESXi físico a un SO invitado en la máquina virtual. Se requiere la presencia de un controlador USB virtual en la configuración de la VM para utilizar la función USB passthrough en la VM. Se puede conectar un máximo de ocho controladores USB virtuales a una máquina virtual en un host ESXi. Si necesita eliminar un controlador USB virtual de una configuración VM, primero tiene que eliminar todos los dispositivos USB conectados a ese controlador. El controlador USB de VMware se instala en un sistema operativo invitado después de añadir un controlador USB virtual a la configuración de la máquina virtual.
Un dispositivo USB físico es cualquier dispositivo USB que tenga una interfaz USB y un puerto USB para conectarse a un ordenador. Se pueden conectar un máximo de 20 dispositivos USB a una única máquina virtual o host ESXi.
Los estándares USB y los modos de controlador son:
- USB 2.0 y USB 1.1 (EHCI+UHCI)
- USB 3.0 (xHCI) VM hardware versión 8 o superior
Después de conectar un dispositivo USB físico a una máquina virtual mediante la función VMware USB passthrough, es posible que necesite 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. Para ello, se requiere el controlador USB xHCI en la configuración VM. Los requisitos del sistema operativo para utilizar USB 3.0 passthrough 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 son compatibles en su velocidad máxima desde VMware vSphere 7.0
Limitaciones del USB Passthrough
Existen algunas limitaciones que debes conocer antes de empezar a utilizar la función USB passthrough:
- No se puede utilizar una unidad USB como unidad de arranque para una máquina virtual.
- Si se utiliza una unidad USB para arrancar ESXi, esta unidad USB no se puede conectar a una máquina virtual.
- Se requiere la versión 7 o superior del hardware virtual para una máquina virtual.
Algunos dispositivos USB pueden no ser compatibles con VMware:
- Concentradores USB
- Dispositivos de audio y cámaras de vídeo que utilizan transferencia de datos asíncrona
- Algunos teclados y ratones USB (puedes encontrar más detalles en el artículo de VMware 1021345)
- Algunas tarjetas inteligentes que utilizan CCID pueden necesitar un ajuste 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 host ESXi.
Existen limitaciones de vMotion para las máquinas virtuales que utilizan discos USB passthrough:
- Distributed Power Management (DPM) no es compatible porque un host 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 host se apaga mediante DPM). DPM debería estar desactivado en este host.
- No se admite la tolerancia a fallos.
- Una VM no puede suspenderse ni apagarse (de lo contrario, los dispositivos USB se desconectan de una VM y sólo pueden volver a conectarse tras la migración de la VM al servidor ESXi inicial al que están conectados físicamente los dispositivos USB). La VM debe migrarse manualmente al host ESXi con el dispositivo USB conectado cuando necesite encender esta VM. Los huéspedes Linux que fueron reanudados pueden montar dispositivos USB en diferentes puntos de montaje después de la reconexión.
- Los hosts ESXi que tienen máquinas virtuales con dispositivos USB passthrough deben ser accesibles a través de la interfaz del kernel de la máquina virtual vmk0 (para la red de gestión) y el puerto TCP 902.
Desconecte los dispositivos USB de una máquina virtual antes de utilizar la función de adición en caliente y añadir dispositivos de CPU, memoria o PCI. De lo contrario, los dispositivos USB se desconectan automáticamente y, al utilizar la función de adición en caliente, pueden perderse algunos datos. Si suspendes una VM y luego la reanudas, los dispositivos USB se desconectan y luego se vuelven a conectar a la VM.
En cuanto a la creación de una unidad USB virtual VMware o unidad flash virtual para adjuntar a una máquina virtual que se ejecuta en ESXi o VMware Workstation, al igual que montaría un disquete virtual o un disco CD/DVD, actualmente esta opción no es posible.
Cómo conectar un dispositivo USB a una máquina virtual
Ahora que ya nos hemos familiarizado con la teoría, podemos pasar a la parte práctica y ver la configuración en VMware vSphere.
- Inserte un dispositivo USB en un puerto USB de su servidor ESXi. En mi caso, voy a insertar una memoria USB.
- A continuación, puede comprobar si el dispositivo USB está conectado a ESXi en la interfaz de línea de comandos de ESXi:
lsusb
- Como se puede ver en la siguiente captura de pantalla, mi unidad flash está ahora conectado al servidor ESXi.
- El servicio de árbitro USB debe estar en funcionamiento. Puede comprobar el estado del servicio con el comando:
chkconfig usbarbitrator --list
- Si el árbitro USB está parado, puede iniciarlo con el comando
/etc/init.d/usbarbitrator start
Nota: Lea más sobre ESXiCLI en la entrada del blog.
La VM reside en el host ESXi que es administrado por vCenter Server en mi ejemplo. Windows está instalado como sistema operativo invitado en mi máquina virtual. Abra VMware vSphere Client, vaya a Hosts and Clusters. En el panel Navegador seleccione una máquina virtual a la que desee conectar el dispositivo USB utilizando la función passthrough. La máquina virtual debe estar apagada. Debe instalar VMware Tools en el SO invitado.
- Una vez seleccionada la máquina virtual, haga clic en Actions > Edit settings.
- En la ventana Edit Settings, compruebe si hay un controlador USB en la configuración de la máquina virtual. Si falta el controlador USB, haga clic en Add New Device > USB Controller, y seleccione el tipo de controlador USB (USB 2.0 o USB 3.0).
- Si el controlador USB está presente, debe añadir el dispositivo USB que está conectado al servidor ESXi a su VM. Haga clic en Add New Device > Host USB Device.
- Se añade una nueva cadena a la configuración de la máquina virtual. En la cadena dispositivo New USB Host, seleccione un dispositivo USB que desee conectar a la VM. Ahora tengo dos unidades flash USB conectadas a mi servidor ESXi físico, y estoy conectando la unidad flash Verbatim a mi VM (producto Verbatim 0x0302). Si necesita activar la compatibilidad con vMotion, expanda dispositivo New Host USB y seleccione la casilla de verificación “Support vMotion while device is connected”. Tenga en cuenta los requisitos y limitaciones de vMotion. Pulse OK para guardar la configuración y cerrar esta ventana.
- Inicie una máquina virtual. Una vez cargado el SO huésped, espere a que se inicialice e instale la unidad flash USB. A continuación, abra el Administrador de dispositivos de Windows. Haga clic con el botón derecho en My Computer y, en el menú contextual, haga clic en Manage. En la Ventana de Computer Management, haga clic en Device Manager y expanda la sección Disk drives (como conectamos una unidad flash USB, este dispositivo debería aparecer en esta categoría de dispositivos). Podemos ver el dispositivo USB Verbatim, que es el nombre de mi memoria USB conectada a la VM con la función VMware USB Passthrough.
- Abra Disk Management en la ventana Computer Management y asegúrese de que la unidad flash USB tiene asignada una unidad de disco. En mi caso, todo es correcto, y ahora puedo copiar datos de la unidad flash USB al disco virtual de una VM en Windows invitado y viceversa.
Paso de PCI de VMware
Si el dispositivo USB que desea conectar a una VM utilizando la función VMware USB passthrough no es compatible con VMware, puede intentar utilizar la función PCI passthrough y conectar todo el controlador USB físico 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. VMware PCI passthrough también se llama VMDirectPass. Este método es menos conveniente que el uso de USB passthrough, pero puede ayudarle a realizar la tarea.
Requisitos
La tecnología Intel Directed I/O o AMD I/O Virtualization Technology (AMD IOMMU) debe ser compatible con el hardware del servidor y estar habilitada en UEFI/BIOS. Si sólo dispone de un controlador USB en su servidor, debería conectar un controlador USB adicional para evitar perder las conexiones con los dispositivos USB utilizados por su servidor ESXi físico.
Restricciones y limitaciones:
- No se puede suspender una máquina virtual.
- Una VM no puede migrarse a otros hosts ESXi con vMotion.
- No se admiten instantáneas de máquinas virtuales.
Veamos el flujo de trabajo de conectar un dispositivo USB a una VM utilizando PCI passthrough y conectando todo el controlador USB al que está conectado un dispositivo USB a una VM.
- Para identificar el dispositivo USB y el controlador USB al que está conectado su dispositivo USB (si hay varios controladores USB instalados en su servidor) utilice este comando:
lsusb -v | grep -e Bus -e iSerial
- Busque la cadena con el nombre de su dispositivo USB conectado al controlador USB e identifique el id del controlador (por ejemplo, bus002).
- Puede comprobar el registro del VMkernel al conectar un dispositivo USB a un servidor ESXi:
tail -f /var/log/vmkernel.log | grep -i USB
- Abra VMware vSphere Client y vaya a Hosts and Clusters.
- Seleccione el host ESXi en el que reside su máquina virtual (a la que necesita conectar un dispositivo USB).
- Vaya a la pestaña Configure y seleccione PCI Devices en la sección Hardware.
- Busque y seleccione el controlador USB necesario en la lista de dispositivos PCI utilizando el ID que ha detectado anteriormente.
- El estado del controlador seleccionado debería cambiar ahora a Available.
- Pulsa OK para guardar los ajustes.
- Reinicie el host ESXi para que los cambios surtan efecto.
- Asegúrese de que su máquina virtual está apagada. Vaya a ajustes de la VM, haga clic en Add New Device > PCI device > Add. Seleccione su controlador USB en el menú desplegable utilizando el ID correcto.
- Encienda la máquina virtual. Compruebe los dispositivos en el SO invitado. Si Windows está instalado en la máquina virtual, abra el Administrador de dispositivos y compruebe los controladores y dispositivos de almacenamiento.
Conexión de tarjetas inteligentes USB
Algunos dispositivos USB que tienen la clase apropiada de CCID pueden no ser compatibles por defecto para la conexión a VMs. El mensaje de error «Cannot connect ‘path:0/1/6/1’ to this virtual machine. The device was not found«. En los logs, se puede ver el mensaje:
(vmx-vcpu-0) did not claim interface 0 before use
PCSCD es el demonio de ESXi que controla los lectores de tarjetas inteligentes. El acceso a las tarjetas inteligentes USB está deshabilitado para las máquinas virtuales para evitar conflictos, ya que un servidor ESXi necesita una tarjeta inteligente. Como resultado, no se puede utilizar USB passthrough con la configuración predeterminada para tarjetas inteligentes USB. Debe editar la configuración del host ESXi para habilitar el paso de USB para tarjetas inteligentes USB.
- Detener la máquina virtual. Abra los ajustes de la máquina virtual, seleccione la pestaña VM Options y haga clic en Edit Configuration.
- En la ventana Configuration Parameters, haga clic en Add Configuration Params.
Como alternativa, 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 con un cliente SSH.
- Edite o añada esta línea a la configuración de la máquina virtual si el parámetro no está presente:
usb.generic.allowCCID = "TRUE"
- Guardar la configuración de la máquina virtual.
- Detenga el servicio PCSCD utilizando este comando en la línea de comandos de ESXi:
sudo /etc/init.d/pcscd stop
- Asegúrese de que el servicio PCSCD no se está ejecutando:
ps | grep pcscd
- Encienda la máquina virtual y compruebe los dispositivos para verificar que el lector USB de tarjetas inteligentes está conectado a la máquina virtual.
Conclusión
Puede conectar diversos dispositivos conectados a puertos USB de servidores ESXi físicos a máquinas virtuales directamente y utilizarlos en sistemas operativos invitados de máquinas virtuales del mismo modo que utiliza estos dispositivos USB en ordenadores físicos normales. Incluso puede migrar máquinas virtuales utilizando dispositivos USB externos conectados al host ESXi principal con vMotion a otro host. A pesar de algunas limitaciones, la función VMware USB passthrough añade más capacidades y flexibilidad en diferentes situaciones.
VMware VM backups es importante para aquellos que utilizan VMware vSphere. Descargue NAKIVO Backup & Replication y pruebe esta solución universal de protección de datos para proteger sus máquinas virtuales VMware vSphere y otros datos de su entorno.