Skip to main content
RunBook Academy

CephL · Cluster DeploymentCluster Deployment

How many hosts a Ceph cluster needs

Intermediate⏱ ~17 minceph

What you'll learn

  • Derive the minimum host count from durability requirements
  • Explain why the practical minimum exceeds the theoretical one
  • Size a cluster for growth and self-healing
  • Evaluate a proposed host count against its requirements

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

Host count is usually proposed from capacity — enough disks for the data — and that is the wrong starting point. The number is set by what the cluster must survive, and a capacity-derived count frequently cannot self-heal.

The floors

RequirementMinimum hosts
Monitor quorum3
size 3 with failure_domain=host3
size 3 that can self-heal after a host loss4
EC k+m with failure_domain=hostk+m
EC k+m that can self-healk+m+1
Comfortable production5+

The self-healing rows are the ones people miss. With exactly size hosts, losing one leaves nowhere to place the missing replica, so the cluster stays degraded until the host returns rather than repairing itself.

Deriving from requirements

requirement: survive one host loss, self-heal, size 3
  → 3 for placement + 1 for recovery = 4 minimum
  → 5 or 6 for comfort and capacity headroom

requirement: survive one rack loss, size 3, failure_domain=rack
  → 3 racks for placement + 1 for recovery = 4 racks
  → hosts per rack from capacity

The failure domain and the replication factor give the count of domains; capacity gives the hosts per domain.

Capacity per host and the failure reserve

Concentrating capacity on fewer hosts means each host failure removes more of the cluster:

HostsCapacity lost per host failureReserve needed
425%25%
1010%10%
205%5%

The reserve must exist for the cluster to self-heal after a host loss. A four-host cluster therefore has to run at 75% of its nominal capacity at most — a cost that additional hosts reduce directly.

Daemon placement

ceph orch apply mon --placement="5 label:mon"
ceph orch apply mgr --placement="2 label:mgr"
DaemonCount
MON3 or 5, always odd
MGR2
MDSactive ranks plus standbys
RGWpeak load plus one
OSDone per device

Monitors and managers can share hosts with OSDs on smaller clusters and should have dedicated hosts on larger ones, since monitor latency affects everything.

Evaluating a proposal

Ask three questions:

  1. How many failure domains does the replication scheme need?
  2. Is there one more than that, so recovery has somewhere to go?
  3. Does the capacity reserve cover the loss of one domain?

A proposal failing any of them is under-specified regardless of how much disk it contains.

Quiz

Knowledge check · 4 questions

  1. Q1. A cluster has exactly three hosts and a size-3 pool with failure_domain=host. What happens when one host fails?

  2. Q2. A four-host cluster must run at a lower percentage of its nominal capacity than a twenty-host cluster to self-heal after a host loss.

  3. Q3. Evaluate a cluster proposal.

    A proposal specifies four hosts with 24 × 20 TB drives each — 1.92 PB raw — for a size-3 pool, with a stated requirement to survive a host failure and continue self-healing. Capacity planning assumes 85% fill.

  4. Q4. Why does the failure domain rather than capacity determine the minimum host count?

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

Production discipline

Derive host count from the failure domain and replication factor first, then add one for self-healing, and only then check capacity. State the usable capacity with the host-failure reserve already subtracted, since that reserve is what makes the self-healing requirement real.

Cross-course references

  • Kubernetes: node count driven by availability zones rather than by pod capacity follows the same logic
  • Linux: RAID array sizing with hot spares embodies the same reserve principle