Skip to main content
RunBook Academy

CephXCII · Removing Storage NodesRemoving Storage Nodes

The removal order and why it exists

Advanced⏱ ~17 minceph

What you'll learn

  • State the safe removal order
  • Explain what each step protects
  • Recognise the consequences of skipping steps
  • Recover from a removal done wrongly

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

The removal order is not convention — each step protects against a specific failure, and skipping one produces that failure.

The order

1. out       → placement is recomputed without the OSD
2. wait      → the data actually moves
3. verify    → confirm zero PGs and HEALTH_OK
4. stop      → the daemon stops with nothing depending on it
5. purge     → all three registries are cleaned
6. host      → the host is removed once no daemons remain
7. CRUSH     → empty buckets are cleaned

What each step protects

StepProtects against
outremoving an OSD whose PGs have nowhere else to be
waitremoving before the data has moved
verifyremoving while the movement is stalled or incomplete
stopremoving a running daemon from under the cluster
purgeleaving residue in one of three registries
host removalremoving a host still running services
CRUSH cleanupa map describing a cluster that does not exist

The second and third are the ones that protect data. The rest protect consistency.

Consequences of skipping steps

SkippedConsequence
out, going straight to purgePGs lose a copy immediately; degraded, possibly below min_size
The waitsame, to the extent the data had not moved
Verificationremoval during a stall; some PGs lose copies
Stopping the daemonthe daemon writes to an OSD the cluster has removed
purge, using individual commandsresidue in the registries
Host removal orderservices expected but absent
Removing three OSDs from a size=3 pool without draining:
  every PG that had copies on all three loses all of them
  those PGs are permanently lost

This is the case the order exists to prevent, and it is reachable in a few commands.

Recovering from a wrong removal

# an OSD removed but its data still on the device
ceph-volume lvm activate --all
ceph osd tree

If the device still holds the OSD’s data and it was purged rather than zapped, reactivating it may restore the OSD:

OSD_ID=12
OSD_FSID=3e0b2c14-9f3a-4d21-8a77-1c9f0e2b5d64
ceph-volume lvm list
ceph-volume lvm activate ${OSD_ID} ${OSD_FSID}
SituationRecoverable?
Purged, device untouchedoften, by reactivating
Purged and zappedno
Removed while PGs were on it, other copies existyes, by recovery
Removed while it held the only copyno
ceph pg dump pgs | awk '$10 ~ /incomplete|down/ {print $1, $10}'

incomplete PGs after a removal indicate copies that no longer exist anywhere.

Quiz

Knowledge check · 4 questions

  1. Q1. What happens if three OSDs holding a size=3 PG's copies are removed without draining?

  2. Q2. A purged OSD whose device has not been zapped can sometimes be reactivated.

  3. Q3. Recover from OSDs removed without draining.

    An operator purged four OSDs from a healthy cluster without draining them, to save time during a decommission. Several PGs now show as incomplete.

  4. Q4. Which two steps of the removal order protect data, and which protect consistency?

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

Production discipline

Follow the order — out, wait, verify, stop, purge, host, CRUSH — and recognise that the wait and the verification are the two steps protecting data. If OSDs were removed without draining, preserve the devices immediately; reactivation is the only recovery path and zapping closes it.

Cross-course references

  • Kubernetes: forced deletion of resources bypasses the protections that ordering provides
  • Linux: removing array members without confirming resync completed loses data the same way