This episode covers real-world case studies of Ceph usage: cloud block storage, enterprise file services, and S3-compatible object storage, usage for OpenStack, Kubernetes, backups, and media, architectural patterns for scale and multi-tenancy, and cost and capacity planning.

Welcome to episode 20 of the Learn Ceph series! Throughout this series you've learned Ceph's features and how to operate it. This episode ties everything to the real world: how Ceph is actually used in production, proven architectural patterns, and how to plan capacity and cost.
Every organization uses Ceph differently — cloud providers use it for virtual block storage, enterprises use it for shared file services, and data platforms use it as S3 object storage. Studying these patterns helps you choose the right design for your own needs.
By the end of this episode you'll understand real-world case studies for Ceph's three interfaces, usage in OpenStack, Kubernetes, backups, and media, architectural patterns for scale and multi-tenancy, and how to do realistic cost and capacity planning. Let's get started.
Cloud providers build block storage services on top of RBD. Every VM disk is an RBD image in the volumes pool, with snapshots and clones for cloud features like disk backups and image templating. The main advantage: one pool serves thousands of VMs with safe over-provisioning thanks to thin provisioning.
ceph osd pool create volumes 256
ceph osd pool application enable volumes rbd
ceph config set global osd_pool_default_size 3ceph osd pool application enable volumes rbd marks the pool for RBD. A three-replica scheme is the sensible default for cloud block storage that prioritizes reliability.
The important patterns in this case study: quota per tenant, scheduled snapshots for protection, and separate pools per tier (HDD for cheap disks, NVMe for premium disks). All three can be implemented with features you've already learned — pools, quotas, and device classes.
Enterprises use CephFS to replace traditional file servers. Home directories, shared workspaces, and application backends that need POSIX semantics are mounted from a single filesystem scaled with active-active MDS.
ceph osd pool create fs_data 256
ceph osd pool create fs_meta 128
ceph fs new company-fs fs_meta fs_dataceph fs new company-fs creates a filesystem for enterprise use. The metadata pool is made smaller but placed on fast devices, because metadata latency heavily affects file service responsiveness.
The important patterns: quota per department to stop one team exhausting capacity, .snap snapshots to protect files from accidental deletion, and MDS monitoring to detect metadata hot spots. All of these features were covered in episode 6.
RGW is used as backup storage and data lakes. Backups are written as objects with lifecycle rules for compression and expiry, while data lakes are consumed by analytics engines. The S3-compatible nature means all existing tooling can be used right away.
aws --endpoint-url https://rgw.example.com s3api head-bucket \
--bucket backup-prodaws s3api head-bucket verifies the bucket can be accessed with the standard S3 protocol. From here, backup tooling like rclone or Velero can use RGW as a target without modification.
The important patterns: versioning to protect against overwrites, lifecycle rules to transition to cheaper storage classes, and multisite for cross-site backups. This combination of features makes RGW a serious alternative to commercial object storage.
In OpenStack, Ceph becomes the backend for Cinder (block), Manila (shared file), and Swift (object) simultaneously — one cluster serving three services. In Kubernetes, Ceph CSI provides block volumes for databases and shared filesystems for stateless workloads. Both were covered in depth in episode 16.
For media, RGW becomes the home of large assets: raw video files, transcodes, and distribution. Multipart upload for ingestion, a CDN or cache in front for playback, and lifecycle rules to archive old productions. Media's characteristics — large files, lots of cold data — fit object storage's strengths perfectly.
Ceph scales horizontally: add nodes for capacity and performance. A good pattern is adding nodes in balanced groups, respecting failure domains, and not adding too many OSDs at once so rebalancing doesn't burden the cluster.
For multi-tenancy, apply the three isolation layers covered in episode 10: separate pools per tenant, different CephX keyrings, and RGW users with their own policies. Build an automated tenant provisioning template so creating new tenants is consistent and fast.
Effective capacity differs from raw capacity. With 3 replicas and failure tolerance, usable capacity is roughly a third of raw capacity. With erasure coding k=4, m=2, efficiency is better. Always calculate using a formula that accounts for replication and headroom:
ceph dfceph df shows total capacity, usage, and quotas per pool. Use these numbers as the basis for capacity growth projections, not raw disk capacity.
Count not just hardware costs: power and cooling, network costs, labor for operations, and the cost of alternatives (cloud storage). Ceph usually wins at large scale because there are no licenses, but loses on practicality at small scale compared to managed object storage.
In this episode you've seen how Ceph is used in the real world: cloud block storage case studies with RBD, enterprise file services with CephFS, and S3-compatible object storage with RGW, usage for OpenStack, Kubernetes, backups, and media, architectural patterns for scale and multi-tenancy, and how to plan cost and capacity realistically.
The key takeaways:
In the next episode, episode 21, we'll cover ecosystem & tools — the Ceph dashboard, Rook, and related open-source tools, community resources, mailing lists, and training, managed Ceph services and vendor integration, and tools for automation, provisioning, and management. Time to map the whole Ceph tool landscape!