Dva způsoby zálohování snapshotů btrfs

Dnes si představíme dva způsoby zálohování BTRFS snapshotů. Jeden starší a „naivní“, druhý modernější a rychlejší.

BTRFS používám pro své home (a obecně pracovní) adresáře už více než dva roky k maximální spokojenosti. Přibližně stejně dlouho mám v cronu skript, který každý den udělá snapshoty všech subvolume. Snapshot mi tak slouží k tomu, aby se daly velmi rychle obnovit soubory, které si uživatel omylem smaže.

Stejně tak zálohuji (známý to pojmenoval Heronův způsob zálohování ;)) vzdálené servery pomocí Rsync na místní BTRFS a každá záloha (která díky úspornosti Rsync a BTRFS může být velmi často, klidně každou hodinu) tak představuje jeden snapshot.

Samozřejmně snapshoty, na stejném diskovém zařízení, stejném počítači, jako originální data, nepředstavují zálohu. Tato data je potřeba korektně zálohovat.

Starší způsob pomocí SquashFS

SquashFS se používá především pro Live CD a různé embeded zařízení. Jedná se o speciální systém souborů pouze pro čtení, který má některé další velmi výhodné vlastnosti. Tou první je komprimace bloků (data i metadata) a tou druhou je deduplikace na úrovni bloků. Snahou je pochopitelně ušetřit maximum místa.

Všechny tři tyto vlastnosti lze s výhodou použít při archivaci snapshotů. Vytvoření SquashFS archivu je velmi jednoduché.

Máme-li tedy v adresáři snapshoty, například:

backup_20131129-1105
backup_20131130-0312
backup_20131130-0400
backup_20131201-0311

Můžeme snadno vytvořit archív pomocí:

mksquashfs backup* /storage/ARCHIVES/backup.squash -keep-as-directory

A to je celé. :-) Archiv lze stejným způsobem i updatovat, příkaz mksquashfs nové adresáře připojí do existujícího archivu.

SquashFS archív (nebo chcete-li obraz souborového systému) lze kdykoliv připojit pomocí:

mount /storage/ARCHIVES/backup.squash /mnt/squash -o loop

A procházet jako kterýkoliv jiný systém souborů.

Pozornému čtenáři ale neunikne, že tu něco skřípe. Při vytváření squashfs se čtou všechny soubory ve snapshotech zkrátka jako kterékoliv jiné obyčejné soubory. SquashFS potom musí samo detekovat stejné bloky a provádět nákladnou deduplikaci. Nevyužívá žádnou informaci o tom, které bloky kterých souborů jsou na BTRFS sdílené (COW).

Výhody:

  • Tento způsob zálohování / archivace lze použít pro libovolný FS, nejen BTRFS.
  • Velmi malá velikost díky deduplikaci, komprimaci.
  • Archiv lze kdykoliv zpřístupnit jako kterýkoliv jiný FS.

Nevýhody:

  • Čtení dat bez logického využití informací o sdílených COW blocích.
  • Z tohoto důvodu je to pomalejší, než by mohlo být.
  • Nemusí být zachovány všechny rozšířené atributy souborů.

BTRFS send / receive

S pokračujícím vývojem BTRFS přišla i funkcionalita známá z ZFS, tedy send a receive. Příkaz send vytvoří dump subvolume, který lze potom na btrfs importovat pomocí receive. Je to analogie unixového příkazu dump a restore.

Send nefunguje přímo na subvolume, ale pouze na read only snapshot. Ten se vytvoří snadno pomocí:

btrfs subvolume snapshot -r backup backup-20131203

Potom již můžeme udělat dump tohoto snapshotu pomocí:

btrfs send backup-20131203 > /storage/ARCHIVE/backup.snp

Obnovení tohoto snapshotu na BTRFS se dělá příkazem:

btrfs receive /mnt/data < /storage/ARCHIVE/backup.snp

Příkaz v /mnt/data vytvoří subvolume backup a obnoví do ní dump backup.snp.  Pochopitelně, nemusí se jednat o stejný stroj. V praxi tak můžeme přenášet subvolume mezi různými servery a to buď pro účely pouhé zálohy, či pro rychlé a efektivní migrace dat se zachováním všech atributů.

Příkaz btrfs send umí pracovat také v inkrementálním režimu, kdy do výsledného dumpu pošle pouze rozdíly mezi dvěma snapshoty. Při obnově pomocí btrfs receive se pak musí postupovat od nejstaršího inkrementu k nejnovějšímu (jak je u inkrementálních záloh ostatně zvykem).

Pro další informace doporučuji článek na BTRFS wiki.

Výhody:

  • Nativní nástroje přicházející společně s BTRFS.
  • Rychlé.
  • Kompletní záloha všech vlastností souborů.
  • Pomocí inkrementálních „sendů“ lze zálohovat posloupnost snapshotů.

Nevýhody:

  • Dump BTRFS nelze připojit jako běžný systém souborů, k záloze se lze dostat pouze po jejím kompletním obnovení na BTRFS (to není nevýhoda, jako spíš vlastnost dumpu FS).
  • Nelze obnovit data na jiný FS, než právě BTRFS.
Příspěvek byl publikován v rubrice BTRFS, Systémy souborů. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

1 komentář u Dva způsoby zálohování snapshotů btrfs

  1. Pingback: SquashFS, aneb proč jsem neznal xz | Heronovo

Komentáře nejsou povoleny.