4. 第4章
04 Mellanox网卡固件烧录:使用mlxburn工具更新固件版本
掌握Mellanox网卡固件烧录在Mellanox网卡固件烧录中的定位、故障信号与验证顺序。
固件版本冲突定位与烧录目标确认
现场定位记录
- 对象/模块:典型技术应用现场里的Mellanox网卡固件烧录
- 问题现象:典型技术应用现场里Mellanox网卡固件烧录一开始改动很快,输入需求增加后日志记录显示状态外泄、循环依赖和接口膨胀。
- 验证动作:先把职责边界、私有状态、依赖方向、阈值标准和验证入口画清,再执行拆分动作。
- 工程判断:前后变化点能被隔离、被验证、被替换,才说明架构重构达到标准。
Mellanox网卡固件烧录落地前要同时核对Mellanox网卡固件烧录的使用mlxburn工具更新固件版本、失败路径和解决版本不匹配问题。
概念块:Mellanox网卡固件烧录
Mellanox网卡固件烧录用Mellanox网卡固件烧录、使用mlxburn工具更新固件版本、解决版本不匹配问题连接到Mellanox网卡固件烧录的调试、验证和交付动作。
- Mellanox网卡固件烧录
- 使用mlxburn工具更新固件版本
- 解决版本不匹配问题
- 模块
Mellanox网卡固件烧录要确认的对象和结果
在 ESXi 主机识别 Mellanox 网卡的过程中,最常见的阻断并非驱动缺失,而是固件(Firmware)版本与驱动或系统内核不匹配。当执行 lspci -vvv 或 esxcli network nic list 发现网卡状态为“Unknown”或“Unsupported”,且系统日志(/var/log/vmkernel)提示“Firmware version mismatch”时,基本可以判定需要手动更新固件
本节的核心目标是:在 Linux 环境下,使用 Mellanox 官方提供的 mlxburn 工具,将目标网卡的固件烧录至与 ESXi 驱动版本兼容的固件版本。操作对象是 Mellanox ConnectX-4/5/6 系列网卡,主链路为“获取固件镜像 → 准备 Linux 环境 → 执行烧录 → 验证版本”
不要试图在 ESXi 环境下直接烧录固件。ESXi 的 vmklinux 用户态工具链不完整,且缺少必要的 libibverbs 和 sysfs 接口。必须使用一个独立的 Linux 发行版(如 CentOS 7/8 或 Ubuntu 20.04/22.04)作为烧录环境
烧录环境搭建与工具链准备
首先,需要准备一台安装了 Linux 发行版(Linux Distribution)的服务器或虚拟机。推荐使用 CentOS 7.9 或 Ubuntu 22.04 LTS,因为它们对 Mellanox 固件工具链的支持最稳定。确保该 Linux 服务器能够通过 SSH(Secure Shell)远程访问,以便后续操作
关键步骤包括:
- 安装依赖包:在 Linux 终端执行
yum install -y pciutils libibverbs libibverbs-utils(CentOS)或apt install -y pciutils libibverbs1 ibverbs-utils(Ubuntu)。libibverbs库是 Mellanox 工具与网卡固件交互的底层接口 - 下载 mlxburn 工具:从 NVIDIA 官方固件仓库(Firmware Archive)获取与网卡型号匹配的固件包。例如,对于 ConnectX-5,下载
fw-ConnectX5-xxx.bin和mlxburn-xxx.tar.gz。解压后,将mlxburn二进制文件复制到/usr/local/bin - 确认网卡设备:运行
lspci | grep Mellanox记录网卡的 PCIe 地址(如0000:03:00.0)。这是后续烧录命令中必须指定的目标
在烧录前,务必使用 mlxburn -d 0000:03:00.0 -query 查询当前固件版本。记录输出的 PSID(Product Serial ID)和 FW Version。PSID 决定了你只能烧录与该 ID 匹配的固件镜像,否则会导致网卡变砖
核心烧录流程与参数解析
烧录命令的核心语法如下。以下是一个针对 ConnectX-5 网卡的实际命令示例:
# 停止所有与网卡相关的网络服务,避免烧录时驱动占用
systemctl stop network
# 卸载内核驱动模块
modprobe -r 核心 mlx5_ib
# 执行烧录
mlxburn -d 0000:03:00.0 -fw fw-ConnectX5-xx_yy_zz.bin -psid MT_0000000001 -w 4 -y
# 参数说明:
# -d : 目标网卡的 PCIe 地址
# -fw : 固件镜像文件路径
# -psid: 网卡的 PSID,必须与 -query 输出一致
# -w : 烧录等待时间(秒),4 秒通常足够
# -y : 跳过确认提示阅读这段代码时,重点看Mellanox网卡固件烧录的伪代码,以及它如何用稳定性与可观测性证明结果可复测。
执行后,终端会输出烧录进度。关键信号是看到 Burning FS3 image... Done 和 Status: OK。如果出现 Error: PSID mismatch,说明你下载的固件镜像与当前网卡硬件不匹配,需要重新从 NVIDIA 固件库下载对应 PSID 的镜像
烧录后的验证与驱动重载
烧录完成后,必须重启服务器或重新加载驱动才能生效。推荐执行完整重启:
# 重新加载驱动
modprobe 核心 mlx5_ib
# 再次查询固件版本
mlxburn -d 0000:03:00.0 -query阅读这段代码时,重点看Mellanox网卡固件烧录的伪代码,以及它如何用稳定性与可观测性证明结果可复测。
确认输出的 FW Version 已更新为目标版本。随后,将网卡插回 ESXi 主机,在 ESXi 的 /var/log/vmkernel 中应能看到 核心: firmware version: xx.yy.zz 的日志,且 esxcli network nic list 中网卡状态变为 Up
真实项目场景
在一次数据中心扩容中,运维团队将一批 Mellanox ConnectX-5 网卡从旧服务器迁移到新采购的 Dell R750 服务器上。ESXi 8.0 无法识别网卡,vmkernel 日志报错“Firmware version 16.27.xxxx is not supported by driver 23.10”。通过本节方法,在 CentOS 7.9 环境中使用 mlxburn 将固件从 16.27 降级至 16.32(与 ESXi 8.0 内置驱动兼容),重启后网卡正常识别,业务流量恢复
问题对照与修正
- 常见偏差:把Mellanox网卡固件烧录直接写进主流程,只验证能跑通,留下Mellanox网卡固件烧录边界、状态和验证口径不清。
- 修正做法:把Mellanox网卡固件烧录收敛成稳定接口,明确伪代码和失败返回。
- 复核方式:构造一个异常输入或超时场景,用日志、断言和稳定性与可观测性证明修复有效。
风险边界与固件烧录判断标准
固件烧录属于高风险操作,必须建立明确的判断标准与回滚预案。下表总结了烧录过程中的关键风险点与应对措施:
| 风险点 | 触发条件 | 影响 | 预防措施 |
|---|---|---|---|
| PSID 不匹配 | 使用错误的 -psid 参数 | 烧录失败,网卡进入恢复模式 | 烧录前必须执行 -query 确认 PSID |
| 电源中断 | 烧录过程中服务器断电或 SSH 断连 | 固件损坏,网卡无法初始化 | 使用 UPS 供电,通过带外管理(iLO/iDRAC)… |
| 驱动未卸载 | 未执行 modprobe -r | 烧录工具无法获取网卡控制权,报“Device busy” | 烧录前执行 systemctl stop networ… |
不要认为固件版本越高越好。ESXi 的驱动版本与固件版本有严格的兼容性矩阵。例如,ESXi 7.0 U3 内置的 核心 驱动仅支持固件 16.32.xxxx 及以下版本。盲目升级到 16.35 会导致网卡无法被驱动加载。务必参考 VMware 的硬件兼容性列表(HCL)或 NVIDIA 的固件发行说明
最后,建议将烧录成功的固件镜像、PSID 和对应 ESXi 版本记录到运维资产清单中。当后续进行 ESXi 大版本升级时,可以快速判断是否需要同步更新网卡固件,避免因版本不匹配导致的业务中断
Mellanox网卡固件烧录先对齐现场任务、输入材料和输出结果,再回到Mellanox网卡固件烧录的细节逐项核对。
Mellanox网卡固件烧录的主要风险来自Mellanox网卡固件烧录边界、状态和验证口径不清;落地前必须核对伪代码,并确认例外场景和结果记录。
本节资料使用说明
Mellanox网卡固件烧录里最先使用的工具、样例或资料是哪一个?
替换Mellanox网卡固件烧录时,哪些位置可以改,哪些位置要保留?
输出物检查时,最不能漏掉哪一项?
如果换一套素材,使用顺序要不要调整?