V článku se používají jednotky v násobku tisíce (GB, TB apod.), pokud není uvedeno jinak.
Když se v vývojáři z IBM domlouvali na podobě MBR, asi je ani nenapadlo, že by disky mohly někdy dosahovat velikostí nad 2 TB a už vůbec ne, že by je někdo chtěl rozdělovat na víc než 4 oddíly. Omezení se čtyřmi oddíly se podařilo docela pěkně obejít, zato limit na 2,199 TB zůstal a zůstane až do konce MBR.
Ale abychom nepředbíhali. Od určité doby se pro mapování disků začalo používat Logical Block Addressing (LBA), které zjednodušilo adresaci, která se do té doby řešila metodou Cylindr-Hlava-Sektor (CHS). LBA má daleko k fyzické poloze dat v pevném disku, a tak řadič musí LBA převádět na fyzickou polohu a zase zpět. Už u CHS se prováděly podobné machinace, takže stejně mohly ovladače v operačním systému maximálně hádat, které oblasti dat leží u sebe a podle toho optimalizovat jejich čtení a zápis. LBA toto zjednodušilo a nechalo optimalizace na samotném disku. Změna měla také za úkol zvednout limit 7,8 GB, který byl na CHS navěšený.
A zrodila se úprava MBR, která přežila z dob slavných procesorů 386, až do současnosti, kde má stále své místo. Když se podíváme na nákres MBR hlavičky, zjistíme, že je vložena na první sektor, tedy na prvních 512 B disku. To není moc místa, zvlášť když si uvědomíme, že se na prvních 440 B krčí zavaděč operačního systému. Když odečteme ještě různé signatury, tak pro tabulku oblastí zbývá 64 B, což je méně, než je polovina SMSky. Z pohledu dnešních disků jde o směšný prostor, a ten si také vybírá svou daň. Těchto 64 B je rozděleno na 4 × 16 B a pro samotnou adresu jsou k dispozici 4 B, tedy 32 bitů. Jednoduchým výpočtem zjistíme, že je možné mapovat 4294967296 sektorů. Protože se v nultém sektoru skrývá samotné MBR, v praxi je možné mapovat o jeden sektor méně. V bytech to pak dělá 2199023255040, což je 2.199 TB. V TiB jednotkách to je 2,048 – 512 B. Limit se tedy dotýká už 2,5 TB disků, které jsou dnes na trhu za rozumnou cenu.
Ve skutečnosti se limit týká adresy počátku oblasti, takže pokud máte 4 TB disk, můžete na něm vytvořit čtyři oddíly začínající v první polovině disku a poslední z nich se může táhnout přes druhou polovinu. Velikost oddílu je omezena stejně, tedy na něco přes 2 TB. U větších disků ale MBR už opravdu narazí.
Proto nastal čas odpoutat se od MBR a zkusit něco modernějšího, co řeší problémy, třeba GUID Partition Table (GPT). Jde o čisté řešení, které vzešlo ze standardu (U)EFI vyvinutého firmou Intel. Na rozdíl od MBR se GPT roztahuje rovnou na 34 sektorech a navíc je na disku ve dvou kopiích. Odstraňuje tedy jak problémy s počtem oddílů, tak jejich maximální velikosti. O kompatibilitu se staršími počítači se stará tzv. Protective-MBR, která leží v nultém sektoru, stejně jako normální MBR a obsahuje informaci o jednom oddílu typu GPT. Tím se zajistí, že se na nekompatibilních systémech bude disk tvářit zaplněný neznámými daty. GPT samotné se rozpíná na dalších 33 sektorech. Pro adresy jednotlivých oddílů je vyhrazeno 32 sektorů a každý oddíl má k dispozici 128 B, v rámci kterých je pro adresu uvolněno 8 B. To umožňuje adresovat 2 ^ 64 sektorů, což je něco přes 9.4 ZB. Celkem může GPT tabulka rozdělovat disk až na 128 oddílů.
Nasazení a problémy
Kolem GPT panuje spousta otazníků a i když jsou na trhu disky, na které se hodí, moc informací k dispozici není. Podporu GPT najdeme dnes téměř na všech operačních systémech včetně Linuxu. U Windows můžeme zapomenout na stará XP, ale Vista a 7 už by měly podporu mít. Trochu horší to je se zavaděči. GRUB verze 1 podporu oficiálně neměl, ale patche byly k dispozici, zato druhá verze už podporu má a funguje jak s EFI deskami, tak s klasickým BIOSem. Vhledem k tomu, že je GRUB tlačen snad všemi hlavními linuxovými distribucemi, měla by tato informace stačit.
Z instalátorů linuxových distribucí jsem zkoušel jen alternativní instalaci Ubuntu, která si GPT hravě poradila bez problému. Tabulku oblasti doporučuji vytvořit ještě před instalací samotného operačního systému, třeba pomocí Parted Magic. Budete mít jistotu, že se opravdu použije GPT, a pokud podobně jako já používáte textový instalátor Debianu, bude vytváření mnohem pohodlnější. Při vytváření oblastí je nutné dát si pozor, protože GRUB potřebuje jednu vlastní oblast, která sice může být velmi malá (menší než 1 MB), ale bez ní nenabootuje. Této oblasti dejte flag bios_grub. Při instalaci si tam GRUB přesune další kód, který se už nevejde do MBR.
Po vytvoření všech oblastí a nainstalování operačního systému byste měli normálně nabootovat, a tím pro vás GPT končí. Pokud tomu tak není, znamená to, že BIOS vaší základní desky je chytřejší, než se na první pohled zdálo, a zmátla ho Protective-MBR. V takovém případě máte rovnou čtyři možnosti:
- Dejte GPT oddílu v Protective-MBR boot flag
- Použijte utilitku gptsync
- Pokud to je možné, vraťte se k MBR
- Použijte pro bootování jiný disk
Boot flag je v Linuxu vcelku zbytečný, protože jeho bootloadery fungují z MBR a buď je oblast s jádrem uložena v MBR také nebo jsou schopny si ji dostat z konfiguračních souborů uložených někde na disku. Je ale důležitý pro Windows, které si s ním minimálně v minulosti označovaly oddíl se systémem. Proto mohou být některé staré BIOSy zmatené, pokud v MBR boot flag není.
Pokud to nepomůže, zkuste utilitku gptsync. Sice jsem ji nenašel téměř na žádném záchranném CD, ale jde například doinstalovat do běžícího Live CD Ubuntu. Utilitka gptsync vezme oblasti z GPT a první tři zkusí narovnat za oblast typu GPT, která se samozřejmě zmenší. Vzhledem k tomu, že ještě GRUB potřebuje malou oblast pro sebe, tak gptsync zvládne synchronizovat pouze dvě linuxové oblasti. Samozřejmě platí limity, které MBR má, takže adresa poslední oblasti končí na maximu 2,199 TB. Takovémuto řešení se říká hybrid MBR a není součástí EFI standardu. Proto je možné, že některé nástroje nebo i operační systémy nebudou s takovým diskem pracovat správně.
Převod MBR na GPT a zase zpět není vždy možný, ale pokud máte celkem 4 oddíly a méně na disku menším než 2,199 TB, neměl by to být problém. K převodu poslouží utilita gdisk, kterou velmi dobře zdokumentoval Rod Smith. Na odkazovaném webu najdete mnohem víc než gdisk. Rod se o GPT hodně rozepisuje, a tak se jeho web stal asi nejlepším zdrojem informací.
Poslední možnost, když selhaly všechny ostatní, je použít jiný disk, na který umístíte MBR a oddíl s adresářem /boot a budete bootovat z něj. Můžete použít USB flash disk, ale i normální velký disk.
Závěr
GPT se nemusíte bát, nekouše a na své desce ho s největší pravděpodobností rozjedete. U velkých disků nemá smysl váhat, zvlášť pokud nepoužíváte LVM a chcete si v oddílech udržet trochu kulturu. Určitě já i ostatní uživatelé ocení, pokud se v diskusi o své zkušenosti s GPT podělíte.