3. 第3章
03 固件更新:mlxup工具烧录网卡固件与恢复出厂配置
掌握固件更新在固件更新中的定位、故障信号与验证顺序。
固件异常定位与恢复目标:从Observe到Fix
恢复验证卡
把失败停在哪一步说清,而不是只写“运行异常”。
核对资源、版本、权限和时序是否满足。
每次只改一个点,避免把真正原因盖住。
把通过、失败和待复查结果分开记录。
概念块:固件更新
固件更新用固件更新、mlxup工具烧录网卡固件、恢复出厂配置连接到固件更新的调试、验证和交付动作。
- 固件更新
- mlxup工具烧录网卡固件
- 恢复出厂配置
- 学习使用mlxup在线
固件更新要确认的对象和结果
在数据中心运维中,网卡固件损坏或版本不匹配是导致链路中断、性能降级(例如无法协商到预期的 5g 速率)的常见根因。本节的核心意图是建立一套可复现的固件故障处理流程:从现象观察(Observe)到问题定位(Locate),再到触发修复动作(Fix/Recover)。你将掌握使用 mlxup 工具在在线(Online)与离线(Offline)两种模式下完成固件烧录,并学会在固件完全损坏时通过恢复出厂配置(Factory Defaults)让网卡重新可识别
整个流程的触发器(Trigger)通常是网卡指示灯异常、系统日志(dmesg)报错或 ibstat/ethtool 命令无法获取设备信息。我们的目标是将网卡从“不可用”或“异常”状态,通过固件操作恢复到“可用”且“配置正确”的状态
在开始任何固件操作前,务必执行 mlxup --query 命令,记录当前固件版本(PSID 和 FW Version)。这是后续判断升级是否成功、是否需要恢复出厂配置的唯一基线
固件更新的对象步骤与验收点
固件更新落地前要同时核对固件更新的mlxup工具烧录网卡固件、失败路径和恢复出厂配置。
mlxup 是 Mellanox 官方提供的固件管理工具,它通过读取网卡上的固件存储区(Flash)来执行写入操作。其核心机制分为两种路径:
- 在线升级(Online Update):在操作系统正常运行、网卡驱动已加载的情况下执行。工具会尝试卸载驱动(
mlxup -d或自动处理),写入新固件,然后重新加载驱动。此方式适用于固件未损坏、仅需版本升级的场景 - 离线恢复(Offline Recovery):当固件损坏导致网卡无法被驱动识别时,需使用
mlxup --image指定固件镜像文件,并配合--force参数强制烧录。此操作通常在系统启动早期或使用专用恢复环境(如 UEFI Shell 或 Linux Live CD)下进行
恢复出厂配置(Factory Defaults)是修复过程中的关键检查点。它并非简单的“重置”,而是将网卡上的非易失性存储(如 NVData 区域)恢复到出厂状态,清除错误的配置参数(如错误的速率协商策略、错误的端口配置)。执行命令为:mlxup --reset 或 mlxconfig -d /dev/mst/mt4123_pciconf0 reset(需根据实际设备路径调整)
真实项目场景
某数据中心一台服务器在更换光模块后,网卡无法协商到 25G,始终降级到 1G。执行 ethtool eth0 发现速率异常,dmesg 日志显示“Link not ready”。通过 mlxup --query 发现固件版本过旧,且 PSID 与当前光模块不兼容。我们执行了在线升级,但升级后问题依旧。随后执行 mlxup --reset 恢复出厂配置,再次重启后,网卡成功协商到 25G。此案例说明:固件版本和配置参数(NVData)都可能成为故障的触发器(Trigger),恢复出厂配置是 Locate 到配置问题后的关键 Fix 动作
固件更新的技术资产与验证方式
图表解读:对应正文“技术资产与验证记录:固件操作命令集与排障表”。这张图以最终 Mermaid 图中的真实节点为准,先看“固件更新:mlxup工具烧录网卡固件与恢复出厂配置”的主链。读图顺序:现场 / 设备侧 → Fix/Recover → Trigger Fix → dev/mst/mt4123 pciconf0 → image fw-ConnectX5-25G → 网络 / 平台侧
节点说明:【TriggerFix节点】表示Trigger Fix 是“固件更新:mlxup工具烧录网卡固件与恢复出厂配置”图中的关键对象,下一步通过“指向”连接到 dev/mst/mt4123 pciconf0,标出该节点在主线中的位置;检查重点:相关操作、判断条件或常见问题。
以下命令片段是本节的核心技术资产,涵盖了从查询到强制恢复的完整操作链。请在实际环境中根据设备路径(/dev/mst/*)调整
# 1. 查询当前固件状态(Observe & Locate)
mlxup --query
# 2. 在线升级固件(Trigger Fix)
mlxup -d /dev/mst/mt4123_pciconf0 -i fw-ConnectX5-25G.bin
# 3. 离线强制烧录(当网卡不可见时,需在恢复环境执行)
mlxup --image fw-ConnectX5-25G.bin --force
# 4. 恢复出厂配置(Fix/Recover)
mlxup --reset -d /dev/mst/mt4123_pciconf0
# 5. 验证固件版本与配置(Verify)
mlxup --query
mlxconfig -d /dev/mst/mt4123_pciconf0 query | grep -i "speed\|rate"阅读这段代码时,重点看固件更新的伪代码,以及它如何用稳定性与可观测性证明结果可复测。
命令解释--query 用于定位当前固件版本和 PSID;-i 指定固件镜像文件;--force 跳过校验,用于损坏恢复;--reset 是恢复出厂配置的唯一入口;最后的 mlxconfig query 用于验证配置参数是否已重置为默认值,例如确认速率协商策略未被锁定
为了系统化地排查固件相关故障,请参考以下排障表。该表将现象、可能原因、检查位置和修复动作串联起来,形成完整的定位路径
| 现象 | 可能原因 | 检查位置 | 修复动作 |
|---|---|---|---|
| 网卡无法被系统识别( lspci 无 Mellanox… | 固件完全损坏或 Flash 校验失败 | 系统启动日志( dmesg | grep -i mlx… | 使用 mlxup --image --force 离线… |
| 链路无法协商到 25G,仅协商到 5g 或 1G | NVData 中速率策略被错误配置,或固件版本与光模块… | mlxconfig query 查看 FORCE_SP… | 执行 mlxup --reset 恢复出厂配置 |
| 在线升级后网卡工作异常 | 升级过程中驱动未正确卸载,或固件镜像与 PSID 不匹配 | mlxup --query 对比升级前后的版本和 PS… | 重新执行在线升级,或回退到上一版本固件 |
恢复出厂配置(mlxup --reset)是解决“配置漂移”类故障的首选动作,而不是重新烧录整个固件。只有当 --reset 无效时,才考虑使用 --force 进行全量固件恢复
问题对照与修正
- 常见偏差:把固件更新直接写进主流程,只验证能跑通,留下固件更新边界、状态和验证口径不清。
- 修正做法:把固件更新收敛成稳定接口,明确伪代码和失败返回。
- 复核方式:构造一个异常输入或超时场景,用日志、断言和稳定性与可观测性证明修复有效。
何时停止操作并寻求替代方案的异常信号与处理步骤
固件操作具有不可逆性,错误的操作可能导致网卡永久失效。以下是必须遵守的风险边界与判断标准:
- PSID 一致性:固件镜像文件的 PSID 必须与网卡标签或
mlxup --query输出的 PSID 完全一致。强行烧录不匹配的固件会导致网卡变砖。这是第一道检查标准 - 电源与连接:在离线烧录过程中,严禁断开网卡电源或 PCIe 连接。任何中断都会导致 Flash 写入失败,使固件损坏。建议使用 UPS 或确保服务器处于稳定供电环境
- 回滚准备:在执行升级前,必须通过
mlxup --query记录当前固件版本,并保存一份当前版本的固件镜像文件。如果升级后出现异常,应能立即回滚到旧版本 - 判断标准表:当出现以下情况时,应停止当前操作并寻求厂商支持:
- 连续两次
mlxup --force烧录后,网卡仍无法被lspci识别 - 恢复出厂配置后,网卡 MAC 地址变为全零或无效值
- 工具提示“Flash Lock Failed”或“Device Not in Update Mode”
- 连续两次
不要混淆“恢复出厂配置”与“格式化 Flash”。mlxup --reset 只重置配置区域,不会清除固件引导区。错误地使用 mlxup --delete 或第三方工具擦除整个 Flash 是导致网卡变砖的主要原因
最后,验证动作是闭环的关键。完成固件更新或恢复后,必须执行 mlxup --query 确认固件版本已变更,并使用 ethtool eth0 确认链路状态和协商速率(如 25G)。同时,检查 dmesg 日志中是否有新的错误信息。只有所有检查点通过,才能判定本次固件操作成功
固件更新先对齐现场任务、输入材料和输出结果,再回到固件更新的细节逐项核对。
固件更新的主要风险来自固件更新边界、状态和验证口径不清;落地前必须核对伪代码,并确认例外场景和结果记录。
样例套用检查
把固件更新整理成一次样例或工具使用核对。用 18 分钟核对使用顺序、替换位置和输出物: