Retiring a Ceph host removes it from cephadm scheduling, daemon placement, and the cluster host inventory after data and services have moved elsewhere. A storage node should leave the cluster only after OSD data evacuation and daemon drain checks finish, because forced removal can discard data that was still assigned to that host.
Cephadm handles normal host decommissioning through ceph orch host drain and ceph orch host rm. Draining applies special labels that prevent new daemon placement, schedules all OSD daemons on the host for removal, and waits for managed daemons to disappear before the host record is removed.
Use an administration host with a working cluster config, a keyring with orchestrator permissions, and enough remaining capacity to absorb the host's data. Replace ceph-node2 with the host being retired, and avoid offline force removal while the host can still be drained because that mode force-purges OSD records for unrecoverable hosts.
$ ceph -s
cluster:
id: 11111111-2222-3333-4444-555555555555
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-admin,ceph-node1,ceph-node3 (age 2h)
mgr: ceph-admin.abc123(active, since 2h)
osd: 6 osds: 6 up, 6 in
data:
pools: 4 pools, 256 pgs
objects: 3.42M objects, 8.1 TiB
usage: 24 TiB used, 76 TiB / 100 TiB avail
pgs: 256 active+clean
Start with a named health state so the drain is not hiding an unrelated recovery or placement-group issue.
Related: How to check Ceph cluster health
$ ceph orch ps --hostname ceph-node2 --refresh NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID osd.12 ceph-node2 running 5s ago 30d 2.0G - 20.2.0 1a2b3c4d5e6f aa11bb22cc33 osd.13 ceph-node2 running 5s ago 30d 2.1G - 20.2.0 1a2b3c4d5e6f bb22cc33dd44
--refresh asks cephadm to update cached daemon state before printing the table.
$ ceph orch host drain ceph-node2
ceph orch host drain applies _no_schedule and _no_conf_keyring and schedules OSD removal for the host. Add --zap-osd-devices only when the disks should be wiped as part of decommissioning.
$ ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE STARTED_AT 12 ceph-node2 draining 64 False False 2026-06-29 08:20:31.123456 13 ceph-node2 done, waiting for purge 0 False False 2026-06-29 08:20:31.123456
Wait for the retiring host's OSD rows to finish before removing the host. If an OSD is not safe to destroy, stop and complete the dedicated OSD removal path first.
Related: How to safely remove a Ceph OSD
$ ceph orch ps --hostname ceph-node2 --refresh --format json []
An empty list means cephadm no longer reports daemons assigned to ceph-node2.
$ ceph orch host rm ceph-node2 --rm-crush-entry
Use ceph orch host rm ceph-node2 --offline --force only when the host cannot be recovered. Offline removal can force-purge OSD records and service specs that still name the host must be updated manually.
$ ceph orch host ls HOST ADDR LABELS STATUS ceph-admin 192.0.2.10 _admin ceph-node1 192.0.2.11 ceph-node3 192.0.2.13
$ ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 24.00000 root default -3 12.00000 host ceph-node1 4 hdd 6.00000 osd.4 up 1.00000 1.00000 5 hdd 6.00000 osd.5 up 1.00000 1.00000 -7 12.00000 host ceph-node3 20 hdd 6.00000 osd.20 up 1.00000 1.00000 21 hdd 6.00000 osd.21 up 1.00000 1.00000
The --rm-crush-entry removal fails while OSD entries still belong to that host, so this check also confirms the host bucket cleanup.
$ ceph -s
cluster:
id: 11111111-2222-3333-4444-555555555555
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node1,ceph-node3,ceph-admin (age 5m)
mgr: ceph-admin.abc123(active, since 2h)
osd: 4 osds: 4 up, 4 in
data:
pools: 4 pools, 256 pgs
objects: 3.42M objects, 8.1 TiB
usage: 24 TiB used, 52 TiB / 76 TiB avail
pgs: 256 active+clean
If the cluster reports HEALTH_WARN or HEALTH_ERR after removal, use the named health codes before retiring the hardware.