适用场景
- 产品:ZCF
- 组件:ZCE-X
- 涉及对象:双管理、超融合架构、单节点单缓存盘、OSD / Ceph 存储池
- 版本:5.2.115.6
- 触发条件: 节点 OSD 因缓存盘或数据盘故障离线,需要执行单节点单缓存盘更换。
问题现象
- 故障节点 OSD 离线。
- 可能由缓存盘或数据盘故障导致。
- 更换前必须先移除故障 OSD,再执行缓存盘更换,以保证数据一致性和操作安全。
判断方法
- 确认当前环境属于本文适用范围,并记录当前版本、目标版本、系统架构、操作系统、部署形态和存储类型等关键信息。
- 检查
ceph集群状态必须为 OK。 - 检查
postgres、ES、ETCD 集群状态正常。 - 确认单次只操作 1 台节点上的 OSD。
原因说明
在单节点单缓存盘更换场景中,故障节点 OSD 离线通常由缓存盘或数据盘故障引起。为了避免直接更换硬盘导致数据和元数据异常,必须先按标准 OSD 移除流程下线并移除故障 OSD,再更换缓存盘并恢复数据平衡。
解决方案
1. 执行前准备
- 风险等级:中风险
- 整体变更过程中需严格按方案执行,避免影响业务。
- 单次只能操作 1 台节点进行变更。
- 建议在整个过程中持续监控
ceph -s。
2. 处理步骤
- 检查集群状态与云平台环境。
xms-manage db show-replication-info
xms-manage -s
watch -n 1 ceph -s
- 预期结果:
postgres、ES、ETCD、Ceph 集群状态均正常。
- 云平台侧关闭全局高可用并备份数据库。
zstack-ctl dump_mysql --file-name zstack-db-backup-master
zstack-ctl dump_mysql --file-name zstack-db-backup-slave
- 预期结果:高可用已关闭,数据库备份完成。
- 登录存储平台,关闭“数据恢复”。
- 预期结果:存储恢复流量停止,便于后续 OSD 处理。
- 底层通过命令行调整待更换节点的 OSD 类型并停止 OSD。
echo xstore3 > /var/lib/ceph/osd/ceph-{osd_id}/type
cat /var/lib/ceph/osd/ceph-{osd_id}/type
systemctl stop ceph-osd@{osd_id}
systemctl status ceph-osd@{osd_id}
- 预期结果:目标 OSD 类型已调整为
xstore3,服务已停止并确认离线。
- 持续执行
ceph -s,等待 Ceph 层面没有peering状态后,在存储侧移除并删除 OSD。
- 存储池中选择对应物理机硬盘并执行移除。
- 在磁盘管理中删除硬盘。
- 预期结果:故障 OSD 已成功移除。
- 清除缓存分区。
- 预期结果:旧缓存盘分区已清理,为新盘接入做准备。
- 执行热插拔更换缓存盘。
- 对离线缓存盘执行热插拔。
- 若环境不支持热插拔,则先关机下电:
sync&&sync&&poweroff
- 更换后上电,确认
lsblk正确识别硬盘。 - 预期结果:新缓存盘被系统正确识别。
- 在存储池中添加磁盘。
- 添加硬盘时设置与原环境一致的读缓存。
- 预期结果:新缓存盘成功加入存储池。
- 开启数据平衡。
- 在存储 UI 中将恢复 QOS 设为低速,并开启数据恢复。
- 预期结果:开始数据平衡恢复。
- 更换完成后,云平台侧重新开启云主机全局高可用。
- 预期结果:平台恢复正常运行状态。
验证方法
- 执行
watch -n 1 ceph -s或ceph -s,确认集群恢复健康。 - 确认
postgres、ES、ETCD 状态正常。 - 检查新缓存盘已被系统识别并成功加入存储池。
- 确认开启数据恢复后开始数据平衡,且高可用恢复正常。
风险与回滚
- 风险:UI 移除 OSD 必须在底层环境变更后执行,否则可能导致异常。
- 风险:若
peering状态持续超过 10 秒,可能影响业务,需要按紧急处理步骤恢复。 - 风险:重平衡会占用恢复带宽,建议恢复 QOS 设置为低速。
- 风险:需提前确认存储池与 OSD 剩余容量足够支撑后续数据均衡。
- 回滚:未单独提供独立完整回滚步骤,实际异常处理以恢复业务为目标,可根据备份及紧急处理流程执行。
异常处理建议
若恢复过程中出现 PG 卡住(peering 或 remapped)导致业务中断,可按方案执行:
ceph -s
ceph pg dump | grep -E "peering|remapped"
ceph pg dump | grep {pg_id}
ceph osd down {osd_id}
