删除 ZStone 集群中的异常空存储池
问题现象
- ZStone 存储集群显示异常状态。
ceph -s显示HEALTH_WARN。ceph osd pool ls返回三个存储池,其中一个存储池名称异常(缺少pool前缀)。
适用场景
- 产品:ZCF。
- 组件:ZStone。
- 触发条件:ZStone Ceph 集群因异常存储池而显示
HEALTH_WARN。在本案例中,该存储池的名称在创建时缺少pool前缀。该存储池中没有数据,可以删除。
判断方法
- 执行
ceph -s,确认显示HEALTH_WARN。 - 执行
ceph osd pool ls,找到名称异常的存储池。 - 执行
ceph df,确认该异常存储池中没有数据。
原因说明
系统中创建了一个名称错误(缺少 pool 前缀)且为空的存储池,可以将其删除以清除集群告警。
解决方案
1. 执行前准备
- 将变更方案发送给客户并获得确认。
- 删除存储池前,在云平台中禁用全局 HA。
- 在两个管理节点上备份数据库:
zstack-ctl dump_mysqlmkdir -p /root/zstack-db-backupcd /root/zstack-db-backupzstack-ctl dump_mysql --file-name zstack-db-backup-mn1-$(date +%F-%H%M%S).sql.gzls -lh
2. 处理步骤
- 客户确认变更方案后,禁用全局 HA,并在两个管理节点上备份数据库。
- 打开第二个终端并执行:
watch -n 1 ceph -s
- 通过
ceph df获取异常存储池的名称和 UUID。 - 使用 Ceph 删除该存储池:
ceph osd pool delete <UUID> --yes-i-really-really-mean-it
- 删除完成后,确认:
- 删除操作显示成功。
ceph -s显示集群状态健康。- UI 显示集群状态健康。
- 在云平台中重新启用全局 HA。
验证方法
ceph -s返回HEALTH_OK。ceph osd pool ls不再列出名称异常的存储池。- ZStone UI 显示集群状态健康。
- 集群中的云主机和业务负载不受影响。
风险与回滚
- 删除错误的存储池可能导致数据丢失。执行删除命令前,使用
ceph df确认目标存储池中没有数据,并使用正确的 UUID。 - 操作时应禁用全局 HA,避免云平台对临时集群告警作出响应。
- 最佳实践:安排定期巡检,及时发现名称异常或为空的存储池。
