5、openEuler上Mellanox(迈洛思)网卡Bond无法聚合问题排查
前言
最近在部署 Ceph 集群时,遇到一个比较典型但又容易误判的问题:openEuler 系统上,Intel 网卡做 Bond 正常,但 Mellanox 网卡做 Bond 后无法正常聚合,业务网和后端网都不通。最终通过升级 Mellanox 网卡固件并同步升级 OFED 驱动后,问题得到解决。
这篇文章记录一下完整的排查和处理过程,供类似场景参考。
一、检查固件版本
先确认网卡型号:
[root@localhost mft-4.26.1-3-x86_64-rpm]# lspci | grep -i net
输出中可以看到两张 Mellanox 双口卡:
0000:18:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
0000:18:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
0000:3d:00.0 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (rev 09)
0000:3d:00.1 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (rev 09)
0000:86:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
0000:86:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
通过 devlink 查看固件版本:
[root@localhost mft-4.26.1-3-x86_64-rpm]# devlink dev info pci/0000:18:00.0
[root@localhost mft-4.26.1-3-x86_64-rpm]# devlink dev info pci/0000:86:00.0
结果显示两张 Mellanox 网卡当前运行固件版本均为:
fw.psid H3C0010110034
fw.version 14.27.4062
现场准备的软件包为:
- 固件包:fw-nic-mellanox-H3C-CX4(14.32.1010).zip
- 驱动包:driver-nic-mellanox-MLNX-OFED-23.10-1.1.9.0 openEuler 22.03 LTS for x86_64.zip
我们的服务是华三的,固件也用华三提供的,如果你也是这种情况最好不要直接用 Mellanox 官网的
https://www.h3c.com/cn/BizPortal/DownLoadAccessory/DownLoadAccessoryFilt.aspx
二、升级 Mellanox 固件
2.1 安装 MFT 工具
先解压 Mellanox 固件工具包并安装 MFT:
[root@localhost ~]# ls
'driver-nic-mellanox-MLNX-OFED-23.10-1.1.9.0 openEuler 22.03 LTS for x86_64.zip' 'fw-nic-mellanox-H3C-CX4(14.32.1010).zip'
[root@localhost ~]# unzip fw-nic-mellanox-H3C-CX4\(14.32.1010\).zip
[root@localhost ~]# cd /root/fw/tools/linux_x64
[root@localhost linux_x64]# tar -xf mft-4.26.1-3-x86_64-rpm.tgz
[root@localhost linux_x64]# cd mft-4.26.1-3-x86_64-rpm/
[root@localhost mft-4.26.1-3-x86_64-rpm]# ./install.sh
-E- There are missing packages that are required for installation of MFT.
-I- You can install missing packages using: yum install rpm-build kernel-devel-5.10.0-216.0.0.115.oe2203sp4.x86_64
首次安装时提示缺少依赖:
[root@localhost linux_x64]# yum install rpm-build kernel-devel-5.10.0-216.0.0.115.oe2203sp4.x86_64
补齐依赖后重新安装:
[root@localhost mft-4.26.1-3-x86_64-rpm]# ./install.sh
-I- Removing any old MFT file if exists...
-I- Building the MFT kernel binary RPM...
-I- Installing the MFT RPMs...
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:kernel-mft-4.26.1-5.10.0_216.0.0.################################# [100%]
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:mft-4.26.1-3 ################################# [100%]
-I- In order to start mst, please run "mst start".
安装完成后启动 mst:
[root@localhost mft-4.26.1-3-x86_64-rpm]# mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices
Unloading MST PCI module (unused) - Success
2.2 升级固件
lspci命令可以看网卡 PCI 域(Domain) 编号,0000:18:00.0 和 0000:18:00.1 是通一张网卡,选其中一个升级就行,0000:86:00.0 和 0000:86:00.1也是同一张网卡,也是选其中一个升级就行了。
[root@localhost ~]# lspci | grep -i net
0000:18:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
0000:18:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
0000:3d:00.0 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (rev 09)
0000:3d:00.1 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (rev 09)
0000:86:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
0000:86:00.1 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
可以看到多个 .bin 固件文件。然后使用 mlxfwmanager 检查并升级:
[root@localhost ~]# cd /root/fw/
[root@localhost fw]# unzip fw.zip
[root@localhost fw]# ls
fw.zip RS4NXP2A0314.32.1010_NIC-ETH540F-3S-2P.bin
RS3N25GP2A0114.32.1010_NIC-620F-B2-25Gb-2P.bin RS4NXP2LP0114.32.1010_NIC-ETH540F-LP-2P.bin
RS4N25XP20114.32.1010_NIC-ETH640F-3S-2P.bin tools
[root@localhost fw]# mlxfwmanager -u -D /root/fw
Querying Mellanox devices firmware ...
Device #1:
----------
Device Type: ConnectX4LX
Part Number: H3C_RS33N25GP2A_CX4LX_2P_25G_Ax
Description: H3C RS33N25GP2A ConnectX-4 Lx 25GigE dual-port SFP+; NCSI; PCIe3.0 x8 8GTs
PSID: H3C0010110034
PCI Device Name: /dev/mst/mt4117_pciconf1
Base MAC: 380423000001
Versions: Current Available
FW 14.27.4062 14.32.1010
PXE 3.5.0903 3.6.0502
UEFI 14.20.0025 14.25.0017
Status: Update required
---------
Found 1 device(s) requiring firmware update...
Perform FW update? [y/N]: y
Device #1: Updating FW ...
FSMST_INITIALIZE - OK
Writing Boot image component - OK Done
Restart needed for updates to take effect.
这一步先更新到其中一张卡。随后对另一张卡单独指定设备升级:
[root@localhost fw]# mlxfwmanager -u -d 18:00.0 -i /root/fw/RS3N25GP2A0114.32.1010_NIC-620F-B2-25Gb-2P.bin
Querying Mellanox devices firmware ...
Device #1:
----------
Device Type: ConnectX4LX
Part Number: H3C_RS33N25GP2A_CX4LX_2P_25G_Ax
Description: H3C RS33N25GP2A ConnectX-4 Lx 25GigE dual-port SFP+; NCSI; PCIe3.0 x8 8GTs
PSID: H3C0010110034
PCI Device Name: 18:00.0
Base MAC: 380423000001
Versions: Current Available
FW 14.27.4062 14.32.1010
PXE 3.5.0903 3.6.0502
UEFI 14.20.0025 14.25.0017
Status: Update required
---------
Found 1 device(s) requiring firmware update...
Perform FW update? [y/N]: y
Device #1: Updating FW ...
FSMST_INITIALIZE - OK
Writing Boot image component - OK Done
Restart needed for updates to take effect.
升级完成后再次确认:
[root@localhost mft-4.26.1-3-x86_64-rpm]# devlink dev info pci/0000:18:00.0
[root@localhost mft-4.26.1-3-x86_64-rpm]# devlink dev info pci/0000:86:00.0
此时会看到一个很关键的现象:
[root@localhost mft-4.26.1-3-x86_64-rpm]# running fw.version 14.27.4062
[root@localhost mft-4.26.1-3-x86_64-rpm]# stored fw.version 14.32.1010
这说明:
- 新固件已经成功写入 Flash
- 但当前仍在运行旧固件
- 必须重启,或者重新加载设备后,固件升级才会真正生效
这也是很多人容易忽略的一点。
[root@localhost mft-4.26.1-3-x86_64-rpm]# ethtool -i ens3f0np0
driver: mlx5_core
version: 5.10.0-216.0.0.115.oe2203sp4.x8
firmware-version: 14.27.4062 (H3C0010110034)
expansion-rom-version:
bus-info: 0000:18:00.0
三、升级 Mellanox OFED 驱动
仅升级固件还不够,同时升级了 Mellanox OFED 驱动,最好用配套的。
先解压驱动包:
[root@localhost ~]# unzip driver-nic-mellanox-MLNX-OFED-23.10-1.1.9.0\ openEuler\ 22.03\ LTS\ for\ x86_64.zip
[root@localhost ~]# tar -xf MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64.tgz
[root@localhost ~]# cd MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64/
直接安装会报当前内核无匹配驱动包,因此需要增加内核支持:
[root@localhost MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64]# ./mlnxofedinstall --without-fw-update --force --add-kernel-support
安装过程中先后遇到以下依赖缺失:
createrepo
libtool
elfutils-devel
automake
autoconf
tk
fuse-devel
pciutils-devel
可以按提示补齐,或者如果不需要本地生成 repo,可以直接带 --skip-repo
[root@localhost MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64]# yum install libtool elfutils-devel automake autoconf tk fuse-devel pciutils-devel -y
[root@localhost MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64]# ./mlnxofedinstall --without-fw-update --force --add-kernel-support --skip-repo
安装完成后,重启 OFED 服务:
[root@localhost MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64]# /etc/init.d/openibd restart
四、重启并验证
由于前面固件已经处于 stored 状态,此时重启系统是必要步骤:
[root@localhost ~]# reboot
重启后再检查 Bond 速率:
[root@localhost ~]# ethtool bond0 | grep Speed
[root@localhost ~]# ethtool bond1 | grep Speed
[root@localhost ~]# ethtool bond2 | grep Speed
结果恢复正常:
Speed: 20000Mb/s
Speed: 20000Mb/s
Speed: 20000Mb/s
至此,问题解决。
五、根因分析
对于在 openEuler 上部署 Ceph、存储或高性能网络场景的同学,如果遇到 Bond 配置看起来没问题,但 Mellanox 口就是无法正常聚合,建议优先从以下方向排查:
lspci | grep -i net
devlink dev info pci/<BDF>
ethtool -i <nic>
ethtool bondX | grep Speed
如果发现 Mellanox 固件版本较老,或者 stored 与 running 不一致,就要重点考虑固件和驱动的兼容性问题。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)