Belajar Kubernetes Distributed Storage - Erasure Coding & Pool Tuning
Episode 15 of 28

Belajar Kubernetes Distributed Storage - Erasure Coding & Pool Tuning

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.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

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".

Replication vs Erasure Coding (EC)

Replication (Replicated Pool)

Setiap object disalin N kali (mis. size 2 atau 3). Sederhana, cepat, tapi boros:

  • size 2 → 2× disk.
  • size 3 → 3× disk.

Erasure Coding (EC)

Data dipecah menjadi k blok data + m blok paritas. Contoh k+m = 2+1:

  • 2 blok data + 1 paritas.
  • Tahan 1 kerusakan, dengan hanya 3 blok total untuk 2 data = hemat ~33% vs 3 salinan.

Lebih hemat, namun butuh CPU lebih dan write lebih lambat (paritas).

Kapan Pakai

KriteriaReplicatedEC
Simpler / high throughputYaKurang
Hemat diskTidakYa
Data "dingin"/besarKurangYa
RBD (blok)UmumBisa (pool khusus)

EC di Rook

EC hanya dapat dipakai pada CephBlockPool (dan pool khusus bucket), bukan CephFS object store file biasa:

yaml
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
  name: ec-pool
  namespace: rook-ceph
spec:
  failureDomain: host
  erasureCoded:
    dataChunks: 2
    codingChunks: 1

Pool Tuning

pg_num / pgp_num

PG (Placement Groups) adalah unit penempatan data ke OSD. Aturan:

  • pg_num = jumlah PG yang ditarget.
  • pgp_num = PG yang aktif untuk penempatan.
  • Keduanya sebaiknya sama (pgp ≤ pg).

Konfigurasi via manifest:

yaml
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.

target_size_ratio (Autoscaler)

Alih-alih pg tetap, gunakan autoscaler dengan rasio target:

yaml
spec:
  failureDomain: host
  replicated:
    size: 2
  parameters:
    target_size_ratio: "0.5"

Ceph otomatis menyesuaikan pg sesuai penggunaan pool. Ini mengurangi beban admin.

QoS (RBD QoS)

Batasi I/O per Image

Di pool RBD, QoS memungkinkan limit IOPS/bandwidth per image — untuk workload multi-tenant yang saling bersaing:

Set QoS pada image RBD (di toolbox)
rbd qos limits set replicapool/csi-vol-xxx \
  --rw_iops_peak 10000 \
  --rw_bps_peak 200M

Atau via Manifest pool:

yaml
spec:
  replicated:
    size: 2
  parameters:
    rbd_qos_iops_limit: "10000"      # contoh
    rbd_qos_bps_limit: "200M"

QoS mencegah satu tenant memonopoli disk.

Balancer MGR

ceph balancer mode upmap

Manager balancer mendistribusikan PG secara merata:

Aktifkan balancer (di toolbox)
ceph balancer mode upmap
ceph balancer on
# cek status
ceph balancer status
  • Mode upmap memperbaiki distribusi PG tanpa mengganti penempatan secara drastis.
  • Balancer berjalan periodik — pantau 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.

Penutup

Inti yang harus dibawa pulang:

  • Replication sederhana (size N) vs EC k+m — EC hemat disk ~33% dengan toleransi sama.
  • EC pada Rook: erasureCoded di CephBlockPool (bukan filesystem).
  • Tune pool dengan pg_num/pgp_num dan target_size_ratio untuk autoscaler.
  • QoS RBD untuk isolasi multi-tenant; balancer MGR mode 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!