搭建虚拟化平台时,网卡接入模式的选择直接影响虚拟机网络性能。SR-IOV直通能绕过Hypervisor降低延迟,virtio半虚拟化在兼容性和性能之间取得平衡,而模拟网卡虽然通用但开销巨大。3种模式各有适用场景,选错了会导致吞吐量腰斩、CPU占用飙升。
物理服务器跑虚拟化之后,虚拟机并不能直接使用物理网卡。Hypervisor需要在物理网卡和虚拟网卡之间加一层抽象——问题就出在这一层怎么处理。
处理方式的差异,决定了网络性能的上限。目前主流有3种模式:
模拟模式:Hypervisor用软件完整模拟一块网卡的行为。Guest OS以为自己在操作一块真实的Intel或Realtek网卡,实际上每次收发数据包都要经过QEMU用户态进程和Hypervisor内核态的多次上下文切换。性能损耗最大,但兼容性最好——几乎所有操作系统无需安装额外驱动。
半虚拟化(virtio):Guest OS知道自己跑在虚拟化环境里,安装virtio前端驱动后,通过Virtqueue共享环形缓冲区与Hypervisor的virtio后端通信。数据不需要经过完整的协议栈模拟,减少了上下文切换次数。KVM和Proxmox VE默认使用virtio。
SR-IOV直通:物理网卡通过SR-IOV(Single Root I/O Virtualization)技术将自身拆分为多个虚拟功能单元(VF),每个VF直接分配给一个虚拟机。数据面完全绕过Hypervisor,虚拟机中的驱动直接操作硬件寄存器。这是目前延迟最低、吞吐量最接近裸金属的方案。
SR-IOV需要3个条件同时满足:物理网卡支持SR-IOV、主板BIOS开启VT-d/IOMMU、Hypervisor版本支持VF分配。缺一不可。
从性能角度看,3种模式的差距不是"略有不同",而是数量级的差别。
| 对比维度 | 模拟模式 | 半虚拟化(virtio) | SR-IOV直通 |
|---|---|---|---|
| 吞吐量 | 1-3Gbps | 8-20Gbps | 接近裸金属线速 |
| 延迟 | 50-200μs | 15-50μs | 2-8μs |
| CPU开销 | 高(30-50%单核) | 低(<5%单核) | 极低(接近0) |
| Guest驱动要求 | 无需额外驱动 | 需安装virtio驱动 | 需VF直通驱动 |
| 热迁移支持 | 支持 | 支持 | 受限(需特殊处理) |
| 隔离性 | 软件隔离 | 软件隔离 | 硬件级隔离 |
| 适用场景 | 测试/管理网络 | 通用业务/存储网络 | 高性能计算/低延迟 |
模拟模式只适合管理网络和测试环境;virtio是大多数生产场景的默认选择;SR-IOV直通用于对延迟和吞吐量有硬性要求的场景。
SR-IOV是网卡硬件层面的能力。不是所有网卡都支持——需要网卡控制器本身具备VF拆分功能。LR-LINK基于Intel主控的10G/25G/100G网卡系列普遍支持SR-IOV。
LRES1012PT 是双口10G电口网卡,基于Intel X710主控,PCIe 3.0 x8接口,功耗9.6W。适合已有Cat6a铜缆布线的虚拟化环境,100米内稳定传输。Intel X710支持最多64个VF,意味着单张网卡可以为64个虚拟机各自分配独立的VF实例。
LRES1001PF-2SFP28 是双口25G光口网卡,基于Intel XXV710主控,PCIe 3.0 x8,单口功耗8.9W。25G速率在虚拟化场景中性价比突出——相比10G提升2.5倍带宽,而网卡和交换机成本远低于100G方案。
LRES1027PF-4SFP28 是四口25G光口网卡,基于Intel E810主控,PCIe 4.0 x8,支持SR-IOV。同时支持iWARP和RoCE v2 RDMA。4个物理端口(PF)各自可以独立创建VF,VF总数可达128个以上。RDMA支持使其在分布式存储(Ceph)和AI推理集群中表现突出。
LRES1019PF-QSFP28 是单口100G网卡,基于Intel E810主控,PCIe 4.0 x16,支持SR-IOV。100G单端口在SR-IOV模式下可以为多个虚拟机提供接近线速的带宽,适合大数据和AI训练场景中的参数同步需求。
虽然一张网卡可以创建几十个VF,但所有VF共享物理端口的总带宽。如果64个VM同时跑满流量,每个VM分到的实际带宽会大幅下降。建议根据实际VM数量和带宽需求规划VF分配,通常每个物理端口分配8-16个VF即可覆盖大多数场景。
ESXi对SR-IOV的支持从6.0版本开始引入。在vSphere Client中,进入"主机 → 配置 → 网络 → 物理适配器",选择支持SR-IOV的网卡,启用SR-IOV并设置VF数量。之后在虚拟机的网络适配器设置中选择"SR-IOV直通"类型,绑定到指定VF。
ESXi的SR-IOV直通网卡不支持vMotion热迁移——这是VMware的已知限制(参见VMware官方文档:SR-IOV配置)。如果虚拟机需要热迁移能力,管理网络和管理VMkernel适配器必须走标准虚拟交换机(vSwitch或vDS),只有业务数据网络才用SR-IOV直通。
PVE基于KVM,天然支持virtio和SR-IOV。virtio是默认网卡模式,安装Guest OS时选择"VirtIO (paravirtualized)"即可。
SR-IOV直通需要额外几步:在PVE宿主机的 /etc/default/grub 中添加 intel_iommu=on,更新grub后重启。然后在网卡配置界面将物理网卡启用SR-IOV,创建VF后通过PCI直通(PCI Passthrough)分配给虚拟机。
在Proxmox VE中,推荐管理网络使用virtio(支持热迁移),存储网络(Ceph/iSCSI)和业务高性能网络使用SR-IOV直通。两种模式可以在同一台宿主机上共存,只要物理网卡有足够的VF。
原生KVM环境下,SR-IOV的配置通过virsh或libvirt XML完成(参见libvirt官方文档:PCI Passthrough)。使用vfio-pci驱动将VF绑定到虚拟机:
<interface type='hostdev'>
<source>
<address type='pci' domain='0x0000' bus='0x03' slot='0x02' function='0x1'/>
</source>
<mac address='52:54:00:xx:xx:xx'/>
</interface>
KVM环境下virtio和SR-IOV的灵活性最高——virtio支持热迁移、快照、带宽QoS限制;SR-IOV提供最佳性能但牺牲部分管理灵活性。
| 场景 | 推荐模式 | 推荐网卡 | 理由 |
|---|---|---|---|
| 管理网络/VMkernel | virtio | LRES1012PT 10G | 需要热迁移支持,带宽需求低 |
| 通用业务VM | virtio | LRES1001PF-2SFP28 25G | 性能足够,管理灵活 |
| 分布式存储(Ceph) | SR-IOV | LRES1027PF-4SFP28 25G×4 | 低延迟+RDMA减少存储同步开销 |
| AI训练/推理集群 | SR-IOV | LRES1019PF-QSFP28 100G | 参数同步需要高带宽低延迟 |
| 开发测试环境 | 模拟/virtio | LRES1012PT 10G | 兼容性优先,性能要求不高 |
生产环境默认选virtio,只在有明确性能瓶颈时才上SR-IOV。SR-IOV不是"更先进所以更好",而是"牺牲管理灵活性换取极致性能"——只有当virtio的性能确实不够用时,才值得承担热迁移受限、配置复杂度增加的代价。
PCI直通(Passthrough)是将整块物理网卡分配给一个虚拟机,一张网卡只能给一个VM用。SR-IOV通过网卡硬件将一块物理网卡拆分为多个VF,每个VF可以独立分配给不同的虚拟机,大幅提高了网卡利用率。一张四口25G网卡通过SR-IOV可以同时服务几十个虚拟机,而PCI直通模式下只能服务4个。
需要。Linux内核从2.6.25版本开始内置virtio驱动,大部分现代Linux发行版开箱即用。Windows系统需要安装VirtIO-Windows驱动包(通常由虚拟化平台提供ISO镜像)。如果Guest OS没有virtio驱动,只能回退到模拟模式。
受限。VMware ESXi不支持SR-IOV直通网卡的vMotion。KVM环境下可以通过先取消VF绑定、迁移、再重新绑定的方式实现,但过程中网络会短暂中断。如果热迁移是硬性需求,建议管理网络走virtio,只在不需要迁移的固定VM上使用SR-IOV。
如果从零开始搭建,推荐25G方案。25G相比10G带宽提升2.5倍,而SFP28端口和线缆成本与10G SFP+接近,交换机端口密度更高。对于已有10G布线的存量环境,升级到25G需要更换线缆和交换机,可以继续使用10G网卡并通过SR-IOV优化性能。
可以。物理网卡的管理功能(PF)由Hypervisor使用,可以创建虚拟交换机走virtio模式;同时网卡创建多个VF分配给特定VM走SR-IOV直通。两种模式在同一张网卡上共存,这也是生产环境的推荐做法——管理网络走virtio保证灵活性,业务网络走SR-IOV保证性能。