VMware Backup mit ghettoVCB

Leider entwickelt VMware die vSphereDataProtection nicht mehr weiter, so dass ich mich nach einer – möglichst kostenlosen – Alternative umsehen muss. Die kostenlosen Versionen von Veam Backup und dem Microfocus (ehemals Trilead) VM Explorer kommen aufgrund der Einschränkungen in den Free-Versionen nicht in Frage. Ich bin den Herstellern deswegen nicht böse, sie wollen und müssen ja auch ihr Geld verdienen. Ich will und muss allerdings kein Geld ausgeben, ich hoffe die Hersteller sind mir deswegen auch nicht böse.

So läuft die Backuplösung dann auf das allseits bekannte ghettoVCB hinaus, welches im Prinzip nur ein cleveres Shell-Script ist.

Die aktuelle Version von ghettoVCB lade ich direkt von github herunter: https://github.com/lamw/ghettoVCB

Per WinSCP kopiere ich die Datei in den lokalen Datastore des ESXi-Servers und entpacke sie dort in das Verzeichnis ghettoVCB-master. Das Verzeichnis sieht danach so aus:

root@vmserver120:/vmfs/volumes/53133109-04e515fc-007b-001b21af416f/ghettoVCB-master] ls -lah
total 5136drwxrwxrwx 1 root root 1.4K Jun 19 09:27 .
drwxr-xr-t 1 root root 1.5K Jun 19 09:27 ..
-rw-r--r-- 1 root root 2.2K Jun 19 09:27 README.md
-rwxr-xr-x 1 root root 17.1K Jun 19 09:27 ghettoVCB-restore.sh
-rw-r--r-- 1 root root 309 Jun 19 09:27 ghettoVCB-restore_vm_restore_configuration_template
-rw-r--r-- 1 root root 356 Jun 19 09:27 ghettoVCB-vm_backup_configuration_template
-rw-r--r-- 1 root root 759 Jun 19 09:27 ghettoVCB.conf
-rwxr-xr-x 1 root root 69.7K Jun 19 09:27 ghettoVCB.sh
-rw-r--r-- 1 root root 23.0K Jun 19 09:27 vghetto-ghettoVCB-offline-bundle.zip
-rw-r--r-- 1 root root 20.6K Jun 19 09:27 vghetto-ghettoVCB.vib

Die Konfiguration erfolgt über die Datei ghettoVCB.conf. Die Datei ist eigentlich selbst erklärend, ich konfiguriere lediglich den Speicherort für die Backups (in meinem Fall ein per iSCSI angebundenes open-e Storage) und die EMail-Einstellungen. Die Zeilen für die NFS-Einstellungen lösche ich raus, da ich wie gesagt iSCSI verwende.

Die ghettoVCB.conf sieht dann so aus:

VM_BACKUP_VOLUME=/vmfs/volumes/5885e75d-bd1d24d4-dc27-001b21af416f/backups
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=3
POWER_VM_DOWN_BEFORE_BACKUP=0
ENABLE_HARD_POWER_OFF=0
ITER_TO_WAIT_SHUTDOWN=3
POWER_DOWN_TIMEOUT=5
ENABLE_COMPRESSION=0
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0
SNAPSHOT_TIMEOUT=15
EMAIL_ALERT=0
EMAIL_LOG=1
EMAIL_SERVER=10.6.82.106
EMAIL_SERVER_PORT=25
EMAIL_DELAY_INTERVAL=1
EMAIL_TO=webseite@gluecksgriff-taschen.de
EMAIL_ERRORS_TO=
EMAIL_FROM=ghettoVCB@gluecksgriff-taschen.de
WORKDIR_DEBUG=0
VM_SHUTDOWN_ORDER=
VM_STARTUP_ORDER=

Mehr zu konfigurieren ist da nicht, aber wie mache ich denn nun überhaupt ein Backup? Klar, per Cronjob. Wer jetzt aber flott einen entsprechenden Job anlegt, wird zu seinem Erstaunen feststellen, dass dieser Eintrag einen Neustart des ESXi-Hosts leider nicht überlebt. Der Weg meinen Backup-Cronjob persistent zu machen, führt über die Datei local.sh, welche bei jedem Neustart ausgeführt wird. Aber der Reihe nach:

Ich editiere die Datei /etc/rc.local.d/local.sh

### ghettoVCB Cronjob
/bin/kill $(cat /var/run/crond.pid)
/bin/echo "10 9 * * * /vmfs/volumes/datastore1/ghettoVCB-master/ghettoVCB.sh -a -g /vmfs/volumes/datastore1/ghettoVCB-master/ghettoVCB.conf > /dev/null" >> /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond
exit 0

Nun wird bei jedem Neustart zunächst der laufende Cron-Daemon beendet, dann unser Backup-Job eingetragen und danach der Cron-Daemon wieder gestartet. Keine Panik, sieht deutlich komplizierter aus als es ist.

Nach einem Neustart des ESXi-Hosts sollten nun jeden Tag um kurz nach 9 ein Backup aller sich auf dem ESXi-Host befindlichen VMs laufen. Wer nicht alle Maschinen jeden Tag sichern möchte, kann das auch tun. Einfach mal die ghettoVCB.sh ohne Argumente aufrufen, dann erhält man eine gute Hilfe für alle möglichen Parameter inklusive Beispielen.

Falls der Email-Versand von ghettoVCB nicht funktioniert, liegt es wahrscheinlich an der Firewall vom ESXi. Hier könnt ihr lesen wie ihr Port 25 dauerhaft freigebt.