PCIe 显卡直通给虚拟机跑 AI:IOMMU 配置避坑手册
内容标识:本文为 AI 辅助生成内容。依据 《人工智能生成合成内容标识办法》2025-09-01,已添加显式标识(本声明)与隐式标识(文件元数据 / 图片 ComfyUI 元信息)。文中技术细节与结论均由作者复核确认。
家里或办公室里只有一台带独显的主机,却想同时跑路由、NAS 和 AI 推理?虚拟化 + PCIe 直通是最常见的解法:宿主机装 Proxmox VE,把显卡整个塞进一台虚拟机,让这台 VM 独占 GPU 跑 Ollama 或 ComfyUI,其余服务各居其位。想法很美好,但直通流程从 BIOS 到内核参数再到驱动绑定,每一步都有坑,而且报错信息往往语焉不详。本文按排查顺序整理一份避坑清单,照着走一遍,基本能覆盖 90% 的失败场景。
一、BIOS 层:先确认 VT-d / IOMMU 真的开了
一切问题先从最底层排起。进 BIOS 需要打开的选项通常有两个:CPU 虚拟化(Intel VT-x / AMD-V)和 IO 虚拟化(Intel 平台叫 VT-d,AMD 平台叫 AMD-Vi 或直接写 IOMMU)。很多主板的 VT-d 默认是关闭的,而且部分消费级主板把选项藏在 Advanced → North Bridge 或 Chipset Configuration 里,找的时候要耐心。
开机后进 PVE 宿主机验证 IOMMU 是否启用:
dmesg | grep -e DMAR -e IOMMU
能看到 DMAR: IOMMU enabled 之类的输出才算过关;没有任何输出,就回 BIOS 继续找,别往下走。
二、内核参数:让 vfio 在启动时接管
IOMMU 硬件开关打开后,还要告诉 Linux 内核启用它。Intel 平台在内核命令行加:
intel_iommu=on iommu=pt
PVE 的引导方式决定修改位置:传统 GRUB 引导改 /etc/default/grub 后执行 update-grub;systemd-boot 引导(ZFS 根分区常见)则改 /etc/kernel/cmdline 后执行 proxmox-boot-tool refresh。
然后让 vfio 相关模块开机加载,写入 /etc/modules:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
改完这三处,重启宿主机,再继续下一步。
三、IOMMU Group 与 ACS:直通的两大深坑
重启后用下面的命令查看显卡所在的 IOMMU 分组:
find /sys/kernel/iommu_groups/ -type l
理想状态是显卡(连同它的 HDMI 音频控制器)单独占一个 group。如果 group 里还挤着网卡、SATA 控制器甚至根桥,直接直通要么失败、要么得把整组设备全塞给 VM——这通常是主板 PCIe 拓扑决定的,消费级平台尤其常见。
此时网上教程会推荐 ACS Override 补丁强行拆分 group。要清楚它的代价:它绕过了硬件的访问控制检查,同组设备理论上可以互相 DMA,属于"能用但降低隔离性"的折衷,家用可接受,生产环境慎用。
四、驱动抢占:宿主机先"放手",VM 才能"接手"
最常见的失败症状是:vfio 都配好了,VM 里却看不到显卡,或 lspci 能看到但驱动加载报错。原因几乎都是宿主机驱动抢先绑定了设备。排查顺序:
- 用
lspci -nn记下显卡的厂商:设备 ID(例如10de:1e84这样的四位十六进制对); - 用
lspci -k看显卡当前被哪个内核驱动占用(Kernel driver in use一行); - 若被 nouveau 或 nvidia 占用,写入
/etc/modprobe.d/blacklist.conf拉黑,或直接用 vfio-pci 按 ID 强绑:
options vfio-pci ids=10de:1e84,10de:10f8
绑定成功后,把显卡挂给虚拟机:
qm set <VMID> --hostpci0 0000:01:00.0,pcie=1
VM 内部安装对应显卡驱动,nvidia-smi 能列出显卡,直通就算成了。接下来在 VM 里跑 Ollama 的显存规划,可以参考本站的另一篇实践:用 Ollama 在 PVE 虚拟机里跑本地大模型。
总结
显卡直通的排障路径其实是一条直线:BIOS 开关 → 内核参数 → vfio 模块 → IOMMU group → 驱动解绑 → 挂给 VM。卡住时不要跳步乱试,按顺序逐层确认,绝大多数问题都出在"宿主机驱动没放手"和"group 里挤了别的设备"这两处。至于 ACS Override,能不用就不用——板卡和 CPU 的 PCIe 拓扑才是根本,选购硬件时优先看直通口碑好的平台,比事后打补丁省心得多。