[i=s] 本帖最后由 绯竹x 于 2025-1-21 15:08 编辑 [/i]<br />
<br />
飞牛的最新内测版本更新了虚拟机应用,比起之前增加了直通功能。直通之前在PVE上简单玩过,但在遇到过的NAS虚拟机系统相对少见,比如群晖仅提供USB直通,而绿联则完全没有直通功能,抱着好奇之心用一用,以下记录一下自己的体验过程,以便后查,如果能为其它牛友提供些参考则是更好了。
直通容易崩,心态保持稳
首先需要知道直通可能会导致各种虚拟机甚至是宿主机稳定性方面的问题,必须提前知道这个风险,并提前好做各种的预案,比如:
- 如果这台NAS非常重要,那么不建议折腾。
- 在尝试把设备直通进虚拟机之前,对虚拟机先建好快照。
另外即使做对了一切,基于不同的平台不同的设备,直通的成功率也无法保证,所以心态放稳,能通大赚,不能通不亏。
直通设备 & 虚拟机情况
搞了一台Thinkpad t470笔记本来安装FNOS,带双网卡。

虚拟机方面,准备安装个windows玩下,听说win10直通的兼容性比win11好,就直接安装了win10,不知有没有有经验的玩家说说看这个是不是真的
无痛直通:USB无线网卡
玩过直通的都知道,有时直通需要在系统上各种命令行捣鼓了才能直通进去,非常痛苦,所以我给自己定义一个词,叫无痛直通,就是只在GUI页面上点点点,然后选进去就完事,一点也不痛苦。这次看看飞牛上是怎么的体验。
先把win10虚拟机装好,快照打好,然后开始直通之旅。本来想把无线网卡给直通了,但PCI列表还不能选,看了一下应该是iommu分组没开,那待会再来,先插张USB无线网卡看下效果。为了看看低速USB设备直通是否正常,把一套USB键盘鼠标也直通进去看看。

保存完直接点开机,虚拟机顺利的开起来了,查看一下设备,键鼠网卡都在,网卡挂在USB3.0上也没错,连上WIFI打开个视频网站,一切正常,USB直通还是比较无痛的。但speedtest测速效果不是很理想,想上速度可能还得PCI网卡。

无痛直通:PCI无线网卡
下一步试试直通PCI的无线网卡。
要直通PCI设备需要打开iommu开关,我这台机器的打开方式是,先ssh到NAS上,编辑 /etc/default/grub ,在GRUB_CMDLINE_LINUX_DEFAULT一行的末尾添加上intel_iommu=on。如果是amd的话则改成amd_iommu=on。

保存文件后执行update-grub,然后重启。重启后dmesg | grep iommu,看到下面这种Adding to iommu group的信息,就说明iommu分组成功开启了。

之后再打开虚拟机应用,解锁完成,可以选择了。

之前的一些经验,在直通PCI设备之前,有时需要提前先把设备与宿主机的驱动剥离并挂载到vfio上,但有时虚拟机也能自己完成这个操作,这次先不自己动手,看下虚拟机能不能给到这个无痛的体验。
先执行下面的命令观察到设备当前挂载的驱动。那个pci_0000_04_00_0就是之前留意的那个设备地址,对于其它设备来说,基于实际的地址替换后面的部分就可以。
sudo virsh nodedev-dumpxml pci_0000_04_00_0
可以看到当前的驱动值

然后直接启动虚拟机,这次成功开起来了,再执行一次相同的命令查看一下驱动情况,发现这次已经挂载到了vfio-pci上面,虚拟机成功的完成了从宿主机驱动中剥离并挂到vfio上的工作。去看下系统设置中的网络情况,的确只剩1个有线网口了。

虚拟机开机完成后,查看设备情况,已经能成功看到网卡,看样子没什么问题。然后把虚拟机关闭,观察一下驱动情况,已经成功的重新回到宿主机上了。网口也恢复成了2个。

无痛直通:PCI有线网卡
最后一步,试试看直通PCI的有线网卡,这里注意把飞牛的访问地址换成无线网口的IP,否则直通的一瞬间就无法通过有线网口IP进行访问了。
把有线网卡添加到虚拟机中,虚拟机应用直接把整个IOMMU分组的设备全加进来了。因为直通其实是按IOMMU分组为单位进行,不允许只把分组中的某几个设备直通进去。上面的无线网卡相对独立,自己单独一个组,而一些集成度比较高的硬件,往往都分配在同一个组内,如果只想直通某一部分,只能另寻它法了。

同样先观察驱动,设备pci_0000_00_1f_6当前的驱动是e1000e,启动虚拟机,发现驱动变成vfio,看来是成了。

跑一下速,还算不错。


关闭虚拟机,再观察驱动和网口情况,成功回到宿主机中

简单小结
今天尝试了把USB设备和两张PCI网卡直通到虚拟机中,过程还是比较顺利无痛的。之前听说有一些设备,需要在宿主机中做额外的预留工作,今天都没有遇到。
下一阶段计划试试看显卡,显卡尤其是核显是直通中比较麻烦的设备,到时再看看会不会遇到一些新的问题。