Záloha metadat souborového systému

Z Wikiverzity

Záloha metadat souborového systému

Nadřazený článek: Záloha metadat disků

Úvod[editovat]

Pokud je úložištěm dat pevný disk nebo podobné médium, pak metadaty jsou např. tabulky rozdělení disků či tabulky, používané různými souborovými systémy. Například. pro starodávné souborové systémy z doby vzniku MS-DOSu jsou takovými kruciálními metadaty alokační tabulky souborů, FAT, proto tyto tabulky jsou zpravidla zdvojeny – ovšem jedna leží vedle druhé na začátku disku a tak při poškození této oblasti jsou zničeny obě. U Unixových souborových systémů mají takovou důležitost superbloky, jejichž identické kopie se pravidelně opakují po celé oblasti disku, proto zničení jedné části disku nemusí ještě znamenat katastrofu pro zbývající data.

Smysl má každopádně si zazálohovat takové údaje o filesystému, které se v průběhu jeho obvyklé činnosti nemění, jako je například počet a velikost alokačních jednotek, rozložení superbloků atd.

Jinak je ale problém se zálohováním medatat souborových systémů v tom, že soubory na disku se neustále mění a proto se mění i obsah těchto medatat. Problém, jak uchovat tato metadata konsistentní i v případě různých nehod a poruch (např. výpadek napájení) je zásadním problémem, který musí řešit návrháři souborových systémů. Na nás jakožto na uživatelích je, abychom si pro naše data vybrali pokud možno spolehlivý, robustní a osvědčený souborový systém a dobře zvážili využití různých voleb a parametrů, které se nám zpravidla při vytváření souborového systému na disku (formátování disku) nabízí (např. žurnál).

Další možnosti, jak metadata souborového systému zálohovat, závisí na konkrétním druhy použitého souborového systému

Souborový systém[editovat]

ext2, ext3[editovat]

Případ souborového systému ext2 (nebo ext3, což je v podstatě ext2 vybavený žurnálem):

mke2fs je utilita na vytváření souborového systému na disku (formátování disku); přitom je dobré se dobře seznámit se všemi možnými parametry, které je přitom možné nastavit. Zvláštní pozornost si zaslouží:

-c spuštění utility badblocks před formátováním disku. Za úvahu stojí spustit badblocks ručně ještě před spuštěním mke2fs, a to s důkladnější kontrolou, než jaká se použije při použití mke2fs -c
-j  vytvoření žurnálu (tj. namísto ext2 se vytvoří ext3)
-J volby pro žurnálování

tune2fs nám umožní dodatečně měnit některé parametry filesystému (intervaly pro pravidelné kontroly, nastavení žurnálu aj.)

e2fsck je nástrojem k pravidelné kontrole souborového systému – ale pozor, tuto kontrolu zásadně provádíme na 'nepřimontovaném' filesystému! (Určitou možností je spuštění na souborovém systému, namontovaném jako read-only.) e2fsck se zpravidla spouští automaticky při bootu systému v případě, že od poslední kontroly byl systém bootován už vícekrát anebo uplynula určitá delší doba (tyto parametry nastavujeme při formátování systému anebo kdykoli utilitou tune2fs). V případě, že utilita e2fsck selže z důvodu poškozeného superbloku, je možné ji spustit (volba -b) s alternativním číslem superbloku. Ale jak toto číslo zjistit?

dumpe2fs nám poskytne základní informace o filesystému v dobře čitelné podobě. Proto je dobré uchovat si stranou (na jiném počítači, na CD apod, případně vytištěný na papíře) výstup této utility, případně alespoň její zkrácený výstup (volba -h).

Primární superblok se nachází ve skupině č. 0 a je to tedy blok s číslem 1. Důležitým údajem je pak velikost skupiny. Pokud např.:

Blocks per group:         8192

pak můžeme záložní superblok hledat ve skupině č.1, tj. jako blok s číslem 8193. Dalším záložní superblok bychom mohli hledat ve 2. skupině jakožto blok 2 * 8192 + 1 = 16385, ale pozor! Ne každá skupina musí obsahovat záložní superblok, a to je potřeba vědět. Například mohou být záložní superbloky umístěny ve skupinách se sudým číslem, tedy další zálohu najdeme v bloku č. 3 * 8192 + 1 = 24577.

e2image je utilitou, vytvořenou přímo za účelem zálohování metadat souborového systému. Na rozdíl od dumpe2fs, vytvářejícího čitelný textový soubor, je ale jeho použití složitější a smysl utility je jiný: e2image vytvoří z celého souborového systému obraz, tzv. image-file, kterýžto soubor je dost velký – řádově na každý GB souborového disku počítejme MB velikosti image-file, ale může se hodně lišit dle množství i-nodů aj. Podle tohoto obrazu je možno pokusit se poškozený filesystém restaurovat do stavu, v jakém byl v okamžiku, ve kterém byl vytvořen jeho obraz, tzn., že všechna data, která bylo do filesystému uložena po jeho vytvoření, budou ztracena.

Užití utility e2image pro vytváření obrazu proto může být v zásadě dvojí:

  1. Pravidelné vytváření a ukládání obrazů filesystému (samozřejmě na jiné místo, než je tento filesystém): V případě jinak neopravitelné havárie pak zbyde šance zachránit alespoň nějaká data
  2. Vytvoření obrazu před zahájením pokusů o obnovení filesystému; v případě, že tento pokus bude neúspěšný a nám se toho podaří pokazit ještě více, než to pokažené bylo, máme šanci vrátit se do předchozího stavu

Abychom to neměli tak jednoduché, utilitou e2image si můžeme vygenerovat dva druhy obrazů: buď "standardní" ('normal' či 'standard' image file) anebo tzv. "raw" (raw image file). Rozdíly mezi oběma soubory se pokusíme objasnit přehlednou tabulkou:

vlastnost standardní obraz raw obraz
příkaz e2image filesystem obraz e2image -r filesystem obraz
obraz je vytvářen zápisem do souboru "napřeskáčku" (random access) jako raw, tj. v jednom proudu
a tím pádem metadata jsou ve výsledném souboru zpřeházená uložená na své místě
a tím pádem utility e2fsck, dumpe2fs, debugfs atd. mají komplikovanější práci mohou pracovat přímo s tímto obrazem
Co se týče nepřímých a adresářových bloků ('indirect blocks' a 'directory'), daný obraz je zatím neobsahuje (pracuje se na tom, že v příštích verzích bude) obsahuje
Pokud potřebujeme zabránit exportu takových informací (např. utajit názvy souborů při hlášení bugreportu), použijeme volbu pro 'scramble': (zatím není nutné) e2image -rs
Výsledný obraz je řídký ještě řidší ('sparse file')
a jeho velikost je velká ještě větší
a proto obou případech řídké soubory v případě potřeby kopírujeme příkazem cp --sparse=always
Nezkomprimovaný obraz pak může být přibližně 30x – 300x menší než velikost filesystemu je ještě o něco málo větší, než velikost celého filesystemu
Komprimační poměr je u řidšího souboru příznivější, dejme tomu: 10:1 – 100:1 100:1 – 1000:1
takže velikost zazipovaného obrazu je pak dejme tomu 1000x – 10000x menši než velikost filesystemu 200x – 2000x menší než velikost filesystemu
Během generování ale obraz není možno přesměrovat je možno přesměrovat do standardního výstupu
příkazem (pomlčka na místě názvu souboru) NELZE e2image -r filesystem -
a vytvářet kolony například pro zipování: NELZE e2image -r filesystem - ¦ bzip2 > nazev.e2i.bz2
Pro restaurování filesystému podle uloženého zazipovaného obrazu musíme tento obraz nejdřív předem rozzipovat a pak (s nejvyšší obezřetností) restaurujeme volbou -I e2image -I filesystem obraz     (není jasné, jestli u 'raw' je nutný přepínač –r)


Příklad 1: z běžně vytvořené filesystému ext3 (tj. s defaultními hodnotami) o velikosti 304 MB zaplněného na 83% se vyprodukuje obraz
obraz velikost obrazu vel. filesystem:obraz vel. po komprimaci bz2 komprimační poměr vel. filesystem:kompr.obraz
normální 9,9 MB 30:1 339 KB 30:1 900:1
raw 314 MB 1:1.03 1,2 MB 260:1 250:1
Příklad 2: z běžně vytvořené filesystému ext3 (tj. s defaultními hodnotami) o velikosti 5.1 GB zaplněného na 98% se vyprodukuje obraz
obraz velikost obrazu vel. filesystem:obraz vel. po komprimaci bz2 komprimační poměr vel. filesystem:kompr.obraz
normální 90 MB 55:1 1.2 MB 75:1 4000:1
raw > 5.1 GB nezj. 3.8 MB nezj. 1300:1