• Helmut Weber
  • 30.08.2012

Software-RAID unter Linux betreiben


Es ist immer ratsam einen Root-Server mit einem RAID-System zu betrieben. Dadurch kann ein kompletter Datenverlust beim Ausfall einer Festplatte vermieden werden. Meist steht bei einem Root-Server dafür kein eigener Hardware-RAID-Controller zur Verfügung. Mittels dem Dienst mdadm hat man jedoch wunderbare Möglichkeiten ein stabiles Software-RAID-System mit mehreren Festplatten aufzubauen.

Neues RAID erstellen

Bevor mit 2 Festplatten ein RAID1-Verbund erstellt wird, sollten die Partitionstabellen beider Festplatten identisch sein. Dazu kopiert man am besten die Partitionstabelle einer vorhandenen Festplatte auf die neue Festplatte mit der das RAID-System aufgebaut werden soll:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Nun sind zwei identische Festplatten vorhanden (sda und sdb), die mit folgender Anweisung zu einem RAID1-Verbund zusammengelegt werden können:

mdadm --create --verbose /dev/md0 --level=1 /dev/sda1 /dev/sdb1

Diesen Vorgang muss man für jede gewünschte Partition der Festplatte durchführen.

Aktuelle RAID-Verbunde in die Konfigurations-Datei übernehmen

Damit die erstellten RAID-Verbunde dauerhaft im System zur Verfügung stehen, müssen diese in die Konfigurations-Datei /etc/mdadm/mdadm.conf übernommen werden:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Hinzufügen einer Partition in einen RAID-Verbund

Möchte man in einen bestehenden RAID-Verbund eine weitere Partition hinzufügen, kann man dies über folgenden Befehl tun:

mdadm --add /dev/md0 /dev/sdb1

Entfernen einer Partition aus dem RAID-Verbund

Eine aktive und funktionsfähige Partition kann nicht aus einem RAID-Verbund entfernt werden. Wenn man dies dennoch tun möchte, so muss man die gewünschte Partition zuerst als Fehlerhaft deklarieren, und kann diese dann Problemlos aus dem RAID-Verbund entfernen:

mdadm --fail /dev/md0 /dev/sda1
mdadm --remove /dev/md0 /dev/sda1

Möchte man hingegen einen kompletten RAID-Verbund aus dem System entfernen, muss dieser zuerst beendet werden, bevor dieser entfernet werden kann:

mdadm --stop /dev/md0
mdadm --remove /dev/md0

RAID-System überwachen

Einen kurzen Überblick über den Zustand eines RAID-Systems, ob zum Beispiel alle Festplatten eingebunden sind, oder wie weit eine Synchronisation abgeschlossen ist, erhält man mit folgendem Befehl:

cat /proc/mdstat

Möchte man zum Beispiel während einer Synchronisation dauerhaft sich den aktuellen Zustand des RAID-Systems anzeigen lassen, kann man dies über den Befehl watch tun:

watch cat /proc/mdstat

Eine ausführliche Information zum Zustand eines RAID-Systems erhält man mit folgender Anweisung:

mdadm --detail /dev/md0

wenn ein RAID-Verbund fehlerlos läuft, erhält man als Status für diesen RAID-Verbund ein [UU] zurück. Sollte eine Partition nicht im RAID-Verbund vorhanden sein, wird dies durch ein [_U] bzw. [U_] im Status angezeigt. Dies kann zum Beispiel so aussehen:

cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0] sda1[1]
      1983872 blocks [2/1] [U_]

unused devices: <none>

Weiterführende Links

Beim Umgang mit einem Software-RAID, sowie für die Erzeugung dieser Dokumentation, haben mir folgenden Seiten maßgeblich geholfen:

http://wiki.ubuntuusers.de/Software-RAID
http://www.ducea.com/2009/03/08/mdadm-cheat-sheet
https://systemausfall.org/wikis/howto/SoftwareRaidminiHowTo