Skip to main content
RunBook Academy

CephLXXVII · AlertingAlerting

The OSD down alert and its response

Intermediate⏱ ~17 mincephsystemctl

What you'll learn

  • Sequence the response to an OSD down alert
  • Scale the response to the number of OSDs affected
  • Decide between waiting and intervening
  • Avoid the actions that make it worse

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

One OSD down is routine and the cluster handles it. Twelve OSDs down is a host failure. Forty is something else. The response scales with the count and the first step is establishing it.

Establishing the scope

ceph -s
ceph osd tree | grep -E 'down|host'
ceph health detail | grep -o 'osd\.[0-9]*' | sort -u | wc -l
# grouped by host — the question that matters
ceph osd tree --format json | python3 -c '
import sys,json
d = json.load(sys.stdin)
nodes = {n["id"]: n for n in d["nodes"]}
hosts = {}
for n in d["nodes"]:
    if n["type"] == "host":
        down = [nodes[c]["name"] for c in n.get("children",[])
                if nodes.get(c,{}).get("status") == "down"]
        if down: hosts[n["name"]] = down
for h, o in hosts.items(): print(h, len(o), o[:6])'

Scaling the response

ScopeMeaningResponse
1 OSDa device or daemoncheck the device; let recovery run
Several on one hostthe hostcheck the host; consider noout
All on one hosthost downrestore the host; noout if brief
Several hostsrack, switch, or powerescalate; check the fabric
Many across the clusternetwork or monitor problemcheck the network and monitors

The last row is important: OSDs marked down across many hosts is more often a network or monitor issue than mass device failure.

ceph osd tree | awk '/down/ {print}' | wc -l
ceph -s | grep -E 'mon|quorum'

Waiting versus intervening

ceph config get osd mon_osd_down_out_interval

The default is 600 seconds. Within that window the cluster is waiting to see whether the OSD returns; recovery has not started. Intervening means choosing between:

# expect it back soon — prevent the rebalance
ceph osd set noout

# it is not coming back — start recovery now
ceph osd out 44

The decision rests on whether the OSD will return within a time comparable to the recovery duration. A host rebooting returns in minutes and noout is right; a failed device does not return and waiting only extends the degraded window.

Actions that make it worse

ActionWhy
Restarting OSDs blindlymay mask the cause and cause flapping
Setting noout and forgetting itfailure detection disabled indefinitely
Marking many OSDs out at oncea large rebalance while already degraded
Purging an OSD before diagnosingdestroys the evidence and the data
Ignoring it because the cluster is still servingthe degraded window is the risk

Quiz

Knowledge check · 4 questions

  1. Q1. OSDs are reported down across many different hosts simultaneously. What is the most likely cause?

  2. Q2. Leaving `mon_osd_down_out_interval` at its default accepts a window of reduced redundancy in exchange for not rebalancing on transient outages.

  3. Q3. Respond to twelve OSDs down.

    An alert reports twelve OSDs down. The cluster is still serving I/O. It is 03:00.

  4. Q4. What determines whether to set `noout` or to mark an OSD out?

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

Production discipline

Group down OSDs by host before doing anything else — the count alone does not distinguish a device failure from a host failure from a fabric event. Check the network and monitor state first when OSDs are down across many hosts; simultaneous mass device failure is rare.

Cross-course references

  • Kubernetes: NotReady nodes across racks point at the network, not the nodes
  • Linux: correlated failures across independent hardware implicate the shared layer