找回密码
 加入我们
搜索
      
查看: 16430|回复: 15

[软件] Intel X710-AT2 ESXi SR-IOV 开启记

[复制链接]
发表于 2023-1-10 01:36 | 显示全部楼层 |阅读模式
本帖最后由 imyz 于 2023-2-6 21:30 编辑

----- 2023/2/6 订正 ------
抱歉!之前自己笔误,2023/1/10日发文时,针对该主板板载 4 个 Intel 网卡在 ESXi 8 中的直通误作 “不支持”,但实际上是“支持”。
特此为 ESXi 8 正名!!!
------- 订正结束 -------


上回书《低功耗 All-in-One 静音小钢炮 DIY 札记》说到自从硬件搭建基本完成后,重点就转入了软件的折腾上,而这一篇可以看作上一篇的第2话。

All-in-One 小钢炮可不能光打嘴炮,于是上周把 Windows 全家桶如 10、11、Server 2022 这些个能试的全试了个遍,这两天开始转 ESXi 换下口味,况且它才是这台主机今后的底层核心,因此在旧服务器整体迁移之前,还是尽量多挖掘一下新机的“潜质”,那么板载 X710-AT2 在 ESXi 中开启 SR-IOV 当仁不让地成为了“重中之重”。为什么这么说呢?因为 X710 是目前我手上家用第一块也是唯一的万兆网卡,虽然之前没体验过 SR-IOV 的真实能力,但也在暗中关注这项技术,算作兴趣点之一,并且万一今后真用得上呢?而在剁手之前我也是有做过相关基础功课的,诸如:

VMware vSphere* 6.5、6.7 和 7.0 中 SR-IOV 的来宾操作系统支持

英特尔® Ethernet适配器与 VMware* 的兼容性

使用 VMware ESXi* 驱动程序英特尔® Ethernet NVM 映像英特尔® Ethernet、控制器和英特尔® Ethernet适配器的兼容性信息

虽然 SR-IOV 目前还不是我的刚需,但 X710 在 Intel 和 VMware 官方给出的各文档中都是座上宾,若不打通这一关心里总有一丝遗憾,心想何不趁着新旧交替之际多花些精力做个“技术攻关”,即使最终失败至少曾经努力过。之前试装 ESXi 8 时我遗漏了一个小细节:i40en Async驱动的版本,官方写明了要求 1.10.9.0,而这次因为 9260-8i 卡不得不降回 6.7U3,令人高兴的是,ESXi 8 下包括 Intel i210 在内的 4 张网卡都显示不能直通的,但这回至少 i210 直接可以勾选并直通了!言归正传,之前也是按 VMware 官方文档用 esxcli 指令尝试手工开启,数次失败后开始排查原因,反复回顾以上 Intel 给的兼容表终于让我捕捉到驱动版本这个细节,赶紧搜并登录 VMware 官网下载官方指定的 ESXi6.7 i40en1.10.9.0 NIC Driver for Intel Ethernet Controllers X710,XL710,XXV710&X722 family 驱动,安装并重启后 SSH 再来一遍:

  1. esxcli system module parameters set -a -m i40en -p max_vfs=8,8
  2. esxcli system module parameters set -a -m i40en -p trust_all_vfs=8,8
复制代码


两参数取值“8,8”是因为 X710-AT2 就两个口,准备每个口开 8 个 VFs,使用“-a”这个参数是因为要同时让这两条指令生效。我试过若不用它的结果就是二者中任一条指令都会让另一条失效,大家可以自行用 list 验证一下,如下图所示,我这板载 X710 max_vfs 最大值可取 128,双口平均即每口 64(我真的用不了这么多):

  1. esxcli system module parameters list -m i40en
复制代码



01.i40enDriver

01.i40enDriver


02.i40enParam

02.i40enParam


然而,即使采用了正确的驱动版本并设置了相应的参数后,无论重启多少次总还是如下图所示,X710 两个设备对应的 SR-IOV 列的状态始终是 Enabled/Needs reboot,而鼠标点上面的 Configure SR-IOV 按钮则如图显示 Virtual Functions 的最大值是 0,就是说没并没开启成功……但至少有一个好信息:以上的两条 set 参数指令应该是正确的,否则不可能提示 Enabled,可为何 Needs reboot 一直如影随形就太费解了,之前怀疑是主板 UEFI/BIOS 设置不正确,可反复看都是没错的,包括 CPU->SVM Mode、Chipset->SR-IOV 以及 NBIO->IOMMU 唯三的三项已经 Enabled,我都开始怀疑是不是 X710 Controller 固件中与之有关的功能妖擎忘记放进 UEFI 设置项了,直到我最终成功后才明白是我之前错怪妖擎了……

03.NeedsReboot

03.NeedsReboot


04.Inactive

04.Inactive


这次成功也是无心插柳,在经历了上面所说的百思不得其解后,不得不求助万能的互连网,而关键词基本就是 ESXi SR-IOV 这类的,看了一堆也没一个有用的,再后来想想,不如就用问题 SR-IOV Enabled Needs reboot 本身作关键词,偶然间看到以下链接的帖子中题主讲他看到有人设置 VMkernel.Boot.disableACSCheck = true 后可以开启……嗯???
VMware 6.7 Issue with intel x540-t2 SR-IOV | ServeTheHome Forums

找了一下,原来这个设置是在 Manage -> System -> Advanced settings 中,其默认值是 false,那咱们就按那位题主说的改成 true 即:禁用这个 ACS Check 试下,改前和改后的图分别如下:

05.disableACSfalse

05.disableACSfalse


06.disableACStrue

06.disableACStrue


原本也是抱着试一试的心态点了重启,没想到辛辛苦苦整了快2天竟然就以这样的方式成功了,还是看图说话:

07.Active

07.Active


08.MaxVFs

08.MaxVFs


欣喜之余立马打开之前装好的 Server 2022 VM,点 Edit -> Add other device -> PCI device 后就可以看见 SR-IOV 虚拟出来的那 8+8 张网卡了;开机进入设备管理器 -> 网络适配器,其中自然也多出来新添加的 Virtual Function 700 Series,再打开网络连接也显示 X710 接了网线的那口对应的虚拟网卡是已连接状态了。也许有人会问:Intel 的 Virtual Function 驱动对应的 Windows 版要怎么找?其实它就在 Intel 官方的 Windows 版驱动安装包中,官网下载后用如 7-Zip 工具解压那个自解压包后,其中的 PROAVF 那个目录中就是。

09.PCIDevice

09.PCIDevice


10.VMDeviceMgr

10.VMDeviceMgr


11.VMNICs

11.VMNICs


12.iavfDriver

12.iavfDriver


题外话:出于好奇搜了一下这个神奇的 PCIe ACS,原来它的全称是:Access Control Services,说它是为了防止 PCIe 设备间(P2P)不安全通讯的,启用它会有不少好处……但我又找了 Intel 官网上一些关于这个 ACS 的,结果 Intel 官方对 PF 和 VF 全默认是禁用(Off)!? VMkernel.Boot.disableACSCheck = true 我的理解就是禁用了 ACS???不晓得是不是我的理解不对!若真如此,那我这块板启用了 SR-IOV 今后在使用过程中也不晓得会不会曝出 PCIe 设备通讯方面的问题……

PCIe0 ACS for Physical Functions

13.ACSforPF

13.ACSforPF


14.ACSforVF

14.ACSforVF
 楼主| 发表于 2023-1-10 01:37 | 显示全部楼层
2楼照例占下备用
发表于 2023-1-10 01:40 | 显示全部楼层
3楼占位观摩LZ后续心得
发表于 2023-1-10 08:29 | 显示全部楼层
4楼占位围观
发表于 2023-1-10 08:53 | 显示全部楼层
回复收藏,之前x520开启过玩了下,又关闭了。。。
 楼主| 发表于 2023-1-10 10:59 | 显示全部楼层
wuhao0015 发表于 2023-1-10 08:53
回复收藏,之前x520开启过玩了下,又关闭了。。。

感谢关注!我很好奇为什么您后来又关闭?

我对 SR-IOV 目前的理解,它在某些情形下可以降低系统 CPU 的负担,按理应该是好事,虽然我关注了一段时间,但毕竟是第一次玩这个,不知道其中水有多深
发表于 2023-1-10 11:12 | 显示全部楼层
imyz 发表于 2023-1-10 10:59
感谢关注!我很好奇为什么您后来又关闭?

我对 SR-IOV 目前的理解,它在某些情形下可以降低系统 CPU 的 ...

需求小,设置稍微繁琐。
发表于 2023-1-10 14:07 | 显示全部楼层
我的X710不用修改参数也可以使用,但问题是不同网口不能互访,最后只能直接直通,不用SR-IOV直通了。
 楼主| 发表于 2023-1-10 15:22 | 显示全部楼层
huanan 发表于 2023-1-10 14:07
我的X710不用修改参数也可以使用,但问题是不同网口不能互访,最后只能直接直通,不用SR-IOV直通了。 ...

感谢分享!我还不知道有这回事,稍晚些来试试看您提到的这个不同网口间互访的问题。

按理来讲,除非物理隔离外,逻辑上的 VLAN、网段 这类应该是有办法能解决的...
 楼主| 发表于 2023-1-10 23:34 | 显示全部楼层
huanan 发表于 2023-1-10 14:07
我的X710不用修改参数也可以使用,但问题是不同网口不能互访,最后只能直接直通,不用SR-IOV直通了。 ...

晚上没事想起来您提到的这个 VF 间无法互通这事,于是又装了一台 2022 虚拟机配置好 VF 卡,每台虚拟机各配了 3 张虚拟网卡,分别是:

1. E1000e - ESXi 主机虚拟;
2. VF NIC #1 - X710 第 1 口 SR-IOV 虚拟直通;
3. VF NIC #2 - X710 第 2 口 SR-IOV 虚拟直通

其中 E1000e 主要是方便 PXE 装 Win2022 用,系统起来后直接禁用;而另外两个是准备测试同一口、不同口的 VF 是否均能互访。

一开始果然是不能互通,不论禁用哪一个 VF 卡结果都一样,排查了一圈问题,后来发现不通的现象是单向的,即:2022 虚拟机外部 ping 入的包不通,但 ping 出去却可以,正是因为入的不通,所以造成两台 2022 间不通.....

这个现象对我来说简直再熟悉不过了,Win10 以上新装虚拟机系统默认都有这个问题,解决也简单,如下图中选中“启用网络发现 + 启用文件和打印共享”两个再点“保存更改”后,就全通了。假如 Win 能通,相信其它 OS 也应该是一样无障碍的。
InterCommunications.png
发表于 2023-1-11 00:34 | 显示全部楼层
imyz 发表于 2023-1-10 23:34
晚上没事想起来您提到的这个 VF 间无法互通这事,于是又装了一台 2022 虚拟机配置好 VF 卡,每台虚拟机各 ...

你理解错了,是不同网卡的vf,vp不能互访。
发表于 2023-1-11 01:06 | 显示全部楼层
ESXi SR-IOV 不是要 VMware vSphere Enterprise Plus License 才能用?
 楼主| 发表于 2023-1-11 08:47 | 显示全部楼层
huanan 发表于 2023-1-11 00:34
你理解错了,是不同网卡的vf,vp不能互访。

原来如此。我目前还没条件测,得看今后有没机会再上另一张万兆了
发表于 2023-1-11 09:06 来自手机 | 显示全部楼层
还是hyper v简单
 楼主| 发表于 2023-1-11 11:10 | 显示全部楼层


目前我用过的几种系统中,单就 SR-IOV 配置上,Hyper-V 是最简单方便的,并且虚拟机的效率也不低。

但我还是偏好 ESXi,是从后期运维角度出发,ESXi 平台即使宕机,只要数据没问题恢复一下系统就十几分钟的事儿,换 WinServer 就远不止了
发表于 2023-11-16 10:11 | 显示全部楼层
huanan 发表于 2023-1-10 14:07
我的X710不用修改参数也可以使用,但问题是不同网口不能互访,最后只能直接直通,不用SR-IOV直通了。 ...

请问下,你能开启几个,我显示可以开启64个,但实际只能开16个,超过16个就需要重启,结果就是失败
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-4-26 17:36 , Processed in 0.014351 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表