Erasure Coding (EC)
Erasure Coding (EC) ist eine Methode, um Daten abzusichern. Dabei teilt man die Daten in Fragmente auf, die wiederum mit redundanten Daten-Stücken erweitert und kodiert werden. Danach speichert man diese über verschiedene Standorte verteilt zum Beispiel auf Festplatten, Storage-Knoten (Nodes) oder auch geografisch verteilten Speicherorten.
Das Ziel von Erasure Coding ist, dass man beschädigte Dateien rekonstruieren kann. Dabei verwendet man die Informationen der Daten, die an anderer Stelle im Storage oder im jeweiligen Array abgelegt sind.
Erasure Coding generiert eine mathematischen Funktion, um eine bestimmte Anzahl an Zahlen zu definieren. Diese kann die Software auf Exaktheit überprüfen und wiederherstellen, falls eine Zahl fehlt. Das Schlüssel-Konzept zu Erasure Coding referenziert auf Polynom-Interpolation oder Oversampling (Überabtastung). Mathematisch gesprochen lässt sich der durch Erasure Coding angebotene Schutz durch die einfache Gleichung darstellen: n = k + m. Die Variable „k“ steht für die Anzahl der Daten oder Symbolen im Original. Die Variable „m“ repräsentiert zusätzliche oder redundante Zeichen, um den Ausfallschutz zu gewährleisten. Die Variable „n“ ist die gesamte Anzahl der Zeichen, die nach dem Erasure-Coding-Prozess in Benutzung sind.
In einer Konfiguration EC 10/16 (zehn von 16), würde man zum Beispiel den zehn Grundzeichen (k) sechs zusätzliche Zeichen (m) anfügen. Diese 16 Daten-Fragmente (n) verteilt man im Anschluss auf Festplatten, Nodes oder geografisch verteilte Speicherorte. Die Original-Datei ließe sich mit zehn verifizierten Fragmenten wiederherstellen.
Erasure Codes sind auch als FEC (Forward Error Correction) bekannt. Erasure Coding wurde bereit vor mehr als 50 Jahren entwickelt. Seit dieser Zeit haben sich mehrere verschiedene Arten herausgebildet. Eine der ersten und bekanntesten Ansätze ist Reed-Solomon. In diesem Fall lassen sich die Daten mit jeglicher Kombination aus „k“-Zeichen oder Daten-Stücken rekonstruieren, auch wenn die „m“-Zeichen verlorengegangen oder nicht verfügbar sind. Bei einem EC-10/16-Szenario können also sechs Festplatten, Nodes oder Speicherstandorte nicht erreichbar sein und die Original-Datei ließe sich dennoch regenerieren.
Erasure Coding kann bei sehr großen Datenmengen nützlich sein sowie für Applikationen oder Systeme, die Fehler-tolerant sein müssen. Dazu gehören Disk-Arrays, Data Grids, verteilte (distributed) Storage-Applikationen, Objekt-Speicher (Object Store) und Archive. Ein modernes Beispiel für einen Anwendungsfall von Erasure Coding ist Objekt-basiertes Cloud-Storage.