硬件环境j:n6005主板NAS
软件环境:Proxmox VE7.3 虚拟机上直通硬盘跑了truenas scale 22.12.0,开通samba共享和nfs共享,做为数据存储中心。另外再跑了一个debian11用来跑各种应用。nas-tools,qbittorent,emby,ddns-go这些。因为emby不开启硬解,在转码的时候非常占用cpu资源,于是有了这一篇折腾笔记。
开启PVE虚拟化
1、PVE的内核开启支持VD-T直通的IOMMU及相关模块
文件位于:
/etc/default/grub
把原内容中
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet" |
改为(我的是intel的cpu,如果你用amd,把intel改成amd)
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" |
然后在ssh下输入 update-grub2
立即更新grub;
2、编辑 /etc/modules 模块文件
如果系统没有此文件,则自己建立一个,加上以下代码
1 | vfio |
3、 验证是否开启成功
1 | dmesg | grep remapping |
出现如下例子,则代表成功。
显卡直通
显卡直通需要满足前面所有的配置,同时虚拟机芯片组必须是q35,BIOS最好是UEFI模式 AMD的显卡如果给黑苹果使用,则需要小心重启bug NVIDIA的显卡如果支持vGPU模式,可以配置虚拟PCI-E设备给虚拟机使用
1、建立驱动黑名单
编辑/etc/modprobe.d/pve-blacklist.conf添加驱动屏蔽列表
1 | # This file contains a list of modules which are not supported by Proxmox VE 2 |
2、GPU信息确认
在ssh下输入命令 lspci -knn | grep -i -A 2 vga
,查看你要直通的显卡
其中00:01是代表组名。00:01.0是代表00:01组的第一个设备 laf4:1100表示厂商ID:设备ID,直接通过lspci看的话可以看到音频设备甚至是USB设备 这里我因为不需要对当前PCI-E设备组再拆分,所以直接略过
如果你需要设置显卡显示设备和音频设备单独直通,需要执行下面语句 让PCI-E设备(显卡)由vfio驱动程序接管便于直通 如果不需要单独直通,vfio驱动会在设置直通的时候自动接管PCI-E设备,可以不用配置vfio-pci
1 | echo "options vfio-pci ids=1234:1111,laf4:1100" > /etc/modprobe.d/vfio.conf |
更新引导配置
1 | update-initramfs -u -k all |
重启PVE
验证PCI-E显卡是否被vfio-pci驱动,Kernel driver in use: vfio-pci表示直通驱动成功
1 | lspci -knn | grep -i -A 2 vga |
虚拟机直通显卡
然后开机,注意:由于显卡已经直通,所以VNC查看时,是没有介面的。
此时再ssh到debian虚拟机上就可以看到直通的显卡了
剩下的就简单了。
用docker-compose把emby跑起来,我用的是xinjiawei1大大的镜像直接unlockd了。
1 | version: "2.1" |
最后就是成果