UNRAID折腾笔记(2) - 网卡直通与虚拟机
今天到货的是双千兆有线网卡,当然我也想一步到位直接上四口千兆,但是预算怎么也得200-400(根据采用的芯片不同),例如我选择的这个Intel 82576,四口版本就是200价位的,更好的就是I350了,那个就是400价位了,而且如果用I350可能就不用在系统加钱了,下文会有提到

分离IO
做网卡直通,当然必须要做的就是分离(分组),毕竟如果你不先把这几个网口分离单独使用,那绑在一块只能分给一个虚拟机就没啥意义了
连接上网卡,可以再系统信息看到网卡信息了,看起来每个是独立的(其实并不是)

可以留意到旁边的灰框,意味着这些设备已经被Unraid加载,换句话说就是被占用了,需要先编辑启动参数屏蔽掉这些设备,这样就能作为原始PCI设备直连到虚拟机了,现在在主界面找到引导盘,当然得先要有CA Config Editor插件,不然还是得自己去编辑config的
往下拉找到Syslinux 配置,在Unraid OS这一项里面编辑参数,当然首先你得保证这就是你开机时的启动项,应该不会有人用下面那个GUI模式做服务器吧。在append后面,添加一个vfio-pci.ids=编号的参数

这个编号,就是你在系统信息看到的网卡,在我这里就是8086:10c9
,然后紧接着在在设置-虚拟机管理里面,将PCIe ACS覆盖模式改为下游(downstream),这一步很重要不能少

然后重启系统,接着进入系统设备,可以看到顶部有关于PCIe ACS覆盖的提示,这意味着步骤是正确的,然后同时还能在底下看到,网卡被插件加载并成功分离


网卡直通
然后进入虚拟机配置,尝试安装一个虚拟机,这时我们能在底部的PCI设备看到网卡了。编辑好参数之后,点击右上角编辑XML的开关,进入XML编辑模式,找到关于虚拟网卡的配置一栏并删除,这样就不再使用虚拟网卡而是我们直通进去的网卡

正确配置后应该是这样的,只有这样才能删除虚拟网卡,不然会强制配置一个虚拟网卡

这样就创建了一个虚拟机,于是我尝试按部就班创建第二个虚拟机,并将另一个网口分配过去时,最担心的事还是发生了

很显然,表面上意思是设备忙导致无法分配设备,实际上就是因为并没有成功分离两个网口,导致网卡还是捆绑在一块的,这样当其中一个口分配给虚拟机,其他口就无法分配到其他虚拟机了。其实在刚才这个图就能发现,所有的网卡都挤在了一个group里面,这显然不是我们所希望的

其实这个情况我之前早有考虑,但到头来还是逃不过,按照我之前参照的教程,它需要IOMMU补丁,打上补丁之后就可以成功分离。但可惜的是,教程里面使用的6.8.2,这补丁怎么想都不太应该能通用,后来终于找到教程里面蓝冰大佬的资源分享群,里面就有我想要的6.9.1的补丁

接着把补丁下载下来,看起来里面是直接修改好的内核,按照说明直接替换,然后再次启动,成功

这样网卡就能成功分组了,兴奋得我直奔虚拟机尝试创建,发现阵列停止了,然后尝试手动启动也没反应,这才发现,激活不见了。第一反应以为是换了内核会影响ID啥的,于是又重做了一个key,但还是没效果,然后想来授权是以硬件GUID为基准的应该和啥版本没关系,于是逐渐意识到,这个内核有可能是经过了某些修改,才能使用开心版的。
接下来就是漫长近三个小时的折腾,先是重新找了找6.9.2的开心版,留意到里面是修改了内核使其适应6.8.2的开心版生成工具,于是想到那我用6.8.2的补丁能不能用,放上去发现还真的可以。 然后本以为这就能解决了,结果发现阵列无法启动了,看来降级应该是走不通的,毕竟版本确实是6.9.1。后来看到有一个6.8.2开心版兼容的补丁,后面最终还是只能无奈选择降级使用,倒腾了插件的迁移和部分配置的重做,最终实现了6.8.2下IOMMU补丁和开心版共存。

虚拟机大概是所有关于UNRAID配置流程中最简单的部分,只要配置一个虚拟机实例,然后用VNC按照正常服务器安装流程就完事了。
当然我折腾了这么久,最让我纠结的反而是网络配置,最终让我把辛苦分离的两个网口最后又分配到了一个虚拟机里面,想来就觉得离谱。其实说到底还是因为小米智能摄像头的NAS存储功能,居然只能连接内网主机,从校园网到工作室网络是两个独立区域,以前的服务器都是用一个板载+USB网卡来实现服务器连接内外网的。
因为摄像头甚至都不给你手动输入地址,导致即使是可以直连的网络也无济于事,必须是同个广播域下的局域网,毕竟SMB是明文传输,还是考虑到了安全性,于是虚拟化后的服务器还是占用了两个网口。 当然后面还是会更换到四口网卡,这意味着所有关于网卡的配置和虚拟机的网卡配置甚至虚拟机里面的网络配置都要重新调,这仗势想都不敢想,所以想来,还是等最终把这个硬件虚拟化方案搬回家之后,没有这种很尴尬的两个网络区域时,真正的ALL IN ONE就能落地了。
关于网卡,其实除了芯之外,采用的PCIe插槽类型也是个头疼问题。一般双口是采用PCIe x1,而四口既有x1也有x4,万兆的目前只看到有x8,但是纵观这个主板,只有两个x16和一个x1尺寸的PCIe插槽,可谓是相当吝啬。我的工作站主机上的迫击炮B450M和这个主板一样是有两个M.2接口,但是却有两个x1插槽,其中一个x1会和一个M.2公用(也就是二选一),但至少有选择,如果有得选其实我还不想要多一个M.2多给点PICe插槽。
说回网卡的事,其实我有想过插一些N卡来跑深度学习框架啥的,但是目前而言就只能插的了一张了,除非差一张x1的四口,不然主板上确实没有什么位置了,不过I350-T4目前只看到有x4的,这就要说回最开始系统加钱的事了。如果想用6.9.1,其实答案就相当于只有一个了,那就是买正版,看了一眼最基础的版本是59美金,可谓是相当不便宜,如果想用开心版就得找无需补丁就能分离的网卡,其中I350-T4正是听说无需补丁,因此这个网卡选择的问题上,以后又会是一个值得纠结的问题了
虚拟机部分除了网卡直通,其实已经没有任何其他内容了,甚至还有一丝的失落,开始想这么折腾到底会比裸机好多少呢。另外一大特色Docker又是更头疼的东西,这个就等下篇再继续了。