PVE直通的核心结论:主板BIOS开VT-d/AMD-Vi和SR-IOV相关开关,PVE里改GRUB加intel_iommu=on或amd_iommu=on,再用vfio-pci绑定设备,最后在虚拟机硬件里添加PCI设备即可。
PVE直通显卡主板BIOS设置:先把IOMMU和VT-d打开
主板BIOS是直通的第一道门槛,很多显卡、NVMe固态、网卡直通失败,并不是PVE配置有问题,而是BIOS里关着虚拟化直通开关,Intel平台和AMD平台要开启的功能名称不同,下面分平台说清。
Intel平台必须开启的BIOS功能
- VT-d:全称Intel Virtualization Technology for Directed I/O,负责DMA重映射和中断重映射,这是直通的核心开关,不开就无法把物理PCI设备安全交给虚拟机。
- VT-x:基础虚拟化技术,虽然直通主要依赖VT-d,但VT-x也必须保持开启,否则虚拟机本身无法正常启动。
- SR-IOV:如果你要做网卡SR-IOV虚拟化,比如把一块四口网卡拆成多个虚拟网卡分给不同虚拟机,这个开关要开,只做显卡或硬盘直通可以不开。
- Above 4G Decoding:部分主板在直通大显存显卡时会遇到“PCI资源不足”报错,打开这个选项通常可以解决,多数新主板默认开启,旧平台可能需要手动找。
AMD平台必须开启的BIOS功能
- AMD-Vi:也叫IOMMU,对应Intel的VT-d,AMD平台直通的核心开关,找不到时在BIOS搜索框输入“IOMMU”。
- SVM Mode:AMD基础虚拟化开关,对应Intel VT-x。
- SR-IOV:可选,网卡虚拟化场景才需要。
- Above 4G Decoding:作用与Intel平台一致,直通大容量PCIe设备时建议开启。
华硕、微星、华南主板BIOS路径参考
不同主板BIOS菜单命名不完全一样,但路径有一定规律,找不到时直接用BIOS里的搜索功能,输入“VT-d”或“IOMMU”通常能定位。
| 主板平台 | 典型路径 |
|---|---|
| 华硕Intel板 | Advanced > System Agent Configuration > VT-d |
| 华硕AMD板 | Advanced > AMD CBS > IOMMU |
| 微星Intel板 | Overclocking > CPU Features > VT-d |
| 华南金牌Intel板 | Chipset > System Agent Configuration > VT-d |
| 技嘉Intel板 | Settings > Miscellaneous > VT-d |
判断BIOS直通开关是否生效
进PVE的Shell或网页终端,执行两条命令:
- Intel平台:
dmesg | grep -i dmar,看到DMAR: IOMMU enabled表示VT-d已生效。 - AMD平台:
dmesg | grep -i amd-vi,看到AMD-Vi: Interrupt remapping enabled表示IOMMU已生效。
如果显示IOMMU disabled,说明BIOS里没开,或者CPU本身不支持直通。
PVE虚拟机直通怎么设置:从内核参数到命令行的完整流程
BIOS确认无误后,进入PVE系统操作,整个过程分四步:改GRUB、加载模块、绑定设备、添加PCI设备。
确认内核已识别IOMMU
先执行:
dmesg | grep -i -E "DMAR|IOMMU"
这一步只是确认,如果没有正常输出,先回BIOS检查开关,不要继续往下配置。
修改GRUB内核参数
编辑/etc/default/grub:
nano /etc/default/grub
找到GRUB_CMDLINE_LINUX_DEFAULT这一行,Intel平台加入intel_iommu=on iommu=pt,AMD平台加入amd_iommu=on iommu=pt。
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
保存后执行:
update-grub
然后重启PVE宿主,除非你确定主板默认已经开启IOMMU,否则这一步不要跳过。
加载VFIO内核模块
编辑/etc/modules:
nano /etc/modules
添加以下四行:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
保存退出,执行:
update-initramfs -u
绑定设备到vfio-pci驱动
先查看要直通的设备ID:
lspci -nnk | grep -i -A2 "vga|audio|ethernet|nvme"
假设一块NVIDIA显卡显示为[10de:1e84],音频设备显示为[10de:1e85],编辑/etc/modprobe.d/vfio.conf:
options vfio-pci ids=10de:1e84,10de:1e85 disable_vga=1
多个设备ID用英文逗号分隔,disable_vga=1对NVIDIA和AMD显卡直通比较有用,可以避免宿主占用显示输出,保存后执行:
update-initramfs -u
重启PVE宿主,重启后执行:
lspci -nnk | grep -A2 "10de:1e84"
看到Kernel driver in use: vfio-pci说明绑定成功。
在虚拟机里添加PCI设备
打开PVE Web管理界面,选择目标虚拟机,点硬件,添加PCI设备,在设备列表里选择已经绑定到vfio-pci的那块设备,显卡直通时建议勾选“PCI-Express”,部分老旧设备还要勾选“Allow unsafe interrupts”,保存后启动虚拟机,在虚拟机系统里安装对应驱动即可。
PVE直通和ESXi直通哪个好:关键差异对比
家用和小型服务器环境里,PVE直通和ESXi直通是两条主流路线,两者没有绝对好坏,但适用场景差别明显。
| 对比项 | PVE | ESXi |
|---|---|---|
| 底层系统 | Debian + KVM | 自有VMkernel |
| 硬件兼容性 | 较广,旧平台和寨板通常能跑 | 较严格,网卡、阵列卡有HCL限制 |
| 配置方式 | 命令行加Web界面 | 图形界面为主,命令行较少 |
| 资源开销 | 较低 | 略高一些 |
| 授权情况 | 免费开源 | 免费版功能受限 |
| 直通稳定性 | 多数情况下稳定 | 企业级稳定性成熟 |
行业共识认为,家用All in one、旧x86平台、预算有限的用户更适合PVE直通,因为硬件兼容性宽,不挑网卡和主板,ESXi更适合有官方硬件兼容列表保障的企业环境,但家用时经常因为一块消费级网卡不在HCL里而装不上驱动。
家用All in one PVE直通教程:核显、硬盘、网卡常见场景
家用用户直通最多的三类设备:核显、NVMe固态、网卡,每一种都有不同的坑点。
核显直通
核显直通通常用于Jellyfin、Emby、Home Assistant等需要硬件转码的虚拟机,Intel核显直通的难点在于宿主默认会占用核显驱动,需要屏蔽i915。
操作步骤:
- 执行
lspci -nnk | grep -i "vga|display"找到核显设备ID,例如[8086:9bc8]。 - 在
/etc/modprobe.d/vfio.conf里绑定这个ID。 - 虚拟机显示设备不要用默认的VGA,改成“无”或“标准显示”,再添加PCI设备。
- 部分Intel核显直通后虚拟机黑屏,需要添加
args: -device vfio-pci,host=00:02.0,addr=0x02,rombar=0或勾选RomBar相关选项。
NVMe固态直通和硬盘控制器直通
想把整块NVMe固态给NAS虚拟机用,不要直通单块分区,而是直通PCIe NVMe控制器,在Web界面硬件添加里选择“PCI设备 – NVMe SSD控制器”,直通后宿主不再管理该盘,里面数据也不会出现在PVE宿主的lsblk里。
SATA硬盘可以做整个SATA控制器直通,但注意不要把PVE系统所在的那块SATA控制器直通出去,否则宿主会失联重启,判断方法是先在PVE的磁盘列表里确认系统盘接在哪个控制器下。
网卡直通失败怎么排查
网卡直通失败多与IOMMU分组有关,执行:
ls /sys/kernel/iommu_groups/
如果一块网卡和其他设备挤在同一个分组,直通时会把整个组一起直通,容易报错,老主板可以尝试在内核参数加pcie_acs_override=downstream,multifunction拆分分组,但这会降低安全性,家用临时用可以,长期生产环境不建议。
绑定后执行lspci -kn确认网卡已经显示Kernel driver in use: vfio-pci,虚拟机里还要安装对应网卡驱动,很多Intel I225/I226网卡在Windows虚拟机里需要手动装驱动才能识别。
Q&A:PVE直通常见问题
pve虚拟机直通怎么设置才能避免启动报错
先确认BIOS的IOMMU开关已开,再确认GRUB里的intel_iommu=on或amd_iommu=on已经生效,设备已绑定vfio-pci且没有被宿主驱动占用,多数启动报错是因为漏了update-initramfs -u,或者BIOS设置重启后被重置。
pve直通显卡主板bios设置漏了VT-d会怎样
最典型的现象是虚拟机启动时提示“Device is in use”或“Cannot bind to vfio-pci”,直通后虚拟机蓝屏、黑屏,因为VT-d没有开启,DMA重映射不可用,PCI设备无法被安全隔离到虚拟机里。
华南主板pve直通bios设置和一线品牌差别大吗
华南金牌等国产主板的BIOS功能菜单名称可能和一线品牌不同,部分老款板型默认隐藏VT-d选项,需要先关闭Fast Boot或CSM才会显示,路径通常仍在Chipset或Advanced子菜单下,找不到时更新一版BIOS或联系主板厂商获取对应固件说明。
PVE直通没有玄学,绝大多数问题集中在BIOS开关、内核参数和驱动绑定三个环节,按照先BIOS、后命令行、再添加设备的顺序排查,家用场景下多数设备都能一次直通成功。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/638789.html





