什么是虚拟机显卡直通?
虚拟机显卡直通是一种虚拟化技术,允许将物理主机中的GPU直接分配给虚拟机使用。这使虚拟机可以利用物理显卡的计算和渲染能力,从而实现接近于原生硬件性能的体验。显卡直通技术通常用于需要高性能图形处理或GPU加速的场景,例如图形密集型应用、3D建模、视频编辑、深度学习、科学计算和游戏等。
常用虚拟平台支持:
KVM/QEMU:支持GPU Passthrough,可以通过libvirt进行管理。
VMware ESXi:支持GPU直通功能,称为DirectPath I/O。
Proxmox VE:基于KVM的虚拟化平台,支持显卡直通。
Xen:支持显卡直通。
Hyper-V:通过Discrete Device Assignment (DDA)支持GPU直通。
PVE中设置显卡直通
1.检查和启用IOMMU
编辑/etc/default/grub文件,并在GRUB_CMDLINE_LINUX_DEFAULT
行中添加以下内容:
对于Intel处理器:intel_iommu=on
对于AMD处理器:amd_iommu=on
编辑/etc/default/grub:
nano /etc/default/grub
修改GRUB_CMDLINE_LINUX_DEFAULT:
修改GRUB_CMDLINE_LINUX_DEFAULT:
更新GRUB配置并重启主机:
update-grub
reboot
2.确认IOMMU是否启用
dmesg | grep -e DMAR -e IOMMU
3.确定显卡的PCI地址
使用lspci命令找到显卡的PCI地址:
lspci | grep -i vga
记下显卡的PCI地址,例如0000:3b:00.0。
4.编辑/etc/modules文件
nano /etc/modules
确保加载以下模块:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
5.添加PCI到PVE
查询显卡PCI的ID:
root@pve-server:~# lspci -nnk | grep -A3 -i vga
0000:3b:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:2684] (rev a1)
Subsystem: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:16f3]
Kernel driver in use: vfio-pci
Kernel modules: nvidiafb, nouveau
root@pve-server:~# lspci -nnk | grep -A3 -i audio
0000:3b:00.1 Audio device [0403]: NVIDIA Corporation AD102 High Definition Audio Controller [10de:22ba] (rev a1)
Subsystem: NVIDIA Corporation AD102 High Definition Audio Controller [10de:16f3]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
0000:5d:00.0 PCI bridge [0604]: Intel Corporation Sky Lake-E PCI Express Root Port A [8086:2030] (rev 04)
root@pve-server:~#
由上得知ID是10de:2684(VGA这一行的 [GeForce RTX 4090] 后面的内容就是ID)。
在/etc/modprobe.d/目录中创建一个新文件,例如vfio.conf,
nano /etc/modprobe.d/vfio.conf
例如,如果显卡的PCI ID是10de:2684,则:
options vfio-pci ids=10de:2684
更新并重启PVE:
update-initramfs -u
reboot
6.在Proxmox VE Web界面中添加显卡
在弹出的窗口中选择之前查到的显卡PCI地址,并确保勾选“所有功能(All Functions)”
确保以下设置如图所示:
7.查看ubuntu内是否正常显示显卡信息
lspci | grep -i vga
扩展知识:在Ubuntu里安装英伟达显卡驱动
首先禁用自动更新(自动更新:Never):
注意:如果没有图形化界面,进行以下操作。
拓展(可选):
为了防止内核升级,输入以下命令,禁止内核更新:
sudo apt-mark hold linux-image-generic linux-headers-generic
如果以后想开启 ,输入以下命令,重启内核更新:
sudo apt-mark unhold linux-image-generic linux-headers-generic
运行以下命令更新系统:
sudo apt update
sudo apt upgrade
添加 NVIDIA PPA,添加 NVIDIA 驱动程序的 PPA:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
安装 NVIDIA 驱动程序,查找推荐的驱动程序:
ubuntu-drivers devices
这将列出所有可用的驱动程序,并推荐一个版本(通常是 nvidia-driver-xxx)。
安装推荐的驱动程序(假设推荐的是 nvidia-driver-525,实际名称请以终端显示为准):
sudo apt install nvidia-driver-525
禁用 Nouveau 驱动,创建黑名单配置文件:
sudo bash -c 'echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nouveau.conf'
sudo bash -c 'echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist-nouveau.conf'
更新 initramfs并重启:
sudo update-initramfs -u
sudo reboot
验证安装,检查 NVIDIA 驱动是否正常工作:
nvidia-smi
显示 NVIDIA 驱动程序的版本以及显卡的使用情况等信息(如图是安装正常):