QuickTipp: Partitionstabellen mit sgdisk klonen

Egal ob bei dem ersten Aufsetzen oder bei einem späteren Erweitern eines Software Raids unter Linux, es muss immer auf zusammengehörenden Festplatten die gleichen Daten in die Partitionstabelle eingetragen sein. Die meisten Administratoren lösen das Problem mittels eines manuellen Aufrufs und lassen sich zunächst die alte Partitionstabelle ausgeben und tragen die Daten dann auf der neuen Festplatte ein.

tux@linux ~ $ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9E91EA64-7F47-4DE7-82E6-B162A0F22F83
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          264192         2361343   1024.0 MiB  FD00  Linux RAID
   2         2361344      5860533134   2.7 TiB     FD00  Linux RAID
 128            2048          264191   128.0 MiB   EF02  BIOS boot partition

Diese Vorgehensweise lässt sich auf eine einzelne Festplatte ohne Probleme anwenden, birgt aber auch hier schon die Möglichkeit, dass sich der Administrator vertippt und falsche Daten eingibt.

Sinnvoller wäre es die Daten einfach zu kopieren, also die Struktur von der ersten Festplatte auf die nächste zu übertragen. In einigen Anleitungen im Internet findet man den Hinweis auf die Möglichkeit mit dem Befehl dd den MBR der Festplatte zu kopieren. Dies funktioniert aber nur bei identischen Festplatten und der Nutzung einer MBR – Partionierung ohne Erweiterte Partition. Sobald die „Guid Partition Table“ (GPT) im Einsatz ist befindet sich im MBR nur noch ein Hinweis auf die Nutzung von GPT und kein eigentlicher Eintrag mehr.

An dieser Stelle hilft der Befehl mit dem Namen sgdisk. Dieser mag dem einen oder anderen bekannt vorkommen auf Grund der Tatsache, dass es einen Befehl sdisk für die Manipulation von MBR Daten gibt.

Der Befehl sgdisk bietet ähnliche Funktionalitäten und die — für die wir uns interessieren — ermöglicht uns den Inhalt einer Partitionstabelle zu extrahieren und in eine neue Partitionstabelle zu schreiben.

tux@linux ~ $ sudo sgdisk -R=/dev/sda /dev/sdb
creating new GPT entries.
The operation has completed successfully.

Nach diesem Aufruf sind die beiden Partitionstabellen auf den Festplatten /dev/sda und /dev/sdb identisch. Dies sollte aber nicht so sein. Die GUIDs der Festplatte /dev/sdb sollten andere als bei der ersten Festplatte sein.

Um dies zu reparieren kennt der Befehl sgdisk den Parameter -G. Dieser teilt der Festplatte und den darauf untergebrachten Partitionen eine neue GUID zu.

tux@linux ~ $ sudo sgdisk -G /dev/sdb
Creating new GPT entries.
The operation has completed successfully.

Wie zu sehen ist, sind die Ausgaben der beiden Befehlsaufrufe identisch, da bei beiden die Partitionstabelle neu generiert wird. Beim zweiten Aufruf wird sie aus den eigenen Daten generiert und neue, zufällige, GUIDs erzeugt.

Somit lassen sich auch für größere Software Raids oder bei Ausfall einer Festplatte die Partitionstabellen durch die beiden o. g. Aufrufe ohne die Chance als Administrator einen Zahlendreher zu produzieren klonen.