Esxi插入新的Pci设备,导致直通设备改变

本文记录了一次在ESXi环境下安装PCI无线网卡后出现的网络管理问题及解决过程。由于PCI地址变动,原本的管理口被错误地设置为直通口,导致无法访问Web管理界面。通过调整直通的PCI通道解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Esxi 网卡直通的坑

省流请到文章末尾的总结。

前阵子买了个N5105 突发奇想打算给OpenWrt装一个Pci无线网卡。但装后发现Web管理界面上不去了,OpenWrt网络管理功能也全失效了。插显示器发现管理口从eth0 变成了etc3 口。拔掉Pci 网卡后又好了,管理口也变回了eth0口。

环境介绍

N5105 小主机,I225-V网卡,4网口,Esxi 8 系统。eth0 做管理口;eth1,eth2,eth3 直通给OpenWrt 。

其中 eth0 ,eth1,eth2 在OpenWrt中定义为Lan口,eth3 为Wan 口。

各网口Pci地址如下

0000:02:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V  #eth0
0000:03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth1(直通
0000:04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth2(直通
0000:05:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth3(直通

故障定位

连显示器进后台,

先用 lspci命令查看一下各网口的Mac地址和pci通道

插pci网卡之前

[root@localhost:~] lspci
0000:01:00.0 Non-Volatile memory controller: ****** Corporation NVMe SSD 		#固态硬盘
0000:02:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V  #eth0
0000:03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth1(直通
0000:04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth2(直通
0000:05:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth3(直通

插pci网卡之后

[root@localhost:~] lspci
0000:01:00.0 Non-Volatile memory controller: ****** Corporation NVMe SSD		#固态硬盘
0000:02:00.0 Network controller: MEDIATEK Corp. MT7921 802.11ax PCI Express Wireless Network Adapter																#Pci网卡
0000:03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V  #eth0
0000:04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth1
0000:05:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth2
0000:06:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth3

注意看前面的PCI地址 0000:02:00.0 ,新加的Pci无线网卡 MT7921 ,把原本属于eth0的 0000:02:00.0 地址占用了,导致有线网卡的Pci地址全后移了一位。

故障分析

因为 Esxi 是根据Pci地址进行直通,再插入前 我直通了eth1,eth2,eth3 三个网口,直通pci地址为:0000:03:00.0 0000:04:00.00000:05:00.0

插入之后由于Pci 地址发生了变化,导致

0000:03:00.0 从eth1 变成了eth0,
0000:04:00.0 从eth2 变成了eth3,
0000:04:00.0 从eth3 变成了eth4。

所以直通的网口变成了:eth0,eth1,eth2。如下所示:

0000:02:00.0 Network controller: MEDIATEK Corp. MT7921 802.11ax PCI Express Wireless Network Adapter																#Pci网卡
0000:03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V  #eth0(直通
0000:04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth1(直通
0000:05:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth2(直通
0000:06:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V	#eth3

eth0 变成了直通口,eth3变成了不直通的口,因为此时只有eth3没有直通,所以eth3变成了管理口。所以导致连不上管理界面。此时OpenWrt里的网口也乱了。然后就出现了后面的问题。至此问题以及分析完毕。

解决方案

方案一:通过命令改变直通的Pci 通道。

方案二:拔掉网卡,在Web后台更改直通设置后插入。

方案一具体实现步骤:

在Esxi 最开始界面按F1+alt就能进入控制台。通过以下命令控制直通Pci通道

esxcli hardware pci pcipassthru set -d <网卡的PCIE地址> -e TRUE  	#直通改网口
esxcli hardware pci pcipassthru set -d <网卡的PCIE地址> -e FALSE		#不直通改网口

在我的案例里 我需要输入

esxcli hardware pci pcipassthru set -d 0000:02:00.0 -e TRUE 	#直通无线网卡
esxcli hardware pci pcipassthru set -d 0000:03:00.0 -e FALSE	#不直通eth0口,作为esxi管理口
esxcli hardware pci pcipassthru set -d 0000:06:00.0 -e TRUE		#直通eth3口

然后再进入OpenWrt把网口该对就行了

补充

物理网口的mac地址是固定的,可以通过mac地址来判断 pci地址对应的是哪个物理网卡

使用命令,可以看到网口mac地址和pci地址。但是只能看到没直通的网口。

esxcli network nic list

esxi快捷键

ALT+F1 = 切换到控制台。
ALT+F2 = 切换到 DCUI。
ALT+F11 = 返回横幅屏幕。
ALT+F12 = 在控制台上显示 VMkernel 日志。

总结

因为 Esxi 是根据Pci地址进行直通,插入Pci无线网卡后,各设备的Pci地址发生了变动。导致直通的设备发生了改变,原先的管理口被直通了。根据新的Pci地址重新设直通的网口就行了。

参考文章

https://www.elliot98.top/post/tech/esxi-passthrough/

### ESXi 中配置 PCI 设备直通 在 VMware vSphere 环境下,通过 ESXi 主机可以实现物理 PCI 设备向虚拟机的直接传递 (Passthrough),这通常用于高性能需求的应用场景。以下是关于如何配置这一功能的具体说明。 #### 启用 IOMMU 支持 为了使 PCI Passthrough 功能正常工作,在 BIOS/UEFI 设置中启用 Intel VT-d 或 AMD-Vi 技术是必要的[^1]。这些技术提供了输入输出内存管理单元(IOMMU)的支持,允许操作系统区分不同设备的数据流,从而确保安全性和稳定性。 #### 配置 ESXi 主机 一旦确认硬件支持并启用了相应的选项,则需登录到 vSphere Client 并按照如下操作: - 导航至目标 ESXi 主机; - 进入 **Configuration** -> **Advanced Settings** 页面; - 修改 `DirectPathIO` 下的相关参数来调整分配给特定 VM 的资源策略; 对于具体的 PCI 地址识别与映射,可利用命令行工具如 `lspci` 来获取所需信息。例如,执行该指令后可以获得类似下面的结果: ```bash 00:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 0a) ``` 这里的 "00:07.0" 即表示总线(bus):槽(slot).函数(function),对应于 XML 定义中的 `<address>` 节点属性值[^2]。 #### 创建和编辑虚拟机规格 当准备就绪之后,创建一个新的虚拟机或修改现有实例时,请注意以下几点: - 添加新硬件项选择 “PCI Device”,接着指定要透传的实际外设; - 如果涉及到网络接口卡(NIC),则可能还需要定义 MAC 地址以及 Virtual Port 类型等附加细节; 示例性的 XML 片段展示了怎样描述这样一个 NIC 的配置情况: ```xml <interface type='hostdev' managed='yes'> <driver name='vfio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> <mac address='52:54:00:6d:90:02'/> <virtualport type='802.1Qbh'> <parameters profileid='finance'/> </virtualport> </interface> ``` 完成上述步骤后保存更改并将新的设定应用到运行环境中去测试效果即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xzatebur

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值