Belajar Kubernetes Distributed Storage - Snapshot & Clone (CSI + RBD/CephFS)
Episode 14 of 28

Belajar Kubernetes Distributed Storage - Snapshot & Clone (CSI + RBD/CephFS)

Membuat snapshot RBD dan CephFS via VolumeSnapshotClass, merestorasi PVC baru dari snapshot secara instan, menduplikasi volume dengan CSI clone untuk staging, serta memperkenalkan RBD mirroring sebagai fasilitas disaster recovery antarkluster.

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

Pendahuluan

Storage sudah dikunci keamanannya (episode 12-13). Episode 14 membuka kecepatan data engineering di Ceph: snapshot, clone, dan mirroring — alat yang membuat operasi data aman dan cepat.

Mengapa penting? Snapshot memungkinkan kalian kembali ke titik aman sebelum upgrade/migrasi; clone mendukung environment pengembangan tanpa duplikasi besar. RBD mirroring adalah fondasi DR antarkluster. Semua ini native di Ceph — dan di episode 14 kalian memakainya.

VolumeSnapshot RBD

VolumeSnapshotClass

yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-rbdplugin-snapclass
driver: rook-ceph.rbd.csi.ceph.com
deletionPolicy: Delete
parameters:
  clusterID: rook-ceph
  csi.storage.k8s.io/snapshotter-secret-name: rook-csi-rbd-provisioner
  csi.storage.k8s.io/snapshotter-secret-namespace: rook-ceph

Buat VolumeSnapshot

yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: postgres-snap
spec:
  volumeSnapshotClassName: csi-rbdplugin-snapclass
  source:
    persistentVolumeClaimName: data-postgres-0

RBD snapshot dibuat near-instant (redan header + COW).

Restore ke PVC Baru

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-restore
spec:
  accessModes: ["ReadWriteOnce"]
  storageClassName: rook-ceph-block
  resources:
    requests:
      storage: 10Gi
  dataSource:
    name: postgres-snap
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io

CephFS Snapshot

CephFS juga mendukung snapshot per-subvolume. Buat VolumeSnapshotClass untuk CephFS:

yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-cephfsplugin-snapclass
driver: rook-ceph.cephfs.csi.ceph.com
deletionPolicy: Delete
parameters:
  clusterID: rook-ceph

Lalu snapshot PVC CephFS (laravel-media), restore ke PVC baru dengan dataSource yang sama. Ini sangat berguna untuk "snapshot media folder" sebelum upgrade aplikasi.

Clone Volume (CSI)

Clone = duplikasi volume penuh tanpa snapshot:

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-clone-dev
  namespace: staging
spec:
  accessModes: ["ReadWriteOnce"]
  storageClassName: rook-ceph-block
  resources:
    requests:
      storage: 10Gi
  dataSource:
    kind: PersistentVolumeClaim
    name: data-postgres-0
    apiGroup: ""

Kapan Memakai Clone

  • Membuat environment staging identik dengan production.
  • Persiapan development yang butuh data riil.
  • Clone lebih cepat dari restore karena read & write parallel di pool yang sama.

Fasilitas RBD mirroring (DR)

CephRBDMirror — Replikasi Async Antar Cluster

RBD mirroring mereplikasi image RBD dari cluster utama ke cluster sekunder secara asinkron — untuk DR lintas DC/colo.

yaml
apiVersion: ceph.rook.io/v1
kind: CephRBDMirror
metadata:
  name: rbd-mirror
  namespace: rook-ceph
spec:
  count: 1

Kemudian aktifkan mirroring pada pool yang diinginkan (mode pool atau image), dan siapkan peer bootstrap (token antar cluster). Lalu Prometheus memonitor status mirror.

Sejak v1.14+, RBD mendukung NVMe-oF — attach block menggunkan NVMe-oF — mengurangi latency untuk low-latency DB (episode 19).

Note

RBD Mirroring itu asinkron — bisa ketinggalan beberapa detik/menit dari sumber. Ini bukan pengganti quorum lokal; pasangan yang tepat dengan snapshot untuk RPO/RTO menengah. Kita bedah DR penuh di episode 20-21.

Penutup

Inti yang harus dibawa pulang:

  • VolumeSnapshotClass RBD & CephFS → snapshot instan, restore ke PVC baru via dataSource.
  • CSI clone → duplikasi penuh untuk staging/development.
  • RBD Mirroring (CephRBDMirror) → replikasi asinkron antarkluster untuk DR.
  • Snapshot + mirroring = kombinasi safety net yang lengkap untuk volume kritis.

Di episode 15 selanjutnya kita akan membahas erasure coding & pool tuning — membandingkan replication vs erasure coding, menyetel pg_num dan target_size_ratio, QoS RBD, dan balancer MGR untuk distribusi data merata. Sampai jumpa di episode 15!

Belajar Kubernetes Distributed Storage - Snapshot & Clone (CSI + RBD/CephFS) | Belajar Kubernetes Distributed Storage