Skip to main content
RunBook Academy

CephXI · OSD ArchitectureOSD Architecture

BlueStore is the only backend — what that means

Foundation⏱ ~15 mincephceph-volume

What you'll learn

  • Explain why BlueStore replaced FileStore
  • Describe how BlueStore uses a raw device
  • Identify the operational differences from a filesystem-backed OSD
  • Recognise legacy documentation that assumes FileStore

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

BlueStore is the only OSD backend in current Ceph. FileStore was deprecated and has been removed, so any documentation describing journals on separate partitions, XFS tuning for OSDs, or filestore_* settings is describing a system that no longer exists.

What FileStore did and why it was replaced

FileStore stored objects as files on XFS, with a separate journal for write ordering. That meant:

  • Every write went to the journal and then to the filesystem — double writes for all data.
  • The filesystem’s own metadata operations sat between Ceph and the device.
  • POSIX semantics that Ceph did not need were being paid for anyway.
  • Extended attributes had size limits requiring workarounds.

BlueStore removes the filesystem. Object data goes directly to the raw block device; object metadata goes to RocksDB.

FileStore:  Ceph → journal → XFS → block device
BlueStore:  Ceph → block device (data)
                 → RocksDB (metadata)

What BlueStore gives

  • No double write for large writes. Data goes straight to a freshly allocated extent.
  • Checksums on everything. Every read is verified; corruption is detected rather than returned.
  • Efficient small writes through deferred writes into the RocksDB WAL.
  • Optional compression, per pool.
  • Full control of allocation, so Ceph decides layout rather than a filesystem.

The layout on disk

An OSD occupies:

  • block — the main data device, holding object data and, by default, everything else.
  • block.db — optional separate device for RocksDB.
  • block.wal — optional separate device for the write-ahead log.
FSID=$(ceph fsid)

ceph-volume lvm list /dev/sdb
ls -l "/var/lib/ceph/$FSID/osd.12/"

If block.db is not specified, RocksDB lives on the main device. That is fine on NVMe and costly on HDD.

Spotting legacy documentation

If a guide mentions any of these, it predates BlueStore and should not be followed:

  • filestore_xattr_use_omap, filestore_max_sync_interval
  • creating a journal partition with ceph-disk
  • formatting an OSD device with XFS
  • ceph-disk at all — it was replaced by ceph-volume

Quiz

Knowledge check · 4 questions

  1. Q1. What was the main efficiency problem with FileStore that BlueStore solves?

  2. Q2. A BlueStore OSD device can be mounted and browsed to inspect the objects it holds.

  3. Q3. A team is following a guide that instructs them to create a journal partition and format the OSD device with XFS. Assess.

    New cluster build on current Ceph. The guide being followed is a well-regarded blog post from several years ago. It instructs creating a 10 GB journal partition on SSD per OSD, formatting the data device with XFS, and using ceph-disk to prepare the OSDs. The team reports that ceph-disk does not exist on their hosts.

  4. Q4. Explain the deferred write path and why the threshold differs between HDD and SSD.

Passing score: 75%. Answers are checked in this browser.

Production discipline

Check the Ceph version against the date of any documentation before following it — journals, XFS formatting, ceph-disk, and filestore_* settings all describe a backend that has been removed, and adapting such a guide step by step will not converge. Use ceph-volume lvm list and ceph-bluestore-tool show-label for device inspection rather than expecting to mount anything. And give HDD OSDs a separate fast device for WAL and DB, since the deferred write path otherwise competes with data I/O on the same spindle.

Cross-course references

  • Ceph: Part XII (BlueStore) for the internals in depth.
  • Ceph: Part III (Storage Hardware) for WAL and DB device selection.
  • Ceph: Part LVII (Replacing Failed OSDs) for ceph-volume in practice.