Skip to main content
RunBook Academy

CephCXIV · Complete Storage Node LossComplete Storage Node Loss

Bringing the replacement into the cluster

Intermediate⏱ ~18 minceph

What you'll learn

  • Choose between removing now and holding for the replacement
  • Verify replacement hardware parity before it takes placement
  • Add the host and its OSDs through the orchestrator
  • Phase in CRUSH weight so backfill is paced deliberately

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

Losing a node costs one full re-replication. Replacing it costs a second one, in the other direction. Whether you pay once or twice is decided in the first hour, before any hardware arrives.

Two migrations, or one

ChoiceData movementRedundancy exposure
Purge now, add the replacement latertwo full migrationsshort — hours
Hold noout, add within the windowone migrationlong — the whole wait
Hold noout, hardware slipsone migration, eventuallyunbounded, and unplanned
ceph osd set noout          # only against a committed, short delivery date
ceph osd unset noout
Holding noout is a bet that hardware arrives when someone said it would.
For a permanent loss the bet is usually wrong, and the cost of losing it
is running on two copies for as long as the slip lasts.

Parity checks before it takes placement

ceph cephadm check-host stor-07r 10.20.0.27
ceph orch host add stor-07r 10.20.0.27
ceph orch device ls stor-07r --refresh
PropertyWhy it matters
Device countfewer devices means the host holds less than its predecessor
Device sizeCRUSH weight is derived from capacity, so size changes placement share
Device classan ssd class where hdd is expected silently excludes it from rules
Network patha 10G replacement in a 25G cluster becomes the recovery bottleneck
Kernel and Ceph versiona mismatched host deploys but behaves differently under load
ceph orch device ls stor-07r --format json | python3 -c '
import sys,json
for h in json.load(sys.stdin):
    for d in h.get("devices", []):
        print("%-12s %-10s %6.1f TiB  available=%s" %
              (d.get("path"), d.get("human_readable_type"),
               d.get("sys_api", {}).get("size", 0)/1024**4, d.get("available")))'

Adding the OSDs

ceph orch apply -i /root/osd-spec.yaml --dry-run
ceph orch apply -i /root/osd-spec.yaml
ceph orch ps --daemon-type osd --hostname stor-07r
# or one device at a time when you want to watch each one land
ceph orch daemon add osd stor-07r:/dev/sdb
ceph osd tree | grep -A9 stor-07r
ceph osd metadata 48 | python3 -c '
import sys,json
d = json.load(sys.stdin)
print(d.get("hostname"), d.get("bluestore_bdev_type"), d.get("osd_objectstore"))'

Phasing in the weight

# create them with zero weight so nothing moves until you say so
ceph config set osd osd_crush_initial_weight 0
for id in 48 49 50 51 52 53 54 55; do
  ceph osd crush reweight "osd.$id" 3.0
done
ceph -s | grep misplaced
StageWeight per 10 TiB devicePurpose
13.0confirm the OSDs take IO and stay up
26.0measure client impact at half load
39.095full weight, matching the surviving hosts
ceph config rm osd osd_crush_initial_weight
ceph balancer status
ceph osd df tree | tail -12

Quiz

Knowledge check · 4 questions

  1. Q1. A node is rebuilt with 18 TiB devices in a cluster otherwise running 10 TiB devices. What follows?

  2. Q2. Reusing the destroyed OSD IDs avoids the backfill that fresh IDs would cause.

  3. Q3. Decide how to handle a permanently lost node with replacement hardware ordered.

    A node is destroyed. The vendor quotes replacement hardware in ten to fifteen working days. The cluster has four other hosts, replicated pools at `size=3`, and 38% used.

  4. Q4. What should be verified about replacement hardware before it takes placement?

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

Production discipline

Do not hold noout against a delivery estimate — a range is not a date, and the cost of the bet is two-copy exposure for its whole duration. Bring replacement OSDs in at zero weight and raise them in stages, so a misconfigured device class or a slow network path shows up while only a fraction of the data has moved.

Cross-course references

  • Kubernetes: a replacement node with different resources changes scheduling across the cluster
  • Linux: adding a larger member to a striped set redistributes more than the new member