Mengoptimalkan pemakaian disk Ceph: memahami replikasi vs erasure coding (EC k+m) yang menghemat kapasitas, menune pool dengan pg_num, target_size_ratio untuk autoscaler, QoS RBD untuk workload multi-tenant, dan memanfaatkan balancer MGR mode upmap.

Snapshot & mirroring sudah dimiliki (episode 14). Episode 15 membahas efisiensi penyimpanan dan penyesuaian: erasure coding & pool tuning — cara Ceph memanfaatkan disk secara maksimal dengan tetap menjaga toleransi kegagalan.
Mengapa penting? Replikasi sederhana (2-3×) menghabiskan banyak disk. Erasure coding menawarkan hemat hingga 33% dengan toleransi yang sama. Dan pool tuning menentukan bagaimana data tersebar & performance. Ini topik yang membedakan "Ceph dipasang" dan "Ceph diperhitungkan".
Setiap object disalin N kali (mis. size 2 atau 3). Sederhana, cepat, tapi boros:
Data dipecah menjadi k blok data + m blok paritas. Contoh k+m = 2+1:
Lebih hemat, namun butuh CPU lebih dan write lebih lambat (paritas).
| Kriteria | Replicated | EC |
|---|---|---|
| Simpler / high throughput | Ya | Kurang |
| Hemat disk | Tidak | Ya |
| Data "dingin"/besar | Kurang | Ya |
| RBD (blok) | Umum | Bisa (pool khusus) |
EC hanya dapat dipakai pada CephBlockPool (dan pool khusus bucket), bukan CephFS object store file biasa:
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: ec-pool
namespace: rook-ceph
spec:
failureDomain: host
erasureCoded:
dataChunks: 2
codingChunks: 1PG (Placement Groups) adalah unit penempatan data ke OSD. Aturan:
pg_num = jumlah PG yang ditarget.pgp_num = PG yang aktif untuk penempatan.Konfigurasi via manifest:
spec:
failureDomain: host
replicated:
size: 2
parameters:
pg_num: "32"
pgp_num: "32"Rumus praktis: awal ~100 PG per OSD di production. Untuk lab 2 node, 32 PG cukup.
Alih-alih pg tetap, gunakan autoscaler dengan rasio target:
spec:
failureDomain: host
replicated:
size: 2
parameters:
target_size_ratio: "0.5"Ceph otomatis menyesuaikan pg sesuai penggunaan pool. Ini mengurangi beban admin.
Di pool RBD, QoS memungkinkan limit IOPS/bandwidth per image — untuk workload multi-tenant yang saling bersaing:
rbd qos limits set replicapool/csi-vol-xxx \
--rw_iops_peak 10000 \
--rw_bps_peak 200MAtau via Manifest pool:
spec:
replicated:
size: 2
parameters:
rbd_qos_iops_limit: "10000" # contoh
rbd_qos_bps_limit: "200M"QoS mencegah satu tenant memonopoli disk.
ceph balancer mode upmapManager balancer mendistribusikan PG secara merata:
ceph balancer mode upmap
ceph balancer on
# cek status
ceph balancer statusupmap memperbaiki distribusi PG tanpa mengganti penempatan secara drastis.ceph balancer status untuk memastikan seimbang.Warning
Jangan menyetel pg_num terlalu besar untuk klaster kecil — PG yang banyak memakai memori MON & OSD. Mulai kecil, pantau ceph health detail untuk PG states (peering, backfill) dan sesuaikan perlahan.
Inti yang harus dibawa pulang:
erasureCoded di CephBlockPool (bukan filesystem).pg_num/pgp_num dan target_size_ratio untuk autoscaler.upmap untuk merata data.Di episode 16 selanjutnya kita akan membahas scaling cluster: OSD, node, dan kapasitas — menambah disk dan node, memantau rebalance otomatis CRUSH/backfill, menskalakan MDS dan RGW, serta capacity planning. Sampai jumpa di episode 16!