CephCXVII · Lost Monitor QuorumLost Monitor Quorum
The artefacts and the drill that make the recovery routine
What you'll learn
- Export the artefacts a quorum recovery depends on
- Verify each exported artefact is readable offline
- Run the quorum drill that is safe in production
- Define what the drill must measure
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 artefact a quorum recovery needs is produced by a command that requires quorum. The exports must therefore already exist when the incident starts, and the only way to know they do — and that they are readable — is to have used them recently.
The artefacts
| Artefact | Command | Why it cannot wait |
|---|---|---|
| fsid | ceph fsid | every offline tool and unit name needs it |
| Monitor membership | ceph mon dump | you cannot ask a cluster without quorum |
| Binary monmap | ceph mon getmap -o | readable offline with monmaptool |
| Admin keyring | ceph auth get client.admin | issued by the monitors you have lost |
| Configuration | ceph config dump | the config database lives in the monitors |
| CRUSH map | ceph osd getcrushmap -o | a lost CRUSH edit makes data unaddressable |
| Pool definitions | ceph osd pool ls detail | the verification target after any surgery |
OUT=/secure/ceph-state/$(date +%F)
mkdir -p $OUT
ceph fsid > $OUT/fsid
ceph mon dump > $OUT/mon-dump.txt
ceph mon getmap -o $OUT/monmap.bin
ceph config dump > $OUT/config.txt
ceph osd getcrushmap -o $OUT/crushmap.bin
ceph osd pool ls detail > $OUT/pools.txt
ceph auth get client.admin > $OUT/client.admin.keyring
The keyring is a credential and needs the protection of one. The rest is topology, and worth nothing on a filesystem inside the cluster it describes.
Proving they are readable
monmaptool --print $OUT/monmap.bin
crushtool -d $OUT/crushmap.bin -o /tmp/crush.txt
An export never read back is a hope. Both checks are offline and take seconds, so they belong in the job that produces the files.
The drill that is safe in production
Stop one monitor of three, confirm quorum holds, and time how long the
restarted member takes to return to peon.
systemctl stop ceph-$FSID@mon.ceph-mon-c.service
ceph mon stat
systemctl start ceph-$FSID@mon.ceph-mon-c.service
ceph daemon mon.ceph-mon-c mon_status
That interval is the real length of a monitor maintenance window, and it grows quietly as the store does. Measuring it quarterly is what stops someone assuming a restart is instantaneous during an incident.
The drill that must run in staging
Full quorum loss and monmap surgery — stopping two of three, confirming everything stops, then extracting, editing, and injecting a monmap on the survivor. It is irreversible and belongs nowhere near production. Run it on a staging cluster with real data volume, because store synchronisation time is what the exercise is actually measuring.
What the drill measures
| Measure | Why it matters |
|---|---|
| Time to detect | alerting must fire on MON_DOWN and on ceph timing out |
| Time to a correct diagnosis | the triage table is the lever |
Time for a restarted monitor to reach peon | bounds every maintenance window |
| Whether the runbook works without quorum | the classic and fatal defect |
| Whether the exports are current and readable | otherwise discovered mid-incident |
Quiz
Knowledge check · 4 questions
Q1. Why must the client.admin keyring be stored outside the cluster?
Q2. Text exports such as the CRUSH map and pool list are more durably useful during a quorum recovery than a monitor store backup.
Q3. Design a quorum-loss drill programme.
A team has a documented quorum recovery runbook that has never been executed. Their production cluster has three monitors; a staging cluster exists with a tenth of the data.
Q4. What does timing a single monitor restart in production actually tell you?
Passing score: 75%. Answers are checked in this browser.
Production discipline
Schedule the exports and the offline readback together — an export nobody has read is a hope, not an artefact — and keep them off the cluster they describe. Rewrite any quorum runbook so its first commands are host-local, and measure a single monitor restart quarterly so the maintenance window you assume matches the one you have.
Cross-course references
- Kubernetes: an etcd snapshot never restored is not a backup, and restore time is the number that matters
- Linux: recovery media stored on the system it recovers has failed before it is needed