Ceph 故障排除:OSD 已删除但 cephadm 仍报告失败

问题描述

在 Ceph 集群中删除 OSD 后,执行 ceph health detail 仍然报告失败:

HEALTH_WARN 1 failed cephadm daemon(s)
[WRN] CEPHADM_FAILED_DAEMON: 1 failed cephadm daemon(s)
    daemon osd.155 on szzs-storage-d11-0407-06 is in error state

即使 OSD 已经从 CRUSH map 和 OSD map 中删除,cephadm 服务仍在节点上尝试管理这个 daemon,导致持续报告失败。

问题分析

这是 Ceph 集群中的常见问题:cephadm 服务仍在问题节点上尝试启动已被删除的 OSD daemon,但 OSD 已经不存在,所以一直处于 error 状态。

解决步骤

1. 确认 OSD 状态

ceph osd tree | grep 155
ceph osd dump | grep "osd.155"

2. 清理 cephadm 中的 daemon 记录(推荐)

# 查看 osd.155 的 daemon 信息
ceph orch ps --daemon_name osd.155

# 强制删除 daemon 记录
ceph orch daemon rm osd.155 --force

3. 如果上面不行,手动清理

# 登录到问题节点
ssh szzs-storage-d11-0407-06

# 查看并清理 container
podman ps -a | grep osd.155
podman rm -f <container_id>

# 清理 systemd 服务(如果有)
systemctl disable ceph-osd@155
systemctl reset-failed ceph-osd@155

# 退出 SSH
exit

4. 清理 inventory 中的 OSD 记录

# 查看 cephadm inventory
ceph orch host ls

# 刷新主机信息
ceph orch host refresh szzs-storage-d11-0407-06

5. 最后检查

ceph health detail
ceph orch ps | grep osd.155

总结

最可能的解决方案是第 2 步的 ceph orch daemon rm osd.155 --force,这会让 cephadm 停止尝试管理这个已经不存在的 OSD。

执行完成后,ceph health 应该恢复正常。

发表回复

后才能评论