Snapshot Zusammenführung steckt in einer Endlosschleife

Wir erhielten, wie schon öfter, einen Anruf von einem Hyper-V-Server Blog Leser, der Probleme mit dem Plattenplatz auf seinem Hyper-V Host hatte. Es handelte sich dabei um die Partition, auf der die VMs gespeichert sind. Der Grund dafür waren die Hyper-V Snapshots.

Um genau zu sein: Die Partition, um die es in diesem Fall ging, war ca. 860 GB groß und die VM VHD-Dateien belegten um die 550 GB Festplattenplatz. Die Restlichen ca. 310 GB wurden fast vollständig, bis auf 9cGB, von den AVHD-Dateien der Snapshots genutzt.

Unser Vorgehen in solchen Fällen sieht so aus:

  1. Export der VM auf einen externe Festplatte (bei einem Datenvolumen von 850 GB => ca. 17 Stunden)
  2. Löschen eines Snapshots und warten, bis dieser zusammengeführt ist
  3. Löschen des nächsten Snapshots usw., bis alle Snapshots zusammengeführt sind

In diesem Fall war bei Punkt 2 der Liste Schluß. Der Zusammenführungs-Vorgang startete, lief bis ca. 35% und startete dann wieder von vorne. Was war das Problem?

Nach näherem Hinschauen stellte sich heraus, das aus den ca. 9 GB freiem Plattenplatz auf der VM-Partition nur noch ca. 8 MB geworden waren. Was belegte die 9 GB? Dazu muss man wissen wie das Zusammenführen der Snapshots funktioniert:

Beim Vorgang des Zusammenführens sind zwei AVHD-Dateien oder eine VHD- und eine AVHD-Datei im Spiel. Zum einen die Snapshotdatei, die überflüssig wird, und zum anderen die (A)VHD-Datei die am Ende des Vorgangs alle Blöcke des Snapshots vereint. Wir schauen uns zwei Zusammenführungen genauer an:

Im ersten Beispiel löschen wir “Snapshot 2” welcher dann in die AVHD-Datei “Jetzt” überführt wird. In der AVHD Datei sind nur die Änderungen zur VHD Datei gespeichert. In der mittleren AVHD-Datei sind diese als gelbe Rechtecke und in der rechten AVHD-Datei als grüne Rechtecke zu sehen. Diese Blöcke werden jetzt Block für Block in die rechte Datei kopiert. Achtung: Das passiert aber nur, wenn der Block nicht schon in dieser Datei vorhanden ist, da er sonst die Änderung in “Jetzt” überschreiben würde (zu sehen an dem Pfeilen mit dem X). Wichtig: Beim Übertragen der Blöcke wächst die AVHD Datei an. Wenn alle Blöcke übertragen sind, wird die mittlere AVHD-Datei schließlich gelöscht und dabei wird dann Plattenplatz frei.

snapshotbsp1

Im zweiten Beispiel wird der “Snapshot 1” gelöscht. Dies ist der Zustand, der in der VHD-Datei konserviert ist. Nach dem Runterfahren werden nun die Blöcke aus der “Jetzt” AVHD-Datei, gekennzeichnet durch die gelben Rechtecke, in die linke VHD kopiert. Da die VHD-Datei vom Typ fixed ist, ist bereits jeder Block vorhanden, gekennzeichnet durch die grauen Rechtecke, und die Blöcke aus “Jetzt” werden einfach an die entsprechenden Positionen geschrieben. Wichtig: die VHD wächst dabei nicht. Auch in diesem Beispiel wird nach erfolgreichem Übertragen die AVHD gelöscht und Plattenplatz wird freigegeben.

snapshotbsp2

Zurück zu unserem Kundenbeispiel: Es handelte sich um eine Zusammenführung wie im Beispiel 1. Allerdings waren hier wohl mehr als 9 GB Blockänderungen aufgelaufen, so das irgendwann kein weiterer Platz auf der Platte vorhanden war und der Zusammenführungsvorgang einfach immer wieder in einer Endlosschleife neugestartet wurde.

Daraus resultierten zwei neue Probleme:

  1. nur noch ca. 9MB freien Speicher auf den VM-Laufwerk, damit kein starten der VM mehr möglich
  2. ein sich ständig wiederholender Merge Vorgang

Was kann man bei einem solchen Fall tun? Ab Windows Server 2008 R2 kann Hyper-V auch einzelne Snapshots exportieren. Deswegen habe ich folgendes Vorgehen angewendet:

  1. Anlegen eines neuen Snapshots (belegt wenige kB)
  2. Exportieren diese Snapshots auf ein externes Laufwerk
  3. Löschen der VM und Ihrer Dateien
  4. Kopieren des Exports auf die VM-Platte
  5. Importieren der VM

Das Ganze funktioniert nur, weil der Export-Vorgang eine höhere Priorität hat als der Zusammenführungs-Vorgang. Der Status der VM wechselt einfach von “Zusammenführung wird…” auf “Export wird…”. Ergebnis: Dem Kunden konnte geholfen werden: Er hat jetzt ca. 300 GB Speicherplatz auf seinem Server wieder zur Verfügung.

Ich habe mir folgendes im Umgang mit Snapshots bei wenig Plattenplatz gemerkt: Man sollte den Snapshot zuerst löschen der am wenigsten Änderungen beinhaltet und sich dann sukzessive voran arbeiten.

Carsten Rachfahl
 

Dipl. Ing. Carsten Rachfahl ist seit mehr als 25 Jahren in der IT-Branche tätig. Er ist einer der geschäftsführenden Gesellschafter der Rachfahl IT-Solutions GmbH & Co. KG und für den technischen Bereich verantwortlich.

Comments are closed