CAS平台虚拟机做快照删除2个月了还是照片99%的进度,所以将虚拟机做关机处理。关机后过了一段时间从虚拟机上看快照都没有了,所以重启了虚拟机,但是发现无法启动。尝试克隆也不行。怎么办?
4台主机,两台CVM(CVM01和CVM02),两台CVK(CVK01和CVK02)
(0)
CAS 外部快照删除本质是block‑job 后台镜像合并任务;合并到 99% 阶段强制关机,合并任务被粗暴终止。Web 界面 CVM 数据库把快照记录清除,但底层 qcow2 镜像链是半合并断裂状态;XML 配置、底层 qcow2 backing‑file 父子依赖关系错乱。Web 看不到快照,但是磁盘增量镜像文件还在存储卷中,链断裂导致虚拟机启动失败,克隆同样失败H3C。
组网环境:2 台 CVM(主备)、2 台 CVK,共享存储。
⚠️高风险操作,操作前务必对所有 qcow2 磁盘文件做文件级别备份;优先联系 400 工程师现场指导,qemu‑img 修复有数据丢失风险。
virsh list --all | grep "虚拟机名称"
virsh dumpxml 虚拟机名称 > /tmp/vm‑bak.xml
cat /tmp/vm‑bak.xml
记录磁盘的完整 qcow2 路径。 3. 进入虚拟机存储目录,列出全部磁盘文件:
ls -lh 虚拟机磁盘存储路径/*.qcow2
此时你会看到多个 qcow2 文件,CVM 页面无快照,但底层增量文件残留。
#查看完整镜像父子链
qemu‑img info --backing‑chain 【最上层top镜像文件完整路径】
正常输出会完整打印 base→sn1→sn2→top;
如果出现 backing file: cannot open、找不到父镜像,确认镜像链断裂,就是本次故障根源H3C。
对比:libvirt xml 里面记录的磁盘链 和 qemu‑img 查询底层 qcow2 的 backing‑chain,两者不一致,就是 CVM 数据库与底层镜像不同步。
grep -i block‑job /var/log/libvirt/libvirtd.log | grep 虚拟机磁盘
可以看到之前删除快照时 block‑job 合并任务被强制中断的日志。
⚠️禁止直接 Web 界面做任何快照、克隆、磁盘修改操作,会加重损坏。
使用 CAS 备份恢复快照删除之前的虚拟机备份,业务恢复最快,无数据风险。
如果 backing‑chain 还可以完整识别,没有报 cannot open。通过 convert 把整条镜像链输出成一个独立完整 qcow2 单文件,脱离损坏快照链。
qemu‑img convert -p -f qcow2 【top镜像】‑O qcow2 【新完整磁盘qcow2路径】
注意:转换时间取决于磁盘大小,共享存储下不要中途中断。
只有镜像报 qcow2 元数据损坏时才执行:
qemu‑img check top.qcow2
#检测报错后执行修复
qemu‑img check -r all top.qcow2
‑r all会自动修复元数据,但有可能丢失部分数据,必须先拷贝全部 qcow2 备份,不建议直接在原文件操作。
virsh dumpxml 虚拟机名称;qemu‑img info --backing‑chain top.qcow2完整输出;/var/log/libvirt/libvirtd.log对应时间段日志;补充:如果 convert、check 修复均无效,只能依靠备份恢复。
(0)
这情况大概率是快照删除时磁盘链出问题了,关机后快照信息丢了但底层镜像链没对上。你先上宿主机用 qemu-img info --backing-chain 看下磁盘链是否完整,缺链的话试试 qemu-img check -r all 修一下,修之前记得备份原盘。实在不行就 virsh dumpxml 导出配置,undefine 再 define 重新加载一遍。搞不定就打 400-810-0504 吧,别自己瞎折腾了。
(1)
暂无评论
我的虚拟机名称是tqV10kzt,现在在/vms/Storagelun里面可以看到3个文件,分别是tqV10kzt,tqV10kzt_inc_1,tqV10kzt_inc_260。
(0)
暂无评论
(1)
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论