Partíciós tábla
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ábla
[szerkeszté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ók
[szerkeszté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ók
[szerkeszté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ől
[szerkeszté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ábla
[szerkeszté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ése
[szerkeszté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ó adatai
[szerkeszté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ódban
[szerkeszté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]
Jegyzetek
[szerkesztés]- ↑ 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).
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ Bővebben: Bootolhatatlan gép javítása live CD-vel (Wikikönyvek). MBR→GPT linuxban, bootolhatóvá tétel.
Források
[szerkesztés]- Daniel B. Sedory: MBR/EBR Partition Tables. thestarman.pcministry.com (2018. február 11.) (Hozzáférés: 2018. július 28.)
- Master Boot Record (MBR). web.stanford.edu (Hozzáférés: 2018. július 28.)[halott link]
- GUID Partition Table (Magyar). archlinux (2018. május 31.) (Hozzáférés: 2018. július 28.)
- Rod Smith: GPT fdisk Tutorial. www.rodsbooks.com (2018. július 6.) (Hozzáférés: 2018. július 28.)
- Bruce J. Nikkel: Forensic Analysis of GPT Disks and GUID Partition Tables. www.digitalforensics.ch (2009. november 9.) (Hozzáférés: 2018. július 28.)
- DOS 1.0 and 1.1. OS/2 Museum (Hozzáférés: 2018. július 28.)