用户咨询如何配置Broadcom网卡的SR-IOV的功能,关于该配置网上相关手册很有限,解释的也不详细,对此笔者对现有设备进行实验和测试,为开启SR-IOV功能的操作做一个介绍。
配置过程中会有告警进行,需要适当的进行配置的调整,如
1. 在dmesg中可能会有如下的报错信息
bnx2x 0000:03:00.0: not enough MMIO resources for SR-IOV
2. 查看到VF网卡的MAC地址为00:00:00:00:00:00
关于bnx2x 0000:03:00.0: not enough MMIO resources for SR-IOV的报错 ,主要是BIOS的问题,BIOS没有为VF提供足够的MMIO space,可以在系统的kernel中增加参数解决
本案例中使用的服务器测试环境如下:
服务器:H3C R390X G2
操作系统:RHEL7.3
SR-IOV网卡型号:Brocadcom 530FLB (BCM57810芯片)
1. 首先在BIOS中开启网卡的SR-IOV的支持
服务器开机自检按ESC或DEL进入BIOS Setup,点击Advanced -> 选中530FLR网卡。 默认Multi-Function Mode为SF,这里改成SR-IOV
2. 操作系统中开启IOMMU支持
执行dmesg | grep -i iommu看操作系统是否开启了IOMMU支持,如果没开启,则编辑如下
# vi /etc/default/grub
...
GRUB_CMDLINE_LINUX="nofb splash=quiet cOnsole=tty0 intel_iommu=on
...
重新生成grub配置文件
#grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
#reboot
重启后查看iommu启动情况
#dmesg | grep -i iommu
则表示开启成功
3. 系统中查看网卡,我们使用的是BCM57810芯片的网卡(Broadcom)
查看网卡信息
4. 开启网卡的VF端口
注意:首先要确保端口是up状态
#ifup ens9f0
查看sriov的端口数量
# cat /sys/class/net/ens9f0/device/sriov_numvfs
0
如果返回结果是0,表示没有VF接口
5. 开启VF端口
# echo 8 > /sys/class/net/ens9f0/device/sriov_numvfs
备注:enable VF时,可能会报错如下:
[ 641.704649] bnx2x 0000:03:00.0: not enough MMIO resources for SR-IOV
[ 641.704656] [bnx2x_enable_sriov:2514(ens9f0)]pci_enable_sriov failed with -12
上面的报错通常是BIOS issue,可能是BIOS不支持 (The BIOS is not providing enough MMIO space for VFs)
参考文档:https://access.redhat.com/solutions/37376
解决办法: 在kernel中再加入一个参数pci=realloc
修改/etc/default/grub,在之前的iommu选项后,加入该参数
重新生成grub
#grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
#reboot
6. 检查VF开启情况
经过刚刚的设置之后,再次执行下面的命令后,即可查看到VF port
# echo 8 > /sys/class/net/ens9f0/device/sriov_numvfs
# lspci | grep –i ethernet
# ip addr show
但是所有的mac地址都是00:00:00:00:00:00
根据Broadcom bnx2x driver的readme描述,这属于正常情况
https://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1050551721/v140545/README
Known issues/Limitations/Caveats
-----------------------------------
-The bnx2x driver now assigns all zeroes as the MAC address for SR-IOV virtual functions. Users need to manually configure valid MAC addresses for virtual functions using iproute2 or ifconfig methods
7. 手动设置VF的MAC地址
# ip link show
先查看MAC地址
手动设置MAC地址
# ip link set enp3s1f1 addr 14:aa:bb:cc:dd:01
下面的脚本是为了实现自动化配置所有VF端口的命令
# counter=1; for i in $(ip a | grep enp3s1 | awk '{print $2;}' | tr -d ":"); do ip link set $i addr aa:bb:cc:dd:ee:$counter; ((counter++)); done
注意:需要适当修改enp3s1端口名称为实际端口的名称
本文对Broadcom网卡启用SR-IOV功能做了详细的介绍,需要注意,手动配置网卡的MAC地址,根据不同型号的网卡可能会有差异。
上面是在设置Broadcom网卡,芯片型号为BCM57810时所执行的命令,我们可以看到这款卡的特点是每个VF都有自己的端口名称
相比其他型号网卡,比如intel,可能会有些差异,所有的VF是挂在某个PF下,且没有单独的网卡名称。这时需要执行如下的命令
#ip link set eth2 vf 1 mac 00:52:44:11:22:33
所以要根据实际情况进行修改
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作