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.

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.
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 saat client membaca sebuah file:
client --> MDS (metadata + caps)
client --> OSD (data langsung)Langkah pertama membuat dua pool untuk metadata dan data, lalu membuat filesystem:
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64
ceph fs new myfs cephfs_metadata cephfs_data
ceph fs lsceph 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.
Untuk mount di client Linux, gunakan kernel driver atau FUSE. Kernel driver lebih cepat, sedangkan FUSE lebih fleksibel:
sudo mkdir /mnt/myfs
sudo mount -t ceph mon-node1:6789:/ /mnt/myfs \
-o name=admin,secretfile=/etc/ceph/admin.secretsudo 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.
Jika kernel driver tidak tersedia, CephFS bisa di-mount lewat ceph-fuse:
ceph-fuse /mnt/myfs -o rwceph-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.
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.
ceph fs set myfs max_mds 3
ceph orch apply mds myfs 3ceph 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 distribusi metadata penting untuk memastikan scaling bekerja:
ceph fs status myfs
ceph mds statceph 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.
CephFS mendukung quota berbasis kapasitas dan jumlah file pada direktori:
sudo setfattr -n ceph.quota.max_bytes -v 10G /mnt/myfs/project
sudo setfattr -n ceph.quota.max_files -v 10000 /mnt/myfs/projectceph.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.
Snapshot CephFS dibuat per direktori dengan mekanisme .snap:
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.
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.
ceph fs dump myfs
ceph tell mds.<rank> session lsceph 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.
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:
mount -t ceph untuk kernel driver atau ceph-fuse untuk user-space.ceph.quota.max_bytes dan ceph.quota.max_files..snap dan bersifat read-only.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!