Proxmox VE(PVE) 进行网卡直通

我的设备

  • ECS Z270H4-I
  • E3 1235L V5
  • DDR4 2133 24G
  • WD 240G SSD

介绍

PCI直通允许您在VM内部使用物理PCI设备(图形卡,网卡)(仅限KVM虚拟化)。如果您“PCI passthrough”设备,该设备将不再可用于主机。

注意:PCI passthrough是Proxmox VE中的一项实验性功能

要启用硬件直通的话先要确保硬件支持VT-D和VT-X,CPU必须支持硬件虚拟化(为了使用 kvm)和 IOMMU(为了使用 VGA 直通)并保证主板中相关功能的开启

添加CPU支持,开启iommu

  • IOMMU 是 Intel VT-d 和 AMD-Vi 的通用名称。
  • VT-d 指的是直接输入/输出虚拟化(Intel Virtualization Technology for Directed I/O),不应与VT-x(x86平台下的Intel虚拟化技术,Intel Virtualization Technology)混淆。VT-x 可以让一个硬件平台作为多个“虚拟”平台,而 VT-d 提高了虚拟化的安全性、可靠性和 I/O 性能。

设置完之后最好重新启动一下

reboot

查询网卡信息

lspci | grep -i ethernet 

显示

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@pve:~# lspci | grep -i ethernet 
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM
01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.2 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.3 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 16)
root@pve:~# 

Intel CPU

修改grub

  • 编辑文件/etc/default/grub
  • 修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
  • 使其为“GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on”
  • 使用update-grub更新
  • 验证其有效性,从命令行运行“dmesg | grep -e DMAR -e IOMMU”。如果没有输出,则出现问题。极有可能是bios设置的问题,需要启动cpu的vt-x支持。
vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU

AMD CPU

修改grub

  • 编辑文件/etc/default/grub
  • 修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
  • 使其为“GRUB_CMDLINE_LINUX_DEFAULT=“quiet amd_iommu=on”
  • 使用update-grub更新
  • 验证其有效性,从命令行运行“dmesg | grep -e DMAR -e IOMMU”。如果没有输出,则出现问题。极有可能是bios设置的问题,需要启动cpu的vt-x支持。
vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU

新增所需模块

修改文件/etc/modules,加入如下的行

vi /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

执行命令来更新initramfs

update-initramfs -u -k all.

添加PCI设备

命令模式添加

  1. 使用命令找到网卡PCI的地址,地址应采用以下形式:01:00.0
  2. 打开文件进行手工添加
  • 集群:/etc/pve/nodes/你的集群名称/qemu-server/虚拟机id.conf
  • PCI:/etc/pve/qemu-server/vmid.conf
  • PCIE: /etc/pve/qemu-server/.conf
查找网卡ID
lspci | grep net


或者
lspci


添加PCI
vi /etc/pve/qemu-server/vmid.conf
添加一个pci地址:  
hostpci0: 01:00.0
添加多个pci地址方式1:  
hostpci0: 01:00.0;01:00.1
添加多个pci地址方式2:  
hostpci0: 01:00.0
hostpci1: 01:00.1
添加统称所有pci地址,自动传递所有功能:  
hostpci0: 01:00


添加PCIE
vi /etc/pve/qemu-server/111.conf
machine: q35
hostpci0: 01:00.0,pcie=1

web页面模式添加

硬件->添加,选择PCI设备->选择,完成
如需更改为PCIE,可设置机器为q35

如果添加了PCI设备开启虚拟机正常使用那后面的就不需要看了

如果添加了PCI设备无法开启虚拟机的话需要允许不安全的中断

  1. 先验证IOMMU是否有效
  2. 再查看IOMMU是否可以中断重映射
  3. 后启用中断重映射,允许不安全的中断

验证IOMMU有效

要让pci passthrough正常工作,您需要为您的pci设备提供专用的iommu组

find / sys / kernel / iommu_groups / -type l

输入命令后有相关东西输出,则表示正常

如果没有则需要进行IOMMU中断重映射,只有每个IOMMU都支持中断重映射,才会启用中断重映射。

IOMMU中断重映射

没有中断重映射就不可能使用PCI passthrough。

对于KVM用户,设备分配将失败,出现’Failed to assign device "[device name]"的错误,即“无法分配设备”[设备名称]“:操作不允许”错误,并且’未找到中断重映射硬件,将设备传递到非特权域是不安全的。

不支持中断重映射的系统:

  • 所有使用AMD处理器和芯片组的系统都支持AMD I / O虚拟化(AMD-Vi)。这种硬件具有中断重映射支持; 但是,上游尚未提供软件支持。
  • 所有使用英特尔处理器和芯片组的系统都支持英特尔定向I / O虚拟化技术(VT-d),但不支持中断重映射。新的处理器和芯片组提供了中断重映射支持。要确定您的系统是否支持中断重映射:

查看中断重映射

  1. 运行“dmesg | grep ecap”命令。
  2. 在IOMMU行上,“ecap”之后的十六进制值表示是否支持中断重映射。如果该值的最后一个字符是8,9,a,b,c,d,e或f,则支持中断重映射。例如,“ecap 1000”表示没有中断重映射支持。“ecap 10207f”表示中断重映射支持,因为最后一个字符是“f”。

启用中断重映射

  • 官方文档是这个

If your system doesn’t support interrupt remapping,
you can allow unsafe interrupts with:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
  • 或者添加驱动黑名单
vi /etc/modprobe.d/pve-blacklist.conf

文件里面添加一行
options vfio_iommu_type1 allow_unsafe_interrupts=1
来启用不安全的中断

之后就可以通过图形化界面执行PCIE设备的直通操作了

参考

  • 10
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
核显、独显和硬盘的步骤。 在Proxmox VE直通网卡、核显、独显和硬盘需要以下步骤: 1. 首先,检查你的网卡是否支持SR-IOV功能,这是虚拟网卡直通的前提。 2. 为了直通核显,你需要先确定是否可以将核显虚拟化成两个,并分别直通给群晖和Windows系统。如果你之前看过一篇文章,但现在找不到了,你可以尝试搜索其他相关的资料。请注意,根据你的描述,你可能需要额外添加一块独立的显卡来实现这个需求。 3. 添加硬件设备需要在添加之后重启虚拟机或者在关机状态下添加之后再开机才能生效。在需要直通的虚拟机中,选择【硬件】-【添加】-【PCI设备】,然后选择你需要直通的硬件设备。请注意,不要直通管理口给虚拟机,否则可能无法进入管理界面。如果后续添加了其他硬件设备,你需要及时调整直通的设备号,因为添加设备后,可能会导致之前的设备号发生变化。 总结: Proxmox VE直通网卡、核显、独显和硬盘的步骤包括检查网卡的SR-IOV支持、通过虚拟化将核显直通给群晖和Windows系统(可能需要额外添加独立显卡)、添加硬件设备并在添加后重启虚拟机或在关机状态下添加后再开机。请注意避免直通管理口给虚拟机,以免无法进入管理界面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [proxmox服务器网卡直通和SR-IOV](https://download.csdn.net/download/jjm1234/12004778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [小白的proxmox vepve)打造AIO(all in boom)折腾日记 (四)硬件(显卡、硬盘、网卡直通](https://blog.csdn.net/m0_59885919/article/details/129308054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值