Vollbildmodus: Seiteninhalt ohne Menus

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

  1. ein RAID nur gegen Festplattenausfall absichert,
  2. andere logische Fehler wie fehlerhafte Daten/gelöschte Dateien (auf Betriebssystemebene) auf alle Datenträger syncronisiert werden
  3. 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 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

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 Abbildung Raid 0, Lizenz:public domain Abbildung Raid 1, Lizenz:public domain Abbildung Raid 10, Lizenz:public domain Abildung Raid 5, Lizenz:public domain 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 5).
primäre Verwendungtemporä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

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

Informationen anzeigen

  • Übersicht über vorhandene RAIDs:
    cat /proc/mdstat
  • Details zu einem bestimmten SW-Raid anzeigen
    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

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

Beispiel: Raid 1 mit 2 identischen Platten anlegen:

  1. 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
  2. Partitionierung syncronisieren:
    sfdisk -d /dev/sda > parttab.txt && sfdisk /dev/sdb < parttab.txt
  3. 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.
  4. 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
  5. 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
  6. Optional: Initialsyncronisierung beschleunigen (siehe oben):
    echo 200000 > /proc/sys/dev/raid/speed_limit_max

Links

Software RAID mit Windows

FIXME

Links

FIXME

1) mit extra Controller
2) um die Wiederherstellzeit zu verringern, Rebuild beginnt sofort und nicht erst nach Austausch defekter Datenträger durch das Personal
3) z.B. bei Linux in initrd bzw. Bootmanager
4) Treiber für Controller nötig
5) Implementierung entweder mit XOR oder Mehrbit-Fehlerkorrektur
 
server/raid.txt · Zuletzt geändert: 2011/09/20 22:30 von st
 
Backlinks: [[server:raid]]