(Automatisiertes) Backup von ESX(i)-Gast-Maschinen
Voraussetzungen:
SSH-Zugriff auf entsprechenden ESX(i)-Host (zuvor über GUI oder per Konfig in /etc/inetd.conf einschalten: (hier über Konsolenzugriff)
Auf ESX(i) Konsole ALT+F1 betätigen
blind“ das Wort: unsupported eingeben ENTER
root Zugriff auf der Konsole (#)sollte sichtbar sein
Befehl zum Editieren der Konf-Datei: vi /etc/inetd.conf
Eintrag „#“ #ssh …. aus der Zeile entfernen (Tastatur: x: löschen)
ESC-Taste Abspeichern mit „:wq!“
Reboot durchführen oder per ps | grep inetd die ProzessID herausfinden und entsprechend mit:
kill –HUP [PozessID] den Prozess beenden.
ghettoVCB-Script herunterladen (Download)
Installation:
Nach dem Download des Scripts muss die Datei mittels WinSCP oder ähnlichen Tools auf den ESX(i)-Host kopiert werden
per SSH auf ESX(i) verbinden (z.B. PuTTY)
tar entpacken:tar –zxvf lamw-ghettoVCB-da419ae.tar.gz
Template-Datei, Config datei oder/und direkt das script (.sh)
ghettoVCB-vm_backup_configuration_template konfigurieren
ghettoVCB-vm_backup_configuration_template:
M_BACKUP_VOLUME=/vmfs/volumes/LUN1/BACKUP
DISK_BACKUP_FORMAT=zeroedthick
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
ADAPTER_FORMAT=buslogig
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
VMDK_FILES_TO_BACKUP=“all“
ENABLE_NON_PERSISTENT_NFS=0
UNMOUNT_NFS=0
NFS_SERVER=10.11.12.13
NFS_MOUNT=/nfsshare
NFS_LOCAL_NAME=nfs_storage_backup
NFS_VM_BACKUP_DIR=mybackups
SNAPSHOT_TIMEOUT=15
EMAIL_LOG=1
EMAIL_DEBUG=0
EMAIL_SERVER=10.11.12.13
EMAIL_SERVER_PORT=25
EMAIL_TO=
EMAIL_FROM=root@ghettoVCB
E-Mail-Übermittlung funktioniert erst ab Version ESX(i) 4.0 ! (ESXi 3.5 nicht unterstützt)
Datei mit Liste der entsprechenden zu sichernden VM’s erstellen (vcbbackuplist)
Beispielhafter Inhalt der Liste:
VMSERVER01
VMSERVER02
Eine Liste der laufenden VM’s mit zugehörigen VM Id’s kann man mit folgendem Kommando auf der Konsole abrufen:
vim-cmd smsvc/getallvms
Nutzung des Scripts (BACKUP):
./ghettoVCB.sh -f vcbbackuplist -g /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.conf
Script sollte loslaufen und ein Snapshot sollte nun erstellt werden (VSphere Client à Statusfenster); Log-Datei wird mit Datumsstempel im gleichen Ordner erstellt.
Gepl. Task / cronjob erstellen:
Datei /var/spool/cron/crontabs/root öffnen
und folgendes hinzufügen: (für Backup: 1-5 Montag –Freitag / um 23.00 Uhr) 0 23 * * 1-5 /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/LUN1/scripts/ghettoVCB/vcbbackuplist > /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB-backup-$(date +\%s).log
(alles eine Zeile im Script !!!)
Crond muss nach den Änderungen neu gestartet werden:
ESXi 3.5u3+: kill $(pidof crond) crond
ESXi 4.0+: kill $(cat /var/run/crond.pid) busybox crond
Diese Einträge sind nach einem Reboot des Servers nicht mehr vorhanden, d.h. man muss diese statisch ins System integrieren.
dazu die Datei /etc/rc.local (wird bei jedem Bootvorgang abgearbeitet) editieren:/bin/kill $(pidof crond) /bin/echo "0 0 * * 1-5 /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.sh -f /vmfs/volume/LUN1/scripts/ghettoVCB/vcbbackuplist > /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.log" >> /var/spool/cron/crontabs/root /bin/busybox crond
Einträge ans Ende der Datei anfügen (ESXI 4.x): /bin/kill $(cat /var/run/crond.pid) /bin/echo "0 0 * * 1-5 /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/LUN1/scripts/ghettoVCB/vcbbackuplist > /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.log" >> /var/spool/cron/crontabs/root /bin/busybox crond
rc.local:
#! /bin/ash
export PATH=/sbin:/bin
log() {
echo "$1"
logger init "$1"
}
#execute all service registered in /etc/rc.local.d
if [ -d /etc/rc.local.d ]; then
for filename in `find /etc/rc.local.d/ | sort`
do
if [ -f $filename ] && [ -x $filename ]; then
log "running $filename"
$filename
fi
done
fi
/bin/kill $(cat /var/run/crond.pid)
/bin/echo "0 0 * * 1-5 /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/LUN1/scripts/ghettoVCB/vcbbackuplist > /vmfs/volumes/LUN1/scripts/ghettoVCB/ghettoVCB.log" >> /var/spool/cron/crontabs/root
/bin/busybox crond
auto-backup.sh starten
Zum Testen der Konfiguration und des Scriptes bietet sich ein „Testlauf“ (Testrun ohne Backup-Ausführung) an: Parameter –d dryrun (alle Parameter werden abgearbeitet)
./vcbghetto.sh –f vcbbackuplist –d dryrun
ESX(i) sollte einmal durchgestartet werden.
Recovery:
Entsprechende .vmdk-Datei mit der .vmx-Datei in Datastore zurück kopieren und per Rechtsklick im vSphere-Client (Speicherbrowser) auf die VMX-Datei „Zur Bestandsliste hinzufügen“ wieder ins Inventory des ESX(i) bzw. des vCenter-Servers hinzufügen.
Bestehende Prozesse abfragen und beenden:
nach vorhandenem Prozess suchen:
ps -c | grep ghettoVCB | grep -v grep
185545352 185545352 sh /bin/sh -c /vmfs/volumes/datastore1/scripts/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/scripts/ghettoVCB/vcbbackuplist > /vmfs/volumes/datastore1/scripts/ghettoVCB/ghettoVCB.log
Prozess beenden über ID:kill -9 185545352
Event. Copy-Prozesse anzeigen und gegebenenfalls beenden:
ps -c | grep vmkfstools | grep -v grep
185588539 185588539 vmkfstools /sbin/vmkfstools -i /vmfs/volumes/<volume_name>/<vm_name>/<vm_name.vmdk> -a lsilogic -d thin /vmfs/volumes/nfsbackup/<vm_name>/<vm_date>/<vm_name>.vmdk