此文将全面阐述如何直通各硬件设备给虚拟机的方法,在这里,我们将展开直通网卡和硬盘的方法,其中网卡又分直通板载网卡和直通PCI网卡,PCI网卡又分全直通和分组直通,直通硬盘这里采用的是折中的方法,没有涉及到阵列卡的直通,只是直通相应的硬盘,这样操作起来更简便,另外将其它的PCI设备直通方法也介绍一下,首先我们以安装黑群晖来进行举例来展开讲。
一、安装黑群晖
这个网上有很多教程,我也就直接引用司波图的B站教程,说的非常详细,里面也会带出来直通的相应的教程,可以做为参考的,
地址如下:司波图 UNRAID 陪玩教程 05
视频里面,有演示,通过虚拟机安装群晖NAS后:
在直通硬盘和直通网卡的情况下,可以有效减少 UNRAID 的硬盘占用。家用媒体服务器NAS 使用UNRAID系统的正确的玩法!直通网卡、直通硬盘、挂载群晖虚拟机文件!
当虚拟机安装了群晖NAS,并且直通硬盘,不过未直通网卡: 速度可以跑到80m/s,占用的资源并不多:
二、直通硬盘
我们安装好群晖时如果不直通硬盘,那样会占用非常大的CPU,不利于使用,这样我们需要将硬盘直通给虚拟机用,比如直通硬盘给黑群晖用,当然这里的直通不是严格意义上的硬件直通,只能说是相应的将硬盘专门映射给虚拟机用,它不能使用将阵列卡直通,具体方法是,我们先用指令找到硬盘ID,然后通过输入相应的设置,将硬盘进行直通
首先我们用unraid自带的终端输入以下命令:
ls /dev/disk/by-id
找到需要直通的硬盘,将其整个复制下来:
这里我们直通的就是如图的磁盘:
当然要能挂载未加入unraid阵列的磁盘
当然我们需要挂载未加入阵列的硬盘还需要安装插件devices:
查到后我们需要到虚拟机配置中添加硬盘,如图:
其中硬盘直通的代码为:
ls /dev/disk/by-id/ata-ST4000VN008-2DR166_WE20OV7P
这样就能将硬盘直通给虚拟机了,这里是直通给了黑群晖,非常方便的直通硬盘
三、直通网卡(全直通)
直通网卡分两种直通,一种是直通板载网卡,一种是直通独立网卡,这两种都是全直通,比如你板载网卡是两个网口的或者PCI网卡是四个网口的,这里讲的是全部直通过去,后面再讲如何分组
1、直通PCI网卡
我们在正常添加配置完虚拟机后,需要打开XML设置:
然后将涉及网卡的那部分删除:
然后勾选相应的网卡即可:
2、直通板载网卡
如果需要直通板载的硬件,比如网卡,必需使用一个插件来禁用Unraid来调用它,这个插件是VFIO PCI Config,没错就是这个神器,我们可以在app商店里面进行安装:
安装后只需将相应的硬件勾选禁用重启即可:
禁用以后就能在后面虚拟机中添加板载网卡了,不过注意的是在做这个之前,你需要有一个网卡给unraid用
(如果因为网卡设置无法进入unraid怎么办?我们可以在终端启动项中选择第二项guip来恢复之前的设置)
3、直通PCI网卡报错处理
在直通网卡后启动时会报错,这个怎么办呢,我们可以到可以到VM高级设置中开启PCI ACS模式,大多数选择downstream,而我的GEN8选择的是Multi-function,这个看大家去测试
四、分组直通
为什么要分组直通呢,这是因为你可能将网卡直通给不同的虚拟机,而现在如果不分组,那么将会把PCI的所有网卡都直通给一个虚拟机,那样比较浪费,比如我就将GEN8的板载双网卡分组,一个给unraid用,一个直通给黑群晖用,这样就需要分组直通,这就需要直通,(GEN8因为是老款设备还需要HMS,这样才能正常启动),我们先来对照分组前后就知道了区别了:
分组前:
分组后:
一,覆盖U盘原文件
分组这个需要替换U盘里面的文件,替换的为六个文件(三组):bzfirmware bzfirmware.sha256 bzimage bzimage.sha256 bzmodules bzmodules.sha256 复制到unraid系统u盘并覆盖原文件
然后settings -- vm Manager -- PCIe ACS override: 开启 Downstream,这样就可以重启开通分组直通了,分组的附件下载链接:
二,板载网卡的分组直通
板载网卡开通分组直通后,没法在虚拟机配置里直接勾选相应的网卡,这里需要到XML里面去添加相应的设置:
</memballoon> </devices> <qemu:commandline> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=01:00.1,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=02:00.0,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=02:00.1,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=07:00.0,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=08:00.0,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=09:00.0,bus=root.1'/> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=0a:00.0,bus=root.1'/> </qemu:commandline> </domain>
或者单个 需要增加硬件,就增加<qemu:arg value='vfio-pci,host=0a:00.0,bus=root.1'/>的行数即可。其中01:00.0就只是需要直通的设备号:
比如我将GEN8的一个网卡直通给黑群晖,那么就是:
<qemu:commandline>
<qemu:arg value='-device'/>
<qemu:arg value='vfio-pci,host=03:00.1,bus=root.1'/>
</qemu:commandline>
设置完成后就自动勾选了,如:
总结:这些直通硬件和分组直通都适用于其它的硬件设备直通,这样直通后就和物理机完全一样了,所以非常的方便,以达到最大利用化硬件的作用,大家慢慢研究。
发表评论