虚拟机热迁移(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
2
3
4
# nova.conf
[libvirt]
live_migration_permit_auto_converge = true # 自动收敛,压缩迭代
live_migration_bandwidth = 0 # 迁移带宽上限(MiB/s),0 表示不限

通过 virsh migrate-setmaxdowntime 调整 max_downtime(最大停机时间),以及对大内存虚拟机调高 bandwidth,可显著改善迁移体验。

小结

热迁移失败多因 NUMA 不一致、存储不支持、OVS 流表未同步;调优围绕 max_downtimebandwidthnuma_live_migration 三个方向。理解原理比背命令更加分。