Comment utiliser les périphériques USB avec une machine virtuelle VMware vSphere

La principale fonction d’un hyperviseur est d’émuler les périphériques utilisés par les machines virtuelles au niveau logiciel. Les périphériques sont créés dans une VM, que ce soient des contrôleurs virtuels, des disques, des DVD-ROM, des cartes vidéo, des cartes réseau, des périphériques d’entrée, etc. Mais que se passe-t-il si vous souhaitez connecter une imprimante, un scanner, une clé USB, un disque dur externe USB, un lecteur de carte à puce USB, des dongles de sécurité, des clés de licence USB, etc. ?

Pour les périphériques physiques externes avec une interface USB, vous pouvez les attacher à une VM exécutée sur VMware Workstation ou un serveur ESXi en utilisant la fonction de passthrough USB. Cet article de blog couvre l’utilisation de cette fonction dans VMware vSphere sur les hôtes ESXi, y compris les exigences et les étapes pour connecter des périphériques USB.

Qu’est-ce que le passthrough USB ?

Le passthrough de périphérique USB de VMware est une fonctionnalité qui vous permet de connecter un périphérique USB physique attaché à un port USB d’un serveur ESXi physique à une machine virtuelle comme si le périphérique USB était connecté directement à une machine virtuelle. Le passthrough de VMware est une fonctionnalité disponible à partir d’ESXi 4.1.

Les raisons varient pour utiliser le transfert de passthrough pour un périphérique USB du serveur ESXi vers un système d’exploitation (OS) invité d’une machine virtuelle. Par exemple, vous avez un vieux scanner ou une imprimante qui n’a pas de pilotes pour les dernières versions de Windows. Vous pouvez installer l’ancienne version de Windows prise en charge par le périphérique USB et connecter ce périphérique à une machine virtuelle. Un autre cas d’utilisation de cette fonctionnalité est lorsque vous avez besoin de copier des fichiers d’un disque dur USB vers une machine virtuelle ou vice versa directement et à haute vitesse. Il peut arriver que les utilisateurs aient besoin d’utiliser un logiciel protégé par des clés de licence USB matérielles sur des machines virtuelles.

Comment fonctionne le transfert de passthrough USB

Il existe trois composants principaux nécessaires au fonctionnement du transfert de passthrough USB : l’arbitre, le contrôleur USB et le périphérique USB physique.

L’arbitre est un service dédié sur un serveur ESXi. L’arbitre analyse les périphériques USB physiques attachés au serveur physique et est responsable du routage du trafic des périphériques USB entre un hôte physique et une machine virtuelle. Seule une machine virtuelle peut accéder au périphérique USB à la fois. L’accès au périphérique USB connecté à une machine virtuelle est bloqué pour les autres machines virtuelles. L’arbitre USB prend en charge jusqu’à 15 contrôleurs USB (vSphere 7.0). Le service Arbitre est activé sur ESXi par défaut.

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.

Les normes USB et les modes de contrôleur sont :

  • USB 2.0 et USB 1.1 (EHCI+UHCI)
  • USB 3.0 (xHCI) version du matériel VM 8 ou supérieure

Après avoir connecté un périphérique USB physique à une machine virtuelle en utilisant la fonctionnalité de transfert de passthrough USB de VMware, vous devrez peut-être installer des pilotes pour le périphérique USB connecté dans un système d’exploitation invité.

Exigences pour USB 3.0

L’USB 3.0 est disponible pour les serveurs ESXi à partir de VMware vSphere 5.5 patch 3. Le contrôleur USB xHCI est requis dans la configuration de la machine virtuelle à cette fin. Les exigences du système d’exploitation pour utiliser le transfert USB 3.0 sont les suivantes : Windows 8.1 ou supérieur, Windows Server 2012 R2 ou supérieur, ou Linux avec un noyau Linux 2.6.35 ou supérieur. Les périphériques USB 3.1 sont pris en charge à leur vitesse maximale depuis VMware vSphere 7.0

Limitations du transfert USB

Il y a certaines limitations que vous devez connaître avant de commencer à utiliser la fonctionnalité de transfert USB :

  • A USB drive cannot be used as a boot drive for a VM.
  • Si une clé USB est utilisée pour démarrer ESXi, cette clé USB ne peut pas être attachée à une machine virtuelle.
  • La version matérielle virtuelle 7 ou supérieure est requise pour une machine virtuelle.

Certains périphériques USB peuvent ne pas être pris en charge par VMware :

  • Les concentrateurs USB
  • Les périphériques audio et les caméras vidéo qui utilisent le transfert de données asynchrone
  • Certains claviers et souris USB (vous pouvez trouver des détails dans l’article VMware 1021345)
  • Certaines cartes à puce utilisant CCID peuvent nécessiter un réglage supplémentaire pour être connectées à une machine virtuelle

vMotion est possible pour les machines virtuelles avec des périphériques de transfert USB connectés. Après une configuration VM appropriée et l’activation de vMotion, les périphériques USB restent connectés à la machine virtuelle après la migration vers un autre hôte ESXi.

Il y a des limitations de vMotion pour les machines virtuelles qui utilisent des disques de transfert USB :

  • La gestion de l’alimentation distribuée (DPM) n’est pas prise en charge car un hôte ESXi ne peut pas être arrêté pour économiser de l’énergie sans débrancher un périphérique USB d’une machine virtuelle (un périphérique USB est déconnecté si l’hôte est éteint par DPM). DPM doit être désactivé sur cet hôte.
  • La tolérance aux pannes n’est pas prise en charge.
  • 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.
  • Les hôtes ESXi qui ont des machines virtuelles avec des périphériques de passage USB doivent être accessibles via l’interface noyau de la machine virtuelle vmk0 (pour le réseau de gestion) et le port TCP 902.

Débranchez les périphériques USB d’une machine virtuelle avant d’utiliser la fonctionnalité de connexion à chaud et d’ajouter des périphériques CPU, mémoire ou PCI. Sinon, les périphériques USB sont déconnectés automatiquement et, lorsque vous utilisez la fonction d’ajout à chaud, certaines données peuvent être perdues. Si vous suspendez une machine virtuelle, puis la reprenez, les périphériques USB sont déconnectés, puis reconnectés à la machine virtuelle.

Quant à la création d’un lecteur USB virtuel VMware ou d’un lecteur flash virtuel pour être attaché à une machine virtuelle fonctionnant sur ESXi ou VMware Workstation, tout comme vous monteriez une disquette virtuelle ou un disque CD/DVD virtuel, actuellement cette option n’est pas possible.

Comment connecter un périphérique USB à une machine virtuelle

Maintenant que nous nous sommes familiarisés avec la théorie, nous pouvons passer à la partie pratique et examiner la configuration dans VMware vSphere.

  1. Insérez un périphérique USB dans un port USB de votre serveur ESXi. Dans mon cas, je vais insérer une clé USB.
  2. Vous pouvez vérifier si le périphérique USB est connecté à ESXi après cela dans l’interface de ligne de commande ESXi :
    lsusb
  3. Comme vous pouvez le voir sur la capture d’écran ci-dessous, ma clé USB est maintenant connectée au serveur ESXi.
  4. Le service arbitre USB doit être en cours d’exécution. Vous pouvez vérifier l’état du service avec la commande :
    chkconfig usbarbitrator –list
  5. Si l’arbitre USB est arrêté, vous pouvez démarrer l’arbitre USB avec la commande :
    /etc/init.d/usbarbitrator start

    Note : En savoir plus sur ESXiCLI dans le billet de blog.

    La VM réside sur l’hôte ESXi qui est géré par le serveur vCenter dans mon exemple. Windows est installé en tant que système d’exploitation invité sur ma VM. Ouvrez le client VMware vSphere, accédez à Hôtes et grappes. Dans le volet de navigation, sélectionnez une machine virtuelle à laquelle vous souhaitez connecter le périphérique USB en utilisant la fonction de passage. La VM doit être éteinte. Vous devez installer les outils VMware dans le système d’exploitation invité.

  6. Une fois la machine virtuelle sélectionnée, cliquez sur Actions > Modifier les paramètres.
  7. Dans la fenêtre Modifier les paramètres, vérifiez si un contrôleur USB est présent dans la configuration de la machine virtuelle. Si le contrôleur USB est manquant, cliquez sur Ajouter un nouveau périphérique > Contrôleur USB, et sélectionnez le type de contrôleur USB (USB 2.0 ou USB 3.0).
  8. Si le contrôleur USB est présent, vous devez ajouter le périphérique USB qui est attaché au serveur ESXi à votre VM. Cliquez sur Ajouter un nouveau périphérique > Périphérique USB de l’hôte
  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).

    Si vous devez activer le support de vMotion, développez le nouveau périphérique USB de l’hôte et sélectionnez la case à cocher « Supporter vMotion lorsque le périphérique est connecté ». Gardez à l’esprit les exigences et limitations de vMotion. Cliquez sur OK pour enregistrer la configuration et fermer cette fenêtre.

  10. Démarrer une machine virtuelle. Une fois que le système d’exploitation invité est chargé, attendez que la clé USB soit initialisée et installée. Ensuite, ouvrez le Gestionnaire de périphériques Windows. Cliquez avec le bouton droit sur Poste de travail et, dans le menu contextuel, cliquez sur Gérer. Dans la fenêtre Gestion de l’ordinateur, cliquez sur Gestionnaire de périphériques et développez la section Disques (comme nous connectons une clé USB, ce périphérique devrait être affiché dans cette catégorie de périphériques). Nous pouvons voir le périphérique USB Verbatim, qui est le nom de ma clé USB connectée à la VM avec la fonctionnalité de transfert USB VMware.
  11. Ouvrez Gestion des disques dans la fenêtre Gestion de l’ordinateur, et assurez-vous qu’un lecteur de disque est attribué à la clé USB. Dans mon cas, tout est correct, et je peux maintenant copier des données de la clé USB vers le disque virtuel d’une VM dans Windows invité et vice versa.

Passerelle PCI VMware

Si le périphérique USB que vous souhaitez connecter à une VM en utilisant la fonction de transfert USB de VMware n’est pas pris en charge par VMware, vous pouvez essayer d’utiliser la fonction de transfert PCI et connecter le contrôleur USB physique entier qui possède l’interface PCI à une VM.

Si votre serveur ESXi dispose d’un contrôleur USB inséré dans un slot PCI, vous pouvez passer ce périphérique PCI à une machine virtuelle. Le transfert PCI VMware est également appelé VMDirectPass. Cette méthode est moins pratique que l’utilisation du transfert USB mais peut vous aider à accomplir la tâche.

Exigences

La technologie Intel Directed I/O ou la virtualisation I/O AMD (AMD IOMMU) doit être prise en charge par le matériel du serveur et activée dans l’UEFI/BIOS. Si vous n’avez qu’un seul contrôleur USB dans votre serveur, vous devez attacher un contrôleur USB supplémentaire pour éviter de perdre les connexions aux périphériques USB utilisés par votre serveur ESXi physique.

Restrictions et limites :

  • A VM cannot be suspended.
  • A VM cannot be migrated to other ESXi hosts with vMotion.
  • Les instantanés VM ne sont pas pris en charge.

Examinons le flux de travail de la connexion d’un périphérique USB à une VM en utilisant le transfert de PCI et en connectant le contrôleur USB entier auquel un périphérique USB est connecté à une VM.

  1. Pour identifier le périphérique USB et le contrôleur USB auquel votre périphérique USB est connecté (s’il y a plusieurs contrôleurs USB installés sur votre serveur), utilisez cette commande :
    lsusb -v | grep -e Bus -e iSerial
  2. Trouvez la chaîne avec le nom de votre périphérique USB connecté au contrôleur USB et identifiez l’ID du contrôleur (par exemple, bus002).
  3. Vous pouvez vérifier le journal VMkernel lors de la connexion d’un périphérique USB à un serveur ESXi :
    tail -f /var/log/vmkernel.log | grep -i USB
  4. Ouvrez le client VMware vSphere et accédez à Hôtes et clusters.
  5. Sélectionnez l’hôte ESXi sur lequel se trouve votre VM (à laquelle vous devez connecter un périphérique USB).
  6. Accédez à l’onglet Configurer, puis sélectionnez Appareils PCI dans la section Matériel.
  7. Recherchez et sélectionnez le contrôleur USB nécessaire dans la liste des périphériques PCI en utilisant l’ID que vous avez détecté précédemment.
  8. L’état du contrôleur sélectionné devrait maintenant passer à Disponible.
  9. Cliquez sur OK pour enregistrer les paramètres.
  10. Redémarrez l’hôte ESXi pour que les modifications prennent effet.
  11. Assurez-vous que votre VM est hors tension. Accédez aux paramètres de la VM, cliquez sur Ajouter un nouvel appareil > Appareil PCI > Ajouter. Sélectionnez votre contrôleur USB dans le menu déroulant en utilisant le bon ID.
  12. Allumez la VM. Vérifiez les périphériques dans l’OS invité. Si Windows est installé sur la VM, ouvrez le Gestionnaire de périphériques, puis vérifiez les contrôleurs et les périphériques de stockage.

Connexion de cartes USB intelligentes

Certains périphériques USB dotés de la classe appropriée de CCID peuvent ne pas être supportés par défaut pour la connexion à des VM. L’erreur suivante s’affiche : “Impossible de se connecter ‘path:0/1/6/1’ à cette machine virtuelle. L’appareil n’a pas été trouvé”. Dans les journaux, vous pouvez voir le message :

(vmx-vcpu-0) n’a pas revendiqué l’interface 0 avant l’utilisation

PCSCD est le démon ESXi qui contrôle les lecteurs de cartes intelligentes. La connexion aux cartes USB intelligentes est désactivée pour les machines virtuelles pour éviter les conflits car une carte intelligente est nécessaire pour un serveur ESXi. Par conséquent, vous ne pouvez pas utiliser le passage à travers USB pour les cartes USB intelligentes avec la configuration par défaut. Vous devez modifier la configuration de l’hôte ESXi pour activer le passage à travers USB pour les cartes USB intelligentes.

  1. Arrêtez la machine virtuelle. Ouvrez les paramètres de la machine virtuelle, sélectionnez l’onglet Options de VM, puis cliquez sur Modifier la configuration.
  2. Dans la fenêtre Paramètres de configuration, cliquez sur Ajouter des paramètres de configuration.
    En alternative, vous pouvez modifier le fichier de configuration VMX de la machine virtuelle dans l’interface de ligne de commande en vous connectant à la console ESXi avec un client SSH.
  3. Modifiez ou ajoutez cette ligne à la configuration VM si le paramètre n’est pas présent :

    usb.generic.allowCCID = « TRUE »
  4. Enregistrez la configuration de la VM.
  5. Arrêtez le service PCSCD en utilisant cette commande dans la ligne de commande ESXi :

    sudo /etc/init.d/pcscd stop
  6. Vérifiez que le service PCSCD n’est pas en cours d’exécution :

    ps | grep pcscd
  7. Allumez la VM et vérifiez les périphériques pour vérifier que le lecteur de carte à puce USB est maintenant connecté à la VM.

Conclusion

Vous pouvez connecter divers périphériques attachés aux ports USB des serveurs ESXi physiques aux machines virtuelles directement et les utiliser dans les systèmes d’exploitation invités des VM comme vous utilisez ces périphériques USB sur des ordinateurs physiques réguliers. Vous pouvez même migrer des machines virtuelles en utilisant des périphériques USB externes connectés à l’hôte ESXi parent avec vMotion vers un autre hôte. Malgré certaines limitations, la fonctionnalité de transfert USB VMware ajoute plus de capacités et de flexibilité dans différentes situations.

La sauvegarde des machines virtuelles VMware est importante pour ceux qui utilisent VMware vSphere. Téléchargez NAKIVO Backup & Replication et essayez cette solution de protection des données universelle pour protéger vos machines virtuelles VMware vSphere et d’autres données dans votre environnement.

Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/