UNRAID下开启SRIOV——曲折之路

2021-05-29 16:46:55 33点赞 197收藏 45评论

创作立场声明:所有内容均来自网络公开资料+自我研究,纯分享。如对你有帮助,请多多支持鼓励。

说起来玩NAS有一段时间了。

一路过来遇到不少问题,也解决了不少问题。

而这次之所以写下这篇。是因为这个坑太大,卡住我太久啦。UNRAID下开启SRIOV——曲折之路

既然已经把坑趟平,索性分享出来,希望各位机油少走一点弯路。

不过还是那句话,机和机毕竟不同,如果还遇到其他坑,勿怪勿怪。UNRAID下开启SRIOV——曲折之路

一切的一切,都要从人生观大佬的一篇教程开始https://post.smzdm.com/p/awx0xe2k/。(非常感谢人生观、司波图、阿文菌等等大佬,带给我们机油无限的知识财富和欢乐。)UNRAID下开启SRIOV——曲折之路

然而参照人生观大佬的教程,我在UNRAID下开启网卡SR-IOV并不成功。试了无数次各种网卡依然失败。UNRAID下开启SRIOV——曲折之路

只能翻遍资料,慢慢试验。其中曲折不堪回首(换了有SR-IOV选项的主板,翻阅了一堆看不懂的英文文档)。UNRAID下开启SRIOV——曲折之路

不过还好最后让我机缘巧合地弄好了。UNRAID下开启SRIOV——曲折之路

不多毕毕,下面教程马上开始。UNRAID下开启SRIOV——曲折之路

老规矩简单介绍一下今天的主角,SR-IOV。

SR-IOV能允许一个物理PCIe设备把自身虚拟为多个虚拟PCIe设备。

至于为什么要这样做,我们直接搬结论。

纯虚拟性能 < SR-IOV虚拟性能 < 物理直通性能

打个比方,在设备支持的情况下。只要开启了SR-IOV功能,就可以把一张显卡虚拟化成一百张,分配给一百台虚拟机;也可以把网卡上的一个网口虚拟化成一百个网口,分配给一百台虚拟机。UNRAID下开启SRIOV——曲折之路

当然是打个比方,实际没有那么夸张,一般常见的设备,虚拟出几个设备还是可以的。

比如这样。

PVE下I350T4网卡开启SR-IOVPVE下I350T4网卡开启SR-IOV

或者这样。

UNRAID下I350T4网卡开启SR-IOVUNRAID下I350T4网卡开启SR-IOV

开启SR-IOV前,我们要保证主板CPU支持虚拟化功能,VT-D。

这是必须的。

除此之外,如果主板有单独的SR-IOV开关,那也要打开。

某些主板只支持VT-D,但是没有单独的SR-IVO选项,但是一样支持SR-IOV功能。

比如我实测的华擎Z370Mpro4,只有VT-D开关,没有单独的SR-IOV开关,依然支持SR-IOV。

华擎Z370Mpro4 支持SR-IOV功能华擎Z370Mpro4 支持SR-IOV功能

所以只要主板支持VT-D功能,大家大胆去试,说不定有惊喜。UNRAID下开启SRIOV——曲折之路

打开VD-T以后我们进入UNRAID。

查看系统信息(任意界面点击右上角的“信息”)。

如图所示。

UNRAID系统信息UNRAID系统信息

支持HVM就是支持虚拟化。

下面我们直接修改MAIN-FLASH。

在UNRAID OS中加入下面语句。

intel_iommu=on iommu=pt pcie_acs_override=downstream pci_pt_e820_access=on pci=assign-busses

UNRAID下开启SRIOV——曲折之路

保存以后重启系统。

重启后来到工具-系统设备。

就可以看到PCIe网卡信息,并且单网口是单独的IOMMU分组。

这里我接了一张X540 T2,一张I350 T4。

物理网卡IOMMU分组信息物理网卡IOMMU分组信息

然后我们来到UNRAID网络设置。

设置好各个网口对应的eth信息,并且记好。

如果你想识别一个特定的物理接口,可以用ethtool -p eth*命令来查看,ethtool命令会使eth*端口的LED灯闪烁。

UNRAID网络接口设置UNRAID网络接口设置

这时候我们打开SSH终端

输入开启网卡SR-IOV功能的命令

echo 虚拟设备数 > /sys/bus/pci/devices/0000:设备ID/sriov_numvfs

输入 lspci 就可以查看设备ID

PCI设备IDPCI设备ID

我这里X540 T2两个网口的设备ID是01:00.0;01:00.1。I350 T4四个网口的设备ID是05:00.0;05:00.1;05:00.2;05:00.3。

输入 cat /sys/bus/pci/devices/0000:设备ID/sriov_totalvfs 就可以查看最大虚拟设备数

根据设备ID查看最大虚拟设备数根据设备ID查看最大虚拟设备数

这里可以看到X540单网口最大可虚拟63个虚拟网口,I350单网口最大可虚拟7个虚拟网口。

假如我想让X540的01.00.0网口开启SR-IOV功能,开启全部63个虚拟网卡(VF),则执行如下命令。

echo 63 > /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs

UNRAID下开启SRIOV——曲折之路

执行成功的情况下,不会有任何反馈。

我们只要进入工具-系统设备

就可以看到已经成功开启了63个虚拟网卡(VF)

非常壮观

网卡SR-IOV开启成功网卡SR-IOV开启成功

当然这里只是举例,一般我们不会用到那么多的虚拟网卡。

如果我们想去掉虚拟设备,或者减少虚拟设备,只要再执行一次命令就可以了。

其中的虚拟设备数改成我们需要的。比如完全去掉就是0,其他数量就根据实际需要写入。

echo 0 > /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs

命令实时生效。

确定好配置以后,我们把命令写入到go文件中,每次开机自动开启虚拟设备。

执行

nano /boot/config/go

把命令写入go文件即可

命令写入go文件命令写入go文件

改好以后按 ctrl+X 然后键入y 再回车保存即可。

这样就可以完美开启网卡的SR-IOV功能了。

由于时间问题,这篇暂告一段落,请大家期待下篇。

到时把屏蔽虚拟设备让虚拟机可以使用的流程(其实跟屏蔽PCIe设备用作直通的操作一样),以及固定虚拟网卡MAC地址的方法,一并写完。UNRAID下开启SRIOV——曲折之路

qn8j(8700Tes)+z370mpro4+hp561flr(X540T2)+华为SP212(I350T4)qn8j(8700Tes)+z370mpro4+hp561flr(X540T2)+华为SP212(I350T4)

最后贴下测试设备,大家下回见~!UNRAID下开启SRIOV——曲折之路

展开 收起
45评论

  • 精彩
  • 最新
  • 我就想问问楼主是在苦等nbox机箱呢吗? [龇牙]

    校验提示文案

    提交
    在等了在等了,一点都不急。 [狂汗]

    校验提示文案

    提交
    收起所有回复
  • 感谢楼主分享,我和你是同款主板 请问你用温度插件能看到主板温度吗,我的只能看见cpu温度,但是主板进bois是能看见有温度和风扇传感器的,就很奇怪

    校验提示文案

    提交
    可以看到,温度显示正常。但是温控插件不能用。nct6683d不支持。

    校验提示文案

    提交
    我的的一直显示不了,检测驱动也没有nct6683d, 只有cpu温度, 是不是我改了板载网卡的原因, 我之前把板载网卡型号的i219v改成了i219lm。 楼主改过吗 , 不然我改回来看看有没有用好了。。。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 我的IOMMU是已禁用,cpu支持vt-d和vt-x。这个怎么办呢???

    校验提示文案

    提交
    intel_iommu=on就是开启分组

    校验提示文案

    提交
    这个是在BIOS里吗?我的BIOS太简陋了,啥都没有…

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • pci_pt_e820_access=on pci=assign-busses是什么意思?任何配置都是用这个语句吗?谢谢!

    校验提示文案

    提交
    sriov相关,自行Google。

    校验提示文案

    提交
    收起所有回复
  • 感谢楼主的教程,已成功将X550-T2开启SR-IOV,但将其虚拟的网卡直通给windows10主机后,发现提示“网线被拔出”,但网线肯定在的,请问如何解决?谢谢!

    校验提示文案

    提交
    装驱动。。

    校验提示文案

    提交
    我也是如此,插了网线,而且在虚拟机上也装上驱动了,win10就是显示vf网口断开。而直通给爱快和op的vf网口都正常使用。至今没找到原因。

    校验提示文案

    提交
    还有9条回复
    收起所有回复
  • 是不是必须双口网卡才可以 单口的可以么 物理接口还有效么

    校验提示文案

    提交
    当然有效。sriov走物理层,必须有物理接口承载。

    校验提示文案

    提交
    有个疑问,请教一下。开启后,到Add->Pci Device到vm,在这一步。pci通道和sr iov出来的vf网口mac,还有实际的物理口,这三者如何对应?Add->Pci Device这个界面只能看到通道ID

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 楼主,你好,有两个问题我不太懂!一个是用物理万兆网卡sr-iov虚拟网卡vf后,要使vf能正常使用,物理网卡需要接网线么,如果不插网线是不是vf都会失效?第二个是:万兆的物理网卡如果是接千兆交换机,那这个万兆通过sr-iov虚拟出来的vf的速度在虚拟机之间传输是万兆还是千兆?有没有其他大佬能帮我解惑? [喜极而泣]

    校验提示文案

    提交
    X540测试结果:必须接线。接千兆交换机,则vf也是千兆。

    校验提示文案

    提交
    收起所有回复
  • 前辈慢慢铺路,等你的哭铺差不多了我正好把自己机器收拾出来安排上。 [惊喜]

    校验提示文案

    提交
  • 谢谢分享,我也是一直不成功,试一试您的方法是否见效!

    校验提示文案

    提交
  • 其实实际意义不大
    sr-iov的主要用途还是桌面虚拟化和虚拟机的东西方向的流量上

    校验提示文案

    提交
  • 收藏起来了

    校验提示文案

    提交
  • 恭喜前仔出道

    校验提示文案

    提交
  • 一张显卡多虚拟机使用的办法绝了

    校验提示文案

    提交
  • 这一套设备功率多少呀

    校验提示文案

    提交
  • 大佬我遇到个问题您能解答下吗?就是写入sriov_numvfs这个文件的时候无法保存,数量无法更改,有没有什么解决办法呀 [皱眉]

    校验提示文案

    提交
  • 大佬有支持sriov的群晖引导或者驱动吗 [献花]

    校验提示文案

    提交
  • 看了你的文章想请问一下 显卡是否可以开启SRIOV使用下面同样命令?

    下面我们直接修改MAIN-FLASH。

    在UNRAID OS中加入下面语句。

    intel_iommu=on iommu=pt pcie_acs_override=downstream pci_pt_e820_access=on pci=assign-busses

    校验提示文案

    提交
  • 大佬~显卡如何虚拟?11代U不支持GVT-g 看你这个方案能不能虚拟显卡?

    校验提示文案

    提交
  • 楼主,你好,按照你的方法开启了SRIOV,网口已近插了网线,但是VF直通的网卡没有网络,虚拟出来的windows网口显示未插入,这个是什么问题?

    校验提示文案

    提交
  • 虚拟出来的网卡,怎么连接?不插网线,在几个虚拟机中可以互联吗?比如这个网口是unraid的管理口,创建了3个虚拟网口,一个给ikuai,一个给OpenWrt,这样能连接吗

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
197
扫一下,分享更方便,购买更轻松