Grundlagen – RAID 0 bis 7

RAID im Überblick

Bernhard Haluschak war bis Anfang 2019 Redakteur bei der IDG Business Media GmbH. Der Dipl. Ing. FH der Elektrotechnik / Informationsverarbeitung blickt auf langjährige Erfahrungen im Server-, Storage- und Netzwerk-Umfeld und im Bereich neuer Technologien zurück. Vor seiner Fachredakteurslaufbahn arbeitete er in Entwicklungslabors, in der Qualitätssicherung sowie als Laboringenieur in namhaften Unternehmen.
Christian Vilsbeck war viele Jahre lang als Senior Editor bei TecChannel tätig. Der Dipl.-Ing. (FH) der Elektrotechnik, Fachrichtung Mikroelektronik, blickt auf langjährige Erfahrungen im Umgang mit Mikroprozessoren zurück.

RAID-Verfahren mit Fehlerkorrektur

Zwar bietet Mirroring perfekte Redundanz, verursacht jedoch gleichzeitig einen hohen Overhead und entsprechend hohe Kosten. Um diesen Nachteil zu beheben, arbeiten die RAID-Level 2 bis 7 mit Fehlerkorrektur. Sie verteilen zunächst die Nutzdaten per Striping auf wenigstens zwei Datenlaufwerke. Aus deren Dateninhalt wird anschließend ein Korrekturwert errechnet, mit dessen Hilfe sich nach einem Ausfall die Daten des defekten Laufwerks wieder rekonstruieren lassen. Dieser ECC-Code wird auf einem eigenen Parity-Laufwerk abgelegt.

Dabei setzt RAID auf eines der ältesten Verfahren zur Fehlerkorrektur, die Paritätsprüfung. Dazu verknüpft es die Daten der Nutzlaufwerke über eine logische Exklusiv-Oder-Operation (XOR) und speichert das Resultat auf einem eigenen Parity-Laufwerk. Das Ergebnis der Verknüpfung ist dann 1, wenn eine ungerade Anzahl von Bitstellen eine 1 aufweist. Bei einer geraden Anzahl dagegen ist das Ergebnis 0:

Parity-Generierung

Laufwerk

Inhalt

Laufwerk A

11101100

Laufwerk B

10110011

Laufwerk C

01001101

Parity-Laufwerk

00010010

Fällt nun ein beliebiges Laufwerk aus, lassen sich durch ein erneutes XOR die verloren gegangenen Daten problemlos rekonstruieren:

Fehlerkorrektur durch Parity

vor dem Ausfall

Ausfall eines Datenlaufwerks

Ausfall des Parity-Laufwerks

Laufwerk A

11101100

11101100

11101100

Laufwerk B

10110011

xxxxxxx

10110011

Laufwerk C

01001101

01001101

01001101

Parity-Laufwerk

00010010

00010010

xxxxxxx

Datenrekonstruktion

10110011

00010010

ECC-Overhead bei Schreiboperationen

Zwar reduzieren die paritätsbasierten RAID-Varianten den für die Datensicherheit notwendigen Kapazitäts-Overhead deutlich. Er beträgt maximal ein Drittel, bei Verwendung mehrerer Nutzdatenlaufwerke sinkt er weiter ab. Andererseits erfordert das Update der Parity-Informationen beim Speichern von Daten zusätzliche Schreib- und Lesezugriffe.

Die Aktualisierung der ECC-Informationen kann auf zwei Wegen erfolgen. In der einfacheren Variante schreibt der RAID-Controller nach dem Eintreffen eines neuen Datenblocks diesen zunächst auf ein Laufwerk. Anschließend liest er die von der Operation betroffenen Blöcke aller Laufwerke ein, errechnet die resultierende Parity und schreibt diese zurück auf das ECC-Laufwerk. Diese Methode erfordert pro Schreiboperation einen zusätzlichen Zugriff auf alle Platten des Verbunds.

In der komplexeren Variante des Updates liest der Controller zunächst lediglich den zu überschreibenden Datenblock ein. Nun berechnet er per XOR, an welchen Stellen sich ein Bit geändert hat. Anschließend liest er den alten ECC-Block und verknüpft ihn erneut per XOR mit dem zuvor gewonnenen Resultat. Als Ergebnis erhält er den neuen Parity-Block und kann diesen zurückspeichern. Anders als bei der ersten Update-Methode müssen hier nur zwei Laufwerke des Arrays angesprochen werden.

Zur Startseite