Software RAID für Linux

closeDieser Beitrag wurde vor über 3 Monaten veröffentlicht. Die darin beschriebenen Informationen sind mit Vorsicht zu geniessen, da sie bereits veraltet oder nicht mehr gültig sein könnten. Solltest du von Neuerungen oder Verbesserungen wissen, so freue ich mich über einen klärenden Kommentar.

Die heutige Technik wächst rasend schnell. In einen Computer kann immer mehr RAM verbaut werden, die Taktrate einer CPU steigt andauernd und auch eine Grafikkarte wird immer leistungsfähiger. Die Festplatte hingegen bleibt ein bisschen auf der Strecke. Zwar steigern sich auch da die Spezifikationen, doch bei weitem nicht so schnell wie bei anderen Komponenten. Was also tun wenn die Platte langsam zu langsam wird oder schlicht und einfach mehr Speicherplatz her muss?

Die Antwort heisst RAID und steht für Redundant Array of Independent Disks, zu deutsch in etwa “Redundante Anordnung unabhängiger Festplatten” (Wikipedia).

Doch viel Entscheidender für den Einsatz von RAID als der Geschwindigkeitsgewinn ist die Redundanz. So kann eine Disk auf eine oder mehrere Disks, je nach Level, gespiegelt werden. Würde dabei dann eine Disk ausfallen, so wäre auf der oder den anderen Disks noch eine Sicherheitskopie, wodurch diese Wiederhergestellt werden kann.
Natürlich muss man hier erwähnen: Dies ist KEIN ERSATZ für ein BACKUP!

RAID Level

Der RAID Level bestimmt oder definiert, wie die Daten auf den Disks gespeichert werden. Mittlerweile gibt sehr viele verschiedene Levels, wobei die meisten wie 01, 10, 05 o.ä., aber nur Kombinationen aus den Grundlagen wie 0, 1, 5 und ggf auch noch 2, 3, 4 und 6.
Bestandteil von LPIC 201 ist aber nur 0, 1 und 5, also werde ich mich hier auch auf diese Beschränken. Wer mehr dazu wissen will, findet hier eine schöne Übersicht.

RAID 0

Wenn man es ganz korrekt will, so müsste man RAID 0, auch Striping genannt, eigentlich aus der Liste der RAIDs ausschliessen, weil hier keine Redundanz vorhanden ist.

An vorhandenem Festplattenspeicher geht in diesem Level nichts verloren, da ja kein Speicher für die Sicherung reserviert werden muss. Der Vorteil aber der RAID 0 bieten kann: Die Last beim Lesen oder Schreiben auf oder von der Platte kann auf zwei Köpfe verteilt werden, wobei man an Geschwindigkeit gewinnt.

RAID 1

Auch Mirroring genannt bietet RAID 1 nun Redundanz. Alles was auf die Platte 0 geschrieben wird, wird auch auf der Platte 1 abgelegt.

Somit verliert man den Speicherplatz einer ganzen Platte, bekommt dafür aber die Gewissheit, dass falls eine der beiden Platten mal ausfallen sollten, man die Daten wieder herstellen kann. Ein weiterer Vorteil ist, dass beim Lesen von beiden Platten gleichzeitig gelesen werden kann, was wiederum der Geschwindigkeit zu gute kommt.

RAID 5

RAID 5 kann eingesetzt werden, sobald genau oder mehr als 3 Platten vorhanden sind. In Level 5 wird die Redundanz aber nicht wie bei RAID 1 nur von einer Platte getragen, sondern die Spiegelung wird auf die vorhandenen Platten verteilt.

Geht man von der Zahl X für die Anzahl an verbauten Festplatten aus, so werden beim Schreiben die Daten auf X-1 Festplatten verteilt. Die übrig gebliebenen Festplatte übernimmt dabei das Mirroring der eben geschriebenen Daten. Dieser Bereich wechselt für alle geschriebenen Daten zwischen allen Festplatten hin und her.
Fällt nun eine Disk (z.B. 3) aus, so wurden entweder nur das Backup beschädigt, jedoch keine Daten (A) oder der betreffende Sektor (B, C & D) kann aus dem Mirror wiederhergestellt werden. Schlussendlich kann also die ausgefallene Disk durch eine neue, leere ersetzt werden und diese wird automatisch durch den RAID-Verbund wiederhergestellt.

RAID Controller

Ein RAID wird immer von einer betreffenden Stelle aus gesteuert. Dies kann ein RAID Controller in Hardware- oder beim Software-RAID natürlich in Softwareform sein.
Der Vorteil liegt hier klar beim Hardwarecontroller, da dieser neben Cache zum Zwischenspeichern nicht noch die CPU belasten muss. Jedoch ist er in der Anschaffung viel teurer, weshalb auch eine Softwarelösung helfen kann.

Einrichten

Da ein Softwareraid unter Linux auf Modulen des Kernels aufbaut, kann der Status jederzeit über die Datei /proc/mdstat abgefragt werden.
Zum Einrichten eines neuen RAIDs wird das Paket mdadm benötigt. Die Testinstallation werde ich wieder unter Debian durchführen, unter Ubuntu oder anderen Derivaten sind aber keine grossen Abweichungen zu erkennen. Also:

apt-get install mdadm

Dann muss noch das passende Kernelmodul geladen werden. Soweit mir bekannt ist dies unter Ubuntu bereits seit längerem standardmässig im Kernel, unter Debian aber nicht. Also prüfen wir das zuerst:

lsmod | grep md_mod

Erhalten wir eine Ausgabe wie die folgende, so ist das Modul bereits geladen:

md_mod                 73872  0

Ansonsten muss dies noch nachgeholt werden:

modprobe md_mod

Nun kann das RAID eingerichtet werden. Für RAID 0 benutzt man den folgenden Befehl:

mdadm --create --verbose /dev/md0 --auto=yes --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1

Für ein RAID 1 kann man den Aufbau schon erraten:

mdadm --create --verbose /dev/md0 --auto=yes --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Und für RAID 5 ist es auch nicht komplizierter:

mdadm --create --verbose /dev/md0 --auto=yes --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

Nun kann das eben erstellte Laufwerk formatiert und gemounted werden:

sudo mkfs.ext3 /dev/md0 
mount /dev/md0 /data

Hatten die Disks vorher schon mal ein RAID gespeichert, so sollten diese vor dem Erstellen erst “geputzt” werden von den alten Metadaten:

mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1 
mdadm --zero-superblock /dev/sdc1

Damit das ganze auch dauerhaft anhält, solle man noch einen Eintrag in der /etc/fstab anlegen und alles in mdadm.conf eintragen:

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

Stoppen

Will man das RAID mal nicht mehr, so muss es natürlich zuerst ausgehängt und ausgetragen und kann dann gestoppt werden:

mdadm --stop /dev/md0

Erweitern

Und wenn man mal eine Platte mehr zur Hand hat, so kann man diese natürlich auch nachträglich noch zufügen:

sudo mdadm --add /dev/md0 /dev/sdd1

Und dann das ganze RAID um den gewonnen Platz vergrössern:

mdadm --grow --raid-devices=4 /dev/md0

Und zum Schluss auch das Dateisystem nicht vergessen:

resize2fs /dev/md0

Und fertig ist die Einführung in Software-RAID.

[Bildquelle]

close
Immer informiert sein dank meines RSS Feeds.Oder folge mir via Twitter!

13 Gedanken zu „Software RAID für Linux

  1. nico

    erwähnenswert ist auch, dass es auch kombinationen dieser Raid formen in Form von 10 und 50 gibt, wovon das 10er doch recht häufig verwendet wird :)

    Antworten
    1. Patrick Artikelautor

      Du meinst so erwähnenswert, wie das hier:

      Mittlerweile gibt sehr viele verschiedene Levels, wobei die meisten wie 01, 10, 05 o.ä., aber nur Kombinationen aus den Grundlagen wie 0, 1, 5 und ggf auch noch 2, 3, 4 und 6.

      ;)

      Antworten
  2. Raptor 2101

    Ein erwähnenswerter Hinweis ist auch, dass SoftwareRaids im Falle eines Stromausfalls die Datensicherheit gefährden. Das Problem tritt ab dem moment auf, wo es zu Änderungen auf der Platte kommt von dennen das Journal des FS nichts mitbekommt.

    Beispiel: Mann hat 5 platten Raid 5 verschaltet. Man ändert eine kleine Datei (Größe die Checksumme muss neu berechnet werden. Kommt es nun zu einer Unterbrechung und nur 2 von 4 Platten schreiben sauber raus, hat man eine zerstörte Stripe-Unit und auch das Journaling kann einen nicht retten. Da es von der möglichen Beschädigung des 4 Stripes nichts wissen kann.

    Merke: SoftwareRaids/LVMs etc setzten sauberes unmounten vorraus! Eine USV ist empfehlenswert.

    Antworten
    1. Marco

      Das Problem besteht auch bei Hardware-RAID. Aus ist Aus.
      Auch ein Hardware-Controller schreibt nicht ohne Strom.

      Deswegen gibt es filesysteme die Transaktionen beherrschen. Das Journaling rettet Dich, weil das Journaling *vor* dem eigentlichen Schreibvorgang stattfindet.

      Saubers mounten und unmounten ist auch ohne RAID Pflicht.

      Antworten
      1. Thomas

        Der Link stimmt. Heute Nachmittag ging er auch noch (heute Vormittag hatte ich ein RAID zu flicken, deshalb habe ich ihn auch wieder rausgesucht). Scheinbar ist seine Seite gerade komplett weg :-( Solange kann ich auf http://eorl.dunharg.cyconet.org/Documentation/Mdadm_Cheat_Sheet verweisen der, wie er untendran zugibt, den Inhalt von obigem Link geklaut hat (inhaltliche Differenzen kann ich mangels erreichbarer Originalseite nicht nachprüfen). Wenn die andere Seite wieder da ist, empfehle ich die zu bookmarken.

        Antworten
  3. Das Wort

    Bei den Terabyteplatten hat man ja meistens 4 Scheiben mit 250GB pro Scheibenseite. Speichern die auch wie beim RAID 0 ?

    Antworten
  4. CP

    Es ist nicht unwichtig zu erwähnen, dass man ab 2TiB RAID-Größe GPT nutzen muss / sollte. Und dass dann das anschließende vergrößern des RAID etwas komplizierter wird. Ich hab’ nämlich gestern mein RAID5 ziemlich beschädigt (und hoffentlich nicht zerstört), als ich nach dem “grow” e2fsck ausführte. Jetzt bin ich immernoch dabei zu versuchen den Schaden zu beseitigen. Hilfe ist gern gesehen: http://debianforum.de/forum/viewtopic.php?f=13&t=128190

    Antworten

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <b> <blockquote cite=""> <cite> <del datetime=""> <em> <i> <pre lang="" line="" escaped=""> <strong>