Soft-RAID nachträglich auf LVM System hinzufügen

Die Situation: Man hat mal ein Linux System mit einer Festplatte und LVM aufgesetzt und möchte jetzt durch das hinzufügen einer zweiten Platte ein soft-raid darauf machen, ohne das System neu installieren zu müssen. – Und mit den richtigen Handgriffen geht das ganz einfach! 😉

Mehr Platz gefällig?
Meistens ist eine nachträglich hinzugefügte Platte grösser als die erste. – Möchte man dies gerade nutzen um mehr Platz zu bekommen kann man einfach zwei grosse Platten einbauen und nach der RAID-Migration der zweiten Platte, die erste auch noch ersetzen.
Die dazu nötigen Schritte werden an unten an passender Stelle beschrieben.

Situation

Wir gehen davon aus, dass das system zwei Partitionen hat:
/dev/sda1 (100MB): /boot
/dev/sda2 (rest) : LVM
(bei mehr partionen die Schritte einfach entsprechend für alle wiederholen)

Migration

Zuerst mal wird das System herunter gefahren und die zweite Festplatte eingebaut.
Dann wieder hochfahren und die zweite Platte so formatiert, dass die Partitionen mindestens so gross sind wie die bisherigen (dürfen auch grösser sein, wenn es Sinn macht (z.B. beim LVM) und man evtl. vorhat später die kleinere Platte auch durch eine grössere zu ersetzen.

Nun migrieren wir /boot; dies ist besonders einfach, da /boot im laufenden Betrieb problemlos unmounted werden kann:

umount /boot
mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sda1 missing

Nun muss gewartet werden bis

cat /proc/mdstat

beide Partitionen als synchron anzeigt. Danach wird die alte Partition erstmal wieder entfernt:

mdadm --manage /dev/md1 --fail /dev/sda1
mdadm --manage /dev/md1 --remove /dev/sda1
mdadm --zero-superblock /dev/sda1

Wir haben hier zuerst ein sog. "degraded" RAID-Array mit der bisherigen Partition erstellt.

Nun ändern wir in: /etc/fstab den Eintrag für boot wie folgt um:

/dev/md1                /boot                   ext3    defaults        1 2

Jetzt kann /boot wieder gemounted werden:

mount /boot/

Nun muss auch noch die: "#boot=" Zeile in: /boot/grub/menu.lst angepasst werden:

#boot=/dev/md1

Als nächstes stellen wir sicher, dass grub auf beiden Festplatten installiert ist:

grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> find /grub/stage1
grub> quit

Jetzt folgt die Migration des LVMs. Dazu erstellen wir wieder ein degraded raid-array, fügen dass als PV den LVM hinzu verschieben dann all die Daten von der alten Partition auf das neue md-drive und können danach das alte PV aus der VG entfernen:

mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb2
pvcreate /dev/md2
vgextend rootvg /dev/md2
pvmove /dev/sda2 /dev/md2
vgreduce rootvg /dev/sda2
pvremove /dev/sda2

Zu guter letzt muss jetzt noch ein neues initrd erstellt werden:

mkinitrd -v -f /boot/initrd-$(uname -r).img $(uname -r)
Achtung
Das erstellen des initrd’s ist ganz wichtig und selbst dann, wenn man bereits vorher vom LVM gebootet- und CentOS am laufen hat! – Denn CentOS fügt bei der initialen initrd erstellung jeweils nur die Treiber-Module hinzu, die auch benötigt werden; so fehlt aber der raid-treiber und das System wird nicht booten!

Nun kann man das System neu starten und wenn alles geklappt hat die Partitionen der alten Platte dem neuen RAID-Array hinzufügen:

mdadm --manage /dev/md1 --add /dev/sda1
mdadm --manage /dev/md2 --add /dev/sda2
cat /proc/mdstat
Tip
Will man nun die alte Platte auch gleich mit einer grösseren ersetzen, so kann man diese vor dem obigen Schritt durch eine grössere ersetzen, entsprechend Partitionieren und gleich wie im obigen Schritt einbinden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.