Jan Dušátko wrote:
> jde mi o nasledujici.
> mam zfspool POOL a v nem treba 10 volumu VOL1, VOL2... VOL10
> 1) Na zacatku udelam snapshot celeho souboroveho systemu
> 2) Denne delam snapshoty pres cely pool (udela i volume)
> 3) Chci prenest jenom rozdilova data na zalozni server, ktery nedela
> nic, jen ceka
Princip je teda jednoduchy:
1) Na zaciatku urobit plnu zalohu
2) Denne urobit inkrementalnu zalohu medzi vcerajsim snapshotom a dnesnym
snapshotom
Trosku ma metu tie volumy. V terminologii ZFS je volume block device. Napriklad
volume pre swap. Ale nikdy som ich nepouzil. Tak neviem, ci myslis block
device, alebo obycajny filesystem. Ale z pohladu zalohovania by to malo byt
jedno.
> Zkousel jsem (pro zkopirovani posledniho existujiciho snapshotu)
> /sbin/zfs send -Rv `/sbin/zfs list -t snapshot | /usr/bin/grep
> "/POOL@VOL" | /usr/bin/cut -f1 | /usr/bin/cut -d " " -f1 | /usr/bin/tail
> -n 1` > /backup/zfs/zfsdata.pool
Chapem spravne, ze to ma zalohovat posledny snapshot *jedneho*
volume/filesystemu?
Trosku ma metie to “/POOL@VOL”… cakal by som “POOL/VOL”.
Ten zapis v backticks by sa dal skratit na:
zfs list -r -t snapshot -H -o name POOL/VOL | tail -n 1
-H - scripting mode (tabulatory namiesto medzier a bez hlavicky)
-o - vypisuje iba menovane property
Teraz su tri moznosti ako zalohovat, ktore ma napadaju a mam vyskusane:
1) Jednoduche zalohovanie, ako som popisoval predtym. Na zaciatku sa pouzije
jednoduche `zfs send snapshot` a potom inkrementalne `zfs send -i snapshot1
snapshot2`. Pozeram, ze predtym som tam mal chybu, vypadlo mi to -i:
zfs send pool/path@daily_2015-11-26 | ssh backup zfs receive pool2/path2
zfs send -i @daily_2015-11-26 pool/path@daily_2015-11-27 | ssh backup zfs
receive pool2/path2
alebo
zfs send pool/path@daily_2015-11-26 | ssh backup zfs receive
pool2/path2@2015-11-26
zfs send -i @daily_2015-11-26 pool/path@daily_2015-11-27 | ssh backup zfs
receive pool2/path2@2015-11-27
2) Zalohovat “rekurzivne” pomocou -R. Inkrementalne potom pomocou -R -I. To
zalohuje vsetky descendant file systems - vsetky snapshoty, clones, rekurzivne
pod-filesystemy a dokonca i properties. Pri prijimani je vhodne potom mat
prepinac -u, aby sa automaticky nenamontovali prenasane filesystemy, pretoze sa
prenasaju i properties a teda i mountpoint a ked sa takto zalohuje /, alebo
/usr, tak to potom konci vytuhnutim systemu. -I zabezpeci, ze sa zalohuju i
intermediary snapshots.
zfs send -R pool/path@daily_2015-11-26 | ssh backup zfs receive pool2/path2
zfs send -R -I @daily_2015-11-26 pool/path@daily_2015-11-27 | ssh backup
zfs receive -u pool2/path2
Obcas je v takomto pripade potreba pouzit u zfs receive prepinac -F. Ten robi
rollback filesystemu na posledny snapshot, takze ked je zaloha namontovana a
zmeni sa, tak to revertne. Treba si davat pozor, ze -F okrem toho maze vsetky
snapshoty u zalohy, ktore neexistuju u zdroja. Takto je mozne ziskat identicke
kopie filesystemov (rekurzivne) do posledneho snapshotu - napriklad sa tak da
zalohovat cely pool. Mne sa na tom nepaci to, ze ked by mi nieco zmazalo vsetky
snapshoty, tak sa zmazu i zo zalohy, takze to -F nepouzivam.
3) Zalohovat “rekurzivne" pomocou -R, ale inkrementalne zalohy pomocou -R -i
(obdoba 2), ale -i namiesto -I). Funguje to rovnako, ale neposielaju sa
intermediary snapshoty.
zfs send -R pool/path@daily_2015-11-26 | ssh backup zfs receive pool2/path2
zfs send -R -i @daily_2015-11-26 pool/path@daily_2015-11-27 | ssh backup
zfs receive -u pool2/path2
Takto to robim ja. Na zdroji robim hodinove, denne aj mesacne zalohy. Na backup
prenasam iba denne zalohy. Keby som pouzil -I, tak sa mi budu prenasat i
hodinove. Na backupe si potom mazem snapshoty, ako potrebujem. Napriklad po
uvodom skopirovani je mozne vsetky snapshoty okrem posledneho zmazat.
> Bohuzel se mi prenasel vzdy cely volume.
Cele sa to musi preniest uplne na zaciatku. Potom zfs send -i alebo -I prenasa
uz iba inkrementalne.
> Pokud jsem dal zfs send a zfs receive, zarvalo mi to na nejake chyby.
Je jedno, ci sa urobi zfs send do suboru a receive potom zvlast zfs receive z
toho suboru, alebo naraz zfs send | zfs receive.
> Moje idea byla v hodinovych intervalech prenaset rozdily pro pripad
> necekane situace. Cilem je mit naprosto identicke prostory.
Naprosto identicke prostory je najlepsie pomocou toho `zfs send -R -I | zfs
receive -F` v pripade, ze nevadi necekana situace, ze niekto zmaze stare
snapshoty.
No a na zaver este poznamka, ze ZFS je zlozite a moze sa teoreticky stat, ze vo
filesysteme vznikne chyba, ktora sa pomocou zfs send | zfs receive prenesie aj
na backup… v najhorsom pripade clovek zostane s nenamountovatenymi
filesystemami aj na backupe. Zatial sa mi to nestalo.
Marian
--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l