PVE直通物理磁盘到 Proxmox VM 虚拟机

视频教程

点击进入YouTube观看》

 

点击进入bilibili观看》

 

准备工作-PVE开启iommu直通

1.进入PVE WEB端的管理页面并登陆,打开PVE节点的shell,输入命令:
要忽略 dmesg 输出中的一些烦人的错误, 请运行以下命令(# 这一步对于直通来说不是必需的,但有助于保持干净。)

nano /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=Y report_ignored_msrs=0
# 按 Ctrl + X,然后按 Y + Enter 保存更改。

2.启动内核IOMMU支持
IOMMU(Input-Output Memory Management Unit)是一种硬件功能,用于管理设备对系统内存的访问。启用 IOMMU 后,可以在虚拟机中直接访问物理设备,并允许虚拟机独立于主机操作系统运行

nano /etc/default/grub # 将以下行粘贴到其中,并在旧标签前面添加一个注释标签#,以下为常用的一些写法。
# 对于 Intel CPU
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf"
# 对于 AMD CPU (本文不涉及)
GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf"
# 其他的一些写法(如果是AMD处理器,将intel改为amd)
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 video=efifb:off" # 这是GVT模式,也就是共享模式,少部分cpu支持,但体验很好
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off" # 这是独占模式,都支持,但显示器没有pve的控制台输出,也只能直通个一个虚拟机
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on" #本期教程我使用的就是这个
# 参数释义
1.iommu=pt:启用 Intel VT-d  AMD-Vi  IOMMU。这是一种硬件功能,用于管理设备对系统内存的访问。在虚拟化环境中,启用 IOMMU 后,可以将物理设备直通到虚拟机中,以便虚拟机可以直接访问硬件设备。“iommu=pt”不是必须的,PT模式只在必要的时候开启设备的IOMMU转换,可以提高未直通设备PCIe的性能,建议添加。
2.initcall_blacklist=sysfb_init:禁用 sysfb_init 内核初始化函数。这个函数通常用于在内核启动过程中初始化系统帧缓冲。在使用 GPU 直通的情况下,这个函数可能会干扰直通操作,因此需要禁用它。
3.i915.enable_gvt=1:启用 Intel GVT-g 虚拟 GPU 技术。这个选项用于创建一个虚拟的 Intel GPU 设备,以便多个虚拟机可以共享物理 GPU 设备。启用 GVT-g 需要在支持虚拟 GPU  Intel CPU 和主板上运行,并且需要正确配置内核和虚拟机。想开启GVT-g的就添加这条,显卡直通的就不要添加了。
4.initcall_blacklist=sysfb_init:屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽核显等设备驱动;
5.pcie_acs_override=downstream,multifunction:便于iommu每个设备单独分组,以免直通导致物理机卡死等问题
6.pci=nommconf:意思是禁用pci配置空间的内存映射,所有的 PCI 设备都有一个描述该设备的区域(您可以看到lspci -vv),访问该区域的最初方法是通过 I/O 端口,而 PCIe 允许将此空间映射到内存以便更简单地访问。

3.使用以下命令更新 grub

update-grub

更新后可以重启电脑

reboot

4.主机重新启动并运行后,运行以下命令,验证是否开启iommu

dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
# 如果没有输出,则说明有问题。你应该看到这样的东西;“DMAR: IOMMU enabled”
# 另外一种验证方式
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
# 出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启

5.对于某些平台,可能需要允许不安全中断。运行以下命令

nano /etc/modprobe.d/iommu_unsafe_interrupts.conf # 添加以下行;请注意,此选项可能会使您的系统不稳定。
options vfio_iommu_type1 allow_unsafe_interrupts=1

6.启用必要的内核模块,运行以下命令

nano /etc/modules # 添加以下行;
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

7.将驱动程序模块列入黑名单,以使虚拟机能够完全访问显卡等。运行以下命令

nano /etc/modprobe.d/pve-blacklist.conf # 添加以下行;
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist snd_hda_codec_hdmi
blacklist snd_hda_intel
blacklist snd_hda_codec
blacklist snd_hda_core
blacklist radeon
blacklist amdgpu
blacklist i915
options vfio_iommu_type1 allow_unsafe_interrupts=1
# 如果有重复项,记得删除,解释:屏蔽三大显卡驱动,屏蔽hdmi声音驱动;options

8.查看直通设备 

#执行 lspci -nn 可命令查看需要直通设备

9.更新模块并重新启动主机以应用更改

update-initramfs -u -k all
reboot

硬盘直通详细操作步骤

方式一:

直接PCI添加硬盘   

方式二:

1.在“数据中心->pve->磁盘”选项卡下,查找您想要直通给虚拟机的目标磁盘。找到它后,记下它的名称串行序列号(我的是50026B76844C87B)。
注:可选步骤;点击擦除磁盘。这将删除磁盘的所有内容并将其完全擦除,因此请确保上面没有留下任何重要的内容!

2.接下来,在 Shell 终端中输入以下内容
find /dev/disk/by-id/ -type l|xargs -I{} ls -l {}|grep -v -E '[0-9]$' |sort -k11|cut -d' ' -f9,10,11,12

然后它会显示您想要的磁盘的完整路径。
像这样复制路径并记下它。
/dev/disk/by-id/{disk-serial}
我的是:/dev/disk/by-id/wwn-0x5002538d40972ec2

3.进入您要为其提供磁盘的虚拟机的“硬件”选项卡,并查看当前的磁盘类型(类型一般为scsi1、virtio0等),避免后续直通冲突。

再次返回 Shell 终端,然后输入
qm set {vmid} -{disk-type}{number} /dev/disk/by-id/{disk-serial}
对于 Windows 和 Linux,硬盘类型推荐; SCSI。
对于 macOS,硬盘类型推荐; virtio。
例子win(qm set 101 -scsi1 /dev/disk/by-id/wwn-0x5002538d40972ec2)
例子Mac(qm set 100 -virtio0 /dev/disk/by-id/wwn-0x5002538d40972ec2)

如果操作正确,它将发布类似的输出,如图所示。如果没有,请仔细检查前面的步骤。

再次返回虚拟机的“硬件”选项卡,查看它是否已正确列出,如图所示。
选择后点击编辑。

这是您想要为磁盘设置的设置,在本例中这是针对 Windows 的。其他操作系统会有所不同。
适用于 Windows 和 Linux;如图所示(Write back)。
对于 macOS;Write back(不安全)。
设置完成后,启动您的虚拟机。

【启动win虚拟机。第一次如果在用户登录这个界面冻屏,重置一次就可以】

如何取消磁盘与虚拟机的链接?

如果您想在添加磁盘后将其从虚拟机中删除,请在 Shell 中键入以下内容。
{磁盘类型}{编号} 例如 scsi1
qm unlink {vmid} --idlist {disk-type}{number}

完整代码示例:qm unlink 101 --idlist scsi1

附:PVE使用常见问题及使用合集链接

PVE OC Mac系统:https://imacos.top/category/pve/pvemac/
Proxmox(PVE)系统环境搭建安装教程https://imacos.top/2023/07/18/pve/
定制OVMF固件实现PVE环境UEFI模式直通Intel核显并显示BIOS画面可以外接显示https://imacos.top/2023/10/09/152/
PVE(Proxmox VE) 启动各种报错问题合集篇(持续更新)https://imacos.top/2023/09/17/89/
PVE(Proxmox VE) 使用常见问题及笔记合集篇(持续更新)https://imacos.top/2023/09/17/2-2/
PVE(Proxmox)安装macOS苹果系统遇到的一些错误经验分享(持续更新)https://imacos.top/2023/08/27/macos/
PVE(Proxmox VE)安装Windows 11虚拟机直通独立显卡https://imacos.top/2023/09/07/pve-windows-11/
PVE下macOS苹果系统PCI直通AMD 580显卡硬件直通实例提取显卡rom教程https://imacos.top/2023/08/01/580/
PVE下如何启用 PCI直通显卡GPU/iGPU/USB/声卡AUDIO等硬件直通教程https://imacos.top/2023/07/31/pci/
PVE环境安装macOS苹果系统https://imacos.top/2023/07/29/pve-macos/
win系统安装请看我之前发布的教程(https://imacos.top/2023/09/07/pve-windows-11/

文件解压密码:imacos.top

原文链接:https://imacos.top/2024/05/11/4578-3/,转载请注明出处。
0
1. 本站所有资源解压密码均为imacos.top
2. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
3. 如有无法下载的链接,联系:邮箱271638927@qq.com,或直接联系QQ271638927进行反馈,我们将及时进行处理。
4. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:邮箱271638927@qq.com,我们将第一时间配合处理!

评论0

请先
终身会员限时上线 ☞ 限时永久会员折扣活动开始啦 > 查看优惠
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码