Hinweis: Diese Lösung entstand vor geraumer Zeit, noch mit den alten RAID-Tools. Sie funktioniert für mich seit langem problemlos. Für eine Neuinstallation empfehle ich jedoch das Software-RAID-HOWTO von Niels Happel, das auch die neuen RAID-Tools beschreibt (Vielen Dank an Eckehard Siegmann für diesen Hinweis).

Einrichten eines RAID1(Mirroring)-Gerätes unter SuSE-Linux

Wozu?
Durch die Spiegelung der Daten auf zwei Platten sind diese recht gut gegen den Totalausfall einer Platte geschützt.
Der Datenzugriff wird dabei nicht schneller (das wäre beim 'Striping' so).

> Korrektur vom 5.1.00: Der RAID-Treiber im Kernel arbeitet mit 'load balancing'
> und kann die angefordeten Daten jeweils scheibchenweise von der jeweils
> schnelleren Platte abholen, so daß der Zugriff doch schneller wird.

Ein Backup kann das 'Mirroring' aber keinesfalls ersetzen, man denke nur an rm -r *, bei dem dann halt auf beiden Platten alles schön synchron gelöscht wird ;)

Das angeführte Beipiel läuft bei mir auf einer SuSE6.x-Distribution. Dort wird einem von seiten des Boot/Init-Prozesses schon Arbeit abgenommen. Existieren die Dateien /etc/mdtab und /etc/raid1.conf, so übernimmt der Boot/Init-Prozess das Initialisieren des Gerätes (evtl. die Reparatur), es muß dann nur noch gemountet werden.

Über andere Distributionen (RedHat etc.) kann ich keine Aussagen treffen, zumindest das eigentliche Einrichten des Gerätes müßte wie hier angegeben funktionieren.

Here we go:

  1. Einrichten zweier Partitionen:

    Anlegen von /etc/raid1.conf aus dem Template (bei SuSE unter /usr/doc/packages/mdutils)
    Meine sieht z. B. so aus:

    # Sample raid-1 configuration
    raiddev /dev/md0
    raid-level 1
    nr-raid-disks 2
    nr-spare-disks 0

    device /dev/hdc2
    raid-disk 0

    device /dev/hda2
    raid-disk 1

  2. mkraid /etc/raid1.conf
  3. mdadd /dev/md0 /dev/hdc2 /dev/hda2
  4. mdrun -p1 /dev/md0
  5. mke2fs /dev/md0
  6. Erzeugen von /etc/mdtab (in Entsprechung zu /etc/fstab stehen dort die RAID-Geräte drin, die zum Bootzeitpunkt initialisiert werden sollen)
    Meine /etc/mdtab sieht so aus:

    /dev/md0 raid1,crc32 /dev/hdc2 /dev/hda2

  7. In /etc/fstab schreiben bzw. von Hand mounten:
    mount -text2 /dev/md0 /mnt/somewhere

Gratulation, das isses...

Noch ein Hinweis: RAID-Geräte sind etwas anfällig fuer Stromausfälle oder andersartig ungewolltes Rechnerausschalten (sind die Daten nun auf beiden Platten gleich oder konnten die Daten nur noch rechtzeitig auf eine Platte geschrieben werden? - Inkonsistenz!).
Wird das Laufwerk nicht ordnungsgemäß 'geunmountet' ('ungemountet'), läuft bei SuSE automatisch beim nächsten Booten das Programm ckraid (check raid) an. Bei der SuSE 6.0 funktionierte dies noch nicht so, dort mußte erst von Hand die Root-Partition read-write gemountet werden und dann ckraid --fix /etc/raid1.conf aufgerufen werden.

Hot-Plugging

Vielen Dank an Mike Leipold für den Hinweis zum 'Hot-plugging' (Austausch einer defekten Platte im laufenden Betrieb).
Vorsicht: das geht nicht mt jeder Platte, sie muß dafür vorgesehen sein (Ich besitze keine ;).
So müßte es gehen: 'unmount' -> 'mdstop' -> Austausch der Platte.
Das Problem: Nach dem Umstecken kommt der SCSI-Controller mit der Platte nicht mehr zurecht, doch der Kernel kann "hot-plug" SCSI:

echo "scsi remove-single-device host channel ID LUN " > /proc/scsi/scsi
echo "scsi add-single-device host channel ID LUN " > /proc/scsi/scsi
Daß das (auch für das nachträgliche Einbinden eines SCSI-Scanners) ohne Reboot funktioniert, sieht man hier.

Dann wieder einbinden: 'mdrun' (das RAID wird synchonisiert) -> 'mount'
Nach Software-RAID HOWTO: Error Recovery gibt es die Möglichkeit des 'hot repair', also das Synchronisieren des RAID ohne es außer Betrieb nehmen zu müssen. Habe ich aber keine Erfolgsberichte drüber.


Letzte Änderung vom 16.11.00, Für Fragen, Berichtigungen, Ergänzungen: Holger Daßler