Ein weiteres Problem der Plattenspeicher ist ihre Verfügbarkeit: Aufgrund ihrer Empfindlichkeit gegenüber Alterung, äußerer Gewalteinwirkung und Verschleiß sind sie anfällig für physikalische Schäden, die permanenten und eventuell existenzbedrohlichen Datenverlust zur Folge haben können.
Des Weiteren waren (und sind teilweise auch noch heute) Festplattensysteme mit großen Kapazitäten im Preis nicht zu verachten - Preise im fünf- bis sechsstelligen Bereich sind für professionelle Plattenarrays damals wie heute keine Seltenheit.
Die Schreib-/Leseköpfe schweben auf einem sehr dünnen Luftkissen über der Oberfläche der Platte (ähnlich einem Luftkissenboot). Dabei dürfen sie diese nicht berühren, d.h. in direkten physikalischen Kontakt mit ihr treten, da es sonst zu einem Headcrash kommt. Da aber Festplatten nach dem Ausschalten nicht mehr rotieren, existiert auch kein Luftkissen mehr und die Köpfe müssen in dafür vorgesehenen Zonen landen. Dies regelt eine Elektronik, welche auf das Ausschalten der Stromversorgung reagiert und die Köpfe in einen Ruhezustand positioniert.
Ein Headcrash kann auftreten, wenn das Gehäuse offen ist und die Luft nicht in der geordneten Bahn bleibt, in der sie das Luftkissen für den Festplattenkopf erzeugt, oder wenn durch Gewalteinwirkung der Kopf die rotierende Scheibe trotz des Luftkissens berührt.
Abb. 1: Schematische Ansicht des Festplatteninnern
Ein RAID-System soll in gewissem Umfang den sicheren Betrieb eines Plattensystems ohne Datenverlust gewährleisten, auch wenn einzelne Festplatten warum auch immer ausfallen.
Vom Hersteller wird manchmal die sogenannte MTBF (mean time between failure) angegeben. Sie wird in Stunden angegeben und misst die durchschnittliche Zeit zwischen zwei Ausfällen.
Aussagekräftiger für die Qualität ist jedoch die MTTF (mean time to failure); auch sie ist eine Zahl in Stunden, misst aber die durchschnittliche Zeit bis zum ersten Ausfall. Da Festplatten beim ersten Ausfall in der Regel ausgetauscht werden, um weiteren Ausfällen vorzubeugen, ist sie eher ein brauchbares Maß für die Lebensdauer einer Festplatte als die MTBF.
Das im Vergleich zur MTBF und MTTF vergleichsweise sehr kleine Maß der MTTR (mean time to repair) ist vom Hersteller der Festplatte unabhängig; es ist die durchschnittliche Dauer der Reparatur der Festplatte (in der Regel des Austauschs) und dient der Erfassung der Dauer eines Ausfalls: MTBF = MTTF + MTTR (siehe auch [MTBF]).
Die sich aus allen diesen Werten ergebende Maßzahl ist die MTTDL (mean time to data loss), die durchschnittliche Zeit bis zum Datenverlust. RAID-Systeme dienen u. a. dazu, diese möglichst lange zu verzögern.
Aus diesen Werten können Prognosen für die Verfügbarkeit (engl. "availability") von RAID-Systemen gebildet werden. RAID-Systeme sollen die Verfügbarkeit erhöhen, indem Ausfälle einzelner Festplatten mit geringerer Verfügbarkeit toleriert werden und das System trotzdem weiterarbeitet. Das RAID-System erkennt selbstständig fehlerhaft arbeitende Festplatten und trennt sie vom produktiven Betrieb.
Die Zuverlässigkeit eines RAID-Systems (engl. "reliability") ist ebenfalls deutlich höher als die einzelner Festplatten. Ein RAID-System stellt auch im Fehlerfall einer einzelnen Festplatte sicher, dass der Betrieb innerhalb definierter Grenzen normal fortgeführt werden kann.
Je nach RAID-Level ist nach einem Ausfall einer Festplatte eine Wiederherstellungs-Phase (engl. "recovery") notwendig, um die auf der ausgefallenen Festplatte vorhandenen Daten zu rekonstruieren.
Bei der Installation eines RAID-Systems sollte man sich über das Anwendungsgebiet im Klaren sein, da die Wahl des RAID-Levels maßgeblich für die zukünftige Performanz des Systems sein kann: Werden voraussichtlich viele Zugriffe mit eher kleinem Datenvolumen statt finden oder werden eher bei weniger Zugriffen mehr Daten übertragen?
In der Regel werden Hardware-Lösungen eingesetzt, um ein RAID-System zu realisieren: An eine Controllerkarte werden mehrere Festplatten angeschlossen und von dieser gesteuert. Es gibt aber auch Software-RAID-Lösungen, die sich in der Performanz jedoch mit Hardware-Lösungen nicht messen können.
Allen Lösungen gleich ist, dass der RAID-Verbund für das Betriebssystem mehr oder weniger transparent dargestellt wird, d. h. das Betriebssystem "weiß" nicht, dass es auf einem RAID-System arbeitet.
Im Folgenden wird auf die konkrete technische Umsetzung eines RAID-Festplattenverbunds in einem Computersystem und die damit verbundenen Besonderheiten der einzelnen RAID-Levels eingegangen.
Diese Stufe der Fehlertoleranz verdient den Titel "redundant" eigentlich nicht, denn die Daten werden in keiner Weise redundant gehalten - der Vorteil ist eine enorme Steigerung der Schreib-/Lesegeschwindigkeit. Dem gegenüber steht jedoch der Verlust aller Daten im gesamten Festplattenverbund, wenn auch nur eine Festplatte einen Defekt hat.
Dieses Level eignet sich für Anwendungen, die sehr hohen Datendurchsatz bei vergleichsweise "unwichtigen" Daten erfordern, z. B. Videoschnitt.
Abb. 2: RAID Level 0
Beim Schreiben macht sich lediglich ein geringer Performanzvorteil gegenüber unabhängigen Festplatten bemerkbar, beim Lesen kann der Zugriff aber parallelisiert werden und ist ähnlich schnell wie bei RAID 0.
Jeder Festplatte ist eine Spiegelfestplatte zugeordnet; dadurch ist der Speicherplatzbedarf vergleichsweise hoch im Vergleich zur effektiven Nutzkapazität: Es werden doppelt so viele Festplatten benötigt wie genutzt werden können.
Von einem "Spiegelpaar" darf immer nur eine ausfallen; diese wird nach dem Austausch vom RAID-Controller wieder mit der noch bestehenden Spiegelplatte abgeglichen.
Dieses Level eignet sich für Anwendungen, die hohen Datendurchsatz bei hoher Datensicherheit erfordern; unternehmenskritische oder hochverfügbare Daten werden in der Regel auf diesen Festplattensystemen abgelegt, z. B. die Finanzbuchhaltung oder die Personalverwaltung.
Abb. 3: RAID Level 1
Der Vorteil des Verfahrens liegt in der Möglichkeit, im laufenden Betrieb Fehler zu korrigieren, ohne Performanzeinbußen hinnehmen zu müssen. Der Nachteil liegt auf der Hand: Die benötigte Anzahl der Festplatten ist in der Praxis nicht zumutbar, zumal in diesen Größenordnungen auch nicht unerhebliche Anschaffungskosten entstünden. Ferner ist die Ausnutzung des Plattenplatzes durch den relativ hohen Bedarf an Parity-Platten nicht sehr effizient.
Dieses RAID-Level existiert daher nur in der Theorie, es gibt keine kommerzielle Implementation dieser Lösung.
Abb. 4: RAID Level 2
Durch die Verwendung einer Elementaroperation zur Ermittlung des Prüfbits kann hiermit eine recht gute Schreib-/Leseleistung erzielgt werden. Die Festplattenausnutzung ist weitaus effizienter als beim RAID 2.
Controller für dieses RAID-Level sind komplizierter gebaut als für die vorhergehenden RAID-Levels; bei einer Softwarelösung wird vergleichsweise viel Rechenzeit für die Parity-Bit-Berechnung aufgewendet. In der Praxis hat sich außerdem gezeigt, dass die Parity-Festplatte in Zeiten hoher Last zum Flaschenhals wird, da bei jedem Schreibzugriff das Parity-Bit überprüft bzw. geschrieben werden muss. Ausfallen darf aber lediglich eine Festplatte gleichzeitg.
Üblicherweise werden mit diesem RAID-Level Anwendungen mit relativ hohem Datendurchsatz betrieben, z. B. Bildverarbeitung.
Abb. 5: RAID Level 3
Abb. 6: RAID Level 4
Dieses RAID-Level ist in der Praxis meist erste Wahl - guter Performanz stehen angemessene Kosten bei guter Verfügbarkeit gegenüber. Heutige RAID 5-Implementationen können sehr fein an die entsprechenden Bedürfnisse angepasst werden: Die "chunk-size" ist frei wählbar, eine sog. spare disk, die bei Ausfall einer Festplatte sofort einspringt, kann bereits eingebaut und auf den Betrieb vorbereitet werden, so dass die MTTR minimal wird.
Typisches Einsatzgebiet sind File-, Web- oder Datenbank-Server.
Abb. 7: RAID Level 5
Nachteilig hierbei ist die stark erhöhte Rechenzeit, die benötigt wird, um auch die zweite Parity-Einheit zu berechnen. Die Schreibgeschwindigkeit ist daher deutlich vermindert, aber die Fehlertoleranz erhöht. Mir ist jedoch keine kommerzielle Implementierung bekannt.
Abb. 8: RAID Level 6
Wesentliche Merkmale sind asynchrone Schreibzugriffe, deutliche Performanzsteigerung durch intelligentes Caching durch das Realtime-OS, eine kurze Garantiezeit, der hohe Preis und die Nicht-Wartbarkeit durch den Kunden: Der Kunde hat keinen Zugriff auf die Konfiguration dieses RAID-Systems, sondern ist auf die Storage Computer Corporation angewiesen.
Abb. 9: RAID Level 7
In einem Software-RAID lässt sich eine Kombination verschiedener RAID-Levels über die Konfiguration natürlich wesentlich leichter realisieren als in einem Hardware-Controller, die normalerweise nur die Standard-RAID-Level "kennen".
Dieses RAID-Level wird üblicherweise bei unternehmenskritischen hochperformanten Datenbanken verwendet.
Abb. 10: RAID Level 10
Abb. 11: RAID Level 53
Abb. 12: RAID Level 0+1
Die Hauptintention eines RAID-Systems ist die höhere Verfügbarkeit und Zuverlässigkeit eines Verbunds vergleichsweise günstiger Festplatten gegenüber der niedrigeren Verfügbarkeit und Zuverlässigkeit einer einzigen großen hochverfügbaren Festplatte bei gleichzeitig geringeren Anschaffungs- und Folgekosten.
RAID-Levels, die mit Parity arbeiten, sind vor allem beim Schreiben natürlich langsamer als RAID-Levels ohne Parity. Heutige Controller verfügen über ausreichend "Intelligenz", um auch z. B. einen RAID Level 5-Plattenverbund über die Schreibgeschwindigkeit einzelner Platten zu bringen.
In Plattenverbänden erhöht sich die Ausfallwahrscheinlichkeit einer Festplatte, je mehr Festplatten im Verbund sind. Eine MTTF einer einzelnen Festplatte von z. B. 500.000 Stunden (ca. 57 Jahre) verringert sich in einem Verbund von z. B. 100 Festplatten auf 5.000 Stunden (ca. 7 Monate), d. h. im Schnitt muss in diesem Verbund eine defekte Festplatte alle 7 Monate ausgetauscht werden.
Magnet-Bänder: Sind für Backups sehr gut geeignet, jedoch für den Einsatzzweck, den RAID-Systeme erfüllen, ungeeignet: Ein Echtzeitzugriff ist praktisch kaum möglich, die Performanz kann sich mit Festplatten nicht messen.
Linear Mode: Ähnelt sehr stark RAID Level 0, verteilt die Zugriffe jedoch nicht, sondern "befüllt" die Festplatten sequenziell. Damit sind die Nachteile eines RAID 0 gegeben, da alle Daten verloren gehen, wenn eine Platte ausfällt, aber der Performanz-Vorteil bleibt durch die Sequenzialität aus.
Vorhanden sind IDE-Festplatten mit 2 x 20 GB und 3 x 40 GB. Damit die Kapazität noch eine Weile reicht, wurden 2 80 GB-Festplatten sowie ein IDE-Controller hinzugekauft.
Die erste Möglichkeit scheidet aus, da ein RAID 5 nur eine defekte Einheit verkraftet. Wenn aber nun eine 40 GB- oder ein 80 GB-Festplatte ausfällt, sind gleich zwei oder vier Einheiten defekt, und das RAID ist kaputt.
Bei einem Software-RAID lassen sich mehrere RAID-Levels verschachteln; so haben wir über die zwei 20 GB-Platten und eine 40 GB-Platte ein RAID 0 gelegt und über die beiden übrigen 40 GB-Platten noch einmal. Es stehen nun vier 80 GB-Einheiten zur Verfügung, die als RAID 5 im Verbund stehen. Die echte Plattenkapazität ist ca. 320 GB, die Nutzkapazität ca. 240 GB. Für das bessere Verständnis: s. Abb. 13.
Abb. 13: Schema des RAID-Verbunds
Es war notwendig, das Gehäuse etwas anzupassen, um neun Festplatten einbauen zu können, s. Abb. 14 und 15.
Abb. 14: Innenausbau des Towers
Abb. 15: Selbstgebaute Erweiterung
CONFIG_MD=y CONFIG_BLK_DEV_MD=y CONFIG_MD_LINEAR=y CONFIG_MD_RAID0=y CONFIG_MD_RAID1=y CONFIG_MD_RAID5=yDie RAID-Funktionalität kann (noch) nicht als Kernel-Modul eingebunden werden, daher kann der Kernel erst nach der kompletten Neukompilierung und Installation ein Software-RAID steuern. Um dem Kernel zu sagen, wie er das zu tun hat, gibt es die "raidtools" für Linux.
Für weitere Informationen zum Thema Kernel kompilieren und Kernel-Module sei auf die entsprechenden HOWTOs verwiesen ([KernelHOWTO], [ModulesHOWTO]).
/proc/partitions):
major minor #blocks name 8 0 1027517 sda 34 0 40031712 hdg 34 64 39082680 hdh 33 0 80043264 hde 33 64 80043264 hdf 22 0 19938240 hdc 22 64 40021632 hdd 3 0 19925880 hdaGeräte mit dem Präfix "
sd" sind SCSI-Festplatten, das
Präfix "hd" steht für (E)IDE-Geräte.
Die "major"- und "minor"-Zahlen dienen der Identifikation eines
Gerätes für Erzeugung eines Devices in /dev. Sie stellen
eine Art Adressen dar und haben ansonsten keine weitere Bedeutung.
Die zweite SCSI-Festplatte sdb fehlt in dieser Darstellung, das stört
aber nicht weiter, da lediglich die IDE-Festplatten zum RAID-Verbund
gehören sollen. Auf diesen wird nun je eine Partition angelegt, die
die gesamte Festplatte ausfüllt. Nicht alle Festplatten haben die
exakt passende Kapazität; es wurde etwas Mathematik betrieben, um eine
bestmögliche Nutzung der Festplattenkapazität zu erzielen. Der
"überschüssige" Platz wurde teilweise für swap verwendet oder nochmals
als RAID 0 zusammengefasst und für das Verzeichnis /tmp
verwendet.
Somit ergibt sich diese Partitionierung:
major minor #blocks name 34 1 40031711 hdg1 34 65 39082679 hdh1 33 1 79114176 hde1 33 2 146664 hde2 33 3 782423 hde3 33 65 79114176 hdf1 33 66 144585 hdf2 33 67 777068 hdf3 22 1 19938239 hdc1 22 65 39255679 hdd1 22 66 146664 hdd2 22 67 619288 hdd3 3 1 19920599 hda1Nun die eigentliche RAID-Konfiguration (
/etc/raidtab):
raiddev /dev/md0
raid-level 0
nr-raid-disks 3
persistent-superblock 1
chunk-size 4
device /dev/hda1
raid-disk 0
device /dev/hdc1
raid-disk 1
device /dev/hdd1
raid-disk 2
raiddev /dev/md1
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/hdg1
raid-disk 0
device /dev/hdh1
raid-disk 1
raiddev /dev/md2
raid-level 5
nr-raid-disks 4
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 128
device /dev/md0
raid-disk 0
device /dev/md1
raid-disk 1
device /dev/hde1
raid-disk 2
device /dev/hdf1
raid-disk 3
raiddev /dev/md3
raid-level 0
nr-raid-disks 3
persistent-superblock 1
chunk-size 4
device /dev/hdd3
raid-disk 0
device /dev/hde3
raid-disk 1
device /dev/hdf3
raid-disk 2
Der erste Abschnitt weist den Kernel an, ein RAID Level 0 über hda1,
hdc1 und hdd1 mit 4 KB chunk-size als /dev/md0 anzulegen.
Das sind die beiden 20 GB- und eine 40 GB-Festplatte.
Der zweite Abschnitt definiert ebenso ein RAID Level 0 über hdg1 und
hdh1 mit 4 KB chunk-size als /dev/md1. Das sind die
beiden übrigen 40 GB-Platten.
Der dritte Abschnitt ist der interessante: Hier wird das RAID Level 5 über die bestehenden RAIDs md0 und md1 sowie über hde1 und hdf1 gelegt. So entsteht mit einer 128 KB chunk-size und dem "left-symmetric"-Paritätsalgorithmus ein RAID 5-Plattenverbund, hier ohne spare disk.
Der vierte Abschnitt ist die erwähnte Zusammenfassung der "Reste" als
RAID 0. Der andere Teil, der dem Swap-System zur Verfügung steht, wird
automatisch wie ein RAID 0 behandelt und sieht so aus
(/proc/swaps):
Filename Type Size Used Priority /dev/sda5 partition 44456 860 0 /dev/hdd2 partition 146656 860 0 /dev/hde2 partition 146656 864 0 /dev/hdf2 partition 144576 872 0
mkraid
/dev/mdX" angelegt und per "raidstart
/dev/mdX" gestartet werden. Da md2 von md0 und md1
abhängig ist, müssen diese natürlich zuerst gestartet werden, bevor
md2 initialisiert werden kann. Anschließend können md2 und md3 wie
eine normale Festplatte verwendet werden: Dateisystem anlegen,
mounten, etc.
|
|
![]() |
| Letzte Änderung: 2002-10-14 13:27:53 |