Open Source im professionellen Einsatz
Linux-Magazin 08/2011
© Gennadiy Kravchenko, 123RF.com

© Gennadiy Kravchenko, 123RF.com

GUID-Partitionstabelle statt MBR in der Praxis

Table Dance

GPT – die GUID-Partitionstabelle – löst bei großen Festplatten den gewohnten Master Boot Record zwangsweise ab. Die normalen Linux-Fdisk-Programme kommen aber noch nicht klar mit dem neuen Partitionierungsschema. Mit den richtigen Tools ist der korrekte Dreh aber schnell gefunden.

1501

Seit Menschen Festplatten in PC-Gehäuse schrauben, stoßen sie an Limits. Mal waren es die im Bios, dann die von Controllern [1] oder solche in den Betriebssystemen. Maximale Sektoren, Köpfe, Partitionsgrenzen und -mengen, Bootbereiche und, und, und. In den 80ern beispielsweise zwang MS-DOS 3.2 Festplattenbesitzer dazu, ihre teuren Schätzchen in 32-MByte-Partition aufzuteilen. Eine solche Veteranin mit 2,5 Kilo Kampfgewicht zeigt Abbildung 1 auf der Seite liegend. Um ihre nach heutigen Maßstäben lächerlichen 85 MByte Kapazität zu nutzen, waren mindestens drei Partitionen nötig.

Abbildung 1: Alt und neu: Seite an Seite eine mit 85 MByte nur äußerlich große Micropolis-Platte aus den 80ern neben einer aktuellen 3-TByte-SATA-Festplatte von Seagate, die für diesen Artikel als Testobjekt diente.

Das zweite, optisch kleinere Gerät auf dem Foto dagegen ist sehr viel neuerem Datums, eine von zwei Seagate ST 33000651 AS, die der Hersteller dem Linux-Magazin für die Tests zu diesem Artikel geliehen hat. Mit ihrer Kapazität von rund 3 TByte überschreitet sie gegenwärtig das PC-geschichtlich kritische Limit von 2 TByte, verursacht diesmal durch die MBR-Partitionstabelle (Abbildung 2, [2]).

Abbildung 2: Aufbau des Master Boot Record. Die Partitionstabelle mit vier Einträgen hat nur 4 Byte pro Sektornummer zur Verfügung.

Das klassische MBR-Partitionierungsschema CHS ist sowieso schon lange ausgeschöpft (maximal 1024 Cylinders * 255 Heads * 63 Sectors) mit seinen 8 GByte. Seither nehmen Bios und Betriebssystem immer 254 Köpfe, 63 Sektoren und 1023 Zylinder an und nutzen die jeweils 4 Byte in der Partitionstabelle, um Position und Größe der Sektoren festzulegen (Logical Block Addressing, LBA).

Mit diesem Kniff lebte die PC-Welt bislang ganz gut – doch die Zeit ist vorbei, denn (232-1 Sektoren)*512 Byte Sektorgröße ergibt rund 2,2 TByte als maximale Größe für eine Partition und reichlich 4 TByte als Größe der Festplatte ([3], [4]).Wer also eine aktuelle 3-TByte-Platte am Stück verwenden will, beispielsweise in einem File- oder Mailserver, muss grundlegend etwas ändern – willkommen in der Welt der GUID-Partitionstabellen!

Die GPT ist Nachfolgerin der MBR-Partitionstabellen und Teil des EFI-Standards (Extensible Firmware Interface, [5]). Die Spezifikation EFI, in der Hersteller-unabhängigen Ausprägung heißt sie Unified EFI (UEFI), ersetzt und vereinheitlicht die Teile des Bios, die fürs Booten und zum Abarbeiten von Pre-Boot-Programmen zuständig sind. 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, was rund 8 Milliarden TByte entspricht. Außerdem verwaltet eine GPT bis zu 128 Partitionen (Abbildung 3, [6]).

Abbildung 3: 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.

Booten von GPT-Platten

Handelsübliche Serversysteme, Großrechner und neuere Apple-Rechner entsprechen der EFI-Spezifikation und booten darum auch von einer GPT-initialisierten Festplatte. Desktop-Mainboards für Intel- und AMD-CPUs dagegen booten derzeit fast ausschließlich über ihre MBR-Bios-Routinen.

Linuxer haben aber das große Glück, Grub 2 als Lösung des Problems an der Hand zu haben. Der Urlader des Tools stellt nämlich dem Rechner eine EFI-Umgebung zur Verfügung, aus der Linux problemlos von GPT-Datenträgern hochfährt. Achtung: Frühere Grub-Versionen haben dieses Feature noch nicht!

Trotz "Hirnschadens": GPT in der Praxis

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 [7]. Das Testsystem spricht die Seagate als »/dev/sdh« an, Listing 1 zeigt, was der »dmesg« -Befehl liefert. Beim Partitionieren mit einer GPT verweigern die bekanntesten Programme »fdisk« oder »cfdisk« allerdings die Mitarbeit. Das grafische Programm Gparted dagegen unterstützt GPTs (Abbildung 4). Die erste Festplatte soll mit dem Tool eine einzige große Datenpartition erhalten.

Listing 1

Kernel erkennt 3-TByte-Platte

01 [782663.410960] ata6: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
02 [782663.445923] ata6.00: ATA-8: ST33000651AS, CC44, max UDMA/133
03 [782663.445931] ata6.00: 5860533168 sectors, multi 0: LBA48 NCQ (depth 31/32)
04 [782663.446811] ata6.00: configured for UDMA/133
05 [782663.446830] ata6: EH complete
06 [782663.447076] scsi 7:0:0:0: Direct-Access     ATA      ST33000651AS     CC44 PQ: 0 ANSI: 5
07 [782663.447507] sd 7:0:0:0: Attached scsi generic sg9 type 0
08 [782663.447585] sd 7:0:0:0: [sdh] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
09 [782663.447780] sd 7:0:0:0: [sdh] Write Protect is off
10 [782663.447788] sd 7:0:0:0: [sdh] Mode Sense: 00 3a 00 00
11 [782663.447928] sd 7:0:0:0: [sdh] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
12 [782663.448846]  sdh: unknown partition table
13 [782663.474623] sd 7:0:0:0: [sdh] Attached SCSI disk

Abbildung 4: Gparted erkennt unpartitionierte 3-GByte-Platten auf Anhieb, anders als Fdisk und Cfisk. Um sie zu nutzen, muss der Admin nun eine GPT anlegen.

In Gparted legt der Admin zuerst über den Menüpunkt »Laufwerk« eine Partitionstabelle an, die eine Meldung in Übergröße nach sich zieht, dass alle bisher darauf enthaltenen Daten verlustig gehen. Im selben Fenster navigiert der Admin dann »Erweitert | Partitionstabellentyp« an und wählt »gpt« .

Der Menüpunkt »Partition | Neu« macht den Weg für eine neue primäre Partition mit Ext 4 als Dateissystem frei. Die Ankündigung »Abhängig von Anzahl und Größe der Operationen kann dies einige Zeit in Anspruch nehmen« konkretisierte das Testsystem mit einer 10-minütigen Auszeit. Anschließend stehen die 3 TByte zur Verfügung – abzüglich eines stolzen Verwaltungs-Overhead von 44,05 Gibibyte (Listing 2).

Listing 2

fdisk -lu nach dem Partitionieren

01 Disk /dev/sdh: 3000 GB, 3000590369280 bytes
02 255 heads, 63 sectors/track, 364801 cylinders, total 5860528065 sectors
03 Units = sectors of 1 * 512 = 512 bytes
04
05    Device  Boot  Start         End      Blocks   Id  System
06 /dev/sdh1         2048  5860532223  2930272033   83  Linux
07 Warning: Partition 1 does not end on cylinder boundary.

Listing 3 riskiert einen Blick 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:

Listing 3

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

Ans Ende des Datenträgers legt EFI übrigens eine Kopie der GPT zu Sicherungszwecken ab. Eine beschädigte primäre GPT lässt sich mit Hilfe dieser Kopie wiederherstellen. Wer ein Speichermedium von GPT- wieder auf eine MBR-Partitionierung zurückführen möchte, muss die zweite GPT auch löschen, sonst erkennt das System die Festplatte weiterhin als GPT-initialisiert.

Andere GPT-geeignete Tools

Serveradmins, die auf der Kommandozeile arbeiten, können mit Gparted wenig anfangen. Derzeit ist die Zahl der GPT-geeigneten Fdisk-Ersatzprogramme recht überschaubar. Am interessantesten erscheint das Projekt GPT fdisk [8], es besteht aus den Programmen »gdisk« , »sgdisk« und »fixparts« . Ein aktuelles Ubuntu kann nur »gdisk« über sein Repository beziehen. Deshalb ist es sinnvoller, alle Pakete direkt über den Open Suse Build Service [9] zu holen.

Ist das Toolset installiert, lässt sich eine Festplatte prüfen und bearbeiten. »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 dem Kommando »p« für "Print the partition table" listet das Tool die Partitionstabelle (Listing 4). »o« (Create a new empty GUID partition table) legt nach einer Sicherheitsabfrage eine neue GPT-Tabelle an. Mit »n« (Add a new partition) lässt sich wie vorhin mit Gparted eine durchgängige Datenpartition erzeugen. Gdisk liefert dabei GUID-Optionen, die Gparted nicht kennt:

Listing 4

Partitions-Informationen von Gdisk

01 Disk /dev/sdh: 5860533168 sectors, 2.7 TiB
02 Logical sector size: 512 bytes
03 Disk identifier (GUID): 0AE667A2-818F-4670-A328-500021C76A73
04 Partition table holds up to 128 entries
05 First usable sector is 34, last usable sector is 5860533134
06 Partitions will be aligned on 2048-sector boundaries
Use 'l' on the experts' menu to adjustalignment
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):

Den vorgeschlagenen Wert »0700« für »Linux/Windows data« übernahmen die Tester und schrieben per »w« (Write table to disk and exit) alles auf den Datenträger. Zum Formatieren diente im Test »mkfs.ext4« . Auf der Kommandozeile dauerte der gesamte Vorgang etwa 3 Minuten weniger als mit Gparted. Die so geschriebene GPT war identisch mit der von Gparted erzeugten, das jedenfalls ergab im Test ein direkter Vergleich mit »dd« und »xxd« .

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Raid wiederherstellen

    Der Artikel zeigt, wie sich ein System mit Hardware-Raid in ein virtuelles System überführen lässt, wobei die Admins – gewissermaßen on the Fly – auch noch das Dateisystem verändern. Dafür kommen Bordmittel sowie Virtualisierungs- und Forensiktools zum Einsatz.

  • Wider das Vergessen

    Das Forensik-Toolkit Sleuthkit hilft Admins beim Retten versehentlich gelöschter Dateien. Forensiker kommen damit Verdächtigen auf die Schliche. Die neue Version 3.2 automatisiert jetzt ehemals komplizierte Abläufe, unterstützt zahlreiche Dateisysteme und läuft auch auf Mac OS und BSD.

  • Android-Forensik

    Android gilt als freies Betriebssystem. Doch wer sein Smartphone an den PC anstöpselt und die enthaltenen Daten auslesen will, stößt an Grenzen. Dieser Artikel zeigt, wie das SDK, Linux-Bordmittel und kommerzielle Software dem Android-Besitzer weiterhelfen.

  • Sicherer löschen

    Angesichts hoher Festplattenpreise sind gebrauchte Disks ein Renner bei Ebay. Aber der Wert der unbedacht darauf hinterlassenen Daten ist oft viel höher als der Kaufpreis. Wer seine Platte nur formatiert, bevor er sie entsorgt, wähnt sich in trügerischer Sicherheit.

  • SSD-Tuning

    Eigentlich soll mit Solid State Drives automatisch alles einfacher und schneller gehen. Das heißt aber nicht, dass es nicht auch hier noch Optimierungspotenzial gäbe. Dieser Artikel zeigt, worauf beim Zusammenspiel von Linux und SSDs zu achten ist.

comments powered by Disqus

Ausgabe 11/2016

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.