文档目录

适用场景

  • 产品:ZCF
  • 组件:Cloud
  • 版本:4.4.x、3.8.x
  • 部署形态:双管理节点
  • 触发条件:ShareBlock 主存储连接失败,底层大量物理机 lock 无法释放,vgchange 卡住,并确认为 sanlock 历史已知 BUG。

问题现象

  • ShareBlock 主存储提示连接失败。
  • 大量物理机 lock 无法正常释放。
  • vgchange 命令卡住。
  • 问题根因已定位到 sanlock 组件历史 BUG。

判断方法

  1. 先确认主存储连接失败是否伴随锁释放异常。
  2. 检查 sanlock / lvmlockd 是否存在无响应进程。
  3. 升级后检查 sanlock 版本是否达到 3.8.x。

原因说明

,本次问题并非单纯链路抖动,而是 sanlock 历史已知 BUG 导致大量锁无法释放,进一步引发 vgchange 卡住和 ShareBlock 主存储连接失败,因此修复核心是升级底层 sanlock 组件。

解决方案

  1. 执行前准备
  • 风险等级:高
  • 先关闭云主机全局高可用。
  • 先备份双管理节点数据库。
  • 先把物理机和存储 ping 间隔调大到 24h (86400s),避免自动重连覆盖升级操作。
  • 必须先单台验证,再批量推广。
  1. 处理步骤
  2. 备份数据库:
   zstack-ctl dump_mysql
  • 在 VIP 管理节点和从节点都执行。
  • 预期结果:具备平台侧回退基础。
  1. 在全局配置中把物理机和存储 ping 时间调整到 86400 秒。
  • 预期结果:升级期间主机不会被自动重连干扰。
  1. 强制结束无响应的锁进程:
   pkill -9 sanlock && pkill -9 lvmlockd
   ps -ef | grep -E "sanlock|lvmlockd"
  • 预期结果:卡死的锁进程被清理,便于继续升级。
  1. 单台升级 sanlock 组件:
   yum install ./sanlock*.rpm
  • 预期结果:目标主机先完成组件替换。
  1. 检查版本:
   rpm -qa | grep sanlock
  • 预期结果:版本为 3.8.x。
  1. 单台确认流程正常后,再批量升级其他机器。
  • 预期结果:避免一开始大范围推广引入不可控风险。
  1. 升级完成后,重连物理机。
  2. 恢复全局高可用与原 ping 间隔配置。
  • 预期结果:平台恢复正常运维策略,ShareBlock 重新稳定连接。

验证方法

  • 检查 rpm -qa | grep sanlock 显示为 3.8.x。
  • 检查 ShareBlock 主存储恢复连接。
  • 检查 vgchange 不再卡住。
  • 检查主机重连和业务运行正常。

风险与回滚

  • 风险:这是底层组件升级,若操作不当可能扩大存储影响面。
  • 风险:若主机处于 Connecting / Disconnected / Unknown 且链路异常时直接重连,可能导致主存储问题扩大。
  • 风险等级:高。
  • 风控动作:
  • 在 UI 中按 UUID 找到异常主机。
  • 检查该主机到 ShareBlock 的 FC/iSCSI、多路径和磁盘识别情况。
  • 若只有单台异常,先隔离/维护该主机,避免影响整个主存储重连。
  • 等主机恢复后再操作存储重连。
  • 回滚:无细化的 RPM 降级命令,重点放在先单台验证和异常主机隔离控制风险。
ZStack Cloud 4.4.x ShareBlock sanlock 升级:处理主存储连接失败和锁未释放 | 技术方案 · KB | ZStack 资源中心