CephLIX · BackfillBackfill
Pausing and resuming backfill
What you'll learn
- Apply the correct flag for each pausing need
- Distinguish the flags and their scopes
- Resume safely and verify
- Avoid the flags with cluster-wide consequences
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
Several flags stop data movement and they differ in what they cover. One of them stops client I/O entirely, which is why choosing deliberately matters.
The flags
ceph osd set norebalance
ceph osd set nobackfill
ceph osd set norecover
ceph osd dump | grep flags
| Flag | Stops | Leaves running |
|---|---|---|
norebalance | movement of misplaced objects | recovery of degraded PGs |
nobackfill | all backfill, including for degraded PGs | log-based recovery |
norecover | all recovery | backfill |
noout | OSDs being marked out | everything else |
nodown | OSDs being marked down | everything else |
pause | all client I/O | nothing |
norebalance is the one to reach for. It stops the optimisation work and
leaves the durability work running, which is what makes it safe to use
during business hours.
Which to use
| Need | Flag |
|---|---|
| Pause an expansion during peak hours | norebalance |
| Stop all data movement during an emergency | nobackfill and norecover |
| Prevent OSDs being marked out during maintenance | noout |
| Stop the cluster entirely | pause — almost never |
ceph osd set norebalance
ceph -s | grep -E 'flags|misplaced'
Resuming
ceph osd unset norebalance
ceph -s
watch -n 10 'ceph -s | grep -E "misplaced|recovery"'
Confirm the movement actually resumes. A flag cleared while another remains set produces no visible change and the operator concludes the resume failed.
ceph osd dump | grep flags
# flags noout,nobackfill ← two set, one cleared
Flags to avoid
pause stops all client I/O. It exists for maintenance requiring the
cluster to be quiescent and has essentially no role in ordinary
operations.
ceph osd set pause # do not, unless you mean it
ceph osd unset pause
nodown prevents OSDs being marked down, which means genuine failures
are not detected. It has a narrow use during network work where flapping
is expected, and leaving it set is dangerous.
Verifying no flags are left set
ceph osd dump | grep flags
ceph health detail | grep -i OSDMAP_FLAGS
Ceph raises a health warning for set flags, which is what prevents one being forgotten indefinitely.
Quiz
Knowledge check · 4 questions
Q1. Which flag pauses data movement while leaving degraded PG recovery running?
Q2. `nodown` is a safe flag to leave set during extended network work.
Q3. Pause a backfill during business hours.
A cluster expansion backfill is affecting client latency during peak hours. The team wants to pause it from 08:00 to 18:00 daily until it completes.
Q4. Why does Ceph raise a health warning when OSD map flags are set?
Passing score: 75%. Answers are checked in this browser.
Production discipline
Reach for norebalance rather than nobackfill when pausing data
movement; it defers optimisation without leaving degraded PGs unrepaired.
Automate setting and clearing flags on a schedule rather than relying on
memory, and treat OSDMAP_FLAGS as an item with an owner.
Cross-course references
- Kubernetes: pausing a rollout while keeping failure recovery active is the same distinction
- Linux: maintenance flags that disable monitoring need the same expiry discipline