Was ist Erasure Coding und warum sollte man es nutzen?

Neben den üblichen "Replicated Pools" lassen sich in CEPH ebenfalls Erasure Coding Pools anlegen. Doch warum sollte man Erasure Coding überhaupt verwenden und was bringt es mir?

Grundlagen

Erasure Coding Pools optimieren den nutzbaren Speicherplatz im Vergleich zu der üblichen Replica. Die Replica lässt sich im Grunde mit einem RAID 1 vergleichen wohingegen Erasure Coding mehr ein RAID 5 bzw. RAID 6 abbildet.

Für Erasure Coding sind zwei Werte ausschlaggebend, das ist "K" und "M", zusätzlich wird hier noch der Begriff "chunk" verwendet.

Was ist ein "Chunk"?

Der Chunk gibt den entsprechenden Datenblock als solchen zurück. Im Recovery Fall muss das Objekt als solches wiederhergestellt werden, da bei einem OSD Ausfall davon auszugehen ist, dass mindestens eine Kopie von K oder M nicht mehr vorhanden ist, können die restlichen Kopien von K oder M zur Rekonstruktion verwendet werden bzw. werden neu errechnet. Letztlich erhält man so wieder das ursprüngliche und originale Objekt.

Was ist "K"?

Bei "K" handelt es sich um den "Data Chunk". Dieser gibt an in wie viele Teile das originale Objekt geteilt wird. Wenn z.B. K = 3 wird ein 3M Objekt in 3(K) 1M aufgeteilt.

Was ist "M"?

Bei "M" handelt es sich um den "Coding Chunk". Dieser wird errechnet und auf anderen OSDs abgelegt wie "K", zeitgleich gibt dieser auch an, wie viele OSDs maximal ausfallen können ohne permanenten Datenverlust. Wenn M = 2 ist, so können maximal 2 OSDs ohne Datenverlust ausfallen.

Mindestanforderungen

Damit man Erasure Coding auch produktiv einsetzen kann, sollte man M immer mindestens auf 2 setzen. Bereits bei den Einstellungen K = 3 und M = 2 werden mindestens 5 Storage Server benötigt. Die Anzahl der Server ergibt sich dabei immer aus K + M = Anzahl der Storage Server. Die Effizienz bei K = 3 und M = 2 liegt bereits bei 60%, mit K = 4 und M = 2 sind es bereits 66,67%. In einem größeren CEPH Storage könnte man so auch K = 17 und M = 3 einstellen und liegt damit bei 85%.

Je Größer die Anzahl K also ist, desto höher ist auch die Effizienz der Speichernutzung. Jedoch hat dies auch wieder den Nachteil, dass bei einem Schreibvorgang alle involvierten OSDs (K + M) geupdatet werden müssen, was also zu einem Performance Problem werden könnte. Die Kombination dieser Werte sollte daher zuvor evaluiert werden um hier die bestmöglichen Vorteile erzeugen zu können.

Beliebte Kombinationen sind K = 4 und M = 2 mit 66,67% Effizienz (dafür werden mindestens 6 Storage Server benötigt) und K = 8 und M = 3 mit 72,73% Effizienz (dafür werden mindestens 11 Storage Server benötigt).

Praktische Beispiele

Als Beispiel nehmen wir einen CEPH Storage mit 30 OSDs mit je 960GB Speicherplatz, dann stehen gesamt 28,8TB zur Verfügung.

Zum Schutz der Daten wird eine Replica von 3 verwendet, so können zwei OSDs ausfallen ohne einen Datenverlust. Somit stehen von den 28,8TB noch lediglich 9,6TB Speicherplatz zur Verfügung, der Rest wird für die Replica verwendet.

Nehmen wir selbes Beispiel bei Erasure Coding mit K = 3 und M = 2, so können von den Gesamt 28,8TB noch 14,4TB genutzt werden. Auch hier können zwei OSDs ausfallen ohne einen Datenverlust. Dieser Pool wäre von der Ausfallsicherheit gesehen äquivalent zur normalen 3-fachen Replication, doch benötigt dieser 4,8TB weniger Speicherplatz, der nun anderweitig verwendet werden kann.

Der nutzbare Speicherplatz lässt sich mit der Formel "Anzahl OSDs * (K/(K+M)) * Größe der OSD * Nearfull Ratio" errechnen. Praktisch könnte das ganze für unseren Fall hier dann so aussehen "(30 * (3/(3+2)) * 960) * 0,85", dies ergibt 14.688 GB Speicherplatz, welcher im besten Fall nutzbar ist.

  • ceph, erasure, erasure coding, coding, ec
  • 4 Benutzer fanden dies hilfreich
War diese Antwort hilfreich?

Verwandte Artikel

Erasure Coding Pool erstellen

Vorab sollten Sie sich mit den Grundlagen eines EC-Pools vertraut machen, dazu haben wir den...

Keyring erstellen

Wie auch bei anderen IT-Systemen sollten man die Benutzerberechtigungen immer nach dem...

Was ist CEPH?

Bei CEPH handelt es sich um eine "Software-Defined Storage-Lösung", diese Lösung läuft im Grunde...