In diesem Post soll es darum gehen, wie man VMs retten kann. Speziell jene, die nach einem Neustart oder Firmwareupgrade behaupten Sie würden ihre Festplatte nicht mehr finden.
Wenn man dann nachschaut, auf welche Datei auf dem Storage sie zeigen ist diese noch da. Wenn man die Festplatte allerdings manuell entfernt und eine Neue vom Typ “bereits bestehend” einbindet, ist die Festplatte nicht sichtbar.
Welche Dateien relevant sind
Um das Problem anzugehen müssen wir uns erstmal ansehen, welche Dateien wir anfassen werden.
SSH aktivieren
Als erstes müsst ihr SSH aktivieren. Da es so intuitiv ist, hier eine kleine Grafik.
Neue VM erstellen
Legt eine VM mit einem Namen eurer Wahl (anders als die Defekte) an und gebt ihr eine 10 GB Große Festplatte mit der Selben Konfiguration wie die der defekten VM. Gebt dem Server sonst die Selben Hardwarespecs wie der defekten VM. Ihr wollt nicht, dass ein Server der zwei Netzwerkkarten erwartet nur eine vorfindet oder die Datenbanken nicht starten kann, weil er plötzlich viel weniger Arbeitsspeicher hat als vorher.
Schaut euch an, wie groß die Festplatte der defekten VM ist und stellt sicher, dass noch eine Kopie davon auf den Storage passt. (Ein guter Erfahrungswert ist es immer mindestens 10% des Storage ungenutzt zu lassen. Ab etwa 10TB reichen auch 5%)
In diesem Fall sind das 250GB und ich habe noch knapp 2TB frei.
Festplatte kopieren
Verbindet euch per SSH mit dem ESXi Host und navigiert in das Verzeichnis euer neuen VM. Da der Storage in diesem Beispiel “Storage” genannt wurde, lautet der Befehl dazu:
cd /vmfs/volumes/Storage
Wundert euch nicht, dass der Prompt einen anderen Pfad anzeigt. Es befindet sich nur ein Softlink mit dem Namen, den Ihr dem Storage gegeben habt, in dem Volumes Verzeichnis. Dieser Softlink pointed dann auf das jeweilige Volume.
Jetzt löscht ihr die aktuelle -flat.vmdk der neuen VM. rm ./<Name der Neuen VM>-flat.vmdk
Anschließend kopiert Ihr die -flat.vmdk der alten VM in das aktuelle Verzeichnis und gebt ihr den namen der grade gelöschten -flat.vmdk.
cp ../<Name der Alten VM>/<Name der Alten VM>-flat.vmdk ./<Name der neuen VM>-flat.vmdk
Wäre der Name der alten VM “kaputt” und der Name der neuen VM “heile”, so sähe der Befehl folgendermaßen aus.
cp ../kaputt/kaputt-flat.vmdk ./heile-flat.vmdk
Der prompt wird jetzt einfrieren, bis der Kopiervorgang abgeschlossen ist. Dies kann eine Weile dauern, je nach Lese- und Schreibgeschwindigkeit des Storage. Bei 250GB hat es bei mir über eine Stunde gedauert…
Schaltet die VM noch NICHT ein, wenn der Kopiervorgang abgeschlossen ist.
Festplatte erweitern
Aktuell wird die Festplatte der VM von der beschreibenden .vmx noch mit 10GB gelisted. Geht in die Einstellungen der neuen VM und erweitert die Festplatte auf Orginalgröße +10GB.
Die VM sollte jetzt wieder starten. Bei Windows Servern kann es dann nochmal eine Weile dauern, bis der Server wieder sauber anläuft.
Der Server startet erstmal mit DHCP, da eine neue Netzwerkschnittstelle erkannt wurde. Ihr könnt dieser Schnittstelle nicht die gleich IP Adresse geben, wie der Server sie vorher hatte, da es noch Offline Adapter mit der selben IP gibt.
Ich empfehle euch große Schmerzen zu umgehen, indem Ihr zunächst ALLE Netzwerkadapter der VM entfernt und dann in die Geräteverwaltung wechselt.
devmgmt.msc
Hier müsst Ihr unter Ansicht die ausgeblendeten Geräte anzeigen lassen.
Anschließend deinstalliert Ihr alle VMware Netzwerkadapter.
Jetzt muss noch die Registry aufgeräumt werden. Startet den Registry Editor. (Windows + R -> regedit
)
Löscht die RegistryKeys unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkCards\
Fahrt den Server herunter, fügt eine neue Netzwerkkarte hinzu und Startet die VM wieder.
Cheers, Ori