CephCXVII · Lost Monitor QuorumLost Monitor Quorum
Triaging why quorum is gone
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
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
| Cause | Signature | Recovery |
|---|---|---|
| Daemon stopped or OOM-killed | unit failed; the kill is in the journal | start it, fix the memory budget |
| Store partition full | MON_DISK_CRIT beforehand; df under five per cent | free space, compact, start |
| Store corruption | startup aborts on a corruption message | remove and re-add from a live quorum |
| Clock skew | MON_CLOCK_SKEW beforehand; chronyc shows a large offset | fix time, then restart |
| Network partition | every reachable monitor is probing or electing | repair the path |
| Stale monmap after an IP change | probing addresses that nothing answers | inject a corrected monmap |
| Config or auth change | authentication or protocol errors in the journal | revert 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
Q1. The cluster log shows a monitor election called every five seconds, and `ceph -s` answers occasionally. What does this pattern indicate?
Q2. Clock skew breaks quorum because Paxos requires synchronised clocks to order proposals correctly.
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.
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