知识库故障排查共享块存储因 lvmlock result -28 导致资源操作失败

共享块存储因 lvmlock result -28 导致资源操作失败

故障排查ZCF · Cloud适用版本5.3.x文章 IDKB-200149更新于2026-09-17

问题说明

lvmlockd 中累积大量 LV 锁历史信息后,lvmlockctl 的输出可能超过缓冲区限制并出现 result -28。平台可能因此无法获取完整的 VG lockspace 信息,导致需要执行 LVM 变更的资源操作失败。

现象

  • 创建云盘快照失败。
  • 云主机克隆、云盘扩容或其他涉及 LVM 变更的资源操作失败。
  • 日志可能出现 lvmlockctl result -28、无法找到 VG lockspace,或 LV 无法停用等错误。
  • 共享块主存储实际可访问,但部分资源操作无法继续执行。

适用环境

  • 产品:ZStack Cloud。
  • 存储类型:共享块存储(SharedBlock)。
  • 受影响版本:未包含 lvmlock 自动检测及恢复优化的平台版本,例如 5.3.x。
  • 组件:物理机上的 lvmlockdsanlock 和 LVM lockspace。

判断方法

在报错关联的物理机上,由 ZStack 技术支持检查:

lvmlockctl -i | head
lvmlockctl -i | wc -l
systemctl status sanlock lvmlockd
sanlock status

lvmlockctl 返回 result -28,或无法查询到应存在的 VG lockspace,可结合管理节点日志和物理机日志确认是否属于本问题。

原因说明

lvmlockctl dump buffer 的容量有限。当 lvmlockd 累积大量 LV 锁历史信息时,查询输出可能超过限制并被截断。平台因此无法读取完整的 VG lockspace 信息,进而影响快照、扩容、克隆及其他涉及 LVM 状态变更的操作。

处理建议

临时恢复方案

Note:

警告:以下命令会中断物理机的共享存储锁服务。必须由 ZStack 技术支持在获批的维护窗口内执行。执行前必须关闭全局云主机高可用(VM HA),确认操作物理机及受影响 VG,并评估该物理机上运行中的云主机。不要在 HA 开启时直接执行。

  1. 在 ZStack 管理界面关闭全局云主机高可用(VM HA),并确认配置已生效。
  2. 记录当前云主机运行位置、VG、LV 和锁状态。
  3. 在受影响的物理机上重置锁服务:
pkill -9 sanlock
pkill -9 lvmlockd
systemctl start sanlock
systemctl start lvmlockd
  1. 对每个受影响的共享块 VG 恢复 lockspace。将 <VG_UUID> 替换为实际的共享块主存储 VG UUID:
vgchange --lock-start <VG_UUID>

如涉及多个 VG,需使用各自的 VG UUID 分别执行:

vgchange --lock-start <VG_UUID_1>
vgchange --lock-start <VG_UUID_2>
  1. 完成验证后,按照变更计划恢复全局 VM HA。

长期解决方案

将平台升级到包含 lvmlock 处理优化的版本。生产稳定版本线建议升级到 ZStack Cloud 5.4.12。

该版本可由平台检测相关 lvmlockctl 缓冲区异常,并自动恢复 lvmlockd;恢复期间不重启 sanlock,并保留现有 sanlock 锁状态,从而避免针对该异常进行人工锁服务重置。实际目标版本应在完成客户环境评估后确认。

验证方法

执行以下检查,确认锁服务及 VG lockspace 已恢复:

systemctl status sanlock lvmlockd
lvmlockctl -i | head
sanlock status
  • sanlocklvmlockd 均为运行状态。
  • lvmlockctl -i 不再返回 result -28
  • 受影响 VG 的 lockspace 可正常查询。
  • 在确认锁状态正常后,重新执行原失败操作,例如创建快照,并确认操作成功。

关联信息

  • 生产稳定版本建议:ZStack Cloud 5.4.12。
共享块存储因 lvmlock result -28 导致资源操作失败 | KB-200149 | ZStack 资源中心