Die Hauptfunktion eines Hypervisors besteht darin, Geräte, die von virtuellen Maschinen verwendet werden, auf der Softwareebene zu emulieren. Geräte werden in einer virtuellen Maschine erstellt, sei es virtuelle Controller, Festplatten, DVD-ROMs, Grafikkarten, Netzwerkkarten, Eingabegeräte usw. Aber was ist, wenn Sie einen Drucker, Scanner, USB-Flashlaufwerk, USB-Festplatte, USB-Smartcard-Leser, Sicherheitsdongles, USB-Lizenzschlüssel usw. anschließen möchten?
Für externe physische Geräte mit einer USB-Schnittstelle können Sie sie an eine virtuelle Maschine anschließen, die auf VMware Workstation oder einem ESXi-Server läuft, indem Sie die USB-Durchleitungsfunktion verwenden. In diesem Blogbeitrag wird die Verwendung dieser Funktion in VMware vSphere auf ESXi-Hosts behandelt, einschließlich der Anforderungen und der Schritte zum Anschließen von USB-Geräten.
Was ist USB-Durchleitung?
Die VMware USB-Gerätedurchleitung ist eine Funktion, die es Ihnen ermöglicht, ein physisches USB-Gerät, das an einen USB-Anschluss eines physischen ESXi-Servers angeschlossen ist, mit einer virtuellen Maschine zu verbinden, als ob das USB-Gerät direkt mit einer virtuellen Maschine verbunden wäre. VMware-Durchleitung ist eine Funktion, die ab ESXi 4.1 verfügbar ist.
Gründe für die Verwendung von Passthrough für ein USB-Gerät vom ESXi-Server zu einem Gastbetriebssystem (OS) einer virtuellen Maschine können variieren. Zum Beispiel haben Sie einen alten Scanner oder Drucker, für den es keine Treiber für die neuesten Windows OS-Versionen gibt. Sie können die alte Windows-Version installieren, die vom USB-Gerät unterstützt wird, und dieses Gerät mit einer virtuellen Maschine verbinden. Ein weiteres Anwendungsszenario dieser Funktion ist, wenn Sie Dateien von/einem USB-Festplattenlaufwerk zu/von einer virtuellen Maschine direkt und mit hoher Geschwindigkeit kopieren müssen. Es kann vorkommen, dass Benutzer Software verwenden müssen, die durch Hardware-USB-Lizenzschlüssel auf virtuellen Maschinen geschützt ist.
Wie USB-Passthrough funktioniert
Es gibt drei Hauptkomponenten, die für die Funktion von USB-Passthrough erforderlich sind: den Schlichter, den USB-Controller und das physische USB-Gerät.
Der Schlichter ist ein dedizierter Dienst auf einem ESXi-Server. Der Schlichter scannt physische USB-Geräte, die an den physischen Server angeschlossen sind, und ist für die Routenführung des USB-Geräteverkehrs zwischen einem physischen Host und einer virtuellen Maschine verantwortlich. Nur eine VM kann gleichzeitig auf das USB-Gerät zugreifen. Der Zugriff auf das USB-Gerät, das mit einer VM verbunden ist, wird für andere VMs blockiert. Der USB-Schlichter unterstützt bis zu 15 USB-Controller (vSphere 7.0). Der Schlichterdienst ist auf ESXi standardmäßig aktiviert.
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-Standards und Controller-Modi sind:
- USB 2.0 und USB 1.1 (EHCI+UHCI)
- USB 3.0 (xHCI) VM-Hardwareversion 8 oder höher
Nachdem Sie ein physisches USB-Gerät mithilfe der VMware USB-Passthrough-Funktion mit einer virtuellen Maschine verbunden haben, müssen möglicherweise Treiber für das angeschlossene USB-Gerät in einem Gastbetriebssystem installiert werden.
Anforderungen für USB 3.0
USB 3.0 ist für ESXi-Server ab VMware vSphere 5.5 Patch 3 verfügbar. Der xHCI-USB-Controller ist für diese Zwecke in der VM-Konfiguration erforderlich. Die Betriebssystemanforderungen für die Verwendung von USB 3.0-Passthrough sind: Windows 8.1 oder höher, Windows Server 2012 R2 oder höher oder Linux mit Linux-Kernel 2.6.35 oder höher. USB-3.1-Geräte werden seit VMware vSphere 7.0 mit ihrer maximalen Geschwindigkeit unterstützt.
Einschränkungen für USB-Passthrough
Es gibt einige Einschränkungen, die Sie kennen sollten, bevor Sie die USB-Passthrough-Funktion verwenden:
- A USB drive cannot be used as a boot drive for a VM.
- Wenn ein USB-Laufwerk zum Starten von ESXi verwendet wird, kann dieses USB-Laufwerk nicht an eine VM angeschlossen werden.
- Mindestens Virtual Hardware-Version 7 ist für eine VM erforderlich.
Einige USB-Geräte werden möglicherweise nicht von VMware unterstützt:
- USB-Hubs
- Audio-Geräte und Videokameras, die asynchrone Datenübertragung verwenden
- Einige USB-Tastaturen und Mäuse (Details finden Sie im VMware-Artikel 1021345)
- Einige Smartcards, die CCID verwenden, benötigen möglicherweise zusätzliche Anpassungen für die Verbindung mit einer VM
vMotion ist für VMs mit angeschlossenen USB-Passthrough-Geräten möglich. Nach ordnungsgemäßer VM-Konfiguration und Aktivierung von vMotion bleiben USB-Geräte nach der Migration zu einem anderen ESXi-Host mit der VM verbunden.
Es gibt vMotion-Einschränkungen für VMs, die USB-Passthrough-Festplatten verwenden:
- Distributed Power Management (DPM) wird nicht unterstützt, da ein ESXi-Host nicht heruntergefahren werden kann, um Energie zu sparen, ohne ein USB-Gerät von einer VM zu trennen (ein USB-Gerät wird getrennt, wenn der Host durch DPM heruntergefahren wird). DPM sollte auf diesem Host deaktiviert sein.
- Fehlerbehebung wird nicht unterstützt.
- 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 VMs mit USB-Passthrough-Geräten haben, müssen über die VM-Kernel-Schnittstelle vmk0 (für das Verwaltungsnetzwerk) und TCP-Port 902 erreichbar sein.
Trennen Sie USB-Geräte von einer VM, bevor Sie die Hot-Add-Funktion verwenden und CPU-, Speicher- oder PCI-Geräte hinzufügen. Andernfalls werden USB-Geräte automatisch getrennt, und wenn Sie die Hot-Add-Funktion verwenden, können Daten verloren gehen. Wenn Sie eine VM anhalten und dann die VM fortsetzen, werden USB-Geräte getrennt und dann erneut mit der VM verbunden.
Was das Erstellen eines virtuellen VMware-USB-Laufwerks oder virtuellen Flash-Laufwerks betrifft, das an eine virtuelle Maschine auf ESXi oder VMware Workstation angehängt werden soll, genauso wie Sie ein virtuelles Floppy-Laufwerk oder eine CD/DVD-Diskette einbinden würden, ist diese Option derzeit nicht möglich.
So verbinden Sie ein USB-Gerät mit einer VM
Nachdem wir uns mit der Theorie vertraut gemacht haben, können wir zum praktischen Teil übergehen und uns die Konfiguration in VMware vSphere ansehen.
- Stecken Sie ein USB-Gerät in einen USB-Anschluss Ihres ESXi-Servers. In meinem Fall werde ich einen USB-Flash-Laufwerk einstecken.
- Sie können dann überprüfen, ob das USB-Gerät mit ESXi verbunden ist, indem Sie in die ESXi-Befehlszeilenschnittstelle eingeben:
lsusb - Wie Sie auf dem untenstehenden Screenshot sehen können, ist mein USB-Stick jetzt mit dem ESXi-Server verbunden.
- Der USB-Arbitrator-Dienst muss ausgeführt werden. Sie können den Dienststatus mit dem Befehl überprüfen:
chkconfig usbarbitrator –list - Wenn der USB-Arbitrator gestoppt ist, können Sie ihn mit dem Befehl starten:
/etc/init.d/usbarbitrator startHinweis: Lesen Sie mehr über ESXiCLI im Blog-Beitrag.
Die VM befindet sich auf dem von vCenter Server verwalteten ESXi-Host in meinem Beispiel. Windows ist als Gastbetriebssystem in meiner VM installiert. Öffnen Sie den VMware vSphere Client und gehen Sie zu Hosts and Clusters. Wählen Sie im Navigationsbereich eine virtuelle Maschine aus, mit der Sie das USB-Gerät mithilfe der Durchreichefunktion verbinden möchten. Die VM sollte sich im ausgeschalteten Zustand befinden. Sie sollten VMware Tools installieren im Gastbetriebssystem.
- Wenn die VM ausgewählt ist, klicken Sie auf Aktionen > Einstellungen bearbeiten.
- In dem Einstellungen bearbeiten Fenster überprüfen Sie, ob ein USB-Controller in der VM-Konfiguration vorhanden ist. Wenn der USB-Controller fehlt, klicken Sie auf Neues Gerät hinzufügen > USB-Controller und wählen Sie den USB-Controller-Typ (USB 2.0 oder USB 3.0).
- Wenn der USB-Controller vorhanden ist, sollten Sie das USB-Gerät, das an den ESXi-Server angeschlossen ist, zu Ihrer VM hinzufügen. Klicken Sie auf Neues Gerät hinzufügen > Host-USB-Gerät.
- 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).
Wenn Sie die vMotion-Unterstützung aktivieren müssen, erweitern Sie das Neues Host-USB-Gerät und wählen Sie das Kontrollkästchen „vMotion unterstützen, während das Gerät verbunden ist“ aus. Beachten Sie die vMotion-Anforderungen und -Einschränkungen. Klicken Sie auf OK, um die Konfiguration zu speichern und dieses Fenster zu schließen.
- Starten Sie eine virtuelle Maschine. Sobald das Gastbetriebssystem geladen ist, warten Sie, bis der USB-Flash-Laufwerk initialisiert und installiert ist. Öffnen Sie dann den Geräte-Manager von Windows. Klicken Sie mit der rechten Maustaste auf Mein Computer und wählen Sie im Kontextmenü Verwalten aus. In dem Computer-Verwaltung-Fenster klicken Sie auf Geräte-Manager und erweitern Sie den Abschnitt Laufwerke (da wir ein USB-Flash-Laufwerk anschließen, sollte dieses Gerät in dieser Kategorie von Geräten angezeigt werden). Wir sehen das Verbatim USB-Gerät, das der Name meines USB-Flash-Laufwerks ist, das mit der VMware USB-Passthrough-Funktion an die VM angeschlossen ist.
- Öffnen Sie die Datenträgerverwaltung im Fenster Computerverwaltung und stellen Sie sicher, dass einem USB-Flash-Laufwerk ein Laufwerksbuchstabe zugewiesen ist. In meinem Fall ist alles korrekt, und ich kann nun Daten vom USB-Flash-Laufwerk auf die virtuelle Festplatte einer VM in einem Gast-Windows kopieren und umgekehrt.
VMware PCI-Passthrough
Wenn das USB-Gerät, das Sie mithilfe der VMware-USB-Weiterleitungsfunktion mit einer VM verbinden möchten, von VMware nicht unterstützt wird, können Sie versuchen, die PCI-Weiterleitungsfunktion zu verwenden und den gesamten physischen USB-Controller mit PCI-Schnittstelle mit einer VM zu verbinden.
Wenn Ihr ESXi-Server einen USB-Controller in einem PCI-Slot eingesteckt hat, können Sie dieses PCI-Gerät an eine virtuelle Maschine durchreichen. VMware PCI-Passthrough wird auch als VMDirectPass bezeichnet. Diese Methode ist weniger bequem als die Verwendung von USB-Weiterleitung, kann Ihnen jedoch bei der Erledigung der Aufgabe helfen.
Anforderungen
Intel Directed I/O oder AMD I/O Virtualization Technology (AMD IOMMU) muss von der Serverhardware unterstützt und im UEFI/BIOS aktiviert sein. Wenn Sie nur einen USB-Controller in Ihrem Server haben, sollten Sie einen zusätzlichen USB-Controller anschließen, um den Verlust von Verbindungen zu USB-Geräten zu vermeiden, die von Ihrem physischen ESXi-Server verwendet werden.
Einschränkungen und Begrenzungen:
- A VM cannot be suspended.
- A VM cannot be migrated to other ESXi hosts with vMotion.
- VM-Snapshots werden nicht unterstützt.
Schauen wir uns den Arbeitsablauf zum Anschließen eines USB-Geräts an eine VM mittels PCI-Passthrough und zum Anschließen des gesamten USB-Controllers, an den ein USB-Gerät angeschlossen ist, an eine VM an.
- Um das USB-Gerät und den USB-Controller zu identifizieren, an den Ihr USB-Gerät angeschlossen ist (falls mehrere USB-Controller auf Ihrem Server installiert sind), verwenden Sie diesen Befehl:
lsusb -v | grep -e Bus -e iSerial - Finden Sie den String mit dem Namen Ihres USB-Geräts, das mit dem USB-Controller verbunden ist, und identifizieren Sie die ID des Controllers (zum Beispiel bus002).
- Sie können das VMkernel-Protokoll überprüfen, wenn Sie ein USB-Gerät an einen ESXi-Server anschließen:
tail -f /var/log/vmkernel.log | grep -i USB - Öffnen Sie den VMware vSphere Client und gehen Sie zu Hosts und Clustern.
- Wählen Sie den ESXi-Host aus, auf dem sich Ihre VM (an die Sie ein USB-Gerät anschließen müssen) befindet.
- Gehen Sie zum Tab Konfigurieren und wählen Sie dann PCI-Geräte im Abschnitt Hardware aus.
- Finden und wählen Sie den benötigten USB-Controller in der Liste der PCI-Geräte unter Verwendung der zuvor erkannten ID aus.
- Der Status des ausgewählten Controllers sollte sich nun auf Verfügbar ändern.
- Klicken Sie auf OK, um die Einstellungen zu speichern.
- Starten Sie den ESXi-Host neu, damit die Änderungen wirksam werden.
- Stellen Sie sicher, dass Ihre VM ausgeschaltet ist. Gehen Sie zu den VM-Einstellungen, klicken Sie auf Neues Gerät hinzufügen > PCI-Gerät hinzufügen. Wählen Sie Ihren USB-Controller im Dropdown-Menü anhand der korrekten ID aus.
- Schalten Sie die virtuelle Maschine ein. Überprüfen Sie die Geräte im Gastbetriebssystem. Wenn Windows auf der virtuellen Maschine installiert ist, öffnen Sie den Geräte-Manager und überprüfen Sie dann Controller und Speichergeräte.
USB-Smartcards verbinden
Einige USB-Geräte, die die entsprechende CCID-Klasse haben, werden möglicherweise standardmäßig nicht unterstützt, um mit virtuellen Maschinen verbunden zu werden. Die Fehlermeldung „Kann ‚Pfad: 0/1/6/1‘ nicht mit dieser virtuellen Maschine verbinden. Das Gerät wurde nicht gefunden“ wird angezeigt. In den Protokollen können Sie die Meldung sehen:
(vmx-vcpu-0) hat die Schnittstelle 0 nicht vor der Verwendung beansprucht
PCSCD ist der ESXi-Dämon, der Smartcard-Lesegeräte steuert. Der Zugriff auf USB-Smartcards ist für virtuelle Maschinen deaktiviert, um Konflikte zu vermeiden, da ein Smartcard von einem ESXi-Server benötigt wird. Daher können Sie den USB-Durchgang mit der Standardkonfiguration für USB-Smartcards nicht verwenden. Sie müssen die Konfiguration des ESXi-Hosts bearbeiten, um den USB-Durchgang für USB-Smartcards zu aktivieren.
- Stoppen Sie die virtuelle Maschine. Öffnen Sie die Einstellungen der virtuellen Maschine, wählen Sie den VM-Optionen-Tab aus und klicken Sie auf Konfiguration bearbeiten.
- Im Konfigurationsparameter Fenster, klicken Sie auf Konfigurationsparameter hinzufügen .
Als Alternative können Sie die VMX-Konfigurationsdatei der virtuellen Maschine in der Befehlszeilenschnittstelle bearbeiten, indem Sie eine Verbindung zur ESXi-Konsole mit einem SSH-Client herstellen. - Bearbeiten oder fügen Sie diese Zeile zur VM-Konfiguration hinzu, wenn der Parameter nicht vorhanden ist:
usb.generic.allowCCID = „TRUE“ - Speichern Sie die VM-Konfiguration.
- Stoppen Sie den PCSCD-Dienst mit diesem Befehl in der ESXi-Befehlszeile:
sudo /etc/init.d/pcscd stop - Stellen Sie sicher, dass der PCSCD-Dienst nicht läuft:
ps | grep pcscd - Schalten Sie die VM ein und überprüfen Sie die Geräte, um sicherzustellen, dass der USB-Smartcardleser jetzt mit der VM verbunden ist.
Fazit
Sie können verschiedene Geräte, die an USB-Anschlüssen physischer ESXi-Server angeschlossen sind, direkt an virtuelle Maschinen anschließen und sie in den Gastbetriebssystemen von VMs verwenden, genauso wie Sie diese USB-Geräte auf regulären physischen Computern verwenden. Sie können sogar virtuelle Maschinen mithilfe externer USB-Geräte, die mit dem übergeordneten ESXi-Host über vMotion verbunden sind, auf einen anderen Host migrieren. Trotz einiger Einschränkungen bietet das VMware USB-Passthrough-Feature mehr Möglichkeiten und Flexibilität in verschiedenen Situationen.
VMware-VM-Backup ist wichtig für diejenigen, die VMware vSphere verwenden. Laden Sie NAKIVO Backup & Replication herunter und probieren Sie diese universelle Datensicherungslösung aus, um Ihre VMware-vSphere-VMs und andere Daten in Ihrer Umgebung zu schützen.
Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/