Gpt
Aufbau einer GPT
Die Grenzen einer Partition werden beim GPT-Schema als LBA-Werte (Logical Block Address) der jeweiligen logischen Sektoren auf dem Datenträger gespeichert, dafür stehen jeweils 8 Byte bzw. 64 Bit zur Verfügung. Aktuelle Datenspeicher benutzen davon nur 48 Bit (LBA48) und können damit (bei einer Größe eines logischen Sektors von 512 Byte) bis zu 4 PiB Daten verwalten.
Beim GPT-Schema werden mehrere Bereiche benutzt, die zusammen mindestens 33,5 kiB für zwei Tabellen belegen:
Die Haupttabelle steht am Anfang des Datenträgers. Diese wird normalerweise benutzt und besteht aus einem "Protektive MBR", dem primären Kopf (GUID Partition Table Header, GPT-Header) und dem Platz für die Einträge zu den Partitionen (Partition Entry Array).
Eine Kopie der Haupttabelle steht am Ende des Datenträgers als Sicherung. Diese Sicherungstabelle wird im normalen Betrieb nicht verwendet und besteht aus dem Feld der Einträge zu den Partitionen vor dem sekundären Kopf (GPT-Backup-Header).
Beide Tabellen enthalten die vollständige Information zur Aufteilung des Datenträgers in Partitionen und verweisen gegenseitig aufeinander. Abgesehen von diesen Verweisen sind die Daten in den Feldern der Einträge zu den Partitionen identisch.
Eine Haupttabelle (primary table) belegt normalerweise 17 KiB bzw. z.B. 34 logische Sektoren á 512 Byte und bietet Platz zur Beschreibung von 128 Partitionen. Das Format erlaubt zwar auch kleinere oder größere Tabellen, allerdings widersprechen kleinere Tabellen der Spezifikation und es gibt keine Motivation für mehr als 128 Partitionen auf einem Datenträger:
Im ersten logischen Sektor des Datenträgers (also LBA=0) werden die ersten 512 Byte ignoriert und können bzgl. des Tabellenformates beliebigen Inhalt haben. Bei einer bootfähigen Platte ist jedoch in diesem Bereich ein "Protective MBR" verpflichtend. Das Programm gdisk und seine Schwestern legen in diesem Bereich beim Schreiben einer Partitionstabelle immer einen "Protective MBR" oder einen "Hybrid MBR" an. Dies ist jeweils eine Partitionstabelle im DOS/MBR-Format, und diese dient nur dazu, Programme wie fdisk zur Bearbeitung der DOS/MBR-Partitionstabelle von der Bearbeitung des Datenträgers abzuhalten. Wenn der Sektor mit der LBA 0 mehr als 512 Byte enthalten sollte, so werden diese ignoriert.
Im zweiten logischen Sektor (also LBA=1) steht in den ersten 92 Byte der primäre Kopf zur Beschreibung der gesamten Tabelle. Hier stehen die Größe der Tabelle, der Verweis auf die andere Tabelle und eine UUID zur Identifizierung des gesamten Datenträgers sowie eine Prüfsumme und eine Signatur. Die folgenden 420 Byte sind reserviert ist und müssen Nullen enthalten. Wenn der Sektor mit der LBA 1 mehr als 512 Byte enthalten sollte, so werden diese ignoriert.
In der Regel beginnt mit dem logischen Sektor LBA=2 (Man könnte es anders machen, wenn man z.B. ab LBA=2 einen Bootmanager für die Bios-Boot-Methode platzieren will.) das Feld der Einträge zu den Partitionen. Dafür sind mindestens 16 KiB zu reservieren. Jeder Eintrag umfasst 128 Byte.
Die Sicherungstabelle (backup table, secondary table) belegt mindestens 16,5 KiB:
Im logischen Sektor mit der höchsten möglichen LBA für den Datenträger steht der sekundäre Kopf.
In den logischen Sektoren unmittelbar vor dem sekundären Kopf steht die Kopie des Felds der Einträge zu den Partitionen.
Jeder Eintrag für eine Partition enthält u.a. die Werte des ersten und des letzten LBA der jeweiligen Partition. Diese Angaben müssen jeweils logische Sektoren nach dem letzten für das primäre Feld der Einträge für Partitionen reservierten logischen Sektor und vor dem ersten logischen Sektor der Kopie des Feldes der Einträge für Partitionen adressieren.
Bei einem Datenträger mit einer logischen Sektorgröße von 512 Byte ist somit LBA=34 der erste für Partitionen benutzbare Sektor, bei einer logischen Sektorgröße von 4096 Byte wäre es LBA=6. In der Regel erhält man jedoch bei einer Ausnutzung dieser durch das Format bestimmten Grenzen eine schlechte Performanz; man lese dazu Näheres unter Sector Alignment.
Partitionsattribute
Den Partitionen können 64 boolsche Attribute zugewiesen werden, wie z.B. das Bootfähig-Flag unter Windows. Interessant wird dies z.B. bei einem System, dass sowohl im BIOS- als auch im EFI-Modus betrieben werden soll. GRUB 2 nutzt dabei unterschiedliche Partitionen für die Bootloader-Infos, wobei die BIOS Boot Partition vor EFI versteckt werden muss.
Liste der z.Zt. bekannten Attribute:
| Wert | Beschreibung |
|---|---|
| 0 | Systempartition (system partition) |
| 1 | Verstecke die Partition vor EFI (hide from EFI) |
| 2 | Legacy Bootflag (legacy BIOS bootable) |
| 60 | Nur lesen (read-only) |
| 62 | Versteckt (hidden) |
| 63 | Nicht Einhängen (do not automount) |
Sector Alignment
Der Wert für das "Sector Alignment" ist eine Einstellung für die Arbeitsweise des Partitionierungsprogramms und wird selber nicht auf den Datenträger geschrieben. Der Wert bestimmt die logischen Sektoren, an denen eine neu angelegte Partition beginnen darf, indem der Startsektor einer Partition ein ganzzahliges Vielfaches des Wertes für das "Sector Alignment" sein muss.
Eine ungeschickte Wahl dieses Wertes kann die Performanz des Datenträgers verschlechtern. Für eine optimale Wahl müssen mehrere Parameter bekannt sein:
- Größe eines logischen Sektors des Datenträgers
- Größe eines physischen Sektors des Datenträgers
- die minimale/optimale/maximale E/A-Transferblockgrößen für den Datenträger
- Größe der vom später formatierten Dateisystem verwendeten Blöcke
Bei SSDs kann die Größe eines "Eraseble Blocks" eine Rolle spielen.
Ein logischer Sektor hat oft, aber nicht immer eine Größe von 512 Byte. Ein physischer Sektor, der die kleinste von der Platte les-/schreibbaren Datenmenge beschreibt, ist ein ganzzahliges Vielfaches eines logischen Sektors. Die Transferblockgrößen sind individuell für das jeweilige Gerät und stehen nicht in einfacher Weise zu den Sektorgrößen. Die vom Dateisystem verwalteten Blöcke (Standardgröße oft: 4KiB) sollten einen oder mehrere physische Sektoren vollständig enthalten, da eine Aufteilung eines physischen Sektors auf zwei Blöcke des Dateisystems die Performanz immer verschlechtern würde.
Bei frühen SSDs (Markteinführung vor ca. 2010) muss die Größe eines "Eraseble Blocks" berücksichtigt werden und bei solchen SSDs müssen die Partitionen an Grenzen solcher "Eraseble Blocks" beginnen und enden. Die Größe eines "Eraseble Blocks" hängt ab vom Hersteller und Typ des Geräts, ist meistens dem Anwender nicht bekannt und für diesen auch nicht einfach zu bestimmen. In der Regel soll man auf der sicheren Seite liegen, wenn man die Partitionen auf ganze MiB ausrichtet, sofern der Hersteller dazu keine Angaben macht.
Bei modernen SSDs (ca. ab 2010), welche die Zuordnung von logischen zu physischen Blöcken selber dynamisch verwalten und über die Funktion TRIM verfügen, verliert das Konzept des "Eraseble Blocks" seinen Sinn. Wenn man bei modernen SSDs die Partitionen auf ganze MiB ausrichtet, ist bereits alles richtig getan, was der Anwender selbst in der Hand hat. Siehe hierzu auch die Diskussion bei superuser.com.
In der Praxis wählt man oft ein "Sector Alignment" der Partitionen auf ganze MiB bzw.:
- 2048 Sektoren bei einer Größe der logischen Sektoren von 512 Byte oder
- 256 Sektoren bei einer Größe der logischen Sektoren von 4096 Byte.
Diese Vorgabe verschwendet einige Sektoren, berücksichtigt aber alle bekannten Einflüsse auf die Performanz.
Die Programme der Familie gdisk verwenden deshalb als Vorgabe diese Ausrichtung auf ganze MiB, sofern noch keine Partition eingerichtet wurde. Wenn bereits Partitionen existieren, die anders ausgerichtet sind, wird für neue Partitionen ein mit den bestehenden Partitionen kompatibler Wert ermittelt.
Protective MBR
Ein "Protective MBR" enthält eine DOS/MBR Partitionstabelle mit nur einem Eintrag, der den gesamten Datenträger oder jedenfalls den mit diesem Format maximal beschreibbaren Bereich als belegt kennzeichnet.
Hybrid MBR
Das ist eine nicht der Spezifikation entsprechende Variante eines "Protective MBR". Neben dessen Schutzeintrag können hier noch bis zu 3 weitere Partitionen redundant zur Beschreibung in der GPT beschrieben werden.
"Hybrid MBRs" waren erforderlich für Betriebssysteme, solange diese das GPT-Schema nicht beherrschten. Man kann sie außerdem verwenden, um beim Start des Rechners per Bios-Boot-Methode die Startpartition zu bezeichnen, was allerdings die Mitarbeit der Rechnerfirmware voraussetzt und nicht immer funktioniert. Generell gelten "Hybrid MBRs" als unzuverlässig und sollten nur verwendet werden, wenn es keine bessere Möglichkeit gibt.