The Comprehensive Ceph Guide
فارسیGet started
On this page
Appendix C

Troubleshooting Guide: From Symptom to Action

3 min read

This appendix is a compact guide to handling the most common unhealthy states. Each row starts from a "symptom" and leads to the first diagnostic commands and the direction of the fix. The full explanation of each case is in the chapter listed.

General principles#

  1. 1. Before any action, record the state: ceph -s, ceph health detail and ceph osd tree.
  2. 2. Know the protective flags: noout for short maintenance work, and norebalance and nobackfill only for a clear reason. Remove them when the work is done.
  3. 3. Never make several changes at the same time. Note each change together with the command that reverts it.

Symptom → action table#

Symptom (health warning)First commandsDirection of the fixChapter
OSD_DOWN / OSD_HOST_DOWNceph osd tree down, journalctl -u ceph-*@osd.N, ceph orch ps --daemon-type osdCheck the disk, network and memory; restart; if the disk has failed, ceph orch osd rm N --replace17, 19
PG_AVAILABILITY (inactive, stuck peering)ceph pg dump_stuck inactive, ceph pg <pgid> query | jq .recovery_stateFind the blocking OSD (blocked_by, down_osds_we_would_probe) and bring it back8, 17
PG_DEGRADED / undersizedceph pg ls degraded, ceph osd df treeWait for recovery; check that there are enough failure domains for size8
OBJECT_UNFOUNDceph pg <pgid> list_unfoundFirst bring up every previous OSD; use mark_unfound_lost revert only as the last resort17
OSD_SCRUB_ERRORS / PG_DAMAGED (inconsistent)rados list-inconsistent-obj <pgid> --format=json-prettyFind the damaged copy (disk read error, checksum); then ceph pg repair <pgid>17
OSD_NEARFULL / OSD_BACKFILLFULL / OSD_FULLceph osd df, ceph df detailAdd capacity, delete data, use the balancer; raise full_ratio temporarily only for an emergency exit19, 21
SLOW_OPSceph daemon osd.N dump_ops_in_flight, dump_historic_ops, ceph osd perfFind the event where the op is stuck (queued_for_pg, waiting for subops, commit); look for a slow disk or network17, 21
MON_DOWN / lost quorumceph quorum_status (if it answers), ceph daemon mon.X mon_status on the hostRestore the majority; in the worst case, extract and inject the monmap7, 18
MON_CLOCK_SKEWchronyc tracking, ceph time-sync-statusFix NTP/chrony on all MON hosts7
MON_DISK_LOW / store growthdu -sh /var/lib/ceph/*/mon.*Fix the reason trimming is not happening (a long-unhealthy PG); ceph tell mon.X compact7
LARGE_OMAP_OBJECTSceph health detail, the cluster log for the object nameRGW: reshard, or trim the multisite logs; CephFS: look for a very large directory4, 5
BLUEFS_SPILLOVERceph daemon osd.N bluefs stats, ceph osd metadata NEnlarge the DB or move it to a faster device; compaction12
MDS_SLOW_REQUEST / MDS_CLIENT_LATE_RELEASEceph tell mds.X dump_ops_in_flight, session lsFind the client that does not release its cap; evict it in a controlled way6
MDS_TRIM_BEHIND / MDS_CACHE_OVERSIZEDceph tell mds.X cache status, perf dump mds_logRaise mds_cache_memory_limit or reduce the load; pinning6
RECENT_CRASHceph crash ls-new, ceph crash info <id>Analyse the backtrace; then ceph crash archive <id>17
MGR_MODULE_ERRORceph mgr module ls, the mgr logDisable and re-enable the module; ceph mgr fail9
CEPHADM_* (e.g. HOST_CHECK_FAILED)ceph orch host ls, ceph cephadm check-host <host>SSH, time, packages and podman/docker on the host11
⚠ Warning

Commands such as mark_unfound_lost delete, osd lost, ceph-objectstore-tool --op remove and osd force-create-pg remove data permanently. Run them only when every other option has been exhausted, with a backup, and with a second person's approval.

The Comprehensive Ceph Guide · 1.6 · November 2026
© 2026 Ramin Najarbashi · CC BY-NC-SA 4.0

Privacy: this site sets no cookies. Visits are counted with Cloudflare Web Analytics, which is cookie-less and does not track individuals.