PVE硬件分组直通
玩过PVE的小伙伴的都听说过硬件直通,那么什么是硬件直通,它跟虚拟化有什么区别,什么是分组直通,为什么在PVE上要进行直通呢?
PVE 直通:就是将硬件直接分给虚拟机,它和半虚拟化的区别就是,前者是专属,后者是共用,分组直通就是将设备硬件分拆分别分给不同的虚拟机,比如把网卡分给软路由,把硬盘分给群晖,把显卡分给win10,从而在PVE实现在多台设备的功能,并且性能等同物理机!为什么性能等同物理机呢?因为虚拟机得到的就是物理硬件,直通就是将物理硬件分配给虚拟机!所以在PVE直通就非常的重要了。
有的小伙伴问,为什么要做分组直通,因为PVE默认是绑在一起,直通的话就全部绑定了,比如核显和网卡绑定,不分组就无法分别直通,并造成错误,导致无法正常直通,所以必需要分组直通。
那么怎么样做直通,尤其是分组直通呢?好吧,跟我来,保姆级教程来了。
一、准备
分组需要编译核心,这里我将编译好的放出来:
二、指令操作
1、编辑分组系统文件
我们找到文件 /etc/default/grub并进行修改,方法很多,可以直接用winscp或者putty等工具编缉,我用的是系统自带的shell控制面板进行指令操作,后面也是这样,我们输入以下指令:
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream"
打开/etc/default/grub,找到GRUB_CMDLINE_LINUX_DEFAULT="quiet“将其修改上面的,然后按ctrl+x保存即可,这里是intel的cpu,如果你的是amd的话,那么就将intel_iommu=on 改为 amd_iommu=on即可。
2、增加虚拟化驱动
我们需要修改/etc/modules文件,在文件里添加如下内容:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
关于如何添加,可以比照上面,也可以是vi /etc/modules指令进行添加,也可以直接winscp打开文档进行编辑,很简单。
3、升级并更新设置
输入以下指令进行升级并更新设置
update-initramfs -u -k all
更新完了就是设置好了分组,官方文档也有相应的介绍,然后再查看是否成功,我们输入以下指令
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
一般出现iommu,directed I/O 等字样之类的话就说明IOMMU是开启成功了
另外开通这个IOMMU需要你的主板具有VD-T和虚拟化功能,不然再怎么折腾也没用。
4、将PVE核心重心编译
网上有很多方法,编译时间也很久,大家都是使用者不是开发者,没必要每个人都去编译一次,直接套件即可,编译好的文件放在上方,下载下来即可,然后用winscp工具将下载好的文件放到/root目录内(这个很多教程都没说,大家记得)
5、安装PVE内核
前面准备工作都做完的情况下,我们现在开始安装PVE内核文件,执行以下指令:
dpkg -i *.deb
一般几分钟就好了,然后重启,这样就分组成功了
分组成功后我们怎么分组直通硬件给虚拟机呢?
三、分组直通
我们这里展示如何将硬盘和GPU(核心显卡)直通给群晖
1、安装支持GPU(硬解)的群晖
我安装的是JUN大1.04b完美硬解开关机的引导,系统是D918+6.21版本,顺便晒出下载链接:
链接:https://pan.baidu.com/s/1f-hbLefKfZbEDKIDtw2DEg
提取码:mv95
详细安装教程参照本网的教程:PVE安装黑群晖DSM
2、直通GPU核显
前面如果分组设置成功后,在添加时就不会出现一段错误提示,详细添加如图:
记得不要勾选那个主GPU选项,按照上图即可将核心显卡GPU直通给群晖了,我的核心显卡是00:02.0,你的要根据实际情况来添加,可能不是这个,你可以通过指令 lspci来查询你的显卡对应的编码。
3、直通硬盘
和上面的方法差不多,我们也是添加PCI设备来添加,如图:
如果主板有多个sata接口,比如4个,其可能是对应不同的pci设备,比如PVE宿主机安装的硬盘所在PCI设备就不能直通给群晖,如果直通那PVE就无法运行,所以必需将群晖的硬盘与PVE硬盘放在不同的PCI设备下,然后就机械硬盘直通给群晖,如图,用箭头标示的就是给群晖直通的硬盘,而划线的则是PVE的安装盘所在的PCI设备,不能直通给群晖:
4、直通网卡
和上面的方法相同,如果有多张网卡,记得勾选对应的网卡,但千万别直通PVE用的那个网卡,不然就连不上PVE了,并且其它虚拟机就无法正常运行了,我们直通箭头对应的网卡,而划线的是PVE用,别直通:
No IOMMU detected, please activate it.See Documentation for further information.
用这个命令查看 dmesg | grep -e DMAR -e IOMMU -e AMD-Vi是这个提示说明是开启的。
[ 0.097341] DMAR: IOMMU enabled
彻底找不到原因了