(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=Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
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

 

© 2025 ziggymania.de Designed S.Wommer