Backup von virtuellen Maschinen

Das Backup von virtuellen Maschinen in einer XenServer Umgebung scheint ein Thema zu sein, bei dem es noch viel zu diskutieren gibt. Deshalb möchte ich mich diesem Thema mit diesem Beitrag mal annehmen. Zuerst mal erscheint es in Zeiten von Provisioning Services relativ sinnlos ein Backup der virtuellen Maschinen zu machen. Bewegungsdaten sollten ohnehin in einem anderen Backupkonzept erfasst werden und die reine OS Installation sollte sich jederzeit über z.B. Templates oder eben Citrix Provisioning Services wieder herstellen lassen.

Doch für einige bestimmte virtuelle Maschinen kann es durchaus Sinn machen, diese zu sichern um in einem Disaster Fall schnell wieder produktiv zu sein. Citrix liefert mit dem XenServer bereits eine „kleine“ Lösung für ein Backup mit. Auf der einen Seite gibt es die Export Funktion, die eine virtuelle Maschine im „ausgeschalteten“ Zustand in eine .xva Datei exportieren kann und auf der anderen Seite existiert die Snapshot Funktion mit der auch laufende VM’s gesichert werden können. Beide Funktionen haben ihre Vor- und auch Nachteile, gemeinsam haben sie jedoch dass für beide immer der manuelle Eingriff eines Administrators, über das XenCenter oder das CLI, erforderlich ist. Wäre doch schön, wenn das auch automatisiert gehen würde.

xenserver:vmbackup001.png

Backup von virtuellen Maschinen ist zwar schön, aber auch nur die eine Seite der Medaille. Wir müssen natürlich bei allen unseren Überlegungen auch den Restore betrachten. Was nutzt das schönste und schnellste Backup, wenn sich die virtuelle Maschinen nicht wieder herstellen lassen. Bei einer exportierten virtuelle Maschine ist der Import problemlos möglich, bei einem Snapshot stoßen wir doch auf ein paar Probleme. So lassen sich Snapshots zum Beispiel nur als Template exportieren, was das wiederherstellen etwas erschwert da ja Metadaten wie z.B. der Hostname oder auch die MAC-Adresse in dem Template fehlen.

xenserver:vmbackup002.png

Ein weiterer Stolperstein, der jetzt nicht XenServer spezifisch ist aber dennoch betrachtet werden muss, ist der Speicherplatz für die Backups. Das XenCenter exportiert in der Regel in das Filesystem der Workstation auf der das XenCenter ausgeführt wird, das CLI macht das Backup standardmäßig sogar in das Filesystem der Domäne 0, was zu massiven Problemen führt. Snapshots aus dem XenCenter werden im konfigurierten Storage des XenServers abgelegt und belegen dort Platz, der nicht immer gleich sichtbar wird. Hier müssen wir im Vorfeld entsprechende Storagekapazitäten zur Verfügung stellen und diese vor einem Backup einbinden. Abschließend benötigen wir natürlich auch noch ein Backupkonzept, also wie oft müssen die virtuellen Maschinen gesichert werden und wie lange müssen Backups erhalten bleiben bevor sie überschrieben bzw. gelöscht werden können.

Dieser Artikel wäre relativ wertlos, wenn es nicht auch eine Lösung für diese Stolpersteine geben würde. Mittlerweile gibt es einige kommerzielle Produkte die das Backup von VM’s in virtuellen Umgebungen anbieten. Eine kleine Auswahl an Links zu diesen Tools ist am Endes dieses Beitrags zu finden. An dieser Stelle widmen wir uns mal den Möglichkeiten die uns die Bordmittel des XenServers bieten. Wenn ich mir die beiden enthaltenen Backupmöglichkeiten des XenServers anschaue, fällt mir als Lösung sofort Scripting ein. Bevor allerdings jetzt jeder Anfängt in seinen Texteditor kryptische Kommandos zu schreiben, fasse ich noch mal die Anforderungen und die möglichen Lösungswege zusammen.

  1. Automatisierte Backups
    • Das können wir schon damit erreichen, dass wir die Bordmittel von Windows (Taskplaner) bzw. Linux (cron) für unser Skript nutzen.
  2. Backups im laufenden Betrieb
    • Für unkritische Systeme, die auch offline gesichert werden können, geht es sicher auch mit der Export-Funktion. Hier wollen wir nach Möglichkeit aber im laufenden Betrieb sichern. Also ist die Funktion die wir benötigen wollen ein Snapshot.
  3. Backups auf externen Storage
    • Um uns keine Sorgen über den Speicherplatz zu machen, verwenden wir gleich ein externes Storage mit ausreichend Platz für die Backups.
  4. Aufräumen
    • Nach einem Backup muss natürlich auch noch ein wenig aufgeräumt werden, also Snapshotplatz wieder freigeben oder alte Backups löschen.

Da auch ich das Rad nicht neu erfinden will, stelle ich hier zwei Lösungen vor die schon von schlauen Köpfen entwickelt wurden. Die erste Lösung ist ein VBS Skript, dass ich im Citrix XenServer Forum gefunden habe. Jeff Riechers stellt dort ein Backup VB Skript vor, dass über ein installiertes XenCenter unter Nutzung von xe.exe Backups durchführt. Die aktuelle Version unterstützt jetzt auch Logging und 64-bit Systeme und kann direkt im Thread heruntergeladen werden. Das Skript ist prinzipiell eine sehr einfache aber effektive Lösung. Die Automatisierung kann über den Taskplaner von Windows erreicht werden und Backups im laufenden Betrieb werden über die API Funktionen vm-snapshot und template-export durchgeführt. Das erzeugte Template kann über eine Variable im Kopf des Skriptes auch auf ein verbundenes Windows Share geschrieben werden.

Was bei diesem Skript leider fehlt ist das aufräumen, hier müsste zumindest für den XenServer 5.5 noch zusätzlich zur vorhandenen template-uninstall Funktion der vom Snapshot belegte Platz mit der Funktion coalesce-leaf wieder freigegeben werden. Die kommenden Version 5.6 „Midnight Run“ des XenServers bietet ein paar neue Funktionen im Bereich Snapshots, die man sich nach dem Erscheinen mal genauer anschauen sollte.

Das zweite Skript kommt von Andy Burton und geht einen etwas anderen Weg. Die Funktionen sind zwar ähnlich, doch setzt dieses Skript auf die bash und wird direkt auf dem XenServer ausgeführt. Das Skript wird über einen cron Job automatisiert und macht über die Funktionen vm-snapshot und template-export ein Backup. Allerdings versucht das Skript zuerst einen „quiesce“ Snapshot zu erstellen, erst wenn dieser nicht möglich ist wird ein „normaler“ Snapshot erzeugt. Zusätzlich setzt das Skript auch den Parameter template-param-set is-a-template=false, was aus dem ursprünglichen Template einen „normalen“ xva File macht. Auch hier fehlt aktuell noch die Funktion coalesce-leaf um den Platz der durch die Snapshots belegt wurde wieder freizugegeben. In den Kommentaren auf der Website von Andy finden sich aber jede Menge Ergänzungen z.B. für rollierende Backups. Ich selbst habe auch eine Ergänzung geschrieben, die feststellt ob ein Backupshare bereits verbunden ist und falls nicht es ggfl. erneut verbindet.

Bei der Recherche für diesen Artikel bin ich noch auf viele weitere Skripte in unterschiedlichen Skriptsprachen gestoßen. Alle folgen aber den beiden vorgestellten Ansätzen. Deshalb verzichte ich hier darauf alle diese Lösungen vorzustellen. Für alle die sich nicht unbedingt mit dem Skripten beschäftigen möchten, können natürlich auch auf kommerzielle Lösungen zurückgreifen. Wenn man nach diesen Lösungen sucht, findet man in der Regel sehr schnell die Software Alike von QuorumSoft. Allerding ist Alike mit US$ 1200 keine billige Lösung. Für einen ersten Test steht eine kostenlose Variante zur Verfügung. Diese unterstützt max. einen XenServer sichert und dabei maximal drei Jobs und behält max. drei Versionen der Backups.

xenserver:vmbackup005.png

xenserver/vmbackup.txt · Zuletzt geändert: 08.02.2011 - 11:27 von Thomas Krampe
Sie befinden sich hier: Willkommen im Xenmaster WikiCitrix XenServerBackup von virtuellen Maschinen