Virtuelle Maschinen auf einem (kostenlosen) ESXi sichern mit GhettoVCB


    Tags: ,

    GhettoVCBGerade in klei­neren Netz­werken mit nur weni­gen virtu­alisierten Servern lohnt sich die Anschaf­fung einer großen Backup-Lösung oft nicht. Eine Alter­native kann hier das kosten­lose Script GhettoVCB sein, das anders als die be­kannten Backup-Lösungen keine GUI bietet. Diese An­leitung zeigt, wie man das Tool konfiguriert.

    Das Problem beim Backup von VMs, die auf dem kosten­losen vSphere Hypervisor laufen, besteht darin, dass VMware bei dieser Free Edition das vStorage API for Data Protection kastriert hat. Daher funk­tioniert gängige Backup-Software dort nur stark einge­schränkt oder meist gar nicht. Daher lohnt sich dort ein Blick in Richtung GhettoVCB.

    Script editieren und konfigurieren

    Vorab sei dazu gesagt, dass GhettoVCB anders als die meisten Lösungen für die Daten­sicherung keine grafische Ober­fläche besitzt, sondern komplett Script-basiert ist. Davon sollte man sich aber nicht abschrecken lassen, da man die Backup-Jobs meistens nur einmal einstellt und diese dann eigentlich nicht mehr sehr oft ändert.

    In meiner Lab-Umgebung betreibe ich einen ESXi 6.5 auf einem HP Gen 8 Server. Über das Netzwerk ist ein Lenovo IX4-300d per NFS und iSCSI eingehängt.

    Das ZIP-Archiv für GhettoVCB enthält mehrere Dateien, das eigentliche Script ist ghettoVCB.sh

    Um die Datei ghettoVCB.sh nach dem Download bearbeiten zu können, lädt man diese einfach auf einen Datastore des Hypervisors hoch und editiert sie dann über SSH (zum Beispiel mit Putty) im vi-Editor. Wer allerdings mit vi nicht so schnell warm wird, der kann die Datei auch im Vorfeld auf seinem Windows-PC etwa mit Notepad++ anpassen.

    Das Script selbst ist im Editor gut verständlich, da der Autor darin zahlreiche Kommentare zur Erklärung hinterlegt hat.

    Backup-Ziel für GhettoVCB definieren

    Im ersten Schritt sollte man über den Parameter VM_BACKUP_VOLUME sein ein Backup-Ziel angeben. Dies kann zum Beispiel ein NAS mit NFS- oder iSCSI-Freigabe sein.

    Außerdem eignet sich dafür ein eigener Datastore auf dem ESXi-Hypervisor. Diese interne Lösung sollte normaler­weise aber nicht weiter verfolgt werden, da es grund­sätzlich angeraten ist, Backups auf ein externes Storage auszulagern.

    Herunterfahren von VMs vor dem Backup konfigurieren

    Weiterhin interessant sind die Schalter für das Herunter­fahren von virtuellen Maschinen. Vor der Sicherung von VMs wird nämlich empfohlen, diese auszuschalten, um ggf. störende Zugriffe durch den Hypervisor zu vermeiden. Allerdings ist mir bei der Sicherung im laufenden Betrieb bisher noch kein Fehler aufgefallen, etwa dass ein Backup inkonsistent gewesen wäre.

    Rotationcount legt fest, wie viele Versionen eines VM-Backups vorgehalten werden sollen.

    Ein weiterer wichtiger Punkt ist der Rotationcount. Hier wird festgelegt wie viele Sicherungen aufbewahrt werden sollen. Dieser Parameter richtet sich natürlich nach dem verfügbaren Speicherplatz auf dem Datastore, der die Backups aufnehmen soll.

    Wenn man sich über die Ergebnisse der Backups informieren lassen will, dann kann man hier den Versand von Mails konfigurieren.

    Damit nach dem Backup auch eine Rückmeldung zum Erfolg der Operation kommt, sieht das Script noch die Möglichkeit vor, sich einen Report per Mail schicken zu lassen.

    Hochladen des Scripts in den Datastore, etwa über den Dateispeicherbrowser des Host Client.

    Dies sind die grundlegenden Einstellungen, welche im Script angepasst werden sollten. Spätestens jetzt sollte es auf einen Datastore des Hypervisors hochgeladen werden.

    GhettoVCB manuell ausführen

    In einem ersten Schritt kann GhettoVCB nun mit Putty testen, um ein Gefühl für die Funktionen zu erhalten. Dazu navigieren Sie zum Verzeichnis, in dem das Script liegt. Alternativ kann es natürlich auch folgender­maßen über den absoluten Pfad gestartet werden:

    /vmfs/volumes/Datastore03/ghettoVCB/ghettoVCB.sh

    Dabei bekommen wir aber die Fehler­meldung Permission denied. Mit

    chmod 777 ghettoVCB.sh

    kann man sich die erforderlichen Rechte sehr einfach nachtragen.

    Recht zum Ausführen des Scripts per chmod setzen

    Zu erkennen ist nun, dass der ls-Befehl die Datei ghettoVCB.sh aufgrund der geänderten Berechtigungen grün statt weiß darstellt.

    Wenn man das Script nun erneut ausführt, so erhält man einen weiteren Fehler, da notwendige Parameter fehlen.

    Man könnte nun, wenn man wirklich einmal den ganzen Server abziehen will, den Parameter -a nehmen:

    ./ghettoVCB.sh -a

    Der folgende Screenshot gibt GhettoVCB die ver­schiedenen Möglich­keiten an, wie das Backup durchgeführt werden kann.

    Von GhettoVCB unterstützte Schalter

    Ich selbst möchte nicht alle virtuellen Maschinen sichern, da sich hie und da darunter auch Test­maschinen befinden, daher verwende ich den Parameter -m, um die Namen bestimmter VMs anzugeben.

    Zeitgesteuerte Sicherung per Cron

    Nun geht es noch darum, wie man das Ganze per Zeit­steuerung automa­tisieren kann. Man will das Backup ja nicht jeden Tag per Hand ausführen. Der ESXi-Server bietet die Möglichkeit, solche Aufgaben über einen Cron-Job abzuwickeln.

    Einen solchen definiert man in einer crontab-Datei. In unserem Beispiel öffne ich die Datei /var/spool/cron/crontabs/root mit dem vi-Editor.

    Zeitgesteuertes Backup über cron konfigurieren

    Die Abfolge dabei ist Minute Stunde Tag Monat Tag der Woche:

    0 2 * * 1-5 /vmfs/volumes/Datastore03/ghettoVCB/ghettoVCB.sh -a

    Das Script würde auf Basis dieser Konfiguration an jedem Werktag um 2 Uhr starten. Da dieser Eintrag nur bis zum nächsten Reboot des Servers Bestand hat, muss er zusätzlich in die Datei local.sh übernommen werden:

    vi /etc/rc.local.d/local.sh

    Dort fügt man folgende Zeile ein:

    /bin/echo "0 2 * * 1-5 /vmfs/volumes/Datastore03/ghettoVCB/ghettoVCB.sh -a" >> /var/spool/cron/crontabs/root

    cron-Job über local.sh in die crontab schreiben

    Möchte man auch hier nur bestimmte VMs sichern, dann ändert man den Aufruf von GhettoVCB unter Verwendung des Parameters -m.

    Alternative zu Cron-Job

    Es gibt aber noch einen anderen Weg für jene, die sich mit Cron und der Konfiguration eines solchen Jobs nicht abmühen möchte.

    Dieser kann in einer beliebigen virtuellen Maschine mit einer Batch-Datei realisiert werden. Das kann auch eine VM sein, welche sich dann selbst sichert, wobei es dann blöd wäre, wenn sie sich durch ein Herunter­fahren selbst behindert. Entsprechend sollte man dort darauf verzichten.

    Auf der VM, welche meinen Sicherungs-Job auslösen soll, brauche ich das Programm plink.exe, da dieses Utility über die zu erstellende Batchdatei die SSH-Verbindung zum Server herstellen muss. Es befindet sich in unserem Fall im Ordner c:\Service.

     

    Die Batch-Datei stellt also erstmal die SSH-Verbindung zum Server her. Mit der Datei commands.txt teile ich nun mit, was getan werden soll. Sie enthält folgende Befehle:

    /vmfs/volumes/Datastore03/ghettoVCB/ghettoVCB.sh -m MeineVM
    /vmfs/volumes/Datastore03/ghettoVCB/ghettoVCB.sh -m DC01 /vmfs/volumes/Datastore03/ghettoVCB/ghettoVCB.sh -m OWNCLOUD
    exit

    Nun bindet man die Batchdatei einfach als Aufgabe ein und führt sie jede Nacht aus. Das funktioniert soweit zuverlässig und auch der Restore klappt ohne Probleme.

    Virtuelle Maschine wiederherstellen

    Der Restore ist recht simpel. Je nachdem, um was für ein NAS-System es sich handelt, kann das Backup direkt vom Storage-System gestartet werden, um den Tagesbetrieb nicht zu lange zu stören.

    Virtuelle Maschine durch Zurückkopieren aus dem Backup-Ziel wiederherstellen.

    Da immer die komplette VM gesichert wird, geht man einfach in den jeweiligen tagesaktuellen Ordner, bindet die .vmx einfach neu ein und startet die VM dann wieder an. Die Alternative wäre, wenn die VM nicht dauerhaft auf dem NAS laufen soll, die Daten auf den zuständigen Datastore des ESXi-Servers zu verschieben.

    Tipp: Nach jeder Sicherung legt GhettoVCB noch eine STATUS.OK Datei ab. In ihr steht eigentlich nicht mehr als der Status des Backups drin, also in diesem Fall "Successfully completed backup".

    1 Kommentar

    Bild von Stefan Seligmann
    Stefan Seligmann sagt:
    5. September 2018 - 7:20

    Ich empfehle allen, die den esxi-free einsetzen, mal einen Blick auf xsibackup zu werfen: https://33hops.com/xsibackup-vmware-esxi-backup.html
    Zwar ebenfalls ohne GUI, jedoch sind differentielle Sicherungen möglich. Auch Deduplizierung ist mit etwas Aufwand machbar.