Harddisk mit GPT in Software-Raid tauschen (CentOS)

Hat man eine Festplatte mit mehr als 2 Terabyte Kapazität, muß man statt dem Master Boot Record (MBR) die neue GUID Partitionstabelle (kurz GPT) verwenden. In vielen Anleitungen zum Tauschen einer Festplatte aus dem Software-Raid wird sfdisk zum kopieren der Paritionen auf die neue Platte vorgeschlagen. sfdisk kann aber nicht mit dem GPT umgehen.

 

Deshalb hier eine Anleitung für Platten mit GPT:

Im folgenden Beispiel gehen wir davon aus, dass wir ein Raid 1 Array haben, wobei /dev/sda defekt ist und /dev/sdb in Ordnung. Wie immer gilt, alle Angaben ohne Gewähr und es empfiehlt sich vor solchen Schritten ein Backup der Daten zu machen!

Als erstes sollte man, sofern noch nicht geschehen, gdisk installieren:

$ yum install gdisk

Ob die Festplatte mit GPT oder MBR versehen ist, kann man z.B. erkennen, indem man

$ fdisk -l

ausführt. Da fdisk nicht mit GPT umgehen kann, sieht man folgende Warnung:

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Eine Ausgabe von mdstat würde etwa folgendes anzeigen:

$ cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda[0](F) sdb1[1]
      3906885440 blocks super 1.1 [2/1] [_U]

unused devices: <none>

Festplattenpartition aus dem Raid entfernen:

mdadm /dev/md0 -r /dev/sda1

Danach System runterfahren (sofern man kein Hotswap hat) und defekte Festplatte mit neuer in gleicher Größe ersetzen.

Die neue Festplatte muß mit exakt der gleichen Partitionierung beschrieben werden wie voher, deshalb kopiert man von der zweiten Festplatte die Partitionsdaten folgendermaßen:

sgdisk --replicate=/dev/sda /dev/sdb

VORSICHT: anders als bei Verwendung von sfdisk steht hier als erstes die Ziel-Festplatte (sda), als zweites die Quell-Festplatte (sdb)!

Danach muß man der neuen Festplatte eine zufällige UUID generieren, da sonst beide Platten die gleiche hätten:

sdisk -G /dev/sda

Zu guter Letzt bindet man die neue Platte wieder ins Raid-Array ein:

mdadm --manage /dev/md0 --add /dev/sda1

Danach aktualisiert sich das Software-Raid automatisch, bis man zum Schluß folgende Ausgabe erhält:

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[2] sdb1[1]
      3906885440 blocks super 1.1 [2/2] [UU]
      bitmap: 0/30 pages [0KB], 65536KB chunk

unused devices: <none>