11.4. 从 Ceph Storage 节点移除 OSD
此流程演示了如何从节点中删除 OSD。它假设以下有关环境的信息:
-
服务器(
ceph-storage0)有一个 OSD (ceph-osd@4),运行在/dev/sde。 -
Ceph 监控服务(
ceph-mon)在controller0上运行。 - 有足够的 OSD 来确保存储集群没有达到接近满比率。
有关 Ceph OSD 的更多信息,请参阅 Red Hat Ceph Storage Operations 指南中的 Ceph OSD。
流程
-
SSH 到
ceph-storage0,并以root身份登录。 禁用并停止 OSD 服务:
[root@ceph-storage0 ~]# systemctl disable ceph-osd@4 [root@ceph-stoarge0 ~]# systemctl stop ceph-osd@4-
从
ceph-storage0断开连接。 -
SSH 到
controller0,并以root身份登录。 识别 Ceph 监控容器的名称:
[root@controller0 ~]# podman ps | grep ceph-mon ceph-mon-controller0 [root@controller0 ~]#启用 Ceph 监控容器,将不需要的 OSD 标记为
out:[root@controller0 ~]# podman exec ceph-mon-controller0 ceph osd out 4注意此命令使 Ceph 重新平衡存储集群,并将数据复制到集群中的其他 OSD。在重新平衡完成前,集群会临时保留
active+clean状态。运行以下命令并等待存储集群状态变为
active+clean:[root@controller0 ~]# podman exec ceph-mon-controller0 ceph -w从 CRUSH map 中删除 OSD,以便它不再接收数据:
[root@controller0 ~]# podman exec ceph-mon-controller0 ceph osd crush remove osd.4删除 OSD 身份验证密钥:
[root@controller0 ~]# podman exec ceph-mon-controller0 ceph auth del osd.4删除 OSD:
[root@controller0 ~]# podman exec ceph-mon-controller0 ceph osd rm 4-
从
controller0断开连接。 -
以
stack用户身份 SSH 到 undercloud,并找到您定义CephAnsibleDisksConfig参数的 heat 环境文件。 注意 heat 模板包含四个 OSD:
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd - /dev/sde osd_scenario: lvm osd_objectstore: bluestore修改模板以删除
/dev/sde。parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd osd_scenario: lvm osd_objectstore: bluestore运行
openstack overcloud deploy以更新 overcloud。注意在本例中,您将从具有 OSD 的所有主机中删除
/dev/sde设备。如果您没有从所有节点中删除同一设备,请更新 heat 模板。有关如何使用不同devices列表定义主机的详情,请参考 第 5.5 节 “覆盖 dissimilar Ceph Storage 节点的参数”。