客户反馈2台虚拟机热迁移失败,检查源计算节点的nova-compute日志,均发现live migration stuck xxx sec的错误信息。
虚拟机热迁移的过程,在源节点和目标节点会有同步虚拟机内存的操作,查看stuck日志之前的输出,问题memory 基本0% remaining,问题应该在最后一刻同步内存。于是尝试使用nova live-migration-force-complete <serverID> <migrationID>命令,在热迁移操作中,同步查看nova-compute日志,在日志显示虚拟机在源节点 memory 接近0% remaining时执行,强制在源节点暂停下虚拟机,发现热迁移顺利完成。
如上图,先用nova server-migration-list <serverID>找出此次迁移热任务ID,然后执行nova live-migration-force-complete <serverID> <migrationID>
如上图,执行nova live-migration-force-complete 命令,日志显示虚拟机在源计算节点立马被paused,源计算节点和目标计算节点进入_post_migration状态,pause时间大概在2s以内。
注意:为了避免对业务的影响,应尽量避免执行nova live-migration-force-complete 命令,此命令会强制暂停虚拟机。应让热迁移操作的2个计算节点,利用libvirt的自身算法来控制最后虚拟机的暂停操作。即使对于能容忍此种pause时间的虚拟机,也要实时查看日志,只能在最后一刻虚机内存remaining接近0%操作。