GPT – die GUID-Partitionstabelle – löst bei großen Festplatten und vielen UEFI-Systemen den gewohnten Master Boot Record ab. Die normalen Fdisk-Programme kommen jedoch mit dem neuen Partitionierungsschema ins Stolpern. Mit den richtigen Tools hat aber jeder System-Vortänzer den korrekten Dreh schnell raus.
Die GUID Partition Table ist Nachfolgerin der MBR-Partitionstabellen und Teil des EFI-Standards (Extensible Firmware Interface, [1]). Die GPT verwendet wie die moderneren MBR-Tabellen LBA, aber mit 64 Bit, was Festplatten bei 512 Byte Sektorgröße bis 8 Zettabyte adressierbar macht, also rund 8 Milliarden TByte entspricht. Außerdem verwaltet eine GPT bis zu 128 Partitionen (Abbildung 1, [2]).

Abbildung 1: Aufbau einer GPT. Nach dem wegen der Kompatibilität zu alten Betriebssystemen mitgeführten Standard-MBR folgt ein knapp 100 Byte langer Header. Die eigentliche Partitionstabelle nimmt in 32 Blöcken die Daten von maximal 128 Partitionen à 128 Byte auf.
Nützlicher “Hirnschaden”
Der Linux-Kernel unterstützt die aktuellen großen Platten und GPTs seit Version 2.6.25, auch wenn Linus Torvalds EFI als “Intels Hirnschaden” abtut [3]. Beim Partitionieren mit einer GPT verweigern die bekannten Programme »fdisk« oder »cfdisk« allerdings die Mitarbeit. Das grafische Programm Gparted ([4], Abbildung 2) und das CLI-Tool Parted [5] dagegen unterstützen GPTs.
Listing 1 blickt in den 512 Byte großen Master Boot Record, den die GPT aus Kompatibilitätsgründen auch besitzt und korrekt befüllt. Die Signatur 0x55AA signalisiert in Zeile 5 das Ende des MBR. Im zweiten Sektor der GPT befindet sich die Header-Information zur GUID-Partitionierung (Zeilen 7 bis 12). Ab Position 0x400 liegen die Partitionseinträge selbst, die aus folgenden Daten bestehen:
- Partitionstyp (16 Byte)
- GUID der Partition (16 Byte)
- Beginn der Partition (8 Byte)
- Ende der Partition (8 Byte)
- Attribute (8 Byte)
- Partitionsname (72 Byte)
Die GUID (Globally Unique Identifier) ist Namensgeberin der GPT, einer eindeutigen, 16 Byte langen Chiffre des Partitionstyps. Tabelle 1 zeigt einige GUIDs (Quelle: Wikipedia). Das Testsystem besitzt seit der Gparted-Aktion eine Datenpartition. Die zugehörige GUID lautet EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, die Umsetzung in Zeile 14 dreht (wohl wegen Big und Little Endian) einige Positionen der ID um.
Am Ende des Datenträgers legt EFI eine Kopie der GPT zu Sicherungszwecken ab. Eine beschädigte primäre GPT lässt sich mit dieser Kopie wiederherstellen. Wer ein Speichermedium von GPT- wieder auf eine MBR-Partitionierung zurückführen will, muss die zweite GPT auch löschen, sonst erkennt das System die Festplatte weiterhin als GPT-initialisiert.

Abbildung 2: Gparted erkennt unpartitionierte 3-GByte-Platten auf Anhieb, anders als Fdisk und Cfisk. Um sie zu nutzen, muss der Admin nun eine GPT anlegen.
Listing 1
dd if=/dev/sdh | xxd (Auszug)
01 [...] 02 00001c0: 0100 eefe ffff 0100 0000 ffff ffff 0000 ................ 03 00001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 04 00001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 05 00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U. 06 [...] 07 0000200: 4546 4920 5041 5254 0000 0100 5c00 0000 EFI PART....\... 08 0000210: 0e0f 49ee 0000 0000 0100 0000 0000 0000 ..I............. 09 0000220: afa3 505d 0100 0000 2200 0000 0000 0000 ..P]...."....... 10 0000230: 8ea3 505d 0100 0000 cbb9 6e3f 0765 a746 ..P]......n?.e.F 11 0000240: a7c2 70a1 3db8 25c4 0200 0000 0000 0000 ..p.=.%......... 12 0000250: 8000 0000 8000 0000 6afb 3a17 0000 0000 ........j.:..... 13 [...] 14 0000400: a2a0 d0eb e5b9 3344 87c0 68b6 b726 99c7 ......3D..h..&.. 15 0000410: 6903 b666 b91c 7646 a8dd e9d1 d7c6 bc5a i..f..vF.......Z 16 0000420: 0008 0000 0000 0000 ff9f 505d 0100 0000 ..........P]....
| Partitionstyp | GUID |
|---|---|
| Kein Betriebssystem | |
| Unbenutzt | 00000000-0000-0000-0000-000000000000 |
| MBR | 024DEE41-33E7-11D3-9D69-0008C781F39F |
| EFI-Systempartition | C12A7328-F81F-11D2-BA4B-00A0C93EC93B |
| Bios-Bootpartition | 21686148-6449-6E6F-744E-656564454649 |
| Linux | |
| Datenpartition | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| Raidpartition | A19D880F-05FC-4D3B-A006-743F0F84911E |
| Swappartition | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F |
| Partition für Linux-LVM | E6D6D379-F507-44C2-A23C-238F2A3DF928 |
| Reserviert | 8DA63339-0007-60C0-C436-083AC8230908 |
| Windows | |
| Von Microsoft reservierte Partition | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
| Basic-Datenpartition | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| Logical-Disk-Manager-Partition für Metadaten | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 |
| Logical-Disk-Manager-Partition für Daten | AF9B60A0-1431-4F62-BC68-3311714A69AD |
| Mac OS X | |
| Partition für HFS+ | 48465300-0000-11AA-AA11-00306543ECAC |
| Partition für UFS | 55465300-0000-11AA-AA11-00306543ECAC |
| Partition für Software-Raid | 52414944-0000-11AA-AA11-00306543ECAC |
| Partition für Apple-TV-Recovery | 5265636F-7665-11AA-AA11-00306543ECAC |
Andere GPT-geeignete Tools
Server-Admins, die auf der Kommandozeile arbeiten, können mit Gparted wenig anfangen. Derzeit ist die Zahl der GPT-geeigneten Fdisk-Ersatzprogramme recht überschaubar. Am interessantesten scheint das Projekt GPT fdisk [6], es besteht aus den Programmen »gdisk«, »sgdisk« und »fixparts«. Die Eingabe »gdisk /dev/sdh« liefert bei einer frischen Festplatte wenig überraschend:
Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present
Mit »p« (Print the partition table) listet das Tool die Partitionstabelle, mit »o« (Create a new empty GUID partition table) legt es nach einer Sicherheitsabfrage eine neue GPT-Tabelle an. Mit »n« (Add a new partition) lässt sich wie mit Gparted eine durchgängige Datenpartition erzeugen:
Last sector (2048-5860533134, default = 5860533134) or {+-}size{KMGTP}:
Current type is 'Linux/Windows data'
Hex code or GUID (L to show codes, Enter = 0700):
Gdisk liefert bei dieser Gelegenheit zusätzlich GUID-Optionen, die Gparted nicht kennt.
Von MBR nach GPT und umgekehrt
Praktischerweise vermag Gdisk MBR-partitionierte Festplatten in GPT-partitionierte umzuwandeln. Das spart das Retten und Wiederherstellen vorhandener Partitionsinhalte. Zuständig ist das Gdisk-Kommando »r« (Recovery and transformation options).
Gdisk konvertiert ebenfalls GPT in MBR zurück. Diese Option funktioniert nicht in allen Fällen und ist darum mit Vorsicht anzuwenden. An dieser Stelle kann »sgdisk«, das zweite Program aus dem GPT-fdisk-Paket, hilfreich sein, das Low-Level-Reparaturen ausführt.
Cluster-Festplatten und das leidige Alignment
Normale Festplatten speichern die Daten in ihren Sektoren zu je 512 Bytes. Betriebssysteme und deren Filesysteme fassen mehrere dieser Sektoren zu einem Cluster zusammen, häufig acht Stück, was Cluster mit 4096 Byte Länge ergibt. Um mehr Performance zu erreichen, arbeiten große Festplatten intern ebenfalls mit 4096 Byte großen Clustersektoren, die Hersteller sprechen dann von “4k”-Festplatten.
Um nach außen für das Bios kompatibel zu sein, übersetzt eine Festplatten-interne Logik die Cluster wieder in 512 Byte große Sektoren. Damit die Angleichung der Verwaltungseinheiten-Größen von Betriebssystem und Festplatte auch zu dem gewünschten Geschwindigkeitsgewinn führt, sollten – egal ob MBR-Partitionen oder mit einer GPT – die 4-KByte-Cluster der Festplatte und die 4-KByte-Cluster des Dateisystems genau aufeinanderliegen.
Andernfalls verkehrt sich der Effekt sogar ins Gegenteil: Wenn bei einem Versatz von 2048 Byte das Betriebssystem zum Beispiel einen Cluster auf die Platte schreibt, muss diese dann zwei halbe Cluster auf seine Scheiben übertragen, was auf zwei ganze Cluster hinausläuft. Besonders negativ betroffen von diesem so genannten Alignment sind SSD-Disks, da es auf dem Flashspeicher bei überlappenden Schreibzyklen zu einem Read-Modify-Write-Zyklus kommt.
Startsektor 63 oder 2048
Dass Betriebssystem und Permanentspeicher ihre Verwaltungseinheiten nicht synchron betreiben, ist eher die Regel als die Ausnahme. Schuld ist Microsoft, denn die Partitionierungstools von MS-DOS bis Windows XP ließen die erste Partition nach dem MBR bei Sektor 63 starten. So partitionierte Platten sind darum immer falsch ausgerichtet (Abbildung 3). Fdisk von Linux ahmt aus Kompatibilitätsgründen dieses Verhalten nach ([7], [8]). Beginnt dagegen die erste Partition bei Sektor 64, macht dies leicht eine ganzzahlige Zusammenfassung von 4096 Blöcken möglich.
Seit Windows Vista hat Microsoft das Problem erkannt und legt bei neu zu partitionierenden Datenträgern den Start der ersten Partition auf Sektor 2048. Bei Fdisk von Linux muss man je nach Version mindestens den DOS-Kompatibilitätsmodus per Kommandozeilenoption abschalten. Die Details weiß [7] zu berichten. Alle Tools, die eine GPT einrichten können, legen per Default den Startsektor zum Glück auf Position 2048. Vorsicht ist jedoch bei Datenträgern mit einer Vorgeschichte geboten.
Ob sich die Gesamtproblematik in der Praxis so scharf stellt wie in der Theorie, ist strittig, da moderne Festplatten ein ausgeklügeltes, nur dem Hersteller bekanntes Mapping betreiben und zudem in den Betriebs- und Dateisystemen diverse Puffer und Optimierungen eingebaut sind. Es bleibt aber festzuhalten, dass das Verlegen der Partitionen auf 4-KByte-Grenzen eine begrüßenswerte Entwicklung darstellt, die Admins tätig mittragen sollten.
Abbildung 3: Durch die ungünstige Wahl des Partitions-Startsektors 63 liegen die 4096 Byte großen Cluster von Dateisystem und Festplatte niemals aufeinander.
GUID-Table, bitte zum Tanz!
Die Zeit für GPT ist definitiv angebrochen: Moderne Festplatten benötigen die neuen Tabellen, um viele oder Partitionen jenseits der 2,2 TByte anzulegen, und auch Windows will UEFI-Systeme mit GPTs sehen. Von Fdisk muss der Admin dabei die Finger lassen, Tools wie Gparted, Parted oder GPT disk springen in die Bresche.
In Sachen Performance heißt es allerdings, die Augen offenzuhalten. Dass auch viele moderne Speicher intern mit 4 KByte großen Clustern statt mit 512-Byte-Sektoren arbeiten, ist zwar beim LBA-Adressieren nicht zu bemerken, kann aber bei ungünstigen Partitionen die Performance ruinieren.
Infos
- EFI und UEFI: http://developer.intel.com/technology/efi/,http://www.uefi.org/home/
- GPT: http://de.wikipedia.org/wiki/GUID_Partition_Table
- “Linus On The Extensible Firmware Interface”: http://kerneltrap.org/node/6884
- Gparted: https://gparted.org
- Parted: https://www.gnu.org/software/parted
- GPT fdisk: http://www.rodsbooks.com/gdisk/
- Partition Alignment: http://www.thomas-krenn.com/de/wiki/Partition_Alignment
- Hintergründe zum Paragon Alignment Tool: http://blog.paragon-software.de/uploads/WhitePaper_ParagonAlignmentTool_GER.pdf







