Die Foren-SW läuft ohne erkennbare Probleme. Sollte doch etwas nicht funktionieren, bitte gerne hier jederzeit melden und wir kümmern uns zeitnah darum. Danke!

Backup VM

Hilfe bei Problemen mit der Installation oder Benutzung des VMware GSX Server und VMware Server 1.

Moderatoren: irix, Dayworker

Member
Beiträge: 7
Registriert: 24.10.2006, 15:45

Backup VM

Beitragvon fee006 » 25.11.2006, 12:26

Stelle mir folgende Einrichtung vor produktiver VM-Host. Nachts Shutdown (vmware-cmd z.B.) VM-Verzeichnis auf einen zweiten VM-Host kopieren. Damit habe ich die Maschine für den Notfall schon mit der aktuellen VM auf dem "Sicherungsserver".

Frage die sich stellt, könnte ich beim kopiern nur noch die Snapshot der produktiven VM kopieren? Heisst, ich kopiere einmal am Wochenende die komplette VM und die Woche über nur die aktuellen Snapshots :?: .

Guru
Beiträge: 2082
Registriert: 21.10.2006, 08:24

Beitragvon bla!zilla » 26.11.2006, 13:15

Du kannst laufende VMs mit Symantec Replication Exec oder HP OpenView StorageMirroring kopieren. Voraussetzung: VMware Host ist ein VMware GSX oder VMware Server und läuft unter Windows.

Member
Beiträge: 383
Registriert: 03.10.2005, 03:29

Beitragvon al!ve » 26.11.2006, 15:59

Einspruch.

Auch wenn die genannten Produkte in der Lage sind, die Dateiene einer VM zu kopieren, so hat das was da passiert nur bedingt was mit "sichern" zu tun. "sichern" kommt immerhin von "sicher", und das ist die erzeuge Kopie nur mit Einschränkungen.

Wir stellen uns mal vor, wir haben eine Sicherung einer laufenden VM vorliegen die erzeugt wurde, als die VM gerade lief. Wie stellen wir die wieder her? Wir kopieren die Dateien zurück , öffnen die zurückkopierte VM mit VMware-Server oder VMware-GSX ... und dann? Die VM läuft noch nicht, sie liegt lediglich wieder in ihrem Verzeichnis.
Sobald die VM jetzt gestartet wird stellt das darin laufende Betriebssystem einen Systemabsturz fest. Es sind Fragmente eines laufenden Systems auf der virtuellen Platte, das System bootet erneut, obwohl kein korrekter Shutdown erfolgt ist. Ausnahmslos jedes Programm muss jetzt für sich Maßnahmen zur Datenrückgewinnung ergreifen. Von einer ordentlichen Datenbank erwarte ich, dass sie das kann. Von vielen anderen Programmen kann ich das allerdings nicht erwarten.

Eine Online-Sicherung einer VM, die nicht so stark mit VMware harmoniert, dass VMware keinen Startprozess mehr durchführt (was beim Sichern von Snapshots der Fall wäre, allerdings lassen die sich beim VMware-Server nicht so steuern wie es notwendig wäre) ist also enorm gefährlich.

Member
Beiträge: 7
Registriert: 24.10.2006, 15:45

Beitragvon fee006 » 27.11.2006, 20:50

Interessantes Thema. Wobei ich es auch eher kritisch sehe, dass so eine VM Online gesichert wird. Aber was meint Ihr zum Snapshotverfahren?

Member
Beiträge: 80
Registriert: 23.02.2006, 08:36

Beitragvon Alternativende » 27.11.2006, 21:02

Schicke die VM´s doch in den Suspendmodus.

vmware-cmd /Pfad/zur/Vm/.vmx suspend

Danach sichern und wieder mit.

vmware-cmd /Pfad/zur/Vm/.vmx start

starten.

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 04.12.2006, 13:02

Das mit dem Suspend hört sich gut an, hat das schon einer laufen ?

Ich wollte hier eine wartungspause nachts ab 0:00 machen in der dann die rund 40gb an VMs weggesichert werden.

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 04.12.2006, 13:37

hab da mal ein batch geschrieben, leider bin ich da nich so der held drin, mein code:

Code: Alles auswählen

:: Lucia VM-Ware Backup Batch
:: ASP: Baumann
:: ------------------
::
::
:: Suspenden der VM
"C:\Programme\VMware\VMware Server\vmware-cmd.bat" "F:\Virtual Machines\LuciaVM01\Windows 2000 Professional.vmx" suspend

:: BAckup der VM Dateien in eine CAB File
"F:\Virtual Machines\_backups_\cabarc.exe" n "F:\Virtual Machines\_backups_\VM10.cab" "F:\Virtual Machines\LuciaVM10\*"

:: Starten der VM nach Backup
"C:\Programme\VMware\VMware Server\vmware-cmd.bat" "F:\Virtual Machines\LuciaVM01\Windows 2000 Professional.vmx" start


Protblem: nach dem ersten Command, also dem runterfahren der VM gibt das vmware-cmd ein "suspend<> = 1" aus und das wars mit der batch, die ausführung wird beendet, maschine ist suspended.

wie kann ich das umgehen?

Profi
Beiträge: 875
Registriert: 18.03.2005, 14:05
Wohnort: Ludwigshafen

Beitragvon Martin » 04.12.2006, 13:46

Wenn Du in einer Batch-Datei eine Batch-Datei aufrufst, muß dies mit CALL <Batch-Datei> geschehen, also
CALL "C:\Programme\VMware\VMware Server\vmware-cmd.bat" .......


Martin

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 04.12.2006, 14:40

Martin, mein Held, das ist suppa ... jetzt ersetz ich das cab-gedöhns von ms gegen nen richtige packer und schon wird alles gut

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 05.12.2006, 13:06

Sodala ... mein Script ist fertig,
einzig die Parameterübergabe von Pfaden mit Leerzeichen drin klappt nicht, wenn da noch einer nen Tip hat als her mit,
ansonsten ist das hier mein Ergebnis:

Code: Alles auswählen

:: Lucia VM-Ware Backup Batch
:: ASP: Baumann
:: ------------------

::Echo aus und CLS
@echo off
cls


::Variablen Festlegen
SET VMCMDPFAD=C:\Programme\VMware\VMware Server\vmware-cmd.bat
SET VMSTOREPFAD=F:\Virtual Machines
SET VMBACKUPPFAD=F:\Virtual Machines\_backups_
SET BACKUPTOOL=F:\Virtual Machines\_backups_\7za.exe
:: SET VMXFILE=Windows 2000 Professional.vmx
SET VMXFILE=%2

::
:: Abfrage ob Hilfe
:: ----------------
IF "%1"=="" goto HELP
IF "%1"=="/?" goto HELP
IF "%1"=="?" goto HELP
IF "%1"=="help" goto HELP
IF "%1"=="/help" goto HELP
IF "%1"=="h" goto HELP
IF "%1"=="/h" goto HELP


:: Eigentliches Backupscript
:: -------------------------
::Suspend der VM
echo suspend:
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" suspend
echo.

echo rename:
:: rename des alten BAckup in old, dabei überschreiben des vorherigen alten Backups
mv  "%VMBACKUPPFAD%\%1.zip" "%VMBACKUPPFAD%\OLD_%1.zip"
echo.

echo backup
:: BAckup der VM Dateien in eine CAB File
"%BACKUPTOOL%" a -tzip -mmt=on -y  "%VMBACKUPPFAD%\%1.zip" "%VMSTOREPFAD%\%1\*"
echo.

echo start der vm
:: Starten der VM nach Backup
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" start
echo.

goto END

:HELP
@ECHO OFF
ECHO    ###########################################################################
ECHO    #                                                                         #
ECHO    # backupVMs -VM-  -VMXFILE-                                               #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    # -VM-  Name der VM ohne Leerzeichen und Pfad z.B. LuciaVM01              #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    # -VMXFILE-  Name der VMX Datei ohne Leerzeichen und Pfad z.B. LuciaVM01  #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    # --   andere Pfade und Variablen siehe Sourcecode    --                  #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    # typischer Aufruf:                                                       #
ECHO    #                                                                         #
ECHO    # backupVMs LuciaVM01 Windows2000.vmx                                     #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    #                                            Coded by Baumann dez_2006    #
ECHO    #                                                                         #
ECHO    ###########################################################################
goto END


:END
:: This is the end    -     my only friend    -    the end *sing*
:: Mensch, das ganze Code hacken macht einen echt wuschig B~7


Das Problem ist das ich nicht sagen kann:

Code: Alles auswählen

backupVMs testvm test vm.vmx

da er dann test als 2ten Übergabeparameter hat und vm.vmx als 3ten, und mit:

Code: Alles auswählen

backupVMs testvm "test vm.vmx"

komm ich auch nicht weiter, weil er dann die Anführungszeichen in der Variable mit drin hat *sick* ...

Aber mit allen VMXen ohne Leerzeichen klappt das schon ganz wunderbar .... [/code]

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 05.12.2006, 15:56

so .. ich mach noch ne Statusabfrage, komm da grad nicht weiter, wer mir helfen will --> http://vmware-forum.de/viewtopic.php?p=29378#29378

Benutzeravatar
Member
Beiträge: 49
Registriert: 26.07.2004, 09:18
Wohnort: Potsdam

Beitragvon potsdam » 05.12.2006, 18:44

Habe mein VBS-Script fürs Backup mal Hier online gestellt.

Kommentare und Betatester Willkommen ;-)

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 06.12.2006, 10:31

Schönes Script, wärs nicht in VB würd ichs auch raffen ;P

Benutzeravatar
Member
Beiträge: 49
Registriert: 26.07.2004, 09:18
Wohnort: Potsdam

Beitragvon potsdam » 06.12.2006, 10:33

Bin selbst VBScript Beginner - aber so schwer isses gar nicht.

Die aktuelle Version des Scriptes übrigens jetzt auch hier: http://vmware-forum.de/viewtopic.php?t=7291

Benutzeravatar
Member
Beiträge: 24
Registriert: 04.12.2006, 10:32

Beitragvon chri7 » 03.01.2007, 14:23

Sodala ... hab mein letztes PRoblem mit der Batch auch gelöst *aufatmentu* :D

Muss mich also nich in VB einarbeiten,
hier das final result.

Es Metascript und das eigentliche BAckupscript was mit übergabewerten vom metascript aufgerufen wird:

MetaScript:

Code: Alles auswählen

:: RUft das BAckup Script mit den richtigen bergabewerten der VMs auf
::
::
:: hier wird angegeben welche VMs gebackupt werden
::
::

call backupVMs.bat LuciaVM01 LuciaVM01.vmx
call backupVMs.bat LuciaVM02 LuciaVM02.vmx
call backupVMs.bat LuciaVM03 LuciaVM03.vmx
call backupVMs.bat LuciaVM04 LuciaVM04.vmx
call backupVMs.bat LuciaVM05 LuciaVM05.vmx



BackupScript:

Code: Alles auswählen

:: Lucia VM-Ware Backup Batch
:: ASP: Baumann
:: ------------------

::Echo aus und CLS
::----------------
@echo off
cls


::Variablen Festlegen
::-------------------
SET VMCMDPFAD=C:\Programme\VMware\VMware Server\vmware-cmd.bat
SET VMSTOREPFAD=F:\Virtual Machines
SET VMBACKUPPFAD=F:\Virtual Machines\_backups_
SET BACKUPTOOL=F:\Virtual Machines\_backups_\7za.exe
:: SET VMXFILE=Windows 2000 Professional.vmx
SET VMXFILE=%2

:: Abfrage ob Hilfe
:: ----------------
IF "%1"=="" goto HELP
IF "%1"=="/?" goto HELP
IF "%1"=="?" goto HELP
IF "%1"=="help" goto HELP
IF "%1"=="/help" goto HELP
IF "%1"=="h" goto HELP
IF "%1"=="/h" goto HELP

::Abfrage ob VM luft oder nicht
::------------------------------
:: wenn nicht nur backup, wenn ja suspend-backup-continue
::
:: errorlevel 1 == VM steht (pause oder stop)
:: errorlevel 0 == VM luft (also muss noch pausiert werden vorm backup)

call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" getstate | FIND "on" > NUL
if errorlevel=1 goto vmstands
goto vmruns




:vmruns
:: Backup bei laufender Maschine
:: -------------------------
::Suspend der VM
echo suspend:
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" suspend
echo.
echo rename:
:: rename des alten BAckup in old, dabei berschreiben des vorherigen alten Backups
move  "%VMBACKUPPFAD%\%1.zip" "%VMBACKUPPFAD%\OLD_%1.zip"
echo.
echo backup
:: BAckup der VM Dateien in eine CAB File
"%BACKUPTOOL%" a -tzip -mmt=on -y  "%VMBACKUPPFAD%\%1.zip" "%VMSTOREPFAD%\%1\*"
echo.
echo start der vm
:: Starten der VM nach Backup
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" start
echo.
goto END

:vmstands
:: Backup bei stehender Maschine
:: -------------------------
echo rename:
:: rename des alten BAckup in old, dabei berschreiben des vorherigen alten Backups
move  "%VMBACKUPPFAD%\%1.zip" "%VMBACKUPPFAD%\OLD_%1.zip"
echo.
echo backup
:: BAckup der VM Dateien in eine CAB File
"%BACKUPTOOL%" a -tzip -mmt=on -y  "%VMBACKUPPFAD%\%1.zip" "%VMSTOREPFAD%\%1\*"
echo.
goto END

:HELP
ECHO    ###########################################################################
ECHO    #                                                                         #
ECHO    # backupVMs -VM-  -VMXFILE-                                               #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    # -VM-  Name der VM ohne Leerzeichen und Pfad z.B. LuciaVM01              #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    # -VMXFILE-  Name der VMX Datei ohne Leerzeichen und Pfad z.B. LuciaVM01  #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    # --   andere Pfade und Variablen siehe Sourcecode    --                  #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    # typischer Aufruf:                                                       #
ECHO    #                                                                         #
ECHO    # backupVMs LuciaVM01 Windows2000.vmx                                     #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    #                                            Coded by Baumann dez_2006    #
ECHO    #                                                                         #
ECHO    ###########################################################################
goto END


:END
:: This is the end    -     my only friend    -    the end *sing*
:: Mensch, das ganze Code hacken macht einen echt wuschig B~7


Member
Beiträge: 1
Registriert: 11.06.2010, 13:26

Suspend-Zeit verkürzen...

Beitragvon AHO » 11.06.2010, 14:13

Hallo zusammen,

es gibt noch die Möglichkeit die Dauer des Suspends zu verkürzen.
Mein Script pausiert alle VMs, erzeugt eine Schattenkopie und startet alle VMs sofort wieder.

Danach wird die Schattenkopie nach Laufwerk V: gemountet und kann von dort aus bequem weggesichert werden. Die Downtime der VMs verkürzt sich hier auf 2 bis 3 Minuten und während der Datensicherung laufen die VMs ganz normal weiter.

Nach meinem Wissen funktioniert diese Lösung allerdings nur mit Windows Server und leider nicht mit Windows XP...

hier das Beispiel:

Code: Alles auswählen

:: ------------------------------------------------------------------------
::   Suspende alle VMs, erstelle Schattenkopie und re-starte alle VMs
::   Die Schattenkopie von C: wird als Laufwerk V: gemountet und kann
::      gesichert werden.
:: ------------------------------------------------------------------------

 @set VMroot=C:\Virtual Machines
 @set OrigPATH=%PATH%
 @set PATH=%PATH%;C:\Programme\VMware\VMware Server\

:: Lösche evtl.bestehende Schattenkopien
 @echo y | vshadow -da

:: --- Suspendiere alle VMs...
 @cd %VMroot%
 @for /F "delims=," %%i in ('vmware-cmd -l') do @call vmware-cmd "%%i" suspend trysoft

:: --- erstelle Schattenkopie und mappe nach Laufwerk V:
 @call vshadow -nw -p -script=vss.cmd c:
 @call vss.cmd
 @call vshadow -el=%SHADOW_ID_1%,V:

:: --- Starte alle VMs...
 @for /F "delims=," %%i in ('vmware-cmd -l') do @call vmware-cmd "%%i" start trysoft

:: --- Kopiere VMs aus der Schattenkopie irgendwohin...
  xcopy /E /H /R /Y "V:\Virtual Machines\*.*" Z:\backup

:: --- Stelle Pfad wieder her und lösche Temporäre Dateien
 @set PATH=%OrigPATH%
 @del vss.cmd


Die Datei vshadow.exe findet man im VSS 7.2 SDK von Microsoft http://www.microsoft.com/downloads/details.aspx?FamilyID=0B4F56E4-0CCC-4626-826A-ED2C4C95C871&displaylang=en.


Zurück zu „VMserver 1 und GSX“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste