Sekundärspeicher

 


RAID

Raid bezeichnet eine meist fehlertolerante Verschaltung mehrerer Festplatten oder Festplattensysteme zu einem Verbund, der nach außen wirkt, wie ein einziger großer Datenträger.

In den letzten Jahren hat sich die Prozessorleistung jedes Jahr mehr als verdoppelt. Die Kapazität verfügbarer Massenspeicher verdoppelt sich bei halbem Preis etwa alle 3 Jahre. Ganz im Gegensatz dazu hat man die Zugriffsgeschwindigkeit nur wenig steigern können. Die Rotationsverzögerung (Bei Positionierung des Schreib/Lesekopfes auf einer Spur stehen die Daten erst zur Verfügung, wenn sie am Kopf angekommen sind) und die Spurwechselzeit (bedingt durch die mechanische Trägheit) konnten bei weitem nicht in diesem Maße gesteigert werden. Hier ist eine Verbesserung um 5-10% pro Jahr zu notieren. Eine einfache Steigerung der Umdrehungsgeschwindigkeit (Reduktion der Rotationsverzögerung) und eine Verringerung des Kopfgewichts (damit geringere Spurwechsel-/Positionierungszeiten) waren aufgrund mangelnder Kopftechnologien lange Zeit nicht praktikabel*.

Da dieser Entwicklungsrückstand lange absehbar war, befürchtete man schon früh eine I/O-Krise. Weil keine Ersatztechnologien zum Ersatz der gegebenen magnetischen und optischen Speichermedien in Sicht waren, begann man, sich nach einer anderen Möglichkeit umzusehen. Doch das Ziel bei der Entwicklung der RAID-Technologie war nicht nur eine Leistungssteigerung, sondern vor allem auch eine Steigerung der Fehlertoleranz. Zwar ist mit der Größe und Geschwindigkeit der Speichermedien in geringem Maße auch deren Ausfallsicherheit gestiegen, sie liegt in etwa bei <10exp(-13) Fehlerbits; dies ist aber für kritische Datenbanksysteme, wie sie z.B. in Banken zum Einsatz kommen, keineswegs ausreichend.

Der Entwicklung von RAID untersuchte man die Verteilung und die Zugriffshäufigkeit der Daten. Wie auf vielen anderen Gebieten bewahrheitete sich hier schnell die 80/20-Regel. D.h. , daß auf 20% der Daten auf einem Massenspeicher ca. 80% aller Zugriffe erfolgen. Liegen diese Daten schließlich noch auf nur einer Speichereinheit (Festplatte), so ergibt sich hier ein recht schlechtes Leistungsverhältnis. Erfahrungen aus Mainframe-Zeiten zeigten jedoch, daß sich dies durch eine geeignete Verteilung der Daten optimieren ließ.

Der Begriff des RAID (Redundant Array of Inexpensive Disks) wurde geprägt. Den Arrays werden hier verschiedene Levels zugewiesen, die jeweils eine Art der Datensicherheit/Datenverteilung beschreiben. Zur Leistungssteigerung entwickelte man die Technik des Striping (Verteilen der Daten auf mehrere Platten, RAID-Level 0). Hier werden Daten, die eine hohe 'I/O-Last' aufweisen in kleine Segmente (chunks) zerlegt und auf mehrere Speichereinheiten (Festplatten) verteilt. Hierdurch läßt sich eine Verteilung der I/O-Last erreichen und die kombinierte Leistung der Speichereinheiten steigern. Was anfangs noch manuell auf Dateiebene durchgeführt werden mußte (Datenbanken wurden zerlegt und auf mehrere Festplatten verteilt), übernahm später ein Programm oder ein dedizierter RAID-Kontroller. Damit war einerseits eine feinere Teilung der Informationseinheiten möglich, andererseits erschien der zur Verfügung stehende Speicherplatz dem Anwender wie eine große homogene Einheit.

Schon früh erkannte man die sich daraus ergebenden Schwierigkeiten. Durch die Verwendung kleinerer Festplatten, deren MTBF (mittlere Ausfallszeit) zwar besser war als die einer großer Platten, sank dennoch die Zuverlässigkeit der gesamten Plattengruppe dramatisch. Es stimmte zwar die Leistung, die Datensicherheit war jedoch nicht mehr gewährleistet. Deshalb erstellte man folgende Vorgaben, denen RAID genügen sollte:

 

  1. Level 0 beschreibt das reine Striping. Es erfüllt also nicht alle Forderungen des RAID-Standards (keine Redundanz). Insbesondere die mangelnde Datensicherheit ist hier hervorzuheben. Dieser RAID-Level findet Verwendung bei besonders leistungskritischen Anwendungen, bei denen es weniger auf die Datensicherheit ankommt, z.B. bei Multimedia-Streaming. Die Daten des Anwenders werden über mehrere Festplatten verteilt. Will man die Zugriffszeit minimieren (große Datenbankanwendungen), kommt es darauf an, daß ein Datensegment (chunk) größer ist als die vom Anwender angeforderte Informationseinheit (z.B. ein Datensatz). So können im Idealfall die Informationswünsche vieler Anwender gleichzeitig (quasi-parallel) befriedigt werden. Arbeitet man dagegen mit großen Informationseinheiten (z.B. bei Multimedia), so wählt man die Größe der 'chunks' wesentlich kleiner, so daß im Idealfall alle Speichereinheiten gleichzeitig einen Teil dieser Information beitragen können. In diesem Fall erhält man eine optimierte Übertragungsrate.

  2. Level 1 ist eigentlich die erste Ausprägung des RAID-Standards, die den o.g. Anforderungen genügt. Wiederum erscheint das aus mehreren diskreten Speichereinheiten bestehende RAID-Array dem Anwender wie ein einziger homogener Speicher. Die Daten des Anwenders werden wieder segmentiert. Anders als bei RAID Level 0 läßt sich hier auch die geforderte Fehlertoleranz realisieren. Die segmentierten Daten werden jetzt zweifach abgelegt (mirroring - Spiegelung). Da sich allein durch diese Technik nur eine geringe Leistungssteigerung (Daten können von mehreren Platten gelesen werden) erreichen läßt wird oft ein RAID Level 0/1 realisiert: Ein Datensegment A wird dann z.B. auf Disk 1 und 3 abgelegt, Segment B auf 2 und 4 usw. Betrachtet man die Kosten, so ist Level 1 die teuerste Alternative zu RAID-Level 0, denn der Anwender kauft genau die doppelte Speicherkapazität, die er tatsächlich benötigt. Genauso wie Level 0 läßt sich hier die Segmentgröße auf die Art der Daten abstimmen. Eine Leistungssteigerung bei reinem RAID-1 ergibt sich jedoch nur im Falle, daß die Segmentgröße die Größe der angeforderten Datensätze übersteigt, da nur so mehrere (Lese-)Aufträge gleichzeitig ausgeführt werden können. Die Ausfallsicherheit ist dagegen sehr hoch. Einen Defekt einer Platteneinheit bemerkt der Anwender nicht, solange ihre Spiegeleinheit noch arbeitet.Der Schreibvorgang wird jedoch nicht beschleunigt, da die Daten immer auf beide Platten gleichzeitig geschrieben werden müssen, es kann sogar - bedingt durch den Befehlsoverhead - zu einer geringen Verlangsamung des Schreibvorganges kommen.

  3. Level 2 Wie bei Level 0 werden auch hier die Daten fortlaufend auf die angeschlossenen Platten verteilt, wobei ein Kontroller zu jedem Datensegment per Hammingcode einen zugehörigen Prüfblock auf ein dediziertes Fehlerkorrekturlaufwerk schreibt. Je nach Realisierung erlaubt dierser Level auch die Korrektur mehrerer Fehler auf den Festplatten, wodurch allerdings wegen des hohen Verwaltungsaufwandes ein hoher Overhead und damit verbundene Geschwindigkeitseinbußen entstehen.

  4. Level 3 Level 3 gleicht in seinem Aufbau sehr Level 2. Zu einer Gruppe von Festplatten kommt ein Paritylaufwerk hinzu. Fällt nun eine Platte aus, lassen sich die Daten aus ->Redundanzdaten auf den anderen Laufwerken rekonstruieren. Nimmt man z.B. ein Array von 4 (beliebigen) Festplatten, so werden die segmentierten Daten wie bei Level 0 auf die ersten drei Platten verteilt. Die Größe der Datensegmente ist hier im Verhältnis zum angeforderten Datensatz sehr klein (typisch 1 Byte). Während die ersten drei Platten an jeweils derselben Position die Bytes A,B und C speichern, ergibt sich das Byte D auf Festplatte 4 wie folgt: D = A XOR B XOR C. Da diese Berechnung sehr schnell gehen muß, wird sie meist in Hardware realisiert. Fällt nun ein Speichermedium aus, so läßt sich das fehlende Byte aus den 3 anderen rekonstruieren. Der Schreibvorgang ist wegen seiner Anfälligkeit für Datenverlust etwas aufwendiger. Zuerst werden die zu schreibenden Daten auf die Position des zu überschreibenden Speichers des RAID-Arrays gesetzt. Bevor jedoch die alten Daten überschrieben werden, werden sie und ihr entsprechendes XOR-Segment gelesen. Dann wird das alte Datum mittels einer XOR-Operation mit seinem XOR-Segment verknüpft und so von diesem getrennt. Die neu zu schreibenden Daten werden dann mit diesem XOR-Segment zum neuen Prüfblock verknüpft (ebenfalls mit einer XOR-Operation). Somit erfolgt ein Schreibvorgang mittels vier Zugriffen: Ein Lese- und Schreibvorgang für die Daten und ein Lese- und Schreibvorgang für das XOR-Segment. Ein Vorteil dieses Verfahrens besteht darin, daß der Schreibvorgang nun nicht mehr atomar ist - das Schreiben eines Plattenblocks ist auf diese Art mit einer Fehlerüberwachung verknüpft, so daß die Datenkonsistenz jederzeit gewährleistet ist.

  5. Level 4 Der Hauptunterschied zu Level 3 liegt in der Segmentgröße, die im Verhältnis zu den angeforderten Datenmengen groß ist. Arrays dieses Typs arbeiten mit unabhängigen Datenpfaden für jedes Laufwerk. Die eingehenden Daten werden also fortlaufend auf ein Laufwerk geschrieben (Dazu muß die Segmentgröße entsprechend sein). Bei kleinen Datenblöcken hat dieses Verfahren Vorteile gegenüber RAID 3, da viele Zugriffe gleichzeitig bedient werden können.

  6. Level 5 Hier werden die Redundanzdaten ähnlich wie bei Level 3 mittels einer XOR-Operation erzeugt, nur sind sie jetzt auf alle Platten verteilt. Nehmen wir unser Beispiel mit vier Festplatten. Wieder übernimmt Platte 1 das erste Datensegment, Platte 2 das zweite Segment (an derselben physikalischen Position wie Platte 1 [Zylinder, Platte, Sektor]). Platte 4 speichert dann das aus den ersten drei Segmenten mittels XOR gebildete Redundanzsegment wieder an gleicher physikalischer Position. Beim zweiten Durchlauf übernimmt nun Platte 3 diese Aufgabe, beim dritten dann Platte 2, usw. Im Unterschied zu Level 3 sind hier die Datensegmente groß im Vergleich zu einem großen Teil der vom Anwender angeforderten Datensätze. Ein Schreibvorgang beschäftigt wie in Level 4 auch immer 2 Platten, während die anderen zur selben Zeit andere Aufträge bearbeiten können. Dies macht allerdings nur Sinn, wenn die Größe eines Segments größer ist als ein angefordertes Datum. Durch die Verteilung der Prüfblöcke wird der Engpaß beim Schreiben der Prüfsumme vermieden (alle Schreibzugriffe würden sonst auf eine Platte zugreifen müssen), und im Gegensatz zu den Leveln 3+4 wird ein höherer Durchsatz erreicht. Die Rekonstruktion der Daten im Fehlerfall dauert dafür drastisch länger, da die Parity-Informationen quer über alle Laufwerke verteilt sind.

Veranschaulichung von RAID5 durch ein Applet:

Die Ausführung des folgenden Applets erfolgt problemlos mit Browsern mit integriertem Java-Interpreter Version 1.1x. Dies sind z. B. der Microsoft Internet Explorer ab Version 4, SUNs Hotjava oder Netscape ab Version 4.06.

 Im Applet links wird die Funktionsweise eines RAID-Systems nach Level 5 bestehend aus 3 Platten visuell dargestellt. Das Texteingabefeld 'Datenstrom' am unteren Rand des Applets dient zur Pufferung von Daten, die auf dem RAID-System gespeichert werden sollen. Mit dem Drücken der 'Start'-Taste beginnt der Schreibvorgang. Es werden jeweils zwei Zeichen aus dem Datenstrom genommen und auf 2 Platten gespeichert. Auf die dritte Platte wird das von der RAID-Elektronik aus den beiden Zeichen berechnete XOR-Symbol gespeichert. Angezeigt wird jeweils die ASCII-Darstellung des Zeichens, oder bei nicht darstellbaren Zeichen das Ersatzsymbol '#' (die Speicherung erfolgt als 8-stelliges Binärsymbol).

Durch das Klicken auf eine beliebige Festplatte wird deren Ausfall dargestellt, woraufhin die Wiederherstellung aller verlorengegangener Daten auf einer leeren Austauschplatte durch die auf den verbleibenden zwei Platten gespeicherten Informationen eingeleitet wird. Wie in Wirklichkeit erfolgt dieser Vorgang für den Benutzer völlig transparent, er bemerkt den Ausfall eines Datenträgers nur durch eine zeitweilige Verlangsamung seiner Plattenzugriffe.

 

 

Die folgenden RAID-Level sind noch nicht standardisiert:

  1. Level 6 Dieser Level wird auch als RAID-5+ bezeichnet. Hier wird die Paritätsbildung so modifiziert, daß so viele fehlerhafte Platten rekonstruiert werden können, wie Gruppen vorhanden sind. Dadurch steigen zwar die Kosten für Speicherplatz, sie liegen jedoch immer noch unter denen von RAID-1.

  2. Level 7 Der Unterschied zu den anderen Levels liegt hier darin, daß RAID-7 asynchron arbeitet. Es existieren unabhängige Datenpfade für jedes Laufwerk und jeden angeschlossenen Kontroller (Jedes Laufwerk hängt z.B. an einem SCSI-Kanal, jeder SCSI-Kontroller hat seinen eigenen Systembus). So führt jeder Datenpfad über einen Hochgeschwindigkeitsbus zum gemeinsamen Cache. Das Kontroller-Betriebssystem sorgt dafür, daß der Datentransfer zwischen Host und Kontrollerschnittstelle unabhängig vom Transfer zu und von den einzelnen Laufwerken erfolgt. So lassen sich mit diesem RAID-Level Transferraten >200 MB/s erzielen. Bei allen anderen RAID-Leveln wird die maximal zu erreichende Datentransferrate durch die Schnittstellengeschwindigkeit des Hostadapters begrenzt.

 

* eine Weiterentwicklung zu MR (Magneto-Resisitive) und GMR (Giant Magneto-Resisitive)- Köpfen macht inzwischen eine Steigerung der Umdrehungsgeschwindigkeit auf 12.000 U/min (Hitachi) möglich. Auch lassen sich jetzt Spurwechselzeiten von unter 1ms erreichen.


hoch hoch zurück