Partíciós tábla

operációs rendszer által karbantartott tábla egy lemezen, amely leírja a lemez partícióit
(GPT szócikkből átirányítva)

A merevlemez területét már az egész korai időkben részekre, ún. partíciókra osztották, eredetileg azért, hogy többféle operációs rendszert lehessen a merevlemezen tárolni, és azok fájljai ne keveredjenek össze. Minden partíción külön fájlrendszer található; az operációs rendszerek általában csak a saját fájlrendszereiket ismerik, így el sem tudják olvasni a többi partíció adatait. (Ez alól kivétel a Linux és néhány más Unix-szerű operációs rendszer, amely sok nem Unix-szerű operációs rendszer fájlrendszerét is ismeri.)

A felosztott diszkterületek helyét és méretét a partíciós tábla tartja nyilván.

A partíciós tábla alakja, a partíciók legnagyobb száma géptípusonként változó, de egy géptípuson belül azonos (hisz épp az a célja, hogy az operációs rendszerek osztozni tudjanak a diszk területén).

A Unixot és a Unix-szerű operációs rendszereket C nyelven írták, hogy viszonylag könnyen lehessen portolni őket különböző géptípusokra. A linux debian disztribúciójának 9., stretch nevű verziója pl. 10 különböző géptípuson működik. A portolhatóság kiváltotta a partíciós táblák egységesítésének igényét. A szabványosított partíciós tábla neve GPT (Guid Partition Table).

E szócikkben az IBM-kompatibilis PC-k hagyományos partíciós táblájával és a GPT-vel foglalkozunk.

A DOS/MBR partíciós táblaSzerkesztés

Az első merevlemezes IBM-kompatibilis PC az XT(en) volt, melynek a partíciós tábláját lényegében a mai napig használják a PC-ken.

Elsődleges partíciókSzerkesztés

A partíciós tábla a master boot recordban, vagyis a diszk első szektorában található a szektor nevét adó boot loaderrel együtt. 4 partíció helyét tárolja 16-16 bájton. A tábla az 512 bájtos szektor 0x1BE hexadecimális címén kezdődik, és a szektor végéig tart. A 4×16 bájt után két bájt (0x55 0xaa) jelzi a tábla végét, egyúttal azt is, hogy a partíciós táblát létrehozták-e.

Egy partíció leírása:

  • +0: boot flag (0x80 vagy 0)
  • +1-3: a partíció elejének CHS-címe
  • +4: a partíció típusa
  • +5-7: a partíció végének CHS-címe
  • +8-11: a partíció elejének szektorszáma
  • +12-15: a partíció végének szektorszáma

Látható, hogy ugyanaz az információ (a partíció eleje és vége) kétféleképpen van megadva: CHS-címmel és abszolút szektorszámmal, az egyik 3, a másik 4 bájton, azaz a megadható méret sem azonos. Ha a méret nem ábrázolható 3 bájton, akkor a CHS-cím a maximális értéket (csupa 1-est) tartalmaz, a tényleges méreteket a szektorszámok adják.

A szektorszámokkal megcímezhető legnagyobb méret 232 · 512 bájt = 241 bájt, azaz 2 TByte. Ennél nagyobb diszk nem partícionálható a DOS/MBR típusú táblával.

A szektorszám 0-val kezdődő szektor sorszám, a 8086/8088-as processzorcsalád számábrázolásának megfelelően a legkisebb helyiértékű bájttal kezdve.

A CHS-cím első bájtja az olvasófej száma 0-tól számozva. A 2. bájt alsó hat bitje a szektorszám 0-tól számozva. A cilinderszámot a 2. bájt felső két bitje és a 3. bájt adja 10 biten.[1]

Kiterjesztett partíció, logikai partíciókSzerkesztés

A 4 partíció nagyon hamar kevés lett. Egy partíciót sok szállítónál elfoglaltak a hardver diagnosztikai programok, egy másikat a boot manager, a harmadikat a DOS, így csak egy szabad partíció maradt más operációs rendszer számára. A Novell NetWare eleve két partíciót igényelt: egy DOS-t és a saját Novellt, de ebben az időben kísérletezett a Microsoft a Xenix-szel(en), a Digital Research(en) a többfelhasználós DOS-szal(en).

A kompatibilitás érdekében a Microsoft azt találta ki, hogy az egyik partíciót feláldozza egy újabb partíciós tábla és annak partíciói számára.[2] Ezt a partíciót hívják kiterjesztett partíciónak (típusa: 5), az általa tartalmazott partíciókat logikai partícióknak.

A kiterjesztett partícióban minden partíció előtt van egy DOS/MBR-rel azonos szerkezetű partíciós tábla, amely két partíciót tartalmaz: az adott partíció előtti és utáni logikai partició partíciós táblájának helyét. A partíciókat tehát láncolt listába szervezi; így elvileg tetszőleges számú logikai partíció hozható létre (bár a Microsoft-szoftverek a CP/M-örökség[3] miatt csak annyi partíciót tudnak használni, ahány betű az angol ábécében van, és ebbe az összes diszk beleértendő).

A szektor boot loader része üres, legalábbis a Microsoft szoftverek nem használják: azok csak elsődleges partícióból tudnak bootolni. A linux igen: mind a grub, mind elődje, a lilo(en) képes kiterjesztett vagy logikai partícióból is bootolni. A linux nem használ betűzést, így a betűk száma sem köti a logikai partíciók létrehozásában.[4]

DOS/MBR partíciós tábla használata UEFI-bőlSzerkesztés

Az IBM PC-kompatibilis számítógépek UEFI-jében szinte mindig van Compatibility Support Module(en), ami lehetővé teszi a bootolást DOS/MBR partícióból. A 0xEF típusú DOS/MBR partíció megfelel a GPT boot partíciójának. vfat32-re kell formázni, ugyanoda lehet tenni a boot loadert, mint GPT-ben.

GUID partíciós táblaSzerkesztés

A GUID (Global Unique IDentifier), más néven UUID az egész világon nagy valószínűséggel egyedi 128 bites (16 bájtos) azonosító. Az egyediséget nem ellenőrzi semmi, de a gyakorlatban igen kicsi a valószínűsége, hogy az adott algoritmussal előálló azonosítónak párja van.

A partíciós tábla azért kapta ezt a nevet, mert mind a tábla, mind az egyes partíciók GUID-et kapnak. A GPT a szabványosított számítógép firmware, az UEFI(en) része, de IBM PC-kompatibilis gépen BIOS firmware-rel is használható (bizonyos BIOS-oknál csak megkötésekkel). Az Intel fejlesztette ki az 1990-es évek végén. Számos előnye van az DOS/MBR típusú partíciós táblával szemben:

  • a méretkorlátját belátható időn belül nem fogják elérni a tárolóeszközök
  • legalább 128 partíciónak van benne hely; nagyobb tábla is létrehozható
  • a partíciók egyenrangúak (nincs elsődleges/logikai megkülönböztetés, és nincs kiterjesztett partíció).

A diszkterületre logikai blokkcímmel hivatkozik, nem használja a cilinder/fej/szektor-alapú blokkcímzést.

A Windows a 2008-as kiadás óta ismeri, a linux még régebben. Több program képes adatvesztés nélkül átkonvertálni a DOS/MBR partíciós táblát GPT-re (pl. linuxban a gdisk). Az átalakítás után azonban a diszk bootolhatatlanná válik: újra kell telepíteni a boot managert (lásd alább).

A partíciós tábla felépítéseSzerkesztés

A blokk általában 512 bájt, de különleges diszkek esetén növelhető.

  • 0. blokk: MBR-alakú blokk a kompatibilitás érdekében (protective MBR). Egyetlen, 0xEE (GPT) típusú partíciót tartalmaz, mely a teljes diszket elfoglalja. Ez a megoldás lehetetlenné teszi DOS/MBR partíció létrehozását a diszken, ami elrontaná a GPT-adatokat.
  • 1. blokk: elsődleges GPT Fejléc
    • a lemez egyedi GUID-ja
    • az elsődleges partíciós tábla helye és a lehetséges bejegyzéseinek száma
    • a másodlagos (tartalék) GPT fejléc helye
    • a partíciós tábla ellenőrző összege
  • 2. blokktól: elsődleges partíciós tábla
  • partíciók…
  • másodlagos partíciós tábla
  • másodlagos GPT fejléc (a diszk utolsó szektora)

A másodlagos partíciós tábla és GPT fejléc azonos az elsődlegessel, annak sérülésekor használatos.

Egy partíció adataiSzerkesztés

Egy partíciós bejegyzés alakja (128 byte):

Offset Hossz Jelentés
0 16 típus GUID
16 16 partíció GUID
32 8 első szektor
40 8 utolsó szektor
48 8 attribútumok (64 bit)
56 72 név

Mint látható, a DOS/MBR-beli egybájtos típusnak itt 8 bájtos GUID felel meg. A szektorok helyét 8 bájt adja meg az MBR-beli 4-gyel szemben; ezzel 264 · 512 = 273 bájt, azaz 233 TByte méretű diszk partícionálható.

A tábla szakított a cilinder/fej/szektor alakú megadással egyrészt a felesleges redundancia miatt, másrészt e fogalmaknak memóriakártya vagy pendrive esetén nincs is értelmük. A redundanciát a GPT fejlécében található ellenőrző összeg biztosítja.

Bootolás GPT-partícióból BIOS módbanSzerkesztés

BIOS módban a grub az MBR és az első partíció közötti senki földjén bújik meg, GPT-ben azonban nincs ilyen hely. A grub viszont képes beletelepülni a GPT BIOS típusú partíciójába (4-es partíciótípus fdisk-ben) diszk-kép formájában; éppen ezért a partíción nem kell fájlrendszert sem létrehozni. A grub-install parancsban a teljes diszket kell megadni: a grub megtalálja a partícióját. A partíció mérete egészen kicsi lehet: 10M is elég.[5]

JegyzetekSzerkesztés

  1. A méretekből is látszik, mennyire elszámolták magukat annak idején a tervezők. 256 olvasófeje egyetlen diszknek sincs, ellenben 64 szektornál jóval több lehet egy track-en(en).
  2. Egy másik lehetőség lett volna az MBR utáni, a DOS által nem használt szektorral/szektorokkal bővíteni a partíciós táblát. Ezt azért vetették el, mert más gyártók szoftverei viszont használták a területet különböző célokra (pl. ide települtek a boot managerek), bár annak sem a mérete, sem a célja nem volt specifikálva.
  3. A DOS 1-es verziója az eredetileg 8 bites CP/M operációs rendszer 16 bitre átírt változatának átdolgozása volt. Az eredeti CP/M hívások a mai napig megtalálhatók a Microsoft szoftverekben. A drive-ok betűzése a CP/M-ből származik.
  4. Ettől függetlenül nem célszerű túl sok logikai partíciót létrehozni, inkább LVM-et, GPT-t vagy ZFS fájlrendszert használni.
  5. Bővebben: Bootolhatatlan gép javítása live CD-vel (Wikikönyvek). MBR→GPT linuxban, bootolhatóvá tétel.

ForrásokSzerkesztés

Kapcsolódó lapokSzerkesztés