Portál AbcLinuxu, 1. května 2025 11:28

VMWare ESX záloha Virtuálních mašin

6.8.2008 08:53 | Přečteno: 3334× | Linux | poslední úprava: 3.4.2009 13:16

Protože jsme začali používat ESX servery, tak jsme začali řešit i to, jak je nějak zálohovat, na internetu jsem našel nějaké skripty a tak jsem se jimi trochu inspiroval a výsledek můžete vidět zde.

Zálohování probíhá na SMB svazek, tak je nutno velké soubory rozdělit. Během zálohování se vytvoří snapshot, který je možno zkopírovat, po kopírování se snapshot smaže a tím se změny, které proběhly během zálohování, uloží.

Problém tohoto skriptu je, že maže všechny snapshoty, zatím jsem nepřišel na to jak mazat jednotlivé snapshoty. Během kopírování se nepodaří zkopírovat swap soubor, ten však pro obnovení virtuální mašiny není nutný.

#!/bin/bash

BACKUP_PATH=/tmp/pb-fi-01-vBackup
VMWARE_COMMAND=/usr/bin/vmware-cmd
SPLITSIZE=1073741824

SERVER="$( hostname )"
DATE="$( date +%F )"

#vytvoření cesty pro mount záloh
mkdir -p "$BACKUP_PATH"
#mount zálohovacího serveru
mount -t smbfs //pb-fi-01/VBackup "$BACKUP_PATH" -o username=xxx,password=xxx,workgroup=xxx
#smazat staré zálohy (jsou na pásce)
rm -rf "$BACKUP_PATH/$SERVER"
#znovu vytvořit adresář
mkdir -p "$BACKUP_PATH/$SERVER"

#získat seznam virtuálních mašin
machines="$( vmware-cmd -l )"

for machine in $machines; do
	path="$( basename $machine | cut -d. -f1 )"
	dir="$( dirname "$machine" )"

	mkdir -p "$BACKUP_PATH/$SERVER/$path"

	#uložení seznamu suborů, ještě před vytvořením snapshotu, ostatní mě nezajímají
	files="$( ls "$dir" )"

	#protože createsnapshot upravuje vmx, nejdříve ho zkopíruji
	cp "$machine" "$BACKUP_PATH/$SERVER/$path"

	$VMWARE_COMMAND $machine createsnapshot dailybackups "Backup snapshot \"$DATE\"" 1

	#zkopírovat pouze původní soubory
	for file in $files; do
		ffile="$dir/$file"
		fsize="$( stat -c%s "$ffile" )"

		#přeskočit VMX soubor
		if [ "$ffile" == "$machine" ]; then
			continue
		fi

		#pokud je soubor velký, rodělit
		if [ "$fsize" -gt $SPLITSIZE ]; then
			split -b $SPLITSIZE "$ffile" "$BACKUP_PATH/$SERVER/$path/$file.part_"
		else
			cp "$ffile" "$BACKUP_PATH/$SERVER/$path/"
		fi
	done	
	#smazat snapshot
	$VMWARE_COMMAND "$machine" removesnapshots
done
#odpojení záloh
umount "$BACKUP_PATH"

Tak jsem si vzal k srdci připomínky a snad jsem je tam zapracoval dobře, včera jsem si hrál s obnovou a přišel jsem na to, že createsnapshot upravuje původní VMX soubor, tak je ho potřeba zkopírovat dříve, než se provede vlastní createsnaphot (furt jsem se divil, že mi to při obnově řve neexistující disk).


Příspěvek byl původně publikován na mém blogu Blonďákův písemníček.

Nová upravená verze na popud sh

#!/bin/bash

BACKUP_PATH=/tmp/pb-fi-01-vBackup
VMWARE_COMMAND=/usr/bin/vmware-cmd
VCB_MOUNTER=/usr/sbin/vcbMounter

SERVER="$( hostname )"
DATE="$( date +%F )"

#vytvoření cesty pro mount záloh
mkdir -p "$BACKUP_PATH"
#mount zálohovacího serveru
mount -t smbfs //pb-fi-01/VBackup "$BACKUP_PATH" -o username=xxx,password=xxx,workgroup=xxx
if [ "$?" -ne "0" ]; then
        echo "Nelze připojit zálohovací soubor"
        exit 1
fi
#smazat staré zálohy (jsou na pásce)
rm -rf "$BACKUP_PATH/$SERVER"
#znovu vytvořit adresář
mkdir -p "$BACKUP_PATH/$SERVER"

#získat seznam virtuálních mašin
IFS=$'\n'
machines="$( $VMWARE_COMMAND -l )"

for machine in $machines; do
        path="$( basename "$machine" | cut -d. -f1 )"
        dir="$( dirname "$machine" )"
        LookupMachine=$( grep displayName "$machine" | sed s/displayName[[:space:]]*=[[:space:]]*/name:/)
        $VCB_MOUNTER -h localhost -u root -p xxx -a $LookupMachine -t fullvm -r "$BACKUP_PATH/$SERVER/$path"
done
unset IFS
#odpojení záloh
umount "$BACKUP_PATH"
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

6.8.2008 13:51 CEST
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Odpovědět | Sbalit | Link | Blokovat | Admin
Mozna se pripoji i dalsi, ale ja osobne bych doporucoval pri praci s adresarema pouzivat uvozovky. Pokud se nepletu, vmware-cmd -l vraci seznam plnych cest konfiguracich VMX souboru VMware. Nevim jak ESX, ale ve vmware-serveru muzu tu cestu vytvorit jakou chci, takze adresar muze obsahovat mezery (coz obvykle Windows useri radi delaji).

Potom by samozrejme for machine in $machines; spatne dosazovalo, nasledne nastaveni path a dir by take selhalo.

Pokud se nepletu, beck-quotes jsou "deprecated" a melo by se pouzivat $( kod ) pro spousteni podprocesu, osobne pouzivam konstrukce napr. dir="$( dirname "$machine" )"

A veskere vyhodnocovani promennych davam taky do uvozovek, takze napr. mkdir -p "$BACKUP_PATH/$SERVER/$path"
OndraZX avatar 6.8.2008 16:03 OndraZX | skóre: 27 | blog: OndraZX | Frydek-Mistek
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Mozna se pripoji i dalsi, ale ja osobne bych doporucoval pri praci s adresarema pouzivat uvozovky. Pokud se nepletu, vmware-cmd -l vraci seznam plnych cest konfiguracich VMX souboru VMware. Nevim jak ESX, ale ve vmware-serveru muzu tu cestu vytvorit jakou chci, takze adresar muze obsahovat mezery (coz obvykle Windows useri radi delaji).
Presne muj pripad - opravdu to nefunguje :-(

OndraZX avatar 6.8.2008 16:17 OndraZX | skóre: 27 | blog: OndraZX | Frydek-Mistek
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Presne muj pripad - opravdu to nefunguje :-(
Slo by zde vystavit opraveny script - snad se nekomu jinemu bude hodit

Diky
6.8.2008 20:11 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Odpovědět | Sbalit | Link | Blokovat | Admin
co ti na těch strojích běží? Pokud je to nějaký linux/unix nebylo by zajímavější udělat nějakou základní image systému, data nacpat na externí úložiště a zálohovat jen data případně konfiguraci závislou na dané mašině? Pokud se něco podělá ve virt. stroji tak prostě nahodíš novou mašinu (jsou přece stejné), přimountuješ externí úložiště a jedeš dál...
-- Nezdar není hanbou, hanbou je strach z pokusu.
OndraZX avatar 6.8.2008 21:26 OndraZX | skóre: 27 | blog: OndraZX | Frydek-Mistek
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Ano to je spravna myslenka - a ve VMware Infrastructure je to zaklad dostupnosti. Soubory s image systemu jsou ulozeny na diskovem poli dostupnem z ruznych ESX serveru. V pripade poruchy (nebo i pretizeni serveru) se beh virtualizovaneho stroje automaticky presouva pomoci VMotion z jednoho EXS serveru na jiny. Samozrejme za chodu !!! virtualizovaneho systemu - jeho nedostupnost se pocita v desetinach sekundy. Cela operace trva par sekund. To je to co VMware dela extratridou v oblasti virtualizace. Viz http://www.vmware.com/products/vi/vc/vmotion.html
OndraZX avatar 6.8.2008 21:28 OndraZX | skóre: 27 | blog: OndraZX | Frydek-Mistek
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Ano to je spravna myslenka ...
Ale bohuzel ne kazdy ma vice ESX serveru s Infrastructure a kvalitni diskove pole. :-(
7.8.2008 11:40 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: VMWare ESX záloha Virtuálních mašin
Na těch strojích běží různé virtuální systémy, převážně ale Windows, v současnosti používáme 2 ESX servery v VMWare Infrastructure (VMotion je fakt super) a externí SAN úložiště. Protože zálohovací systém co používáme má licence na mašiny, je toto "levněší" řešení a máme uložený i system state, takže pokud se virtuální mašina podělá (softwarově), tak máme jednoduchý prostředek, jak to opravit.
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
23.9.2008 13:29 Sh
Rozbalit Rozbalit vše VCB?
Odpovědět | Sbalit | Link | Blokovat | Admin
Proc rovnou nepouzit VCB? Je vcelku zbytecne delat veci, ktere uz jednou nekdo vytvoril (a vytvoril je lepe). Dalsi diskutabilni vec je pouziti prikazu CP/SPLIT - do VMFS3 file systemu by se pokud mozno nemelo "hrabat" nicim jinym, nez specializovanymi prikazy (mezi nez patri mmj. i vcbMounter, ktery se da spustit i ze servisni konzole). Dalsi prednosti VCB (ktery je uz od verze ESX foundation v cene)je, ze zalohuje jenom to, co je skutecne potrebat zalohovat. Kdyz budete mit 100GB .VMDK soubor a na nem 3GB osazeno, vas skript odzalohuje 100GB, kdezto VCB. 3GB. Samozrejmosti je, ze VCB vam vytvori a nasledne zapracuje snapshot a velke soubory rozdeli na 2GB velke casti. VCB navic spolupracuje s VC, takze ani nemusite vedet, kde se dane virtualni stroje nalezaji - staci jenom uvest jmeno nebo ip virtualni masiny.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.