文档目录

适用场景

  • 产品:ZCF
  • 组件:ZCE-X
  • 版本:4.2.x
  • 部署形态:双管理节点
  • 触发条件:两副本存储池中存在多个异常 OSD,已临时 lost 后集群恢复健康,需要逐块更换隔离出来的故障数据盘。

问题现象

  • 多个节点的盘同时 error,导致 OSD 异常。
  • 异常 OSD 已被临时 lost,当前存储池已恢复健康。
  • 仍需继续完成硬件层面实际换盘。
  • 注意:每次只更换一个节点上的故障 OSD。

判断方法

  1. 升级前先确认 ceph -s 为健康状态。
  2. 确认 PostgreSQL 主备同步状态正常,LSN 一致且 Diff=0。
  3. 确认 ES 与 ETCD 集群健康。
  4. 更换完成后等待数据恢复回到 100% 再进入下一块盘。

原因说明

当前风险不在于存储池已经整体不可用,而在于虽然异常 OSD 已临时隔离,但底层故障盘仍需按规范逐块替换。如果在多副本有限的情况下并行操作多个节点,会显著放大数据风险,因此必须单节点、单 OSD、逐步恢复。

解决方案

  1. 执行前准备
  • 风险等级:中风险
  • 建议在业务低峰期操作。
  • 先关闭云平台全局高可用。
  • 先备份双管理数据库。
  1. 健康检查与数据库备份
  2. 在两个管理节点备份数据库:
   zstack-ctl dump_mysql --file-name zstack-db-backup-master
   zstack-ctl dump_mysql --file-name zstack-db-backup-slave
  • 预期结果:具备数据库回退基础。
  1. 检查存储集群状态:
   ceph -s
  • 预期结果:集群为 ok 状态。
  1. 检查 PostgreSQL 同步状态:
   xms-manage db show-replication-info
  • 预期结果:主备 LSN 一致,Diff=0。
  1. 检查 ES 与 ETCD 健康:
   xms-manage -s
  • 预期结果:管理侧依赖组件健康。
  1. 禁止数据恢复并观察状态
  2. 在存储平台右上角打开“禁止数据恢复”。
  • 预期结果:后续换盘过程不会立即触发恢复压力。
  1. 新开窗口持续观察:
   watch -n 1 ceph -s
  • 预期结果:实时掌握 ceph 状态变化。
  1. 单节点停 OSD 并移出存储池
Note:

单次只能操作一个节点上的 OSD。

  1. 在问题节点把目标 OSD 类型改为 xstore3:
   echo xstore3 > /var/lib/ceph/osd/ceph-{osd_id}/type
   cat /var/lib/ceph/osd/ceph-{osd_id}/type
  • 预期结果:类型标记正确写入。
  1. 停止目标 OSD:
   systemctl stop ceph-osd@{osd_id}
   systemctl status ceph-osd@{osd_id}
  • 预期结果:确认该 OSD 已离线。
  1. 等待 ceph 层面无 peering 状态后,在存储池中执行“移除硬盘”。
  • 预期结果:目标 OSD 数据盘从存储池逻辑移出。
  1. 在“硬盘管理”中勾选该 OSD,确认所属存储池显示为“暂无”,然后执行删除。
  • 预期结果:旧 OSD 记录从平台侧删除。
  1. 热插拔更换硬盘并重新加回
  2. 硬件侧热插拔更换故障盘。
  3. 更换后在主机侧确认系统已识别新盘:
   lsblk
  • 预期结果:新盘被正常识别。
  1. 在“硬盘管理”中点击“添加硬盘”。
  2. 勾选新数据盘,按原配置打开缓存开关,并保持与原盘相同的读缓存设置。
  • 预期结果:新 OSD 数据盘被正确纳管。
  1. 等待硬盘状态变为“健康”。
  2. 在“存储池”中执行“添加硬盘”,把新 OSD 数据盘重新加入原存储池。
  • 预期结果:新 OSD 成功回到原存储池。
  1. 开启数据恢复并收口
  2. 在控制台中执行“开启数据恢复”。
  • 预期结果:存储池开始恢复数据。
  1. 等待集群数据恢复到 100%。
  2. 再次检查:
   ceph -s
  • 预期结果:存储状态恢复为 OK。
  1. 在云平台全局设置中把云主机高可用开关恢复为 True。
  • 预期结果:平台恢复正常高可用策略。
  1. 仅当上述全部完成且状态正常时,再进入下一块故障盘更换。

验证方法

  • 检查 ceph -s 为健康状态。
  • 检查 PostgreSQL、ES、ETCD 健康状态无异常。
  • 检查新盘添加后状态为“健康”。
  • 检查存储池恢复进度达到 100%。
  • 检查云平台高可用已恢复。

风险与回滚

  • 风险:误将正常磁盘移出会直接带来数据风险。
  • 风险:多节点并行换盘会放大两副本存储池风险。
  • 风险:恢复速度过高可能增加业务 IO 延迟。
  • 风险等级:中。
  • 回退:“更换磁盘无需回退”,因此应依赖严格的单盘、单节点、逐步验证策略控制风险。
ZCE-X 存储节点数据盘更换 | 技术方案 · KB | ZStack 资源中心