Záloha metadat rozdělení disku

Z Wikiverzity

Záloha metadat rozdělení disku

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

Úvod[editovat]

Celý disk může být použit a zformátován jedním souborovým systémem, aniž by byl rozdělen na oddíly (partitions), např. příkazem

mke2fs /dev/sda

Zpravidla však i v případě, že je celý disk určen jednomu souborovému systému, je tento filesystem umístěn v jednom diskovém oddílu; tím spíše, obsahuje-li jeden disk takových diskových oddílů několik.

Žel, mechanismus rozdělení disku je většinou dodnes[1] založen na principech, použitých v prvních osobních počítačích před čtvrt stoletím: Hlavní zaváděcí sektor disku (w: Master boot record, MBR) o délce 512 Bytes obsahuje z větší části zaváděcí kód a pouze 64 Bytes je vyhrazeno pro tabulku rozdělení disku, umožňující uložit popis maximálně čtyř diskových oddílů, a tím pádem na každý oddíl připadá záznam o délce pouhých 16 Bytes. Tato tabulka dříve obsahovala určitou redundaci, neboť jednotlivé oddíly byly popsány jednak souřadnicemi prvního a posledního sektoru oddílu, odvozenými z geometrie disku (Hlava-Sektor-Cylindr), a jednak offsetem prvního sektoru oddílu a jeho velikostí, měřenými počtem sektorů v rámci celého disku (tzv. lineární adresace LBA). Adrese LBA jsou vyhraženy 4 B, tím pádem je možno touto metodou adresovat max. 232 = 4 294 967 296 sektorů. Při velikosti sektoru 512 Bytes je tím velikost celého disku omezena na 429 496 729 sektorů * 0.5 KiB = 214 748 364 KiB = 2 097 152 MiB = 2048 GiB = 2 TiB.

Naproti tomu adresám CHS jsou vyhraženy pouhé 3 B a to tím způsobem, že číslo hlavy je adresováno 8 bity, sektor 6 bity a cylindr 10 bity, proto jsou maximální hodnoty C/H/S určeny trojicí 1023/255/63. Prakticky vyráběné disky mají zpravidla nohem menší počet hlav než 255, ale zato mnohem více cylindrů než 1005. Dlouhou dobu se tento nepoměr řešil tak, že tato čísla prostě neodpovídala fyzické konstrukci disku a čísla se všelijak přepočítávala. Nicméně tak jako tek je adresovací schopnost takového systému omezena na pouhých 224 = 16 777 216 sektorů, což při velikosti sektoru 512 B representuje diskovou adresový prostor max. 16 777 216 *0.5 KiB = 8 388 608 KiB = 8192 MiB = 8 GiB. Vzhledem k tomu, že všechny dnes vyráběné disky jsou větší, je jasné, že je pro ně takováto adresace nepoužitelná. Pokud velikost nějaké souřadnice CHS přesáhne maximální hodnotu, nastaví se prostě na tuto maxiální hodnotu a tím pádem už nenese žádnou užitečnou informaci. Tím pádem se ztrácí redundance, která zde byla, a spoléhá se pouze na hodnoty LBA. Při poškození těchto hodnot jsou ztraceny údaje o rozdělení celého disku a tak chyba v jediném bitu může znamenat pohromu pro všechny filesystémy, které jsou na disku uloženy.

Ještě větší problém vzniká, když je potřeba rozdělit disk na více než čtyři oddíly: v tom případě nemohou být všechny diskové oddíly primárními oddíly, ale jeden z oddílů slouží jako tzv. rozšířený diskový oddíl (extended partition): Tento oddíl je pak dále rozdělen na pododdíly (tzv. logické jednotky); poněvadž se ale metadata o těchto podjednotkách už do MBR nevejdou, jsou umístěny na disku tak, že jedna taková tabulka odkazuje na další, dochází ke zřetězení. Je jasné, že poškození jedné z takových tabulek má katastrofální vliv i na další oddíly.

Struktura záznamu partition table[editovat]

Pro snazší pochopení si uvedeme strukturu jednoho záznamu partition table (takové záznamy jsou v tabulce čtyři):

struct partition {
    unsigned char bootable;        /* 0 or 0x80 */
    hsc begin_hsc;
    unsigned char id;
    hsc end_hsc;
    unsigned int starting_sector;
    unsigned int nr_of_sectors;
}

Utility[editovat]

Pro rozdělení disku na oddíly existuje řada utilit. Každá z těchto utilit je použitelná i pro zobrazení situace, jak je disk rozdělen, a tím pádem je více-či-méně vhodná i pro zazálohování takových důležitých informací. Dále blíže uvidíme, co znamená ono více-či-méně. V následující popise se tedy nebudeme zabývat tím, jak rozdělovat disk, ale omezíme se na to, jakým způsobem můžeme uvedené utility využít k výpisu rozdělení disku bez nebezpečí, že bychom způsobili nějaké nechtěné změny.

cfdisk[editovat]

Většině uživatelů bude tato pseudografická utilita bližší, než striktně řádkově orientované utility fdfisk a sfdisk. Ale jak si ukážeme na příkladě:

tato její zdánlivá uživatelká přítulnost může způsobit mnoho bolení hlavy.

fdisk[editovat]

fdisk je celkem klasická utilita – stejnojmenná utilita existovala již v DOSu. Její užití je celke jednoduché a názorné. Pro prohlížení rozdělení ji ukončíme příkazem q, aniž bychom na disku cokoli měnili.

sfdisk[editovat]

Zde možná bude na místě prohlédnout si nejdřív

man sfdisk

neboť je to poměrně silný nástroj, kde je možné snadno bez většího varování udělat něco, co jsme nechtěli. Bezpečné jsou volby -s a -l.

sfdisk -s čeho velikost (size) čeho: oddílu, celého disku nebo všech disků (bez udání čeho)
sfdisk -l čeho výpis (list) čeho: oddílu, celého disku nebo všech disků (bez udání čeho)
sfdisk -V čeho test (verify) konzistence čeho:
sfdisk -d čeho dump oddílů ve formátu, který bude moci být použit ke znovuvytvoření stejných oddílů. Užitečné právě pro zálohování metadat.

Varování: nespouštějte program sfdisk bez uvedených přepínačů, pokud si předtím pořádně nepřečtete manuál. Spuštění sfdisk bez přepínačů jej rozeběhne v režimu, kdy podle příkazů ze vstupu provádí změny na disku, a tak náhodné mačkání kláves by pak mohlo způsobit, co bychom si nepřáli.

Příklad:

parted[editovat]

Pokročilá utilita pro editaci rozdělení disků včetně možností rozdělování, zmenšování, zvětšování a přesouvání již zformátovaných oddílů s daty. Příklad:

Odkazy[editovat]

  1. Teprve v poslední době se začíná prosazovat standard w: GUID Partition Table(GPT)