Hlavní navigace

PC-BSD: způsoby a možnosti zálohování

Jaromír Vojtaj 15. 7. 2013

Dnešní a další jeden až dva díly se v našem dlouhém seriálu o PC-BSD budeme poměrně podrobně věnovat možnostem a způsobům zálohování v tomto operačním systému. Něco z toho bude v přímé souvislosti se systémem, něco zase pro změnu obecné pro ZFS a něco úplně obecné i pro další *BSD a linuxové systémy.

Na systém zálohování desktopu se můžeme podívat z různých pohledů a hledisek. Je asi dost těžké říct, co je úplně správné a nejlepší. Co je ale úplně jednoduché a jasné? Pamatujte si: Nejhorší je nezálohovat nikdy a vůbec nic!

Zvolený systém zálohování závisí na několika věcech jako je HW konfigurace, priority uživatelských dat, způsob provozu stroje a některé další. Abych zde nevedl příliš teoretické úvahy, nastíním tok svých myšlenek při nastavení systému zálohování.

– budu zálohovat tři různé bloky dat: kompletní HOME, uživatelská data v HOME a exportované jaily

– na zálohu nebudu používat žádné komplexní a náročné aplikace kromě jiného i proto, že mi stroj neběží 24 hodin denně a není nutné ho zatěžovat nějakým složitým zálohovacím softwarem

– budu se maximálně snažit využít nástroje, které mi nabízí samotný systém a instalovat minimum dalších aplikací

– zálohy se budou ukládat v první řadě na interní diskový prostor a následně potom na externí pevný disk

Zálohování kompletního HOME – interní

Pro zálohy kompletního HOME se bude využívat vlastností ZFS – vytváření a odesílání snapshotů. V první fázi se budou snapshoty vytvářet každý týden včetně jejich odeslání do komprimovaného souboru ve vyhrazeném interním úložišti.

Pro interní uložení všech plánovaných zálohy se vytvoří dataset zalohy. Je nutné vytvořit dataset pomocí nástrojů ZFS a ne jenom adresář třeba prostřednictvím správce souborů. Je to kvůli nastavení přípojného bodu, který je nutný pro systém snapshotů.

Aby nebylo nutné se k tomu vracet později, popíšu na tomto místě vytvoření všech zálohovacích úložišť. Jako první se vytvoří základní dataset:

# sudo zfs create tank1/zalohy

# zfs list
NAME                                                    USED    AVAIL  REFER  MOUNTPOINT
tank1/zalohy                                       59,2G   708G    209K      legacy

Pro uložení konkrétních bloků záloh se vytvoří tři datasety:

– backup – zálohy uživatelských dat

– jails – zálohy exportovaných souborů WDN

– snaps – zálohy souborů se snapshoty kompletního HOME

Toto se provede následujícími příkazy včetně nastavení přípojných bodů:

# sudo zfs create -o mountpoint=/zalohy/snaps tank1/zalohy/snaps

# sudo zfs create -o mountpoint=/zalohy/backup tank1/zalohy/backup

# sudo zfs create -o mountpoint=/zalohy/jails tank1/zalohy/jails

Výsledek je zde (aby nebyla mýlka, už jsou zde uloženy některé zálohy!):

# zfs list
NAME                USED   AVAIL  REFER  MOUNTPOINT
tank1/zalohy        61,1G   708G   209K     legacy
tank1/zalohy/backup 31,1G   708G   31,1G    /zalohy/backup
tank1/zalohy/jails  1,90G   708G   1,90G    /zalohy/jails
tank1/zalohy/snaps  28,1G   708G   28,1G    /zalohy/snaps

U žádného z uvedených datasetů není nutné měnit nastavená práva. Je to z toho důvodu, že se do nich budou ukládat soubory a adresáře, které vznikají pod administrátorem.

Vzhledem k tomu, že se jedná o zálohovací úložiště, bylo by asi vhodné uvažovat o nastavení některých dalších vlastností. Pro tento daný účel by se mohlo jednat o nastavení komprese a deduplikace datasetů. Já konkrétně zatím využiji pouze kompresi. Z deduplikace mám trochu obavy ohledně výkonu systému. Je samozřejmě možné využít a nastavit i další vlastnosti. Jejich přehled je vidět třeba na docs.oracle.com.

Komprimaci všech datasetů nastavíme pomocí příkazů:

# sudo zfs set compression=on tank1/zalohy/backup

# sudo zfs set compression=on tank1/zalohy/jails

# sudo zfs set compression=on tank1/zalohy/snaps

Základní volby jsou on a off (ve výchozím stavu on = lzjb). Ostatní volby jsou: lzjb, gzip, gzip[1–9] a zle. Celkové nastavení a konkrétní hodnoty parametrů vybraného datasetu je možné zjistit příkazem

# zfs get all tank1/zalohy/backup

Jeho výstup je v souboru zfs-get-all.txt. Pokud by nás zajímal jenom kompresní poměr, je příkaz následující:

# zfs get compressratio tank1/zalohy/backup
NAME                    PROPERTY       VALUE  SOURCE
tank1/zalohy/backup  compressratio      1.00x  -

Samotnou zálohu systému pomocí snapshotů můžeme rozdělit do tří kroků:

1. kontrola systému pomocí funkce scrub

2. vytvoření snaphotu

3. odeslání snaphotu

O scrubbingu jsem již psal, takže jenom připomenu doporučení, aby se prováděl na běžných „desktopových“ discích jednou týdně. To plně koresponduje s předpokládanou frekvencí vytváření a ukládání snapshotů HOME.

1. scrubbing

Pro spuštění akce jsem si vytvořil jednoduchý skript – viz soubor scrubit.txt.

Po jeho spuštění a zadání hesla roota se v terminálu zdánlivě nic neděje, ale operace probíhá. Kontrolu průběhu je možné provést pomocí příkazu:

# zpool status

Pokud scrubbing probíhá, ukazuje tento příkaz postup akce. Po jejím ukončení se výstup příkazu změní následovně (uvádím jenom první část výstupu bez přehledu disků):

pool: tank1
state: ONLINE
scan: scrub repaired 0 in 0h26m with 0 errors on Wed Jun 19 12:15:09 2013

Zatím jsem tuto operaci prováděl 3× a výsledky jsou následující: nebyla nalezena žádná chyba. Při prvním běhu byla velikost celého poolu 140 GB a doba trvání 26 minut (průměrná rychlost tedy cca 90 MB/s). Při druhém běhu byla velikost 329 GB, doba 50 min a rychlost 110 MB/s. Při třetím běhu byla velikost 379 GB, doba 56 min a rychlost 113 MB/s.

Průběh operace je možné kdykoliv zarazit příkazem

# sudo zpool scrub -s tank1

2. vytvoření snapshotu

Obecně lze snapshot vytvořit příkazem

# sudo zfs snapshot tank1/usr/home/vojtaj@snap-name

Pokud by byly v daném datasetu ještě nějaké další jako podadresáře, je lepší volit rekurzivní provedení:

# sudo zfs snapshot -r tank1/usr/home/vojtaj@snap-name

Přehled vytvořených snapshotů je možné vyvolat příkazem:

# zfs list -t snapshot
NAME                                                                    USED  AVAIL     REFER  MOUNTPOINT
tank1/usr/home/vojtaj@2013-06-19                                    339M      -         14,3G       -
tank1/usr/home/vojtaj@2013-06-23                                    502M      -         14,6G       -
tank1/usr/home/vojtaj@2013-07-01                                    125M      -         14,2G       -
tank1/usr/jails/.warden-template-9.1-RELEASE-amd64@clean    11,6K      -        399M        -

Jak je z předchozího výpisu zřejmé, velikost samotných snapshotů (USED) není v porovnání s celkovou velikostí datasetu (REFER) nijak závratná. Také jejich vytvoření je v podstatě okamžité.

Snapshot je běžným datasetem, takže je možné ho běžným způsobem odstranit:

# sudo zfs destroy tank1/usr/home/vojtaj@2013-06-23

Já jsem se konkrétně rozhodl při tvorbě snapshotů jako názvu použít časovou značku ve tvaru RRRR-MM-DD. Příkaz pak vypadá následovně:

# sudo zfs snapshot -r tank1/usr/home/vojtaj@`date +%Y-%m-%d`

Možná zbytečně, ale přesto raději pro jistotu upozorním: časová značka je uzavřena do obrácených apostrofů (na mojí klávesnici kombinace Pravý Alt + Tilda).

Kdo by chtěl, může samozřejmě dále rozšířit obdobným způsobem časovou značku o hodiny, minuty a vteřiny.

Více o vytváření a odstraňování snapshotů je na docs.oracle.com.

Se snapshoty je možné provádět kromě jiných ještě další dvě zajímavé operace – klonování a export/import. Pro můj případ nejsou klony zatím moc přínosné, takže jenom odkážu na jejich bližší popis.

V příštím dílu dokončím tuto část zálohování popisem exportu snapshotu do souborů a budu se věnovat zálohování uživatelských dat.

Našli jste v článku chybu?
Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Root.cz: Telegram spustil anonymní blog Telegraph

Telegram spustil anonymní blog Telegraph

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Měšec.cz: Golfové pojištění: kde si jej můžete sjednat?

Golfové pojištění: kde si jej můžete sjednat?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky