Portál AbcLinuxu, 24. dubna 2024 00:59

Na co se často ptáme: Organizácia disku

5. 4. 2004 | Rastislav Stanik
Články - Na co se často ptáme: Organizácia disku  

Článek vysvetľuje organizáciu disku a obsahuje informácie užitočné pro inštalovaní operačného systému a rozdeľovaní disku na partície.

Organizácia disku

Aby počítač mohol pristúpiť k údajom uloženým na disku, môže použiť dve metódy.

CHS (C/H/S)
CHS sú začiatočné písmená slov Cylinder (niekedy označovaný aj ako Track), Head (Hlava), Sector (Sektor). Týmto číslam sa tiež hovorí geometria disku. Disk obsahuje v sebe otáčavé platne s magnetickým povrchom. Nad každým povrchom každej platne sa pohybuje hlavička umožňujúca čítanie a zapisovanie. Mechanicky disk pripomína gramofónovú platňu. Hlavička sa pohybuje na ramienku. Rozdiel je len v tom, že údaje sú usporiadané v kružniciach a nie v špirále, a platní môže byť viac. Skupine kružníc na všetkých platniach rovnako vzdialených od stredu hovoríme cylinder. Každá kružnica je rozdelená na sektory. Typická veľkosť sektoru je 512 bytov. Keď je známa trojica údajov CHS, znamená to, že elektronika disku môže správne nastaviť vzdialenosť ramienka, určiť hlavičku pre vykonanie operácie a počkať až sa pod hlavičkou bude nachádzať ten správny sektor.
LBA
LBA (Logical Block Addressing) je jednoduchší systém, ktorý bol zavedený vtedy, keď počet cylindrov a sektorov na diskoch s väčšou kapacitou prerástol rozsah pamäťových miest v BIOSe či operačnom systéme. Pozícia údajov na disku sa určí jednoducho ako poradové číslo sektoru.

Skutočnosť je ešte o trochu komplikovanejšia. Súčasné disky často klamú o svojej geometrii a navyše sú ochotné pracovať pri rôznych geometriách. Je pravdepodobné, že niektorá z nich je, z hľadiska rýchlosti, optimálnejšia a je tiež pravdepodobné, že niektoré operačné systémy nezvládajú všetky geometrie, alebo sa snažia používať istú geometriu bez ohľadu na výchozí hodnoty disku či nastavenia BIOSu.

Pokiaľ plánujete používať disk v rôznych operačných systémoch, overte si, že všetky budú používať tú istú geometriu. Najlepšie tak, že daný operačný systém skusmo nainštalujete a pozriete sa akú geometriu používa.

Pevný disk sa zvyčajne rozdeľuje na viacero partícií (oddielov). Nutné je to každopádne vtedy, ak na disku má byť uložených viacero súborových systémov. Súborový systém je štruktúra údajov umožňujúca operačnému systému čítat údaje ako je veľkosť súboru, meno súboru, prítupová práva a podobne.

Zopár príkladov:

ext2, ext3, linux-swap, ReiserFS
Používané operačným systémom Linux.
FAT-32
Označovaný tiež ako VFAT. Používaný operačnými systémami Windows 98, ME.
NTFS
Používaný operačnými systémami Windows NT, 2000, XP.

To, kde sa ktorá partícia na disku nachádza, je uložené na dohodnutom mieste: na prvom sektore disku (jeho poradové číslo je 0).

Tento sektor sa označuje ako MBR (Master Boot Record) a to preto, že okrem rozmiestnenia partícií (Partition Table) obsahuje aj úvodnú časť programu, ktorého úlohou je zavedenie operačného systému do pamäti počítača. Tento program sa nazýva Boot Loader. Ak umožňuje zavedenie jedného z viacerých operačných systémv, hovorí sa mu tiež Boot Manager. Kód v MBR musí byť schopný nájsť na disku zvyšok z Boot Loaderu/Managera a nahrať ho do pamäti.

Pozrime sa teraz ako vyzerá Partition Table.

Tabuľka partícií má štyri riadky. Na každom riadku može byť poznačená jedna partícia. O partícii sú v tabuľke zaznačené tieto údaje:

Typ
Môže byť 0 ak partícia nie je použitá. Môže onačovať niektorý typ súborového systému. Alebo može označovať tzv. extended partíciu o ktorej si povieme viac za chvíľu.
Boot flag
Príznak, ktorý hovorí o tom, či je daná partícia bootovateľná - teda či obsahuje bootovateľný operačný systém. Niektoré Boot Loadery a Boot Managery vyžadujú, aby len jedna z partícií mala tento príznak nastavený na 1, iné tento príznak celkom ignorujú.
CHS začiatku
Trojica údajov Cylinder/Head/Sector určujúci, kde partícia začína. Partícia by mala začínať na 0-tom sektore, prvej hlave daného cylindra.
CHS konca
Trojica údajov Cylinder/Head/Sector určujúci, kde partícia končí. Odporúča sa, aby partícia končila na poslednom sektore, poslednej hlave daného sektore. Nie je to nutné, ale niektoré operačné systémy to vyžadujú.
Začiatočný sektor
Poradové číslo sektoru, kde partícia začína.
Počet sektorov
Počet sektorov v partícii

Ako vidíte, rozmiestnenie partícií na disku je zadané dvojmo. Systémom CHS aj LBA. Obidve skupiny údajov musia, pokiaľ možno, navzájom súhlasiť. Inak sa môžete dočkať nepríjemných problémov. To neplatí pre partície za hranicou 1024 cylindrov. O tom si povieme nižšie.

Keď už raz disk porozdeľujete, je vhodné si údaje z tabuľky partícií opísať na papier a uložiť na bezpečné miesto. Je nepravdepodobné, že akýkoľvek antivír či program na opravu disku dokáže túto tabuľku zrekonštruovať ak sa poškodí.

Extended partícia

Ak štyri partície nie sú dosť, môžete jednu (v novších OS aj viac) partíciu vyrobiť ako extended. Takáto partícia je zvláštna tým, že jej prvý sektor obsahuje novú tabuľku partícií. Tak isto ako MBR. Aj táto má štyri položky a má všetky vlastnosti ako tabuľka v MBR. Spolu so schopnosťou obsahovať ďalšie extended partície.

Partície, ktoré nie sú extended, sa v MBR označujú ako primárne. V ostatných tabuľkách sa označujú ako logické disky. Staršie operačné systémy od firmy Microsoft nedovoľujú vytvoriť viacero primárnych partícií.

Niektoré boot managery a boot loadery nedovoľujú nabootovať z logických diskov. Len z primárnych partícií.

Typ Boot flag Začiatok partície Koniec partície Začiatočný sektor Počet sektorov
Head Sector Cylinder Head Sector Cylinder
06 0 1 1 0 239 63 276 63 4188177
07 0 0 1 277 239 63 1023 4188240 23012640
83 1 239 63 1023 239 63 1023 27200880 13668480
05 0 239 63 1023 239 63 1023 40869360 37301040
82 0 239 63 1023 239 63 1023 63 393057
83 0 239 63 1023 239 63 1023 63 7816977
83 0 239 63 1023 239 63 1023 63 29090817

Teoreticky je možné mať viacero logických diskov v jednej extended partícii. Historicky sa však zvyčajne vytvára len jeden logický disk a zvyšný priestor sa v prípade potreby ďalšieho logického disku použije ako vnorená extended partícia a tento logický disk sa vytvorí v nej. Nasledovný obrázok demonštruje usporiadanie tabuľky partícii na disku s dvoma primárnymi partíciami a dvoma logickými diskami:

Primárna partícia č.1
Primárna partícia č.2
Extended partícia
Logický disk č.1
Extended partícia
Logický disk č.2

Realita

LILO
V čase písania tohto dokumentu je aktualna verzia LILO 22.4.1 Počas štartovania súboru je jediné vybavenie schopné pristupovať na disk BIOS, ten ale nie je schopný pristúpiť za 1024 cylinder. Treba si uvedomiť, že aj keby partícia začínala pod limitom, tak casti boot loaderu uložené v súborovom systéme sa nemusia nachádzať na začiatku partície. Preto je vhodné, aby celá partícia potrebná na bootovanie, bola pod limitom 1024 cylindrov. Vďaka linear voľbe môže súčasná verzia prekonať limit 1024 cylindrov prakticky na všetkých systémoch vyrobených po roku 1998.

Lilo je schopné bootovať z extended partície. Pozor však na to, že niektoré programy pre rozdeľovanie disku nie sú ochotné označiť logický disk v extended partícii ako bootovateľný.

NT boot loader
NT boot loader je ochotný bootovať aj iné systémy než MS-DOS či windows. Postup je popísaný v článku Jak na duální boot s Windows 2000. V princípe potrebujete
  1. Získať prvých 512 bytov bootovateľnej partície s nejakým operačným systémom - napríklad takto:

    dd if=/dev/hda2 of=/tmp/bootsec.lnx count=1 bs=512; mcopy /tmp/bootsec.lnx a:
  2. Nakopírovať ziskaný súbor tak, aby bol dostupný pre NT boot manager.
  3. Upraviť boot.ini súbor. V tom mojom je:

    C:\bootsec.lnx="Slackware Linux"

Rozdelenie disku pre Linux

V princípe existujú dva prístupy:

Minimalistický - čo najmenej partícií

Minimum je 0 - a Linux budete bezat z CD alebo z UMSDOS particie. To je ale naozaj riešenie pre tých, ktorí si chcú Linux vyskúšať, ľudí v krajnej núdzi a pre samovrahov.

Trocha lepšia je situácia, ak môžete použiť jednu partíciu. Jej veľkosť je limitom pre to, čo všetko môžete na systéme mať. Kompletná distribúcia Slackware sa vojde na 2 - 3 GB. Mnohé populárne distribúcie uz prerástli niekoľko CD a potrebujú priestoru viac - hlavne ak sa rozhodnete nainštalovať "všetko", čo často znamená, že sa nainštalujú programy, o ktoré za celý život systému nezavadíte.

Tak ako pri predchádzajúcom prípade, aj tu je vhodné mať dosť pamäti. Ak totiž systém dospeje do stavu, že potrebuje viac pamäti, než fyzicky máte, možete zažiť buď pád aplikácie, ktorá takéto podmienky nemá dobre ošetrené, alebo priamo zabitie aplikácie jadrom.

Vyhnúť sa takýmto nepríjemnostiam možno použitím ďalšej partície - swap. Obsah pamäti aplikácií, ktoré nie sú v danom okamihu potrebné, sa odloží na túto partíciu. O vhodnom zvolení jej veľkosti sa možno dočítať na iných miestach, ale v stručnosti možno povedať, že sa upúšťa od dávneho pravidla, že veľkoť swapu by mala byť dvojnásobkom veľkosti fyzickej pamäte a skor sa presadzuje názor, že si treba zrátať, koľko pamäte možu potrebovať programy, ktoré pužívate, trocha prihodiť a je to.

Maximalistický - opierajúci sa o názor "čím viac, tým lepšie"

Začneme partíciou, ktorej používanie sa mi veľmi osvedčilo. Používam ju pre adresár /home. Umožňuje to ľahký upgrade či reinštaláciu bez toho, aby sa nejako dotkla adresárov užívateľov, ale aj napríklad klonovanie tejto partície.

Pridávanie ďalších partícií možno použiť pre zvýšenie bezpečnosti systému. Partíciu totižto možno pripojiť len na čítanie, alebo zakázať spúšťanie programov z nej. Tak napríklad možno vytovriť partíciu pre /var, kde by sa nemali vyskytovať žiadne spustiteľné súbory. Naopak /bin, /sbin, /etc, /opt a /lib môžu byť pripojené len na čítanie a nedovoľovať zápis.

Seriál Na co se často ptáme (dílů: 11)

První díl: Na co se často ptáme 1: LILO, poslední díl: Na co se často ptáme: Balíčkovací systémy.
Předchozí díl: Na co se často ptáme: MPlayer
Následující díl: Na co se často ptáme 4: X Window System - I

Související články

Na co se často ptáme 1: LILO
Jak na duální boot s Windows 2000
Moderní souborové systémy
Na co se často ptáme 2: MPlayer

Odkazy a zdroje

LILO

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.