Login
Newsletter
Werbung

So, 16. November 2003, 00:00

Software-RAID mit Linux

Einführung

RAID ist auch möglich ohne RAID-Controller. Die Lösung für das 'Billig-RAID' ist Software-RAID. Dabei wird die Verwaltung des RAID vom Betriebssystem übernommen. Software-RAID kommt nicht an die Performance von Hardware-RAID mit RAID-Controller heran, auch die Features sind deutlich weniger.

Wenn es Software-RAID sein soll, ist Linux das Betriebssystem der Wahl. Zwar ist Software-RAID auch unter Windows 2000 und Nachfolger möglich, jedoch bietet Software-RAID unter Linux einige Vorteile:

  • Spare Disks bzw. Hot Fix Disks
  • Einfache Konfiguration mittels der Datei /etc/raidtab
  • Kein Logical Volume Management (LVM) nötig (unter Windows als 'Dynamische Festplatte' bekannt). Man kann, muss aber nicht, ein LVM-System auf ein Software-RAID aufsetzen.
  • RAID-Level können beliebig kombiniert werden. Da ein RAID-Device unter Linux als normales Block-Device behandelt wird, sind alle möglichen Kombinationen denkbar (RAID 10, RAID 15, etc.)
  • Gleichzeitig kann man Software-RAID durch Fein-Einstellungen (Kernel, etc.) sehr gut 'tunen'. Es wird sogar behauptet, dass es zwischen einem Linux Software-RAID und einem Onboard RAID-Controller keinen Performance-Unterschied gibt.

Installation

Es ist möglich, schon bei der Installation ein RAID-Array zu erzeugen und das System darauf zu installieren. Dazu muss das Install-System über folgende Features verfügen:

  • Der Linux-Kernel muss RAID unterstützen. Evtl. Vorhandene SCSI-Controller sollten natürlich auch unterstützt werden.
  • Die raidtools müssen vorhanden sein.
  • Die zu erzeugenden Partitionen, aus denen das Array besteht, müssen vom Typ 0xFD (Linux RAID autodetect), nicht vom Typ 0x83 (Linux) sein.

Soll das System selbst (zunächst) nicht auf RAID laufen, kann eine normale Standard-Installation vorgenommen werden. Der zu installierende Kernel sollte RAID unterstützen.

Ein RAID-Device erstellen

Unter Linux besteht ein RAID-Array aus einer Ansammlung von Block-Devices, die wiederum ein Block-Device (das RAID-Device) ergeben.

Am sinnvollsten ist es natürlich, Festplatten-Partitionen für das Erstellen eines RAID-Devices zu benutzen. Ein RAID-Device hat unter Linux die Bezeichnung /dev/md?.

Die Datei /etc/raidtab

/etc/raidtab ist die Konfigurationsdatei für das Erstellen eines RAID-Verbandes. Der Aufbau dieser Datei ist einfach gehalten.

  • raiddev device
    erfolgt immer am Anfang der Definition eines RAID-Verbandes
  • nr-raid-disks zahl
    Anzahl der benutzten Block-Devices im RAID-Verband
  • nr-spare-disks zahl
    Anzahl der vorhandenen spare disks im RAID-Verband. Nur nutzbar in Verbindung mit RAID 1,4 und 5.
  • persistent-superblock 0/1
    Sollte immer mit 1 definiert werden. Der persistent Superblock ist ein kleiner Bereich am Ende des Devices, in dem System-Informationen über das RAID Device stehen. Wichtig für Autodetection und für den Fall, dass Festplatten ihre Device-Bezeichnung ändern.
  • parity-algorithm
    Nur für RAID 5. Es sollte immer left-symmetric genommen werden.
  • chunk-size Streifengröße
    Die Größe eines Streifens in einem Striped Level.
  • device device
    Definition eines Devices in einem RAID-Verband
  • raid-disk nummer bzw. spare-disk nummer
    Fortlaufende Nummer, kommt direkt unterhalb einer Device-Definition, beginnend mit 0.

Beispiel für linear mode (chaining)

raiddev /dev/md0
 raid-level linear
 nr-raid-disks 2
 chunk-size 32
 persistent-superblock 1
 device /dev/sdb6
 raid-disk 0
 device /dev/sdc5
 raid-disk 1

chunk-size ist eigentlich unnötig, da es beim linear mode kein Striping gibt. Die Raidtools verlangen aber nach diesem Parameter. Deswegen wird dort einfach irgend etwas angegeben.

Beispiel für RAID 0

raiddev /dev/md0
 raid-level 0
 nr-raid-disks 2
 chunk-size 4
 persistent-superblock 1
 device /dev/sdb6
 raid-disk 0
 device /dev/sdc5
 raid-disk 1

Beispiel für RAID 1

raiddev /dev/md0
 raid-level linear
 nr-raid-disks 2
 nr-spare-disks 1
 chunk-size 32
 persistent-superblock 1
 device /dev/sdb6
 raid-disk 0
 device /dev/sdc5
 raid-disk 1
 device /dev/sdd5
 spare-disk 0

Beispiel für RAID 5

raiddev /dev/md0
 raid-level 5
 nr-raid-disks 3
 nr-spare-disks 1
 persistent-superblock 1
 parity-algorithm left-symmetric
 chunk-size 32
 device /dev/sda3
 raid-disk 0
 device /dev/sdb1
 raid-disk 1
 device /dev/sdc1
 raid-disk 2
 device /dev/sdd1
 spare-disk 0

Den RAID-Verband starten

Sobald ein RAID-Verband oder mehrere RAID-Verbände in /etc/raidtab definiert sind, kann der RAID-Verband mit

mkraid /dev/md0

gestartet werden. Um den RAID-Verband zu stoppen gibt man

raidstop /dev/md0

ein. Um den RAID-Verband erneut zu starten, benutzt man den Befehl

raidstart /dev/md0

Informationen

Wenn nun ein RAID-Verband läuft, möchte man auch über dessen Zustand Bescheid wissen. Die erste Anlaufstelle ist hier /proc/mdstat. Dort wird aufgeführt, welche RAID-Verbände am Laufen sind und welche Block-Devices daran teilnehmen. Ferner können dort auch Synchronisierungs-Prozesse beobachtet werden.

lsraid ist ein Programm mit zahlreichen Optionen und Ausgabemöglichkeiten. Die Manpage von lsraid (8) gibt hierzu erschöpfend Auskunft. Zwei der am häufigsten benutzten Optionen sind:

lsraid -A -a /dev/md0

gibt eine kurze Liste des md0 Devices aus

lsraid -R -p

gibt eine Liste aller vorhandenen Devices im raidtab-Format aus

RAID beim Booten starten

Läuft das System selbst nicht auf RAID, ist es möglich, den RAID-Verband zu jedem beliebigen Zeitpunkt mit raidstart zu starten. Um dies beim Booten zu tun, ist lediglich ein entsprechender Eintrag in die rc-Skripte nötig. Evtl. ist darauf zu achten, dass die nötigen Module vorher geladen wurden. Die Partitionen können dabei von jedem beliebigen Typ sein.

Wenn das System selbst auf RAID läuft, ist es unbedingt nötig, dass die Partitionen vom Typ 0xFD (Linux RAID autodetect) sind, außerdem muss die RAID-Unterstützung im Kernel sein. Der Kernel scannt beim Laden die vorhandenen physikalischen Partitionen und fügt sie dann selbsttätig zu einem RAID-Verband zusammen.

Ein Device hinzufügen oder entfernen

Es ist möglich, zur Laufzeit eines RAID-Verbandes Devices hinzuzufügen oder zu entfernen. Dies ist z.B. dann nötig, wenn eine defekte Festplatte ersetzt werden soll. Die Befehle dazu lauten raidhotadd und raidhotremove.

Weiterführende Literatur

  • Software-RAID-HOWTO, jeder Linux-Distribution beiliegend
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung