Zum Inhalt springen

Linux/RAID

Aus Foxwiki

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

Beschreibung

Software-RAID
  • Schnellerer Datenzugriff
  • Erhöhte Verfügbarkeit
  • im Falle eines Festplattendefektes

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

Dieser Artikel Beschreibt die Nutzung eines Software-RAIDs

  • Welches die Interaktion von mehreren Laufwerken in einem Linux-Betriebssystem organisiert
  • ohne dafür einen Hardware-RAID-Controller zu verwenden


Einführung

Von Software-RAID spricht man, wenn das Zusammenwirken der Festplatten komplett softwareseitig organisiert wird

  • Auch der Begriff Host based RAID ist geläufig, da nicht das Speicher-Subsystem, sondern der eigentliche Computer die RAID-Verwaltung durchführt
  • Die meisten modernen Betriebssysteme wie FreeBSD, OpenBSD, Apple macOS, HP HP-UX, IBM AIX, Linux, Microsoft Windows ab Windows NT oder SUN Solaris sind dazu in der Lage
  • Die einzelnen Festplatten sind in diesem Fall entweder über einfache Festplattencontroller am Computer angeschlossen oder es werden externe Storage-Geräte wie Disk-Arrays von Unternehmen wie EMC, Promise, AXUS, Proware oder Hitachi Data Systems (HDS) an den Computer angeschlossen
  • Die Festplatten werden zunächst ohne RAID-Controller als sogenannte JBODs („just a bunch of disks“) in das System integriert, dann wird per Software-RAID (z. B. unter Linux mit dem Programm mdadm) die RAID-Funktionalität realisiert
  • Eine besondere Variante des Software RAID sind Dateisysteme mit einer integrierten RAID-Funktionalität
  • Ein Beispiel dafür ist das von Sun Microsystems entwickelte RAID-Z.[6]

Pro

  • Der Vorteil von Software-RAID ist, dass kein spezieller RAID-Controller benötigt wird
  • Die Steuerung wird von der RAID-Software erledigt, diese ist entweder schon Teil des Betriebssystems oder wird nachträglich installiert
  • Dieser Vorteil kommt besonders bei der Disaster Recovery zum Tragen, wenn der RAID-Controller defekt und nicht mehr verfügbar ist
  • Praktisch alle derzeit verfügbaren Software-RAID-Systeme benutzen die Festplatten so, dass diese auch ohne die spezifische Software ausgelesen werden können

Contra

  • Bei einem Software-RAID werden bei Festplattenzugriffen neben dem Hauptprozessor des Computers auch die System-Busse wie PCI stärker belastet als bei einem Hardware-RAID
  • Bei leistungsschwachen CPUs und Bus-Systemen verringert dies deutlich die Systemleistung
  • Bei leistungsstarken, wenig ausgelasteten Systemen ist dies belanglos
  • Storage-Server sind in der Praxis oft nicht voll ausgelastet; auf solchen Systemen können Software-RAID-Implementierungen unter Umständen sogar schneller sein als Hardware-RAIDs
  • Ein weiterer Nachteil ist, dass bei vielen Software-RAID kein Cache genutzt werden kann, dessen Inhalt auch nach einem Stromausfall erhalten bleibt, wie es bei Hardware-RAID-Controllern mit einer Battery Backup Unit der Fall ist
    • Dieses Problem lässt sich mit einer unterbrechungsfreien Stromversorgung für den gesamten PC vermeiden
    • Um die Gefahr von Datenverlusten und Fehlern in der Datenintegrität bei einem Stromausfall oder Systemabsturz zu minimieren, sollten außerdem die (Schreib-)Caches der Festplatten deaktiviert werden.[7]
  • Da die Platten eines Software-RAIDs prinzipiell auch einzeln angesprochen werden können, besteht bei gespiegelten Festplatten die Gefahr, dass Änderungen nur noch an einer Platte durchgeführt werden – wenn etwa nach einem Betriebssystem-Update die RAID-Software oder der Treiber für einen RAID-Festplatten-Controller nicht mehr funktionieren, eine der gespiegelten Festplatten aber weiterhin über einen generischen SATA-Treiber angesprochen werden kann
  • Entsprechende Warnhinweise oder Fehlermeldungen während des Bootens sollten deshalb nicht ignoriert werden, nur weil das System trotzdem funktioniert
  • Ausnahmen bilden hier Software-RAID mit Datenintegrität wie z. B. ZFS
  • Unvollständige Speichervorgänge werden zurückgesetzt
  • Fehlerhafte Spiegeldaten werden erkannt und durch korrekte Spiegeldaten ersetzt
  • Es wird wohl beim Lesen eine Fehlermeldung geben, da die fehlerhafte oder alte Spiegelseite nicht mit dem aktuellen Block übereinstimmt

Software/Hardware-RAID

Pro Software-RAID

Software-RAIDs gibt es als Open-Source-Software

  • Bei Defekt des Betriebssystems, kann das RAID oft noch mit einer neuen Installation des gleichen Betriebssystems wieder eingelesen werden
  • Bei Software-RAIDs auf BIOS-Ebene (Host-RAID-Systemen) ist das nicht immer so
Contra Software-RAID

Benutzt den Prozessor und verbraucht Ressourcen

  • Bei einem RAID, das auf dem Betriebssystem (OS) eingerichtet wurde, profitiert das OS selber nicht vom RAID
Pro Hardware-RAID
  • Entlastung der Host-CPU.Alle Berechnungen werden vom RAID-Controller gemacht
  • Steht schon beim Booten zur Verfügung
    • Das OS profitiert vom RAID
  • Unterstützt eine Vielzahl von Betriebssystemen
Contra Hardware-RAID
  • Bei RAID-Controller-Defekt - kann kein baugleiches Modell aufgetrieben werden, wird das RAID zum Datengrab
  • Zusätzliche Kosten für einen RAID-Controller (kein Fake-RAID)
Fake-RAIDs

können nur eine begrenzte Anzahl von RAID-Leveln, häufig nur RAID-Level 0 und 1 Um die Controller/Karten so billig wie möglich zu halten, überlassen die Hersteller die RAID-Logik der CPU => Benutzt also den Prozessor und verbraucht Ressourcen



Status des Software-RAID 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

Hinzufügen eines Software-RAID-Arrays

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

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

Software-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

Links

HowTo
  1. Linux/Software-RAID/Vorbereitung
  2. Linux/Software-RAID/Anlegen
  3. Linux/Software-RAID/Wartung
  4. Linux/Software-RAID/Fehlerbehebung
  5. Linux/Software-RAID/Aufgaben
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


Linux Software RAID

TMP

allgemeines II

  • Linux Software RAID (häufig auch als mdraid oder MD/RAID bezeichnet) ermöglicht die Nutzung von RAID Funktionalität ohne Hardware RAID Controller
  • Die dazu verwendeten Datenträger (Festplatten, SSDs, ...) werden dabei einfach als einzelne Laufwerke am Rechner angeschlossen, etwa direkt an den SATA Ports des Mainboards
  • Hardware RAID Controller haben im Gegensatz zu Software RAID meistens einen eingebauten Cache (häufig 512 MB oder 1GB), der mit einer BBU oder ZMCP geschützt werden kann (siehe Unterschiede zwischen Hardware RAID und Linux Software RAID)

Funktionsweise

Beispiel
Linux Software RAID mit zwei RAID 1 Devices (eines für das Root Dateisystem, ein weiteres für swap

SSD RAIDs

Linux Software RAID verwendet bis Kernel 3.11 nur einen Thread für RAID5/RAID6 Berechnungen

  • Das kann die Performance von SSD RAIDs limitieren

Im Januar 2013 gab es erste Patches von Fusion-io, diese waren zu diesem Zeitpunkt aber noch nicht reviewed.[3]

  • Die RAID5 multithreading Unterstützung wurde im Linux Kernel mit 3.12 aufgenommen

RAID Superblock

Linux Software RAID speichert alle notwendigen Informationen zu einem RAID Array in einem Superblock

  • Je nach Metadaten-Version liegt dieser an unterschiedlichen Stellen

Superblock Metadaten-Version 0.90

Der version-0.90 Superblock ist 4.096 Byte groß und liegt in einem 64 KiB aligned block am Ende eines Devices

  • Der Superblock beginnt ja nach Devicegröße frühestens 128 KiB vor dem Ende des Devices, bzw. spätestens 64 KiB vor dem Ende des Devices
  • Um die Adresse des Superblocks zu berechnen wird die Device-Größe auf ein vielfaches von 64 KiB abgerundet und dann 64 KiB vom Ergebnis abgezogen.[4]

Einschränkungen der Metadaten-Version 0.90:

  • maximal 28 Devices in einem Array
  • jedes Device kann maximal 2 TiB groß sein
  • keine Unterstützung des Bad-Block-Managements[5]

Superblock Metadaten-Version 1.*

Die Position des Superblock hängt von der Version der Metadaten ab:[6]

  • Version 1.0: Der Superblock liegt am Ende des Devices
  • Version 1.1: Der Superblock liegt am Anfang des Devices
  • Version 1.2: Der Superblock liegt 4 KiB nach dem Beginn des Devices

Umsetzung