Die Snapshot-Funktion von VMware vSphere ist unter anderem für Backups besonders interessant und wird in Kombination mit zum Beispiel Veeam Backup & Replication genutzt. Aber wie erstellt man einen Snapshot, der ein konsistentes Abbild eines laufendenden Linux-Systems darstellt? Um diese Problematik soll es in diesen Mini-Artikel gehen.
Was macht ein konsistentes Dateisystemabbild aus? Auch die Daten von laufenden Diensten (zum Beispiel Datenbanken) sollen korrekter und wiederherstellbarer Form im Abbild vorhanden sein.
VMware bietet dafür über die in der VM installierten VMware Tools Einhängepunkte, um das System (besser gesagt das Dateisystem) in einen konsistenten Zustand zu bringen. Konkret sind das zwei Skripte, die vor beziehungsweise nach der Erstellung eines Snapshots ausgeführt werden: /usr/sbin/pre-freeze-script und /usr/sbin/post-thaw-script.
Details findet man unter anderem bei VMware: "Running Custom Quiescing Scripts".
Kurz gesagt: Man erstellt die beiden Dateien, befüllt sie mit Shellkommandos oder Ähnlichem und macht sie ausführbar (chmod +x ...).
Man könnte mit diesen Skripten zum Beispiel die Datenbank stoppen und wieder starten. Das macht allerdings eine teilweise Wiederherstellung der Daten zu einem späteren Zeitpunkt schwierig, deswegen dumpe ich die Datenbank lieber (mysqldump ... > /var/backups/dump.sql), ich persönlich kann mich mit dieser Variante mehr anfreunden, auch weil der DB-Dienst für diese Aktion nicht gestoppt werden muss (=> keine Ausfallzeit). Sie dauert aber deutlich länger, hier muss der persönliche Geschmack beziehungsweise die genauen Anforderungen entscheiden.
Über ein Detail bin ich dann aber trotzdem noch gestolpert: VMware führt die beiden Skripte nur aus, wenn beim Erstellen des Snapshots die Option "Gast-Dateisystem stilllegen" aktiviert (klar), die Option "Snapshot des Arbeitsspeichers der virtuellen Maschine erstellen" aber nicht aktiviert ist!

Wenn man kurz darüber nachdenkt, ist VMwares Gedankengang eigentlich klar: Wenn der Arbeitsspeicher schon mitgespeichert wird, dann ist der Snapshot der virtuellen Maschine automatisch in einem konsistenten Zustand, manuelle Aktionen sind nicht mehr notwendig. Mir hat das einige Nerven und Minuten gekostet, euch Lesern mit meinem Hinweis aber hoffentlich nicht.
Ach übrigens: Veeam macht beim Erstellen der Snapshots für die Backups natürlich alles richtig. Wenn die entsprechende Option aktiviert wird, dann wird das Dateisystem stillgelegt und damit auch die Skripte ausgeführt.

Kommentare