文档目录

适用场景

  • 产品:ZCF
  • 组件:ZCE-X
  • 涉及对象:双管理、超融合架构、单节点单缓存盘、OSD / Ceph 存储池
  • 版本:5.2.115.6
  • 触发条件: 节点 OSD 因缓存盘或数据盘故障离线,需要执行单节点单缓存盘更换。

问题现象

  • 故障节点 OSD 离线。
  • 可能由缓存盘或数据盘故障导致。
  • 更换前必须先移除故障 OSD,再执行缓存盘更换,以保证数据一致性和操作安全。

判断方法

  1. 确认当前环境属于本文适用范围,并记录当前版本、目标版本、系统架构、操作系统、部署形态和存储类型等关键信息。
  2. 检查 ceph 集群状态必须为 OK。
  3. 检查 postgres、ES、ETCD 集群状态正常。
  4. 确认单次只操作 1 台节点上的 OSD。

原因说明

在单节点单缓存盘更换场景中,故障节点 OSD 离线通常由缓存盘或数据盘故障引起。为了避免直接更换硬盘导致数据和元数据异常,必须先按标准 OSD 移除流程下线并移除故障 OSD,再更换缓存盘并恢复数据平衡。

解决方案

1. 执行前准备

  • 风险等级:中风险
  • 整体变更过程中需严格按方案执行,避免影响业务。
  • 单次只能操作 1 台节点进行变更。
  • 建议在整个过程中持续监控 ceph -s。

2. 处理步骤

  1. 检查集群状态与云平台环境。
   xms-manage db show-replication-info
   xms-manage -s
   watch -n 1 ceph -s
  • 预期结果:postgres、ES、ETCD、Ceph 集群状态均正常。
  1. 云平台侧关闭全局高可用并备份数据库。
   zstack-ctl dump_mysql --file-name zstack-db-backup-master
   zstack-ctl dump_mysql --file-name zstack-db-backup-slave
  • 预期结果:高可用已关闭,数据库备份完成。
  1. 登录存储平台,关闭“数据恢复”。
  • 预期结果:存储恢复流量停止,便于后续 OSD 处理。
  1. 底层通过命令行调整待更换节点的 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,服务已停止并确认离线。
  1. 持续执行 ceph -s,等待 Ceph 层面没有 peering 状态后,在存储侧移除并删除 OSD。
  • 存储池中选择对应物理机硬盘并执行移除。
  • 在磁盘管理中删除硬盘。
  • 预期结果:故障 OSD 已成功移除。
  1. 清除缓存分区。
  • 预期结果:旧缓存盘分区已清理,为新盘接入做准备。
  1. 执行热插拔更换缓存盘。
  • 对离线缓存盘执行热插拔。
  • 若环境不支持热插拔,则先关机下电:
   sync&&sync&&poweroff
  • 更换后上电,确认 lsblk 正确识别硬盘。
  • 预期结果:新缓存盘被系统正确识别。
  1. 在存储池中添加磁盘。
  • 添加硬盘时设置与原环境一致的读缓存。
  • 预期结果:新缓存盘成功加入存储池。
  1. 开启数据平衡。
  • 在存储 UI 中将恢复 QOS 设为低速,并开启数据恢复。
  • 预期结果:开始数据平衡恢复。
  1. 更换完成后,云平台侧重新开启云主机全局高可用。
  • 预期结果:平台恢复正常运行状态。

验证方法

  • 执行 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}
分布式存储更换缓存盘 | 技术方案 · KB | ZStack 资源中心