Removing a Ceph OSD retires one storage daemon and the disk capacity it contributes to placement groups. In a planned removal, Ceph moves placement groups away from the target before its record is purged, so cluster redundancy is not cut while data is still assigned to that device.
Cephadm manages normal OSD retirement with ceph orch osd rm. The orchestrator schedules the drain, tracks the placement group count, and removes the OSD only after it is safe to destroy; ceph orch osd rm status shows the queue while the operation is active.
Start from an administration host with a working cluster config, a keyring with orchestrator permissions, and enough free capacity on the remaining OSDs to absorb the data. Replace 12 and ceph-node2 with the target OSD ID and host from cluster output, and use --replace only when the same OSD ID will be claimed by a replacement disk.
$ ceph -s
cluster:
id: 11111111-2222-3333-4444-555555555555
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-admin,ceph-node1,ceph-node2 (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 and enough remaining capacity. Do not retire an OSD while the cluster is near its full ratio or already recovering from an unrelated placement-group issue.
Related: How to check Ceph cluster health
$ ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 36.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 -5 12.00000 host ceph-node2 12 hdd 6.00000 osd.12 up 1.00000 1.00000 13 hdd 6.00000 osd.13 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
Confirm the OSD ID from cluster output and hardware records before removing anything. A wrong ID can trigger unnecessary backfill and may reduce redundancy while the intended disk remains in service.
$ ceph orch ps --daemon_type osd --daemon_id 12 --refresh NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID osd.12 ceph-node2 running 6s ago 30d 2.0G - 20.2.0 1a2b3c4d5e6f aa11bb22cc33
$ ceph orch ls --service_type osd NAME PORTS RUNNING REFRESHED AGE PLACEMENT osd.all-available-devices 6/6 3m ago 90d *
If a drivegroup or all-available-devices spec still matches the removed disk after it becomes blank, cephadm can redeploy it as a new OSD. Set the matching spec unmanaged or change the selector before removal when the disk should stay unused.
$ ceph orch osd rm 12 Scheduled OSD(s) for removal
Add --zap only when the underlying device should be wiped. Use ceph orch osd rm 12 --replace instead when the goal is to replace a failed disk and keep the same OSD ID.
Related: How to replace a failed Ceph OSD
$ ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE STARTED_AT 12 ceph-node2 draining 48 False False 2026-06-29 08:20:31.123456
Use ceph orch osd rm stop 12 if the wrong OSD was queued and the operation must be cancelled before purge.
$ ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE STARTED_AT 12 ceph-node2 done, waiting for purge 0 False False 2026-06-29 08:20:31.123456
$ ceph osd safe-to-destroy osd.12 OSD(s) 12 are safe to destroy without reducing data durability.
Stop if safe-to-destroy reports that the OSD is not safe. Wait for recovery or investigate degraded placement groups before forcing removal.
$ ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 30.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 -5 6.00000 host ceph-node2 13 hdd 6.00000 osd.13 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
$ ceph -s
cluster:
id: 11111111-2222-3333-4444-555555555555
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-admin,ceph-node1,ceph-node2 (age 2h)
mgr: ceph-admin.abc123(active, since 2h)
osd: 5 osds: 5 up, 5 in
data:
pools: 4 pools, 256 pgs
objects: 3.42M objects, 8.1 TiB
usage: 24 TiB used, 70 TiB / 94 TiB avail
pgs: 256 active+clean
If the final health state reports HEALTH_WARN or HEALTH_ERR, keep the removed OSD ID in the change record and troubleshoot the named health checks before retiring another disk.