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
Backup VM
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 .
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 .
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.
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: 80
- Registriert: 23.02.2006, 08:36
hab da mal ein batch geschrieben, leider bin ich da nich so der held drin, mein code:
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?
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?
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:
Das Problem ist das ich nicht sagen kann:
da er dann test als 2ten Übergabeparameter hat und vm.vmx als 3ten, und mit:
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]
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]
so .. ich mach noch ne Statusabfrage, komm da grad nicht weiter, wer mir helfen will --> http://vmware-forum.de/viewtopic.php?p=29378#29378
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
Die aktuelle Version des Scriptes übrigens jetzt auch hier: http://vmware-forum.de/viewtopic.php?t=7291
Sodala ... hab mein letztes PRoblem mit der Batch auch gelöst *aufatmentu*
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:
BackupScript:
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
Suspend-Zeit verkürzen...
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:
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.
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