根据你的描述(快照删除卡在99%、虚拟机无响应),核心矛盾是快照删除任务锁死了虚拟机,导致平台无法执行任何其他操作。下面是一个从紧急恢复到根本解决的行动路线图,你可以根据自身情况来操作。
建议按照下面的顺序,从风险最低的方法开始尝试。
这是最关键的一步,目标是通过后台命令强制中断卡死的快照删除任务,看能否释放被锁定的虚拟机。
前置条件:需要获得底层CVK主机的SSH访问权限。
操作步骤:
SSH登录:通过SSH登录到问题虚拟机所在的CVK主机后台(以root身份)。
确认虚拟机ID:执行 virsh list --all,从列表中找到并记下卡死虚拟机的ID。
查看合并任务:执行以下命令,确认当前卡住的快照合并(commit)任务:
"type": "commit",说明任务确实卡住了。强制取消任务:立即执行以下命令强制取消快照合并任务:
[],则说明任务已取消。风险提示:强制取消有极低概率导致虚拟磁盘数据不一致。这通常发生在快照链损坏时,应优先考虑此步骤。操作前请评估业务重要性。
如果后台命令无法执行或想用更缓和的方式,可以尝试重启平台服务。
操作:登录CVM管理节点后台,执行:
systemctl restart h3c_backup.service (用于解决备份任务卡住)
systemctl restart libvirtd (重启底层虚拟化服务)
service uis-core restart (重启UIS核心服务)
风险提示:这些操作可能会短暂影响该节点上所有虚拟机的管理,请谨慎评估。
如果以上所有方法都无效,这是最后的物理性恢复手段。
操作:在CVK主机上执行 virsh destroy <虚拟机ID> 强制关闭虚拟机。
风险提示:这等同于物理断电,极大概率导致虚拟机操作系统异常、数据丢失或文件系统损坏。只有在数据不重要或有其他备份时,才能考虑此方案。
如果以上方法全部无效,且虚拟机确实无法恢复,可以考虑重启整个物理主机。
操作:通过IPMI/iLO/HDM等带外管理方式或物理现场重启主机。
风险提示:此操作风险最高,可能导致:
所有运行中的虚拟机强制断电,造成大规模数据损坏或业务中断。
集群稳定性受影响,可能触发HA导致虚拟机在其他主机上“脑裂”或异常重启。
存储系统受损:如果主机的本地存储与分布式存储紧密耦合,强制重启可能导致存储服务异常,需要手动修复。
数据丢失:强制断电极大概率导致文件系统损坏和数据丢失。
建议:将此操作作为最后手段,在执行前务必评估所有可能后果,并尽可能备份重要数据。
问题解决后,务必进行复盘,找出根本原因以防止再次发生。
快照链过长或磁盘文件巨大:如果快照链很长或虚拟机磁盘文件巨大,删除快照需要合并大量数据,会耗费极长时间,并可能在完成前锁定虚拟机
存储性能瓶颈:底层的分布式存储或本地存储性能不足,I/O延迟过高,会导致快照合并任务缓慢甚至卡死。
软件版本Bug:部分老版本UIS/CAS平台在处理快照任务时可能存在Bug,尤其是在长时间运行后,内存泄漏或任务管理模块异常可能导致任务挂起。
平台服务僵死:管理平台的服务(如 uis-core, h3c_backup.service 等)可能因未知原因僵死,导致任务状态无法更新。
为防止类似问题再次发生,可以采取以下措施:
缩短快照链:不要在单个快照链上积累超过3个快照,及时清理不再需要的旧快照。
优化快照操作:避免在业务高峰期进行快照创建或删除操作。
监控存储性能:定期检查底层存储池的延迟、IOPS等指标,确保性能足够支撑业务。
升级软件版本:联系H3C技术支持,确认是否有针对该问题的修复补丁或推荐升级版本。
如果以上步骤均无法解决,请收集以下信息后联系H3C技术支持(400-810-0504):
虚拟机配置:操作系统、虚拟磁盘大小(GB/TB)、快照链长度(历史快照数量)。
集群环境:UIS/CAS软件版本号、主机CPU/内存型号、底层存储类型(本地/分布式)。
关键日志:主机端 /var/log/libvirtd.log、平台端 /var/log/h3c_backup.log-2、任务执行日志 task.log。
时间点:问题发生的精确时间。
暂无评论
# 看虚拟机列表
virsh list --all
# 看这个虚机有没有卡住的块任务(关键)
virsh qemu-monitor-command 虚机名 '{"execute":"query-block-jobs"}'
# 看 libvirt 日志,一般会有 blockjob/disk 报错
tail -f /var/log/libvirt/libvirtd.log
blockjob 一直 runningdisk already in active block jobrunning 但控制台卡死、ping 不通风险:相当于硬重启,虚机内存数据会丢,文件系统可能要自检;业务要能接受一次硬重启。
# 查设备名(一般是 drive-virtio-disk0)
virsh qemu-monitor-command 虚机名 '{"execute":"query-block-jobs"}'
# 强制取消任务(把 device 换成你查到的)
virsh qemu-monitor-command 虚机名 \
'{"execute":"block-job-cancel","arguments":{"device":"drive-virtio-disk0","force":true}}'
# 硬关机(相当于拔电源)
virsh destroy 虚机名
# 若还不行,直接杀 qemu 进程
ps aux | grep qemu | grep 虚机名
kill -9 进程号
# 重启 libvirtd(会短暂影响该主机所有虚机管理操作)
systemctl restart libvirtd
# 再看任务是否清掉
virsh list --all
# 找到虚机磁盘路径(一般在 /vms/xxx/)
ls /vms/你的存储池/虚机目录/
# 检查 qcow2 是否损坏
qemu-img check 磁盘文件.qcow2
qemu-img repair 或直接重建磁盘 + 恢复数据。# 列出快照
virsh snapshot-list 虚机名
# 删掉残留/无效快照
virsh snapshot-delete 虚机名 --snapshotname 快照名
# 1. 查卡住的任务
virsh qemu-monitor-command 虚机名 '{"execute":"query-block-jobs"}'
# 2. 取消任务(device 换成查到的)
virsh qemu-monitor-command 虚机名 '{"execute":"block-job-cancel","arguments":{"device":"drive-virtio-disk0","force":true}}'
# 3. 强关虚机
virsh destroy 虚机名
# 4. 重启 libvirtd
systemctl restart libvirtd
# 5. 开机
virsh start 虚机名暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论