前提如下
需主板支持SR-IOV
如主板没有此功能,请直接臭不要脸跟厂家发邮件要,我就是这样要了个新bios刷入后开启
如此途径失败,请购买其他板子😎
需网卡支持SR-IOV
82599ES/I350/82576都是支持的,其他自测,如不支持,那也就不用往下看了
判断网卡是否支持
Unraid-工具-系统设备-鼠标悬停在自己的网卡上
如箭头标识有SR-IOV字样就代表支持
也可通过以下命令判断
lspci -vvv -d 8086:10c9 | grep -A 9 SR-IOV
8086:10c9
为网卡设备ID
开搞
设置bios-高级-芯片组
页面中默认应该是这样的
把没开的所有选项都开启
开启VF网卡
进Unraid-工具-系统设备
找到你网卡的ID 如我的是[8086:10c9]
记下,并在终端中输入此命令
lspci -vvv -d 8086:10c9 | grep -A 9 SR-IOV
如图所示
VFs: 8
理解为最大支持8个网口
然后编辑/boot/config/go
文件
安装Config File Editor
插件可以直接编辑go
文件
在# Start the Management Utility
上方添加以下命令
sudo echo 7 > /sys/class/net/eth1/device/sriov_numvfs
echo 7
代表虚拟7个网卡 最大8个,默认占用一个,所以输入7
eth1
为用来虚拟的网口,按自己需求更改
****并进入Unraid-主界面-引导设备-闪存 ****
在Syslinux 配置中Unraid OS栏添加以下命令
intel_iommu=pt
保存重启,一般来说虚拟机就已经出现7个VF网卡了
就像这样
然后就可以勾选相应的网卡分配给虚拟机使用了
接下来说说疑难杂症
就是我遇到的问题,相同案例可以按此方法解决
系统设备无法勾选绑定网卡
如网卡默认被unraid调用无法勾选先添加此命令
从unraid分离8086:10c9
按自己ID填写
vifo-pci.ids=8086:10c9
重启后网卡在系统设备中即可勾选绑定
绑定后建议删除此命令
建议所有绑定操作皆通过系统设备勾选操作
固定VF网卡MAC地址
生成的VF网卡MAC地址是混乱的,不好记
所以.......
我们需要给这些设备都给编上号,让自己好记
编辑/boot/config/go
文件
在 sudo echo 7 > /sys/class/net/eth1/device/sriov_numvfs
下方添加以下命令
ip link set eth1 vf 0 mac 00:25:8b:03:10:01
ip link set eth1 vf 1 mac 00:25:8b:03:10:03
ip link set eth1 vf 2 mac 00:25:8b:03:10:05
ip link set eth1 vf 3 mac 00:25:8b:03:10:07
ip link set eth1 vf 4 mac 00:25:8b:03:11:01
ip link set eth1 vf 5 mac 00:25:8b:03:11:03
ip link set eth1 vf 6 mac 00:25:8b:03:11:05
虚拟了几个网卡,就写几行
MAC地址随便编辑,我后面是根据VF网卡ID来
这玩意儿就图个好记
保存-重启
现在可以去路由器中的DHCP添加对应信息了😁
虚拟机中网卡显示不完整
如图,系统设备中VF网卡只亮了一个
虚拟机中只有一个网卡,没有将虚拟的7个VF全部显示出来
这是因为在Unraid在启动过程中很早就将设备绑定到vfio-pci
所以我们需要增加一条命令再次进行设备绑定
编辑/boot/config/go
文件
在ip link set eth1 vf 6 mac 00:25:8b:03:11:05
下方添加以下命令
/usr/local/sbin/vfio-pci >>/var/log/vfio-pci
这样保存重启后就会正常显示了
如果还没有正常显示,可以编辑下 /boot/config/network.cfg
文件
# Generated settings:
IFNAME[0]="br0"
DHCP_KEEPRESOLV="no"
DHCP6_KEEPRESOLV="no"
BRNAME[0]="br0"
BRNICS[0]="eth0"
BRSTP[0]="no"
BRFD[0]="0"
DESCRIPTION[0]="unraid"
PROTOCOL[0]="ipv4+ipv6"
USE_DHCP[0]="yes"
USE_DHCP6[0]="yes"
METRIC6[0]="0"
PRIVACY6[0]="0"
IFNAME[1]="eth1"
PROTOCOL[1]="ipv4+ipv6"
USE_DHCP[1]="yes"
USE_DHCP6[1]="yes"
PRIVACY6[1]="0"
SYSNICS="2"
可能你的是默认调用了两个网口,需要删除第二个网卡的信息
IFNAME[1]="eth1"
PROTOCOL[1]="ipv4+ipv6"
USE_DHCP[1]="yes"
USE_DHCP6[1]="yes"
PRIVACY6[1]="0"
SYSNICS="2"
并将此数值改为1
SYSNICS="1"
这样确保只有unraid一个口,删除其他网卡
保存重启
VF网卡没网 ETH1网卡默认关闭
如果...
系统设备中VF网卡全亮了
虚拟机VF也全显示了
但是就是没网,显示网线被拔出咋办呢?
去设置-网络设置中看下ETH1是否启用
如果没有启用,可以手动点击启用后
但是这样虚拟机还是没网的,只能通过重启虚拟机或者禁用-启用网卡来获取,这样太麻烦了,狗屎!
所以我们再在/boot/config/go
文件加一条命令吧
在/usr/local/sbin/vfio-pci >>/var/log/vfio-pci
下方添加以下命令
ifconfig eth1 up
保存重启
这样在系统启动的时候就会启动此端口
这样虚拟机就可以正常获取网络了😁
总结
很不巧,我遇到了这些问题,所以我最终的go文件中信息如下
#!/bin/bash
# enable SRIOV and process vfio-pci binding again
echo 7 > /sys/class/net/eth1/device/sriov_numvfs
ip link set eth1 vf 0 mac 00:25:8b:03:10:01
ip link set eth1 vf 1 mac 00:25:8b:03:10:03
ip link set eth1 vf 2 mac 00:25:8b:03:10:05
ip link set eth1 vf 3 mac 00:25:8b:03:10:07
ip link set eth1 vf 4 mac 00:25:8b:03:11:01
ip link set eth1 vf 5 mac 00:25:8b:03:11:03
ip link set eth1 vf 6 mac 00:25:8b:03:11:05
/usr/local/sbin/vfio-pci >>/var/log/vfio-pci
ifconfig eth1 up
# Start the Management Utility
/usr/local/sbin/emhttp &