GUID Partition Table

Standard für das Format von Partitionstabellen auf Festplatten oder anderen Datenträgern
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. August 2012 um 12:28 Uhr durch Tageule (Diskussion | Beiträge) (Partitionstyp-GUIDs: rowspan für neue zeile unter "Windows" vergrößert). Sie kann sich erheblich von der aktuellen Version unterscheiden.

GUID Partition Table (GPT), zu deutsch GUID-Partitionstabelle (von: Globally Unique Identifier), ist ein Standard für das Format von Partitionstabellen auf Festplatten oder anderen Datenträgern. Die Spezifikation ist Teil des UEFI-Standards, der das BIOS in PCs ersetzen soll. GPT ist dabei der Nachfolger der Master-Boot-Record-Partitionstabellen. GUID-Partitionstabellen können aber auch mit heutigen BIOS-Versionen verwendet werden.[1]

Aufbau

 
Schematische Darstellung eines GPT. Jeder LBA-Block entspricht einem Sektor der Festplatte und ist 512 Bytes groß.

Entsprechend dem GPT-Schema besteht ein Datenträger aus den folgenden Bereichen:

  • MBR (Master Boot Record, als Schutz vor Veränderungen durch alte Partitionierungstools)
  • primäre GPT, bestehend aus Header und Partitionseinträgen
  • Partitionen
  • sekundäre GPT, bestehend aus Partitionseinträgen und Header

Die sekundäre GPT am Ende des Datenträgers ist eine Kopie der primären GPT am Anfang des Datenträgers. Durch diese Redundanz kann im Fehlerfall die Partitionstabelle wiederhergestellt werden. Da in der GPT eine Prüfsumme eingetragen wird, kann festgestellt werden, welche der beiden GPT konsistent ist.

MBR-Partitionstabelle

Im ersten Sektor/Block des Datenträgers (LBA 0) befindet sich der Master Boot Record (MBR) mit einer klassischen MBR-Partitionstabelle und einem Eintrag, der den Rest des Datenträgers belegt. Für ein Betriebssystem, das nur MBR- aber keine GPT-Partitionstabellen lesen kann, erscheint der gesamte Platz auf dem Datenträger als belegt. Dieser MBR stellt einen Schutz für den Inhalt des Datenträgers dar, falls auf diesen mit alten Partitionierungstools, die das GPT-Schema nicht kennen, zugegriffen werden soll. Als Partitionskennung wird der Wert EE16 für einen legacy MBR mit folgendem EFI-Header bzw. EF16 bei einem „reinen“ EFI-Dateisystemen eingetragen.[2]

Header der GUID-Partitionstabelle

Im zweiten Sektor/Block (LBA 1) befindet sich der Header der primären GPT und im letzten Sektor/Block (LBA −1) befindet sich der sekundäre Backup-GPT. Der Header selbst beschreibt u. a. die nutzbaren Blöcke des Datenträgers, die Position des eigenen Headers und des sekundären Backup-Headers sowie die Anzahl und Größe der Partitionseinträge. Die EFI-Spezifikationen[3] schreiben ein Minimum von 16 384 Bytes für die Partitionstabelle vor, sodass es Platz für 128 Einträge gibt. Weiterhin werden der Header selbst und die Partitionseinträge mit CRC32-Prüfsummen abgesichert, die von der Firmware, dem Bootloader oder dem Betriebssystem überprüft werden müssen. Daher macht es keinen Sinn den Header, z. B. mit einem Hex-Editor, zu bearbeiten, da die Checksumme ungültig und das System instabil bis unbrauchbar wird.

Im Header der GPT sind folgende Informationen abgelegt:

Offset Länge Inhalt
0 8 bytes Signatur ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h)
8 4 bytes Revision (00h 00h 01h 00h)
12 4 bytes Header-Größe - Little Endian (5Ch 00h 00h 00h entspricht 92 bytes)
16 4 bytes Header-CRC32-Prüfsumme
20 4 bytes Reservierter Bereich - muss Null (0) sein
24 8 bytes Position des eigenen LBA (dieses Headers)
32 8 bytes Position des Backup-LBA (des anderen Headers)
40 8 bytes Erster benutzbarer LBA für Partitionseinträge (bei der primären Partitionstabelle ist dies der letzter LBA + 1, normalerweise 34)
48 8 bytes Letzter benutzbarer LBA für Partitionseinträge (bei der sekundären Partitionstabelle ist dies der letzte LBA - 1, normalerweise Datenträgergröße - 34)
56 16 bytes Datenträger-GUID (als Referenz siehe auch UUID bei UNIXe)
72 8 bytes Start-LBA der Partitionstabelle
80 4 bytes Anzahl der Partitionseinträge (Partitionen)
84 4 bytes Größe eines Partitionseintrags (normalerweise 128)
88 4 bytes Partitionstabellen-CRC32-Prüfsumme
92 * Reservierter Bereich; muss mit Nullen, für den Rest des Blocks, belegt sein (420 Bytes bei einem 512-byte LBA)

Partitionseintrag

Die Partitionseinträge werden im LBA 2 bis LBA 33 (sekundäres Header: LBA -33 bis LBA -2) abgelegt. Jeder Partitionseintrag umfasst 128 Byte. Somit können pro logischem Block vier Partitionseinträge abgelegt werden. (Diese in der Spezifikation vorgeschriebene Mindestanzahl von 32 Sektoren für Partitionseinträge kann bei Bedarf beliebig erhöht werden, so dass die maximal mögliche Anzahl an Partitionen prinzipiell nur durch den zur Verfügung stehenden Plattenplatz beschränkt wird.)

Im Partitionseintrag selbst sind folgende Daten hinterlegt:

Offset Länge Inhalt
0 16 bytes Partitionstyp-GUID
16 16 bytes Einzigartige Partitions-GUID
32 8 bytes Beginn der Partition (erster LBA - Little-Endian)
40 8 bytes Ende der Partition (letzter LBA - inclusive)
48 8 bytes Attribute (siehe folgende Tabelle)
56 72 bytes Partitionsname (36 UTF-16LE Code-Einheit)
* 128 Insgesamt
Bit Inhalt
0 Systempartition
1 vor EFI verstecken
2 Legacy BIOS bootfähig (analog MBR 80h Active flag)[4]
60 Nur lesen (Read-only)
62 Versteckt (Hidden)
63 Nicht automatisch mounten (bei Win, kein Laufwerksbuchstabe zuweisen)

Partitionstyp-GUIDs

Betriebssystem Partitionstyp GUID
(Kein Betriebssystem) Unbenutzt 00000000-0000-0000-0000-000000000000
MBR 024DEE41-33E7-11D3-9D69-0008C781F39F
EFI-Systempartition (ESP) C12A7328-F81F-11D2-BA4B-00A0C93EC93B
BIOS-Bootpartition 21686148-6449-6E6F-744E-656564454649
Windows von Microsoft reservierte Partition (MSR) E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Microsoft Wiederherstellungspartition DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
Basic Data Partition EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Logical Disk Manager Partition für Meta-Daten 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
Logical Disk Manager Partition für Daten AF9B60A0-1431-4F62-BC68-3311714A69AD
HP-UX Partition für HP-UX-LVM 75894C1E-3AEB-11D3-B7C1-7B03A0000000
Service Partition E2A1E728-32E3-11D6-A682-7B03A0000000
Linux Data partition (veraltet) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Data partition (neu) 0FC63DAF-8483-4772-8E79-3D69D8477DE4
RAID partition A19D880F-05FC-4D3B-A006-743F0F84911E
Swap partition 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Partition für Linux-LVM E6D6D379-F507-44C2-A23C-238F2A3DF928
Reserved 8DA63339-0007-60C0-C436-083AC8230908
FreeBSD Data partition 516E7CB4-6ECF-11D6-8FF8-00022D09712B
Swap partition 516E7CB5-6ECF-11D6-8FF8-00022D09712B
Unix File System (UFS) partition 516E7CB6-6ECF-11D6-8FF8-00022D09712B
Partition für FreeBSD-LVM (Vinum) 516E7CB8-6ECF-11D6-8FF8-00022D09712B
ZFS partition 516E7CBA-6ECF-11D6-8FF8-00022D09712B
Mac OS X Partition für Hierarchical File System (HFS+) 48465300-0000-11AA-AA11-00306543ECAC
Partition für UFS 55465300-0000-11AA-AA11-00306543ECAC
Partition für CoreStorage (verschlüsselt) 53746F72-6167-11AA-AA11-00306543ECAC
Partition für Boot-Unterstützung 426F6F74-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
Solaris Boot partition 6A82CB45-1DD2-11B2-99A6-080020736631
Root partition 6A85CF4D-1DD2-11B2-99A6-080020736631
Swap partition 6A87C46F-1DD2-11B2-99A6-080020736631
Backup partition 6A8B642B-1DD2-11B2-99A6-080020736631
/usr partition 6A898CC3-1DD2-11B2-99A6-080020736631
/var partition 6A8EF2E9-1DD2-11B2-99A6-080020736631
/home partition 6A90BA39-1DD2-11B2-99A6-080020736631
EFI_ALTSCTR 6A9283A5-1DD2-11B2-99A6-080020736631
Reservierte Partition 6A945A3B-1DD2-11B2-99A6-080020736631
6A9630D1-1DD2-11B2-99A6-080020736631
6A980767-1DD2-11B2-99A6-080020736631
6A96237F-1DD2-11B2-99A6-080020736631
6A8D2AC7-1DD2-11B2-99A6-080020736631

Begrenzungen

Die GPT verwendet Logical Block Addressing (LBA) mit 64 Bit umfassenden Einträgen, sodass (bei 512 Byte Sektorgröße) Festplatten bis zu einer Gesamtgröße von 8 Zettabyte adressiert und diese in beliebig viele Partitionen aufgeteilt werden können.

Unterstützung in Betriebssystemen

Für Betriebssysteme, die auf der IA64-Architektur (überwiegend Großrechner) aufbauen, ist die Unterstützung von GPT zwingend notwendig, da diese Rechner EFI zum Booten verwenden. Darunter fallen die entsprechenden IA64-Versionen von FreeBSD, HP-UX, Linux, NetBSD, OpenVMS und Microsoft Windows. Auch Mac OS X unterstützt es seit Umstellung der Apple Macintosh auf Intel-Prozessoren Anfang 2006, sowie die seit Anfang 2005 verfügbare, für die IA64-Architektur angepasste Version von Solaris.

Die Versionen von Microsoft Windows XP, die noch für die 32-Bit-Intel i386-Architektur entwickelt wurden, können auf einer GPT-Festplatte nur mit Einschränkungen installiert werden. Unter anderem lesen sie nur den Master Boot Record (MBR), um Partitionierungsdaten zu erhalten. Es stehen somit nur maximal drei Partitionen zur Verfügung, da der MBR nicht mehr als vier Einträge zulässt, die erste Partition aber für die EFI-Firmware reserviert ist und erweiterte Partitionen, die als Container mehrere logische Partitionen enthalten können, von GPT nicht mehr unterstützt werden. (Siehe: Verständlichere Erklärung, aber unter Vorbehalt)

Bis zum Erscheinen von Windows Vista Anfang 2007 richteten sich die 64-Bit-Windows-Versionen vornehmlich an Server-Betreiber und professionelle Anwender (z. B. CAD oder Grafik/Design). Dazu zählt auch die bereits 2005 erschienene Windows XP Professional x64 Edition. Bei deren Erscheinen war die umfassende GPT-Unterstützung durch entsprechende 64-Bit-Treiber nur bei ausgesuchter Hardware vorhanden. Mit Erscheinen von Vista wurde die Verfügbarkeit von 64-Bit-Treibern generell besser, sodass diese in der Regel ebenfalls die x64-Version von XP unterstützen.

Das Fachmagazin c’t konnte in der Anfangsphase der Einführung während des Tests einer 4 TB großen, mit GPT formatierten Festplatte feststellen, dass zahlreiche Festplattentreiber namhafter Hersteller beim Schreiben auf Bereiche jenseits von 2 TB die Daten statt an der gewünschten Stelle am Anfang der Festplatte ablegten, so dass es zu massiven Datenverlusten oder gar zum Verlust der Formatierung der Festplatte kam.[5] Das Problem trat anscheinend speziell bei den 32-Bit-Versionen von Windows XP auf, die zwar teilweise schon Unterstützung für GPT mit sich führten, jedoch aufgrund ihres 32-Bit-Treiberdesigns die 2-TB-Grenze nicht überschreiten konnten.[6] Da der Einsatz solcher Partitionen damals noch hauptsächlich bei Servern anzutreffen war, ergaben sich solche Probleme am ehesten dann, wenn die Festplatten eines solchen Systems mit anderen Rechnern ausgetauscht wurden.

Ein 64-Bit-Linux kann – ganz ohne UEFI oder gesonderte BIOS-Unterstützung – mit GRUB2 von einer GPT-Partition booten. Es ist also kein UEFI dazu notwendig – die Kopplung von GPT an (U)EFI ist somit nicht zwingend.[1]

Quellen

  1. a b Zeitschrift c’t Nr. 04/2011, S. 170ff. – Linux kann ohne gesonderte BIOS-Unterstützung GPT verwenden und von GPT-Partition booten
  2. List of partition identifiers for PCs. Technische Universität Eindhoven, abgerufen am 18. April 2012.
  3. http://www.uefi.org/home/ (U)EFI Specification (englisch)
  4. e09127r3 EDD-4 Hybrid MBR boot code annex. Abgerufen am 18. Mai 2012.
  5. c’t 2/2009 RAID-System: 4 TByte in einem Gehäuse, S. 54
  6. Microsoft technet GUID-Partitionstabelle http://technet.microsoft.com/de-de/library/cc773223.aspx