Willkommen zu einem der frustrierendsten, aber zum Glück lösbaren Probleme im Bereich der Virtualisierung mit VMware ESXi: Eine Grafikkarte (GPU), die Sie einer virtuellen Maschine (VM) per Passthrough zugewiesen haben, lässt sich plötzlich nicht mehr freigeben. Die Hardware scheint „gesperrt“ zu sein und verhindert, dass Sie sie einer anderen VM zuweisen oder die Konfiguration ändern können. Gerade in ESXi 7 kann dieses Verhalten auftreten und für Kopfzerbrechen sorgen.
Doch keine Sorge! In diesem umfassenden Artikel beleuchten wir, warum dieses Phänomen auftritt und wie Sie Ihre wertvolle GPU Schritt für Schritt wieder in den Pool der verfügbaren Ressourcen zurückholen können. Wir führen Sie durch die notwendigen Schritte, geben Ihnen Hintergrundwissen an die Hand und zeigen Ihnen bewährte Methoden, um die Kontrolle über Ihre Hardware zurückzugewinnen.
Was ist GPU-Passthrough und warum ist es so begehrt?
Bevor wir uns dem Problem widmen, klären wir kurz, was GPU-Passthrough überhaupt ist. Im Kern ermöglicht Passthrough (auch als DirectPath I/O oder VMDirectPath bekannt) einer virtuellen Maschine, direkten und exklusiven Zugriff auf physische Hardware-Geräte des Hosts zu erhalten. Anstatt dass der Hypervisor die Hardware abstrahiert und Ressourcen teilt, wird das Gerät direkt an die VM „durchgereicht”.
Die Vorteile der direkten Hardwarenutzung
- Maximale Leistung: Die VM kann die volle Leistung der GPU nutzen, ohne den Overhead des Hypervisors. Dies ist entscheidend für anspruchsvolle Anwendungen.
- Spezielle Hardware-Funktionen: Bestimmte Funktionen oder Treiber, die nur mit direktem Hardwarezugriff funktionieren, werden verfügbar.
- Anwendungsfälle:
- Gaming-VMs: Für ein flüssiges Spielerlebnis in einer virtuellen Umgebung.
- KI und Deep Learning: Training komplexer Modelle, die CUDA-Kerne oder andere GPU-Beschleunigungen erfordern.
- CAD/CAM und professionelle Grafik: Für rechenintensive Design- und Renderaufgaben.
- VDI (Virtual Desktop Infrastructure): Bereitstellung leistungsstarker virtueller Desktops.
- Medienserver/Transcoding: Effizientes Kodieren und Dekodieren von Videoinhalten.
Die Fähigkeit, einer VM eine dedizierte GPU zuzuweisen, macht ESXi zu einer unglaublich flexiblen Plattform. Doch diese Flexibilität bringt auch Eigenheiten mit sich, insbesondere wenn es darum geht, die Zuweisung wieder rückgängig zu machen.
Das Dilemma: „Hardware gesperrt” – Warum passiert das?
Das Kernproblem tritt auf, wenn ein PCI-Gerät (wie eine GPU) einer VM zugewiesen und dann aus irgendeinem Grund die Verbindung nicht sauber getrennt wird. ESXi wurde entwickelt, um Ressourcen effizient und sicher zu verwalten. Wenn ein Gerät per Passthrough an eine VM übergeben wird, beansprucht die VM dieses Gerät exklusiv. Der Hypervisor markiert das Gerät als „aktiv” oder „beansprucht” und verhindert, dass andere VMs oder der Host selbst darauf zugreifen können.
Typische Szenarien, die zum „Sperren“ führen:
- VM-Löschung ohne vorherige Entfernung: Sie löschen eine VM, der eine GPU zugewiesen war, ohne die GPU zuvor aus der VM-Konfiguration zu entfernen. Das Gerät bleibt im Gedächtnis des Hosts als „zugewiesen” oder „beansprucht”.
- Konfigurationsfehler: Bei Experimenten mit Passthrough kann es zu Situationen kommen, in denen die Zuordnung nicht korrekt aufgehoben wird.
- Host-Absturz oder unerwarteter Neustart: Wenn der ESXi-Host abstürzt, während eine VM mit Passthrough-GPU aktiv ist, kann das Gerät im „gesperrten” Zustand verharren.
- Wechsel zwischen VMs: Sie möchten eine GPU von VM A zu VM B verschieben, aber nach dem Entfernen aus VM A können Sie sie nicht VM B zuweisen, da sie noch als „aktiv” angezeigt wird.
Der Hauptgrund ist, dass der ESXi-Kernel oder ein zugrunde liegender Treiber immer noch eine Referenz auf das Gerät hält, selbst wenn die VM nicht mehr existiert oder ausgeschaltet ist. Der Host weiß, dass das Gerät für Passthrough konfiguriert ist und erwartet möglicherweise eine erneute Zuweisung oder einen expliziten Befehl zur Freigabe.
Vorbereitung ist alles: Bevor Sie beginnen
Bevor wir uns in die Befehlszeile stürzen, sind einige Vorbereitungen wichtig:
- Backup erstellen (optional, aber empfohlen): Obwohl die folgenden Schritte in der Regel sicher sind, ist es immer ratsam, vor größeren Änderungen an der Host-Konfiguration ein Backup zu haben.
- SSH-Zugriff aktivieren: Die meisten Schritte erfordern den Zugriff auf die Befehlszeile des ESXi-Hosts über SSH (Secure Shell). Stellen Sie sicher, dass SSH auf Ihrem ESXi-Host aktiviert ist. Dies können Sie im vSphere Client unter
Host > Konfigurieren > Dienste > SSH
tun. - Identifizieren der betroffenen GPU: Sie müssen die genaue PCI-ID Ihrer Grafikkarte kennen. Dies ist entscheidend, um sicherzustellen, dass Sie das richtige Gerät manipulieren.
So identifizieren Sie die PCI-ID Ihrer GPU:
Verbinden Sie sich per SSH mit Ihrem ESXi-Host (z.B. mit PuTTY oder einer anderen SSH-Client-Software). Geben Sie dann einen der folgenden Befehle ein:
esxcli hardware pci list | grep -i vga -B 1 -A 2
Oder etwas allgemeiner:
esxcli hardware pci list
Dieser Befehl listet alle PCI-Geräte auf. Suchen Sie nach Ihrer GPU (oft unter der „Class” 0x0300
für VGA-kompatible Controller). Achten Sie auf die Spalte „Device Name”, die den Herstellernamen und das Modell enthalten sollte (z.B. NVIDIA Corporation GP107 [GeForce GTX 1050 Ti]). Die wichtige Information ist die „Bus Address”, die typischerweise im Format <Bus>:<Slot>:<Function>
vorliegt (z.B. 0000:01:00.0
).
Ein Beispielausschnitt könnte so aussehen:
0000:01:00.0
Address: 0000:01:00.0
Segment: 0000
Bus: 01
Slot: 00
Function: 0
Vendor Name: NVIDIA Corporation
Device Name: GP107 [GeForce GTX 1050 Ti]
Class Name: Display controller
Class ID: 0x0300
SubClass ID: 0x00
Programming Interface ID: 0x00
Revision ID: 0xa1
Device ID: 0x1c82
SubVendor ID: 0x1043
SubDevice ID: 0x85ec
VMkernel Name: vmk0
Driver Name: vmw_ahci
PCI ID: 0000:01:00.0
Passthrough Capable: true
Passthrough Active: true
Module ID: 153
Module Name: vmkernel_passthrough
Owner: vmhba0
Beachten Sie die Zeile Passthrough Active: true
. Wenn dies auf true
steht, aber die GPU keiner aktiven VM zugewiesen ist, haben Sie ein „gesperrtes” Gerät.
Die Schritt-für-Schritt-Anleitung zur Freigabe der GPU
Die gute Nachricht ist, dass die meisten „gesperrten” GPUs mit einem relativ einfachen und bewährten Verfahren freigegeben werden können. Die effektivste Methode beinhaltet fast immer einen Neustart des ESXi-Hosts.
Schritt 1: Überprüfen der VM-Konfiguration und Entfernen der GPU
Der erste und wichtigste Schritt ist sicherzustellen, dass die GPU keiner virtuellen Maschine mehr zugewiesen ist – auch nicht einer ausgeschalteten oder scheinbar gelöschten VM, deren Konfigurationsdatei möglicherweise noch existiert.
- Suchen Sie die VM: Melden Sie sich im vSphere Client (Web-Interface) an. Navigieren Sie zu der VM, der Sie die GPU zugewiesen hatten. Wenn die VM gelöscht wurde, überspringen Sie diesen Unterpunkt.
- VM herunterfahren: Stellen Sie sicher, dass die betroffene VM (falls noch vorhanden) vollständig heruntergefahren ist (nicht nur „ausgeschaltet”, sondern der Status muss „powered off” sein).
- Hardware-Einstellungen bearbeiten: Klicken Sie mit der rechten Maustaste auf die VM und wählen Sie
Einstellungen bearbeiten
. - PCI-Gerät entfernen: Suchen Sie in der Liste der Hardware nach dem
PCI device
, das Ihre GPU repräsentiert. Klicken Sie auf dasX
-Symbol daneben, um es zu entfernen. Speichern Sie die Änderungen.
Dieser Schritt ist entscheidend. Selbst wenn Sie glauben, dass die GPU nicht mehr zugewiesen ist, kann eine verbleibende Konfiguration das Problem verursachen.
Schritt 2: Der Goldstandard – Ein Neustart des ESXi-Hosts
Für die meisten Fälle, in denen eine GPU nach dem Entfernen aus einer VM oder dem Löschen einer VM „gesperrt” bleibt, ist ein Neustart des ESXi-Hosts die zuverlässigste und sicherste Lösung. Der Neustart erzwingt, dass der Kernel alle Geräteregister neu initialisiert und alle Hardware-Referenzen freigibt.
Warum ein Neustart? Wenn ein PCI-Gerät per Passthrough zugewiesen wird, lädt ESXi spezielle Kernel-Module oder Treiber, die das Gerät exklusiv für die VM beanspruchen. Selbst wenn die VM heruntergefahren oder gelöscht wird, können diese Kernel-Module oder -Referenzen aktiv bleiben und das Gerät als „beansprucht” kennzeichnen. Ein Host-Neustart setzt diese Zustände zurück und ermöglicht eine saubere Neuinitialisierung der Hardware-Erkennung.
So führen Sie den Neustart durch:
- Andere VMs herunterfahren: Stellen Sie sicher, dass alle anderen virtuellen Maschinen auf dem Host ordnungsgemäß heruntergefahren sind, um Datenverlust zu vermeiden.
- Host in den Wartungsmodus versetzen: Klicken Sie im vSphere Client mit der rechten Maustaste auf den Host und wählen Sie
Wartungsmodus > Wartungsmodus aktivieren
. - Host neu starten: Klicken Sie erneut mit der rechten Maustaste auf den Host und wählen Sie
Power > Neustarten
. - Host aus dem Wartungsmodus nehmen: Nachdem der Host erfolgreich neu gestartet wurde, klicken Sie mit der rechten Maustaste darauf und wählen Sie
Wartungsmodus > Wartungsmodus deaktivieren
.
Alternativ können Sie den Neustart auch über SSH durchführen:
esxcli system maintenanceMode set --enable true
reboot
# Warten Sie, bis der Host neu gestartet ist und melden Sie sich erneut per SSH an
esxcli system maintenanceMode set --enable false
Schritt 3: Überprüfung nach dem Neustart
Nachdem der ESXi-Host erfolgreich neu gestartet wurde, überprüfen Sie den Status Ihrer GPU erneut:
esxcli hardware pci list | grep -i vga -B 1 -A 2
Sie sollten nun sehen, dass Passthrough Active:
entweder auf false
steht oder die Zeile komplett fehlt, was ebenfalls anzeigt, dass das Gerät nicht mehr aktiv für Passthrough beansprucht wird. Die GPU sollte nun wieder frei sein und kann einer anderen VM zugewiesen oder für andere Zwecke verwendet werden.
Schritt 4: Das Gerät für Passthrough reaktivieren (falls nötig)
Manchmal müssen Sie das Gerät im vSphere Client unter den Host-Einstellungen für Passthrough wieder umschalten, damit es wieder als verfügbar erkannt wird. Gehen Sie zu Host > Konfigurieren > PCI-Geräte
(oder Hardware-Passthrough, je nach ESXi-Version). Suchen Sie Ihre GPU und stellen Sie sicher, dass sie für Passthrough umgeschaltet ist. Möglicherweise müssen Sie hier erneut einen Host-Neustart durchführen, wenn Sie den Zustand des Geräts ändern.
Erweiterte Fehlerbehebung und seltene Fälle (Wenn ein Neustart nicht hilft)
Es ist äußerst selten, dass ein Neustart des ESXi-Hosts das Problem einer gesperrten GPU nicht löst. Wenn dies der Fall ist, deutet es oft auf tiefere Probleme hin, wie etwa eine Hardware-Inkompatibilität, Firmware-Probleme oder eine sehr hartnäckige Kernel-Referenz. Diese Situationen sind komplexer und erfordern fortgeschrittene Kenntnisse.
Mögliche Ursachen und Lösungsansätze für hartnäckige Sperrungen:
- Log-Dateien prüfen: Die VMkernel-Logs können wertvolle Hinweise liefern. Überprüfen Sie
/var/log/vmkernel.log
auf Fehlermeldungen im Zusammenhang mit Ihrer PCI-ID oder dem Passthrough-Modul. Suchen Sie nach Meldungen, die den Boot-Vorgang des Geräts oder dessen Initialisierung betreffen. - Überprüfung der Kernel-Module: Manchmal kann ein Kernel-Modul das Gerät weiterhin beanspruchen. Verwenden Sie den Befehl:
vmkdevmgr -l | grep <Ihre_PCI_ID>
Dies kann zeigen, welches Modul das Gerät derzeit beansprucht. Das Entladen und Neuladen eines Moduls ist jedoch riskant und sollte nur mit äußerster Vorsicht und nach genauer Recherche erfolgen, da es die Stabilität des Systems beeinträchtigen kann. Für GPUs gibt es selten ein einziges Modul, das manuell entladen werden kann, um eine Sperre zu lösen, die einem Host-Neustart standhält.
- Vorsicht bei
vmkusb
-Befehlen: In vielen Foren finden sich Empfehlungen wieesxcli system settings kernel set -s vmkusb -v FALSE
. Dieser Befehl ist spezifisch für Probleme mit USB-Passthrough-Geräten und deaktiviert das vmkusb-Modul. Er hat keine direkte Relevanz oder Wirkung auf die Freigabe von PCI-GPUs und sollte in diesem Kontext nicht angewendet werden. Die unüberlegte Anwendung kann zu anderen Problemen führen. - VMware Knowledge Base: Wenn alle Stricke reißen, suchen Sie in der offiziellen VMware Knowledge Base nach ähnlichen Problemen und Lösungen. Dort finden sich oft spezifische Anleitungen für bestimmte Hardware-Konfigurationen oder ESXi-Versionen.
- Hardware-Überprüfung: Überprüfen Sie die GPU selbst. Ist sie richtig im PCI-Slot eingesetzt? Gibt es physische Schäden? Manchmal kann auch eine fehlerhafte GPU zu ungewöhnlichem Verhalten führen.
Es ist wichtig zu betonen, dass diese erweiterten Schritte in der Regel nur von erfahrenen Administratoren durchgeführt werden sollten. Für die überwiegende Mehrheit der Fälle ist der Host-Neustart die einzige und sicherste Methode zur Behebung einer gesperrten Passthrough-GPU.
Best Practices und Prävention
Um zukünftige Probleme mit gesperrten GPUs zu vermeiden, können Sie einige Best Practices befolgen:
- GPU aus VM entfernen, bevor diese gelöscht wird: Wenn Sie eine VM löschen möchten, die eine Passthrough-GPU verwendet, entfernen Sie zuerst die GPU aus den Hardware-Einstellungen der VM, bevor Sie die VM selbst löschen.
- VM ordnungsgemäß herunterfahren: Fahren Sie virtuelle Maschinen, die Passthrough-Geräte verwenden, immer über das Gastbetriebssystem oder den vSphere Client sauber herunter (
Shutdown Guest OS
) anstatt sie einfach „abzuschalten” (Power Off
), wenn es nicht unbedingt nötig ist. - Regelmäßige Updates: Halten Sie Ihren ESXi-Host und Ihre vCenter-Server auf dem neuesten Stand. VMware veröffentlicht regelmäßig Patches und Updates, die Bugs beheben und die Stabilität verbessern.
- Dokumentation: Führen Sie eine Dokumentation darüber, welche GPUs welchen VMs zugewiesen sind. Das hilft bei der Fehlersuche.
- Vorsicht bei Experimenten: Wenn Sie mit Passthrough-Geräten experimentieren, tun Sie dies auf einem Testsystem oder zu Zeiten, in denen ein Host-Neustart tolerierbar ist.
Fazit
Das Problem einer „gesperrten” Passthrough-GPU in ESXi 7 kann ärgerlich sein, ist aber in den meisten Fällen mit den richtigen Schritten einfach zu lösen. Die Kernbotschaft lautet: Haben Sie Geduld, identifizieren Sie das Gerät korrekt und, am wichtigsten, scheuen Sie sich nicht vor einem Neustart des ESXi-Hosts. Er ist der zuverlässigste Weg, um alle hartnäckigen Hardware-Referenzen zu entfernen und Ihre Grafikkarte wieder für neue Zuweisungen freizugeben.
Mit der Fähigkeit, eine dedizierte GPU an eine VM weiterzureichen, eröffnen sich in der Virtualisierung ungeahnte Möglichkeiten. Wenn Sie die hier beschriebenen Schritte und Best Practices befolgen, können Sie die volle Leistung Ihrer Hardware in Ihrer virtuellen Umgebung nutzen, ohne sich über dauerhaft blockierte Ressourcen Sorgen machen zu müssen. Viel Erfolg beim Freigeben und Zuweisen Ihrer GPUs!