Vorab sollten Sie sich mit den Grundlagen eines EC-Pools vertraut machen, dazu haben wir den Artikel "Was ist Erasure Coding und warum sollte man es nutzen?" für Sie vorbereitet.
Erstellen eines EC-Profil
Um einen EC-Pool anlegen zu können müssen in CEPH vorab entsprechende Profile angelegt werden, diese Profile sind letztlich auch nur Crush Rules.
Mit dem nachfolgenden Befehl legen wir eine neue Rule mit dem Namen "ec-32-profile
" an, in dieser Rule wollen wir "k=3
" und "m=2
" setzen, wir wollen ebenfalls die Ausfallsicherheit auf die Hosts verteilen "crush-failure-domain=host
" und für den neuen EC-Pool auch nur SSDs verwenden "crush-device-class=ssd
":
ceph osd erasure-code-profile set ec-32-profile k=3 m=2 crush-failure-domain=host crush-device-class=ssd
Für den Profilnamen empfehlen wir einfach die Werte für K
und M
aufzunehmen, so ist auf den ersten Blick klar, was dieses Profil macht.
Anlegen des Pools
Der Pool mit dem Namen "ceph_ec32
" kann mit folgendem Befehl angelegt werden:
ceph osd pool create ceph_ec32 128 erasure ec-32-profile
Pool für virtuelle Maschinen nutzen (z.B. Proxmox)
Um den EC-Pool für virtuelle Maschinen nutzen zu können, müssen wir noch ein Overwrite erlauben und diesen für die RBD aktivieren, das erledigen wir mit den nachfolgenden Befehlen:
ceph osd pool set ceph_ec32 allow_ec_overwrites true
ceph osd pool application enable ceph_ec32 rbd
Um noch zusätzlich Speicherplatz einzusparen, lässt sich ebenfalls noch die Komprimierung aktivieren:
ceph osd pool set ceph_ec32 compression_algorithm snappy
ceph osd pool set ceph_ec32 compression_mode aggressive