Aus Linux-Magazin 11/2017

GUID-Partitionstabelle statt MBR in der Praxis

© Gennadiy Kravchenko, 123RF.com

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.

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.

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]....

Tabelle 1

Beispiele für GUIDs

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.

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.

Der Autor

Hans-Peter Merkel ist mit dem Schwerpunkt Datenforensik seit vielen Jahren in der Open-Source-Community aktiv. Er bildet Mitarbeiter von Strafverfolgungsbehörden in Europa, Asien und Afrika aus und engagiert sich als Gründer und Vorsitzender bei Freioss und Linux4afrika.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben