CephLXXVII · AlertingAlerting
The OSD down alert and its response
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
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
| Scope | Meaning | Response |
|---|---|---|
| 1 OSD | a device or daemon | check the device; let recovery run |
| Several on one host | the host | check the host; consider noout |
| All on one host | host down | restore the host; noout if brief |
| Several hosts | rack, switch, or power | escalate; check the fabric |
| Many across the cluster | network or monitor problem | check 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
| Action | Why |
|---|---|
| Restarting OSDs blindly | may mask the cause and cause flapping |
Setting noout and forgetting it | failure detection disabled indefinitely |
| Marking many OSDs out at once | a large rebalance while already degraded |
| Purging an OSD before diagnosing | destroys the evidence and the data |
| Ignoring it because the cluster is still serving | the degraded window is the risk |
Quiz
Knowledge check · 4 questions
Q1. OSDs are reported down across many different hosts simultaneously. What is the most likely cause?
Q2. Leaving `mon_osd_down_out_interval` at its default accepts a window of reduced redundancy in exchange for not rebalancing on transient outages.
Q3. Respond to twelve OSDs down.
An alert reports twelve OSDs down. The cluster is still serving I/O. It is 03:00.
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