Zuverlässiger IT-Betrieb braucht redundante Datenhaltung. Die letzten 30 Jahre nutze man dazu RAID-Systeme, die Technologie ist ausgereift und war bisher völlig ausreichend. Mit zunehmenden Festplattengrößen und dem Einzug von All-Flash-Arrays sowie verteilten Dateisystemen ist eine „einfache“ Redundanz wie sie RAID-Mechanismen bieten nicht mehr ausreichend. Erasure Coding schafft hier Abhilfe. Im Vortrag erklärt Wolfgang Stief, wie Erasure Coding grundsätzlich funktioniert. im ersten Teil erläutert er ein paar Grundideen hinter und Grundbegriffe zu Erasure Coding. Im zweiten Teil beschreibt unser Experte beispielhaft derzeit übliche Implementierungen von Erasure Coding. Er versucht dabei, möglichst ohne Mathematik auszukommen. Außerdem werden im Vortrag Vorteile aber auch Probleme, Grenzen und Fallstricke beim Einsatz von Erasure Coding beleuchtet. Abschließend folgen beispielhaft einige bereits heute übliche Anwendungen für Erasure Coding.
3. $ ls
❖Motivation – Warum überhaupt Erasure Coding?
❖Historie
❖Mathematik
❖Begriffe und Begriffsdefinition
❖Ein einfaches Beispiel
❖Grenzen des Erasure Coding
❖Wie schaut’s in der Praxis aus?
❖Zum Weiterlernen
8. Mathematik
❖ Lineare Algebra, Gleichungssystem, Matrizen
❖ Ingenieurdenke
n Unbekannte erfordern maximal n voneinander
unabhängige Gleichungen.
❖ Erasure Coding
Redundanz gewollt, deshalb für n Unbekannte >n
Gleichungen erforderlich
❖ Ziel: Gleichungen so wählen, dass Redundanz gegeben ist
aber Rechenaufwand und Datentransfer so gering wie
möglich ist.
❖ Erasure Coding == Forward Error Correction
[
1 −3 2
−1 0 4
2 0 1]
1 = 3x1 + 2x2 − x3
−2 = 2x1 − 2x2 + 4x3
0 = − x1 + 4x2 − x3
9. Mathematik
We have studied the problem of (m, n; l, g)
LRC codes and presented some simple
constructions for the case l+g < n. The size
of the field is q≥mn and in some cases
(when in addition, g ≤ l + 1), q ≥ n.
Mario Blaum – On Locally Recoverable (LRC) Codes (Dezember 2015)
https://www.researchgate.net/publication/287854122_On_Locally_Recoverable_LRC_Codes
10. Begriffe
Aufgabe: Daten so auf Storage Nodes verteilen, dass bei Ausfall
einzelner Knoten alle Daten noch benutzbar bzw. rekonstruierbar sind.
Daten Storage Nodes
11. Begriffe – k, n, m – EC(n,k)
Finde eine Codierung so, dass k gleich große Stücke Daten mit m ebenso
großen Stücken Redundanz angereichert und so insgesamt n gleich große
Stücke Information verteilt werden müssen: EC(n,k)
k gleich große Stücke Daten insgesamt n Disks / Storage Nodes
13. Begriffe – Erasure Coding
Fehlerzustand “erasure”:
Information wird unbrauchbar und muss rekonstruiert werden
14. Begriffe – MDS
Maximum Distance Separable (MDS) Code:
Der verwendete EC-Algorithmus kann den Ausfall von m Disks rekonstruieren.
k gleich große Stücke Daten insgesamt n Disks / Storage Nodes
n = k + m
mcodingdisks
15. Begriffe – Notation
❖EC(n,k)
n ➛ Gesamtzahl der Chunks/Platten/Nodes
k ➛ Anzahl der Daten-Chunks (Shards)
m ➛ Anzahl Codierungs-Chunks (m=n-k)
❖Beispiel: EC(20,16)
16 Daten-Chunks, 4 Coding-Chunks
MDS = 4 (n-k)
Overhead = 20/16 = 1,25 (n/k)
k n
m
16. Ein einfaches Beispiel
❖ EC(4,2)
2 Data Shards, 2 Coding Shards
MDS = 2
Overhead = 2
A1+A2
A2
A1A1
A2
A
A1+2A2
split code
😕
18. Repair Problem
❖ u. U. müssen viele (und große)
Chunks bewegt werden
➛ tolerierbar innerhalb Storage-System
➛ Netzwerklast @ RZ/Cloud
❖ Ziel: Optimum aus (n,k) und EC-
Algorithmus
❖ Erweiterung um LRC
Locally Repairable Codes
== Locally Decodable Codes
A2+B1
A2+B2
A1+B1B1
B2
A1
A2
A1➛?
A2➛?
B2
A2+B2
A1+A2+B2
A1+A2+B2
19. Locally Repairable Code – LRC
❖Lokale Parity
nur gültig innerhalb des Nodes
❖Globale Parity
für Erasures > lokal
❖Ausfall einer einzelnen Platte ist
sehr viel wahrscheinlicher, als
Ausfall mehrerer, verteilter
Platten.
❖Lokale Reparatur braucht keine
globale Bandbreite!
LP2 LP3LP1
D2
D4
D1
D3
LP4
D6
D8
D5
D7
GP1
GP2
20. Erasure Coding pro/contra
✓ hohe Redundanz bei vertretbarem Aufwand
mehrfache Replikation braucht vielfachen Platz
✓ robuste Skalierung über viele Nodes
RAID funktioniert nur innerhalb eines Nodes
✓ Gut geeignet für Object Storage und Multimedia-Inhalte
- Repair Problem
- Nicht geeignet für kleine Dateien
häufig Untergrenze für Filesize implementiert, darunter Replikation anstatt EC
21. Implementierungen
❖Kommerziell vs. OpenSource
As usual: kommerzielle Hersteller machen immer “secret sauce”, kaum Details einsehbar.
❖NetApp
EC == RAID-6, NetApp StorageGRID 11.2 Manual
https://library.netapp.com/ecm/ecm_download_file/ECMLP2848253
❖Nyriad NSULATE
High Parity Erasure Coding (max. 255 Parity Disks), Erasure Coding in GPU
https://www.youtube.com/watch?v=BVji7uENZyU&t=2s
❖Scality RING
EC immer auf 12 Disks, Verhältnis Data/Parity darin wählbar, default EC(12,9)
22. Implementierungen
❖Hadoop HDFS
EC by design
Xorbas – LRC-Erweiterung für Hadoop (2013, u. a. Facebook)
❖Ceph
Verschiedene Algorithmen mit individuell anpassbaren Settings
https://docs.ceph.com/docs/mimic/rados/operations/erasure-code/
❖DRBD
Erasure coding. DRBD will be able to erasure code and distribute its data. This provides the same functionality
as RAID5/6, but with an arbitrary number of parity nodes. The result is lower disk usage with similar
redundancy characteristics.
[DRBD-user] drbd-10.0.0a1 (Mailinglist, 2019-08-05)
https://lists.linbit.com/pipermail/drbd-user/2019-August/025180.html
❖Quobyte, Rubrik, Backblaze, Datrium, Hedvig, RozoFS, …
23. ????
❖Google Compute Engine
“Cloud Storage is designed for 99.999999999% (11 9's) annual durability, which is appropriate for even primary
storage and business-critical applications. This high durability level is achieved through erasure coding that
stores data pieces redundantly across multiple devices located in multiple availability zones.”
https://cloud.google.com/storage/docs/faq
❖Amazon S3
❖Microsoft Azure
❖DigitalOcean
Implementierungen – Cloud
24. Zum Weiterlernen
❖Erasure Codes for Large Scale Distributed Storage
https://www.youtube.com/watch?v=TPZyW_CnXGQ
❖Erasure coding for data storage
https://www.youtube.com/watch?v=3R6K7LnqLuk
❖Codierungstheorie
Ralph-Hardo Schulz, Vieweg, 2003
❖Fehlerkorrigierende Codes
Olaf Manz, Springer, 2016
❖Introduction to Error-Correcting Codes
Michael Purser, Artech House, 1994
❖Introduction to the Theory of Error-Correcting Codes
Vera Pless, Wiley, 1998