windows中开启网卡sr-iov需软硬协同:先确认bios启用vt-d/sr-iov、网卡支持且驱动就绪、系统返回iovsupport为true;再执行enable-netadaptersriov启用网卡级sr-iov;新建外部虚拟交换机并勾选sr-iov;虚拟机关机后添加sr-iov适配器并安装对应vf驱动。
windows 中开启网卡 sr-iov 不是单纯在设备管理器里点一下就能生效的,它依赖硬件支持、系统配置和 hyper-v 层级协同。真正起效的前提是让虚拟机绕过虚拟交换机软件路径,直接调度物理网卡的虚拟功能(vf),从而降低延迟、提升吞吐量。
确认网卡与平台是否真正支持 SR-IOV
必须同时满足以下三项,缺一不可:
- BIOS/UEFI 中已启用 Intel VT-d(AMD 平台为 AMD-Vi)、PCIe SR-IOV 和 Above 4G Decoding;ASPM 建议设为 Disabled
- 网卡型号明确支持 SR-IOV(如 Intel X710、XXV710、Mellanox ConnectX-4 及以上),且已安装最新官方驱动
- 在 PowerShell 中运行
Get-NetAdapterSriov -Name "网卡名",返回的CurrentNumVFs和MaxNumVFs均大于 0;同时执行(Get-VMHost).IovSupport返回True
通过 PowerShell 启用网卡级 SR-IOV 功能
仅当硬件就绪后,才可执行启用操作:
- 以管理员身份打开 PowerShell
- 运行
Enable-NetAdapterSriov -Name "网卡名"(例如"Ethernet"或"NIC1") - 执行后可通过
Get-NetAdapterSriov再次验证状态,Enabled字段应为True - 注意:该命令不会自动创建 VF,VF 数量由后续虚拟交换机配置决定
创建支持 SR-IOV 的外部虚拟交换机
SR-IOV 只能在新建外部交换机时启用,无法后期添加:
- 打开 Hyper-V 管理器 → 右键主机 → “虚拟交换机管理器”
- 选择“新建虚拟交换机(外部)” → 绑定到已启用 SR-IOV 的物理网卡
- 勾选“启用单根 I/O 虚拟化 (SR-IOV)”
- “最大虚拟机队列数”建议设为网卡支持的最大 VF 数(如 X710 最多 64),但实际分配需预留 2–4 个给管理流量或备用
- 切记:SR-IOV 与 NIC Teaming 互斥,启用前必须解绑所有网卡聚合
虚拟机侧绑定与驱动适配
即使交换机配置完成,虚拟机仍需手动适配才能使用 VF:
- 虚拟机必须处于关机状态
- 移除原有“网络适配器”,添加“SR-IOV 网络适配器”(类型不可热插拔)
- 启动后,在虚拟机内安装对应厂商的 VF 驱动(如 Intel 提供的 Virtual Function Driver,Mellanox 需 OFED)
- 进入设备管理器确认无黄色感叹号;若存在,说明 VF 驱动未正确加载
- 建议禁用虚拟机内部的 TCP Chimney 卸载、QoS 策略等可能与硬件直通冲突的功能
不复杂但容易忽略











