简介
硬件直通简单来说就是让虚拟机直接使用物理机的硬件资源,例如网卡、显卡等。
配置
手动启用 IOMMU
打开 PVE 的 shell 执行以下命令:
# 编辑grub文件
nano /etc/default/grub
# 修改GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
# 更新grub文件
update-grub
# 重启系统
reboot
# 检查是否开启成功
dmesg | grep -e DMAR -e IOMMU
当然,如果你嫌麻烦,可以使用 pvetools 脚本进行配置,不过该脚本我没有用过,看样子挺强大的,如果你选择使用,欢迎告诉我使用体验和效果。
打开PT模式
PT模式:会在IOMMU需要使用时候才启动,适配器不需要使用 DMA 转换到内存,因此可以提高其他没有分配过设备的性能
# 编辑grub文件
nano /etc/default/grub
# 修改GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# 编辑modules文件
nano /etc/modules
# 添加以下内容
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
# 刷新initramfs
update-initramfs -u -k all
# 更新grub文件
update-grub
# 重启系统
reboot
# 检查是否开启成功,成功会输出一堆硬件信息
dmesg | grep -e DMAR -e IOMMU
拉黑驱动
使 PVE 不加载驱动,直通给虚拟机:
# 查看 pci id
lspci -nnk
# 编辑vfio.conf
nano /etc/modprobe.d/vfio.conf
# 绑定 pci id
softdep r8169 pre:vfio-pci
options vfio-pci id=10ec:8125 #10ec:8125 替换成查到的要直通的 pci id 例如网卡的pci id
# 编辑blacklist.conf
nano /etc/modprobe.d/blacklist.conf
blacklist snd_hda_intel
blacklist snd_soc_skl
blacklist snd_hda_codec_hdmi
blacklist i915
blacklist ahci
blacklist nvidiafb # 如果用核显就不用拉黑nvidia驱动
# 刷新initramfs
update-initramfs -u -k all
注意事项
- 硬盘直通:优先选择直通 sata 控制器,硬盘映射次之。
- 核显直通:如果多个虚拟机要直通核显,那么必须开启gvt-g,像我只用在NAS上就不需要。在配置成功之前不建议设置核显直通的虚拟机开机自启,否则一旦出现连接不上PVE管理后台的情况,重启PVE后虚拟机开机核显就被占了,此时连接屏幕是无信号的,只能在PVE启动之前通过在安全模式中用命令去停止虚拟机。