ghettoVCB unter ESXi 6 mit Mailinfo und Tagesdatei der zu sichernden VMs

Quellen / Projektseite

Projektseite: http://communities.vmware.com/groups/ghettovcb
GitHub: https://github.com/lamw/ghettoVCB

Installation / Konfiguration

Ich kopiere die notwendigen Dateien mittels dem vSphere Client auf einen Datastore.
Das hat den Vorteil, daß ich die „Sicherungs-Job-Dateien“ mittels dem vShere Client runter-/raufladen kann, und somit ssh wieder deaktivieren kann.
Bei mir sieht der Inhalt dann so aus:
2015-12-04 13_07_03
2015-12-04 13_23_35

Anpassen der ghettoVCB.conf (hier Beispielhaft meine Konfiguration)

VM_BACKUP_VOLUME=/vmfs/volumes/nas01esx
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
ENABLE_NON_PERSISTENT_NFS=1
UNMOUNT_NFS=1
NFS_SERVER=10.31.1.111
NFS_VERSION=nfs
NFS_MOUNT=/lv1/esx
NFS_LOCAL_NAME=nas01esx
NFS_VM_BACKUP_DIR=esx01
SNAPSHOT_TIMEOUT=15
EMAIL_LOG=1
EMAIL_SERVER=smtp.mhdom.eval
EMAIL_SERVER_PORT=25
EMAIL_DELAY_INTERVAL=1
EMAIL_TO=mh@mhdom.eval
EMAIL_FROM=esx01@mhdom.eval
WORKDIR_DEBUG=0
VM_SHUTDOWN_ORDER=
VM_STARTUP_ORDER=

backup.sh

Die Datei backup.sh ist die Startdatei für die Backups. Dieses Script ermittelt den aktuellen Wochentag und verwendet diesen als Job-Datei für gettoVCB.
Zudem wird in diesem Script geprüft, ob in der Firewall bereits eine Ausnahme für ausgehende Emails vorhanden ist.
Falls nicht, wird dies der Firewall hinzugefügt.

mail.xml

Konfigurationsdatei für die Firewall

monday,tuesday,wednesday,…

Eine Textdatei, in der die zu sichernden Virtuellen Maschinen eingetragen werden.

vm01-windows7
vm02-windows8

Einrichten des cron-jobs

Einträge in /var/spool/cron/crontabs/root sind nach jedem Neustart des ESX-Servers wieder weg.
Aus diesem Grund nutze ich die /etc/rc.local.d/local.sh um die Einträge nach jedem Neustart hinzuzufügen.
Vielleicht nicht gerade der schönste Weg, aber es funktioniert.

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.
 
/bin/kill $(cat /var/run/crond.pid)
/bin/echo "45   23   *   *   *   /vmfs/volumes/ESX01-OS/ghettoVCB/backup.sh > /dev/null" >> /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond
 
exit 0

Restore

Die Wiederherstellung ist genauso wichtig wie das eigentliche Backup. Daher empfehle ich jedem, das auf seinem System auch mal zu testen.
Eine Wiederherstellung mittels dem VMware Converter Standalone ist nicht möglich. Es muss zwingend das enthaltene Script ghettoVCB-restore.sh verwendet werden.

Hier die Schritte für eine erfolgreiche Wiederherstellung

1.) Sicherungslaufwerk verbinden
Im Gegensatz zum Backup muss das Laufwerk hier manuell verbunden werden. Am einfachsten geht das über den vSphere Client
2015-12-04 18_39_41
2015-12-04 16_58_17
2015-12-04 16_58_59
2015-12-04 16_59_06
Anmerkung: Nach erfolgreichem Wiederherstellen nicht vergessen, daß Sicherungslaufwerk auch wieder zu entfernen
2015-12-04 18_38_55

2.) Script ‚restore-example‘ anpassen / umbenennen

#"<DIRECTORY or .TGZ>;<DATASTORE_TO_RESTORE_TO>;<DISK_FORMAT_TO_RESTORE>;<OPTIONAL_RESTORED_VM_DISPLAY_NAME>"
# DISK_FORMATS
# 1 = zeroedthick
# 2 = 2gbsparse
# 3 = thin
# 4 = eagerzeroedthick
# e.g.
"/vmfs/volumes/nas01/esx01/win7test1/win7test1-2015-12-04_12-32-49;/vmfs/volumes/ESX01-DATA;1;win7test1"

3.) Wiederherstellung starten und warten
[root@esx01:/vmfs/volumes/565eebd5-f8ab1bfd-2a12-001e674f4c4a/ghettoVCB] ./ghettoVCB-restore.sh -c restore

################## Restoring VM: win7test1  #####################
Start time: Fri Dec  4 16:12:15 UTC 2015
Restoring VM from: "/vmfs/volumes/nas01/esx01/win7test1/win7test1-2015-12-04_12-32-49"
Restoring VM to Datastore: "/vmfs/volumes/ESX01-DATA" using Disk Format: "zeroedthick"
Creating VM directory: "/vmfs/volumes/ESX01-DATA/win7test1" ...
Copying "win7test1.vmx" file ...
Restoring VM's VMDK(s) ...
Updating VMDK entry in "win7test1.vmx" file ...
Option --adaptertype is deprecated and hence will be ignored
Destination disk format: VMFS zeroedthick
Cloning disk '/vmfs/volumes/nas01/esx01/win7test1/win7test1-2015-12-04_12-32-49/win7test1.vmdk'...
Clone: 100% done.
Registering win7test1 ...
2
End time: Fri Dec  4 16:38:49 UTC 2015
################## Completed restore for win7test1! #####################
 
 
Start time: Fri Dec  4 16:12:14 UTC 2015
End   time: Fri Dec  4 16:38:49 UTC 2015
Duration  : 26.58 Minutes
 
 
---------------------------------------------------------------------------------------------------------------