Komprimierung: Standardmäßig deaktiviert
Ab und zu erreicht uns die Frage, ob die Komprimierung in Ceph Pools standardmäßig aktiviert ist oder nachträglich aktiviert werden kann. Ceph Pools werden standardmäßig ohne Komprimierung erstellt, d.h. alle Daten werden unkomprimiert gespeichert.
Der Grund dafür ist, dass Komprimierung zwar in vielen Fällen sinnvoll ist, es im Einzelfall aber von den Daten und den Anforderungen abhängt, ob sie sinnvoll ist. Die Komprimierung und Dekomprimierung der Daten erfordert etwas mehr CPU Leistung und kann deshalb die Performance des Systems beeinflussen. Bei schnellen NVMe-Devices könnte die Leistung durch Komprimiereung sinken, weil vor jedem Speichervorgang zunächst eine Komprimierung der Daten durchgeführt wird. Bei langsamen Datenträgern dagegen könnte die Leistung sogar steigen, weil die Komprimierung in der CPU schneller durchgeführt werden kann als die Daten auf die Disks geschrieben werden - und da komprimiert weniger Daten auf die Disk geschrieben werden müssen kann es die Leistung erhöhen.
Daher ist es wichtig, die Komprimierung bewusst einzusetzen und die Vor- und Nachteile abzuwägen.
Konfigurationsmöglichkeiten für jeden Bedarf
Die gute Nachricht ist, dass die Komprimierung in Ceph Pools flexibel konfiguriert werden kann. Sie können die Komprimierung jederzeit aktivieren und wieder deaktivieren. Wichtig ist dabei zu wissen, dass nach der Aktivierung der Komprimierung nur neu geschriebene Daten komprimiert gespeichert werden. Bestehende Daten im Pool werden nicht nachträglich komprimiert.
Um die Komprimierung optimal an Ihre Bedürfnisse anzupassen, stehen Ihnen verschiedene Konfigurationsmöglichkeiten zur Verfügung:
1. Komprimierungsmodus: Sie können festlegen, wann Daten komprimiert werden sollen. Dies geschieht über die Option compression_mode
.
Verfügbare Modi sind:
none
: Es findet keine Komprimierung statt. Dies ist die Standardeinstellung.passive
: Nur Daten, bei denen der Client explizit eine Komprimierung anfordert, werden komprimiert.aggressive
: Alle Daten werden komprimiert, es sei denn, der Client verbietet die Komprimierung explizit.force
: Alle Daten werden komprimiert.
Beispiel: Um den Komprimierungsmodus auf "aggressive" zu setzen, verwenden Sie folgenden Befehl:
ceph osd pool set <pool-name> compression_mode aggressive
2. Kompressionsalgorithmus: Ceph unterstützt verschiedene Kompressionsalgorithmen. Die Wahl des richtigen Algorithmus hängt von Ihren spezifischen Anforderungen ab.
Einige verfügbare Algorithmen sind beispielsweise:
lz4
: Priorität liegt auf Geschwindigkeit, bietet eine gute Balance zwischen Kompressionsrate und Performance.snappy
: Bietet eine moderate Kompressionsrate mit guter Performance.zlib
: Ermöglicht höhere Kompressionsraten, benötigt aber mehr Rechenleistung.zstd
: Bietet eine hohe Kompressionsrate und gute Performance, besonders für große Datenmengen.
Beispiel: Um den Kompressionsalgorithmus auf "zstd" zu setzen, verwenden Sie folgenden Befehl:
ceph osd pool set <pool-name> compression_algorithm zstd
3. Kompressionsschwellwert: Sie können einen Schwellwert festlegen, ab dem komprimierte Daten auch tatsächlich komprimiert gespeichert werden. Dies geschieht über die Option compression_required_ratio
. Der Standardwert ist 0,875. Dies bedeutet, dass Daten nur dann komprimiert gespeichert werden, wenn die komprimierte Größe weniger als 87,5% der ursprünglichen Größe beträgt.
Beispiel: Um den Kompressionsschwellwert auf 0,8 zu setzen, verwenden Sie folgenden Befehl:
ceph osd pool set <pool-name> compression_required_ratio 0.8
4. Minimale und maximale Blockgröße: Sie können die minimale und maximale Größe der Datenblöcke festlegen, die komprimiert werden sollen. Dies geschieht über die Optionen compression_min_blob_size
und compression_max_blob_size
.
compression_min_blob_size
: Datenblöcke, die kleiner als dieser Wert sind, werden nicht komprimiert.compression_max_blob_size
: Datenblöcke, die größer als dieser Wert sind, werden in kleinere Blöcke aufgeteilt, bevor sie komprimiert werden.
Beispiel: Um die minimale Blockgröße auf 128 KB und die maximale Blockgröße auf 4 MB zu setzen, verwenden Sie folgende Befehle:
ceph osd pool set <pool-name> compression_min_blob_size 128K
ceph osd pool set <pool-name> compression_max_blob_size 4M
Wann sollte man auf Komprimierung verzichten?
Obwohl die Komprimierung viele Vorteile bietet, gibt es auch Situationen, in denen man auf sie verzichten sollte:
- Performance von NVMe-Devices ausreizen: Wenn Sie schnelle NVMe-SSDs verwenden und die maximale Anzahl an IOPS (Input/Output Operations Per Second) erreichen möchten, kann die Komprimierung die Performance beeinträchtigen. In diesem Fall ist es möglicherweise besser, auf die Komprimierung zu verzichten.
- Nicht komprimierbare Daten: Bestimmte Datentypen, wie z.B. Bilder, Videos und verschlüsselte Dateien, lassen sich nur schwer oder gar nicht komprimieren. In solchen Fällen bringt die Komprimierung keinen Vorteil und kann sogar zu einem erhöhten Speicherplatzbedarf, auf jeden Fall aber sinnlos zu einer höheren CPU-Last führen.
Zusätzliche Tipps
- Überwachen Sie die Performance: Beobachten Sie die Performance Ihres Ceph Clusters nach der Aktivierung der Komprimierung. Wenn Sie Performanceeinbußen feststellen, können Sie die Konfiguration anpassen oder die Komprimierung für bestimmte Pools deaktivieren.
- Testen Sie verschiedene Algorithmen: Experimentieren Sie mit verschiedenen Kompressionsalgorithmen, um den besten Kompromiss zwischen Kompressionsrate und Performance für Ihre Daten zu finden. Wenn Sie Wert auf Performance legen, sollten Sie
lz4
verwenden. Wenn Sie möglichst effektiv den benötigten Speicherplatz reduzieren möchten, sollten Siezstd
benutzen. Auch andere Algorithmen können sinnvoll sein, wenn Sie spezifische Anforderungen haben. - Kombination von Komprimierungsmodi: Für eine fein abgestimmte Kontrolle können Sie verschiedene Komprimierungsmodi kombinieren. Beispielsweise könnten Sie standardmäßig die Komprimierung aktivieren, aber Clients erlauben, die Komprimierung für bestimmte Daten zu deaktivieren.
- Nutzen Sie die Dokumentation: Die offizielle Ceph Dokumentation bietet detaillierte Informationen zur Konfiguration der Pool Komprimierung. Den relevanten Teil finden Sie unter https://docs.ceph.com/en/reef/....
Was also tun?
Die Ceph Pool Komprimierung ist eine nützliche Funktion, mit der Sie Speicherplatz sparen und die Kosten für Ihre Ceph Infrastruktur reduzieren können. Durch die flexible Konfiguration können Sie die Komprimierung an Ihre individuellen Bedürfnisse anpassen.
Denken Sie daran, dass die Komprimierung nicht immer die beste Lösung ist. Wägen Sie die Vor- und Nachteile sorgfältig ab und überwachen Sie die Performance Ihres Systems, um die optimale Konfiguration zu finden. Durch den Einsatz der Ceph Pool Komprimierung können Sie ihre Speicherinfrastruktur optimieren, wenn ihre Daten und ihr Einsatzzweck geeignet sind.