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
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 | ||
|---|---|---|
| Kriterium | Software-RAID | Hardware-Raid 1) |
| Kosten | niedrig, da im OS enthalten | 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 Seriennummern gehen | niedrig, Verwaltungsoberfläche hilft, Status-LEDs helfen, automatiken |
| 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) | Nein, bei Aktivierung ist ohne USV Datenverlust bei Stromausfall wahrscheinlich | ja, oft nur mit BBU/NAND-Pufferung aktivierbar |
| Performance | oft gut wenn Server nicht am Limit gefahren wird | 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“) | u.U. möglich wenn Controller das unterstützt | Ja |
| Datenträger im stand-by der bei Ausfall sofort einspringt 2) („Hot spare“) | Ja | Ja |
| Berücksichtigung des RAID im Betriebssystem nötig, 3) | Ja, unbedingt | Nein, transparente Nutzung 4) |
| Wiederherstellung ohne laufendes Betriebssystem | Nein | Ja |
| RAID einbauen in anderes System | Ja, bei gleicher Architektur (Betriebsystem muss dort grundsätzlich laufen können) | Nur Bedingt, zusammen mit den Controller, ggf. 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 |
| Zusammenfassung | preiswert, für Heimbereich und kleine Unternehmen mit einzelnen bis sehr wenigen Servern | Für ausfallkritische Systeme, high-performance Anwendung wie Datendanken |
| 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 5). | |
| 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 Gesammtgröß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 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 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
cat /proc/mdstat
mdadm --detail /dev/md3
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
Maximale Syncronisationsgeschwindigkeit anzeigen:
cat /proc/sys/dev/raid/speed_limit_max
100000
Hier ist also 100 MB/s eingestellt (100000K/s). Geschwindigkeit auf 100 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: Raid 1 mit 2 identischen Platten anlegen:
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
sfdisk -d /dev/sda > parttab.txt && sfdisk /dev/sdb < parttab.txt
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.
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
/etc/mdadm/mdadm.conf schreiben:mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.backup && mdadm --detail --scan > /etc/mdadm/mdadm.conf
echo 200000 > /proc/sys/dev/raid/speed_limit_max
News
Navigation