Skip to main content
RunBook Academy

CephXCV · Maintenance FlagsMaintenance Flags

The nobackfill flag in depth

Advanced⏱ ~16 minceph

What you'll learn

  • Distinguish nobackfill from norebalance precisely
  • Identify when the difference matters
  • Use it appropriately
  • Recognise its risk

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

nobackfill and norebalance look similar and differ in one respect that determines whether the flag is safe.

The difference

norebalance:  suppresses backfill of misplaced objects
nobackfill:   suppresses all backfill, including of degraded objects
ceph osd set nobackfill
ceph -s | grep -E 'degraded|misplaced|backfilling'
norebalancenobackfill
Misplaced object backfillstoppedstopped
Degraded object backfillcontinuesstopped
Log-based recoverycontinuescontinues
Can leave a PG degradednoyes
Safe during business hoursyesno

When the difference matters

A PG becomes degraded and its log gap is too large for recovery.
  → the repair requires backfill
  → norebalance permits it
  → nobackfill does not
  → the PG stays degraded until the flag is cleared

This case arises whenever an OSD is absent longer than the PG log window, which is most absences of more than a few minutes.

ceph config get osd osd_max_pg_log_entries
ceph pg dump pgs | awk '$10 ~ /backfill/ {print $1, $10}' | head

Using it appropriately

SituationAppropriate
A cluster-wide emergency requiring all movement to stopyes, briefly
Diagnosing whether backfill is causing an impactyes, briefly
Freezing the cluster state for investigationyes, briefly
Pausing an expansionno — use norebalance
Reducing background load routinelyno — use norebalance
Overnight, unattendedno
# a brief diagnostic, scripted
ceph osd set nobackfill
sleep 300
# measure
ceph osd unset nobackfill

The risk

nobackfill left set:
  a failure produces degradation the cluster cannot repair
  the degradation persists until the flag is cleared
  a second failure on those PGs is considerably worse
ceph -s | grep degraded
ceph osd dump | grep flags
The failure mode is identical to norecover's, reached by a different route:
degraded PGs that nothing repairs.

Quiz

Knowledge check · 4 questions

  1. Q1. What distinguishes `nobackfill` from `norebalance`?

  2. Q2. A PG whose OSD was absent for an hour is repaired by log-based recovery.

  3. Q3. Choose between the backfill flags.

    A team wants to pause data movement overnight while an unrelated investigation runs. They are choosing between nobackfill and norebalance.

  4. Q4. What determines whether a returning OSD's repair uses recovery or backfill?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Use norebalance rather than nobackfill for any unattended or routine pause — the difference is that nobackfill also suppresses the backfill repairing degraded PGs. Reserve nobackfill for brief, scripted, attended diagnostics.

Cross-course references

  • Kubernetes: broad suppressions that also disable healing need attended use
  • Linux: distinguishing optimisation from repair determines what is safe to defer