Skip to main content
RunBook Academy

CephLXXXII · Hyper-Converged CephHyper-Converged Ceph

Correlated failure in a hyper-converged cluster

Advanced⏱ ~18 mincephha-manager

What you'll learn

  • Describe the correlated failure sequence
  • Quantify the combined impact
  • Plan capacity for the combined recovery
  • Reduce the correlation where possible

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

A node failure in a dedicated deployment is either a compute event or a storage event. In a hyper-converged one it is both, simultaneously, on reduced capacity.

The sequence

flowchart TD
  A[Node fails] --> B[VMs on that node stop]
  A --> C[OSDs on that node go down]
  B --> D[Proxmox HA restarts VMs elsewhere]
  C --> E[Ceph waits mon_osd_down_out_interval]
  D --> F[Surviving nodes take more compute load]
  E --> G[Ceph begins recovery]
  G --> H[Surviving nodes take more storage load]
  F --> I[Both loads land on the same reduced capacity]
  H --> I

The restarted VMs and the recovery traffic arrive on the same surviving nodes at roughly the same time.

Quantifying the impact

4-node cluster, one node lost:
  compute: 25% of VMs restart on 3 nodes → each takes +33% load
  storage: 25% of OSDs gone → recovery moves that data onto 3 nodes
  network: recovery traffic plus additional VM traffic
  result:  surviving nodes at ~133% of prior compute plus recovery I/O
# what a node holds
ceph osd df tree | awk '/host/ {h=$NF} /osd\./ {s[h]+=$5} END {for (k in s) print k, s[k]}'
qm list | wc -l
ha-manager status

Planning capacity for the combined recovery

The sizing rule is stricter than for either layer alone:

compute: (N-1) nodes must run all VMs
storage: (N-1) nodes must hold all data below backfillfull
network: (N-1) nodes must carry recovery plus the redistributed VM traffic
# compute headroom
for n in $(pvecm nodes | awk 'NR>1 {print $3}'); do
  echo -n "$n "
  ssh "$n" "grep -c ^processor /proc/cpuinfo; free -g | awk '/Mem:/ {print \$2}'"
done

A cluster running at 80% CPU across four nodes cannot absorb a node failure: three nodes at 107% of capacity means VMs will not start or will run degraded.

Reducing the correlation

MeasureEffect
Larger node counteach failure removes a smaller fraction
Proxmox HA groups spread across failure domainsrestarts distribute
noout during brief planned outagesavoids recovery entirely
VM I/O limitsrecovery is not starved by restarted VMs
Staggered HA restartcompute load ramps rather than spikes
Separate storage devices from boot devicesa boot device failure keeps OSDs
# stagger the restarts
ha-manager set vm:100 --max_restart 1 --max_relocate 1

Quiz

Knowledge check · 4 questions

  1. Q1. Why do VM restarts and Ceph recovery interfere rather than simply adding?

  2. Q2. Sizing each layer for its own peak load is sufficient for a hyper-converged cluster.

  3. Q3. Assess readiness for a node failure.

    A four-node hyper-converged cluster runs at 78% average CPU and 82% storage utilisation. The team believes it is fault-tolerant because Ceph is size=3 and Proxmox HA is configured.

  4. Q4. What is the sizing rule for a hyper-converged cluster?

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

Production discipline

Size compute, storage, and network each for N-1 nodes; a node failure requires all three simultaneously and each layer sized separately misses that. Stagger Proxmox HA restarts so booting guests do not compete with recovery on the same devices.

Cross-course references

  • Kubernetes: node failure triggers rescheduling and volume reattachment together
  • Linux: correlated failures always cost more than the sum of their parts