Verwendung von USB-Geräten mit einer virtuellen Maschine von VMware vSphere
>>>><>><> Die Hauptfunktion eines Hypervisors besteht darin, die von Virtuellen Maschinen verwendeten Geräte auf Softwareebene zu emulieren. Geräte wie virtuelle Controller, Festplatten, DVD-ROMs, Grafikkarten, Netzwerkkarten, Eingabegeräte usw. werden in einer Virtuellen Maschine erstellt. Was aber, wenn Sie einen Drucker, Scanner, USB-Stick, USB-Festplatte, USB-Smartcard-Lesegerät, Sicherheitsdongles, USB-Lizenzschlüssel usw. verbinden möchten?
Externe physische Geräte mit einer USB-Schnittstelle können Sie über die USB-Passthrough-Funktion mit einer virtuellen Maschine verbinden, die auf VMware Workstation oder einem VMware ESXi-Host verbunden wird. Dieser Blogbeitrag behandelt die Verwendung dieser Funktion in VMware vSphere auf VMware ESXi-Hosts, einschließlich der Anforderungen und Schritte zum Verbinden von USB-Geräten.
Was ist USB-Passthrough?
VMware USB Device Passthrough ist eine Funktion, mit der Sie ein physisches USB-Gerät, das an einen USB-Port eines physischen VMware ESXi-Hosts angeschlossen ist, an eine virtuelle Maschine verbinden können, als wäre das USB-Gerät direkt an die virtuelle Maschine angeschlossen. VMware Passthrough ist eine Funktion, die ab ESXi 4.1 verfügbar ist.
Die Gründe für die Verwendung von Passthrough für ein USB-Gerät vom VMware ESXi-Host zum Gastbetriebssystem (OS) einer Virtuellen Maschine sind vielfältig. Beispielsweise wenn Sie einen älteren Scanner oder Drucker haben, für den es keine Treiber für die neuesten Versionen des Windows-Betriebssystems gibt. Sie können die ältere Version von Windows installieren, die das USB-Gerät unterstützt, und dieses Gerät an eine Virtuelle Maschine verbinden. Eine weitere praktische Anwendung dieser Funktion ist, wenn Sie Dateien von/auf eine USB-Festplatte direkt mit hoher Geschwindigkeit auf eine Virtuelle Maschine kopieren müssen. Es kann vorkommen, dass Benutzer Software verwenden müssen, die durch Hardware-USB-Lizenzschlüssel in virtuellen Maschinen geschützt ist.
So funktioniert USB-Passthrough
Für die Funktion von USB-Passthrough sind drei Hauptkomponenten erforderlich: der Arbitrator, der USB-Controller und das physische USB-Gerät.
Der Arbitrator ist ein dedizierter Dienst auf einem ESXi-Server. Der Arbitrator scannt physische USB-Geräte, die an den physischen Server angeschlossen sind, und ist für die Weiterleitung des USB-Geräteverkehrs zwischen einem physischen Host und einer virtuellen Maschine verantwortlich. Es kann jeweils nur eine virtuelle Maschine auf das USB-Gerät zugreifen. Der Zugriff auf das an eine virtuelle Maschine angeschlossene USB-Gerät wird für andere virtuelle Maschinen blockiert. Der USB-Arbitrator unterstützt bis zu 15 USB-Controller (vSphere 7.0). Der Arbitrator-Dienst ist in ESXi standardmäßig aktiviert.
Ein USB-Controller , der auf einem physischen ESXi-Server verwendet wird, ist der Controller, an den die physischen USB-Ports verbunden sind. Der physische USB-Controller arbeitet mit physischen USB-Geräten, die in die physischen USB-Ports des Servers eingesteckt sind. USB-Controller können onboard (auch als integriert und in einen Chip auf einer Hauptplatine eingebaut bezeichnet) oder extern (als PCI- oder PCIe-Karten, die in die entsprechenden Steckplätze auf einem Server-Motherboard gesteckt werden). Der integrierte USB-Controller fungiert als Brücke zwischen einem USB-Bus und einem PCIe- (oder PCI-)Bus. Der integrierte USB-Controller ist physisch über die entsprechende Anzahl von PCIe-Lanes mit einem Motherboard-Chipsatz verbunden.
Ein virtueller USB-Controller ist ein emuliertes Gerät, das speziell für eine auf einem Hypervisor ausgeführte Virtuelle Maschine erstellt wurde. Ein virtueller USB-Controller interagiert mit einem physischen USB-Controller, wenn ein physisches USB-Gerät von einem physischen ESXi-Host an ein Gastbetriebssystem in der Virtuellen Maschine weitergeleitet wird. Die VM-Konfiguration muss einen virtuellen USB-Controller enthalten, damit die USB-Passthrough-Funktion in der VM verwendet werden kann. Maximal acht virtuelle USB-Controller können mit einer virtuellen Maschine auf einem ESXi-Host verbunden werden. Wenn Sie einen virtuellen USB-Controller aus einer VM-Konfiguration entfernen müssen, müssen Sie zunächst alle mit diesem Controller verbundenen USB-Geräte entfernen. Der VMware-USB-Treiber wird auf einem Gastbetriebssystem installiert, nach dem ein virtueller USB-Controller zur Konfiguration der virtuellen Maschine hinzugefügt wurde.
Ein physisches USB-Gerät ist jedes USB-Gerät, das über eine USB-Schnittstelle und einen USB-Port für das Verbinden mit einem Computer verfügt. An eine einzelne Virtuelle Maschine oder einen ESXi-Host können maximal 20 USB-Geräte verbunden werden.
Die 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
Nach dem Verbinden eines physischen USB-Geräts über die VMware USB-Passthrough-Funktion mit einer virtuellen Maschine müssen Sie möglicherweise Treiber für das angeschlossene USB-Gerät in einem Gastbetriebssystem installieren.
Anforderungen für USB 3.0
USB 3.0 ist für ESXi-Server ab VMware vSphere 5.5 Patch 3 verfügbar. Dazu ist der USB-xHCI-Treiber 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 ab VMware vSphere 7.0 mit voller Geschwindigkeit unterstützt.
Einschränkungen für USB-Passthrough
Bevor Sie die USB-Passthrough-Funktion verwenden, sollten Sie einige Einschränkungen beachten:
- Ein USB-Laufwerk kann nicht als Startlaufwerk für eine Virtuelle Maschine verwendet werden.
- Wenn ein USB-Laufwerk zum Booten von ESXiverwendet wird, kann dieses USB-Laufwerk nicht an eine Virtuelle Maschine verbunden werden.
- Für eine Virtuelle Maschine ist die virtuelle Hardwareversion 7 oder höher erforderlich.
Einige USB-Geräte werden von VMware möglicherweise nicht unterstützt:
- USB-Hubs
- Audiogeräte und Videokameras, die asynchrone Datenübertragung verwenden
- Einige USB-Tastaturen und -Mäuse (weitere Details finden Sie im VMware-Artikel 1021345)
- Einige Smartcards, die CCID verwenden, erfordern möglicherweise zusätzliche Konfigurationen, um eine Verbindung zu einer Virtuellen Maschine herzustellen.
vMotion ist für VMs mit angeschlossenen USB-Passthrough-Geräten möglich. Nach der Konfiguration der VM und der Aktivierung von vMotion bleiben USB-Geräte auch nach der Migration auf einen anderen ESXi-Host mit der VM verbunden.
Für virtuelle Maschinen, die USB-Passthrough-Festplatten verwenden, gelten Einschränkungen für vMotion:
- Distributed Power Management (DPM) wird nicht unterstützt, da ein ESXi-Host nicht ausgeschaltet werden kann, um Strom zu sparen, ohne ein USB-Gerät von einer Virtuellen Maschine zu trennen (ein USB-Gerät wird getrennt, wenn der Host mit DPM ausgeschaltet wird). DPM sollte auf diesem Host deaktiviert werden.
- Fehlertoleranz wird nicht unterstützt.
- Eine VM kann nicht angehalten oder ausgeschaltet werden (andernfalls werden USB-Geräte von einer VM getrennt und können erst nach der Migration der VM auf den ursprünglichen ESXi-Host, an den die USB-Geräte physisch angeschlossen sind, wieder verbunden werden). Die VM muss manuell auf den ESXi-Host mit dem angeschlossenen USB-Gerät migriert werden, wenn Sie diese VM einschalten möchten. Linux-Gäste, die wieder aufgenommen wurden, können USB-Geräte nach der erneuten Verbindung an verschiedenen Mount-Punkten mounten.
- ESXi-Hosts mit virtuellen Maschinen mit USB-Passthrough-Geräten müssen über die vmk0-Kernelschnittstelle der virtuellen Maschine (für Netzwerke zum Verwalten) und den TCP-Port 902 zugänglich sein.
Trennen Sie USB-Geräte von einer virtuellen Maschine, bevor Sie die Hot-Add-Funktion verwenden und CPU-, Speicher- oder PCI-Geräte hinzufügen. Andernfalls werden USB-Geräte automatisch getrennt und es können Daten verloren gehen, wenn Sie die Hot-Add-Funktion verwenden. Wenn Sie eine Virtuelle Maschine anhalten und dann fortsetzen, werden USB-Geräte getrennt und anschließend wieder mit der Virtuellen Maschine verbunden.
Das Erstellen eines virtuellen USB-Laufwerks oder eines virtuellen Flash-Laufwerks von VMware zum Anschließen an eine Virtuelle Maschine, auf der ESXi oder VMware Workstation ausgeführt wird, ist derzeit nicht unterstützt, ebenso wie das Mounten einer virtuellen Diskette oder CD/DVD.
So verbinden Sie ein USB-Gerät mit einer Virtuellen Maschine
Nachdem wir uns nun 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-Port Ihres ESXi-Servers. In meinem Fall werde ich einen USB-Stick anschließen.
- Anschließend können Sie in der ESXi-Befehlszeilenschnittstelle überprüfen, ob das USB-Gerät mit ESXi verbunden ist:
lsusb - Wie Sie im folgenden Screenshot sehen können, ist mein Flash-Laufwerk nun mit dem ESXi-Server verbunden.
- Der USB-Arbiter-Dienst muss ausgeführt werden. Sie können den Status des Dienstes mit dem folgenden Befehl überprüfen:
chkconfig usbarbitrator --list - Wenn der USB-Arbiter angehalten wurde, können Sie ihn mit dem folgenden Befehl starten:
/etc/init.d/usbarbitrator startHinweis: Weitere Informationen zu ESXiCLI finden Sie im Blogbeitrag.
Die VM befindet sich auf dem ESXi-Host, der in meinem Beispiel von vCenter Server verwaltert wird. Windows ist als Gastbetriebssystem auf meiner virtuellen Maschine installiert. Öffnen Sie VMware vSphere Client, gehen Sie zu Hosts und Cluster. Wählen Sie im Navigationsbereich eine Virtuelle Maschine aus, mit der Sie das USB-Gerät über die Passthrough-Funktion verbinden möchten. Die virtuelle Maschine muss ausgeschaltet sein. Sie müssen VMware Tools auf dem Gastbetriebssystem installieren.
- Nachdem Sie die virtuelle Maschine ausgewählt haben, klicken Sie auf Aktionen > Einstellungen bearbeiten.
- Überprüfen Sie im Fenster „ <“ (Einstellungen bearbeiten) >„Edit Settings“ (Einstellungen bearbeiten) , ob in den Einstellungen der Virtuellen Maschine ein USB-Controller vorhanden ist. Wenn der USB-Controller fehlt, klicken Sie auf „ <“ „>“ „Add New Device“ > „USB Controller“< „>“ und wählen Sie den USB-Controllertyp (USB 2.0 oder USB 3.0) aus. „<“ „>
<“ „>“ Wenn der USB-Controller vorhanden ist, müssen Sie das an den ESXi-Host angeschlossene USB-Gerät zu Ihrer VM hinzufügen. Klicken Sie auf „<“ (Neues Gerät hinzufügen) > Host USB Device (Host-USB-Gerät)<. <>Der Konfiguration der virtuellen Maschine wird eine neue Zeichenfolge hinzugefügt. Wählen Sie in der Zeichenfolge „ <“ ( ) „>“ (Neuer USB-Host<) „> “ (Neues USB-Host ) ein USB-Gerät aus, das Sie mit der VM verbinden möchten. Ich habe jetzt zwei USB-Flash-Laufwerke an meinen physischen ESXi-Server angeschlossen und verbinde das Verbatim-Flash-Laufwerk mit meiner VM (Verbatim-Produkt 0x0302). Wenn Sie die vMotion-Unterstützung aktivieren müssen, erweitern Sie Neues USB-Host-<-Gerät > und aktivieren Sie das Kontrollkästchen „vMotion unterstützen, während das Gerät verbunden ist“ . Beachten Sie die vMotion-Anforderungen und -Einschränkungen. Klicken Sie auf „ <“ (OK) , um die Einstellungen zu speichern und dieses Fenster zu schließen.
- Starten Sie eine Virtuelle Maschine. Sobald das Gastbetriebssystem geladen ist, warten Sie, bis es initialisiert ist, und installieren Sie den USB-Stick. Weiter öffneten Sie den Windows-Geräte-Manager. Klicken Sie mit der rechten Maustaste auf Arbeitsplatz und klicken Sie im Kontextmenü auf Verwalten. Klicken Sie im Fenster „ <“ ( ) auf „Computer Management“ (Computerverwaltung) und erweitern Sie den Abschnitt „ <“ ( ). Wir sehen das Verbatim-USB-Gerät, das ist der Name meines USB-Sticks, der über die VMware-USB-Passthrough-Funktion mit der VM verbunden ist.
- Öffnen Sie Festplattenverwaltung im Fenster Computerverwaltung und stellen Sie sicher, dass dem USB-Stick eine Festplatte zugewiesen ist. In meinem Fall ist alles korrekt, und ich kann nun Daten von einem USB-Stick auf die virtuelle Festplatte einer VM im Windows-Gast kopieren und umgekehrt.

VMware PCI Passthrough
Wenn das USB-Gerät, das Sie über die VMware USB-Passthrough-Funktion mit einer VM verbinden möchten, von VMware nicht unterstützt wird, können Sie die PCI-Passthrough-Funktion verwenden und den gesamten physischen USB-Controller mit PCI-Schnittstelle mit einer VM verbinden.
Wenn Ihr ESXi-Server über einen USB-Controller verfügt, der in einen PCI-Steckplatz eingesetzt ist, können Sie dieses PCI-Gerät an eine Virtuelle Maschine weitergeben. VMware PCI-Passthrough wird auch als VMDirectPass bezeichnet. Diese Methode ist weniger komfortabel als die Verwendung von USB-Passthrough, kann Ihnen jedoch Hilfe bei der Erledigung der Aufgabe bieten.
Anforderungen
Intel Directed I/O oder AMD I/O Virtualization Technology (AMD IOMMU) müssen von der Serverhardware unterstützt und in UEFI/BIOS aktiviert sein. Wenn Sie nur einen USB-Controller auf Ihrem Server haben, sollten Sie einen zusätzlichen USB-Controller verbinden, um Verbindungsabbrüche zu USB-Geräten zu vermeiden, die von Ihrem physischen ESXi-Host verwendet werden.
Einschränkungen und Beschränkungen:
- Sie können eine Virtuelle Maschine nicht anhalten.
- Eine VM kann nicht mit vMotion auf andere ESXi-Hosts migriert werden.
- Schnappschüsse von Virtuellen Maschinen werden nicht unterstützt.
Sehen wir uns den Workflow an, bei dem ein USB-Gerät über PCI-Passthrough mit einer VM verbunden wird und der gesamte USB-Controller, an den ein USB-Gerät angeschlossen ist, mit einer VM verbunden wird.
- Um das USB-Gerät und den USB-Controller zu identifizieren, an den Ihr USB-Gerät verbunden ist (wenn mehrere USB-Controller auf Ihrem Server installiert sind), verwenden Sie diesen Befehl:
lsusb -v | grep -e Bus -e iSerial - Suchen Sie die Zeichenfolge mit dem Namen Ihres an den USB-Controller verbundenen USB-Geräts und ermitteln Sie die Controller-ID (z. B. bus002).
- Sie können das VMkernel-Protokoll überprüfen, wenn Sie ein USB-Gerät an einen ESXi-Server verbinden:
tail -f /var/log/vmkernel.log | grep -i USB - Öffnen Sie VMware vSphere Client und gehen Sie zu Hosts und Cluster.
- Wählen Sie den VMware ESXi-Host aus, auf dem sich Ihre virtuelle Maschine befindet (an den Sie ein USB-Gerät verbinden müssen).
- Gehen Sie zu Konfigurieren Sie Registerkarte und wählen Sie PCI-Geräte im Hardware Abschnitt.
- Suchen und wählen Sie den gewünschten USB-Controller aus der Liste der PCI-Geräte anhand der zuvor ermittelten ID aus.
- Der Status des ausgewählten Treibers sollte sich nun ändern in Verfügbar.
- Drücken Sie OK , um die Einstellungen zu speichern.
- Starten Sie den ESXi-Host neu, damit die Änderungen wirksam werden.
- Stellen Sie sicher, dass Ihre virtuelle Maschine ausgeschaltet ist. Gehen Sie zu den VM-Einstellungen und klicken Sie auf Neues Gerät hinzufügen > PCI-Gerät > Hinzufügen. Wählen Sie Ihren USB-Controller aus dem Dropdown-Menü mit der richtigen 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 die Treiber und Speichergeräte.
USB-Smartcard-Verbindung
Einige USB-Geräte mit der entsprechenden CCID-Klasse werden möglicherweise standardmäßig nicht für das Verbinden mit VMs unterstützt. Die Fehlermeldung „Kann ‚path:0/1/6/1‘ nicht mit dieser virtuellen Maschine verbinden. Das Gerät wurde nicht gefunden“. In den Protokollen wird folgende Meldung angezeigt:
(vmx-vcpu-0) hat Schnittstelle 0 vor der Verwendung nicht beansprucht
PCSCD ist der ESXi-Daemon, der Smartcard-Lesegeräte steuert. Der Zugriff auf USB-Smartcards ist für virtuelle Maschinen deaktiviert, um Konflikte zu vermeiden, da ein ESXi-Host eine Smartcard benötigt. Daher kann USB-Passthrough mit den Standardeinstellungen für USB-Smartcards nicht verwendet werden. Sie müssen die ESXi-Host-Konfiguration bearbeiten, um USB-Passthrough für USB-Smartcards zu aktivieren.
- Stoppen Sie die Virtuelle Maschine. Öffnen Sie die Einstellungen der Virtuellen Maschine, wählen Sie die Registerkarte „ VM-Optionen und klicken Sie auf „ Konfiguration bearbeiten.
- Klicken Sie im Fenster „ Konfigurationsparameter auf „ Konfigurationsparameter hinzufügen.
Alternativ können Sie die VMX-Konfigurationsdatei der Virtuellen Maschine in der Befehlszeilenschnittstelle bearbeiten, indem Sie sich mit einem SSH-Client mit der ESXi-Konsole verbinden.
- Bearbeiten oder fügen Sie diese Zeile zur Konfiguration der Virtuellen Maschine hinzu, wenn der Parameter nicht vorhanden ist:
usb.generic.allowCCID = "TRUE" - Speichern Sie die Einstellungen der Virtuellen Maschine.
- Beenden 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 ausgeführt wird:
ps | grep pcscd - Schalten Sie die Virtuelle Maschine ein und überprüfen Sie die Geräte, um sicherzustellen, dass der USB-Smartcard-Leser mit der Virtuellen Maschine verbunden ist.
Fazit
Sie können verschiedene Geräte, die an USB-Ports auf physischen ESXi-Hosts angeschlossen sind, direkt mit Virtuellen Maschinen verbinden und sie in Gastbetriebssystemen Virtueller Maschinen genauso verwenden wie diese USB-Geräte auf normalen physischen Computern. Sie können sogar Virtuelle Maschinen mit externen USB-Geräten, die über vMotion mit dem primären ESXi-Host verbunden sind, auf einen anderen Host migrieren. Trotz einiger Einschränkungen bietet die VMware USB-Passthrough-Funktion mehr Funktionen und Flexibilität in verschiedenen Situationen.
VMware VM-Backups sind wichtig für alle, die VMware vSphere verwenden. Herunterladen Sie NAKIVO Backup & Replikation & und probieren Sie diese universelle Datensicherheit aus, um Ihre virtuellen VMware vSphere-Maschinen und andere Daten in Ihrer Umgebung zu schützen.



