Löschcodierung 101

Diesen Beitrag teilen

In Produktdatenblättern taucht so gut wie alle Storage-Anbieter auf im Zusammenhang mit Storage-Management immer öfter der Begriff Erasure Codierung (EG) auf. Insbesondere All-Flash-Arrays bieten kein RAID mehr an. Für SSDs eignet sich Erasure Coding sehr viel besser als herkömmliches RAID-5 oder RAID-6. Wir erklären im Artikel Grundbegriffe des Erasure Codings, bestimmte die spezifizierte Funktion und gehen auf Vor- und Nachteile des Erasure Codings ein.

Motiviert ist Erasure Coding durch zwei markante Entwicklungen in der Enterprise-IT. Mit zunehmender Kapazität der Festplatten dauert der Rebuild eines defekten RAIDs immer länger. Es braucht etwa 20 Stunden, um eine aktuelle 16TB-Platte einmal komplett neu zu beschreiben. Um durch das RAID-Rebuild das produktive I/O nicht zu beeinträchtigen, laufen diese Rebuilds in der Regel mit geringerer Priorität im Hintergrund. Das sterben Wiederherstellungszeit entsprechend. Rebuild-Zeiten von 1-2 Tagen sind mittlerweile keine Seltenheit mehr. Darüber hinaus bedeutet die Funktion von RAID-5 oder RAID-6 der Rebuild Einer einzelnen Platte auch viel mechanischen Stress für alle Platten im RAID-Verbund. Es kommt wahrscheinlich vor, dass während eines Rebuilds weitere Platten ausfallen. In Umgebungen mit vielen Festplatten geht man deshalb häufig von RAID-6 hin zu Mehrfach-Replikation. Das komplette Dataset ist auch mehrfach redundant (häufig 3-fach) abgelegt. Das benötigt entsprechend viele Speichermedien und erschwert das Dateimanagement.

Eine weitere Herausforderung ist die zunehmende Verbreitung virtueller Umgebungen sowie von Hyperkonvergente Infrastruktur (HCI). Dateisysteme spannen sich nicht mehr nur über Festplatten bzw. SSDs innerhalb eines Systems. Verteilte Dateisysteme bieten einen einheitlichen Namensraum über mehrere Systeme. Damit ist es sehr einfach möglich, z. B. eine virtuelle Maschine auf einem beliebigen Host innerhalb der HCI zu starten. RAID funktioniert nur innerhalb eines Systems. Mit Erasure Coding kann diese Begrenzung aufgehoben werden.

Löschcodierung. Was ist das?

Löschcodierung gehört in den Bereich der genannten fehlerkorrigierenden Codes, manchmal auch als Forward Error Correction (FEC) bezeichnet. Den wissenschaftlichen Hintergrund hat Erasure Coding im mathematischen Fachgebiet der linearen Algebra. Intensiv suchen werden diese Codes seit ca. den 1960er Jahren. Bereits früh wurden solche Codes für die digitale Datenübertragung über Weitverkehrsstrecken genutzt. Erasure Coding bei Datenträgern wurde erstmals 1982 kommerziell mit der Markteinführung von Audio-CDs genutzt. Löschcodes werden auch auf DVDs und für DVB-S genutzt.

Der bekannteste Algorithmus ist der Reed-Solomon-Algorithmus, benannt nach den beiden Erfindern (beides Mathematiker). Es gibt daneben noch eine Reihe weiterer Algorithmen mit verschiedenen Vor- und Nachteilen. Die Forschung ist noch lange nicht abgeschlossen, mit der intensiven Verwendung von Erasure Coding ergeben sich neue Frage- und Problemstellungen, die es lohnt, im Detail zu betrachten.

Das Grundprinzip dieser Codes ist jedoch immer das Selbe: Daten, die in ein System hineingelangen, werden in eine festgelegte Anzahl gleich großer Brocken (Daten-Chunks) aufgeteilt. Anschließend werden diese Chunks nach mathematischem Verfahren um Redundanzinformationen ergänzt (Redundanz-Chunks). Anschließend werden Daten-Chunks und Redundanz-Chunks auf ein Speichermedium abgelegt. Dabei can für Redundanz-Chunks eigene Platten vorgesehen sein (horizontale Codes) oder die Redundanz Information wird zusammen mit Daten-Chunks auf vergrößerte Platten geschrieben (vertikale Codes). Letzteres ist die weitaus erstellte Methode.

Terminologie und Notation

Eine typische Notation für Erasure Coding wäre so etwas wie EC(20,16) oder EC(12,9). Mathematisch und allgemeingültige Hinweise ist das EC(n,k). Dabei ist n die Anzahl der gesamten Festplatten in einem System, k ist die Anzahl der Datenplatten. Die Differenz n-k ist die Anzahl der für Redundanz benutzten Platten. Das ist gleichzeitig auch die Anzahl an Festplatten, die in einem solchen Verbund ausfallen dürfen, ohne dass die Datenintegrität verletzt wird. In der Praxis sieht man auch immer eingefangen sterben sehr viel leichter verständliche Bezeichnung Löschcodierung 9+3. In diesem Beispiel ist Erasure Coding 9+3 identisch zu EC(12,9). Insgesamt drehen sich in diesem Verbund 12 Platten, 3 davon dürfen ausfallen, ohne dass Daten verloren gehen.

Das Verhältnis Daten- zu Redundanz-Chunks lässt sich abhängig vom verwendeten Algorithmus in Grenzen individuell einstellen. Das Verhältnis hat Auswirkungen auf die Leistung, auf die Anzahl Platten, die ausfallen dürfen, sowie auf eine höhere CPU- und Netzwerkleistung im Recovery-Fall. In der Praxis kann bzw. muss der Storage-Admin selten das Verhältnis individuell festlegen. Hersteller bieten in der Management-Oberfläche id R. mehrere vorkonfigurierte Löschcodierungen. Der Administrator wählt dann nur noch zwischen Optimierung auf Geschwindigkeit, Optimierung auf Kapazität oder Optimierung auf Zuverlässigkeit und überlässt der Firmware, das jeweils passende Erasure Coding aus.

Vorteile des Erasure Coding

Erasure Coding kann mehr und flexiblere Redundanz bieten als RAID-5 und RAID-6. Das haben wir bereits kurz umrissen. Neben den technischen Vorteilen ist bei Erasure Coding id R. auch die Beschaffung der Hardware deutlich günstiger, weil im Vergleich zu RAID für gleiche oder bessere Redundanz deutlich weniger Festplatten benötigt werden.

Ein Rechenbeispiel:

Wir nehmen an, ein Storage-System bietet ein Erasure Coding EC(12,9) bzw. 9+3. Bei einem Setup mit insgesamt 12 Festplatten können auch 3 Platten ausfallen, und die Datenintegrität ist noch immer gegeben. Mit herkömmlichem RAID ist diese Redundanz nicht möglich. Um eine Redundanz größer zwei Platten zu erhalten, würde man dort z. B. auf ein RAID-5 mit drei Replikas zurückgreifen. Wir nehmen weiter an, dass wir moderne 16TB-Festplatten benutzen. Diese Platten kosten derzeit (September 2020) etwa 400€ je Stück. Das EC(12,9) hat neun Datenplatten, also 9 x 16TB = 144 TB nutzbar für Dateisystem. Insgesamt müssen 12 Platten beschafft werden, also 12 x 400€ = 4.800€.

Sehr anders sieht die Rechnung mit gleicher Nutzkapazität aus, aber dreifacher Replikation eines RAID-5 aus. Für 144 TB Nutzkapazität braucht man auch hier 9 Festplatten. Zusätzlich eine zehnte Platte für die Redundanz in einem RAID-5. Weil wir aber dreifach überflüssig schreiben, braucht man schließlich 3 x 10 Disks = 30 Disks. Mit den gleichen 16TB-Platten wie oben kommt man hier auch auf 30 x 400€ = 12.000€ Beschaffungskosten. RAID-5 mit Replikation ist in diesem Beispiel auch zweieinhalb mal so teuer in der Anschaffung, wie ein gleich redundantes System auf Basis Erasure Coding.

Weitere Einsparungen ergeben sich durch den geringeren Platzbedarf (Volumen und Stellfläche) im Rechenzentrum (12 Disks vs. 30 Disks). Damit einhergehend sinken auch Stromverbrauch und Klimaleistung im Serverraum. Letzteres spielt nur eine marginale Rolle bei der TCO-Betrachtung im Gesamtbetrieb.

Jede Medaille hat zwei Seiten

Fällt eine Platte oder ein Storage Node aus, müssen Daten rekonstruiert werden. Dazu werden verschiedene noch intakte Daten-Chunks sowie intakte Redundanz-Chunks gelesen und daraus gemäß Erasure-Coding-Algorithmus sterben fehlenden Daten errechnet. Die Wiederherstellung ist bei Erasure Coding etwas rechenintensiver als das bei herkömmlichem RAID der Fall ist. Abhängig vom Algorithmus kann die Wiederherstellung insbesondere I/O-intensiv sein, weil u. U. viele Chunks gelesen werden müssen. Bei verteilten Dateisystemen muss dieser Umstand bei der Dimensionierung der Netzwerkverbindungen berücksichtigt werden.

Neuere Implementierungen im Bereich HCI und verteilte Dateisysteme benutzt sogenannte Lokal reparierbare Codes (LRC). Redundanz wird dabei so angelegt und verteilt, dass z. B. der Ausfall einer einzelnen Platte innerhalb eines Storage-Nodes auch innerhalb des betroffenen Storage-Nodes wieder rekonstruieren lässt. Es entsteht auch kein zusätzlicher Netzwerk-Traffic im Restore-Fall. Erst bei Ausfall mehrerer Platten oder eines vollständigen Storage-Nodes & Chunks aus vorhandenen Nodes gelesen werden.

Bei Einem RAID-Rebuild WIRD Eine ausgefallene und ersetzte Festplatte blockweise identisch beschrieben mit Status vor dem Ausfall. Bei Erasure Coding wird die Redundanz Information in einem System verteilt abgelegt. Beim Rebuild können die durch einen Plattenausfall fehlenden Daten- und Redundanz-Chunks neu berechnet und auf die verbliebenen Platten im System geschrieben werden. Damit ist die I/O-Leistung einer einzelnen Festplatte nicht mehr der Flaschenhals beim Rebuild, wie das bei RAID der Fall ist.

Viele Enterprise-Storage-Systeme nutzen mittlerweile Erasure Coding. Auch sämtliche Cloudanbieter setzen bei ihren Storage-Produkten auf Erasure Coding. Wir bei Cristie Data setzen Erasure Coding ebenfalls ein, ua bei unseren CLOUDBRIK-Angebote.