摘要:我们在Proxmox VE(Proxmox Virtual Environment)PVE系统操作添加: PCI设备 直通提示:No IOMMU detected, please activate it.See Documentation for further information.【翻译:未开启IOMMU,请设置开启激活,更多有关更多信息,请参阅文档。】...
什么是硬件直通(Passthrough) VT-d 、DirectPath I/O,通过 DirectPath I/O,虚拟机可以使用 I/O 内存管理单元访问平台上的物理 PCI 功能,就是俗称的虚拟化直通,简单理解就是允许宿主机将某些硬件资源的管辖权直接移交给虚拟机,虚拟机会以直通独占的方式使用硬件,宿主机将不能再使用此硬件,利用效率几乎等同于将硬件插到了虚拟机的主板扩展槽里一样,最实用的目的是避免了虚拟化平台自身软件层转换带来的效能下降。
典型应用场景,例如在服务器上将某个物理网卡直接划给某台虚拟机使用,以达到几乎和物理机搭配物理网卡类似的网络性能。更可观的场景是,将磁盘控制器直通给虚拟机独占使用,那么虚拟机往往最瓶颈的磁盘性能,将得到非常可观的提升。
我们在Proxmox VE(Proxmox Virtual Environment)PVE系统操作添加: PCI设备 硬件直通提示:No IOMMU detected, please activate it.See Documentation for further information.
【翻译:未开启IOMMU,请设置开启激活,更多有关更多信息,请参阅文档。】
如下图所示:

PVE系统添加PCI设备直通时提示:No IOMMU detected界面
是因为默认ProxmoxVE PVE系统只能支持硬盘、CPU型号直通。其他PCI硬件,例如:网卡 或者 核心显卡的直通,还需要开启IOMMU分组功能。
在Proxmox VE(PVE)系统开启IOMMU功能实现硬件直通之前,我们要确认CPU是否支持VT-D技术;开启直通的必要条件 Intel CPU支持VT-D,同时主板要开启VT-D支持。
查询CPU是否支持VT-D
1.点击进入Intel官方网站【https://www.intel.cn/】或 AMD 官方网站【https://www.amd.com/zh-hans】,搜索对应处理器型号(例如:i7-7700【传送门】)
如果看到下图内容,则说明CPU支持VT-D技术

查询 Intel CPU是否支持VT-D
启用IOMMU功能
Intel CPU
对于Intel CPU,添加 intel_iommu=on
,操作如下:
1、Shell 里面输入命令:nano /etc/default/grub
root@pve:~# nano /etc/default/grub
2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"
然后修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
编辑完成后,使用快捷键 Ctrl + O 回车保存文件,Ctrl + X 退出编辑器。
3、使用命令 update-grub
保存更改并更新grub
root@pve:~# update-grub
4、更新完成后,使用命令 reboot
重启PVE系统
root@pve:~# reboot
从命令行运行 dmesg | grep -e DMAR -e IOMMU
如果没有输出,则说明有问题。
如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。
AMD CPU
对于AMD CPU 添加 amd_iommu=on
, 操作如下:
1、Shell 里面输入命令:nano /etc/default/grub
root@pve:~# nano /etc/default/grub
2、在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"
然后修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
编辑完成后,使用快捷键 Ctrl + O 回车保存文件,Ctrl + X 退出编辑器。
3、使用命令 update-grub
保存更改并更新grub
root@pve:~# update-grub
4、更新完成后,使用命令 reboot
重启PVE系统
root@pve:~# reboot
从命令行运行 dmesg | grep -e DMAR -e IOMMU
如果没有输出,则说明有问题。
如果有,可基本确认这个过程顺利完成! 接下来就可以为虚拟机正常的添加硬件直通了。
增加虚拟化驱动,加载vifo系统模块
这仅在必要时启用IOMMU转换,将iommu分组相关的内核模块启用,从而可以提高VM中未使用的PCIe设备的性能。
然后是修改 /etc/modules
文件
root@pve:~# nano /etc/modules
添加如下内容
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

PVE系统添加PCI设备开启硬件直通界面
如果按照此方法:ProxmoxVE 开启硬件直通 还设置无效,请再次检查自己的CPU支持VT-D技术。
注意:虚拟机进行直通操作时,取消勾选开机自启动
的选项,这样哪怕直通错误,只需重启一下物理机就可以了,因为虚拟机没有自启的原因就不会直通,不会导致冲突无法开机使用。
如果出现PVE下的虚拟主机直通硬件时,不小心把PVE系统主机使用的网卡、硬盘或者是其他硬件直通了,又勾选了开机自启动
的选项,导致无法进入PVE系统网页控制界面,重启后也是没用任何反应,多次重启后还是无法解决,请查看《PVE直通错误,导致PVE系统无法启动解决方法》文章。
---------------------------------- THE END ----------------------------------