当前位置:
文章详情

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

2022-05-29 18:36:27 64点赞 455收藏 60评论

前言:PVE的教程网上有很多,站内也有很多大佬的文章。对于小白来说,命令行敲错、复制错了,一出现error就不知道该怎么办了,我以前是再找一篇,从头再来一遍PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g。本系列将从原理方面尽量详细的说一下各个安装的细节,避免出错。

我的硬件设备:

主板:华擎z390 极限玩家4

cpu:i5-9600k

内存:阿斯加特T2 16G✖2

SSD:英睿达镁光MX500 1T

机箱:安钛克P101S

散热:安耐美 晶凌240水冷

环境:Proxmox VE 7.2-4,内核5.15.35-3

行吧,咱们就开始操练起来吧。

一、显卡直通和中介设备原理介绍

显卡直通很好理解,即是显卡直接直通给虚拟机,包括PVE和其他虚拟机都不能用。适合打算将显卡直通给一个虚拟机外联显示器的情况,或者主机有多个显卡分别直通给不同设备的情况。这里需要说下,直通也需要IOMMU拆分,不然整个PCIe全都给了某个虚拟机,后果不限于PVE失联,M.2固态找不到了,硬盘也找不到了等等。。。

中介设备【 Mediated Devices 】:vGPU, GVT-g。Intel核显的技术叫GVT-g, NVIDIA技术叫vGPU。这个是很多小伙伴的刚需,想把核显分享给黑群晖或者docker里面的emby、jellyfin做硬解,win10或者别的虚拟机也想要个核显,反正都得有。这种情况就用到intel的GVT-g,效果如下:

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

二、修改引导加载程序内核命令行配置文件GRUB

命令:nano /etc/default/grub

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

【第一步】添加命令

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1"

光标放在quiet的后面空一格,然后复制黏贴。

修改完成后按Ctrl+x,问你是否需要保存?-->输入Y,问你是否写入文件-->按回车。

弄错了没关系,问你是否需要保存?-->输入N,就返回了。

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

原理说明(按需要添加命令):

1、官方文档:IOMMU (I/O Memory Management Unit)中断重新映射。如果不中断重新映射,将无法使用 PCI 直通。设备分配将失败,并显示“无法分配设备”[设备名称]“:不允许操作”或“找不到中断重新映射硬件,将设备传递到非特权域不安全”错误。【 'Failed to assign device "[device name]": Operation not permitted' or 'Interrupt Remapping hardware not found, passing devices to unprivileged domains is insecure.' error.】
所有使用英特尔处理器和芯片组的系统,如果支持英特尔虚拟化技术定向 I/O (VT-d),但不支持中断重新映射,将看到此类错误。较新的处理器和芯片组(AMD 和英特尔)提供中断重新映射支持;

2、PCIe直通需要主要主要开启虚拟化, Intel叫VT-d,AMD的叫AMD-V(i) ,都需要再主板BIOS里面开启;

3、Intel添加的为intel_iommu=on,AMD添加的为amd_iommu=on;

4、 iommu=pt,官方文档说明:这仅在必要时才启用 IOMMU 转换,适配器不需要使用 DMA 转换到内存,因此可以提高虚拟机管理程序 PCIe 设备(未传递到 VM)的性能。意思就是开了能提高虚拟机调取PCIe的性能,那就开吧。

5、i915.enable_gvt=1,官方文档说明:Intel的 GVT-g 驱动程序集成在内核中,启用时加载模块。意思就是,想开启GVT-g的就添加这条,显卡直通的就不要添加了。

【第二步】保存更改并更新 grub

update-grub

TIPS:

GVT-g可支持数量和最多分辨率:

i915-GVTg_V5_1 # Video memory: <512MB, 2048MB>, resolution: up to 1920x1200
可用数量
i915-GVTg_V5_2 # Video memory: <256MB, 1024MB>, resolution: up to 1920x1200
可用数量
i915-GVTg_V5_4 # Video memory: <128MB, 512MB>, resolution: up to 1920x1200
可用数量2
i915-GVTg_V5_8 # Video memory: <64MB, 384MB>, resolution: up to 1024x768
可用数量1

所以想要核显分享给多个虚拟机用的,需要在bios里面设置内存分给核显显存的大小。

二、修改内核模块

命令:nano /etc/modules

【第一步】添加内核模块

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

原理说明:

1、PCIe直通启用vfio vfio_iommu_type1 vfio_pci vfio_virqfd
2、vGPU和GVT-g需再添加kvmgt

【第二步】更改任何与模块相关的内容后,您需要刷新 initramfs

update-initramfs -u -k all

同时完成后,应重启以下。可用shell里面reboot,或者web界面重启。

总共也就四步而已,非常简单。

三、效果检测

1、命令:dmesg | grep -e DMAR -e IOMMU -e AMD-Vi

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

2、命令:find /sys/kernel/iommu_groups/ -type l

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

3、命令:lspci

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

注:lspci 显示所有PCIe设备的信息,比如第二个VGA就是Intel的核显,0000:00:02.0就是设备ID,下一个命令就是参看此设备支持的类型。

4、命令:ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

标题二里最后的TIPS里面,i915-GVTg_V5_4,i915-GVTg_V5_8。

最简单的还是直接建一个虚拟机,完成后不要启动,再【硬件】-->【添加】-->【PCI设备】就能看到了。

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

四、问题与总结

pve按照完成后,可先检测一下硬件设备和系统是否支持。要确定您的系统是否支持中断重新映射,请执行以下操作:

dmesg | grep 'remapping'

如支持应显示:

· "AMD-Vi: Interrupt remapping enabled"

· "DMAR-IR: Enabled IRQ remapping in x2apic mode"('x2apic' can be different on old CPUs, but should still work)

下面重点来了,不支持咋办?

如不显示,则硬件设备不支持,可以使用以下命令允许不安全的中断:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

意思就是通过命令行或者软支持(我的理解)。

然后再命令行更新 grub,刷新 initramfs。

update-grub

update-initramfs -u -k all

要是再不行,只能再网上搜搜有没有案例了。

最后的最后:

1、给软路由的小伙伴,这样设置下来,你的多网口网卡可以支持分别分给ikuai、openwrt、routeros等等软路由了。

PVE7教程【篇一】硬件虚拟化 显卡直通与GVT-g

2、如果你的网卡支持SR-IOV的话,你会发现也变成中介模式了一个网口也能支持给多个设备了。

无图.jpg

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
60评论

  • 精彩
  • 最新
  • 是个大佬,学习了

    校验提示文案

    提交
    谢谢 [示爱] [示爱] ,zsbd

    校验提示文案

    提交
    收起所有回复
  • 用GVT-g方法将核显分给多台windows虚拟机,同时启动,那么插在核显上的显示器会显示哪台虚拟机的画面?

    校验提示文案

    提交
    哪一台也不会显示。。。直通的时候才能单独分给某个虚拟机。GVT其实更像是硬件加速,比如黑裙调用核显,视频播放硬解;还有楼下说的jellyfin或者emby、plex等等核显解码。

    校验提示文案

    提交
    用gvt可以实现输出,独显直接可以,核显的话外差一个usb转hdmi就行

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 12代CPU支持吗

    校验提示文案

    提交
    好像11代和12代的集显能支持SR-IOV了。比GVT-g更得劲,不用折腾动态显存的问题。

    校验提示文案

    提交
    详见:去看看

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 11代可以直通吗?

    校验提示文案

    提交
    11代和12代的集显能支持SR-IOV了。比GVT-g更得劲,不用折腾动态显存的问题。

    校验提示文案

    提交
    收起所有回复
  • 极其详细码住

    校验提示文案

    提交
    谢谢 [示爱] [示爱] ,zsbda

    校验提示文案

    提交
    收起所有回复
  • pve和exsi哪个好用?

    校验提示文案

    提交
    对于小白来说,哪个教程多哪个好,要不出了问题自己搞不掂的

    校验提示文案

    提交
    收起所有回复
  • 能不能给核显设置中介,让黑裙和win7都能同时使用直通核显?

    校验提示文案

    提交
    照着教程里面设置就可以了 然后新建一个虚拟机 添加pci设备 就可以看到显示中介了

    校验提示文案

    提交
    直通就是整个分给某个虚拟机,分开的是GVT。不能又分开又直通的哦

    校验提示文案

    提交
    收起所有回复
  • 我J4125,PVE下装的ubuntu然后装jellyfin,想调用intel核显转码,具体操作应该怎么做呢?
    如果能调用核显,还需要做直通吗?

    校验提示文案

    提交
    看你的需求,如果只有一个虚拟机需要核显转码的,建议直通的好。

    校验提示文案

    提交
    如果已经能调用核显解码了,就别动了。折腾不一定能带来收益。

    校验提示文案

    提交
    收起所有回复
  • 对着设置好了,然后黑群晖里面也能看到renderD128了 但是HW control enabled: no

    校验提示文案

    提交
    您的硬件信息能提高一下嘛

    校验提示文案

    提交
    打错了,硬件信息能提供一下嘛。不同的硬件方法也不一样

    校验提示文案

    提交
    收起所有回复
  • 这个标题是不是应该改一下,这是开启GVT-g不是做直通吧。

    校验提示文案

    提交
    文中有说,直通做到哪一步,GVT做到哪一步

    校验提示文案

    提交
    收起所有回复
  • 每段操作后还有原理 简直良心 [鼓掌]

    校验提示文案

    提交
  • 选择MDev类型的时候出现一直转圈并有too many redirections(599)

    校验提示文案

    提交
    怎么处理的呀,我也是这样!

    校验提示文案

    提交
    收起所有回复
  • @一抹苦笑 好像11代和12代的集显能支持SR-IOV了。比GVT-g更得劲,不用折腾动态显存的问题。

    校验提示文案

    提交
    学习一下。。 [棒棒哒] [棒棒哒] [棒棒哒]

    校验提示文案

    提交
    收起所有回复
  • 你好大佬,为什么我的执行ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types后,显示ls: cannot access '/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types': No such file or directory

    校验提示文案

    提交
  • 我的是华擎J5005itx,系统是PVE7.2,为什么我的执行ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types后,显示ls: cannot access '/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types': No such file or directory

    校验提示文案

    提交
    因为j5005不支持GVT-g,还有j4125也不支持,不要问问为什么知道。

    校验提示文案

    提交
    和你一样,看来是不支持

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 10代10305T

    校验提示文案

    提交
  • 这样直通可以让win输出画面吗

    校验提示文案

    提交
  • 大佬你好,在您最后一张图,怎么确认哪一个网卡是管理口,哪一个是闲置的网卡呢?

    校验提示文案

    提交
  • 按教程做后只能同时启动一台虚拟机,再开就提示核显资源不足,又在网上找了教程用uefi进修改了显存的大小后就能正常启动了 [高兴]

    校验提示文案

    提交
  • 搞定 感谢,勾选所有功能导致主机死机重启,勾选i915-GVTg_V5_4可以正常使用。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

一个金币的故事

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
455
扫一下,分享更方便,购买更轻松