Hallo,
ich würde meinen, daß evtl. zum kopieren und komprimieren der VM´s eine Minute ein bisschen wenig Zeit ist (hängt natürlich von Größe der VM und der Geschwindigkeit der HDD ab), abgesehen davon könnte die Reihenfolge nicht stimmen: erst VM im Host komprimieren und wegkopieren, dann Ubuntu und Squid starten, dann alle 3 runterfahren und um 2:04 Uhr Other.vmx starten ???
Gruß Ronny
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!
Datensicherungskonzept [gelöst]
-
Alternativende
- Member
- Beiträge: 80
- Registriert: 23.02.2006, 08:36
e-e-e hat geschrieben:Hallo,
ich würde meinen, daß evtl. zum kopieren und komprimieren der VM´s eine Minute ein bisschen wenig Zeit ist (hängt natürlich von Größe der VM und der Geschwindigkeit der HDD ab), abgesehen davon könnte die Reihenfolge nicht stimmen: erst VM im Host komprimieren und wegkopieren, dann Ubuntu und Squid starten, dann alle 3 runterfahren und um 2:04 Uhr Other.vmx starten ???
Gruß Ronny
Das ist nicht eine Minute sondern eine Stunde. Ich sehe gerade ich habe nen Riesenfehler gemacht... 01 50 * * * gibt es garnicht. Es müsste 50 01 * * *heißen damit es 1:50 ist.
Er hat also im laufenden betrieb komprimiert und deshalb hatte er heute morgen auch so ein Riesenproblem mit dem vmx´s
Die Other.vmx ist eine reale Maschine, die auch in Verwendung ist.
Wie leicht sich doch solche Fehler immer wieder einschleichen....
-
Alternativende
- Member
- Beiträge: 80
- Registriert: 23.02.2006, 08:36
Hier nochmal kurz der aktuelle Stand der Dinge.
Ich habe es eben einmal mit einer unwichtigen Maschine ausprobiert. Ich habe sie mit cron heruntergefahren, dann mit tar cz ein Backup von dem ganzen Unterordner erstellen lassen und mit netcat alles kopiert. Das doofe ist ich kann die tar.gz die dabei erstellt wird und die richtige Größe auch hat nicht verwenden.
Sie lässt sich einfach nicht öffnen.
Leider kann ich aber meines Wissens nach mit dd nicht ganze Ordner nach netcat kopieren.
Wäre eigentlich die beste Lösung, weil dann nichts gepackt werden muss und ich nicht in Platzbedrängnis auf meinem Vmware Server komme.
Gibt es keine vernünftige Möglichkeit einen ganzen Ordner einfach übers Netzwerk nach Windows zu kopieren ?
Samba würde sich da auch anbieten, wenn der Server die Freigabe bekommt.
Dann könnte man das doch theoretisch auch mit nem Windows Script machen oder ?
Ich habe es eben einmal mit einer unwichtigen Maschine ausprobiert. Ich habe sie mit cron heruntergefahren, dann mit tar cz ein Backup von dem ganzen Unterordner erstellen lassen und mit netcat alles kopiert. Das doofe ist ich kann die tar.gz die dabei erstellt wird und die richtige Größe auch hat nicht verwenden.
Sie lässt sich einfach nicht öffnen.
Leider kann ich aber meines Wissens nach mit dd nicht ganze Ordner nach netcat kopieren.
Wäre eigentlich die beste Lösung, weil dann nichts gepackt werden muss und ich nicht in Platzbedrängnis auf meinem Vmware Server komme.
Gibt es keine vernünftige Möglichkeit einen ganzen Ordner einfach übers Netzwerk nach Windows zu kopieren ?
Samba würde sich da auch anbieten, wenn der Server die Freigabe bekommt.
Dann könnte man das doch theoretisch auch mit nem Windows Script machen oder ?
-
Alternativende
- Member
- Beiträge: 80
- Registriert: 23.02.2006, 08:36
-
Alternativende
- Member
- Beiträge: 80
- Registriert: 23.02.2006, 08:36
So hier nun die versprochene Anleitung.
- Dateianhänge
-
- Datensicherungskonzept für den freien VMWare Server auf Debian Basis.pdf
- (17.89 KiB) 77-mal heruntergeladen
-
Alternativende
- Member
- Beiträge: 80
- Registriert: 23.02.2006, 08:36
Das mit den anhängen klappt hier im Forum irgendwie nicht so gut.
Hier ist es ganz normal in Text Form.
Datensicherungskonzept für den freien VMWare Server auf Debian Basis
Nachfolgend wird ein Datensicherungskonzept für einen Vmware Server beschrieben.
Hierbei werden Komplettsicherungen aller Gäste angefertigt, die über ein Netzlaufwerk auf einen Windows Server übertragen werden um zB. Auf Band gesichert werden zu können.
Dafür wird lediglich eine funktionierende Samba Anbindung und Cron benötigt.
Als erstes müssen die Gastsysteme ausgeschaltet werden. Das funktioniert auf 2 verschiedene Wege. Falls auf den Gästen die Vmware Tools installiert sind können sie mit folgendem Befehl in den suspend Modus geschickt werden.
00 01 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/VMMASCHINE/VMMASCHINE.vmx suspend
Das versetzt die virtuelle Maschine jeden Tag um 1:00 Uhr Nachts in den Schlaf.
Achtung:
( Die Zeiten sind dabei abhängig vom Zeitpunkt der anderen Sicherungen auf den Windows Servern. Sie sollten nach Möglichkeit nach Dienstschluss, aber vor der täglichen Sicherung auf Band erfolgen.)
Die Uptime geht in der Zeit nicht verloren und es wird an der selben Stelle fortgefahren wo die Maschine vorher beendet worden ist.
Falls das nicht funktionieren sollte kann man alternativ auch die ganze Maschine ausschalten.
00 01 * * * /sbin/init 0
Dadurch wird die virtuelle Maschine um 1:00Uhr Nachts komplett ausgeschaltet.
Nun benötigt man von der Windowsmaschine ein Netzlaufwerk zum VmWare Server in der man Schreibrechte hat.
Über den Taskplaner kann dann der gewünschte Zeitpunkt eingestellt werden in dem folgendes Script zu einem frei wählbaren Zeitpunkt ausgewählt werden kann.
IF EXIST D:\BACKUP\ GOTO ENTFERNEN1
@ECHO Prüfe ob Backupverzeichnis existiert
:ENTFERNEN1
@ECHO Entferne alte Dateien aus dem Backupverzeichnis
@ECHO Alle Meldungen werden unterdrückt.
D:
del /f /q D:\BACKUP\*.*
del /f /q D:\BACKUP\VMMASCHINE\*.*
del /f /q D:\BACKUP\VMMASCHINE2\*.*
del /f /q D:\BACKUP\VMMASCHINE3\*.*
GOTO :BACKUP1
:BACKUP1
@ECHO Kopiere Verzeichnisse vom Netzlaufwerk, des VMWARE
@ECHO Servers. Netzlaufwerk mit Hilfe von Samba hergestellt.
@ECHO Die Option /s ist zum kopieren von ganzen Verzeichnissen
@ECHO Nicht unbedingt notwendig.
Y:
XCOPY /s Y:\Ubuntu\*.* D:\BACKUP\VMMASCHINE\*.*
XCOPY /s Y:\Squid\*.* D:\BACKUP\VMMASCHINE2\*.*
XCOPY /s Y:\nagi\*.* D:\BACKUP\VMMASCHINE3\*.*
Anschließend können die virtuellen Maschinen vom VMWare Server aus wieder per Cron gestartet werden. Der Zeitpunkt muss auch hier wieder durch ausprobieren erforscht werden.
00 04 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/VMMASCHINE/ VMMASCHINE start
01 04 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/ VMMASCHINE2 / VMMASCHINE2.vmx start
02 04 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/ VMMASCHINE 3/ VMMASCHINE3.vmx start
Nun sollte das Backup vollständig funktionieren. Auf diese Weise werden zumindest Vollsicherungen der Gäste angelegt.
Um den Host zu sichern sei hier auf folgende Anleitung verwiesen.
http://www.newbie-net.de/anleitung_backup.html
Hier ist es ganz normal in Text Form.
Datensicherungskonzept für den freien VMWare Server auf Debian Basis
Nachfolgend wird ein Datensicherungskonzept für einen Vmware Server beschrieben.
Hierbei werden Komplettsicherungen aller Gäste angefertigt, die über ein Netzlaufwerk auf einen Windows Server übertragen werden um zB. Auf Band gesichert werden zu können.
Dafür wird lediglich eine funktionierende Samba Anbindung und Cron benötigt.
Als erstes müssen die Gastsysteme ausgeschaltet werden. Das funktioniert auf 2 verschiedene Wege. Falls auf den Gästen die Vmware Tools installiert sind können sie mit folgendem Befehl in den suspend Modus geschickt werden.
00 01 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/VMMASCHINE/VMMASCHINE.vmx suspend
Das versetzt die virtuelle Maschine jeden Tag um 1:00 Uhr Nachts in den Schlaf.
Achtung:
( Die Zeiten sind dabei abhängig vom Zeitpunkt der anderen Sicherungen auf den Windows Servern. Sie sollten nach Möglichkeit nach Dienstschluss, aber vor der täglichen Sicherung auf Band erfolgen.)
Die Uptime geht in der Zeit nicht verloren und es wird an der selben Stelle fortgefahren wo die Maschine vorher beendet worden ist.
Falls das nicht funktionieren sollte kann man alternativ auch die ganze Maschine ausschalten.
00 01 * * * /sbin/init 0
Dadurch wird die virtuelle Maschine um 1:00Uhr Nachts komplett ausgeschaltet.
Nun benötigt man von der Windowsmaschine ein Netzlaufwerk zum VmWare Server in der man Schreibrechte hat.
Über den Taskplaner kann dann der gewünschte Zeitpunkt eingestellt werden in dem folgendes Script zu einem frei wählbaren Zeitpunkt ausgewählt werden kann.
IF EXIST D:\BACKUP\ GOTO ENTFERNEN1
@ECHO Prüfe ob Backupverzeichnis existiert
:ENTFERNEN1
@ECHO Entferne alte Dateien aus dem Backupverzeichnis
@ECHO Alle Meldungen werden unterdrückt.
D:
del /f /q D:\BACKUP\*.*
del /f /q D:\BACKUP\VMMASCHINE\*.*
del /f /q D:\BACKUP\VMMASCHINE2\*.*
del /f /q D:\BACKUP\VMMASCHINE3\*.*
GOTO :BACKUP1
:BACKUP1
@ECHO Kopiere Verzeichnisse vom Netzlaufwerk, des VMWARE
@ECHO Servers. Netzlaufwerk mit Hilfe von Samba hergestellt.
@ECHO Die Option /s ist zum kopieren von ganzen Verzeichnissen
@ECHO Nicht unbedingt notwendig.
Y:
XCOPY /s Y:\Ubuntu\*.* D:\BACKUP\VMMASCHINE\*.*
XCOPY /s Y:\Squid\*.* D:\BACKUP\VMMASCHINE2\*.*
XCOPY /s Y:\nagi\*.* D:\BACKUP\VMMASCHINE3\*.*
Anschließend können die virtuellen Maschinen vom VMWare Server aus wieder per Cron gestartet werden. Der Zeitpunkt muss auch hier wieder durch ausprobieren erforscht werden.
00 04 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/VMMASCHINE/ VMMASCHINE start
01 04 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/ VMMASCHINE2 / VMMASCHINE2.vmx start
02 04 * * * /usr/bin/vmware-cmd /var/lib/vmware/Virtual\ Machines/ VMMASCHINE 3/ VMMASCHINE3.vmx start
Nun sollte das Backup vollständig funktionieren. Auf diese Weise werden zumindest Vollsicherungen der Gäste angelegt.
Um den Host zu sichern sei hier auf folgende Anleitung verwiesen.
http://www.newbie-net.de/anleitung_backup.html
Alternativende hat geschrieben:Falls das nicht funktionieren sollte kann man alternativ auch die ganze Maschine ausschalten.
00 01 * * * /sbin/init 0
Dadurch wird die virtuelle Maschine um 1:00Uhr Nachts komplett ausgeschaltet.
Schaltet das nicht den Host aus?
Wenn dann müsste man das ja im Gastsystem machen oder?
Gruß
ioman
-
Alternativende
- Member
- Beiträge: 80
- Registriert: 23.02.2006, 08:36
Ihr muesst die variablen oben im script anpassen.
Das script basiert auf vmware-cmd und rsync.
Es ist bei weitem nicht rund aber ihr koennt es gerne ausbauen, fuer mehr sollte man auf die perl-api zurueckgreifen, der komfort mit vmware-cmd ist begrenzt.
Heinweise!:
Waehrend des backups werden ALLE virtuellen maschinen, die ins backup einbezogen sind suspendet. Es wird NICHT verhindert, dass jemand waehrend des backups maschinen einschaltet!
Keine Historie - es wird ein Spiegel erstellt.
Empfehlenswert ist eine SAN-Anbindung ueber iscsi.
Gruss,
lisan.
rsyncd conf auf dem vmware-server
crontab
Das script basiert auf vmware-cmd und rsync.
Es ist bei weitem nicht rund aber ihr koennt es gerne ausbauen, fuer mehr sollte man auf die perl-api zurueckgreifen, der komfort mit vmware-cmd ist begrenzt.
Heinweise!:
Waehrend des backups werden ALLE virtuellen maschinen, die ins backup einbezogen sind suspendet. Es wird NICHT verhindert, dass jemand waehrend des backups maschinen einschaltet!
Keine Historie - es wird ein Spiegel erstellt.
Empfehlenswert ist eine SAN-Anbindung ueber iscsi.
Gruss,
lisan.
Code: Alles auswählen
#!/bin/bash
# /usr/sbin/back_virtual_machines
#
# Script to backup virtual machines.
#
# Written by Arvid Walter <arvid.walter@...>
# NOTE: This script does not prevent users from changing states of
# virtual machines during backup procedures
#
# TODO: - Traps - z.B. rechner wird ausgeschaltet, SIGHUP etc.
# - mail bei problemen versenden
# - platte voll
# - sonstige fehler
# - IFS local binden
# x commons script, liste an targets angeben
# change on 6.9.2006 - Arvid
# - nur maschinen suspenden, die gerade synchronisiert werden sollen
# ziemlich schwer, da man erkennen muss, welche maschinen zum
# synchronisierenden rsyncmodul gehoeren!
# - Konfigurationdatei fuer mehrere Quelle-Ziel Verbindungen
# the fieldseparator
IFS=$'\n'
VERSION=0.32
SYNC_USER= # rsynd user
SYNC_PASSWORD= # rsynd password
SYNC_SRC=<vmwareserver auf dem rsyncd laeuft> # rsync source host
SYNC_DEST="/var/lib/vmware/VirtualMachines2/" # rsync destination
RSYNC_OPTIONS="--log-format='%t %o %f'" # misc options for rsync
RSYNC_TARGETS="project1 project2" # specifies the targets to sync to
MAINTAINER="arvid.walter@..." # maintainer address
VM_PASS="" # vmware-server ROOT password
VM_USER="root" # admin account for the vmware-server
VM_HOST=${SYNC_SRC} # vmware-server ip or hostname
LOG="/var/log/backup" # log file
# dependencies
# Ensure all of there are available in ur environment
VM_CMD=/usr/bin/vmware-cmd # vmware-cmd
AWK=/usr/bin/awk # awk
RSYNC=/usr/bin/rsync # rsync client
# check if vmware-cmd is avaible
[ -x ${AWK} -a -x ${VM_CMD} -a -x ${RSYNC} ] || echo "Missing component, check dependencies" || exit 0
function usage()
{
cat << EOF
Usage: backup_virtual_machines [OPTION] {start}...
(Backups all installed vitual machines).
Mandatory arguments to long options are mandatory for short options too.
-s shutdown vmware server to prevent users
from switching machines on while backup is running .
-h display this help and exit
-l prints out a list affected virtual machines
or 'actually: what can I sync'
-v output version information and exit
EOF
}
# this function checks the state of a virtual machine
# on HOst ${VM_HOST} for user ${VM_USER} with users password ${VM_PASS}
# @return 0: on, 1: suspended, 2: off, -1: unknown
checkstate() {
if [ x"$1" == "x" ]; then
echo "FATAL: Please input a virtual machines config file"
return "-1"
fi
case `${VM_CMD} \
-U ${VM_USER} \
-P ${VM_PASS} \
-H ${VM_HOST} \
$1 getstate|awk '{ print $3 }'` in \
on )
return 0
;;
suspended )
return 1
;;
off )
return 2
;;
* ) return -1;
;;
esac
# prevent checkstate from unknown states
return -1
}
# Sets the state of a virtual machine $1 to $2
# returns 0: on success, 1: on unknown states, 2: state change errors
setstate() {
local machine="$1" # a virtual machines config file
local newstate="$2" # the state to switch to
if [ x"$machine" == "x" ]; then
echo "FATAL: Please input a virtual machines config file"
return "-1"
fi
if [ x"$newstate" == "x" ]; then
echo "FATAL: Please input a state"
return "-1"
fi
case ${newstate} in
start | stop | suspend ) ${VM_CMD} \
-U ${VM_USER} \
-P ${VM_PASS} \
-H ${VM_HOST} ${machine} ${newstate}
return ${?}
;;
* ) echo "Cannot not state to ${newstate}, cause it is unknown."
return 1
;;
esac
return 0;
}
# This one suspends running machines
# state[] will hold all suspended machines
suspend_machines() {
# suspend running machines
for machine in `${VM_CMD} \
-U ${VM_USER} \
-P ${VM_PASS} \
-H ${VM_HOST} -l`; do
if checkstate ${machine}; then
# remember this machine
state[${#state[@]}]=${machine}
# suspend machine
if ! setstate ${machine} suspend; then
echo "Cannot suspend virtual machine $machine : " `basename ${machine}`
return 1
fi
fi
done
return 0
}
# This funtion triggers machines that
# have been suspended by suspend_machine using
# state[]
wakeup_machines() {
# restart formaly running machines
for machine in ${state[@]}; do
# check state
checkstate ${machine}
if [ $? == 1 ]; then
if ! setstate ${machine} start; then
echo "Cannot start virtual machine : `basename ${machine}`"
fi
else
# the state changed while the script is running
echo "FATAL: State changed while script is running"
fi
done
}
# This function runs data synchronisation
# using SYNC_SRC and SYNC_DEST as source and
# destination
sync() {
local IFS=" "
for target in ${RSYNC_TARGETS}; do
echo "syncing $target ..."
RSYNC_PASSWORD=${SYNC_PASSWORD} rsync -avz ${RSYNC_OPTIONS} \
${SYNC_USER}@${SYNC_SRC}::${target} \
${SYNC_DEST}/${target}
done
}
# prints a list of all files in a module
list() {
# check existence
for target in ${RSYNC_TARGETS}; do
# dive recursively into directories
RSYNC_PASSWORD=${SYNC_PASSWORD} rsync -r\
${SYNC_USER}@${SYNC_SRC}::${target}\
|grep \.vmx$\
|${AWK} '{ vmname=""; for (i=5; i<=NF; i++) vmname=vmname$i; print vmname }';
done
}
backup() {
suspend_machines
if [ "$?" != 0 ]; then
echo "FATAL: Cannot suspend a machine - i wont sync"
else
sync
fi
wakeup_machines
echo
}
while getopts hvls: options; do
case $options in
h) # call for help
usage
exit 0
;;
s) # shutdown vmware server flag
echo "Presently shuting down a remote vmware server is not implemeted yet. Stay tuned."
exit 2
;;
v) # version info
echo ${VERSION}
exit 0
;;
l) # list available targets
rsync ${SYNC_SRC}::
exit 0
;;
*) # unknown option
usage
exit 1
;;
esac
done
case $1 in
start)
backup
;;
*)
echo "Unkown comand >$1<"
usage
exit 1
;;
esac
rsyncd conf auf dem vmware-server
Code: Alles auswählen
uid = root
gid = root
read only = true
use chroot = true
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
hosts allow = <ip des backup hosts>
slp refresh = 300
[vmwareimages]
path = /var/lib/vmware/Virtual Machines
comment = all vmware images
auth users = admin
secrets file = /etc/rsyncd.secrets
[project1]
path = /var/lib/vmware/Virtual Machines/Project1
comment = Project1 Server
auth users = admin
secrets file = /etc/rsyncd.secrets
[project2]
path = /var/lib/vmware/Virtual Machines/Project2
comment = Project2 Server
auth users = admin
secrets file = /etc/rsyncd.secrets
crontab
Code: Alles auswählen
30 0 * * * root backup_target.sh start >/dev/null 2>&1Zurück zu „VMserver 1 und GSX“
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste