手册下载
H3C CAS云计算管理平台
虚拟机快照、迁移、备份常见问题与故障排查
资料版本:5W101-20250110
Copyright © 2025 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文档中的信息可能变动,恕不另行通知。
4.2.1 迁移超时时间设置为0时,迁移虚拟机任务卡在99%
4.2.2 迁移超时时间设置不为0,在线迁移虚拟机卡在99%,任务无法结束,后台显示虚拟机处于暂停状态
4.2.5 虚拟机在线迁移失败,报错Missing Monitor reply object
本文档介绍虚拟机快照、迁移、备份配置过程中的常见问题及解决方法。
本手册中的内容适用于CAS 7.0版本。
CAS系统日志以及虚拟机快照、迁移、备份的相关日志查看方法如下。关于日志的更多详细信息请参考《H3C CAS云计算管理平台 系统日志信息参考》手册。
· 日志查看方法:/var/log/tomcat/cas.log。
· 快照删除日志:/var/log/disk_commit.log 或者/var/log/caslog/disk-commit/disk_commit.log。
· 备份日志:/var/log/br_shell_20240X.log 或者 /var/log/caslog/backup-restore/cas_br.log。
· 可以修改/etc/cvk/util_cvk_log.conf文件中Logging_Level_br的等级为DEBUG再复现问题,可以输出更详细日志。
当故障无法自行解决时,请准备好设备运行信息、故障现象等材料,发送给H3C技术支持人员进行故障定位分析。
用户支持邮箱:[email protected]
技术支持热线电话:400-810-0504(手机、固话均可拨打)
本章节介绍虚拟机快照、迁移、备份使用过程中的相关限制。
本章节相关内容以E0785版本为例。具体使用限制、注意事项等信息请参考所用版本的联机帮助文档。
关于虚拟机外部快照的注意事项等相关限制,可参考《H3C CAS 云计算管理平台 虚拟机快照配置指导》手册。
· 不支持以“更改数据存储”、“更改主机和数据存储”的方式在线迁移磁盘为RBD块的虚拟机。
· 在迁移虚拟机时,要确保目的存储池有足够的可用空间,目的主机必须具备足够的CPU和内存资源,否则可能导致迁移失败或者虚拟机启动时出现故障或启动缓慢。
¡ 使用“更改数据存储”或者“更改主机和数据存储”方式迁移虚拟机时,目的存储池的空闲容量必须大于虚拟机存储卷的容量,才能成功迁移数据存储。
¡ 当迁移后虚拟磁盘格式与源虚拟机不同时,目的存储池的可用空间至少要是源虚拟机存储卷容量的两倍,否则可能导致迁移失败。
¡ 如果在迁移过程中,其他操作造成存储空间占用过多,可能导致迁移任务无法完成。此时需要手动清理目标存储空间,确保足够的空余空间以容纳虚拟机磁盘文件,以便顺利完成迁移任务。
· 虚拟机存在快照时,迁移虚拟机的存储只能在同为文件系统类型的存储池之间或同分布式存储资源的RBD网络存储池之间进行。
· 不支持在X86架构和ARM架构的主机间迁移虚拟机。
· 在线迁移虚拟机过程中,请勿关闭虚拟机,否则会导致虚拟机迁移失败。
· 在线迁移虚拟机时,若出现虚拟机“xxxx”没有安装或没有运行tools组件的告警,是因为虚拟机在线迁移时间较长,导致系统在告警监控周期内检测到虚拟机的CAStools没有运行,从而产生了误报。
· 使用了加密磁盘的虚拟机不支持在线迁移数据存储。
· 在线迁移有多级镜像的虚拟机时,即使取消任务也会产生残留的基础镜像,可以手动在存储池中进行删除。
· 备份虚拟机时,不会备份虚拟机的权限信息、启动优先级、自动迁移配置信息和GPU配置信息。
· 对于磁盘类型为高速(raw)文件或块设备的虚拟机,不支持在线备份(即虚拟机处于运行状态时的备份)、增量备份和差异备份。
· CBT备份不支持对快照进行备份,当对含有快照信息的虚拟机进行CBT备份时,通过备份文件还原虚拟机后,虚拟机的快照信息将会丢失。
· 虚拟机执行CBT备份时,不允许改变其状态,否则会备份失败。
· 只有磁盘为智能格式,且所有磁盘均是一级镜像的虚拟机,才支持CBT备份。
本节主要介绍虚拟机快照功能使用过程中需要了解的基本概念、注意事项及问题排查方法。
更详细的介绍请参考产品的技术白皮书《H3C CAS 7.0云计算管理平台技术白皮书》。
· 虚拟机创建外部快照实现是在上一级base镜像中拉出新镜像top,虚拟机运行在top上。上一级镜像变为只读镜像,虚拟机产生的新数据会全记录在top上。当快照个数越多,在读取某些数据时则需要从top一直往前找。
· 删除外部快照时,则是将top数据逐一合并到上一级镜像中。
删除虚拟机外部快照时失败,无法正常删除。
可能导致此问题的原因较多,如下:
· 可能原因一:虚拟机可能已经有一个blockjob的任务。
· 可能原因二:在删除过程中,可能出现了网络闪断。
· 可能原因三:虚拟机镜像有损坏。
· 可能原因四:虚拟机xml文件中backingStor记录过长。
· 可能原因五:因为老版本存在虚拟机有外部快照时,迁移存储时触发问题,引起libvirt中镜像链和实际镜像链不一致的情况。
查看libvirt日志/var/log/libvirt/libvirtd.log,通常在相应时间段有日志”disk 'vdx' already in active block job”。
执行virsh qemu-monitor-command vmname --pretty '{"execute":"query-block-jobs"}'命令,查看正在执行的有关任务。
可在主机后台执行virsh list --all命令,查看具体虚拟机名称或者id。
根据上述命令的回显查看该blockjob是什么任务。可以等待该任务完成,或者确定是否能取消该任务,如果可以则执行virsh blockjob --domain vmname --abort vdx命令,取消任务。
网络闪断会导致前台对删除快照任务的管理,出现删除失败。
· 排查方法:在虚拟机所在CVK主机使用后台执行ps -ef | grep disk_commit | grep vmname命令查找该任务,查看是否有一个python脚本在运行,有则说明后台任务还在运行。
· 问题解决方法:可以等待后台任务进行。或者执行virsh qemu-monitor-command vmname '{"execute":"block-job-cancel","arguments":{"device":"drive-virtio-disk0", "force":true}}'命令取消掉该任务。‘drive-virtio-disk0’可以通过上面的query-block-jobs命令进行查询。取消任务时如果提示获取不了lock相关错误,可以多次尝试。
· 排查方法:对base和top镜像执行qemu-img check /path/top命令查看是否存在error。
· 问题解决方法:对于存在error的镜像,可关闭虚拟机,对虚拟机进行备份,然后执行qemu-img check -r all /path/top命令修复,待修复完成后再次尝试删除虚拟机外部快照。
· 排查方法:在删除快照失败时,在libvirtd.log中查找日志是否有“Excessive depth in document: 256 use XML_PARSE_HUGE option”内容。如有则表示存在xml文件中backingStor记录过长的问题。
· 问题解决方法:该问题已出相应补丁,请参考https://zhiliao.h3c.com/Theme/details/222484进行处理。
· 排查方法:在libvirtd.log中查找日志是否有“qemu block name '/path1' doesn't match expected '/path2 '”的内容。再执行virsh qemu-monitor-command vmname--pretty '{ "execute": "query-block" }'命令和qemu-img info –backing-chain /top命令对比两个信息的镜像链是否一致。确认libvirt中镜像链和实际镜像链是否一致。
· 问题解决方法:关闭虚拟机后再重新启动,使libvirt更新镜像链信息。
本节主要介绍虚拟机迁移功能使用过程中需要了解的基本概念、注意事项及问题排查方法。
虚拟机迁移是指将正在运行的虚拟机从一个物理服务器迁移到另一个物理服务器的过程,具体可以分为在线迁移或离线迁移主机、迁移主机加存储。更详细的介绍请参考《H3C CAS虚拟机在线迁移特性技术白皮书》手册。
· 在线迁移是指在虚拟化环境中,虚拟机在运行状态下从一个物理主机迁移到另一个物理主机,在线迁移需要在不中断或短暂中断虚拟机业务的情况下将虚拟机迁移至另一台主机。
· 离线迁移是指在虚拟化环境中,虚拟机在关闭状态下从一个物理主机迁移到另一个物理主机,离线迁移会导致虚拟机业务中断,因为虚拟机需要先关闭,然后在新的物理主机上启动。
· 迁移主机是指仅迁移虚拟机所在的物理主机,虚拟机的存储不会迁移,这意味着虚拟机的磁盘镜像数据仍然存储在原来的存储设备上,只是虚拟机的计算资源迁移到了新的物理主机上。
· 迁移主机加存储是指将虚拟机所在的物理主机和存储设备一起迁移至新的主机和存储设备。
在线迁移虚拟机至其他主机,迁移超时时间设置为零。进行迁移时,任务台中迁移任务的进度卡在99%,卡住时间较长。
该问题一般是由于管理网带宽不足,虚拟机内存变化率超过网络迁移速度而导致的。
问题排查方法:在迁移源主机后台执行virsh domjobinfo vmname命令来查询迁移的详细情况。排查时多执行几次,查看内存的变化情况,如果确实有变化,则表示内存的变化率比较大。
问题解决方法共有三种,请选择其中一种进行处理,在条件允许的情况下,优先考虑暂停源虚拟机。
· 暂停源主机完成迁移,在主机后台执行virsh suspend vmname命令暂停虚拟机,使其可以完成迁移。需要注意的是,此操作会影响虚拟机的业务运行。
· 修改迁移downtime,默认值为300sms,可以临时修改大一点。执行virsh migrate-setmaxdowntime vm-name –downtime 1000命令,将downtime修改为1000ms,该时间相当于业务中断时间,即暂停1000ms以完成迁移。
· 取消迁移任务,在主机后台执行virsh domjobabort vmname命令,使得迁移任务失败,可以在网络状况好转后尝试重新迁移。需要注意的是,此操作可能会对虚拟机数据的一致性产生影响,请谨慎操作。
在线迁移虚拟机卡在99%,任务无法结束,目的端主机中后台查看到虚拟机处于暂停状态。
需要查看虚拟机堆栈信息,libvirt日志或者qemu日志进行定位。
(1) 首先确定虚拟机迁移的源CVK主机
(2) SSH源CVK主机登录后台,执行virsh list –-all命令查看该虚拟机的ID。
(3) 通过执行virsh list --all命令查看目的CVK的主机情况。如下图所示,可看出该虚拟机处于paused状态。
(4) 执行virsh qemu-monitor-command 11 --hmp --cmd info migrate命令在源CVK主机后台,查看该虚拟机迁移的内存剩余情况,其中“11”为源CVK上待迁移虚拟机的ID。
(5) 可以执行watch 'virsh qemu-monitor-command 11 --hmp --cmd info migrate'命令持续查。
(6) 如果确认remaining ram始终在变化,则建议等待。
(7) 如果remaining ram为0或者无变化,建议执行virsh suspend 11命令暂停虚拟机,将虚拟机迁移到目的CVK中。需要注意的是,该操作会影响虚拟机业务的运行。
(8) 在目的CVK后台可以看到虚拟机已经running。
(9) 在CVM管理页面,看到迁移任务为100%完成
在线迁移主机和存储,任务台进度卡在99%,卡住时间较长。
该问题的原因可能有两个:
· 可能是存储性能差,存储没有迁移完成。
· 另一个可能是内存没有迁移完成。
问题排查方法:
· 在目的主机上执行ps -ef | grep scp查看是否有SCP拷贝的进程,同时在源主机执行virsh domjobinfo vmname命令查询迁移的详细情况,如果目的主机看到有SCP拷贝的进程,源主机还没有真正的迁移任务,则此时迁移还未真正开始,此阶段卡住的话,一般是虚拟机存储比较大,或者是存储性能比较差。
· 如果在源主机执行virsh domjobinfo vmname命令查询到了迁移的详细情况,说明此时已经开始迁移,可能会遇到问题一提到的内存变化率太大,无法迁移完成的情况。
问题解决方法:
· 如果当前操作正处于使用SCP进行文件拷贝的阶段,并且进度较慢,建议耐心等待直至拷贝完毕。若确有紧急情况需取消操作,一种可行的方法是重启Tomcat服务:首先终止Tomcat进程(kill tomcat),随后重新启动Tomcat(start tomcat)。需要注意的是,该方法潜在存在一定的问题和风险,因此并不推荐采用此种做法。
用户可以通过目的主机存储池的已用空间和虚拟机磁盘的总大小以及虚拟机存储的迁移速度,大致评估存储迁移的剩余时间。
· 如果是处于内存无法迁移完成的阶段,可以参考迁移超时时间设置为0时,迁移虚拟机任务卡在99%章节,将虚拟机暂停或者临时修改迁移downtime,以便完成迁移。
一些较早版本的CAS以不中断业务方式升级至E0730分支E0730P08及后续版本,若虚拟机硬件版本低于2.12,在通过以更改主机方式迁移虚拟机至其他主机时会出现虚拟机暂停,业务中断。
在E0730P08版本开始合入postcopy迁移新特性,该特性在虚拟机硬件版本低于2.12时不适配,导致升级至目标版本后从界面迁移虚拟机出现暂停。
问题解决方法:
· 1、建议沟通停机窗口修改硬件版本至2.12及以上版本,将虚拟机关机或重启后后再进行迁移;
· 2、如果虚拟机没有停机窗口,可在升级至目标版本后迁移虚拟机前临时关闭postcopy功能。
虚拟机在线迁移失败,报错internal error: Missing Monitor reply object。
libvirt 报错internal error: Missing Monitor reply object,该报错指向不明,能确定的是qemu进程未能正常运行,具体需要查看虚拟机的qemu日志。
问题解决方法:
· qemu日志中显示error while loading state for instance …/virtio-net,表示虚拟机中virtio 网卡状态出现了不一致,一般怀疑是虚拟机内部系统出了问题,可以通过VNC连接虚拟机,禁用网卡再重新启用,如果还有问题,请尝试关闭虚拟机,将其迁移至其他主机再尝试运行。
· qemu日志中显示unknown savevm section or instance …/virtio-blk,表示原迁移主机与目的主机的内部磁盘设备不一致。一般是由于热删除磁盘时,内部出现正在使用或未知问题导致的;或者在版本在升级过程中,虚拟机qemu版本未真正生效,又进行磁盘热添加操作等。可以执行如下命令,检查磁盘设备是否一致。如果确定是由于该问题引起的故障,需要关闭虚拟机并迁移至其他主机,消除磁盘设备的不一致。
virsh domblklist vm-name//列出虚拟机的块设备(如磁盘)列表。可以帮助检查当前虚拟机配置中的磁盘设备情况,如设备数量、路径、类型等。
virsh qemu-monitor-command vm-name -hmp info block//获取 QEMU 内部的块设备信息。可以详细列出虚拟机当前使用的块设备的状态、类型、后端信息等。用于检查运行中的虚拟机块设备和实际配置是否一致。
virsh qemu-monitor-command vm-name -hmp info pci//获取虚拟机 PCI 设备的信息。这可以帮助检查虚拟机中的 PCI 设备配置,包括 Virtio-blk 设备在 PCI 总线中的情况。通过此命令可以确认设备的热插拔操作是否成功,设备是否在期望的位置等。
本节主要介绍虚拟机备份、还原功能使用过程中需要了解的基本概念、注意事项及问题排查方法。
更详细的介绍请参考《H3C CAS CBT特性技术白皮书》手册以及产品技术白皮书。
· CAS非CBT全量备份是压缩整个镜像数据,增量备份时对比计算上一次全量备份变化的数据块。
· CBT备份是利用快照+数据块变化跟踪器(位图)来实现的。
备份、还原虚拟机失败。
需要按收集日志步骤查看具体报错信息。通常备份还原失败提示信息较详细,可以根据提示信息处理。排除简单提示信息失败时,可能较复杂,需要分析环境。常见原因:
· 存储目的端空间是否充足。
· 网络是否通畅,没有中断。
· 如果不是由于上述原因引起,则需要查看虚拟机此时镜像链是否有快照。可能是由于删除快照失败引起的备份失败。
· 查看具体日志信息再行判断,然后参照具体日志信息解决。
· 查看虚拟机此时镜像链是否有快照,结合备份日志查看报错是否和快照有关。
· 可以参考3.2章节中有关删除快照的常见问题对比处理。
· 结束虚拟机备份任务:在主机后台执行ps –ef命令过滤出vm_backup.sh任务获取进程id。然后执行pstree pid –p 命令查找到使用的子进程,kill掉最后的一个子进程。等待约1分钟时间,再查看vm_backup.sh任务是否仍然存在。
如果仍然存在可直接结束该进程,直到该进程结束;查看前台任务是否结束,如果仍然存在,则需要重启tomcat服务以清理任务。重启tomcat服务会清理所有现存前台任务,在执行时请注意不要影响其它任务的进行。
· 结束虚拟机还原任务:在主机后台执行ps –ef命令过滤出vm_restore.sh任务获取进程id。然后执行pstree pid –p 命令查找到使用的子进程,kill掉最后的一个子进程。等待约1分钟时间,再查看vm_restore.sh任务是否仍然存在。
如果仍然存在可直接结束该进程,直到该进程结束;查看前台任务是否结束,如果仍然存在,则需要重启tomcat服务以清理任务。重启tomcat服务会清理所有现存前台任务,在执行时请注意不要影响其它任务的进行。
第三方备份使用CBT模块备份失败;某局点CAS删除快照提示磁盘commit失败。
某局点镜像容量有2T,再增量备份期间产生数据量大,bitmap跟踪的数据量大。前台使用"block-query-dirty-cluster"时数据表超出了libvirt空间。
· 问题排查方法:查看libvirt报错“QEMU monitor reply exceeds buffer size (10485760 bytes)”。
· 问题解决方法:后期主要通过新版本进行修改。可以临时修改备份策略,缩短备份时间段,减少脏数据产生。