9.3. 使用本地存储设备删除置备失败或不需要的 Ceph OSD
您可以按照流程中的步骤,使用本地存储设备删除失败或不需要的 Ceph 置备的对象存储设备(OSD)。
只有在红帽支持团队的帮助中才支持缩减集群。
- 当 Ceph 组件没有处于健康状态时删除 OSD 可能会导致数据丢失。
- 同时删除两个或多个 OSD 会导致数据丢失。
先决条件
- 检查 Ceph 是否健康。如需更多信息,请参阅 验证 Ceph 集群处于健康状态。
- 确保没有触发警报或任何重建过程正在进行中。
流程
假如,通过将 OSD 部署中的副本扩展到 0 来标记 OSD 停机。如果 OSD 已因为失败而停机,您可以跳过这一步。
oc scale deployment rook-ceph-osd-<osd-id> --replicas=0
# oc scale deployment rook-ceph-osd-<osd-id> --replicas=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从集群中移除失败的 OSD。
failed_osd_id=<osd_id> oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=$failed_osd_id | oc create -f -
# failed_osd_id=<osd_id> # oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=$failed_osd_id | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,
FAILED_OSD_ID
是 pod 名称中紧接在rook-ceph-osd
前缀后面的整数。通过检查日志来验证 OSD 是否已成功移除。
oc logs -n openshift-storage ocs-osd-removal-$<failed_osd_id>-<pod-suffix>
# oc logs -n openshift-storage ocs-osd-removal-$<failed_osd_id>-<pod-suffix>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:如果您遇到错误
cephosd:osd.0 is not ok to destroy
from the ocs-osd-removal-job pod in OpenShift Container Platform,请参阅在 删除失败或不需要的 Ceph OSD 时对错误cephosd:osd.0
进行故障排除。 删除与故障 OSD 关联的持久性卷声明(PVC)资源。
获取与故障 OSD 关联的
PVC
。oc get -n openshift-storage -o yaml deployment rook-ceph-osd-<osd-id> | grep ceph.rook.io/pvc
# oc get -n openshift-storage -o yaml deployment rook-ceph-osd-<osd-id> | grep ceph.rook.io/pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取与
PVC 关联的持久性卷
(PV)。oc get -n openshift-storage pvc <pvc-name>
# oc get -n openshift-storage pvc <pvc-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取失败的设备名称。
oc get pv <pv-name-from-above-command> -oyaml | grep path
# oc get pv <pv-name-from-above-command> -oyaml | grep path
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取与故障 OSD 关联的
prepare-pod
。oc describe -n openshift-storage pvc ocs-deviceset-0-0-nvs68 | grep Mounted
# oc describe -n openshift-storage pvc ocs-deviceset-0-0-nvs68 | grep Mounted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在删除关联的 PVC 前,删除
osd-prepare pod
。oc delete -n openshift-storage pod <osd-prepare-pod-from-above-command>
# oc delete -n openshift-storage pod <osd-prepare-pod-from-above-command>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除与故障 OSD 关联的
PVC
。oc delete -n openshift-storage pvc <pvc-name-from-step-a>
# oc delete -n openshift-storage pvc <pvc-name-from-step-a>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从
LocalVolume 自定义资源
(CR)中删除失败的设备条目。使用失败设备登录到节点。
oc debug node/<node_with_failed_osd>
# oc debug node/<node_with_failed_osd>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为失败的设备名称记录 /dev/disk/by-id/<id>。
ls -alh /mnt/local-storage/localblock/
# ls -alh /mnt/local-storage/localblock/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:在以下情况下,Local Storage Operator 用于置备 OSD,使用 {osd-id} 登录机器并删除设备符号链接。
oc debug node/<node_with_failed_osd>
# oc debug node/<node_with_failed_osd>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取故障设备名称的 OSD 符号链接。
ls -alh /mnt/local-storage/localblock
# ls -alh /mnt/local-storage/localblock
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除符号链接。
rm /mnt/local-storage/localblock/<failed-device-name>
# rm /mnt/local-storage/localblock/<failed-device-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 删除与 OSD 关联的 PV。
oc delete pv <pv-name>
# oc delete pv <pv-name>
验证步骤
要检查 OSD 是否已成功删除,请运行:
#oc get pod -n openshift-storage ocs-osd-removal-$<failed_osd_id>-<pod-suffix>
#oc get pod -n openshift-storage ocs-osd-removal-$<failed_osd_id>-<pod-suffix>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令必须将状态返回为 Completed。