Backup virtueller Maschinen mit ghettoVCB auf vSphere

4.7
(3)

Backup virtueller Maschinen mit ghettoVCB auf VMware vSphere ESXi

ghettoVCB von William Lam (@lamw) ist eine freie Alternative zur Sicherung virtueller Maschinen. Das Skript „ghettoVCB“ erstellt Snapshots virtueller Maschinen als Backup auf vSphere ESXi 4.x/5.x/6.x – 7.x/8.x mithilfe einer Methode ähnlich wie des VMware VCB-Tool.

Es werden Snapshots virtueller Maschinen im laufenden Betrieb erstellt und sichert diese danach auf einem NAS, nach Fertigstellung werden die Snapshots wieder gelöscht bis zur nächsten Sicherung. Der einzige unterschied zu VMware VCB ist, dass der Prozess auf dem ESXi-Host selbst ausgeführt wird, dabei nur wenige Ressourcen benötigt werden. Die Backups werden über die Service-Konsole (Busybox Console) des vSphere ESXi Hypervisor gefahren, im Gegensatz zu der traditionellen Methode, bei dieser für die Backups eine virtuelle Maschine als VCB-Proxy gnutzt wird.

Installation von ghettoVCB

Im ersten Schritt wird ESXi-Shell und TSM-SSH aktiviert, dies geschieht über die ESXi direkt Console oder aus dem vSphere Client.

ESXi-Shell und TSM-SSH aktivieren

ghettoVCB.sh auf ESXi-Host hochladen

ghettoVCB.sh von herunterladen, über das Symbol rechts „Download raw file“.

Nach dem download von ghettoVCB.sh die Datei mit WinSCP oder aus dem vSphere Client auf den ESXi-Host in ein Verzeichnis hochladen, hier ist es der Pfad/vmfs/volumes/datastore1/ghettoVCB/

NFS Datenspeicher Freigabe

Als Backup Speicher wird eine Synology NAS genutzt, es kann eine RackStation oder DiskStation sein, dabei wird der NFS Datenspeicher gemountet dieser auf dem NAS als NFS Freigabe bereitgestellt wurde.

DSM NFS Berechtigungen

Der NFS Export des NAS wird aus dem vSphere oder vCenter gemountet, hierzu geht man auf: Konfiguration – Speicher – Speicher hinzufügen.

Der NFS Speicher des NAS wird eingebunden.

Im Feld Server wird die IP Adresse des NAS eingetragen, im Feld Ordner der absolute Pfad der NFS Freigabe, bei der Synology RackStation ist dies in der regel /volume1 gefolgt vom Name der Freigabe. Als Datenspeichername wird der Name des NAS eingetragen. Dieser Name muss im Shell Script ghettoVCB.sh oder in der Konfigurationsdatei, ghettoVCB.conf bei VM_BACKUP_VOLUME identisch sein.

vSphere NFS Datenspeicher

Der NFS Speicher wird gemountet.

vSphere Web Client NFS Datenspeicher Freigabe

Ab ESXi 6 wird der vSphere Web Client genutzt, im Navigator geht man zu Speicher und Neuer Datenspeicher.

Der Datenspeicher Assistent wird geöffnet.

NFS-Datenspeicher mounten wählen.

Auf weiter gehen und im letzten Fenster den Assistenten beenden.

Das NAS wird als NFS Datenspeicher gemountet und steht jetzt bereit.

Jetzt noch das Shell Script ghettoVCB.sh ausführbar machen.

$ chmod +x /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh

Backup Cron Task erstellen

Nun den crontask anhalten mit folgendem Befehl.

$ /bin/kill $(cat /var/run/crond.pid)

Eine Datei anlegen mit den VMs die gesichert werden sollen.
vi /vmfs/volumes/datastore1/ghettoVCB/VMs.inc

DEBIAN
UBUNTU
FPBX16

Optional kann eine VM Konfigurationsdatei, zB. DEBIAN angelegt werden wo die Backup Rotation definiert wird, dies ermöglicht eine unterschiedliche Backup Rotation. Wird keine Konfigurationsdatei angelegt, gelten die Standard Werte in ghettoVCB.sh oder von ghettoVCB.conf.

vi /vmfs/volumes/datastore1/ghettoVCB/DEBIAN

VM_BACKUP_VOLUME=/vmfs/volumes/NAS
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=5
POWER_VM_DOWN_BEFORE_BACKUP=0
ENABLE_HARD_POWER_OFF=0
ITER_TO_WAIT_SHUTDOWN=4
POWER_DOWN_TIMEOUT=5
SNAPSHOT_TIMEOUT=15
ENABLE_COMPRESSION=0
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
VMDK_FILES_TO_BACKUP="all"

crontab auf dem ESXi-Host beschreibbar machen und den Backup virtueller Maschinen um 22:01 Täglich starten.

$ chmod +w /var/spool/cron/crontabs/root

vi /var/spool/cron/crontabs/root

/bin/echo "01   22   *   *   * /bin/sh /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/ghettoVCB/VMs.inc > /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-$(date +\%s).log" >> /var/spool/cron/crontabs/root

crontab wieder starten

$ crond

  crond starten bei ESXi5.0

$ /bin/busybox crond

Wir Testen ob das Script tut was es soll mit der Option -d dryrun.

$ cd /vmfs/volumes/datastore1/ghettoVCB/
./ghettoVCB.sh -f VMs.inc -d dryrun

Persistenter Cronjob

cronjob persistent machen, damit nach dem nächsten Reboot wieder alles läuft.

$ chmod +w /etc/rc.local.d/local.sh

Die Datei rc.local editieren, vi /etc/rc.local.d/local.sh

#!/bin/sh

# local configuration options

# Note: modify at your own risk!  If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading.  Changes are not supported unless under direction of
# VMware support.

# Note: This script will not be run when UEFI secure boot is enabled.

/bin/kill $(cat /var/run/crond.pid)
chmod +w /var/spool/cron/crontabs/root
/bin/echo "01   22   *   *  * /bin/sh /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/ghettoVCB/VMs.inc > /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-vm.log" >> /var/spool/cron/crontabs/root
crond

exit 0

Die Sicherung der in VMs.inc hinzugefügten virtuellen Maschinen wird nun zur definierten Zeit starten. Es gilt nicht die Zeit die in der ESXi-Shell Konsole, sondern die Zeit die im vSphere Client unter Host Systeminformation angezeigt wird.

  VMware ESXi unterstützt die timezone Funktion nicht, es gilt immer die UTC Zeit. Beispiel bei mitteleuropäischer Standard-Zeit, CEST ist UTC + 2h.

Troubleshooting

Wird ein ERROR protokolliert, liegt es oft daran das vor der ersten Snapshot Sicherung keine Konsolidierung gemacht wurde.

info: ERROR: error in backing up of "/vmfs/volumes/datastore1/guestvm/guestvm.vmdk"

info: ERROR: Unable to backup guestvm due to error in VMDK backup!

info: ###### Final status: ERROR: No VMs backed up! ######

Snapshot Konsolidieren aus dem vSphere oder vCenter, dies vor der ersten ghettoVCB Sicherung ausführen.

Snapshot Konsolidieren

TIP!

Zur Wiederherstellung von Dateien oder Verzeichnisse aus virtuellen Festplatten, aus VMDK Snapshots, kann 7-Zip nützlich sein, das vorgehen wird hier beschrieben.

Fazit

Dieses Tutorial zeigt die Bereitstellung und Anwendung von ghettoVCB für Backup virtueller Maschinen auf vSphere ESXi. Es werden Snapshots virtueller Maschinen im laufenden Betrieb erstellt und danach auf ein NAS gesichert. Die gezeigte Methode wendet bewusst nicht die VIB offline bundle Installation an, bei dieser der Ransomware Schutz von ESXi 8.0 – „execInstalledOnly“ aufgehoben werden muss.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.7 / 5. Anzahl Bewertungen: 3

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Ein Gedanke zu „Backup virtueller Maschinen mit ghettoVCB auf vSphere“

  1. Hallo ist so ok und läuft
    exsi 6,0

    ABER NUR 17 TAGE WIRT GESICHERT:
    Dann Ausgabe Fehlerdatei
    Nach Neustart Exsi wieder neuer 17 Tage????

    Ursache wer weis was

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert