RAID
RAID (Redundant Array of Inexpensive Disks) ist eine Organisation zweier oder mehrerer physikalischer Festplatten eines Computers zu einem logischen Laufwerk, das eine größere Speicherkapazität, eine höhere Datensicherheit bei Ausfall einzelner Festplatten und/oder einen größeren Datendurchsatz erlaubt als eine physikalische Platte.
RAID kann sowohl in Hardware als auch in Software erfolgen. Hardwarecontroller entlasten die CPU, da sie eine eigene haben, dafür kosten sie aber auch einiges. Mainboard-RAID-chips sind oft billig (und laufen manchmal nur unter einem Betriebsystem wie Windows), außerdem ist der Controller natürlich ans mainboard gebunden. Beim Defekt muss man versuchen ein identisches Modell aufzutreiben.
Idealerweise (im professionellen Bereich) ist ein Hot-Spare-Laufwerk vorhanden, das dann gleich beim Ausfall als Ersatz einspringt.
Das alleinige Durchreichen einer oder mehrerer Festplatten bezeichnet man als JBOD (Just a Bunch Of Disks). Oft wird auch die Zusammenfassung zu einer (virtuelle) großen Festplatte so bezeichnet. Dabei entsteht kein RAID und auch keine erhöhte Datensicherheit/Geschwindigkeit da der Controller grundsätzlich wie ein normaler Festplatten-Controller arbeitet.
Ordentliche RAID-Controller haben eine schnelle bzw. spezialisierte CPU und einen internen RAID#Cache. So werden häufige Lesezugriff schneller fertiggestellt und beim schreiben wird dem Betriebbsystem schneller der Erfolg gemeldet. Beim Stromausfall wäre aber der Inhalt des Caches verloren, deshalb sollte er Batteriegepuffert sein.
RAID ist kein Ersatz für Backups, da
- ein RAID nur gegen Festplattenausfall absichert,
- andere logische Fehler wie fehlerhafte Daten/gelöschte Dateien (auf Betriebssystemebene) auf alle Datenträger syncronisiert werden
- und bei größeren physikalischen Schäden (Brand, …) die zusätzliche Redundanz nichts nützt.
Außerdem ist der Ausfall des Controller ein Schwachpunkt („single point of failure“) der allerdings sehr selten auftreten wird, für professionelle Anwendungen sollte man aber einen Ersatzcontroller ähnlicher oder gleicher Bauart bereithalten.
Auf jeden Fall sollte man den Ausfall einer Festplatte schon einmal simuliert haben, damit ist der Stress beim realen Ausfall geringer und man bekommt ein Gefühl für die zu erwartende Rebuild-Zeit (die Zeit bis das RAID wieder komplett berechnet ist).
Zur Geschwindigkeit lässt sich allgemein sagen, dass je mehr Festplatten die Schreibzugriffe teilen, desto schneller ist es (außer im Fall das die Berechnung der Parity/Prüfsummen ausbremst).
Vergleich Software zu Hardware-RAID
Vergleich Software zu Hardware-RAID | ||
---|---|---|
Kriterium | Software-RAID | Hardware-Raid 1) |
Kosten | keine, da im OS enthalten (ggf. Lizenzfrage) | hoch, da gute Controller ihr Geld kosten |
Komplexität | mittel bis hoch da keine Status-LEDs den Ausfall einzelner Platten anzeigen, man muss i.d.R. nach den Seriennummern gehen | niedrig, Verwaltungsoberfläche hilft, Status-LEDs helfen, Automatiken (auto-rebuild etc.) |
Batteriepufferung (mit Herstellerspezifischer BBU oder NAND-Flash) verhindert verlorene Daten bei Schreibzugriff | Nein | Ja, wird normalerweise als Option dazu gekauft |
Schreibcache „Write back caching“ mit BBU) | Ja, bei Aktivierung ist ohne weitere Sicherungsmaßnahmen (USV) Datenverlust bei Stromausfall sehr wahrscheinlich | ja, oft nur mit BBU/NAND-Pufferung aktivierbar. Server muss wieder angeschaltet werden solange Batterie hält, ansonsten Datenverlust |
Performance | sehr gut wenn Prozessor nicht am Limit gefahren wird | gut bis sehr gut |
Overhead (CPU, RAM etc): | Je nach Nutzung, i.d.R. wenig wenn Server ausreichend dimensioniert | Nein, CPU und RAM wird nicht belastet |
Austausch defekter Datenträger im laufenden Betrieb („hot swapping“) | möglich wenn Controller hot-swap unterstützt | Ja |
Datenträger im stand-by der bei Ausfall sofort einspringt 2) („Hot spare“) | Ja, hot-spare muss einem Raid zugeordnet sein | Ja, oft globaler hot-spare für alle Raid-volumen möglich |
Berücksichtigung des RAID im Betriebssystem nötig, 3) | Ja, unbedingt | Nein, transparente Nutzung solange das Betriebsystem einen Treiber für den Controller hat |
Wiederherstellung ohne laufendes Betriebssystem | Nein | Ja |
RAID einbauen in anderes System | Ja, bei gleicher Architektur (Betriebsystem muss dort grundsätzlich laufen können) | zusammen mit dem Controller möglich, ansonsten nur eingeschränkt im Einzelfall mit anderen Modellen des gleichen Herstellers möglich |
als Backup tauglich | Nein, schützt nur gegen einfachen Hardwareausfall | Nein, schützt nur gegen einfachen Hardwareausfall |
Verwaltung | Reguläre Programme des Betriebssystems, Tools für Software-raid (mdadm bei Linux) | spezielle, herstellerspezifische Programme (Web, extra Clientsoftware über Netzwerk, Textmodus/Kommandozeile). Betriebssystemtools sehen nicht die einzelne Festplatte, daher Einzelinfos wie Seriennummern und S.M.A.R.T.-Infomationen nur über Herstellertool sichtbar |
Zusammenfassung | preiswert, für Heimbereich und kleine Unternehmen mit einzelnen bis sehr wenigen Servern | Für ausfallkritische Systeme, high-performance Anwendung wie Datendanken |
Links
RAID-Level
verbreitete RAID Level | ||||||
---|---|---|---|---|---|---|
Merkmale | Level 0 (Striping) | Level 1 (Drive Mirroring) | Level 10 oder 0+1 (Mirrored Striping Array) | Level 5 (Block Striping mit verteilter Parität) | Level 6 (Block-Level Striping mit doppelter verteilter Paritätsinformation) | |
Abbildungen | ||||||
Funktionsweise | Aufteilung der Daten in Blöcke (4-128 KB groß, üblicherweise 64 KB), Verteilung auf die Festplatten | Spiegelung der Daten auf die Festplatten. Variante Duplexing: jede Festplatte über einen eigenen Controller) | striping + Mirroring. RAID 10: ein RAID 0 über mehrere RAID 1; RAID 0+1: Ein RAID 1 über mehrere RAID 0 . Vorteil ist Datensicherheit und Geschwindigkeit zur gleichen Zeit. | Aufteilung der Blöcke (Stripes) und Verteilung über die Festplatten (mit Prüfsummen) | wie RAID 5 nur statt dessen Striping mit doppelten, auf Block-Level verteilten Paritäts-Informationen 4). | |
primäre Verwendung | temporäre Daten (Auslagerungsdatei / Swap-Partition) | hohe Sicherheitsanforderungen | Echtzeitanwendungen mit hoher Verfügbarkeit | hohen Speicherplatzanforderungen mit (vorrangig) Lesezugriffen | hohen Sicherheitsanforderungen mit (vorrangig) Lesezugriffen | |
Kapazitätsverlust/Kosten | Addition der Kapazitäten, kein Verlust, niedrige Kosten | kleinste Platte legt Gesamtgröße fest (Verlust mind. 100%, hohe Kosten) | hoher Verlust (wie RAID 1) | kostengünstig: nutzbare Kapazität = kleinste Festplatte * (Anzahl der Festplatten - 1). Hohe Anforderungen an Controller, je mehr Festplatten desto günstiger | nutzbare Kapazität = kleinste Festplatte * (Anzahl der Festplatten - 2). Hohe Anforderungen an Controller, je mehr Festplatten desto günstiger | |
Minimum Anzahl Festplatten | 2 | 2 (Anzahl immmer gerade) | 4 (Spezialfall: Bei manchen Controllern reichen 3) | 3 | 4 | |
Geschwindigkeitsvorteil allgemein | sehr hoch (lesen+schreiben) | schreiben: so schnell wie die langsamste Festplatte lesen: schneller | Kombination aus RAID 0 und 1 | mittel: gut beim lesen, langsamere Schreibgeschwindigkeit als andere RAID-Level, deshalb Einsatz bei schreibintensiven Umgebungen (mit eher zufälligen und nicht zusammenhängenden Änderungen) nicht zu empfehlen. | mittelmäßig: ok beim lesen, noch langsamere Schreibgeschwindigkeit als RAID 5, deshalb Einsatz bei schreibintensiven Umgebungen (mit eher zufälligen und nicht zusammenhängenden Änderungen) nicht zu empfehlen. | |
lesen sequentiell | ++ | + | ++ | ++ | ? | |
lesen zufällig | ? | + | ++ | + | ? | |
schreiben sequentiell | ++ | ? | ++ | ? | ? | |
schreiben zufällig | ? | ? | ? | – | ? | |
Sicherheit vor Datenverlust | schlecht, sogar erhöhte Ausfallwahrscheinlichkeit, da EINE ausgefallene Festplatte ALLE Daten unbrauchbar macht. | sehr gut (Spiegelung) | gut (Spiegelung) | gut (bei schnellem Austausch bzw. „hot-spare“) | sehr gut (zusätzlicher Schutz während rebuild) | |
RAID-Verhalten beim Ausfall | Daten weg, kein Zugriff | keine Beeinträchtigung | keine Beeinträchtigung; RAID 10: 1 Platte wird rekonstruiert, RAID 0+1: 1 Set muss rekonstruiert werden. | Verlangsamung: Daten werden nach Austausch der defekten Platte während der Laufzeit im Hintergrund rekonstruiert, Zugriff vor dem Austausch im nur-lese-modus! | Verlangsamung: Daten werden nach Austausch der defekten Platte während der Laufzeit im Hintergrund rekonstruiert. | |
verkraftet den Ausfall von | keiner Festplatte | alle bis auf eine Festplatte | allen stripesets bis auf eins | einer Festplatte | zwei beliebigen Festplatten |
Software-RAID
Software-RAID kostet etwas CPU-Leistung, dafür ist man flexibel und kostengünstig dabei (da schon im Betriebssystem enthalten). Parallele (und unterschiedliche) Betriebssysteme sind allerdings nicht auf dem gleichen RAID-Volume möglich, da das SW-RAID nicht transparent für das jeweilig andere Betriebssystem ist und demzufolge unterstützt werden müsste.
Betriebssystem | RAID-Level |
---|---|
Windows 2000 oder Windows XP Pro | RAID 0 |
Server-Versionen (2000, 2003) | RAID 0, RAID 1 |
Linux | mindestens RAID 0, 1, 5 (+ mehr?) |
mdadm
ist unter Linux das tool zum verwalten von Software-RAIDs. In der Datei /proc/mdstat
findet man Informationen zum aktuellen Status des RAIDs.
Software RAID mit Linux
Software RAID unter Linux ist mit den mdadm-Tools verwaltbar. Auf Wunsch kann man mdadm als Daemon laufen lassen und bei Fehlern eine mail verschicken lassen.
dpkg-reconfigure mdadm
Links
Informationen anzeigen
- Übersicht über vorhandene RAIDs:
cat /proc/mdstat
- Details zu einem bestimmten SW-Raid anzeigen
mdadm --detail /dev/md0
ergibt z.B.
/dev/md0: Version : 1.2 Creation Time : Sat Aug 27 04:51:31 2011 Raid Level : raid1 Array Size : 1465134841 (1397.26 GiB 1500.30 GB) Used Dev Size : 1465134841 (1397.26 GiB 1500.30 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sat Aug 27 04:51:31 2011 State : clean, resyncing Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Rebuild Status : 0% complete Name : server1:3 (local to host server1) UUID : 12f8f3bd:792688d6:b4fd0515:761df8cf Events : 0 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 49 1 active sync /dev/sdd1
- Details zu einem bestimmten Datenträger anzeigen (Beispiel
/dev/sda1
):mdadm --examine /dev/sda1
/dev/sdh1: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : a2c97c53:23c5345e:734833ff:e67d1e29 Name : storage:0 (local to host storage) Creation Time : Sat Oct 12 02:37:44 2013 Raid Level : raid1 Raid Devices : 2 Avail Dev Size : 5860529039 (2794.52 GiB 3000.59 GB) Array Size : 2930264383 (2794.52 GiB 3000.59 GB) Used Dev Size : 5860528766 (2794.52 GiB 3000.59 GB) Data Offset : 2048 sectors Super Offset : 8 sectors State : clean Device UUID : c6cfec2d:12b5658a:e342ff27:18a85343 Update Time : Tue Oct 15 17:00:06 2013 Checksum : b2431147 - correct Events : 37 Device Role : Active device 0 Array State : AA ('A' == active, '.' == missing)
manuelle Überprüfung starten
Soll ein Software-Raid auch ohne zwingenden Grund (wie Ausfall eines Mitglieds) überprüft werden, dann reicht ein einfacher Aufruf (Beispiel für md0
):
echo check > /sys/block/md0/md/sync_action
Alternativ:
/usr/share/mdadm/checkarray /dev/md0
Falls die Fehlermeldung „checkarray: W: array md1 in auto-read-only state, skipping…“ kommt:
mdadm --readwrite /dev/md0
Überprüfung stoppen
echo "idle" > /sys/block/md0/md/sync_action
Falls sofort wieder ein resync startet, hilft möglicherweise
/usr/share/mdadm/checkarray -x --all
oder
echo 0 > /proc/sys/dev/raid/speed_limit_max
Datenträger aus einem RAID entfernen
Beispiel: Die Festplatte /dev/sdf soll präventiv ausgetauscht werden. Sie enthält die Partitionen /dev/sdf2 und /dev/sdf3 die Mitglied in /dev/md1 bzw. /dev/md2 sind.
Ein einfaches entfernen von /dev/sdf2 schlägt fehl weil diese Partition noch vollwertiges Mitglied im Raid ist und auch /dev/sdf3 noch Teil eines Raid ist.
mdadm /dev/md1 -r /dev/sdf2
mdadm: hot remove failed for /dev/sdf2: Device or resource busy
Die korrekte Vorgehensweise ist also zuerst die Partitionen als fehlerhaft zu kennzeichnen:
mdadm --manage /dev/md1 --fail /dev/sdf2
mdadm: set /dev/sdf2 faulty in /dev/md1
mdadm --manage /dev/md2 --fail /dev/sdf3
mdadm: set /dev/sdf3 faulty in /dev/md2
Nun werden sie als „faulty“ angezeigt:
cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md2 : active raid6 sdc3[8] sda3[0] sdg3[6] sdf3[7](F) sde3[4] sdd3[3] sdb3[1] 52421120 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/6] [UUUUU_U] md1 : active raid1 sdc2[8] sda2[0] sdg2[6] sdf2[7](F) sde2[4] sdd2[3] sdb2[1] 524276 blocks super 1.2 [7/6] [UUUUU_U] unused devices: <none>
Anschließend können diese Partitionen vollständig aus dem Raid entfernt werden:
mdadm /dev/md1 -r /dev/sdf2
mdadm: hot removed /dev/sdf2 from /dev/md1
mdadm /dev/md2 -r /dev/sdf3
mdadm: hot removed /dev/sdf3 from /dev/md2
Die Integrationen einer neuen Festplatte ist nun möglich, das Raid kann damit wieder zusammengesetzt werden (siehe nächster Abschnitt).
Mailbenachrichtigung
Die Mailbenachrichtigung ist in der /etc/mdadm/mdadm.conf
MAILADDR root MAILFROM my-server-name - mdadm
oder
MAILADDR admin@domain.net MAILFROM my-server-name - mdadm
Mehrere Empfänger (leider nicht in mdadm.conf machbar), dazu wäre bei Postfix ein Eintrag in /etc/postfix/virtual_domains
nötig:
raid-notification@domain.tld admin1@domain1.tld, admin2@domain2.tld
postmap /etc/postfix/virtual_domains
E-Mail-Benachrichtigung testen:
mdadm --monitor --scan --test --oneshot /dev/md[[:digit:]]*
Raid wieder zusammensetzen
Wenn das raid-Array keine Fehler hatte und nur nicht automatisch gefunden wurde:
mdadm --assemble --scan
Die anschließenden Schritte funktionieren nur wenn das System die fehlerhafte Platte bereits selbstständig aus dem Raid entfernt hat. Sollte die Festplatte noch als Teil des Raids, z.B. als „faulty“ (Zusatz „F“), angezeigt werden, muss die Platte zuerst aus dem RAID entfernt werden (s.o.) bevor eine neue integriert werden kann.
Beispiel: raid1 mit /dev/sda defekt, /dev/sdb intakt
- Partitionieren der neuen (Austausch-) Festplatte durch Clonen der Partionierung einer vorhandenen Festplatte (hier /dev/sdb):
- GPT: clonen mit (von sdb auf sda!)
sgdisk -R ZIEL QUELLE
5) im Beispiel also
sgdisk -R /dev/sda /dev/sdb
und danach neue UUID erzeugen:
sgdisk -G /dev/sda
- MBR:
sfdisk -d QUELLE | sfdisk ZIEL
also hier von sdb auf sda:
sfdisk -d /dev/sdb | sfdisk /dev/sda
Ausgabe:
Checking that no-one is using this disk right now ... OK Disk /dev/sda: 243201 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sda: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sda1 2048 1050624 1048577 fd Linux raid autodetect /dev/sda2 1052672 2930275120 2929222449 fd Linux raid autodetect /dev/sda3 0 - 0 0 Empty /dev/sda4 0 - 0 0 Empty Warning: partition 1 does not end at a cylinder boundary Warning: partition 2 does not start at a cylinder boundary Warning: partition 2 does not end at a cylinder boundary Warning: no primary partition is marked bootable (active) This does not matter for LILO, but the DOS MBR will not boot this disk. Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).)
- ggf. Partitionen einlesen wenn nicht sichtbar:
sfdisk -R /dev/sda
- Einbinden der neuen Festplatte:
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
oder
mdadm /dev/md0 -a /dev/sda1
- Boot-manager (grub) auf die neue Festplatte installieren
grub-install /dev/sda
- der Syncronisationsfortschritt kann mit
cat /proc/mdstat
beobachtet werden
Links:
Syncronisationsgeschwindigkeit festlegen
Maximale Syncronisationsgeschwindigkeit anzeigen:
cat /proc/sys/dev/raid/speed_limit_max
100000
Hier ist also 100 MB/s eingestellt (100000K/s). Geschwindigkeit auf 200 MB/s stellen (gültig bis zum reboot):
echo 200000 > /proc/sys/dev/raid/speed_limit_max
Minimal garantierte Syncronisationsgeschwindigkeit anzeigen:
cat /proc/sys/dev/raid/speed_limit_min
1000
Dauerhafte Einstellungen in der Datei /etc/sysctl.conf
:
dev.raid.speed_limit_min = 50000 dev.raid.speed_limit_max = 200000
Beispiel: Partitionierung >2TB und Raid 5 bei 4 identischen Platten anlegen
Beispiel: 4 Festplatten mit 4TB (/dev/sda bis /dev/sdd), GPT-Partionierung, Raid 5 mit vier Festplatten.
passende Partitionstabelle auf der ersten Festplatte anlegen:
sudo parted /dev/sda
(parted) mklabel gpt (parted) mkpart primary ext4 2048s -1s Warnung: Sie haben eine Partition von 1049kB nach 4000GB angefordert. Der nächste Ort, der verwaltet werden kann, ist von 1049kB nach 4000GB. Ist das noch annehmbar? Ja/Yes/Nein/No? j (parted) set 1 raid on (parted) quit
Informationen: Möglicherweise müssen Sie /etc/fstab anpassen.
Nun die Partitionstabelle auf die anderen Festplatten clonen (Schema: sgdisk -R Ziel Quelle):
sgdisk -R /dev/sdb /dev/sda
The operation has completed successfully.
sgdisk -R /dev/sdc /dev/sda
The operation has completed successfully.
sgdisk -R /dev/sdd /dev/sda
Anschließend auf den geclonten Festplatten neue GUIDs erzeugen (GPT-Bezeichner):
sudo sgdisk -G /dev/sdb
The operation has completed successfully.
sudo sgdisk -G /dev/sdc
The operation has completed successfully.
sudo sgdisk -G /dev/sdd
The operation has completed successfully.
sudo mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Beispiel: Raid 1 mit 2 identischen Platten anlegen
Beispiel: Raid 1 mit 2 identischen Platten anlegen:
- passende Partitionstabelle anlegen (Partitionen mit Typ fd Linux raid-autodetect): Hier ergibt die Ausgabe von
sfdisk -d /dev/sda
eine Partition mit ungefähr 1,5TB:
# partition table of /dev/sda unit: sectors /dev/sdc1 : start= 63, size=2930272002, Id=fd /dev/sdc2 : start= 0, size= 0, Id= 0 /dev/sdc3 : start= 0, size= 0, Id= 0 /dev/sdc4 : start= 0, size= 0, Id= 0
- Partitionierung syncronisieren:
sfdisk -d /dev/sda > parttab.txt && sfdisk /dev/sdb < parttab.txt
- Raiddevices mit mdadm erstellen:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
- Die Syncronisation beider Datenträger beginnt nicht automatisch:
cat /proc/mdstat
ergibt
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active (auto-read-only) raid1 sda1[1] sdb1[0] 1465134841 blocks super 1.2 [2/2] [UU] resync=PENDING
damit es los geht, muss noch ein weiterer Befehl ausgeführt werden:
mdadm --readwrite /dev/md0
Danach lässt sich der Fortschritt beobachten
cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdd1[1] sdc1[0] 1465134841 blocks super 1.2 [2/2] [UU] [>....................] resync = 0.0% (606848/1465134841) finish=321.7min speed=75856K/sec
Diese Ausgabe kann mit dem Befehl watch auch dauernd aktualisiert werden:
watch cat /proc/mdstat
- neue Config nach
/etc/mdadm/mdadm.conf
schreiben:mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.backup && mdadm --detail --scan > /etc/mdadm/mdadm.conf
- Optional: Initialsyncronisierung beschleunigen (siehe oben):
echo 200000 > /proc/sys/dev/raid/speed_limit_max
Beispiel: Raid 1 mit 1 defekter Platte
Wenn man eine Mailbenachrichtigung eingerichtet hat (was man tun sollte!) bekommt man Warnungen falls das Raid Probleme hat.
Info: Die Mailbenachrichtigung ist in der /etc/mdadm/mdadm.conf
mit einer Zeile wie „MAILADDR root“ oder „MAILADDR admin@domain.net“ eingestellt.
This is an automatically generated mail message from mdadm running on serverXY A Fail event had been detected on md device /dev/md0. It could be related to component device /dev/sdb1. Faithfully yours, etc. P.S. The /proc/mdstat file currently contains the following: Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sda1[0] sdb1[1](F) 1465134841 blocks super 1.2 [2/1] [U_] [>....................] check = 0.8% (12747520/1465134841) finish=71354.2min speed=339K/sec unused devices: <none>
Wenn dann noch die Resync-Versuche scheitern sieht es so aus:
# mdadm --detail /dev/md0 /dev/md3: Version : 1.2 Creation Time : Sat Aug 27 04:51:31 2011 Raid Level : raid1 Array Size : 1465134841 (1397.26 GiB 1500.30 GB) Used Dev Size : 1465134841 (1397.26 GiB 1500.30 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sun Mar 4 02:13:22 2012 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 Spare Devices : 0 Name : serverXY:0 (local to host serverXY) UUID : 12f8e3be:792688d6:b4fd0515:761df8cf Events : 2022 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sda1 1 0 0 1 removed 1 8 49 - faulty spare /dev/sdb1
Die Festplatte /dev/sdb (Partition /dev/sdb1) scheint also tatsächlich defekt zu sein, so dass nur eine Platte betriebsbereit ist. Der Status ist „degraded“, Redundandanz ist also keine mehr vorhanden, d.h. die verbleibende Platte sollte nicht auch noch kaputt gehen damit die Daten erhalten bleiben.
Beispiel: Raid stoppen / entfernen
- unmounten:
umount /dev/md0
- ggf. LVM inaktiv schalten:
vgchange -a n vg_daten
0 logical volume(s) in volume group "vg_daten" now active
- stoppen:
mdadm --stop /dev/md0
mdadm: stopped /dev/md0
- entfernen:
mdadm --remove /dev/md0
- optional: das RAID zerstören (kann dann nicht mehr zusammengesetzt werden!)
mdadm --zero-superblock /dev/sda
asynchron schreiben (write-mostly write-behind)
Die Option „write-mostly“ legt ein Gerät fest das vorrangig beschrieben wird. Das kann nützlich sein um unterschiedlich schnelle Geräte einzusetzen.
Beim anlegen des Raid wird das festgelegt: –write-mostly /dev/sda1
Zur Laufzeit (Beispiel array md0 mit /dev/sda1):
- aktivieren:
echo writemostly > /sys/block/md0/md/dev-sda1/state
- deaktivieren:
echo -writemostly > /sys/block/md0/md/dev-sda1/state
gut möglich das diese Einstellung nur bis zum reboot überlebt - nicht getestet.
„write-behind“ legt dagegen fest wie viele ausstehende Schreibvorgänge (Standard ist: 256) das angegebene Gerät hinterher sein darf.
--bitmap=internal --write-behind=4096
Beides Einstellungen sollte mit grow auch nachträglich permanent hinzugefügt werden können indem das bitmap gelöscht und neu hingefügt wird ( nicht von mir getestet!):
mdadm /dev/md0 --grow --bitmap=none mdadm /dev/md0 --grow --bitmap=internal --write-behind=4096
Links:
Links
- Artikel „Software-RAID im laufenden Betrieb unter Linux einrichten“ iX 10/2011 S.136
Software RAID mit Windows
Links