Zum Inhalt springen

Linux/RAID: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 7: Zeile 7:


== Allgemeines ==
== Allgemeines ==
; Allgemeines Software-RAID unter Linux
Ein RAID (Redundant Array of Independent Disks) dient dazu, mehrere physikalische Festplatten zu einem oder mehreren logischen Laufwerken zu vereinen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Verfügbarkeit des Systems im Falle eines Festplattendefektes zu erreichen
* Ein RAID (Redundant Array of Independent Disks) dient dazu, mehrere physikalische Festplatten zu einem oder mehreren logischen Laufwerken zu vereinen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Verfügbarkeit des Systems im Falle eines Festplattendefektes zu erreichen
* Native Hardware-RAID-Controller, die unter Linux unterstützt werden (z. B. von 3Ware, Adaptec, etc.), sind aber für den Heimgebrauch oft zu teuer. Diese braucht man aber nicht zwingend, wenn man unter Linux ein Software-RAID verwendet
* Native Hardware-RAID-Controller, die unter Linux unterstützt werden (z. B. von 3Ware, Adaptec, etc.), sind aber für den Heimgebrauch oft zu teuer. Diese braucht man aber nicht zwingend, wenn man unter Linux ein Software-RAID verwendet
* Als weitere Alternative können auch sog. FakeRAID-Controller verwendet werden, z. B. Onboard-RAID-Controller. Allerdings wird von dieser Variante im Allgemeinen abgeraten, da beispielsweise oft Kernelmodule (Treiber) fehlen oder diese nur für bestimmte Kernelversionen zur Verfügung stehen
* Als weitere Alternative können auch sog. FakeRAID-Controller verwendet werden, z. B. Onboard-RAID-Controller. Allerdings wird von dieser Variante im Allgemeinen abgeraten, da beispielsweise oft Kernelmodule (Treiber) fehlen oder diese nur für bestimmte Kernelversionen zur Verfügung stehen

Version vom 28. Februar 2025, 13:51 Uhr

Linux/RAID - Datenträger zu logischen Laufwerken zusammenschließen

Beschreibung

Software-RAID
  • Schnellerer Datenzugriff
  • Erhöhte Verfügbarkeit bei Datenträgerausfällen

Allgemeines

Ein RAID (Redundant Array of Independent Disks) dient dazu, mehrere physikalische Festplatten zu einem oder mehreren logischen Laufwerken zu vereinen und dadurch einen schnelleren Datenzugriff und/oder eine erhöhte Verfügbarkeit des Systems im Falle eines Festplattendefektes zu erreichen

  • Native Hardware-RAID-Controller, die unter Linux unterstützt werden (z. B. von 3Ware, Adaptec, etc.), sind aber für den Heimgebrauch oft zu teuer. Diese braucht man aber nicht zwingend, wenn man unter Linux ein Software-RAID verwendet
  • Als weitere Alternative können auch sog. FakeRAID-Controller verwendet werden, z. B. Onboard-RAID-Controller. Allerdings wird von dieser Variante im Allgemeinen abgeraten, da beispielsweise oft Kernelmodule (Treiber) fehlen oder diese nur für bestimmte Kernelversionen zur Verfügung stehen
  • Dies spricht dann eher für ein Software-Raid, zumal bei modernen, schnellen CPUs die zusätzliche Rechenbelastung für ein Software-RAID kaum eine Rolle spielt
  • Der Einsatz der Fake-Raid Variante würde dann Sinn machen, wenn via Dual Boot Linux und Windows auf die gleichen RAID-Partitionen zugreifen sollen
  • Außerdem sollte man beachten, dass sowohl Software-Raid als auch Fake-Raid keinen batteriegepufferten Cache besitzen
  • Dies kann bei einem Stromausfall zum Datenverlust führen (write hole in den RAID-Leveln 5 und insbesondere 6)

Grundsätzliche Informationen

  • Im Allgemeinen macht es nur Sinn, Partitionen gleicher Größe zu verwenden, die auf unterschiedlichen Festplatten angelegt sind
  • Um das komplette System auf einem RAID-Verbund zu installieren, bietet es sich an, das System über die Alternate-CD aufzusetzen
  • Die Alternate-CD unterstützt bereits bei der Installation das Erstellen üblicher RAID-Varianten
    • Dies findet man unter dem Punkt: "Partitionieren"
    • Die Alternate-CD ist nur noch bei Lubuntu verfügbar
    • Dann kann man auf die Server-CD ausweichen und den gewünschten Desktop nachträglich installieren
  • Ubuntu unterstützt von Haus aus die RAID-Varianten 0, 1, 5, 6 und 10. Details zu den einzelnen Typen finden sich im Abschnitt RAID-Level
  • Soll von einem neuen RAID-Verbund gebootet werden (Root-Dateisystem), sollte zusätzlich der Abschnitt Bootloader beachtet werden

IDE/SATA

Generell sollte man bei RAIDs moderne SATA-Festplatten[1] verwenden, da der Datendurchsatz bei diesen zum Teil erheblich höher ist als bei älteren IDE-Platten

  • Zudem sind SATA-Platten prinzipiell "hotplugable"
    • Das heißt, sie sind im laufenden Betrieb eines RAIDs an- und abschaltbar und damit auch austauschbar
  • Allerdings sollte man genau wissen, was man tut, bevor man sich an solcherlei Aktionen heranwagt
Achtung

Nicht jeder SATA-Controller ist in der Lage, mit "Hotplug" auch richtig umzugehen Man sollte auch darauf achten, dass man die richtige Festplatte angibt, um Datenverlust zu vermeiden

Bei älteren IDE-ATA-Festplatten gilt
  • Die verwendeten Festplatten sollten nicht am selben IDE-Kanal hängen, da im Fehlerfall einer Festplatte unter Umständen der komplette IDE-Kanal gestört wird und dadurch u.U. das RAID nicht mehr nutzbar ist
  • Bei einem RAID 0 erhöht sich die Gesamtleistung, da paralleles Lesen/Schreiben auf verschiedenen IDE-Kanälen schneller geht als auf nur einem
  • Hardware-RAID-Controller verfügen in der Regel über einen batteriegepufferten Cache (BBU) oder NVRAM, der auch bei einem plötzlichen Stromausfall noch nicht physisch gespeicherte Daten solange vorhält, bis das System wieder gestartet ist
  • Software-Raid unter Linux versucht dieses Problem mit einem Journal zu lösen

Status auslesen

Verwenden Sie dazu folgenden Befehl:

cat /proc/mdstat

Ausgabe für ein nicht vorhandenes RAID:

Personalities : [raid1]
unused devices: <none>

Ausgabe für ein RAID1:

Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
     234405504 blocks super 1.2 [2/2] [UU]
     bitmap: 0/2 pages [0KB], 65536KB chunk

md1 : active raid1 sda2[2] sdb2[1]
     523712 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[2] sdb1[1]
     33521664 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Ausgabe für ein RAID0 (Die /boot-Partition md0 muss immer als RAID1 eingerichtet sein, um davon booten zu können)

Personalities : [raid1] [raid0]
md2 : active raid0 sda3[0] sdb3[1]
     883956736 blocks super 1.2 512k chunks

md1 : active raid0 sda2[0] sdb2[1]
     52393984 blocks super 1.2 512k chunks

md0 : active raid1 sda1[0] sdb1[1]
     523264 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Wenn unter einer der Partitionen ein Fortschritts-Balken dargestellt wird, läuft derzeit ein RAID-Resync-Prozess:

md0 : active raid1 sdb1[0] sdc1[1]
    2095040 blocks super 1.2 [2/2] [UU]
       [====>................]  resync = 32.7% (418656/2095040) finish=4.2min speed=131219K/sec

RAID hinzufügen

In unserem Beispiel-Szenario sind die Laufwerke /dev/sda bereits /dev/sdb in RAID1-Arrays konfiguriert, welche das Betriebssystem enthalten:

cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
     234405504 blocks super 1.2 [2/2] [UU]
     bitmap: 0/2 pages [0KB], 65536KB chunk

md1 : active raid1 sda2[2] sdb2[1]
     523712 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[2] sdb1[1]
     33521664 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Es sind jedoch zwei weitere Laufwerke vorhanden (/dev/sdc und /dev/sdd), die wir als Daten-Laufwerk in einem RAID1-Array nutzen möchten. Dazu muss zuerst das RAID-Array hinzugefügt werden:

mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/sdc /dev/sdd

Anschließend sollte die RAID-Konfiguration wie folgt aussehen:

cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdc1[0] sdd1[1]
    2095040 blocks super 1.2 [2/2] [UU]
       [====>................]  resync = 32.7% (418656/2095040) finish=4.2min speed=131219K/sec

md2 : active raid1 sda3[2] sdb3[1]
     234405504 blocks super 1.2 [2/2] [UU]
     bitmap: 0/2 pages [0KB], 65536KB chunk

md1 : active raid1 sda2[2] sdb2[1]
     523712 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[2] sdb1[1]
     33521664 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Nun kann die neue Partition nach Belieben formatiert (hier EXT4) und eingehängt werden:

mkfs.ext4 /dev/md3
mount /dev/md3 /mnt

Partitionsgröße

Es werden nur Partitionen gleicher Größe verwendet, da sonst Speicherkapazitäten ungenutzt bleiben

  • Hardware-RAID und Software-RAID machen beide das Gleiche
  • Von Software-RAID spricht man, wenn das Zusammenwirken der Festplatten komplett softwareseitig organisiert wird

Von Hetzner mit einem Betriebssystem bereitgestellte Server, oder über den Robot installierte Systeme sind bei mehr als zwei Laufwerken bereits mit dem empfohlenen RAID-Level (1 oder 6) versehen

Weiterhin können Sie das Installimage-Script im Rescue-System verwenden, um angepasste Installationen durchzuführen, dabei unter anderem eine gewünschte Software-RAID-Konfiguration einzustellen und dieses auch mit LVM kombinieren.

Benachrichtigung

E-Mail-Benachrichtigung bei Ausfall einer Festplatte im Software-RAID
Voraussetzung

Ein Mailserver Ihrer Wahl (z.B. Sendmail) muss bereits installiert und konfiguriert sein.

Debian/Ubuntu/CentOS

Öffnen Sie /etc/mdadm/mdadm.conf bzw. /etc/mdadm.conf (CentOS) in einem Editor und passen Sie folgende Zeile an

MAILADDR holu@example.com

Hier kann direkt eine Zieladresse angegeben werden. Alternativ bietet es sich an, alle an root gerichteten Emails via /etc/aliases an eine bestimmte Mailadresse weiterzuleiten.

Optional kann auch die Absenderadresse konfiguriert werden:

MAILFROM mdadm@example.com

Wichtig bei Debian und Ubuntu ist, dass AUTOCHECK in der Datei /etc/default/mdadm auf true gestellt ist

grep AUTOCHECK= /etc/default/mdadm
AUTOCHECK=true
openSUSE

Öffnen Sie /etc/sysconfig/mdadm in einem Editor und verändern Sie die Variable MDADM_MAIL auf die gewünschte Adresse, an die Benachrichtigungen gesendet werden sollen:

MDADM_MAIL="holu@example.com"
Konfiguration prüfen

Ihre Konfiguration lässt sich mittels folgendem Befehl verifizieren, welcher per mdadm eine Test-Mail generiert und an die angegebene Adresse versendet:

mdadm --monitor --test --oneshot /dev/md0

Weiterhin sollten Sie noch sicherstellen, dass die Datei /etc/cron.daily/mdadm folgende Zeile enthält, welche für das tägliche Monitoring des RAIDs zuständig ist:

exec --monitor --scan --oneshot

RAID auflösen

Um ein Software-RAID aufzulösen können folgende Befehle verwendet werden.

  • Falls es sich dabei um die System-Partitionen handelt, sollte dazu das Rescue-System gebootet werden.
mdadm --stop /dev/md0
mdadm --stop /dev/md1
mdadm --stop /dev/md2
mdadm --remove /dev/md0
mdadm --remove /dev/md1
mdadm --remove /dev/md2

Danach können die Laufwerke wieder normal formatiert werden (zb. mit ext4):

mkfs.ext4 /dev/sda
mkfs.ext4 /dev/sdb

Das Ergebnis kann mittels..

cat /proc/mdstat

...und...

fdisk -l

überprüft werden

Das Software-RAID sollte nun verschwunden sein

Anhang

Siehe auch

HowTo

  1. Linux/RAID/Vorbereitung
  2. Linux/RAID/Anlegen
  3. Linux/RAID/Wartung
  4. Linux/RAID/Fehlerbehebung
  5. Linux/RAID/Aufgaben

Links

Weblinks

  1. https://docs.hetzner.com/de/robot/dedicated-server/raid/linux-software-raid/
  2. https://wiki.ubuntuusers.de/Software-RAID/
  3. https://www.thomas-krenn.com/de/wiki/Linux_Software_RAID
  4. https://de.wikipedia.org/wiki/RAID#Software-RAID
  5. The Software-RAID HOWTO
  6. Linux RAID Wiki
  7. RAID Setup
  8. Festplattenpuzzles - Tipps und Tricks rund um Linux-Software-RAID
  9. Workshop - Software-RAID unter Linux einrichten
  10. Quick HOWTO : Ch26 : Linux Software RAID
  11. linux-RAID Mailing List
  12. Ubuntu-Server-Installation mit Software-RAID
  13. https://RAID.wiki.kernel.org/index.php/RAID_superblock_formats