De belangrijkste functie van een hypervisor is om apparaten die door VM’s worden gebruikt op softwareniveau te emuleren. Apparaten worden gemaakt in een VM, of het nu gaat om virtuele controllers, schijven, DVD-ROM’s, videokaarten, netwerkkaarten, invoerapparaten, enz. Maar wat als je een printer, scanner, USB-flashstation, USB-harde schijf, USB-smartcardlezer, beveiligingsdongles, USB-licentiesleutels, enz. wilt aansluiten?
Voor externe fysieke apparaten met een USB-interface kunt u ze aansluiten op een VM die wordt uitgevoerd op VMware Workstation of een ESXi-server door de USB-doorvoerfunctie te gebruiken. In deze blogpost wordt het gebruik van deze functie in VMware vSphere op ESXi-hosts behandeld, inclusief de vereisten en de stappen voor het aansluiten van USB-apparaten.
Wat is USB-doorvoer?
USB-apparaatdoorvoer van VMware is een functie waarmee u een fysiek USB-apparaat dat is aangesloten op een USB-poort van een fysieke ESXi-server kunt verbinden met een virtuele machine alsof het USB-apparaat rechtstreeks op de virtuele machine was aangesloten. VMware-doorvoer is beschikbaar vanaf ESXi 4.1.
Redenen variëren voor het gebruik van doorvoer voor een USB-apparaat van de ESXi-server naar een gastbesturingssysteem (OS) van een virtuele machine. Bijvoorbeeld, je hebt een oude scanner of printer die geen drivers heeft voor de nieuwste Windows OS-versies. Je kunt de oude Windows-versie installeren die wordt ondersteund door het USB-apparaat en dit apparaat verbinden met een virtuele machine. Een ander gebruik van deze functie is wanneer je bestanden moet kopiëren van/naar een USB-harde schijf naar/van een virtuele machine rechtstreeks met hoge snelheid. Het kan voorkomen dat gebruikers software moeten gebruiken die beschermd is door hardware USB-licentiesleutels op virtuele machines.
Hoe USB-doorvoer werkt
Er zijn drie hoofdcomponenten vereist voor het functioneren van USB-doorvoer: de arbiter, USB-controller en fysiek USB-apparaat.
De arbiter is een toegewijde service op een ESXi-server. De arbiter scant fysieke USB-apparaten die zijn aangesloten op de fysieke server en is verantwoordelijk voor het routeren van USB-apparaatverkeer tussen een fysieke host en een virtuele machine. Slechts één VM kan tegelijkertijd toegang krijgen tot het USB-apparaat. Toegang tot het USB-apparaat dat is aangesloten op één VM, is geblokkeerd voor andere VM’s. De USB-arbiter ondersteunt maximaal 15 USB-controllers (vSphere 7.0). De Arbiter-service is standaard ingeschakeld op ESXi.
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.
USB-standaarden en controllermodi zijn:
- USB 2.0 en USB 1.1 (EHCI+UHCI)
- USB 3.0 (xHCI) VM hardwareversie 8 of hoger
Na het verbinden van een fysiek USB-apparaat met een virtuele machine via de VMware USB-doorvoerfunctie, moet je mogelijk drivers installeren voor het verbonden USB-apparaat in een gastbesturingssysteem.
Vereisten voor USB 3.0
USB 3.0 is beschikbaar voor ESXi-servers vanaf VMware vSphere 5.5 patch 3. De xHCI USB-controller is vereist in de VM-configuratie voor dit doel. OS-vereisten om USB 3.0 doorvoer te gebruiken zijn: Windows 8.1 of hoger, Windows Server 2012 R2 of hoger, of Linux met Linux-kernel 2.6.35 of hoger. USB 3.1-apparaten worden ondersteund op hun maximale snelheid sinds VMware vSphere 7.0
Beperkingen voor USB-doorgifte
Er zijn enkele beperkingen die u moet kennen voordat u de USB-doorgiftefunctie gaat gebruiken:
- A USB drive cannot be used as a boot drive for a VM.
- Als een USB-drive wordt gebruikt om ESXi op te starten, kan deze USB-drive niet aan een VM worden gekoppeld.
- Er is een virtuele hardwareversie 7 of hoger vereist voor een VM.
Sommige USB-apparaten worden mogelijk niet ondersteund door VMware:
- USB-hubs
- Audioapparaten en videocamera’s die asynchrone gegevensoverdracht gebruiken
- Sommige USB-toetsenborden en muizen (u kunt details vinden in het VMware 1021345-artikel)
- Sommige smartcards die CCID gebruiken, hebben mogelijk extra afstemming nodig voor verbinding met een VM
vMotion is mogelijk voor VM’s met aangesloten USB-doorgifteapparaten. Na juiste VM-configuratie en het inschakelen van vMotion blijven USB-apparaten verbonden met de VM na migratie naar een andere ESXi-host.
Er zijn vMotion-beperkingen voor VM’s die USB-doorgifte-disks gebruiken:
- Distributed Power Management (DPM) wordt niet ondersteund omdat een ESXi-host niet kan worden uitgeschakeld voor energiebesparing zonder een USB-apparaat los te koppelen van een VM (een USB-apparaat wordt losgekoppeld als de host wordt uitgeschakeld door DPM). DPM moet worden uitgeschakeld op deze host.
- Fault Tolerance wordt niet ondersteund.
- 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.
- ESXi-hosts die VM’s hebben met USB-doorvoerapparaten moeten toegankelijk zijn via de VM-kernelinterface vmk0 (voor het beheernetwerk) en TCP-poort 902.
Koppel USB-apparaten los van een VM voordat u de hot-add-functie gebruikt en CPU, geheugen of PCI-apparaten toevoegt. Anders worden USB-apparaten automatisch losgekoppeld, en wanneer u de hot-add-functie gebruikt, kunnen sommige gegevens verloren gaan. Als u een VM opschort en vervolgens de VM hervat, worden USB-apparaten losgekoppeld en vervolgens opnieuw verbonden met de VM.
Wat betreft het maken van een VMware virtuele USB-drive of virtuele flashdrive om aan een virtuele machine te koppelen die wordt uitgevoerd op ESXi of VMware Workstation, net zoals u een virtuele floppydisk of CD / DVD-schijf zou monteren, is deze optie momenteel niet mogelijk.
Hoe een USB-apparaat aan een VM te koppelen
Nu we bekend zijn geworden met de theorie, kunnen we naar het praktische deel gaan en kijken naar de configuratie in VMware vSphere.
- Steek een USB-apparaat in een USB-poort van uw ESXi-server. In mijn geval ga ik een USB-flashdrive invoegen.
- U kunt vervolgens controleren of het USB-apparaat is aangesloten op ESXi in de ESXi-command-line-interface:
lsusb - Zoals u kunt zien op de onderstaande schermafbeelding, is mijn flashstation nu verbonden met de ESXi-server.
- De USB-arbitrator-service moet actief zijn. U kunt de servicestatus controleren met het commando:
chkconfig usbarbitrator –list - Als de USB-arbitrator is gestopt, kunt u de USB-arbitrator starten met het commando:
/etc/init.d/usbarbitrator startOpmerking: Lees meer over ESXiCLI in het blogbericht.
De VM bevindt zich op de ESXi-host die wordt beheerd door vCenter Server in mijn voorbeeld. Windows is geïnstalleerd als een gast-OS op mijn VM. Open VMware vSphere Client, ga naar Hosts en Clusters. Selecteer in het Navigator-paneel een virtuele machine waarmee u het USB-apparaat wilt verbinden met behulp van de doorvoerfunctie. De VM moet zijn uitgeschakeld. U moet VMware Tools installeren in het gast-OS.
- Zodra de VM is geselecteerd, klik op Acties > Instellingen bewerken.
- In het Bewerk instellingen-venster, controleer of er een USB-controller aanwezig is in de VM-configuratie. Als de USB-controller ontbreekt, klik op Nieuw apparaat toevoegen > USB-controller, en selecteer het type USB-controller (USB 2.0 of USB 3.0).
- Als de USB-controller aanwezig is, moet u het USB-apparaat dat is aangesloten op de ESXi-server toevoegen aan uw VM. Klik op Nieuw Apparaat Toevoegen > Host USB-apparaat.
- 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).
Als u vMotion-ondersteuning moet inschakelen, breidt u het Nieuwe Host USB-apparaat uit en selecteert u het selectievakje “vMotion ondersteunen terwijl het apparaat is aangesloten”. Houd rekening met vMotion-vereisten en beperkingen. Klik op OK om de configuratie op te slaan en dit venster te sluiten.
- Start een virtuele machine. Zodra het gast-OS is geladen, wacht tot de USB-flashdrive is geïnitialiseerd en geïnstalleerd. Open vervolgens Apparaatbeheer van Windows. Klik met de rechtermuisknop op Deze Computer en klik in het contextmenu op Beheren. In het venster Computerbeheer, klik op Apparaatbeheer en breid de sectie Harde schijven uit (aangezien we een USB-flashdrive aansluiten, moet dit apparaat in deze categorie van apparaten worden weergegeven). We kunnen de Verbatim USB-apparaat zien, dat de naam is van mijn USB-flashdrive die is aangesloten op de VM met de VMware USB-doorvoerfunctie.
- Open Schijfbeheer in het venster Computerbeheer, en zorg ervoor dat een schijfstation is toegewezen aan de USB-flashdrive. In mijn geval is alles correct, en nu kan ik gegevens kopiëren van de USB-flashdrive naar de virtuele schijf van een VM in het gast-Windows en vice versa.
VMware PCI Doorvoer
Als het USB-apparaat dat u wilt verbinden met een VM via de VMware USB-doorvoerfunctie niet wordt ondersteund door VMware, kunt u proberen de PCI-doorvoerfunctie te gebruiken en de volledige fysieke USB-controller met de PCI-interface aan een VM te koppelen.
Als uw ESXi-server een USB-controller heeft ingevoegd in een PCI-slot, kunt u dit PCI-apparaat doorgeven aan een virtuele machine. VMware PCI-doorvoer wordt ook wel VMDirectPass genoemd. Deze methode is minder handig dan het gebruik van USB-doorvoer, maar kan u helpen de taak te volbrengen.
Vereisten
Intel Directed I/O of AMD I/O Virtualization Technology (AMD IOMMU) moet worden ondersteund door de serverhardware en ingeschakeld zijn in UEFI/BIOS. Als u slechts één USB-controller in uw server heeft, moet u een extra USB-controller toevoegen om te voorkomen dat u verbindingen verliest met USB-apparaten die worden gebruikt door uw fysieke ESXi-server.
Beperkingen en beperkingen:
- A VM cannot be suspended.
- A VM cannot be migrated to other ESXi hosts with vMotion.
- VM-snapshots worden niet ondersteund.
Laten we eens kijken naar de workflow voor het aansluiten van een USB-apparaat op een VM door middel van PCI doorvoer en het verbinden van de hele USB-controller waaraan een USB-apparaat is verbonden met een VM.
- Om het USB-apparaat en de USB-controller waaraan uw USB-apparaat is verbonden te identificeren (als er meerdere USB-controllers zijn geïnstalleerd op uw server), gebruikt u deze opdracht:
lsusb -v | grep -e Bus -e iSerial - Vind de string met de naam van uw USB-apparaat dat is aangesloten op de USB-controller en identificeer de id van de controller (bijvoorbeeld, bus002).
- U kunt het VMkernel-logboek controleren wanneer u een USB-apparaat op een ESXi-server aansluit:
tail -f /var/log/vmkernel.log | grep -i USB - Open VMware vSphere Client en ga naar Hosts and Clusters.
- Selecteer de ESXi-host waarop uw VM (waaraan u een USB-apparaat moet verbinden) zich bevindt.
- Ga naar het Configuratie-tabblad, selecteer vervolgens PCI-apparaten in de Hardware-sectie.
- Zoek en selecteer de benodigde USB-controller in de lijst met PCI-apparaten door de ID te gebruiken die u eerder hebt gedetecteerd.
- De status van de geselecteerde controller zou nu moeten veranderen naar Beschikbaar.
- Klik op OK om de instellingen op te slaan.
- Start de ESXi-host opnieuw op zodat de wijzigingen van kracht worden.
- Zorg ervoor dat uw VM is uitgeschakeld. Ga naar VM-instellingen, klik op Nieuw Apparaat Toevoegen > PCI-apparaat > Toevoegen. Selecteer uw USB-controller in het vervolgkeuzemenu door de juiste ID te gebruiken.
- Zet de VM aan. Controleer apparaten in het gast-OS. Als Windows is geïnstalleerd op de VM, open Apparaatbeheer, controleer vervolgens controllers en opslagapparaten.
Verbinding maken met USB Smart Cards
Sommige USB-apparaten met de juiste klasse van CCID worden mogelijk niet standaard ondersteund voor verbinding met VM’s. De foutmelding “Kan ‘pad:0/1/6/1’ niet verbinden met deze virtuele machine. Het apparaat is niet gevonden” wordt weergegeven. In logs zie je de melding:
(vmx-vcpu-0) claimde interface 0 niet voor gebruik
PCSCD is de ESXi-daemon die smartcardlezers aanstuurt. Toegang tot USB smartcards is uitgeschakeld voor virtuele machines om conflicten te voorkomen omdat een smartcard nodig is door een ESXi-server. Als gevolg hiervan kunt u USB-doorvoer niet gebruiken met de standaardconfiguratie voor USB smartcards. U moet de configuratie van de ESXi-host bewerken om USB-doorvoer voor USB smartcards in te schakelen.
- Stop de virtuele machine. Open de instellingen van de virtuele machine, selecteer het tabblad VM-opties en klik op Configuratie bewerken.
- In het venster Configuratieparameters, klik op Configuratieparameters toevoegen.
Als alternatief kunt u de VMX-configuratiebestand van de virtuele machine bewerken in de opdrachtregelinterface door verbinding te maken met de ESXi-console met een SSH-client. - Bewerk of voeg deze regel toe aan de VM-configuratie als de parameter niet aanwezig is:
usb.generic.allowCCID = “TRUE” - Sla de VM-configuratie op.
- Stop de PCSCD-service door deze opdracht te gebruiken in de ESXi-opdrachtregel:
sudo /etc/init.d/pcscd stop - Zorg ervoor dat de PCSCD-service niet actief is:
ps | grep pcscd - Zet de VM aan en controleer apparaten om te verifiëren dat de USB-smartcardlezer nu is verbonden met de VM.
Conclusie
U kunt diverse apparaten die zijn aangesloten op USB-poorten van fysieke ESXi-servers rechtstreeks verbinden met virtuele machines en ze gebruiken in gastbesturingssystemen van VM’s, net zoals u deze USB-apparaten gebruikt op reguliere fysieke computers. U kunt zelfs virtuele machines migreren met behulp van externe USB-apparaten die zijn aangesloten op de ouder-ESXi-host met vMotion naar een andere host. Ondanks enkele beperkingen voegt de VMware USB-doorvoerfunctie meer mogelijkheden en flexibiliteit toe in verschillende situaties.
VMware VM-back-up is belangrijk voor degenen die VMware vSphere gebruiken. Download NAKIVO Backup & Replication en probeer deze universele gegevensbeschermingsoplossing om uw VMware vSphere VM’s en andere gegevens in uw omgeving te beschermen.
Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/