在hyper-v中启用sr-iov需软硬协同:先确认cpu/bios、网卡及windows系统均支持,再新建外部虚拟交换机并启用sr-iov,虚拟机关机后添加sr-iov适配器并安装对应vf驱动,最后验证路径与调优。
在 hyper-v 中启用 sr-iov 不是简单勾选一个选项就能见效的,它是一套需软硬协同、逐层验证的配置体系。真正提升网络性能的关键,在于绕过虚拟交换机软件路径,让虚拟机直接调度物理网卡的虚拟功能(vf)。下面从实操角度梳理核心环节。
确认硬件与系统级支持是否到位
很多配置失败源于前期检查疏漏。必须同步满足以下三点:
- CPU 和 BIOS 层:Intel 平台需开启 VT-d(不是仅 VT-x),AMD 平台需开启 AMD-Vi;BIOS 中 “SR-IOV Support” 和 “Above 4G Decoding” 必须启用,“ASPM” 建议设为 Disabled
- 网卡本身:仅限明确支持 SR-IOV 的型号,如 Intel X710/XXV710(需最新驱动)、Mellanox ConnectX-4 及以上;运行 Get-NetAdapterSriov 查看 CurrentNumVFs 和 MaxNumVFs,二者都非零才表示当前可用
- Windows 系统:Host 必须为 Windows Server 2016 或更新版本(推荐 2022),且执行 (Get-VMHost).IovSupport 返回 True;若返回 False,需结合 (Get-VMHost).IovSupportReasons 定位具体缺失项
创建 SR-IOV 虚拟交换机的硬性约束
SR-IOV 支持只能在新建外部虚拟交换机时启用,无法后期追加。操作中注意:
- 必须选择“外部”类型,绑定到支持 SR-IOV 的物理网卡
- 勾选“启用单根 I/O 虚拟化 (SR-IOV)”——该复选框只在此界面出现一次
- “最大虚拟机队列数”建议设为网卡支持的最大 VF 数(如 X710 最多 64),但实际分配应按需预留(例如留 2–4 个 VF 给管理流量或备用)
- 不支持与 NIC Teaming 共存,启用前务必解绑所有网卡聚合
虚拟机侧适配器配置要点
即使交换机启用成功,虚拟机仍需正确绑定才能生效:
- 虚拟机必须关机状态下操作:移除原有“网络适配器”,添加“SR-IOV 网络适配器”
- 该适配器类型不可热插拔,也不支持动态内存、检查点、嵌套虚拟化等部分高级功能
- 启动后,虚拟机内需安装对应 VF 的驱动(如 Intel VF 驱动、Mellanox OFED),否则设备管理器显示感叹号
- 禁用虚拟机内部的 QoS 策略和 TCP Chimney 卸载,避免与硬件直通冲突
运行时监控与基础调优
启用后需验证是否真正走 VF 路径,并做轻量调整:
- 宿主机上运行 Get-VMSwitchExtensionPortFeature -SwitchName "你的交换机名",确认 VF 已被分配且状态为 “Active”
- 虚拟机内使用 netsh int tcp show global 检查是否禁用 RSS(SR-IOV 下 RSS 由硬件处理,软件侧应关闭)
- 将网卡中断节流率设为“极低延迟”模式:Set-NetAdapterAdvancedProperty -Name "VF网卡名" -DisplayName "Interrupt Moderation" -DisplayValue "Lowest Latency"
- 避免在 VF 上配置 VLAN 或巨帧等高级特性,除非物理网卡固件明确支持并已启用











