Unraid 篇三:SR-IOV网卡虚拟分组直通及避坑指南
写在前面
这个课题其实可以说是老生常谈了,自己很早就配置了.
主要是最近想把两年前的坑补上,并且留下记录以后备查方便.踩过的坑太多,自己写一段流畅的操作记录,比扒拉各个帖子更实在点.
Q:SR-IOV是啥?
A:简单讲就是讲一张网卡支持SR-IOV就可以将单个或多个网口分组直通出更多的虚拟网卡,提供给虚拟机或者docker等其他应用使用,节约成本,更高效利用,比较明显的缺点就是小包转发效率比正常单口直通要差.支持的设备有比较常见的 I350 , X520 等网卡.选购这些网卡也是有比较大的坑,本篇不详述.
Q:如何看自己的设备是否支持SR-IOV?
A:现在unraid已经非常无脑简单配置了,打开 工具 - 系统设备 ,鼠标移动到网卡的字段上,
如果在单根 I/O 后面有(SR-IOV)字样,就说明支持.
阅读完以上,如果你没有需求,alt+F4. 有需求,这篇文章可以让你少踩很多坑,我会提供我的方案,并且快速配置完.
正文
1.前提及准备工作:
主板开启 VT-d , 网卡支持 SR-IOV
以我这张 I350-T4 网卡( 01:00.0 ~ 01.00.3 )为例
查询是否支持的命令:
lspci -s 01:00.0 -vvv | grep Capabilities
查询可虚拟数量的命令:
cat /sys/bus/pci/devices/0000:01:00.0/sriov_totalvfs
我的显示8,所以最多能虚拟7个,1个被物理口占用,根据实际需求,可以不用一次全都单口虚拟成8个,一张网卡虚拟成64个可用口,因为虚拟的越多,虚拟网口效率自然更差.
2.正式施工:
还是以我的硬件条件为例 (主板H370N:2个物理网口+I350T4网卡:4个物理网口)
A. 规划,选择性虚拟直通(重要) :
eth0:主板上的i211网口 : 不直通,用作管理口
eth1:主板上的i219-v网口 : 直通给win10虚拟机
I350T4网卡 : 1~3口直通 , 4口不直通 , 分组后再直通虚拟出来的VF卡 (前3口提供直通,4口留作更多虚拟机的备用,虚拟7个网口)
提前规划,很重要的原因是: 如果不规划好,提前在网络里设置顺序及后续的MAC分配,重启以后,或者启动项修改成GUI方式等等原因,会造成之后的配置混乱,又要倒回来重新搞,必须一步到位,以免后患!
B. 网络设置 :
关闭阵列, 前往 设置 - 网络设置
eth0用作管理口,保持之前设置不动
往下翻,找到 接口规则
按照我前面的规划,按照顺序分别分配
下图中,我的分配顺序,因为我已经直通过了,所以中间的网卡不显示,这里的eth8就是我的规划中,I350网卡的最后一个口不直通,所以能显示
配置完,保存
C. 测试获取硬件号 :
先测试一下,以及获取对应硬件号留存备用:
echo 1 > /sys/bus/pci/devices/0000:01:00.3/sriov_numvfs
ip link set eth8 vf 0 mac 00:55:15:21:e1:f0
ip link show dev eth8
注 :
0000:01:00.3 - 对应我的第四个网口的子编号 ( 01:00.3 )
eth8 - 就是上文所述的要虚拟的口
echo 1 - 要分组几个就填几
vf 0 - 编号从0开始计
mac XX:XX:XX:XX:XX:XX - 网卡地址自定义
工具 - 系统设备 : 记录下虚拟出来的硬件号 ( 8086:1520 )
D . 修改启动项 :
打开Syslinux文件
注 : OS和GUI模式下都改,为的是万一系统被自己折腾出毛病,还能进GUI抢救的情况下,网卡配置不会乱,省的下次再改,如果进下面其他安全模式之类的,没有配置过,重启以后,顺序还是会乱的,这点注意
OS 和 GUI 模式 , 修改添加 :
append pcie_acs_override=downstream,multifunction vfio_iommu_type1.allow_unsafe_interrupts=1 intel_iommu=on iommu=pt pci_pt_e820_access=on pci=assign-busses xen-pciback.hide=(01:00.0)(01:00.1)(01:00.2) vfio-pci.ids=8086:1520 initrd=/bzroot
以上命令的解释:
(01:00.0)(01:00.1)(01:00.2) - 就是我的规划中所注,直通前I350网卡的前3个口,第四个口不能直通,需要RS-IOV.
vfio-pci.ids=8086:1520 - 是I350网卡开启SR-IOV以后出现的VF卡所对应的分组硬件号
其他命令是关于IMMO分组,开启虚拟机PCIe-ACS覆盖等的相关命令,照抄就行
E . 固定网卡地址
go文件添加 :
echo 7 > /sys/bus/pci/devices/0000:01:00.3/sriov_numvfs
ip link set eth8 vf 0 mac 00:55:15:21:e1:f0
ip link set eth8 vf 1 mac 00:55:15:21:e1:f1
ip link set eth8 vf 2 mac 00:55:15:21:e1:f2
ip link set eth8 vf 3 mac 00:55:15:21:e1:f3
ip link set eth8 vf 4 mac 00:55:15:21:e1:f4
ip link set eth8 vf 5 mac 00:55:15:21:e1:f5
ip link set eth8 vf 6 mac 00:55:15:21:e1:f6
F.重启,完工
避坑及拓展
实测我的卡不能虚拟出来给群晖用,但是windows有效,其他卡也有别人的案例说分配爱快驱动问题,无法拨号,我没试过不知
虚拟网卡主要作用是有限PCI插槽下,为了拓展给更多的虚拟机使用,量力而行,不要盲目为了多网口而去直通
多口划分出来可以玩交换机vlan,参照 https://post.smzdm.com/p/a0dopz6z/
如果你是2.5G网口,需要添加额外代码,否则容易出现断连 , 别人帖子里看到的解决方法 ,
go 文件添加 :
/usr/sbin/ethtool -s eth8 speed 2500 duplex full
/sbin/ifconfig eth8 down
/sbin/ifconfig eth8 up
unraid国内的氛围太差,很多东西需要扒拉外网,挺累人的
打算把几年踩过的坑,趁这股劲一起扒拉出来写写完,写着写着又有点没动力了,主要是之前整套HTPC自动化观影布完,一下就养老了,也没啥新鲜的玩意儿完.现在就期待intel什么时候能推出平民级的GPU虚拟化方案,这个只能在11-12代期待能实现,所以目前还是继续用我现在的硬件配置来作这个多用体,既能搞定HTPC硬解,又是一台办公家用的windows/mac/linux, 有兴趣的可以参考我这篇哦
Unraid 篇一:Docker核显硬解 + windows虚拟机外接显示器物理输出iGPU YES!_显示器_什么值得买 (smzdm.com)
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
長瀬湊
校验提示文案
查-无此人
校验提示文案
悲秋在钓鱼丶
校验提示文案
云想流月
校验提示文案
美貌大王
校验提示文案
Erigen
校验提示文案
值友3978085406
校验提示文案
美貌大王
校验提示文案
值友3978085406
校验提示文案
Erigen
校验提示文案
云想流月
校验提示文案
悲秋在钓鱼丶
校验提示文案
查-无此人
校验提示文案
長瀬湊
校验提示文案