适用场景
- 产品:
ZCF - 组件:
ZStack Cloud - 版本:
4.8.x - 部署形态:双管理节点
- 触发条件:sharedblock 环境中云盘安装路径与快照路径不一致,需要通过数据库元数据修正。
问题现象
- 云盘安装路径不一致。
- 当前快照路径与当前云盘路径指向不同对象。
- 需要同时检查卷元数据与快照树元数据。
判断方法
- 先查看
VolumeVO中目标卷的installPath。 - 再检查相关快照的
treeUuid、parentUuid和latest标记。 - 如果同一个快照树下存在多个记录,要明确保留哪一个快照链。
原因说明
本次问题的根因是云盘安装路径不一致,因此需要直接修正数据库中的卷路径元数据,并同步清理快照树中的异常引用,保证卷与快照链的一致性。
解决方案
- 执行前准备
- 风险等级:高
- 先关闭云平台全局高可用。
- 先备份双管理节点数据库。
- 本次操作直接修改数据库条目,必须严格核对 UUID 与路径。
- 处理步骤
- 关闭云平台全局高可用,并备份数据库:
zstack-ctl dump_mysql
- 预期结果:具备回退基础。
- 查询当前卷路径:
select * from VolumeVO where uuid='8b389dfd74f84e0f9d5edc15e99b3cbc'\G;
- 预期结果:确认当前
installPath与实际期望是否不一致。
- 把卷路径修正为正确的 sharedblock 路径:
update VolumeVO set installPath = 'sharedblock://f9c3c78f7674441ba97003c0b21265c8/97793a14251b4c9684d03b9ec87f406f' where uuid = '8b389dfd74f84e0f9d5edc15e99b3cbc';
- 预期结果:卷元数据路径恢复正确。
- 查询异常快照对应的
treeUuid:
select * from VolumeSnapshotVO where uuid="ed4372d07adf41e8b6cc2afce65a18b1"\G;
select * from VolumeSnapshotVO where treeUuid="ba19dff9e5d44c8d9594b1dd828e63d9"\G;
select * from VolumeSnapshotTreeVO where uuid="ba19dff9e5d44c8d9594b1dd828e63d9"\G;
select * from VolumeSnapshotReferenceVO where referenceUuid="ba19dff9e5d44c8d9594b1dd828e63d9"\G;
- 预期结果:明确快照树结构与引用关系。
- 如果当前
treeUuid下不止一个快照,则删除异常快照:
delete from VolumeSnapshotVO where uuid="ed4372d07adf41e8b6cc2afce65a18b1";
- 预期结果:异常快照记录被清理。
- 查询剩余快照的
parentUuid与快照链:
select * from VolumeSnapshotVO where treeUuid="ba19dff9e5d44c8d9594b1dd828e63d9"\G;
select * from VolumeSnapshotVO where uuid="8eded03f3c394dfdbf68f1313a2bbe32";
- 预期结果:找到应保留的快照记录。
- 将保留快照的
latest改为true:
Update VolumeSnapshotVO set latest=true where uuid="8eded03f3c394dfdbf68f1313a2bbe32";
- 预期结果:快照树状态恢复一致。
- 开启云平台全局高可用。
- 预期结果:平台恢复常态运行。
验证方法
- 检查
VolumeVO.installPath已更新为正确路径。 - 检查快照树中异常快照已清理。
- 检查保留快照的
latest标记正确。 - 检查平台与业务运行正常。
风险与回滚
- 风险:直接修改或删除数据库条目,若 UUID 核对错误,可能导致卷或快照链损坏。
- 风险等级:高。
- 回滚方式:直接使用备份数据库还原。
