Skip to main content
RunBook Academy

CephLIX · BackfillBackfill

Pausing and resuming backfill

Intermediate⏱ ~16 minceph

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

Not yet marked complete on this device.

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
FlagStopsLeaves running
norebalancemovement of misplaced objectsrecovery of degraded PGs
nobackfillall backfill, including for degraded PGslog-based recovery
norecoverall recoverybackfill
nooutOSDs being marked outeverything else
nodownOSDs being marked downeverything else
pauseall client I/Onothing

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

NeedFlag
Pause an expansion during peak hoursnorebalance
Stop all data movement during an emergencynobackfill and norecover
Prevent OSDs being marked out during maintenancenoout
Stop the cluster entirelypause — 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

  1. Q1. Which flag pauses data movement while leaving degraded PG recovery running?

  2. Q2. `nodown` is a safe flag to leave set during extended network work.

  3. 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.

  4. 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