Tune recovery and backfill safely
1 · Prerequisites
Confirm every item is in place before any state change.
- Recovery is taking too long
- Recovery is impacting client I/O
2 · Pre-checks
Read-only diagnostic commands. If any of these don't match expected output, stop and investigate further.
- · ceph -s reports the current recovery rate
- · ceph progress reports the recovery percentage
- · ceph daemonperf <osd> shows per-OSD latency
3 · Procedure
Execute each step in order. Verify the expected output of a step before moving to the next.
- 1Capture the baseline latency and IOPS
- 2Decide the target recovery rate
- 3ceph config set osd osd_recovery_max_active 3
- 4ceph config set osd osd_recovery_max_operations 5
- 5ceph config set osd osd_recovery_sleep 0.1
- 6ceph config set osd osd_max_backfills 1
- 7Apply per-pool priorities: ceph osd pool set <pool> recovery_priority 5
- 8Verify: client latency is acceptable; recovery completes
4 · Verification
Confirm the procedure actually fixed the problem.
- ✓Recovery completes within the planned window
- ✓Client latency p99 is acceptable
- ✓Cluster is HEALTH_OK
5 · Rollback
If verification fails, undo the procedure in reverse order.
- ↶If latency increases: reduce the recovery rate
- ↶If recovery stalls: identify the slow OSD
- ↶If pool priorities are wrong: revert
6 · Escalation
When the runbook isn't enough, contact:
- · Storage team
Tune recovery and backfill safely
This runbook covers Tune recovery and backfill safely on a Ceph Tentacle cluster.
When to use
- Active production scenario matching the impact (
service-affecting) - 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.
- Recovery is taking too long
- Recovery is impacting client I/O
Pre-checks
Collect evidence before taking action. Evidence is the proof the runbook worked.
# ceph -s reports the current recovery rate
# ceph progress reports the recovery percentage
# ceph daemonperf `<osd>` shows per-OSD latency
Procedure
Step 1
Capture the baseline latency and IOPS
Step 2
Decide the target recovery rate
Step 3
ceph config set osd osd_recovery_max_active 3
Step 4
ceph config set osd osd_recovery_max_operations 5
Step 5
ceph config set osd osd_recovery_sleep 0.1
Step 6
ceph config set osd osd_max_backfills 1
Step 7
Apply per-pool priorities: ceph osd pool set <pool> recovery_priority 5
Step 8
Verify: client latency is acceptable; recovery completes
Verification
After completing the procedure, verify the result:
# Recovery completes within the planned window
# Client latency p99 is acceptable
# Cluster is HEALTH_OK
Rollback
If the procedure does not produce the expected verification, roll back:
- If latency increases: reduce the recovery rate
- If recovery stalls: identify the slow OSD
- If pool priorities are wrong: revert
Escalation
If you cannot roll back or the rollback fails, escalate:
- Storage team