Proxmox VE 9.x 开启 Intel SR-IOV 核显直通 🖥️


📋 目录


✨ 特性与优势

SR-IOV (Single Root I/O Virtualization) 技术允许单个物理设备(如Intel核显)被多个虚拟机共享使用,具有以下优势:

  • 🎯 核显复用:一个物理核显可被拆分为多个虚拟GPU供多个虚拟机同时使用。
  • 🚀 性能提升:接近原生性能的硬件加速,支持视频编解码和图形处理。
  • 💾 资源优化:最大化利用硬件资源,避免显卡闲置。
  • 🔧 灵活分配:可根据需要为不同虚拟机分配不同数量的虚拟功能(VF)。

🛠️ 准备工作

参考视频:小陈折腾日记
Bilibili BV1mtvNzwEis

✅ 硬件要求

组件 要求
CPU/核显 支持SR-IOV的Intel第12代及更新架构(Alder Lake-N, 12-14代Core, Ultra 200系列)
主板 支持SR-IOV功能(请在BIOS中确认)
BIOS设置 开启 VT-d(Intel虚拟化技术)、SR-IOV 支持,禁用安全启动(Secure Boot)
系统 Proxmox VE (PVE) 9.x

🔍 检查硬件支持(选做)

1
2
3
4
5
6
7
# 检查CPU和核显型号
lscpu | grep -i model
lspci | grep -i vga

# 查看IOMMU是否支持
dmesg | grep -e DMAR -e IOMMU
# 若输出包含"Intel-IOMMU"或"AMD-Vi"且未显示错误,则通常表示支持。

📦 软件准备

  1. 确保系统更新
    1
    apt update && apt upgrade -y
  2. 安装基本工具
    1
    apt install -y git build-essential dkms sysfsutils proxmox-headers-$(uname -r) intel-gpu-tools

⚙️ 操作流程

1. 修改 GRUB 引导参数

1
2
3
4
5
# 备份原始GRUB配置
cp /etc/default/grub /etc/default/grub.bak

# 编辑GRUB配置
nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT 行末尾追加以下参数:

1
intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe

参数说明

  • intel_iommu=on:启用Intel IOMMU。
  • iommu=pt:只为使用透传(Passthrough)的设备启用IOMMU,可提供更好的性能和功能。
  • i915.enable_guc=3:启用Intel Graphics Unit Control(GUC),有助于提升显卡在虚拟化环境中的性能。
  • i915.max_vfs=7:设置最大虚拟功能(VF)数量为7(可根据硬件调整)。
  • module_blacklist=xe:阻止内核自动加载名为 xe 的显卡驱动模块。

2. 更新GRUB配置

1
update-grub

3. 安装 i915 SR-IOV DKMS 驱动

可访问 i915-sriov-dkms GitHub 页面 获取最新版本驱动

方法一:直接安装DEB包(推荐)

1
2
3
4
5
# 下载预编译的DEB包(请根据PVE版本选择最新版本)
wget -c https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.07.22/i915-sriov-dkms_2025.07.22_amd64.deb

# 安装DEB包
dpkg -i i915-sriov-dkms_2025.07.22_amd64.deb

方法二:从源码编译安装

1
2
3
4
5
6
7
# 克隆项目仓库
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms

# 添加并安装DKMS模块
dkms add .
dkms install -m i915-sriov-dkms -v 2024.09.21 --force

4. 配置虚拟功能(VF)数量

1
2
3
4
5
6
# 查找核显的PCI总线地址(通常是00:02.0)
lspci | grep VGA

# 配置系统启动时自动创建7个虚拟功能(VF)
# 注意:将0000:00:02.0替换为你的实际核显地址
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" >> /etc/sysfs.conf

5. 更新initramfs并重启

1
2
3
4
5
# 更新initramfs
update-initramfs -u

# 重启系统
reboot

6. 验证安装

系统重启后,执行以下命令验证SR-IOV是否启用成功:

1
2
3
4
5
6
7
8
# 检查是否生成了VF设备
lspci | grep -i "HD Graphics"

# 检查DKMS模块状态
dkms status

# 查看Intel GPU状态(可选)
intel_gpu_top -d sriov

如果成功,lspci 命令应显示1个物理GPU和多个虚拟GPU(例如8个,包括1个PF和7个VF)。


🐧 客户端配置

在PVE中添加虚拟GPU到虚拟机

  1. 创建或编辑虚拟机配置

    • 在PVE网页管理界面中,选择目标虚拟机。
    • 硬件添加PCI设备
  2. 选择虚拟GPU

    • 选择任意一个 00:02.x 的虚拟GPU设备(注意:不要选择主设备 00:02.0,这是给宿主机使用的)。
    • 勾选 All Functions(如果适用)。
    • ROM-BARPrimary GPU 选项通常保持未勾选状态,除非有特殊需求。
  3. 虚拟机设置建议

    • 机器类型:设置为 q35
    • BIOS:如果客户端是较新的Windows(Win8及以上)或Linux,建议使用 OVMF (UEFI)。
    • 在OVMF模式下,建议在显卡的高级设置中添加 disable_vga=1 参数到vfio-pci模块。

安装客户端驱动

  • Windows

    • 安装最新版本的Intel显卡驱动程序(版本31.x或更高)。
    • 设备管理器中应正确识别虚拟GPU。
  • Linux

    • 安装相应的Intel图形驱动(通常是 mesa-vulkan-driversintel-media-va-driver)。
    • 验证驱动:
      1
      2
      ls /dev/dri/  # 应看到render节点
      vainfo # 应显示VA-API支持信息

🔍 验证与测试

验证SR-IOV功能

1
2
3
4
5
6
7
# 查看VF状态
cat /sys/bus/pci/devices/0000:00:02.0/sriov_numvfs
cat /sys/bus/pci/devices/0000:00:02.0/sriov_totalvfs

# 查看dmesg输出是否有相关错误
dmesg | grep -i i915
dmesg | grep -i vf

测试硬件加速

在客户端系统中,可以使用以下工具测试硬件加速是否正常工作:

  • FFmpeg(测试视频编解码):
    1
    ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i input.mp4 -c:v vp9_vaapi -f null -
  • Jellyfin/Emby/Plex:在媒体服务器设置中启用硬件加速并选择Intel QuickSync。
  • Intel GPU Tools(在PVE宿主机上安装):
    1
    2
    apt install intel-gpu-tools
    intel_gpu_top -d sriov # 查看GPU使用情况

Intel GPU 工具使用 🛠️

安装 Intel GPU 官方工具

1
apt install intel-gpu-tools

查看 Intel 核显使用率

1
intel_gpu_top -d sriov


💡 提示:完成以上步骤后,您的PVE 9.x应能成功在多台虚拟机中同时共享Intel核显。请记得在投入生产环境前进行全面测试。如有问题,可查看PVE系统日志(journalctl -xe)或前往相关社区和项目Issue页面寻求帮助。

祝您配置顺利! 🎉