生产环境KVM虚拟机热迁移网络性能调优实战
负责IDC虚拟化集群运维的工程师,在生产环境基于KVM搭建的x86虚拟化集群中,经常遇到大内存虚拟机热迁移超时、迁移流量占满带宽导致同网段业务丢包、迁移完成后业务网络吞吐量下降等问题。本文整理生产环境KVM虚拟机热迁移网络性能调优实战经验,帮你定位解决这类常见运维痛点。生产环境KVM热迁移的绝大多数网络性能问题,可通过统一MTU配置、流量隔离、带宽限制三步标准化调优,同时保障迁移效率与在线业务稳定性。
- 适用读者:KVM虚拟化运维工程师、IDC基础架构维护人员
- 适用环境:Linux Kernel 3.10及以上版本的KVM生产虚拟化集群
- 本文不讨论:冷迁移调优、非KVM虚拟化平台迁移配置、存储层面迁移调优
生产环境KVM热迁移常见网络性能问题定位
很多时候热迁移出问题,运维第一反应是存储IO跟不上,实际上超过六成的KVM热迁移超时问题出在网络层面。
常见的网络问题分为三类:一是默认无带宽限制,迁移流量抢占全部业务带宽,引发同网段业务丢包告警;二是跨交换机迁移时两端MTU不匹配,大报文分片丢包导致迁移速度骤降;三是迁移流量和业务流量共用网卡,软中断抢占CPU资源导致两边都出现卡顿。
KVM热迁移网络特性与主流平台对比
先理清不同平台的默认配置差异,才能针对性开展KVM热迁移网络调优。下表整理了主流x86虚拟化平台热迁移阶段的默认网络特性,方便定位问题时对比参考。
| 虚拟化平台 | 默认迁移带宽控制 | 内存传输机制 | 默认配置对业务网络的影响 |
|---|---|---|---|
| KVM(开源社区版) | 无带宽上限 | 支持多轮迭代传输脏页 | 高,无限制时可占满全线带宽 |
| VMware ESXi | 默认预留1Gbps上限 | 支持静默脏页批量传输 | 中等,默认配置很少影响核心业务 |
| Hyper-V | 默认基于宿主机QoS动态控制 | 支持增量内存传输 | 低,自动适配可用带宽 |
从对比可以看出,KVM的默认配置是最宽松的,也是最容易出现网络性能问题的,生产环境必须手动调整。
KVM热迁移网络性能调优操作步骤
所有调优操作前,需要提前备份对应虚拟机的XML配置文件,修改全局配置后需要重启libvirtd服务,提前规划维护窗口,避免影响在线业务。
-
检查迁移路径的MTU一致性。迁移网卡的MTU必须和对端宿主机网卡、中间交换机端口配置完全一致,如果开启巨帧,所有节点都要设为9000,任意一端不匹配都会导致大报文丢包,迁移速度降到几百KB每秒。用
ip link show <迁移网卡名>可以查看当前MTU配置。 -
分离迁移流量和业务流量。给每台宿主机配置一块独立物理网卡,专门绑定迁移VLAN,所有热迁移流量都走这个独立通道,完全不占用业务带宽。如果没有多余物理网卡,也要配置独立VLAN隔离流量,避免和业务抢网卡队列。
-
配置全局迁移带宽上限。KVM默认不限制带宽,生产环境必须手动设置。修改
/etc/libvirt/qemu.conf中的max_migrated_bandwidth参数,单位为KB/s,比如配置为3000000就是限制到大约3Gbps,适合10Gbps业务网卡共享的场景。单次迁移也可以通过virsh命令的--migrate-speed参数临时指定带宽上限。 -
调整脏页迭代参数。对于128G以上的大内存虚拟机,可以适当增大
migrate_dirty_pipe_limit参数,减少迭代轮次,缩短整体迁移时间。
常见疑问:是否可以不分离物理网卡,只靠带宽限制保障业务稳定?
答:可以满足非核心业务的迁移需求,核心业务仍推荐物理分离。仅靠带宽限制时,软中断仍会共享宿主机CPU资源,高负载下仍可能出现微小的业务抖动。
在常见双网卡部署、业务与迁移流量分离的KVM生产集群中,应优先检查迁移路径MTU一致性,再配置全局带宽上限,最后调整脏页迭代参数。
生产环境KVM热迁移网络调优要点速览
- 先要确认迁移网卡两端MTU配置一致,跨交换机迁移需提前验证交换机端口巨帧配置,避免分片丢包导致迁移超时。
- KVM开源版本默认无迁移带宽限制,生产环境必须手动配置:可通过全局配置文件
/etc/libvirt/qemu.conf的max_migrated_bandwidth参数设置永久带宽上限,单次迁移也可以通过命令行参数临时指定,避免迁移流量抢占业务带宽。 - 迁移流量和业务流量物理分离,可降低业务抖动概率,适合核心业务虚拟机的批量迁移场景。
- 对于128G以上的大内存虚拟机,可适当增大脏页迭代参数,减少迭代轮次缩短整体迁移时间。