La función principal de un hipervisor es emular dispositivos utilizados por las máquinas virtuales a nivel de software. Los dispositivos se crean en una VM, ya sean controladores virtuales, discos, DVD-ROM, tarjetas de video, tarjetas de red, dispositivos de entrada, etc. Pero, ¿qué pasa si desea conectar una impresora, un escáner, una unidad flash USB, un disco duro USB, un lector de tarjetas inteligentes USB, dongles de seguridad, llaves de licencia USB, etc.?
Para dispositivos físicos externos con una interfaz USB, puede conectarlos a una VM que se ejecuta en VMware Workstation o un servidor ESXi utilizando la función de paso de USB. Esta publicación de blog cubre el uso de esta función en VMware vSphere en hosts ESXi, incluidos los requisitos y los pasos para conectar dispositivos USB.
¿Qué es el Paso de USB?
El paso de dispositivo USB de VMware es una función que le 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 directamente a una máquina virtual. El paso de VMware es una función disponible a partir de ESXi 4.1.
Las razones varían para usar el paso a través de USB desde el servidor ESXi a un sistema operativo (SO) invitado de una máquina virtual. Por ejemplo, si tiene un escáner o impresora antigua que no tiene controladores para las últimas versiones de Windows, puede instalar la versión antigua de Windows compatible con el dispositivo USB y conectar este dispositivo a una máquina virtual. Otro caso de uso de esta función es cuando necesita copiar archivos desde/hacia un disco duro USB a/hacia una máquina virtual directamente con alta velocidad. Puede suceder que los usuarios necesiten usar software protegido por llaves de licencia USB de hardware en máquinas virtuales.
Cómo funciona el paso a través de USB
Hay tres componentes principales requeridos para el funcionamiento del paso a través de USB: el arbitrador, el controlador USB y el dispositivo USB físico.
El arbitrador es un servicio dedicado en un servidor ESXi. El arbitrador escanea los dispositivos USB físicos conectados al servidor físico y es responsable de la ruta de tráfico del dispositivo USB entre un host físico y una máquina virtual. Solo una VM puede acceder al dispositivo USB a la vez. El acceso al dispositivo USB conectado a una VM está bloqueado para otras VM. El arbitrador USB admite hasta 15 controladores USB (vSphere 7.0). El servicio de arbitrador está habilitado en ESXi de forma predeterminada.
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.
Los estándares y modos de controlador USB 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 utilizando la función de paso a través de USB de VMware, 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 parche 3. El controlador USB xHCI es necesario en la configuración de VM para este fin. Los requisitos del sistema operativo para usar el pase a través de USB 3.0 son: Windows 8.1 o superior, Windows Server 2012 R2 o superior, o Linux con kernel de Linux 2.6.35 o superior. Los dispositivos USB 3.1 son compatibles con su velocidad máxima desde VMware vSphere 7.0
Limitaciones para el pase a través de USB
Hay algunas limitaciones que debes conocer antes de empezar a usar la función de pase a través de USB:
- A USB drive cannot be used as a boot drive for a VM.
- Si se utiliza una unidad USB para arrancar ESXi, esta unidad USB no puede ser conectada a una VM.
- Se requiere la versión de hardware virtual 7 o superior para una VM.
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 detalles en el artículo de VMware 1021345)
- Algunas tarjetas inteligentes que utilizan CCID pueden necesitar ajustes adicionales para la conexión a una VM
vMotion es posible para VMs con dispositivos USB conectados mediante pase a través. Después de una configuración adecuada de la VM y habilitar vMotion, los dispositivos USB permanecen conectados a la VM después de la migración a otro host ESXi.
Hay limitaciones de vMotion para VMs que utilizan discos de pase a través de USB:
- El Administración de Energía Distribuida (DPM) no es compatible porque un host ESXi no puede ser apagado para ahorrar energía sin desconectar un dispositivo USB de una VM (un dispositivo USB se desconecta si el host se apaga mediante DPM). DPM debería ser desactivado en este host.
- La Tolerancia a Fallos no es compatible.
- 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.
- Los hosts ESXi que tienen VMs con dispositivos de paso USB deben ser accesibles a través de la interfaz de kernel de VM vmk0 (para la red de gestión) y el puerto TCP 902.
Desconecte los dispositivos USB de una VM antes de utilizar la función de agregado en caliente y agregar dispositivos CPU, memoria o PCI. De lo contrario, los dispositivos USB se desconectan automáticamente, y cuando se utiliza la función de agregado en caliente, algunos datos pueden perderse. Si suspende una VM y luego la reanuda, los dispositivos USB se desconectan y luego se vuelven a conectar a la VM nuevamente.
En cuanto a la creación de una unidad USB virtual de VMware o una unidad flash virtual para adjuntarla a una máquina virtual que se ejecuta en ESXi o VMware Workstation, al igual que montaría un disco floppy virtual o un disco CD/DVD, actualmente esta opción no es posible.
Cómo Conectar un Dispositivo USB a una VM
Ahora que 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 unidad flash USB.
- Puede verificar si el dispositivo USB está conectado a ESXi después de eso en la interfaz de línea de comandos de ESXi:
lsusb - Como puede ver en la captura de pantalla a continuación, mi unidad flash está ahora conectada al servidor ESXi.
- El servicio de arbitraje USB debe estar en ejecución. Puede verificar el estado del servicio con el comando:
chkconfig usbarbitrator –list - Si el arbitraje USB está detenido, puede iniciarlo con el comando:
/etc/init.d/usbarbitrator startNota: Lea más sobre ESXiCLI en la publicación del blog.
La máquina virtual reside en el host ESXi que está gestionado 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 de navegación, seleccione una máquina virtual a la que desee conectar el dispositivo USB utilizando la función de paso. La máquina virtual debe estar apagada. Debería instalar VMware Tools en el sistema operativo invitado.
- Una vez seleccionada la VM, haz clic en Acciones > Editar configuración.
- En la ventana Editar configuración, verifica si hay un controlador USB presente en la configuración de la VM. Si falta el controlador USB, haz clic en Agregar nuevo dispositivo > Controlador USB y selecciona el tipo de controlador USB (USB 2.0 o USB 3.0).
- Si el controlador USB está presente, debe agregar el dispositivo USB que está conectado al servidor ESXi a su VM. Haga clic en Agregar nuevo dispositivo > Dispositivo USB de host.
- 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).
Si necesita habilitar el soporte de vMotion, expanda el dispositivo USB de host nuevo y seleccione la casilla de verificación “Soportar vMotion mientras el dispositivo está conectado”. Tenga en cuenta los requisitos y limitaciones de vMotion. Presione Aceptar para guardar la configuración y cerrar esta ventana.
- Inicie una máquina virtual. Una vez cargado el sistema operativo invitado, espere hasta que se inicialice e instale la memoria USB. Luego abra el Administrador de dispositivos de Windows. Haga clic derecho en Mi PC y, en el menú contextual, haga clic en Administrar. En la ventana de Administración de equipos, haga clic en Administrador de dispositivos y expanda la sección de Unidades de disco (al conectar una memoria USB, este dispositivo debería mostrarse en esta categoría de dispositivos). Podremos ver el dispositivo USB Verbatim, que es el nombre de mi memoria USB conectada a la VM con la función de passthrough USB de VMware.
- Abre Gestión de discos en la ventana de Administración de equipos y asegúrate de que se haya asignado una unidad de disco a la memoria USB. En mi caso, todo está correcto y ahora puedo copiar datos desde la memoria USB a la disco virtual de una máquina virtual en Windows invitado y viceversa.
Passthrough de PCI de VMware
Si el dispositivo USB que deseas conectar a una máquina virtual mediante la función de passthrough de USB de VMware no es compatible, puedes intentar usar la función de passthrough de PCI y conectar el controlador USB físico completo que tiene la interfaz PCI a una máquina virtual.
Si tu servidor ESXi tiene un controlador USB insertado en un slot PCI, puedes pasar este dispositivo PCI a una máquina virtual. El passthrough de PCI de VMware también se llama VMDirectPass. Este método es menos conveniente que usar el passthrough de USB pero puede ayudarte a completar la tarea.
Requisitos
Intel Directed I/O o AMD I/O Virtualization Technology (AMD IOMMU) debe ser compatible con el hardware del servidor y estar habilitado en UEFI/BIOS. Si solo tienes un controlador USB en tu servidor, deberías adjuntar un controlador USB adicional para evitar perder conexiones a dispositivos USB utilizados por tu servidor ESXi físico.
Restricciones y limitaciones:
- A VM cannot be suspended.
- A VM cannot be migrated to other ESXi hosts with vMotion.
- No se admiten instantáneas de máquinas virtuales.
Veamos el flujo de trabajo para conectar un dispositivo USB a una VM mediante el paso de PCI y conectando el controlador USB completo al que está conectado el 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) use este comando:
lsusb -v | grep -e Bus -e iSerial - Encuentre la cadena con el nombre de su dispositivo USB conectado al controlador USB e identifique el id del controlador (por ejemplo, bus002).
- Puede verificar el registro VMkernel al conectar un dispositivo USB a un servidor ESXi:
tail -f /var/log/vmkernel.log | grep -i USB - Abra el cliente VMware vSphere y vaya a Hosts and Clusters.
- Seleccione el host ESXi en el que reside su VM (a la que necesita conectar un dispositivo USB).
- Vaya a la pestaña Configure, luego seleccione PCI Devices en la sección Hardware.
- Encuentre 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 a Disponible.
- Pulse OK para guardar la configuración.
- Reinicie el host ESXi para que los cambios surtan efecto.
- Asegúrese de que su VM esté apagada. Vaya a la configuración de la VM, haga clic en Agregar Nuevo Dispositivo > Dispositivo PCI > Agregar. Seleccione su controlador USB en el menú desplegable utilizando el ID correcto.
- Encienda la VM. Verifique los dispositivos en el sistema operativo invitado. Si Windows está instalado en la VM, abra el Administrador de dispositivos y luego verifique los controladores y dispositivos de almacenamiento.
Conexión de tarjetas inteligentes USB
Algunos dispositivos USB que tienen la clase adecuada de CCID pueden no ser compatibles por defecto para la conexión a las VM. Se muestra el mensaje de error “No se puede conectar ‘path:0/1/6/1’ a esta máquina virtual. El dispositivo no fue encontrado”. En los registros, se puede ver el mensaje:
(vmx-vcpu-0) no reclamó la interfaz 0 antes de su uso
PCSCD es el demonio ESXi que controla los lectores de tarjetas inteligentes. El acceso a las tarjetas inteligentes USB está desactivado para las máquinas virtuales para evitar conflictos porque un servidor ESXi necesita una tarjeta inteligente. Como resultado, no puede usar el paso de USB con la configuración predeterminada para las tarjetas inteligentes USB. Necesita editar la configuración del host ESXi para habilitar el paso de USB para las tarjetas inteligentes USB.
- Detenga la máquina virtual. Abra la configuración de la máquina virtual, seleccione la pestaña Opciones de VM y haga clic en Editar configuración.
- En la ventana de Parámetros de configuración, haz clic en Agregar Parámetros de Configuración.
Como alternativa, puedes editar el archivo de configuración VMX de la máquina virtual en la interfaz de línea de comandos conectándote a la consola ESXi con un cliente SSH. - Edita o agrega esta línea a la configuración de la VM si el parámetro no está presente:
usb.generic.allowCCID = “TRUE” - Guarda la configuración de la VM.
- Detén el servicio PCSCD usando este comando en la línea de comandos de ESXi:
sudo /etc/init.d/pcscd stop - Asegúrate de que el servicio PCSCD no esté en ejecución:
ps | grep pcscd - Enciende la VM y verifica los dispositivos para confirmar que el lector de tarjetas inteligentes USB está ahora conectado a la VM.
Conclusión
Puedes conectar diversos dispositivos conectados a los puertos USB de servidores ESXi físicos a máquinas virtuales directamente y usarlos en sistemas operativos invitados de VMs tal como lo haces con estos dispositivos USB en computadoras físicas regulares. Incluso puedes migrar máquinas virtuales usando dispositivos USB externos conectados al host ESXi principal con vMotion a otro host. A pesar de algunas limitaciones, la función de paso de USB de VMware añade más capacidades y flexibilidad en diferentes situaciones.
La copia de seguridad de las máquinas virtuales de VMware es importante para aquellos que utilizan VMware vSphere. Descargue NAKIVO Backup & Replication y pruebe esta solución de protección de datos universal para proteger sus VMs de VMware vSphere y otros datos en su entorno.
Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/