HOWTO: RAID0 in RAID1 umwandeln auf Hetzner Server

Mar 20, 2015 00:00 · 896 words · 5 minute read

Vor kurzem wollten wir das laufende RAID auf unserem Rootserver in ein physisch redundantes umwandeln, da wir gemerkt haben, dass wir den Platz des RAID0 eh nicht benötigen und wir auf jeden Fall besser schlafen, wenn die Daten auf zwei Festplatten gleich verteilt sind, falls doch mal eine der beiden Platten abrauschen sollte.

Es gibt sicher einige Möglichkeiten ein RAID0 in ein RAID1 umzuwandeln. Aber nach einigem Herumprobieren habe ich eine einfache und funktionierende Lösung für dieses Problem gefunden.

Ich habe auch -keine- Lösung gefunden bei der die Daten auf der Platte bleiben können.

Was du dazu benötigst:

  • deinen Rootserver bei Hetzner ;)
  • entweder Zugriff auf einen zweiten Server ODER genug Backup-Space bei Hetzner

1. Backup erstellen

Wir gehen davon aus, dass du ein funktionierendes System hast in dem ein RAID0 konfiguriert ist.
Als erstes erstellen wir ein Backup vom aktuellen System. Bitte beachte den Speicherbedarf deiner Partitionen! Die aktuelle Plattenbelegung kann mit df -h angezeigt werden.

Als erstes starten wir das Rescue-System für den Server. Dafür musst du dich auf https://robot.your-server.de/server einloggen und unter Server Rescue das Rescue-System aktivieren. Dann einen Reboot auslösen und mit dem angezeigten Passwort im Rescue System einloggen.

Danach mounten wir das Dateisystem unseres Servers in /mnt

mount /dev/md2 /mnt

Beachte: Standardmäßig ist die Root-Partition in /dev/md2, die Boot-Partition in /dev/md1 und die Swap-Partition in /dev/md0. Je nach Konfiguration könnte das ander sein. Für genaue Informationen über dein System zu erfahren helfen folgende Befehle:

fdisk -l

cat /proc/mdstat

Dann bewegen wir uns ins Root-Verzeichnis, bekommen Root-Rechte und starten das Backup indem wir ein Tar-Archiv vom gesamten System erstellen.

cd /mnt
sudo su
tar -cvpzf ./backup.tar.gz --exclude=./backup.tar.gz --one-file-system ./

Erklärungen:
c - Archiv erstellen v - verbose mode, zeige alle Dateien an, die verpackt werden p - preserve permissions, erhalte alle Zugriffsrechte z - benutze gzip um das Archiv zu komprimieren (wenn das System nicht allzu groß ist, ist dies optional) f - gibt den Dateinamen des zu speichernden Archivs an –exclude=/backup.tar.gz - schließt den angegebenen Pfad aus dem Packprozess aus –one-file-system - andere gemountete Dateisysteme werden beim Packen ausgelassen (nähere Informationen)

Das kann jetzt, je nach Größe der Daten, eine ganze weile dauern. Normalerweise sollte das funktionieren. Bei mir gab es dabei aber Fehler, da das Tar-Programm bei den Syslog Files folgende Fehlermeldung anzeigte: tar: /: file changed as we read it Danach habe ich die Kompression (-z) beim Tar-Befehl weggelassen und es ging ohne Probleme

2. Backup kopieren

Jetzt muss das Backup noch auf ein anderes Medium kopiert werden. Man könnte es auf deinen gemieteten Hetzner Backup-Space schieben oder auf einen anderen Rootserver.

Beim zweiten Rootserver würde sich einfach SSHFS anbieten. Damit mounted man einfach einen Ordner auf dem anderen Server und kopiert das Backup-Archiv per cp. Normalerweise ist SSHFS auf den Ubuntus und dem Rescue-System bei Hetzner per default installiert.

Mit folgendem Command kann man einen entferntes Ordner einbinden:

sshfs user@remote-server:/pfad/zu/ordner /pfad/zu/mountordner

Natürlich muss der Benutzer auf dem Remote-System Schreibrechte in dem Ordner haben ;)

Beim Hetzner Backup-Space dann FTP, SAMBA oder WebDAV. Nähere Informationen dazu gibt es im Hetzner Wiki

3. installimage aufrufen

Die einfachste Möglichkeit jetzt das RAID0 in ein RAID1 umzuwandeln ist die Installation eines frischen Systems auf dem Server. Damit haben wir dann hinterher auch keine Probleme mit dem GRUB-Bootloader, da dieser gleich richtig ins RAID mitinstalliert wird (vorher muss das vorher gemountete System ausgehangen werden).

Also hacken wir:

umount /mnt
installimage

Dann kommt eine Config-Datei in der man das RAID-Level angeben kann und die Partitionsaufteilung einstellen kann (weiter unten). Folgendes sollte dort stehen:

## activate software RAID? < 0 | 1 >
SWRAID 1
## Choose the Level for software RAID < 0 | 1 >
SWRAIDLEVEL 1

Und dann weiter unten die Partitionen einstellen, falls bedarf besteht.

Danach kann das System installiert werden.

4. Root-Partition wipen und das Backup zurückspielen

Um auf Nummer sicher zu gehen, formatieren wir noch einmal die Root-Partition und spielen dann das Backup wieder ein.

Root-Partition formatieren:

mkfs.ext4 /dev/md2

Da wir für das Backup einen zweiten Mountpoint benötigen, erstellen wir zwei Ordner in /mnt und mounten die frisch formatierte Partition in den Systemordner.

mkdir /mnt/system /mnt/backup
mount /dev/md2 /mnt/system

Danach wird der Backup-Ordner von dem anderen Server nach /mnt/backup gemountet:

sshfs user@remote-server:/pfad/zum/backupordner /mnt/backup

*Bei Benutzung vom Backup-Space dann analog per Samba oder WebDAV einbinden

Jetzt können wir ganz einfach das Backup wieder aufspielen/auspacken, das kann jetzt wieder eine ganze weile dauern, da die Daten ja übers Netzwerk übertragen werden:

tar -xvpzf /mnt/backup/backup.tar.gz -C /mnt/system --numeric-owner

Erklärungen: x - Archiv extrahieren
C - sagt Tar, in das entsprechende Verzeichnis zu wechseln, bevor der Entpackvorgang gestartet wird –numeric-owner - die Numerischen Besitzattribute der Dateien bleiben erhalten, so dass alle Rechte vom alten System so bleiben wie sie waren

Danach müssen wir gegebenenfalls noch ein paar Ordner wiederherstellen (bitte vorher in /mnt/system nachschauen, ob sie da sind oder nicht):

mkdir /proc /sys /mnt /media

5. Bootloader aktualisieren

Um den Bootloader zu aktualisieren müssen wir per chroot auf unser System wechseln. Dazu müssen wir alle Devices und Partitionen im chroot und die Boot-Partition einbinden:

for i in /dev /dev/pts /proc /sys; do mount -B $i /mnt/system/$i; done
mount /dev/md1 /mnt/system/boot
chroot /mnt/system

Danach sind einfach GRUB updaten:

update-grub

Wenn der update-grub-Befehl erfolgreich war, können wir rebooten und das alte System sollte im RAID1 booten :)


Quellen:

Ubuntu Help “BackupYourSystem/TAR”
Inforecovery.com “Recovering the GRUB on software RAID”
Joachim Uhl “GRUB auf einem Software RAID wiederherstellen”