In some cases, you may need to scale down your Ceph cluster, or even replace a Ceph Storage node (for example, if a Ceph Storage node is faulty). In either situation, you need to disable and rebalance any Ceph Storage node you are removing from the Overcloud to ensure no data loss. This procedure explains the process for removing a Ceph Storage node.
(undercloud) [stack@undercloud ~]$ openstack server list --flavor Controller +--------------------------------------+---------------------+--------+------------------------+----------------+------------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+---------------------+--------+------------------------+----------------+------------+ | c06869c4-392e-4a0d-85c2-a6402fcbd3e4 | overcloudvas-ctrl-1 | ACTIVE | ctlplane=192.168.81.18 | overcloud-full | Controller | | adcd3bd7-2bce-4d91-aa3a-64a54abc62a1 | overcloudvas-ctrl-2 | ACTIVE | ctlplane=192.168.81.16 | overcloud-full | Controller | | ae07208b-49c9-4db3-a0ce-446a47e89abd | overcloudvas-ctrl-0 | ACTIVE | ctlplane=192.168.81.9 | overcloud-full | Controller | +--------------------------------------+---------------------+--------+------------------------+----------------+------------+ (undercloud) [stack@undercloud ~]$ ssh [email protected] Warning: Permanently added '192.168.81.18' (ECDSA) to the list of known hosts. [heat-admin@overcloudvas-ctrl-1 ~]$
[heat-admin@ <CTRL node> ~]$ sudo ceph osd tree [heat-admin@ <CTRL node> ~]$ sudo ceph status
[heat-admin@overcloudh3n-ctrl-0 ~]$ sudo ceph daemon /var/run/ceph/ceph-mon.$(hostname -a).asok config show | egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills" "osd_max_backfills": "2", "osd_recovery_max_active": "4", "osd_recovery_op_priority": "3",
sudo ceph osd set noout sudo ceph osd set norebalance sudo ceph osd set norecover sudo ceph osd set noscrub sudo ceph osd set nodeep-scrub sudo ceph tell 'osd.*' injectargs '--osd-max-backfills 1' sudo ceph tell 'osd.*' injectargs '--osd_recovery_max_active 1' sudo ceph tell 'osd.*' injectargs '--osd_recovery_op_priority 1'
[heat-admin@ <CTRL node> ~]$ sudo docker exec ceph-mon-$(hostname -s) ceph status
[heat-admin@ <CEPH node> ~]$ sudo ceph daemon /var/run/ceph/ceph-osd. ceph-osd.0.asok ceph-osd.12.asok ceph-osd.24.asok ceph-osd.36.asok ceph-osd.48.asok ceph-osd.60.asok ceph-osd.6.asok ceph-osd.77.asok ceph-osd.87.asok ceph-osd.101.asok ceph-osd.18.asok ceph-osd.30.asok ceph-osd.42.asok ceph-osd.54.asok ceph-osd.66.asok ceph-osd.72.asok ceph-osd.81.asok ceph-osd.98.asok [heat-admin@overcloudh3n-cephstorage12hw11-0 ~]$ sudo ceph daemon /var/run/ceph/ceph-osd.0.asok config show | egrep "osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills" "osd_max_backfills": "1", "osd_recovery_max_active": "1", "osd_recovery_op_priority": "1",
[heat-admin@ <CEPH node> ~]$ for i in $(sudo docker ps | grep -i ceph-osd | awk -F 'ceph-osd-' '{print $2}' | sort -n ); do \ echo "Removing OSD id : ${I.EN_US}"; \ sudo systemctl disable ceph-osd@${I.EN_US}.service --now; \ done
[heat-admin@ <CEPH node> ~]$ sudo docker ps
[heat-admin@ <CTRL node> ~]$ sudo ceph status
[heat-admin@ <CTRL node> ~]$ for i in $(sudo docker exec ceph-mon-$(hostname -s) ceph osd ls-tree <OSD node to remove> ); do \ echo "Putting OUT OSD id ${I.EN_US}" ; \ sudo docker exec ceph-mon-$(hostname -s) ceph osd out ${I.EN_US}; \ done
[heat-admin@ <CTRL node> ~]$ sudo ceph osd unset norecover [heat-admin@ <CTRL node> ~]$ sudo ceph osd unset norebalance
[heat-admin@ <CTRL node> ~]$ sudo ceph -w
[heat-admin@ <CTRL node> ~]$ sudo docker exec ceph-mon-$(hostname -s) ceph osd safe-to-destroy $(sudo docker exec ceph-mon-$(hostname -s) ceph osd ls-tree <OSD node to remove> )
[heat-admin@ <CTRL node> ~]$ for i in $(sudo docker exec ceph-mon-$(hostname -s) ceph osd ls-tree <OSD node to remove> ); do \ echo "Purging OSD id ${I.EN_US}" ; \ sudo docker exec ceph-mon-$(hostname -s) ceph osd purge ${I.EN_US} --yes-i-really-mean-it; \ done
[heat-admin@ <CTRL node> ~]$ sudo ceph osd crush rm <REMOVED_NODE>
[heat-admin@ <CTRL node> ~]$ sudo ceph tell 'osd.*' injectargs '--osd_recovery_op_priority <initial_value> ' [heat-admin@ <CTRL node> ~]$ sudo ceph tell 'osd.*' injectargs '--osd_recovery_max_active <initial_value> ' [heat-admin@ <CTRL node> ~]$ sudo ceph tell 'osd.*' injectargs '--osd-max-backfills <initial_value> ' [heat-admin@ <CTRL node> ~]$ sudo ceph osd unset nodeep-scrub [heat-admin@ <CTRL node> ~]$ sudo ceph osd unset noscrub [heat-admin@ <CTRL node> ~]$ sudo ceph osd unset noout
[heat-admin@ <CEPH node> ~]$ sudo subscription-manager remove --all [heat-admin@ <CEPH node> ~]$ sudo subscription-manager unregister [heat-admin@ <CEPH node> ~]$ sudo subscription-manager clean
(undercloud) [stack@undercloud ~]$ openstack baremetal node list (undercloud) [stack@undercloud ~]$ openstack baremetal node maintenance set UUID
(undercloud) [stack@undercloud ~]$ openstack stack list
(undercloud) [stack@undercloud ~]$ openstack server list
(undercloud) [stack@undercloud ~]$ openstack overcloud node delete --stack overcloud NODE_UUID
(undercloud) [stack@undercloud ~]$ openstack baremetal node delete <baremetal node uuid to be deleted>
[heat-admin@ <CTRL node> ~]$ sudo ceph status [heat-admin@ <CTRL node> ~]$ sudo ceph osd tree