Skip to main content
RunBook Academy

CephCXVII · Lost Monitor QuorumLost Monitor Quorum

Triaging why quorum is gone

Advanced⏱ ~18 mincephchronycjournalctl

What you'll learn

  • Collect monitor evidence without a working cluster
  • Match a signature to its cause and its recovery
  • Explain how clock skew actually breaks quorum
  • Recognise a correlated cause behind simultaneous failures

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

Every cause of quorum loss presents as the same silence from ceph -s, and the recoveries range from restarting a service to irreversible surgery. The triage is the whole skill; the fix is usually short once you know which one you have.

What you can still collect

cephadm ls --no-detail | grep mon
systemctl status ceph-$FSID@mon.ceph-mon-b.service
journalctl -u ceph-$FSID@mon.ceph-mon-b.service -n 200 --no-pager
ceph daemon mon.ceph-mon-b mon_status
df -h /var/lib/ceph/$FSID/mon.ceph-mon-b
chronyc tracking
ss -ltn | grep -E ':3300|:6789'

Run all of it on every monitor host before forming a hypothesis. Two monitors stuck in probing and one refusing to start are three different answers depending on which you look at first.

Signatures and their recoveries

CauseSignatureRecovery
Daemon stopped or OOM-killedunit failed; the kill is in the journalstart it, fix the memory budget
Store partition fullMON_DISK_CRIT beforehand; df under five per centfree space, compact, start
Store corruptionstartup aborts on a corruption messageremove and re-add from a live quorum
Clock skewMON_CLOCK_SKEW beforehand; chronyc shows a large offsetfix time, then restart
Network partitionevery reachable monitor is probing or electingrepair the path
Stale monmap after an IP changeprobing addresses that nothing answersinject a corrected monmap
Config or auth changeauthentication or protocol errors in the journalrevert the change

Clock skew

chronyc tracking
chronyc sources -v
ceph config get mon mon_clock_drift_allowed

The warning threshold is fifty milliseconds, which is nowhere near where quorum breaks. Seconds of offset is what matters, and it arrives when an NTP source fails, when a virtual machine is live-migrated, or when one host was never configured in the first place.

The election loop

2026-08-18T09:14:04 mon.ceph-mon-a calling monitor election
2026-08-18T09:14:09 mon.ceph-mon-a calling monitor election
2026-08-18T09:14:14 mon.ceph-mon-a calling monitor election

Quorum that forms and dissolves every few seconds is its own signature. Its causes are clock skew, packet loss between members, a monitor starved of CPU or I/O, or a store so large that synchronisation never finishes before the next election. ceph -s answering once and then timing out is this, not an intermittent network to your workstation.

Deciding where you are

ceph log last 500 info cluster | grep -iE 'election|quorum'

If any monitor can be restored to service, you are in the restoration case. Only when every remaining member is confirmed unrecoverable does the monmap surgery become correct — and that decision needs the same evidence you have just gathered, written down.

Quiz

Knowledge check · 4 questions

  1. Q1. The cluster log shows a monitor election called every five seconds, and `ceph -s` answers occasionally. What does this pattern indicate?

  2. Q2. Clock skew breaks quorum because Paxos requires synchronised clocks to order proposals correctly.

  3. Q3. Triage a total quorum loss that began during a maintenance window.

    All three monitors lost quorum within the same minute, forty minutes into an OS patch rollout that touched all three hosts. Each monitor daemon is running; each reports `probing` with an empty quorum list.

  4. Q4. Why must all monitor hosts be examined before forming a hypothesis?

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

Production discipline

Collect the same evidence set from every monitor host before forming a hypothesis, because the first host you log into will otherwise decide your diagnosis. When a majority fails simultaneously, look for the shared cause or the recent change first, and fix time before anything else — every diagnosis made under skew is contaminated by it.

Cross-course references

  • Kubernetes: simultaneous control-plane failures almost always trace to one rollout or one shared dependency
  • Linux: lease-based protocols surface clock problems as flapping membership, never as clock errors