Simulasi Ceph Monitor Down: Membangun Ulang Database Ceph dari Data OSD (Proxmox VE 7)

Hai semuanya, apa kabar? Kali ini kita akan melakukan simulasi ketika Ceph Monitor mengalami gangguan /down. Kita akan melakukan rebuild pada database Ceph Monitor menggunakan sisa data yang ada dari OSD.

image host

Pengujian kali ini menggunakan Proxmox VE versi 7.

Hentikan Ceph Monitor

Kita pastikan Ceph Monitornya benar-benar mati untuk mencegah risiko konflik data.

root@pve7:~# systemctl stop ceph-mon.target

Ambil Data Cluster Map dari OSD

Kita akan buat direktori untuk “penampungan data sementara”. Kita akan salin cluster map yang ada di OSD 0,1,2.

root@pve7:~# mkdir /root/mon-store
root@pve7:~# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --no-mon-config --op update-mon-db --mon-store-path /root/mon-store
root@pve7:~# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-1 --no-mon-config --op update-mon-db --mon-store-path /root/mon-store
root@pve7:~# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2 --no-mon-config --op update-mon-db --mon-store-path /root/mon-store

osd.0   : 0 osdmaps trimmed, 656 osdmaps added.
osd.1   : 10337 osdmaps trimmed, 0 osdmaps added.
osd.2   : 0 osdmaps trimmed, 0 osdmaps added.

Apa Itu Cluster Map dan Fungsinya?

Cluster Map bisa diibaratkan seperti “buku panduan” terkait Ceph Cluster yang berisi informasi seperti status dari node, penempatan data, struktur topologi jaringan, dan juga CRUSH rule.

image host

Layanan Ceph Monitor (MON) bertindak sebagai penjaga resmi Cluster Map utama. Saat kita melakukan simulasi Monitor down, cluster mendadak kehilangan “otak” dan kompas utamanya.

Simulasi yang dilakukan tujuannya adalah mengambil salinan dari cluster map yang ada di OSD. Karena setiap OSD secara berkala menyimpan salinan riwayat cluster map (osdmaps) ini di dalam penyimpanan lokal mereka sendiri.

Rebuild Database

Pada tahap ini, kita akan gunakan ceph-monstore-tool untuk rebuild file store.db yang merupakan “otak” dari Ceph Monitor.

root@pve7:~# ceph-monstore-tool /root/mon-store rebuild -- --mon-ids pve7
...
2026-04-26T21:29:35.083+0700 7f1d63c0e600  4 rocksdb: RocksDB version: 6.15.5
2026-04-26T21:29:35.083+0700 7f1d63c0e600  4 rocksdb: DB SUMMARY
2026-04-26T21:29:35.083+0700 7f1d63c0e600  4 rocksdb: SST files in /root/mon-store/store.db dir, Total Num: 2, files: 000008.sst 000014.sst
...
  • rebuild: Perintah ini akan membaca seluruh data (mentah) di direktori /root/mon-store. Sistem akan mengompilasi dan menyusun ulang riwayat dari cluster map menjadi struktur database yang valid.
  • --mon-ids pve7: Opsi ini menambahkan identitas pve7 ke dalam database baru.

Pasang Database Baru

Kita akan memindahkan store.db hasil “rakitan” ke working directory ke lokasi Ceph Monitor yang sebenarnya.

root@pve7:~# rm -rf /var/lib/ceph/mon/ceph-pve7/store.db/*
root@pve7:~# cp -av /root/mon-store/store.db/* /var/lib/ceph/mon/ceph-pve7/store.db/
root@pve7:~# chown -R ceph:ceph /var/lib/ceph/mon/ceph-pve7/store.db

Proses di atas akan melakukan “pembersihan total” pada direktori database lama untuk memastikan tidak ada file lama yang mengontaminasi database baru.

Selain itu, ada juga aksi perubahan hak akses. Layanan Ceph memiliki aturan ketat dan hanya mau berjalan di bawah pengguna bernama ceph. Kita wajib mengubah kepemilikan folder tersebut menjadi ceph:ceph.

Nyalakan Layanan Kembali

Setelah database berada di tempat yang benar dengan hak akses yang tepat, kita menghidupkan kembali layanan Ceph pada node pve7.

root@pve7:~# systemctl start ceph-mon@pve7
root@pve7:~# systemctl start ceph-mgr@pve7
root@pve7:~# systemctl start ceph-osd.target

Penutup

Simulasi ini membuktikan ketangguhan nyata dari arsitektur penyimpanan Ceph. Meskipun klaster mendadak kehilangan layanan Monitor, setiap OSD menyimpan cadangan riwayat peta klaster secara aman. Hasilnya, kita mampu membangun kembali “otak” Monitor minim risiko kehilangan data asli milik klien.

Tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.

By Zaidan

Leave a Reply

Your email address will not be published. Required fields are marked *