Skip to main content
RunBook Academy

CephXIV · CRUSH Failure DomainsCRUSH Failure Domains

Chassis, room, and row — extending the hierarchy

Intermediate⏱ ~15 minceph

What you'll learn

  • Identify when chassis-level separation is required
  • Choose an appropriate hierarchy depth for a facility
  • Build multi-level hierarchies correctly
  • Avoid unnecessary hierarchy depth

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

The bucket types between host and root exist for real physical boundaries. Using the right ones makes a map that describes the building; using all of them makes a map nobody can read.

The types worth using

TypeReal boundaryUse when
chassisshared backplane, PSUs, fansblade or multi-node enclosures
rackPDU, top-of-rack switch, coolingalmost always, above 3 racks
pduone power strippower does not align with racks
roomcooling plant, fire suppressionmulti-room facilities
rowdistribution power, aggregation switchingvery large facilities
datacenterbuilding, utility feedmulti-site

The chassis case

Multi-node chassis — four nodes in 2U sharing a backplane and a pair of PSUs — are common and are the clearest case for a bucket level that people forget.

ceph osd crush add-bucket chassis-1 chassis
ceph osd crush move chassis-1 rack=rack-a
ceph osd crush move ceph-01 chassis=chassis-1
ceph osd crush move ceph-02 chassis=chassis-1
ceph osd crush move ceph-03 chassis=chassis-1
ceph osd crush move ceph-04 chassis=chassis-1

Then a rule at chassis level, or above:

step chooseleaf firstn 0 type chassis

Without this, four hostnames describe one failure boundary and a size 3 host rule places all three copies inside one enclosure for some fraction of PGs.

Building multi-level hierarchies

Order matters: create buckets, place them in their parents from the top down, then move hosts in.

ceph osd crush add-bucket row-1 row
ceph osd crush move row-1 root=default
ceph osd crush add-bucket rack-a1 rack
ceph osd crush move rack-a1 row=row-1
ceph osd crush add-bucket chassis-1 chassis
ceph osd crush move chassis-1 rack=rack-a1
ceph osd crush move ceph-01 chassis=chassis-1
ceph osd tree

Each move of a populated bucket causes data movement, which is why this belongs at build time.

Choosing depth

  • 3-10 hosts, one rack: root → host.
  • Multi-node chassis: add chassis.
  • 3+ racks: root → rack → host.
  • Power not aligned to racks: add pdu.
  • Multi-room or multi-row at scale: add those levels only if you have at least size of them.

Quiz

Knowledge check · 4 questions

  1. Q1. A cluster uses a rack-level failure domain. Does it also need a chassis-level rule to protect against chassis failure?

  2. Q2. Defining more bucket levels in a CRUSH hierarchy makes a cluster more resilient.

  3. Q3. A cluster of 32 hosts in eight 4-node chassis across four racks uses a host-level rule. Recommend the hierarchy.

    Eight multi-node chassis, four per rack in two racks, and eight standalone 2U servers spread across two further racks — 32 hosts total in four racks. Pool size 3, min_size 2, currently type host. The team wants protection against both chassis and rack failure without over-complicating the map.

  4. Q4. Explain why multi-node chassis are a commonly missed failure domain and what the consequence is.

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

Production discipline

Count the buckets you have at each level before defining it, and stop at the deepest level with at least size instances — unused levels make maps harder to read and add nothing. Write one select step at the highest satisfiable level for replicated pools, since separation there implies separation below. Define chassis buckets whenever multi-node enclosures are present, because four hostnames sharing a backplane are one failure boundary and only you can tell CRUSH that.

Cross-course references

  • Ceph: Part IV (Failure Domains) for identifying the boundaries.
  • Ceph: Part XIII (CRUSH Fundamentals) for multi-level select steps.
  • Ceph: Part XV (CRUSH Maps and Rules) for writing the rules.