====== RAID ======
[[wpde>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: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 [[wpde>RAID#Hot-Spare-Laufwerk|Hot-Spare-Laufwerk]] vorhanden, das dann gleich beim Ausfall als Ersatz einspringt.
Das alleinige Durchreichen einer oder mehrerer Festplatten bezeichnet man als [[wpde>RAID#JBOD|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 [[wpde>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 ((mit extra Controller)) ^
^ 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 ((um die Wiederherstellzeit zu verringern, Rebuild beginnt sofort und nicht erst nach Austausch defekter Datenträger durch das Personal)) ("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, ((z.B. bei [[linux:Linux]] in initrd bzw. [[linux:bootmanager und bootprozess#Bootmanager]])) | 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: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 =====
* [[http://www.tecchannel.de/storage/grundlagen/401665/|RAID im Überblick]]
* [[http://www.elektronik-kompendium.de/sites/com/1001011.htm|RAID - Redundant Array of Independent Disk]] [[http://www.elektronik-kompendium.de/sites/com/1001021.htm|RAID-Level 2 / 3 / 4 / 5]]
===== 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 | {{server:raid_0.png?50|Abbildung Raid 0, Lizenz:public domain}} | {{server:raid_1.png?50|Abbildung Raid 1, Lizenz:public domain}}| {{server:raid_10.png?50|Abbildung Raid 10, Lizenz:public domain}} | {{server:raid_5.png?50|Abildung Raid 5, Lizenz:public domain}}| {{:server:raid_6.png?50|Abildung Raid 6, Lizenz:public domain}} |
^ 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 ((Implementierung entweder mit XOR oder Mehrbit-Fehlerkorrektur)). |
^ 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** ([[wpde>RAID#RAID_0.2B1|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: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: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 ====
* [[http://tldp.org/HOWTO/Software-RAID-HOWTO-6.html|The Software-RAID HOWTO]]
==== 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:
**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 [[server: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
((Bei [[debian:Debian]] wheezy im Paket ''gdisk'')) im Beispiel alsosgdisk -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**:
* [[http://wiki.hetzner.de/index.php/Austausch_einer_defekten_Festplatte_im_Software-RAID|Austausch einer defekten Festplatte im Software-RAID]]
==== 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/secDiese 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:
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.
* https://systemausfall.org/wikis/howto/SoftwareRaidminiHowTo
* http://www.devil-linux.org/documentation/1.0.x/ch01s05.html
* http://www.coresoft.de/blog/79/mdadm-vermeldet-faulty-spare/
* https://www.linuxquestions.org/questions/linux-server-73/mdadm-removing-faulty-spare-701607/
* http://consultancy.edvoncken.net/index.php/HOWTO_Replace_a_failing_disk_on_Linux_Software_RAID-5
==== 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 [[https://superuser.com/questions/379472/how-does-one-enable-write-mostly-with-linux-raid|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 [[https://raid.wiki.kernel.org/index.php/Growing|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:
* https://raid.wiki.kernel.org/index.php/Write-mostly
==== Links ====
* [[http://aplawrence.com/Linux/rebuildraid.html|Anleitung zum rebuild im Fehlerfall]]
* [[http://forums.gentoo.org/viewtopic-t-673067-highlight-raid5.html|Schreibgeschwindigkeit beim software RAID5 verbessern]]
* [[https://systemausfall.org/wikis/howto/SoftwareRaidminiHowTo|Kurzbeschreibung der Einrichtung eines Software Raids]]
* [[http://svenkalinowski.de/linux-wiki/LinuxRaid|LinuxRaid]]
* [[http://wiki.debian.org/LinuxRaidForAdmins|Linux and HW raid - an administrators summary]]
* Artikel "Software-RAID im laufenden Betrieb unter Linux einrichten" iX 10/2011 S.136
===== Software RAID mit Windows =====
FIXME
==== Links ====
FIXME