为Mellanox CX2网卡开启sriov

最近本频道皮套人浓度有些高了,先发篇专栏降低一下。
之后再狠狠地入脑发癫!
前言
简单来说cx2网卡需要通过刷自定义固件来开启sriov,而刷固件需要.mlx格式的固件以及工具包。
麻烦的地方在于官网没有提供.mlx格式的固件,工具包也已经不支持cx2系列了,得去其他地方找...
请自行考虑并承担刷固件的风险!
获取所需的文件
好在HPE还有提供全套工具: https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_7dff755cf65c45f3a4f639a4e1
下载并打开安装包,之后停留在下面这个页面↓

在C:\Users\{用户名}\AppData\Local\Temp目录搜索mstflint,搜索到结果后右键前往该文件夹,并将所有文件复制到其他地方备用。(此时可以关闭安装包了)
修改配置以开启sriov
在上一步提取出的工具包目录打开一个cmd窗口,输入mst.exe status,此时应该会返回网卡的id(如mt26448_pci_cr0)
之后输入flint.exe -dev {网卡id} query, 正常的话应该可以看到网卡当前固件信息了,如下图所示↓

接下来备份固件以及固件内的配置(配置稍后要用)
以文本格式打开上述备份的config.ini配置文件,在[HCA]部分的最后添加:
(我这张MNPA19-XTR网卡在PVE系统下似乎最多只能开七个vf)
将修改后的配置与fw-ConnectX2-rel.mlx文件合并以生成可刷入的固件:
刷入固件
刷入固件的命令为:

再次输入flint.exe -dev {网卡id} query检查固件版本

到这里刷入固件的步骤就完成了
开启sriov
(以下内容似乎同时适用于cx2及cx3网卡,不过我手头没有cx3的网卡,所以不保证)
这里以PVE7.2系统为例:
最后重新加载驱动
此时在PVE的管理后台应该可以看到所有的vf了

shell运行ip a检查mac地址,跟Intel网卡不同的是这个mac地址似乎不会在每次启动时变化

结尾
到这儿基本上就结束了,我这里遇到的唯一一个问题是每次启动系统都需要手动重新加载驱动,所以得写一个启动时自动运行的脚本,方法有很多就不再赘述了~
参考链接
cx2开启sriov: https://forums.servethehome.com/index.php?threads/sr-iov-for-mellanox-connectx-2.12693/#post-121167
官方文档(部分适用于cx2): https://docs.nvidia.com/networking/display/MLNXOFEDv471001/Single+Root+IO+Virtualization+-+SR-IOV