默认ProxmoxVE 只能支持硬盘、CPU型号直通。其他PCI硬件 或者 核心显卡的直通,还需要开启IOMMU分组功能
操作PCI直通提示:
No IOMMU detected, please activate it.See Documentation for further information.
一、开启直通
PCI直通允许您使用VM内的物理PCI设备(图形卡,网卡)(仅KVM虚拟化)。
如果“ PCI直通”设备,则该设备不再对主机可用。
注意:
PCI直通是Proxmox VE中的一项实验功能*
1.启用IOMMU
您需要通过编辑内核命令行来启用IOMMU 。
首先打开grub的bootloader内核命令行配置文件:
编辑内核命令行
您可以在以下位置修改内核命令行,具体取决于所使用的引导程序Grub
内核命令行需要在文件/etc/default/grub
中放置GRUB_CMDLINE_LINUX_DEFAULT
变量
然后 运行update-grub
将其内容附加到/boot/grub/grub.cfg
中的所有linux条目中Systemd-boot
内核命令行需要在/etc/kernel/cmdline
中放置
要应用更改,请运行pve-efiboot-tool refresh
将其设置为loader/entries/proxmox-*.conf
中的配置文件
2.打开grub的bootloader内核命令行配置文件:
GRUB(传统引导)1
nano /etc/default/grub
或者 systemd-boot(UEFI)1
nano /etc/kernel/cmdline
对于GRUB: 找到带有“ GRUB_CMDLINE_LINUX_DEFAULT”的行
对于systemd-boot(UEFI)创建用于systemd-boot的文件(格式为带有选项的单行)
Intel CPU
对于Intel CPU,添加intel_iommu=on
,例如:1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
保存更改并更新grub:1
update-grub
或systemd-boot(UEFI):1
pve-efiboot-tool refresh
然后重新启动宿主机,从命令行运行1
dmesg | grep -e DMAR -e IOMMU
如果没有输出,则说明有问题。
AMD CPU
对于AMD CPU 添加amd_iommu=on
, 例如:1
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
更改并更新grub:1
update-grub
或systemd-boot(UEFI):1
2pve-efiboot-tool refresh
然后重新启动宿主机,从命令行运行1
dmesg | grep -e DMAR -e IOMMU
如果没有输出,则说明有问题。1
update-initramfs -u -k all
3.PT模式
Intel和AMD芯片都可以使用附加参数 iommu=pt
, 该参数的添加方法与上述相同
这仅在必要时启用IOMMU转换,从而可以提高VM中未使用的PCIe设备的性能.
4.修改/etc/modules文件
1 | nano /etc/modules |
添加如下内容1
2
3
4vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
二、GPU 直通
N卡非vGPU系列 都是禁止虚拟化的,所以在Proxmox下需要现在宿主机内黑名单显卡确保没有任何的加载,接下来直通给VM还需要设置为主GPU以确保和VM一起开机加载。
直通 黑名单 参考 https://pve.proxmox.com/wiki/Pci_passthrough#GPU_Passthrough
1.识别显卡型号
打开终端,通过执行以下命令识别您的Nvidia图形卡型号1
lspci | grep -i nvidia
输出1
200:08.0 3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB] (rev a1)
00:09.0 3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB] (rev a1)
2.查找驱动程序
使用基于您的Nvidia卡型号和Linux操作系统的搜索条件
从nvidia.com下载Nvidia驱动程序包
3.安装编译环境
接下来,安装软件包前提条件,以成功编译和安装Nvidia驱动程序。1
2dnf groupinstall "Development Tools" -y
dnf install libglvnd-devel elfutils-libelf-devel -y
4. 永久禁用nouveau驱动程序:
1 | #新建一个配置文件 |
1 | #备份当前的镜像 |
5.安装显卡驱动
1 | chmod +x NVIDIA-Linux-x86_64-390.48.run |
可能会出现以下warning:1
WARNING: nvidia-installer was forced to guess the X library path '/usr/lib' and X module path '/usr/lib/xorg/modules'; these paths were not queryable from the system. If X fails to find the NVIDIA X driver module, please install the `pkg-config` utility and the X.Org SDK/development package for your distribution and reinstall the driver.
忽略不管。接下来一路yes
检测显卡是否安装成功:1
nvidia-smi