ExplainerDistributed storage

Ceph block, object and file storage: which workload uses which

CephFS vs RBD vs RGW, from Ceph's Umbrella 21.2.0 documentation: which workloads need a block device, a shared file system or S3-compatible object storage, and why.

Cover of the full report: Ceph block, object and file storage: which workload uses which
The research behind this article, with every source listed. 20 pages.

Key points

From the Summary of the full report

  1. One Ceph cluster serves three interfaces at once: the Ceph Block Device (RBD) for block device images, the Ceph File System (CephFS) for a shared POSIX file system and the Ceph Object Gateway (RGW) for S3- and Swift-compatible object storage, all stored as objects in Ceph's object store, RADOS [3, 4, 9].
  2. The Ceph Block Device (RBD) lets one client write an image at a time. Its exclusive lock, on by default for new images, makes two clients that write the same image take turns, and its snapshots are crash-consistent unless the guest operating system pauses I/O [5, 6].
  3. The Ceph File System (CephFS) lets many clients mount one directory tree, with stronger multi-client consistency than NFS. Its Metadata Servers (MDS) handle directories and file attributes, so very large directories, long listings and metadata that outgrows the MDS cache cost time [11, 12].

CephFS vs RBD is a choice between two of the three ways into one Ceph cluster. Ceph stores everything as objects in its object store, RADOS, and three clients sit on top: the Ceph Block Device (RBD) presents block device images, the Ceph File System (CephFS) presents a POSIX file system that many clients mount, and the Ceph Object Gateway (RGW) presents S3- and Swift-compatible buckets over HTTP [3, 9]. The same cluster can serve all three at once [4]. Which one a workload uses depends on how many clients write the same data, whether its software needs a directory tree and which API it speaks.

All three stripe their data over many objects in the cluster [3]. They differ in what the client sees and what sits on the data path. CephFS clients read and write file data in RADOS directly, while Metadata Servers (MDS) keep directories and file attributes [3, 9]. RGW is an HTTP server between applications and the cluster, and it uses no Metadata Server [15].

CephFS vs RBD vs RGW at a glance

RBD (block) CephFS (file) RGW (object)
The client sees A block device image [3] A POSIX directory tree [9] Buckets of objects over HTTP [3, 15]
Writers One client writes an image at a time [5] Many clients mount one tree [9, 11] HTTP clients, each writing whole objects in the S3 API [15, 34]
Metadata A file system inside the image, unknown to RBD [6] MDS daemons, with their own pool [9] Bucket index and log pools [20]
Access Kernel module or librbd [4] Kernel mount or FUSE [3, 28] S3 and Swift REST APIs [15]
Kubernetes volumes that ceph-csi, Ceph's drivers for the Container Storage Interface (CSI), lists as generally available File mode ReadWriteOnce, block mode ReadWriteOnce and ReadWriteMany [21] File mode ReadWriteOnce and ReadWriteMany [21] No ceph-csi volume type, applications use the REST APIs [15, 21]
Uses named by Ceph and Proxmox Virtual machine and container disks [3, 25] Shared home directories, HPC scratch, shared workflow storage [9] Huge flat collections of files read and written whole [12]

Block storage (RBD): one writer per image

What is RBD in Ceph? A Ceph block device is a thin-provisioned, resizable image striped over many storage daemons, with snapshots, replication and strong consistency from RADOS [4]. Virtualization is a common use: QEMU and KVM hosts typically use librbd to give guests a block device [3].

The exclusive-lock feature is on for newly created images and ensures that only a single client writes to an image at any given time [5]. It is used heavily in virtualization, where it keeps virtual machines from clobbering each other's writes [5]. By default it does not stop two clients from opening the same image and writing in turns: their writes get linearized as the lock passes back and forth, and the --exclusive mapping option turns those handoffs off [5]. An RBD image suits a disk that one machine writes.

RBD snapshots are read-only copies of an image at a point in time, and layering clones images such as virtual machine templates quickly [6]. Because RBD knows nothing of the file system inside an image, a snapshot is only crash-consistent unless the guest pauses I/O, for example with fsfreeze or the QEMU guest agent [6].

The iSCSI gateway exports RBD images as SCSI disks to clients without native Ceph support [8]. It has been in maintenance since November 2022, and Ceph advises new deployments to reach RBD images directly through librbd, QEMU or Kubernetes CSI, or through the NVMe-oF gateway [8].

File storage (CephFS): many clients, one namespace

CephFS is a POSIX-compliant file system on RADOS. Its metadata lives in a separate pool served by a resizable cluster of MDS daemons, and no gateway mediates data I/O [9]. Unlike many network file systems such as NFS, it keeps strong cache coherency across clients [11]. It relaxes a few POSIX rules: with simultaneous writers, a write that crosses object boundaries is not necessarily atomic, memory-mapped writes do not propagate coherently between hosts, and access times are not kept [11].

The metadata path is where CephFS costs time. A long listing stats every file and can be slow for large directories, a 10,000,000-file directory is less efficient than modest ones, and hard links carry a particular cost [12]. The MDS caches metadata, and performance differs greatly between workloads whose metadata fits in that cache and those whose metadata does not [12]. Each file system starts with one active MDS [13]. Workloads with many clients, perhaps in many separate directories, typically gain from extra active daemons, and a single application on a single client typically does not, unless it runs many metadata operations in parallel [13].

CephFS and NFS can work together: NFS-Ganesha exports CephFS namespaces and RGW buckets over NFS [14].

In Proxmox VE, RBD storage holds virtual machine disk images and container root disks, and CephFS storage holds files such as ISO images, container templates and snippets, with no disk images [25, 26].

Object storage (RGW): whole objects over HTTP

RGW is built on librados, keeps its own users, and serves an interface compatible with a large subset of the Amazon S3 API, plus Swift, in one shared namespace [15]. Ceph lists bucket versioning, multipart uploads, lifecycle rules, storage classes and bucket policies as supported [16].

The S3 API writes whole objects. Amazon's reference says S3 never adds partial objects, and changing one piece of metadata means putting the entire object again [34]. Ceph advises that an application keeping huge flat collections of files, reading and writing whole files at once, may be better off on the Object Gateway [12]. RGW can also export buckets over NFSv4, but only full, sequential writes work there, so editing a file in place fails [18].

Which workload uses which in a training cluster

Datasets, checkpoints and weights each set the choice, and the article on storage for model training covers their sizes and access patterns.

Datasets kept as files that are read and written whole match Ceph's advice for the Object Gateway [12], and a versioned bucket gives every object added its own version ID [17]. Software that expects a directory tree reads from CephFS, which many nodes mount at once [9, 21].

Checkpoints written by PyTorch's file-based distributed writer are one file per write request in a checkpoint directory, plus a global metadata file when ranks coordinate [35]. CephFS lets many nodes mount and write one directory tree, as a ReadWriteMany volume [21, 22]. The research on training on spot GPUs shows what checkpoint overhead and lost work cost.

Model weights kept by version fit versioned buckets, and object lock places a retention configuration, in governance or compliance mode, on a bucket [17]. Virtual machine disks and other volumes that one machine writes fit RBD [5, 7]. The comparison of self-hosted S3-compatible storage sets RGW against other object stores.

Ceph CSI: RBD vs CephFS in Kubernetes

Kubernetes v1.31 removed the CephFS and RBD volume plugins built into Kubernetes and recommends the CSI drivers [23]. The ceph-csi project lists as generally available an RBD volume in file mode for one node (ReadWriteOnce), RBD in raw block mode for one node or many, and CephFS for one node or many (ReadWriteMany) [21]. Kubernetes access modes do not enforce write protection once a volume is mounted [22].

CephFS vs RBD performance: what published tests show

The one published same-cluster comparison of two interfaces found here sets RBD against RGW. In two posts on Ceph's blog in March 2023, a Ceph developer tested pre-release Reef code on one 10-node cluster with 60 NVMe drives and 3x replication [29, 30]. RBD sustained about 71 GB/s of large reads and 25 GB/s of large writes [29]. RGW reached about 53 GB/s for 4 MB GETs and 18.6 GB/s for 4 MB PUTs [30]. The author traces much of the write gap to the data crossing the network twice, from client to RGW and from RGW to the storage daemons [30]. For CephFS, Ceph's documentation points to the metadata path and the MDS cache as the factors that set speed [12, 13].

Pools and hardware under each interface

Erasure-coded pools, which keep each object as data chunks plus coding chunks instead of whole copies, take full-object writes such as RGW's by default [19]. RBD and CephFS need overwrites enabled on the pool and keep their metadata in a replicated pool [19]. A CephFS file system needs at least two pools, one for data and one for metadata [10]. Ceph recommends at least three replicas and low-latency devices for the metadata pool, and a replicated default data pool, with any erasure-coded pool added for chosen directories [10].

MDS daemons are CPU-intensive and single-threaded, so they favor a high clock rate, and CephFS metadata pools and RGW index and log pools need SSDs at enterprise scale even when bulk data sits on hard drives [20]. The explainer on DGX, HGX and MGX shows which drives and network ports each kind of GPU system carries.

Rillor designs and builds distributed storage on Ceph for superintelligence (SI) work: block volumes, object buckets and shared file systems come from one cluster, and each workload reaches it in the form it needs.

Read the full report

The full report adds RBD's lock and snapshot rules, CephFS consistency and metadata, RGW's S3 features, Kubernetes access modes, erasure coding and hardware per interface, the test figures, survey results and all 36 sources.

The full report

Ceph block, object and file storage: which workload uses which

The research behind this article, with every source listed. 20 pages.

  1. Summary
  2. Background
  3. Method
  4. Findings
  5. Implications
  6. Limits of this analysis
  7. Sources

Sources

  1. Architecture. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/architecture/
  2. Ceph Block Device. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/rbd/
  3. RBD Exclusive Locks. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/rbd/rbd-exclusive-locks/
  4. Snapshots (Ceph Block Device). Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/rbd/rbd-snapshot/
  5. Block Devices and Kubernetes. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/rbd/rbd-kubernetes/
  6. Ceph iSCSI Gateway. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/rbd/iscsi-overview/
  7. Ceph File System. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/cephfs/
  8. Create a Ceph file system. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/cephfs/createfs/
  9. Differences from POSIX. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/cephfs/posix/
  10. Application best practices for distributed file systems. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/cephfs/app-best-practices/
  11. Configuring multiple active MDS daemons. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/cephfs/multimds/
  12. CephFS and RGW Exports over NFS. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/mgr/nfs/
  13. Ceph Object Gateway. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/radosgw/
  14. Ceph Object Gateway S3 API. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/radosgw/s3/
  15. Ceph Object Gateway S3 API: Bucket operations. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/radosgw/s3/bucketops/
  16. NFS (Ceph Object Gateway). Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/radosgw/nfs/
  17. Erasure code. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/rados/operations/erasure-code/
  18. Hardware Recommendations. Ceph Documentation (Umbrella), Ceph Foundation, viewed 8 November 2026. https://docs.ceph.com/en/umbrella/start/hardware-recommendations/
  19. Ceph CSI (README). Ceph project, GitHub repository ceph/ceph-csi, README last changed 6 November 2026, release v3.18.2 published 2 November 2026, viewed 8 November 2026. https://github.com/ceph/ceph-csi
  20. Persistent Volumes. Kubernetes documentation, The Kubernetes Authors, last modified 17 June 2026, viewed 8 November 2026. https://kubernetes.io/docs/concepts/storage/persistent-volumes/
  21. Kubernetes v1.31: Elli. Kubernetes v1.31 Release Team, Kubernetes blog, 13 August 2024, viewed 8 November 2026. https://kubernetes.io/blog/2024/08/13/kubernetes-v1-31-release/
  22. Storage: RBD. Proxmox VE wiki, Proxmox Server Solutions GmbH, last edited 21 May 2026, viewed 8 November 2026. https://pve.proxmox.com/wiki/Storage:_RBD
  23. Storage: CephFS. Proxmox VE wiki, Proxmox Server Solutions GmbH, last edited 21 May 2026, viewed 8 November 2026. https://pve.proxmox.com/wiki/Storage:_CephFS
  24. Ceph User Survey 2022 results (PDF). Ceph User Survey Working Group, Ceph Foundation, published with the post of 12 July 2022, viewed 8 November 2026. https://ceph.io/en/news/blog/2022/ceph-user-survey-results-2022/images/ceph-user-survey-results-2022.pdf
  25. Ceph Reef Freeze Part 1: RBD Performance. Mark Nelson, Ceph blog, 27 March 2023, viewed 8 November 2026. https://ceph.io/en/news/blog/2023/reef-freeze-rbd-performance/
  26. Ceph Reef Freeze Part 2: RGW Performance. Mark Nelson, Ceph blog, 30 March 2023, viewed 8 November 2026. https://ceph.io/en/news/blog/2023/reef-freeze-rgw-performance/
  27. PutObject. Amazon S3 API Reference, Amazon Web Services, viewed 8 November 2026. https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
  28. Distributed Checkpoint: torch.distributed.checkpoint. PyTorch 2.15 documentation, PyTorch, last updated 8 July 2026, viewed 8 November 2026. https://docs.pytorch.org/docs/2.15/distributed.checkpoint.html

Notices

Rillor is not a registered investment adviser or commodity trading advisor and does not provide investment or trading advice. Research, forecasts, data and software described on this site are for research and engineering use. Nothing here is an offer or recommendation to buy or sell any security, commodity interest or digital asset. Past or simulated results do not indicate future results.

NVIDIA, AMD, Ceph, Kubernetes and related product names are trademarks of their owners and are used only to identify products. No affiliation or endorsement is implied.

Tell us what your storage must hold.

Send what the storage must hold, how fast it grows, how it is read and written, and where it runs.

Scope a storage cluster