下午好🌅🌅🌅
本答案参考通义千问
在您提供的环境中,Kunpeng 920 CPU 搭配 Mellanox MT27710(ConnectX-4 Lx)网卡,使用 ibdev2netdev 工具查看 InfiniBand 设备与 Linux 网络接口的映射关系时,出现了异常情况。正常情况下,mlx5_bond_0 应该映射到 bond0,但在异常情况下,它却映射到了 eth6。
问题分析
1. 异常现象描述
-
正常情况:
mlx5_0 port 1 ==> enp2s0f0np0 (Down)
mlx5_1 port 1 ==> enp2s0f1np1 (Down)
mlx5_bond_0 port 1 ==> bond0 (Up)
-
异常情况:
mlx5_0 port 1 ==> enp2s0f0np0 (Down)
mlx5_1 port 1 ==> enp2s0f1np1 (Down)
mlx5_bond_0 port 1 ==> eth6 (Up)
关键差异:
mlx5_bond_0 映射的网络接口从 bond0 变成了 eth6,这可能是由于以下原因之一:
可能原因
-
内核驱动或固件不兼容
- Kunpeng 920 是 ARM 架构 CPU,而 Mellanox 的驱动(如
mlx5_core)主要为 x86 优化。 - 如果驱动版本过旧或未适配 Kunpeng 平台,可能导致设备映射异常。
-
网桥或 bonding 配置错误
mlx5_bond_0 是一个虚拟的 InfiniBand 接口,通常通过 mlx5_ib 或 mlx5_core 驱动创建。- 如果系统中存在多个
mlx5 接口,可能会出现映射冲突。
-
ibdev2netdev 工具配置或版本问题
- 该工具依赖于
libibverbs 和 libmlx5 等库。 - 如果这些库版本不一致或损坏,可能导致映射错误。
-
系统重启或配置文件变更
- 在系统重启后,某些配置未正确加载,导致设备映射混乱。
解决方案
第一步:检查驱动和固件版本
1. 查看 mlx5 驱动版本
modinfo mlx5_core
2. 查看 Mellanox 固件版本
sudo ibv_devinfo
3. 查看 libibverbs 版本
ldconfig -p | grep libibverbs
建议升级到最新版本的 Mellanox 驱动(如 MLNX_OFED)以适配 Kunpeng 平台。
第二步:确认网络接口绑定状态
1. 查看当前 bonding 状态
cat /proc/net/bonding/bond0
2. 检查是否有多余的 mlx5 接口被误绑定
ip link show
3. 检查是否有重复的网络接口名称
ls /sys/class/net/
第三步:修复 ibdev2netdev 映射关系
1. 手动设置映射关系(临时)
sudo ibdev2netdev mlx5_bond_0 port 1 enp2s0f0np0
sudo ibdev2netdev mlx5_bond_0 port 1 enp2s0f1np1
注意:此操作仅用于调试,重启后失效。
2. 修改 /etc/udev/rules.d/ 中的规则文件(持久化)
sudo nano /etc/udev/rules.d/80-mlx5.rules
添加以下内容(根据您的设备 ID 调整):
SUBSYSTEM=="infiniband", KERNEL=="mlx5_0", NAME="mlx5_0"
SUBSYSTEM=="infiniband", KERNEL=="mlx5_1", NAME="mlx5_1"
SUBSYSTEM=="infiniband", KERNEL=="mlx5_bond_0", NAME="mlx5_bond_0"
然后重新加载 udev 规则:
sudo udevadm trigger
sudo udevadm settle
第四步:修改 mlx5_bond_0 映射到 bond0
如果发现 mlx5_bond_0 映射到 eth6,可以尝试手动绑定:
1. 停止当前绑定
sudo ip link set eth6 down
2. 将 mlx5_bond_0 绑定到 bond0
sudo ibdev2netdev mlx5_bond_0 port 1 bond0
注意: bond0 必须是已经配置好的 bonding 接口。
第五步:检查并修复网络配置文件
确保 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/ 中没有错误配置。
例如,在 Ubuntu 中:
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
slaves enp2s0f0np0 enp2s0f1np1
总结
| 步骤 | 内容 |
|------|------|
| 1 | 检查驱动和固件版本,确保兼容性 |
| 2 | 确认网络接口绑定状态,排查冲突 |
| 3 | 使用 ibdev2netdev 手动修复映射关系 |
| 4 | 修改 udev 规则,实现持久化绑定 |
| 5 | 检查网络配置文件,确保无误 |
推荐操作流程(重点)
- 升级 Mellanox 驱动到最新版本(支持 Kunpeng 920)
- 检查并修正
mlx5_bond_0 到 bond0 的映射 - 验证
ibdev2netdev 映射是否稳定 - 重启系统后再次检查映射关系
附录:修改后的示例配置(适用于 bonding)
# /etc/network/interfaces
auto enp2s0f0np0
iface enp2s0f0np0 inet manual
auto enp2s0f1np1
iface enp2s0f1np1 inet manual
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
slaves enp2s0f0np0 enp2s0f1np1
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
如果您能提供具体的日志信息(如 /var/log/messages 或 dmesg),我可以进一步帮助您定位问题根源。