Know How - RAID

oder: Die Sichere Wahl ist immer: Finger weg von RAID

Was ist RAID

[RAID, erklärt von Wikipedia]

RAID steht für "Redundant Array of Inexpensive Disk". Mittlerweile verkommt es zum einem Marketing-Hype weshalb ich diesen Text schreibe um die Leute zu warnen, dieser Hype besser nicht zu erliegen.

Denn RAID ist in 95% der Fälle nicht sinnvoll und bringt mehr Probleme mit sich als es löst.

Ich schreibe das als EDV-Berater mit über 10 Jahren Erfahrung im Internet-Bereich. Ich bin vor Jahren von RAID für meine eigene Infrastruktur (mit inzwischen mehr als 20 Rechnern) abgekommen und bereue diesen Schritt nicht.

Meinung

Meine Meinung habe ich z. B. in folgenden Postings ausgedrückt:

Erfahrung

Meine Erfahrung ist, man benötigt RAID nur in Ausnahmefällen. In den weitaus meisten Fällen kann man auf RAID verzichten, z. B. durch Einsatz von SAN oder LVM die Mirroring beherrschen.

Um es auf den Punkt zu bringen:

  • RAID ist ohne Backup ist nicht zu gebrauchen.
  • Hat man einen funktionierenden Backup braucht man in der Regel RAID nicht.

Hinweis

Dieser Text bezieht sich vor allem auf die gebräuchlichen RAID-Level:
  • RAID 0 Striping: Mehrere Platten zusammengefügt zu einer großen Platte
  • RAID 1 Mirroring: Zwei Platten laufen redundant parallel
  • RAID 5 Parity: Die Kapazität einer Platte wird für die verteilt gespeicherte Parity "verschwendet", so dass das Array den Totalausfall einer Platte verkraftet
Ich beziehe mich nicht auf "moderne RAID-Level" wie:
  • RAID 3
  • RAID 6 Doppelte Parity

Wann RAID

Es gibt folgende Einsatzzenarien von RAID den man rechtfertigen kann:

  • Wenn der Datendurchsatz extrem gesteigert werden muss ist ein RAID-Controller eine günstige Technik dies zu erreichen. RAID-Controller die ein gutes Mirroring beherrschen können so die Datenbankperformance drastisch steigern. Billige RAID-Controller sind aber inzwischen oft langsamer als einzelne Platten.
  • Services mit hoher Verfügbarkeit. Wenn der Ausfall einer Platte nicht den Service stoppen soll, man aber vermeiden will, teures Mirroring zu benutzen, ist RAID5 ein sehr guter Kompromiss. Man muss sich aber im klaren sein, dass ein Rebuild einen Integritätscheck der Daten nach sich ziehen muss. Bei Fileservern geht das z. B. mit Checksum-Tools a la Tripwire gut oder dem Verify eines vorherigen Backups.
  • Wenn man sicherstellen will, dass im Katastrophenfall, also dem Stromausfall, keine Daten verloren gehen, und trotzdem eine sehr hohe Schreibrate benötigt, sind RAID-Controller mit akkugepuffertem RAM sowie qualitativ hochwertigen SCSI-Platten (nicht die billigen SCSI-Platten) eine gute Wahl. Solch eine Lösung ist aber vor allem eines: Teuer wenn sie brauchbar sein soll.
  • Den Durchsatz von Scratch-Platten z. B. für Videoschnitt zu beschleunigen.
Man kann zusammenfassen, dass RAID nur dann Sinn ergibt, wenn man gewillt ist, das notwendige Geld dafür auszugeben. Alleine der gute RAID-Controller kostet mehr als ein ALDI-PC und die guten SCSI-Platten kosten typischerweise das 5 fache einer Consumerplatte.

Wer im Heimbereich Videoschnitt macht wird das Mirror-Feature eines On-Board-"RAID-Controllers" (der gerade mal Mirroring beherrscht) zu schätzen lernen. Das liegt aber eher daran, dass Windows kein ordentliches LVM beherrscht, und somit zur Beschleunigung des Durchsatzes eben auf (billig-) Hardware angewiesen ist. Für eine Scratch-Platte für Arbeiten wie Videoschnitt ist das gerade angemessen.

Merke:
RAID kann in keinem Fall ein Backup ersetzen oder überflüssig machen. RAID schützt die Daten nicht. RAID ist nur eine Methode, nach einem Plattenausfall weiterarbeiten zu können. In 95% aller Fälle kann man auf RAID verzichten. In 100% aller Fälle handelt man sich mit RAID eine höhere Komplexität ein. Jede höhere Komplexität bedeutet unter Garantie immer irgendwann Ärger den man ohne diese niemals hätte.

Der Einsatz von RAID will also gut überlegt sein. Wer sich nicht sicher ist ob er RAID braucht oder nur mit dem Gedanken spielt, weil es eben geht, dem kann ich nur empfehlen:

Wer einen guten Grund hat (siehe oben) der soll RAID mit Bedacht einsetzen. Allen anderen empfehle ich: Finger weg von RAID!

Wenn man RAID braucht aber keine Probleme haben will

Es gibt Firmen, die haben sich auf die Herstellung von Speicherlösungen spezialisiert. Damit meine ich keine Billigfirmen die irgendwelche RAID-NAS-Devices herstellen, sondern echte Speichersubsystemfirmen wie EMC. Brauchbare Lösungen sind teuer und brauchen permanente Wartung durch Experten.

Wer ein eingespieltes eigenes IT-Team hat, in dem langjährig, also in Form einer strategischen Entscheidung, Voll-Admins angestellt werden, die die Speicherlösung warten können, dann kann man deren Urteil über den Einsatz zu RAID vertrauen. Alle anderen Firmen, die eine "Setup and Forget"-Lösung für Speicherlösungen kritischr IT-Infrastruktur suchen und selber nicht über vollamtliche Voll-Admins verfügen müssen für eine brauchbare Lösung auf den Support der Speicherherstellerfirmen zurückgreifen. Einen Mittelweg gibt es bei kritischer Infrastruktur nicht. (Kritisch ist jede Infrastruktur, deren Ausfall Probleme verursachen kann, insbesondere wenn der Ausfall zum falschen Zeitpunkt passiert.)

Eine Remote-Administration von "Billig-RAID-Lösungen" ist nicht möglich. Setzt man in kritischer Infrastruktur RAID ein benötigt dieses permanente Überwachung. EMC usw. erlauben es ihren Speichersystemen, permanent online durch qualifizierte Servicezentren remote zu überwachen und einzugreifen, bevor das 5. der 5 redundanten Netzteile sich mit Rauchzeichen verabschiedet und so fehlende Wartung das Speichersubsystem in einen inkonsistenten Zustand versetzt.

Merke:
Kritische Infrastruktur versteckt sich meist an ganz anderen Orten als man sie vermutet. Der Webserver für die Kunden ist so gesehen gar keine kritische Infrastruktur. Kritisch wird es erst, wenn die Kunden anrufen weil die Web-Präsenz nicht geht und man die Bestellung der Kunden nicht aufnehmen kann weil der Abteilungs-Fileserver steht!

Das macht besonders deshalb einen schlechten Eindruck, weil der Ausfall des Webservers nichts mit dem Ausfall des Fileservers zu tun haben muss, z. B. hat der Kunde vielleicht gerade selber DSL-Probleme und merkt das gar nicht sondern denkt der Lieferant wäre unten. Ist nun das Intranet der Firma gestört sieht es so aus, as hätte die Firma massive interne IT-Probleme, und das setzt die Firma in schlechtes Licht obwohl dieser Eindruck täuscht, da der Kunde über's Web normal bestellen könnte würde seine DSL-Verbindung funktionieren.

Surfer haben inzwischen begriffen, dass Ausfälle im Internet normal sind. Aber wenn der Kunde anruft erwartet er eine funktionierende IT vorzufinden, so dass man sich um sein anliegen sofort kümmern kann. Es ist also immer die Infrastruktur kritisch, die die Firma an der Erbringung ihrer Leistung hindert und dazu gehört das sofortige Reagieren auf Kunden. Im seltensten Fall bedeutet das heutzutage also Webserver oder eMailserver, die klassische IT ist bei den meisten Firmen immer noch viel wichtiger als die Internetkommunikation.

Während RAID also für den Webserver ausreicht, reicht dies für die innere IT oft nicht mehr aus wenn keine zusätzlichen Maßnahmen getroffen werden wie die Firma operabel bleibt selbst wenn das RAID ausfällt! Ein Backup ist in diesem Fall nicht die Rückfallstufe die es einzuplanen gilt, Backups sind für das große Desaster und kleine Malheur (ich habe mir die Datei gelöscht) gut, aber sollten generell keine Rückfallstufe für einen Notbetrieb darstellen. }}

Wann man RAID nicht braucht

Merke:
Mit RAID handelt man sich meistens mehr Probleme ein als man damit löst. RAID ersetzt kein Backup. Backup macht aber in den meisten Szenarien RAID überflüssig.

Moderne Unixe wie AIX von IBM, auch neuere Linuxe, benötigen kein RAID mehr um Mirroring zu betreiben. Es reicht hierfür der LVM (Logical Volume Manager). Wenn eine Firma sich einen Unix-Server anschafft und sich fragt ob RAID5 oder Mirroring per LVM dann geht meine Empfehlung ganz klar in Richtung LVM.

LVM erhöht die Komplexität zwar scheinbar, es bringt aber einen großen Zusatznutzen, denn die Plattenverwaltung wird wesentlich einfacher. Man kann die Strukturen viel einfacher vom Betriebssystem aus per LVM verwalten als sich im Rebuild-Fall mit irgendwelchen Hardware-RAIDs herumschlagen zu müssen. Außerdem erlauben moderne LVMs auch ein mehrfach-Mirroring, also 3 parallele Partitionen für einen Datenbestand zu verwenden.

Dabei verschenkt man weniger Platz als bei einem RAID1, da man nur die Partitionen mirroren lässt die man mirroren muss. Alle anderen Partitionen liegen dann auf weniger Platten. Hat man also 3 Platten, kann man wichtigste Daten auch auf eine 3. Platte mit auslagern so dass man diese zu "Hot-Backup-Zwecken" ggf. entnehmen kann und dabei immer noch Redundanz im System verbleibt.

Auf modernen Systemen ist der Einsatz von LVM eigentlich nicht mehr wegzudenken. Gerade die Möglichkeit, Filesysteme nur so anzulegen wie man sie gerade benötigt und sie später dynamisch den gestiegenen Forderungen anzupassen (zu vergrößern, inzwischen geht oft auch verkleinern), ist ein wesentlicher Vorteil von LVM.

Wenn man nun LVM schon einsetzt, wozu noch eine zweite Technik einsetzen, die die Sache nur komplizierter werden lässt? Im Fall des Falls ist Einfachkeit des Designs immer entscheidend. Je klarer der Aufbau desto weniger Probleme ergeben sich auf Dauer.

Somit ist LVM heute in der Lage die meisten RAID-Strukturen zu ersetzen, und es ist dafür ein mehr als vollwertiger Ersatz, insbesondere für RAID 0 und 1.

Einzig für RAID 5 (und darüber) hat LVM nichts zu bieten.

RAID 5 ist schlechter als sein Ruf

RAID5 erscheint interessant. Es steigert den Datendurchsatz beim Lesen, hat fast keine Nachteile beim Schreiben, und verkraftet einen Plattenausfall.

Aber gerade dies ist das Problem von RAID5. Fällt die Platte aus, dann benötigt RAID5 einen Rebuild. Durch den Plattenausfall ist aber die Parity verloren, d. h. es fehlt die Konsistenzinformation.

Das gute Gefühl das einem ein gutes RAID5 gegeben hat schlägt nach dem ersten Plattenausfall so oft schnell in Bauchschmerzen um. Hat der Rebuild geklappt? Sind die Daten noch OK?

RAID5 ist komplizierter als es den Anschein hat. Die Parity ist über alle Platten verteilt. Das bedeutet, für die korrekte Rekonstruktion der Parity-Information sind immer alle anderen Platten mitverantwortlich. Gerade der Rebuild stellt für typische "Consumer-RAIDs" eine besondere Belastung dar, weshalb Fehler wie dass Platten unvermittelt falsche Sektorinhalte ausliefern gerade in der Rebuild-Phase höher wahrscheinlich sind.

Ich spreche von Consumer-RAIDs, denn das, was ich hier schreibe gilt vor allem für (S)ATA-RAIDs. Consumer-Platten werden vor allem für den Massenmarkt entwickelt, kommen hier aber im Serverbereich zum Einsatz. Daran ist an sich nichts schlechtes und man kann Server jahrelang mit Consumerplatten problemlos betreiben. Aber die Fehleranfälligkeit, oder genauer die Unzuverlässigkeit der Consumer-Platten, wird gerade im RAID-Bereich besonders auffällig.

Ich weiß wovon ich spreche. Ich habe durch den Rebuild schon öfters Inkonsistenzen im RAID erlebt.

Das ist nicht weiter schlimm wenn man in der Lage ist, einen Konsistenzcheck der Daten durchzuführen. Bei einem Webserver dessen Daten hauptsächlich statischer Natur sind (Produktinformationen etc.) ist das oft kein Problem. Hier lässt sich RAID5 einsetzen:

  • Wenn hier also eine Platte ausfällt dann funktioniert er weiter. Auch die Bestelldatenbank bleibt online. Danach macht man den Rebuild.
  • Nur darf man jetzt nicht darauf vertrauen dass alles in Ordnung ist! Man prüft also die statischen Daten auf Korrektheit (Checksumme wie md5sum) und testet die Informationen in der Datenbank, z. B. indem man das Backups vor dem Ausfall zieht, den Rollforward macht und dann das Ergebnis mit dem Backup nach dem Vorfall vergleicht.
  • Sieht man keine Unstimmigkeiten, dann ist alles gut gegangen. In 80% der Fälle ist das auch so. Aber viel zu oft kommt es zu Datenschäden nach dem Rebuild. Für einen Abteilungs-Fileserver kann das fatal sein, wenn solch ein Schaden gerade die Verwaltungsinformation trifft. Alles scheint dann noch zu funktionieren, bis zum nächsten Reboot. Da werden die Verwaltungs-Infos neu eingeladen und plötzlich treten die Schäden zutage. Es kann sogar so sein, dass die Backups in der Zwischenzeit unbrauchbar wurden ohne dass man es gemerkt hat (einige Backups greifen unter Umgehung des Cachings direkt auf die Platteninhalte zu, lesen also die Datenfehler bevor es das Betriebssystem mitbekommt).
Nur wenn man extrem überlegt vorgeht kann RAID5 hilfreich werden. Nach einem Plattenausfall muss man also das System kurz offline nehmen um hinterher den Konsistenzcheck durchführen zu können.

Aber gerade im IT-Bereich wissen wir, dass es eben selten nach den Wünschen der IT läuft. Ein wichtiger Abgabetermin steht an, die Platte muss auch getauscht werden, aber die Entscheidung, dass der Fileserver rebootet werden kann, wird vertagt. Solch eine Entscheidung kann fatal sein. Wer RAID einsetzt muss also sicher sein können, dass er "nach Lehrbuch" handeln darf, wenn es notwendig ist. Anderenfalls erweist sich RAID evtl. als tödlicher Bumerang.

Merke:
Beim Einsatz von RAID muss man sich genau an das notwendige Prozedere halten. Jede Abweichung kann fatal sein. Das macht einen in kritischen Situationen unflexibel.

Wer also RAID einsetzt der sollte sich vorher der Konsequenzen bewusst sein und entsprechend Vorsorge treffen. Wer die Konsequenzen nicht tragen will, der muss eine andere Lösung wählen.

Das bedeutet insbesondere für den Verbraucher: Finger weg von RAID

Der einzige sinnvolle Einsatzzweck im Consumer-Bereich ist hier in Form von RAID0 (Windows XP Professional macht das überflüssig, aber XP-Home wurde um diese Möglichkeit beschnitten) oder RAID1 für den Videoschnitt. Wobei man sich bei letzterem gut überlegen sollte, ob der Einsatz von 2 separaten Platten statt des Mirrors nicht inzwischen besser ist, da die Platten inzwischen einzeln höhere Durchsatzraten erreichen als vor einigen Jahren zwei Platten die optimal zusammenarbeiteten. Die Billig-RAID-Adapter auf den Mainboards können sich nämlich hier durchaus eher als Bremse bemerkbar machen als die Performance noch weiter zu steigern.

Merke:
Für den Consumer gibt es bessere Wege als RAID.

Statt RAID

Wie der Wikipedia-Artikel schon zeigt kommt die Lösung für derartige Probleme von SUN und heißt ZFS (Siehe auch Wikipedia). Leider ist ZFS nicht unbedingt für jeden Fall einsetzbar, da es sich um ein spezielles RAID handelt, das auf einem Filesystem aufsetzt, aber ZFS ist genau das, was man wirklich braucht:

  • ZFS kennt 1 oder 2 Paritäten, d. h. es dürfen 1 oder 2 Disks ausfallen ohne Einschränkungen.
  • ZFS ist in der Lage, einzelne Blöcke als defekt zu erkennen, ganz unabhängig von Paritäten
  • ZFS repariert derartig erkannte defekte Blöcke automatisch. Man braucht keine komplizierten Vorgänge um das zu triggern, ein einfaches Lesen des gesamten Inhalts von ZFS reicht.
  • ZFS kennt kein Write-Hole, da die Transaktionen von ZFS auf Platten-Ebene ablaufen.
Ich hoffe, Linux bekommt bald einen ZFS-Port ;)

-Tino, 2006-06-10, Tippsfehler und Unklarheiten beseitigt, 2006-07-06