GPU 直通允许虚拟机直接访问主机上的物理 GPU,该技术为虚拟机提供了更强的计算能力,通过这种方式,虚拟机可以获得接近于直接在物理机上运行的计算性能,有效避免了虚拟化过程中可能产生的性能损耗。
在 KVM(基于内核虚拟机)VPS 上启用 GPU 直通,使虚拟机能够直接访问 GPU,从而实现游戏、机器学习或三维渲染等工作负载的硬件加速。以下是如何启用 GPU 直通的逐步指南:
前提条件
在启用 GPU 直通之前,请确保以下内容:
硬件支持: 确保你的 CPU 和主板支持 Intel VT-d 或 AMD IOMMU,以及专用显卡。
支持 KVM 的主机操作系统: 安装支持 KVM 的 Linux 发行版,比如 Ubuntu、Debian 或 CentOS。
主机和虚拟机分别使用独立的显卡:GPU 直通要求物理主机中的 GPU 可以独占使用,通常需要专用的 GPU。
根权限: 主机服务器的全部管理员权限。
逐步指南 – 启用 KVM VPS 上的 GPU 直通功能
步骤 1:安装 KVM 需要软件包
apt-get update apt-get install qemu-kvm qemu bridge-utils libvirt-daemon-system libvirt-clients virtinst virt-manager
步骤 2:在 BIOS/UEFI 中启用 IOMMU
IOMMU 是英特尔 VT-d 和 AMD-Vi 的通用名称。VT-d 代表英特尔定向 I/O 虚拟化技术,不要与 VT-x 英特尔虚拟化技术混淆。VT-x 允许一个硬件平台作为多个“虚拟”平台,而 VT-d 则提升系统安全性和可靠性,并提升虚拟化环境中 I/O 设备的性能。
编辑你的引导加载程序配置文件(大多数情况下是 GRUB)以启用 IOMMU:
编辑 GRUB 配置:
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT 后再加 GRUB_CMDLINE_LINUX。

#For Intel CPUs intel_iommu=on #For AMD CPUs amd_iommu=on
修改后执行:
sudo update-grub sudo reboot
步骤 3:将 GPU 绑定到 VFIO-PCI 驱动
请参考前一步,将 GPU PCI ID 添加到文件中。
编辑 GRUB 配置,GRUB_CMDLINE_LINUX 后:
vfio-pci.ids=10de:1cb1,10de:0fb9
重启后,运行:
lspci -k | grep -A 5 VGA
PU 卡使用中的内核驱动状态变为:vfio-pci,表示修改成功。这意味着 GPU 卡直通设置已完成,可以通过创建虚拟机时通过 VNC 添加特定硬件来完成。
让我们看看主机资源在 GPU 卡资源的位置。
lspci | grep -i vga

步骤 4:安装 VNC
你可以检查系统是否安装了某些特殊的第三方软件,比如视频编辑器、图形处理工具、防火墙安全软件等。例如,AVG 防火墙可能与某些显卡驱动存在兼容性问题,导致 OpenGL 版本较低。
安装图形界面:
apt-get install xfce4 xfce4-goodies dbus-x11 xfonts-base
更改 vncserver 连接密码:
apt install tightvncserver vncserver vi .vnc/xstartup #!/bin/sh xrdb $HOME/.Xresources startxfce4 &
重启 VNC 服务:
vncserver -kill :1 vncserver :1
步骤 5:创建一个新的 VPS

选择浏览本地 ISO,

添加 CPU 和内存,

加盘,

安装后再添加显卡。

添加硬件,找到显卡位置,你需要添加00和01

步骤 6:启动虚拟机并在虚拟机上安装 GPU 驱动
启动虚拟机,检查 GPU 是否被识别。如果使用 NVIDIA 显卡,可能需要在虚拟机内安装 NVIDIA 驱动。

常见问题与解决方案
1. 错误“设备正在被主机使用”:确保主机的显示服务器(例如 Xorg 或 Wayland)未使用该 GPU。
2. IOMMU 分组问题:使用像 pci-stub 或修补内核这样的工具来破坏有问题的分组。
3. 性能瓶颈:确保虚拟机拥有足够的 CPU 核心、内存和存储带宽。
结论
KVM VPS 上的 GPU 直通为释放 GPU 在虚拟化工作负载中的全部潜力提供了一种高效的方式。虽然该过程需要一些技术设置,但对于要求较高的应用来说,性能提升是值得的。
按照本指南操作,你可以启用 GPU 直通,开始在 VPS 上利用高性能计算。
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/yzj/gpu/2343.html
