Investigate an inconsistent PG
1 · Prerequisites
Confirm every item is in place before any state change.
- ceph -s reports PG_DAMAGED
- A deep scrub reported an inconsistent object
2 · Pre-checks
Read-only diagnostic commands. If any of these don't match expected output, stop and investigate further.
- · ceph pg <pgid> query reports the inconsistency type
- · rados list-inconsistent-obj <pgid> enumerates the inconsistent objects
- · The affected pool is identified
3 · Procedure
Execute each step in order. Verify the expected output of a step before moving to the next.
- 1Read ceph health detail
- 2Read ceph pg <pgid> query
- 3List the inconsistent objects: rados list-inconsistent-obj <pgid>
- 4Identify the offending OSD
- 5Decide: ceph pg repair or restore from backup
- 6Run the repair or restore
- 7Verify the inconsistency is gone
4 · Verification
Confirm the procedure actually fixed the problem.
- ✓PG returns to active+clean
- ✓No OBJECT_DAMAGED in ceph health detail
- ✓Cluster is HEALTH_OK
5 · Rollback
If verification fails, undo the procedure in reverse order.
- ↶If repair fails: restore from backup
- ↶If the same OSD produces recurring inconsistencies: replace the disk
- ↶If multiple PGs are inconsistent: deeper investigation
6 · Escalation
When the runbook isn't enough, contact:
- · Storage team if the source is hardware
- · Vendor support for disk issues
Investigate an inconsistent PG
This runbook covers Investigate an inconsistent PG on a Ceph Tentacle cluster.
When to use
- Active production scenario matching the impact (
data-loss-risk) - The prerequisites are met
Prerequisites
Before starting this runbook, verify each prerequisite has been met. If a prerequisite is not met, resolve it first or escalate.
- ceph -s reports PG_DAMAGED
- A deep scrub reported an inconsistent object
Pre-checks
Collect evidence before taking action. Evidence is the proof the runbook worked.
# ceph pg `<pgid>` query reports the inconsistency type
# rados list-inconsistent-obj `<pgid>` enumerates the inconsistent objects
# The affected pool is identified
Procedure
Step 1
Read ceph health detail
Step 2
Read ceph pg <pgid> query
Step 3
List the inconsistent objects: rados list-inconsistent-obj <pgid>
Step 4
Identify the offending OSD
Step 5
Decide: ceph pg repair or restore from backup
Step 6
Run the repair or restore
Step 7
Verify the inconsistency is gone
Verification
After completing the procedure, verify the result:
# PG returns to active+clean
# No OBJECT_DAMAGED in ceph health detail
# Cluster is HEALTH_OK
Rollback
If the procedure does not produce the expected verification, roll back:
- If repair fails: restore from backup
- If the same OSD produces recurring inconsistencies: replace the disk
- If multiple PGs are inconsistent: deeper investigation
Escalation
If you cannot roll back or the rollback fails, escalate:
- Storage team if the source is hardware
- Vendor support for disk issues