Organizácia disku

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

Venované mojej manželke Katke, ktorá si myslí, že napísať túto stránku bolo zbytočné.

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.
LBS
LBS 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 BIOS-e č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 default hodnoty disku či nastavenia BIOS-u.

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. Údaje ako je veľkosť súboru, meno súboru, prístupové práva a podobne.

Zopár príkladov.
FAT-12
Používaný operačným systémom MS-DOS pre malé disky a diskety
FAT-16
Používaný operačným systémom MS-DOS pre väčšie disky
FAT-32
Označovaný tiež ako VFAT. Používaný operačnými systémami Windows 98, Windows ME
NTFS
Používaný operačnými systémami Windows 3.51, 4.0, NT, 2000, XP
ext2,ext3,linux-swap,raiserfs
Používané operačným systémom Linux.

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émov, hovorí sa mu tiež Boot Manager. Kód v MBR musí byť schopný nájsť na disku zvyšok z Boot Loader-u/Manager-a a nahrať ho do pamäti.

Pozrime sa teraz ako vyzerá Partition Table.

Tabuľka partícií má štyri riadky. Na každom riadku môž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 označ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 Loader-y 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 LBS. 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 Cylinder Sector Head Cylinder Sector
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 aktuálna verzia LILO je 22.4.1 Počas štartovania súboru jediné vybavenie schopné pristupovať na disk je BIOS, ten ale nie je schopný pristúpiť za 1024 cylinder. Treba si uvedomiť, že aj keby partícia začínala pod limitom, tak časti boot loader-u 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 súčasná verzia môže 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 MSDN Knowlerge Base článku Q123456789 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;mcopy /tmp/bootsec.lnx a:
  2. nakopírovať získaný 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 bežat z CD alebo z umsdos partície. 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ť. Distribúcia Slackware sa vojde na 2-3 GB. Mnohé populárne distribúcie už prerástli niekoľko CD potrebujú 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, môž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ť swap-u by mala byť dvojnásobkom veľkosti fyzickej pamäte a skôr sa presadzuje názor, že si treba zrátať koľko pamäte môžu potrebovať programy, ktoré používate, trocha prihodiť a je to.

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

Začneme Patrí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 vytvoriť Patrí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.

Keď jadro nevie nájsť Patríciu

Pri bootovaní systému je dôležité aby jadro našlo partíciu s hlavným súborovým systémom. V prípade, že ju nenájde dostanete na obrazovke takéto hlásenie.

VFS: Unable to mount root fs on XX:YY
Namiesto XX:YY bude číselný kód zodpovedajúci partícii, kde jadro hľadá hlavný súborový systém. Pre IDE disky na prvom radiči má XX hodnotu 03, na druhom radiči je to 22. Pre SCSI disky je to 08. Sú to takzvané major čísla zodpovedajúcich zariadení. Kód YY je minor číslo zariadenia zodpovedajúceho danej partícii. Teda napríklad 03:02 znamená druhú partíciu na prvom disku. V prípade, že kód zariadenia, ktoré obsahuje hlavný súborový systém, je správne (čo sa dá overiť alebo aj nastaviť programom rdev), treba si ešte overiť, že jadro obsahuje ovládač pre hlavný súborový systém. Tento ovládač nemôže byť vo forme modulu, pretože jadro by nevedelo tento modul nájsť na disku aby ho nahralo.


TODO