Debian: Umzug eines laufenden Systems in ein Raid

Der Proempelserver lief bisher auf einer einzelnen Raidfähigen Festplatte, die zweite Platte war zwar vorhanden, wurde aber als Zusatzspeicher benutzt. Da der Server nun doch in die Jahre kommt und damit die Ausfallwahrscheinlichkeit steigt, habe ich mich entschlossen, aus den beiden Platten ein Raid1 zu bauen. Die Hoffnung ist, daß wenn eine Platte stirbt, auf der zweiten Platte weitergearbeitet werden kann. Eine Neuinstallation auf einem Raid erschien mir zu aufwendig, vor allem weil dann unser Mailserver für einige Zeit nicht zur Verfügung stehen würde. Auch auf die erneute Konfiguration hatte ich keine Lust. Daher entstand die Idee, einen Umzug im laufenden Betrieb durchzuführen.

Ich kann nur jedem, der ähnliches vorhat, vorab mit einem Testsystem zu üben, ich tat dies über eine Installation mittels VirtualBox.

Man beginnt im laufenden System, es ist einige Vorarbeit notwendig, die im normalen Betrieb erledigt werden kann, die Ausfallzeit wird dadurch minimiert, aber ganz ohne Ausfallzeit geht es leider nicht.

Als erstes muß das System Raidfähig gemacht werden, dazu installiert man das Paket mdadm, sofern auch LVM zu Einsatz kommen soll auch dieses.

    1  apt-get install mdadm

Als nächstes wird die 2. nicht genutzte Platte vorbereitet, ich mußte diese allerdings erstmal freiräumen. Partitionstyp wird auf ‘fd’ eingestellt

    2  cfdisk /dev/sdb

Man erstellt nun die Partitionen nach den eigenen Vorstellungen, bei mir nur Swap und Root, anschließend wird das Raid mit fehlender zweiter Platte eingerichtet , formatieren und Swap erstellen:

    3  mdadm --create /dev/md0 --raid-devices=2 --level=1 --metadata=0.90 missing /dev/sdb2
    4  mkswap /dev/sdb1
    5  mkfs.ext3 /dev/md0

Die frische Raidpartition ins System einbinden und die Daten des System schonmal kopieren(synchronisieren). Ich habe dies schonmal im laufenden Betrieb gemacht, da man so die Ausfallzeit weiter reduzieren kann, später erfolgt ein reboot ins Rescue System, hier muß nochmals Synchronisiert werden, das geht dann aber wesentlich schneller, da sich in der Regel nur wenige Daten ändern und rsync dies gut geregelt bekommt.

   6  mkdir /mnt/target
   7  mount /dev/md0 /mnt/target
   8  apt-get install rsync
   9  rsync -ahx --exclude='/mnt/' / /mnt/target/

Nun wird die Raidkonfiguration dem neuen System bekannt gemacht und die Einträge von fstab und mtab der Raidplatte angepasst

   10  mdadm --examine --scan >> /mnt/target/etc/mdadm/mdadm.conf
   11  vi /mnt/target/etc/fstab
     /dev/sda1        none          swap    sw                      0       0
     /dev/md0         /             ext3    defaults                0       1
     /dev/sdb1        none          swap    sw                      0       0
     proc             /proc         proc    defaults                0       0

Auf meinem System ist Grub2 installiert, der hat mir einige Nerven gekostet, wobei die Arbeit eigentlich sehr simpel ist, allerdings hat mit in allen Howtos zum Thema ein Hinweis gefehlt

   12 vi /etc/default/grub

Diesen Eintrag setzen:

   GRUB_TERMINAL=console

Nun wird das System im Rescue-Modus oder per Live CD gestartet. Sofern dort nicht vorhanden muß mdadm nochmals installiert werden, damit die Raidkonfiguration erkannt und genutzt werden kann.

    1  apt-get install mdadm vim
    2  mdadm --assemble /dev/md0 /dev/sdb2
    3  mkdir /mnt/target
    4  mkdir /mnt/source
    5  mount /dev/md0 /mnt/target/
    6  mount /dev/sda2 /mnt/source

Nun wird abschließend nochmal synchronisiert:

    7 rsync -ahx /mnt/source /mnt/target/

War dies erfolgreich, wird eine Chrootumgebung vorbereitet und ins “neue System” gechrootet:

    7  mount -o bind /dev/ /mnt/target/dev/
    8  mount -o bind /sys/ /mnt/target/sys
    9  mount -o bind /proc/ /mnt/target/proc/
   10  chroot /mnt/target/

Im CHroot muß nun Grub neu in den MBR beider Platten geschrieben werden, anschließend wird eine neue GrubConfig generiert:

    1  grub-install /dev/sda
   2  grub-install /dev/sdb
    3  update-grub
    4  update-initramfs -u

Nun kann das System neugestartet werden, und hoffentlich bootet es nun auch ins Raid. Hier hatte ich diverse Schwierigkeiten, welche meiner Meinung nach nur durch die kleine Änderung in /etc/default/grub behoben wurden, so ganz sicher bin ich mir aber nicht. Das Problem, war der Server in einer Rebootschleife festhing.

Nach erfolgreichem Neustart wird die erste Platte, auf der bisher das System lief umgebaut und ebenfalls Raidfähig gemacht:

cfdisk /dev/sda

hier identisch wie sdb einrichten

mdadm --add /dev/md0 /dev/sda2

den Rest macht das Raid selber, wer mag kann per ‘cat /proc/mdstat’ zuschauen, wie die Platten synchronisieren. Dieser Vorgang geschieht vollautomatisch, man braucht nicht abwarten, bis er abgeschlossen ist. Auch kann der Vorgang durch Reboots unterbrochen werden, er wird automatisch fortgesetzt. Je nach Plattengröße kann es mehrere Stunden in Anspruch nehmen.
am Ende nochmals ein update-grub durchführen und fertig 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *