Belajar Ceph - File Storage dengan CephFS
Episode 6 of 23

Belajar Ceph - File Storage dengan CephFS

Episode ini membahas CephFS, interface file storage Ceph: arsitektur metadata server dan data path, membuat filesystem dan mount client dengan POSIX semantics, active-active MDS untuk scaling metadata, serta quotas, snapshot, dan konsistensi client.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Selamat datang di episode 6 series Belajar Ceph! Setelah RBD untuk block storage, sekarang giliran interface kedua: CephFS, file storage dengan POSIX semantics. CephFS adalah interface tertua Ceph dan pilihan utama untuk workload yang butuh shared filesystem.

Berbeda dengan RBD yang diakses sebagai raw device, CephFS tampil sebagai direktori dan file yang bisa di-mount di banyak client sekaligus dengan konsistensi yang baik. Inilah yang membuatnya cocok untuk home directories, shared workspace, dan aplikasi yang membutuhkan akses file.

Di episode ini kita akan membahas arsitektur CephFS yang melibatkan metadata server, membuat filesystem dan mount client, active-active MDS untuk scaling metadata, serta quotas, snapshot, dan konsistensi client.

Arsitektur CephFS: Metadata Server dan Data Path

Peran MDS

MDS (Metadata Server) menyimpan metadata CephFS: nama file, direktori, permission, dan layout. Metadata disimpan di pool khusus cephfs_metadata, sementara data file disimpan di pool cephfs_data. Keduanya adalah pool di dalam RADOS.

MDS tidak menyimpan data file sama sekali. Saat client membaca file, ia menanyakan metadata ke MDS, lalu membaca data langsung dari OSD. Desain ini memungkinkan CephFS diskalakan tanpa bottleneck pada satu server file.

Alur Akses File

Alur saat client membaca sebuah file:

  1. Client bertanya ke MDS untuk lokasi metadata dan capabilitas file.
  2. MDS mengembalikan inode, permission, dan layout dari file.
  3. Client membaca data file langsung dari OSD via RADOS.
  4. Untuk menulis, client mengirim data ke OSD dan memberi tahu MDS perubahan metadata.
Alur akses CephFS
client --> MDS (metadata + caps)
client --> OSD (data langsung)

Membuat Filesystem dan Mount Client

Membuat Pool dan Filesystem

Langkah pertama membuat dua pool untuk metadata dan data, lalu membuat filesystem:

Buat CephFS
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64
ceph fs new myfs cephfs_metadata cephfs_data
ceph fs ls

ceph fs new myfs cephfs_metadata cephfs_data membuat filesystem bernama myfs dengan pool metadata dan data. Perhatikan bahwa pool metadata sebaiknya memakai OSD yang cepat karena latency metadata sangat sensitif.

Mount CephFS di Client Linux

Untuk mount di client Linux, gunakan kernel driver atau FUSE. Kernel driver lebih cepat, sedangkan FUSE lebih fleksibel:

Mount CephFS dengan kernel driver
sudo mkdir /mnt/myfs
sudo mount -t ceph mon-node1:6789:/ /mnt/myfs \
  -o name=admin,secretfile=/etc/ceph/admin.secret

sudo mount -t ceph membutuhkan secret CephX dari client. Cara yang lebih aman adalah memakai file /etc/ceph/ceph.client.<user>.keyring dan mendefinisikan mount di /etc/fstab.

Alternatif dengan FUSE

Jika kernel driver tidak tersedia, CephFS bisa di-mount lewat ceph-fuse:

Mount dengan ceph-fuse
ceph-fuse /mnt/myfs -o rw

ceph-fuse berjalan sebagai proses user-space dan tidak membutuhkan modul kernel. Performa FUSE sedikit lebih rendah daripada kernel driver, tetapi deployment-nya jauh lebih mudah di berbagai distro.

Active-Active MDS dan Metadata Scaling

Lebih dari Satu MDS Aktif

CephFS mendukung active-active MDS: beberapa MDS aktif bekerja paralel, masing-masing menangani bagian metadata yang berbeda. MDS standby standby-replay tetap siaga dan langsung mengambil alih saat MDS aktif gagal.

Atur jumlah MDS aktif
ceph fs set myfs max_mds 3
ceph orch apply mds myfs 3

ceph fs set myfs max_mds 3 menetapkan hingga tiga MDS aktif. Dengan tiga MDS, metadata terdistribusi ke lebih banyak proses sehingga throughput operasi metadata meningkat.

Memantau Beban MDS

Memantau distribusi metadata penting untuk memastikan scaling bekerja:

Status MDS
ceph fs status myfs
ceph mds stat

ceph fs status menampilkan daftar MDS, rank, state, dan pool yang dipakai. Jika satu MDS menjadi hot spot, Ceph akan membagi ulang sub-tree metadata secara otomatis lewat mekanisme balancing.

Quotas, Snapshot, dan Konsistensi Client

Menerapkan Quota

CephFS mendukung quota berbasis kapasitas dan jumlah file pada direktori:

Set quota direktori
sudo setfattr -n ceph.quota.max_bytes -v 10G /mnt/myfs/project
sudo setfattr -n ceph.quota.max_files -v 10000 /mnt/myfs/project

ceph.quota.max_bytes dan ceph.quota.max_files membatasi pemakaian direktori project. Quota berlaku saat client meminta alokasi blok atau menciptakan inode, sehingga tidak memerlukan daemon terpisah.

Membuat Snapshot CephFS

Snapshot CephFS dibuat per direktori dengan mekanisme .snap:

Buat snapshot direktori
sudo mkdir /mnt/myfs/project/.snap/snap-sebelum-upgrade
ls /mnt/myfs/project/.snap/

Membuat direktori .snap/<nama> di dalam direktori target langsung menghasilkan snapshot read-only. Fitur ini harus diaktifkan dengan ceph fs set myfs allow_new_snaps true jika belum aktif.

Konsistensi Client

CephFS memakai capability-based cache: client men-cache metadata dan data selama memegang capability dari MDS. Saat client lain ingin menulis file yang sama, MDS menarik capability sehingga client melakukan write-through.

Cek client yang terhubung
ceph fs dump myfs
ceph tell mds.<rank> session ls

ceph tell mds.<rank> session ls menampilkan sesi client aktif. Konsistensi ini memberikan POSIX semantics yang kuat, tetapi perlu diingat bahwa CephFS tidak didesain untuk file yang diakses oleh banyak client secara bersamaan dengan write rate tinggi pada satu file.

Penutup

Di episode ini kalian sudah memahami dan mempraktikkan CephFS: arsitektur MDS dan data path, membuat filesystem dan mount dengan kernel driver maupun FUSE, active-active MDS untuk scaling metadata, serta quotas, snapshot, dan mekanisme konsistensi client.

Inti yang harus dibawa pulang:

  • CephFS memisahkan metadata (MDS) dan data (OSD) pada pool yang berbeda.
  • Mount memakai mount -t ceph untuk kernel driver atau ceph-fuse untuk user-space.
  • Active-active MDS membagi metadata sehingga throughput naik seiring jumlah MDS.
  • Quota memakai ceph.quota.max_bytes dan ceph.quota.max_files.
  • Snapshot dibuat dengan direktori .snap dan bersifat read-only.
  • Consistency didapat dari capability-based caching yang dikelola MDS.

Di episode 7 selanjutnya kita akan membahas object storage dengan RGW — konsep RADOS Gateway dan API S3/Swift, menyiapkan realm, zone, dan zonegroup, manajemen bucket, object, dan user, serta integrasi dengan S3 client dan object lifecycle. Interface terakhir dari trio unified storage kalian!

Belajar Ceph - File Storage dengan CephFS | Belajar Ceph