使用场景
有虚拟机需要使用原始硬盘(例如 TrueNAS 获取 S.M.A.R.T. 信息与硬盘休眠)时,我们不仅可以直通硬盘给虚拟机,还可以尝试直通 SATA 控制器给虚拟机。
警告
若您确保自己的直通操作不会干扰到宿主机系统,那么请接着往下看。
开启直通
开启 VT-d
Intel 平台需要 b75 以上芯片组(酷睿 4 代以上)
与 VT-X 不同,VT-X 是虚拟化功能,而 VT-d 是 I/O 虚拟化功能。
AMD 平台是 iommu 或者叫 SRIVO(部分 OEM 主板的称法)
开启 iommu
我们编辑 /etc/default/grub 文件。可以使用 vi 或 nano,顺手就好。
找到如下配置项:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Intel 平台请修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
AMD 平台请修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
如果你需要显卡直通,建议在cmdline再加一句video=vesafb:off video=efifb:off video=simplefb:off,加了之后,pve重启进内核后停留在一个画面,这是正常情况
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=vesafb:off video=efifb:off video=simplefb:off"
更新 Grub
使用命令更新:
update-grub
加载相应内核模块
依次执行以下命令:
echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules
更新内核参数:
update-initramfs -k all -u
重启宿主机
reboot
验证
重启后于终端输入:
dmesg | grep iommu
若输出类似内容则成代表成功:
[ 1.341100] pci 0000:00:00.0: Adding to iommu group 0
[ 1.341116] pci 0000:00:01.0: Adding to iommu group 1
[ 1.341126] pci 0000:00:02.0: Adding to iommu group 2
[ 1.341137] pci 0000:00:14.0: Adding to iommu group 3
[ 1.341146] pci 0000:00:17.0: Adding to iommu group 4
再输入:
find /sys/kernel/iommu_groups/ -type l
若出现很多直通组则代表成功。无内容反之。
最后,选择需要设置的虚拟机,点击 硬件 > 添加 > PCI设备 > 选择 SATA Controller(SATA 控制器),最后点击“添加”把 SATA Controller(SATA 控制器)添加给相应的系统后,完成重启,PVE硬件直通的设置就生效了。
我们执行:
lspci
会看到一堆输出。里面应当包含了 SATA Controller。例如我的是 11:00.0。输出示例如下:
...
11:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset SATA Controller (rev 01)
...
您可以根绝输出内容来判断自己应当如何设置直通。
巨人的肩膀
感谢互联网上无私分享知识的人。我们也是站在前人的肩膀上,才看得见天际线,才够得到星辰。
Proxmox VE 设置硬盘直通_pve硬盘直通-CSDN博客
pve 在amd平台开启sata硬件直通, 且使fnos硬盘自动休眠 - 简书
我在此由衷感谢以上文章的贡献。
Comments NOTHING