Backup von virtuelle Maschinen – VMware 1.0.4 und Veritas Backup Exec 11d

Gestern, als ich ein paar neue Backup-Jobs mit Hilfe von IOK für unsere neue EVA einrichtete, kam ich an einen Punkt, wo ich unsere virtuellen-Maschinen sichern musste.

Frage: „Wie mache ich das, wenn die VM’s noch laufen? Geht das überhaupt?!“
Antwort: „Nein, das geht nicht!“
Denn: Die Backups wären nicht brauchbar und der VMWare-Server würde wahrscheinlich abstürzen. Dazu kommen noch inkonsistente Daten, da auf einer der zu sichernden VM’s ein SQL-Server läuft…
Lösung: Die virtuellen Maschinen müssen angehalten (suspended) werden und anschließend gesichert werden!
Aber wie macht man das?

Wir benutzen die leistungsfähige Software Symantec / Veritas Backup Exec 11d. In einem Backup-Job ist es dort möglich ein Skript vor dem Sichern und nach dem Sichern auszuführen. Das klingt doch schon mal gut!
Also wäre es doch denkbar, wenn man die virtuellen Maschinen vorher einmal anhalten, dann sichern und anschließend wieder starten könnte.
Stellt sich nur die Frage, wie kann man die VM’s per batch automatisiert anhalten?

VMware stellt dafür eine Batch-Datei zur Verfügung. Diese findet man im Installationsverzeichnis des VMWare Servers und heißt vmware-cmd.bat. Diese Datei kann man mit Parametern aufrufen. Den Parameter den ich benötige heißt „suspend“ (anhalten). Weitere Parameter findet ihr hier: http://www.vmware.com/support/esx2/doc/vmware-cmd.html

Schön und gut, jetzt ist nur noch ein Problem zu lösen:
Der VMWare-Server ist nicht gleichzeitig der Backup-Server. Bedeutet also, dass ich die VM’s remote vom Backup-Server anhalten und wieder starten müsste. Dieses Problem kann man durch das nette und mir vorher unbekannte Tool PsExec lösen. Das Tool kann Programme auf Remotesystemen ausführen und ist somit perfekt für mein Backupvorhaben.

Dazu ein Skript gebastelt:

@ECHO OFF 
REM **** Lokale Pfade setzen **** 
C: 
CD Jobs 
REM **** Remotescript via PSEXEC ausfuehren **** 
PSEXEC SERVERNAME -d "D:VMwareVMware Servervmware-cmd.bat" 
 E:VirtualMachinesAktivvmserverSystemvmserver.vmx suspend

Nach längerem Probieren scheiterte das Ganze leider an irgendwelchen ausführenden Rechteproblem. Die Backup-Software konnte mit Hilfe des Skriptes leider die VM’s nicht anhalten. Führt man das Skript allerdings alleine aus, funktioniert es super… PsExec scheint dennoch sehr hilfreich für lustige Dinge zu sein :-)… mehr dazu morgen!

Tja, was für eine Lösung gibt es jetzt?
Durch Zufall fanden wir in den Einstellungen des Backup-jobs ein Select-feld, wo man auswählen konnte, ob man die Skripte auf dem zu sichernden System oder auf dem Backup-Server ausführen will.

Job Übersicht 

Super, dann testen wir mal, ob wir die Batches auf dem VMWare-Server ausführen können.

Schnell das Skript ein wenig umgebastelt (einfach eine Batch, die die VMware-Batch aufruft):

(virtuelle Maschinen anhalten):

@ECHO OFF 
REM **** Lokale Pfade setzen **** 
C: 
CD Jobs 
REM **** Virtuelle Maschinen reaktivieren ****  
 
CALL "D:VMwareVMware Servervmware-cmd.bat" 
 E:VirtualMachinesAktivSERVERSystemserver.vmx suspend 
CALL "D:VMwareVMware Servervmware-cmd.bat" 
 F:VirtualMachinesAktivSERVERserver.vmx suspend

(viruelle Maschinen starten):

@ECHO OFF 
REM **** Lokale Pfade setzen **** 
C: 
CD Jobs 
REM **** Virtuelle Maschinen reaktivieren **** 
CALL "D:VMwareVMware Servervmware-cmd.bat" 
 E:VirtualMachinesAktivSERVERSystemserver.vmx start 
CALL "D:VMwareVMware Servervmware-cmd.bat" 
 F:VirtualMachinesAktivSERVERserver.vmx start

… siehe da, es funktionierte!
smart, oder?

Sicherlich gibt es noch einen Weg, dass man ein SnapShot von der VM macht und dann den wegsichert. Aber für unsere Belange reicht dieses vorgehen vollkommen aus, da unser Ultirum Laufwerk >4000 MBps wegspeichert ist die HOLD-TIME von dem VM’s auch akzeptable <30 min… Dank FibreChannel-Platten im SAN.

… vielleicht ist das hier ja für jemanden Hilfreich.

6 Gedanken zu „Backup von virtuelle Maschinen – VMware 1.0.4 und Veritas Backup Exec 11d

  1. beim 2. und 3. Skript müssen die Zeilen…

    CALL „D:VMwareVMware Servervmware-cmd.bat“ E:VirtualMachinesAktivSERVERSystemserver.vmx

    …in eine Zeile geschrieben werden… Irgendwie verhaut der Code-Highlighter hier das Format.

  2. Hallo nochmals eine Frage! DANKE
    Wie rufst du über das Batch file denn remoten Server/PC mit VMWare Server auf.
    CAll „D: „ist das ein Netzlaufwerk??
    Habe es auch probiert über UNC Pfad und share ist es bei mir nicht gelungen.
    DANKE Gruss hannes,

Schreibe einen Kommentar

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