Softwareraid
Mit mdadm kann man unter linux ein softwarebasiertes RAID (Redundant Array of Independent Disks)aufbauen.
Hier einige Beispiele zum mdadm
tool.
RAID erstellen
Erstellen kann man ein softwarebasiertes RAID in Linux mit dem Tool mdadm
.
mdadm --create /dev/md# --level=# --raid-devices=# /dev/hd<x># /dev/sd<x># --spare-devices=# /dev/sd<x>
Erklärung:
- /dev/md# stellt das neuzuerstellende RAID Device dar
- –level=# gibt den RAID-Level an.
- –raid-devices=# gibt an aus wievielen Festplatten dieser Verbund bestehen soll; gefolgt wird diese Option von Angaben der einzelnen Festplattendevices die in diesem Verbund verwendet werden sollen. Angegeben werden diese als hd<x> oder sd<x>
- –spare-devices=# gibt an wieviele hotspare Platten verwendet werden sollen; direkt nach dieser Option werden die einzelnen Festplattendevices angegeben als hd<x> oder sd<x>
Folgende Level können erstellt werden:
mdadm Level | RAID Level | Beschreibung | Ausfallsicherheit |
---|---|---|---|
level=0 | RAID0 | 2 oder mehrere Festplatten werden zu einer großen zusammengeschlossen (2x500GB=10000GB) | Beim Beispiel darf keine Platte Ausfallen |
level=1 | RAID1 | 2 oder mehrere Festplatten werden gespiegelt (2x500GB=500GB gespiegelt) | Beim Beispiel darf eine/mehrere Platten Ausfallen |
level=4 | RAID4 | 3 oder mehrere Festplatten werden zu 1 großen zusammengeschlossen, wobei eine Festplatte die Paritätsplatt ist (3x500GB=1000GB+500GB Parität) | eine Platte darf ausfallen |
level=5 | RAID5 | 3 oder mehrere Festplatten werden zu 1 großen zusammengeschlossen, wobei Paritätsinformationen auf alle Festplatten verteilt werden (3x500GB=1000GB+500GB Parität) | eine Platte darf ausfallen |
level=6 | RAID6 | 4 oder mehrere Festplatten werden zu 1 großen zusammengeschlossen, wobei 2 Paritätsplatten verwendet und auch auf alle Platten verteilt werden (4x500GB=1000GB+2x500GB Parität) | zwei Platten dürfen ausfallen |
level=10 | RAID10 | 4 oder mehrere Festplatten werden zu einem Mischlevel aus Level 1 und Level 0 zusammengeschlossen (4x500GB=1000GB gespiegelt) | Es darf alle Festplatten bis auf eine aus jedem Spiegelsatz ausfallen |
Festplatten/Partitionen zu Verbund hinzufügen
Wenn man ein RAID-Verbund vergrößern möchte oder wenn eine ersetzte Festplatte wieder zum Verbund hinzugefügt werden soll, fügt man diese einfach dem Verbund hinzu.
mdadm --manage -a /dev/md# /dev/sd<x>#
Nach dem Hinzufügen, erkennt mdadm
sofort die Festplatte/Partition und beginnt automatisch mit dem Recovering.
Hotspare
Wie oben bereits beschrieben können Hotsparefestplatten einem RAID-Verbund zugewiesen werden um bei Ausfall einer oder mehrerer Festplatten einspringen zu können.
Diese Hotsparefestplatte kann auch zu einem bestehenden Verbund mit, dem vorhin schon vorgestellten Befehl, hinzugefügt werden
mdadm /dev/md# -a /dev/sd<x>#
Eine Hotsparfestplatte kann für mehrere RAID-Verbunde verwendet werden.
Eine Option im „ARRAY“ Eintrag in der mdadm.conf kann dieses erreichen, hier ein Beispiel:
vi /etc/mdadm/mdadm.conf
ARRAY /dev/md0 level=raid6 num-devices=4 UUID=9b2c49f3:aab3a59f:319fd604:8d84ab53 devices=/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,spare-group=global ARRAY /dev/md1 level=raid5 num-devices=3 spares=1 UUID=ccfde74d:ddbf8e63:4079f0e2:0c9a0cbc devices=/dev/sde,/dev/sdf,/dev/sdg,/dev/sdh,spare-group=global
Man sieht hier das eigentlich nur ein „ARRAY“ eine Hotsparefestplatte enthält aber durch die Option „spare-group=global“, wobei global nur eine Bezeichnung ist die auch
z.B. „group1“ heißen könnte, werden beide „ARRAYs“ mit dieser Hotsparefestplatte gesichert.
RAID auflösen
Mit folgendem Befehl kann ein RAID-Verbund aufgelöst werden.
mdadm --stop /dev/md#
Hierbei ist es allerdings möglich diesen später wieder zu Aktivieren, da der Kernel die Partition/en auf der Festplatte als ehemalige RAID-Partition/en erkennt.
Festplatte/Partition vom Verbund entfernen
mdadm /dev/md# -r /dev/sd<x>#
Es kann sein dass z.B. nicht die ganze Festplatte fehlerhaft ist oder gar nicht erkannt wird. Hier kann sich dann ein oder mehrere/alle RAID-Verbünde im Status
- (UU) –> OK
oder
- (U_) –> fehlerhaft
befinden. Wenn dies der Fall ist, müssen vor dem Entfernen der defekten Festplatten/Partitionen die RAID-Verbünde auf (U_) gesetzt werden. Hier der Befehl.
mdadm --manage /dev/md# --fail /dev/sd<x>#
RAID löschen
Um einen RAID-Verbund entgültig zu löschen (Kernel erkennt eine ehem. RAID-Partition) einfach folgendes ausführen
mdadm --zero-superblock /dev/sd<x>#
RAID-Verbund einbinden
Wenn das System nicht mehr starten kann, weshalb auch immer, dann kann eine Live-Distribution Daten retten.
Einfach mit einer Linux-Live-CD starten und mdadm installieren.
Nun kann man mit folgendem Befehl nach RAID-Verbunden suchen lassen
mdadm --assemble --scan
Hiernach werden die gefundenen Verbunde auch direkt in das System als md-Devices eingebunden.
Sobald Zusammengehörige Verbunde, aber auch gebrochene RAID-Partitionen, gefunden werden, werden diese sofort,
solang eine Spare-Platte vorhanden ist, restauriert.
Der RAID-Verbund (zusammengehörige Partitionen müssen bekannt sein) kann auch wie folgt wieder erstellt und
gemountet werden.
mdadm --assemble /dev/md# /dev/sd<x># /dev/sd<x>#
Hiermit erstellen wir wieder den RAID-Verbund.
Befehlserläuterung:
- /dev/md<#>: z.B.: /dev/md0 Ist das zu erstellende Device für mdadm.
- /dev/sdx<#>: z.B.: /dev/sda1 Das sind die beiden Festplatten oder Partitionen auf diesen, welche sich ursprünglich im RAID-Verund, vor dem Ausfall, befanden.
RAID Status
Zum Abschluß kann der Status des RAID-Verbundes beauskunftet werden.
cat /proc/mdstat
Hier noch eine detailiertere Ansicht
mdadm --examine /dev/sd<x>#
RAID-Verbund status ändern
Wenn ein RAID-Verbund mal auf fehlerhaft gestellt werden soll, so kann man das mit folgenden Befehlen getan werden.
mdadm --manage --set-faulty /dev/md# /dev/sd<x>#
oder
mdadm --manage --faulty /dev/md# /dev/sd<x>#
grub installieren
Der Bootloader Grub wird, bei der Installation, meckern dass er nicht installiert werden kann weil er eigentlich auf zwei Festplatten installiert werden müsste. Gleichzeitig kann er das aber nicht.
Bevor Grub den Kernel booten kann, muss vorher in einer Live-Umgebung, mit hilfe der chroot-Umgebung, mdadm
installiert werden, damit das System überhaupt vom Kernel gebootet werden kann. Mit dieser Installation wird auch das initramfs aktualisiert. So werden dann die mdadm treiber in den Kernel eingebunden.
Wenn dies nicht geschehen sollte, dann einfach das ausführen:
update-initramfs -u
Nun installiert man Grub mit diesen Befehlen (hier sda und sdb):
grub-install --recheck /dev/sda grub-install --recheck /dev/sdb
dannach noch
update-grub
Jetzt sollte einem ersten Start nichts mehr im Wege stehen.