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 (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem