Wiederherstellen einer nicht exportierten VM | Hyper-V Server Blog

Wiederherstellen einer nicht exportierten VM

Vieleicht kennen Sie dieses Problem. Ein Hyper-V Host ist plötzlich durch einen Defekt funktionsuntüchtig und startet nicht mehr. Die Virtuellen Maschinen waren zu diesem Zeitpunkt produktiv im Einsatz.

Genau dieses Problem ist bei einem Hyper-V Server aufgetreten.
Das Betriebssystem (Windows Server 2008 R2 SP1) musste neu aufgespielt werden und die virtuellen Maschinen wurden aus einer Festplattensicherung an den ursprünglichen Ort (D:\Virtuelle Maschinen) zurückgespielt.

Nun stand ich aber vor einem weiteren großen Problem. Zwar wurde die Festplattensicherung erst kurz vorher erstellt, aber die VMs lagen nicht in exportierter Form vor.
Dies bedeutet, dass ich die VMs nicht in den Hyper-V Manager importieren konnte. Es fehlte die benötigte “config.xml” Datei, die bei einem Export automatisch angelegt wird.

Nun ist es ja in Hyper-V möglich, eine neue Maschine zu erstellen und die wiederhergestellte Festplatte (VHD) dort anzufügen. Leider geht bei dieser Methode die Konfiguration verloren. Auch wird einen neue “Eindeutige-ID” erstellt, weshalb die Maschine wieder aktiviert werden muss.

Doch gibt es auch eine andere Möglichkeit, mit der man diese Probleme umgehen kann.
Wie das geht, möchte ich in diesem Beitrag erläutern.

       

Ausgangslage:

Neuinstallierter Windows Server 2008 R2 Sp1 mit aktivierter Hyper-V Rolle.
Ein Ordner “D:\Virtuelle Maschinen” mit den wiederhergestellten virtuellen Maschinen.
In diesem Ordner liegen die Dateien von VM5 (Hier die Ordnerstruktur von VM5).

image

Import von VM5 in den Hyper-V Manager nicht möglich, da kein Export vorhanden ist.

image

Schritt 1:

Beim Erstellen einer virtuellen Maschine wird eine spezielle Verknüpfung zur Konfigurationsdatei (.xml Datei)  angelegt, durch die der Hypervisor “bemerkt”, dass eine VM vorhanden ist. Nur wenn diese Verknüpfung existiert, wird die VM im Hyper-V Manager angezeigt.
Die Verknüpfungsdateien liegen standardmäßig in folgendem Ordner:

C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines

(HINWEIS: Der Ordner ProgramData ist versteckt)

 

Da wir keine Verknüpfung haben, müssen wir uns zuerst eine Neue erstellen.
Dazu brauchen wir folgende Werte:

Erstens die VM GUID:

Diese finden wir im Ordner der VM unter “Virtual Machines”. Es ist der Name der XML-Datei. In unserem Fall liegt diese hier “D:\Virtuelle Maschinen\VM5\Virtual Machines” und heißt
81A037E8-734E-4E09-881A-DF0D469699CF

image

Zweitens den Pfad:

Der Pfad zur XML-Datei ist in unserem Fall:

D:\Virtuelle Maschinen\VM5\Virtual Machines\
81A037E8-734E-4E09-881A-DF0D469699CF.xml

 

Jetzt erstellen wir eine Textdatei mit folgendem Inhalt:

mklink "%systemdrive%\programdata\Microsoft\Windows\Hyper-V\Virtual Machines\GUID-DER-VM.xml" "PFAD ZUR XML"

So sieht es dann bei uns aus:

mklink "%systemdrive%\programdata\Microsoft\Windows\Hyper-V\Virtual Machines\81A037E8-734E-4E09-881A-DF0D469699CF.xml" "D:\Virtuelle Maschinen\VM5\Virtual Machines\81A037E8-734E-4E09-881A-DF0D469699CF.xml"

 

Diesen Befehl kopieren wir danach in ein administratives CMD Fenster oder führen es in einer Batch Datei aus.
Daraufhin sehen wir in “ C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines” eine neue XML-Datei.

image

 

Schritt 2:

Mit einem Rechtsklick gehen wir in “Eigenschaften”.
Im Reiter “Sicherheit” klicken wir auf “Bearbeiten” und fügen den Benutzer “Jeder” hinzu. Diesem geben wir “Vollzugriff”.

image

Schritt 3:

Falls in der VM ein Snapshot vorhanden sein sollte, müssen wir diesem auch auf oben genannte Weise verlinken. Dazu gehen wir im Ordner der VM (D:/Virtuelle Maschinen/VM5) auf “Snapshots” und kopieren uns die Snapshot GUID heraus.

image

Wir erstellen uns wieder eine neue Textdatei und fügen dort folgenden Befehl ein:

mklink "%systemdrive%\ProgramData\Microsoft\Windows\Hyper-V\Snapshots\GUID-DES-SNAPSHOTS.xml" "PFAD-ZUM-SNAPSHOT"

 

So sieht es bei uns aus:

mklink "%systemdrive%\ProgramData\Microsoft\Windows\Hyper-V\Snapshots\F1CE6ACF-078A-4D8C-949C-F969E1B722F4.xml" "D:\Virtuelle Maschinen\VM5\Snapshots\F1CE6ACF-078A-4D8C-949C-F969E1B722F4.xml"

 

Wir führen wir den Befehl unter Administratorberechtigungen aus, wechseln in “C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots” und setzen die Zugriffsrechte der XML-Datei für “Jeder” auf “Vollzugriff”.

image

 

Schritt 3 wiederholen wir für jeden Snapshot.

ACHTUNG: Es kann allerdings vorkommen, dass die Snapshots im Hyper-V Manager nicht angezeigt werden. Das bedeutet, dass auf ältere Snapshots nicht zurückgegriffen werden kann. In meinem Fall wurde nach einem Export und erneutem Import (Siehe Schritt 5) die verbliebene AVHD automatisch mit der VHD zusammengeführt, sodass ich die VM trotzdem normal weiter nutzen konnte.

 

Schritt 4:

Nun öffnen wir die Diensteverwaltung (Start –> Verwaltung –> Dienste), suchen nach “Hyper-V-Verwaltung für virtuelle Computer” (vmms) und starten den Dienst neu.

image

 

Schritt 5:

Jetzt sehen wir unsere VM und den Snapshot wieder im Manager. Jetzt müssen noch eventuell die Netzwerkadapter angepasst werden.
Zwar ist unsere Konfiguration wieder da, aber so ist es noch nicht optimal.
Wir sollten jetzt noch zum Abschluss einen sauberen Export durchführen.

image
Wenn alles exportiert ist, löschen wir die VM aus dem Hyper-V Manager und entfernen die Dateien/Ordner der virtuellen Maschine im Ordner “D:/Virtuelle Maschinen”

Schritt 6:

Zum Schluss importieren wir die VM wie gewohnt und können wieder normal damit arbeiten, ohne die Konfiguration neu erstellen oder die VM erneut aktivieren zu müssen.

admin
 

  • Ferdinand Loges sagt:

    Hallo Herr Althaus, vielen Dank für den Blogeintrag, er hätte mir fast weitergeholfen. Der Unterschied bei mir ist nur, dass die XML Datein noch vorhanden sind da das HOST-System nicht abgestürzt, sondern neu gestartet wurde und danach eine VM nicht mehr angezeigt wird. Ich habe die vorhandenen XML Dateien unter C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines und Snapshots umbenannt (-old dahinter) und Ihre Anleitung von oben durchgeführt. Die XML Dateien wurden auch neu erstellt, aber auch nach einem Neustart wurde die VM nicht angezeigt. Ich bin an dieser Stelle leider ziemlich ratlos und wäre Ihnen für einen Tipp sehr dankbar.

  • Daniel Althaus sagt:

    Hallo Herr Loges,
    Sofern die XML-Datei vorhanden ist und die Zugriffsbeschränkung zu Testzwecken auf “Jeder” und “Vollzugriff” (siehe Schritt 2) gestellt ist, sollte der Manager die VM eigentlich wieder erkennen.
    Sie könnten die Verknüpfung zur XML Datei der VM testen, indem Sie einmal auf die neu erstellte “Datei” unter “C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines” klicken. Dann sollte sich ein Fenster mit dem Inhalt der entsprechenden verknüpften XML-Datei öffnen.
    Auch könnte es sein, dass die Zugriffbeschränkungen der VM-Dateien fehlerhaft sind, denn wenn nicht ausreichende Berechtigungen auf den Ordner gesetzt sind, wird die VM ebenfalls nicht angezeigt.
    Beeinhaltet der Hyper-V Manager noch mehrere VMs? Wenn ja, werden diese denn nach dem Neustart korrekt angezeigt?

    Viele Grüße,
    Daniel

  • Enrico Stephan sagt:

    Hallo Daniel,

    Hast du das schon mal bei einem Cluster probiert?
    Ich hatte die Tage eine Maschine die sich so nicht wiederherstellen ließ.

    “Cannot connect … storage” Fehlermeldung…

    Ich habe noch eine weitere die ich mal die Tage versuche wieder herzustellen.

  • Marcel sagt:

    Super Anleitung!
    Hat mir bei der Migration von HyperV 2012 auf 2012-R2 geholfen. Nachdem ein Import nicht erfolgreich ausgeführt wurde behauptete der HyperV das es die zu importierende Maschine mit der ID schon gibt…
    Dank der Anleitung ließ sich das dann doch recht unkompliziert beheben.

    Grüße
    Marcel

  • Marcel Müller sagt:

    TOP! hat mir sehr geholfen!!!!!

  • Perfekt! Das funktioniert ganz tadellos! Sehr hilfreich!

  • >