Wie wählt man die Erasure-Code-K- und M-Zahlen aus?
Wie Fehlerkorrektur funktioniert:
Die Ceph-Löschcode-Parameter K & M betreffen die nutzbare Kapazitätseffizienz und die Redundanz gegen Hardwareausfälle. K ist die Anzahl der Datenstücke und M ist die Anzahl der Codierungsstücke. Wenn ein Client ein Datenobjekt in den Ceph-Speichercluster schreibt, wird das Datenobjekt in K gleich große Datenchunks aufgeteilt. Ceph verwendet die Datenstücke, um M Codierungsstücke zu codieren, die verwendet werden, um die verlorenen Datenstücke zu berechnen, wenn die Hardware ausfällt.
Datenblöcke und Codeblöcke werden im angegebenen Fehlerbereich von K+M verteilt und gespeichert. Die maximale Anzahl an Datenblöcken, die verloren gehen kann, sind M Fehlerbereiche. Die verfügbaren Fehlerbereiche hängen davon ab, wie die Speicherserver innerhalb der physischen Infrastruktur zugewiesen sind. Bei einem kleinen Ceph-Cluster könnte der Fehler eine Festplatte oder Serverhosts sein. Bei größeren Clustern kann der Fehlerbereich die Server-Racks, den Serverraum oder das Rechenzentrum usw. sein.
Das Datenobjekt wird aus den Datenfragmenten rekonstruiert, wenn der Client die Daten lesen möchte.
Speicherleistung
Im Vergleich zum Ceph-Datenreplikationsalgorithmus bietet die Löschcodierung in der Regel eine bessere nutzbare Raumeffizienz. Da der Löschcode mehr Festplatten-I/O-Operationen benötigt, um die Daten-I/O abzuschließen, ist er weniger freundlich zu IOPS-intensiven Arbeitslasten. Je größer die Anzahl von K+M ist, desto mehr Festplatten-IOPS-Ressourcen verbraucht die I/O-Operation.
Bei der Verwendung von größeren K und kleineren M wird die Gesamtanzahl der übertragenen Bytes im Ceph-Cluster-Netzwerk geringer sein. Dies könnte die I/O-Durchsatzleistung von großen Datenobjekten erhöhen.
Platzeffizienz
Die nutzbare Raumeffizienz eines Löschcode-Pools ist gleich K/(K+M). Zum Beispiel beträgt die Raumeffizienz des Löschcode-Pools mit K=4 und M=2 4/6 = 66,7 %. Dies ist doppelt so effizient wie Replica-3-Pools, die eine höhere IOPS-Leistung bei demselben Niveau an Hardware-Redundanz bieten.
Ein angemessenes K ist größer als M aufgrund der Effizienz des nutzbaren Speicherplatzes. Der größere (K-M) Löschcode erzielt eine bessere Raumeffizienz.
Anzahl der Server-Hosts
Die Anzahl von K+M bestimmt auch die Anzahl der Hosts oder größeren Ausfallbereiche, die im Cluster erforderlich sind.
- Ein typischer Löschcode-Pool benötigt mindestens K+M Server-Hosts, um alle EC-Chunks vollständig zu verteilen.
- Eine fortschrittliche Löschcode-Konfiguration ermöglicht das Speichern mehrerer EC-Chunks pro Ausfallbereich. Diese Konfiguration reduziert die erforderliche Anzahl von Servern zur Verteilung von EC-Chunks.
Zusammenfassung der Einflüsse von Löschcode K & M:
- M bestimmt die redundante Anzahl von Ausfallbereichen.
- Ein größeres K + M führt zu einer verringerten IOPS-Leistung für kleine Objekte bei Clients, verbessert jedoch den Durchsatz für größere Objekte.
- Speicherplatzeffizienz = K/(K+M)
- Minimale Anzahl der erforderlichen Server.