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