虚拟机热迁移(Live Migration)失败或性能下降,根因与调优?
2026-08-11 09:19:15
# 云服务
为维护物理机,运维常把虚拟机**无停机热迁移(Live Migration)**到其它节点。但热迁移也可能失败,或迁移后网络断连、性能严重下降。这个问题考察对热迁移深层原理的理解。
热迁移的基本原理
Live Migration 先把虚拟机内存页从源节点复制到目的节点,在短暂暂停(downtime)时切换 CPU 执行上下文,实现”几乎无感”迁移。其核心依赖共享存储(Ceph RBD / NFS)或可迁移的本地存储。
常见失败与性能下降根因
1. NUMA 拓扑不一致
源端与目的端 NUMA 架构差异大(如 vCPU 跨 NUMA 节点绑定),迁移后内存访问跨 NUMA,性能骤降。
加分项:在
nova.conf开启numa_live_migration = true,并借助NUMATopologyFilter约束调度,可避免跨 NUMA 迁移。
2. 存储后端不支持
使用 Ceph RBD 等共享存储时,需要启用 RBD live migration 支持,否则迁移会因无法处理磁盘而失败。
3. 网络中断(OVS 场景)
目的端 OVS 流表未同步,导致迁移后虚拟机网络断连。需确认 neutron-openvswitch-agent 在目的节点正常、流表已下发。
关键调优参数
1 | # nova.conf |
通过 virsh migrate-setmaxdowntime 调整 max_downtime(最大停机时间),以及对大内存虚拟机调高 bandwidth,可显著改善迁移体验。
小结
热迁移失败多因 NUMA 不一致、存储不支持、OVS 流表未同步;调优围绕 max_downtime、bandwidth、numa_live_migration 三个方向。理解原理比背命令更加分。