适用场景
- 产品:
ZCF - 组件:
ZStack Cloud - 版本:
4.3.x - 触发条件:云主机采用精简制备,在自动扩容时出现暂停,伴随主存储失联和
vgs卡住。
问题现象
- 云主机自动暂停,停止后无法再正常启动。
- 主存储失联。
- 多个或单个节点执行
vgs卡住。 - 问题节点存在残留
vgchange进程。
判断方法
- 检查主存储是否失联。
- 检查所有节点或异常节点执行
vgs是否卡住。 - 用以下命令检查是否存在残留进程:
ps -ef | grep vgchange
- 检查
sanlock和lvm2-lvmlockd状态,以及历史是否存在aio timeout、IO error/timeout。
原因说明
本次云主机暂停并不是普通 guest 内故障,而是精简制备云主机在达到阈值水位后自动执行 lvextend 时,因 VGLK 锁异常导致扩容失败;卷写满后云主机被自动暂停。同时,历史上的 sanlock aio timeout 与大量 IO error/timeout 进一步诱发了锁状态异常,而问题节点残留的 vgchange 进程持续占用 flock,加重了锁竞争问题。
解决方案
- 应急恢复步骤
- 当云主机暂停且主存储失联时,先检查各节点
vgs状态。
- 预期结果:确认是否存在全局或单节点锁卡死。
- 若
vgs普遍卡住,重启锁服务释放异常锁:
sanlocklvm2-lvmlockd- 预期结果:主存储可重新连接,
vgs恢复返回。
- 若问题收敛到单节点持续异常,例如仅
32.1.x节点卡住:
ps -ef | grep vgchange
- 查找残留
vgchange进程。 - 预期结果:定位持续占锁的残留进程。
- 清理残留
vgchange进程。
- 预期结果:解除
flock占用,使后续lvchange/lvextend不再持续卡死。
- 若故障云主机仍无法在原节点恢复,先停止云主机并指定其他物理机启动。
- 预期结果:优先恢复业务。
- 环境健康检查
- 检查
vgs、pvs是否恢复正常。 - 检查相关进程是否已无残留:
ps -ef | grep -E 'lvchange|lvcreate|lvrename|lvresize|lvextend|lvremove|lvs|vgs|pvs|vgchange'
- 检查服务状态:
systemctl status sanlock
systemctl status lvm2-lvmlockd
- 预期结果:LVM 和锁服务恢复正常。
验证方法
- 检查主存储重新连接成功。
- 检查
vgs、pvs返回正常。 - 检查暂停云主机可在健康节点启动恢复。
- 检查无残留
vgchange等异常进程。
风险与后续治理
- 风险:若不清理残留
vgchange进程,仅重启服务后问题可能反复出现。 - 风险:若 thin LV 已写满,业务暂停会直接影响数据库类工作负载。
- 建议的根治方向:
- 升级
sanlock版本,优化锁未自动释放和vgchange卡住问题。 - 升级云平台到
4.8.x.x最新 LTS,优化 sharedblock 场景锁问题。 - 持续做环境健康检查。
