postheadericon Snapshot-Handling in ESX 4.0 Update 2

Das Update 2 der ESX-Software 4.0 bringt eine Neuerung hinsichtlich der Konsolidierung von Snapshots mit sich, die relativ wenig Beachtung in der Öffentlichkeit fand, obwohl sie ziemlich praktisch ist. Oder, genauer gesagt, die Konsolidierung von Snapshots war vor dem Update ausgesprochen unpraktisch gelöst.

Snapshot-Handling

Wenn bisher man eine Snapshot-Konsolidierung mit Klick auf “Delete All” im Snapshot-Manager startete, passierte folgendes: die Snapshots wurden der Reihe nach, beginnend mit dem letzten, in den jeweiligen Vorgänger aufgenommen. Bei zwei Snapshots wurde also zuerst in Snapshot 2 in Snapshot 1 aufgenommen, dann Snapshot 1 in das Basis-Image, und erst zum Schluss wurden die Snapshots gelöscht.

Dieses Verfahren war aus zwei Gründen problematisch: Erstens wurden die Daten aus den späteren Snapshots mehrfach kopiert (Snapshot 2 -> Snapshot 1 -> Basis-Image), was Zeit kostete. Zweitens wurde während der Konsolidierung zusätzlicher Plattenplatz temporär benötigt, da die Snapshots zunächst einmal um die Größe ihrer Nachfolger anwuchsen, und erst am Ende des gesamten Vorgangs gelöscht wurden. Je nach Anzahl und Größe der Snapshots konnte das viel bis sehr viel sein. Das Hässliche daran war, dass man erst recht in Platzprobleme hineinlief, wenn man Snapshots auflösen wollte, um Plattenplatz freizuschaufeln.

Wie bereits gesagt: ausgesprochen unpraktisch. Als Workaround konnte man einen Klon der VM erstellen und damit das Problem teilweise umschiffen, aber elegant war nicht wirklich.

Mit dem Update 2 läuft der Konsolidierungsvorgang jetzt wesentlich ressourcenschonender ab und beginnt mit dem ersten Snapshot statt mit dem letzten, wodurch während des Konsolidierungsvorgangs kein zusätzlicher Plattenplatz mehr benötigt wird.

Das Experiment

Der Sachverhalt ist in den Release Notes zum Update beschrieben; nach der Lektüre der Diskussion auf  Yellow Bricks wollte ich den Vorgang jeweils mit 4.0 Update 1 und 4.0 Update 2 nachstellen und den dabei benötigten Plattenplatz graphisch veranschaulichen.

Die Idee:

  • Snapshot 1 erzeugen
  • Dummy-Datei anlegen
  • Snapshot 2 erzeugen
  • Dummy-Datei anlegen
  • VM herunterfahren und Snapshots konsolidieren

Das Experiment fand auf einer VM mit Ubuntu Linux und ca. 6 GB VMDK-Image statt. Die Dummy-Datei wurde mit dem Befehl

dd if=/dev/zero of=blob bs=1024k count=512

mit einer Größe von 512 MB angelegt.

Verhalten unter ESX 4.0 Update 1

Abbildung 1: Snapshots unter ESX 4.0 Update 1

Abbildung 1 zeigt den Platzbedarf der VM mit 4.0 Update 1:
(1) Dummy-Datei füllt Snapshot 1
(2) Dummy-Datei füllt Snapshot 2
(3) Konsolidierung startet. Zuerst wird Snapshot 2 in Snapshot 1 aufgenommen, der entsprechend anwächst
(4) Snapshot 1 wird in das Basis-Image aufgenommen
(5) Konsolidierung fertig, Snapshots werden gelöscht

Verhalten unter ESX 4.0 Update 2

Abbildung 2: Snapshots unter ESX 4.0 Update 2

Abbildung 2 zeigt den Platzbedarf der VM mit 4.0 Update 2. Im Unterschied zu vorher wird für die Konsolidierung ab (3) kein zusätzlicher Platz mehr benötigt (blaue Kurve). Auch die Größe der Snapshots bleibt gleich, den Knick bei (4) aus Abbildung 1 gibt es hier nicht.

Fazit

Die Größe der Dummy-Datei fiel mit 512 MB in Relation zum Basis-Image mit ca. 6 GB recht moderat aus, daher ist der Effekt auch nicht ganz so eindrucksvoll. Mit Snapshots aus dem echten Leben bewegt man sich dagegen auch mal in Größenordnungen von 100GB und mehr, und da macht sich der Unterschied dann deutlich bemerkbar.

Kommentieren