尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Mellanox网卡MFT工具安装与固件升级实战指南

发布时间:2026/9/28 15:42:38

资讯中心
01
ARTICLE

Mellanox网卡MFT工具安装与固件升级实战指南

Mellanox网卡MFT工具安装与固件升级实战指南
玩Mellanox网卡这些年最让我头疼的其实不是网卡本身而是它的固件管理工具MFT。这玩意儿平时想不起来用一旦需要升级固件、排查端口状态、改网卡配置的时候就绕不开它。更麻烦的是MFT的安装和常规软件不太一样坑不少版本选错、依赖缺失、权限问题随便一个都能卡住半天。这篇文章我就以最新的4.27.0版本为例把从下载到安装再到常用命令的完整流程梳理一遍重点标注那些我踩过的坑希望能帮你少走弯路。如果你手头有Mellanox网卡ConnectX-3、ConnectX-4/5/6/7这些特别是跑在Linux服务器上这篇文章基本就是给你准备的。不管你是刚接触InfiniBand还是已经用了很多年涉及固件更新、设备诊断、配置修改的场景下面的内容都值得收藏一份。1. MFT到底是什么先搞清它在整个运维体系里的位置1.1 MFT不是驱动别把它的功能和网卡驱动混为一谈很多人第一次接触MFT容易犯迷糊以为它是网卡驱动实际上完全不是一回事。MFT全称是Mellanox Firmware Tools后来因为Mellanox被NVIDIA收购官方文档里有时也叫NVIDIA Firmware Tools但大家还是习惯叫MFT。它的定位是直接对网卡固件做读写操作的工具集跟操作系统里的网卡驱动完全是两个层面。打个比方驱动是操作系统和网卡之间的翻译官负责数据包的正常收发而MFT是给网卡「刷机」和「体检」的工具它直接通过PCIe通道访问网卡的内部寄存器读取固件版本、烧录新固件、修改启动配置、检查链路状态。两者的权限层级和操作对象都不一样驱动出问题顶多是网络不通固件操作一旦失误网卡可能直接变砖。理解了这层你就能明白为什么MFT的安装和使用要求这么苛刻——它要直接操作硬件所以对权限、内核模块、系统架构都有严格限制。官方文档里明确要求必须用root权限运行这可不是随便说说的。1.2 MFT工具族里到底包含了哪些成员MFT不是一个单独的小工具而是一整套命令的集合这也是它上手门槛高的原因之一。这里先列个总览后面我会挑几个常用的详细展开。命令名称主要用途使用频率mst管理MST内核模块启动/停止PCI设备访问服务极高flint查询固件版本、备份固件、烧录固件、修改MAC地址等极高mlxup基于脚本的固件查询和升级工具交互式体验更友好高mlxconfig读写网卡固件中的可配置参数比如启动协议、PCIe模式中mlxlink物理链路诊断查询线缆、速率、FEC等状态中mlxreg直接读写硬件寄存器高级调试用低mlxburn从镜像文件生成可烧录固件主要用于工厂灌装低看到这个列表你就明白了MFT的核心价值在于「低层操作」。之前我在生产环境遇到一块ConnectX-5网卡速率协商异常就是靠mlxlink快速定位到是线缆问题而不是端口硬件故障。这种场景下没有MFT排查起来就得靠经验盲猜效率天差地别。2. 下载与版本选择4.27.0版本为什么值得关注2.1 官方下载渠道怎么找注意别走错门MFT的下载渠道这几年来回变过几次最早是在Mellanox官网被NVIDIA收购后迁移到了NVIDIA企业门户。很多老教程还挂着Mellanox的旧链接点进去直接404这是第一个大坑。正确的打开方式是访问NVIDIA官方网络产品页面找到「Software / Firmware Downloads」入口然后选择「NVIDIA Adapters / BlueField / Switch」产品线在筛选里选MFT即可看到最新版本。如果你有账号建议登录后下载否则部分版本可能无法直接下载。另外要注意MFT有不同操作系统的版本Windows、Linux、VMware ESXi都有对应包。绝大多数服务器场景用的是Linux版下面所有实操均以Linux版本为基础展开。2.2 版本号解读为什么4.27.0是当前最稳妥的起点MFT的版本号格式是M.N.K其中M是大版本号N是小版本号K是补丁号。以4.27.0为例4表示当前主版本线27表示功能迭代了27个里程碑0则是该里程碑的初始发布版本。这里有个经验之谈选用MFT版本时尽量选「偶数功能版本且补丁号为0」的版本这类版本通常经过了更多稳定性验证。4.27.0是当前较新的稳定分支有几项实际体验比较明显的提升完整支持ConnectX-7、BlueField-3系列设备的新固件格式修复了在部分ARM平台上运行mst start时内核模块加载失败的问题mlxup脚本新增了断点续升机制升级过程中意外断开后可以恢复到原固件这一点对远程操作特别重要我个人的建议是如果你当前在用的是4.22之前的版本且近期有升级新网卡的需求直接跳到4.27.0即可中间的小版本不需要一个挨一个升。2.3 选择RPM包还是tgz压缩包在Linux环境下的MFT下载页面通常同时提供RPM和tgz两种格式。两者的区别不仅仅是打包方式对比项RPM包tgz包安装方式需要rpm/alien工具解压后直接运行install脚本文件散落位置按系统规范安装默认全部在解压目录内卸载方式rpm -e统一卸载运行uninstall.sh脚本适用系统RHEL/CentOS/Rocky等所有Linux发行版均适用我的建议是优先用tgz包原因很简单MFT卸载时tgz包更干净所有东西集中在一个目录下。RPM包会往系统的bin目录、lib目录里塞很多零散文件一旦你想清理干净很麻烦还容易和后续版本冲突。在Ubuntu这类Debian系系统上RPM包虽然可以用alien转换但多一步转换就多一个出错概率不如直接用官方提供的tgz。3. 安装过程逐步拆解从解压到mst start全流程实操3.1 标准安装流程tgz包为例四步走让你在十分钟内完成MFT 4.27.0的安装。下面的命令我都用通用路径做示例实际操作时替换成你解压后的目录。# 1. 解压下载的tgz包 tar -xvzf mft-4.27.0-xx.tgz # 2. 进入解压目录 cd mft-4.27.0-xx # 3. 执行安装脚本 sudo ./install.sh # 4. 启动MST服务并确认设备可见 sudo mst start sudo mst status如果一切顺利mst status会列出你机器上所有被Mellanox驱动识别的PCI设备你会看到类似这样的输出MST devices: /dev/mst/mt4119_pciconf0.看到这个输出说明MFT已经成功接管了物理设备后面的所有操作才有意义。注意这一步很多新手在这里就卡住了没看到设备就急着用flint结果当然是报错。3.2 常见报错处理权限、内核模块和依赖的坑这次安装4.27.0我踩过的第一个坑是install.sh运行到一半报了个错make is not available或者gcc not found。原因很直接——MFT安装脚本在编译内核模块时需要用到编译工具链如果系统里没有安装gcc、make脚本直接中断。解决办法很简单装依赖# CentOS / Rocky / RHEL sudo yum install -y gcc make kernel-devel # Ubuntu / Debian sudo apt-get install -y gcc make linux-headers-$(uname -r)这里有个容易忽略的点kernel-devel或linux-headers的版本必须和当前内核版本严格一致。之前我在一台Rocky Linux服务器上升级过内核重启后发现MFT用不了了重新跑install.sh也报错最后查下来就是内核版本和headers版本不匹配。检查方法uname -r rpm -q kernel-devel # 看版本是否与uname -r对得上第二个高频报错是Module mst_pci not found。这种情况常见于MFT安装时内核模块编译失败或者系统黑名单里挡住了mst_pci模块加载。处理方式是先手动加载模块sudo modprobe mst_pci如果提示模块不存在说明编译阶段确实出问题了建议把install.sh的日志翻出来看重点看有没有error关键字。另外注意在某些安全加固过的系统里/tmp目录挂了noexec权限安装脚本放临时执行文件时会被拒绝干脆把包解压到/opt或/root下一步到位避开这个隐性问题。3.3 虚拟机环境里的特殊情况如果你的Mellanox网卡是PCIe直通PCI Passthrough到虚拟机的MFT安装和使用的逻辑会有变化。大多数情况下厂商推荐在宿主机上用MFT管理固件因为虚拟机里看到的设备属于直通设备固件操作的控制权可能出现不可预期的情况。我之前在Proxmox VE环境里直通过一张ConnectX-6 LX宿主机上mst status能正常看到设备但虚拟机里怎么也看不到。后来搞清楚原因了直通模式下虚拟机需要加载特定的VFIO驱动而MFT的mst_pci模块无法在同一设备上同时工作。这种场景的解决思路是固件操作一律在宿主机上完成虚拟机的MFT主要用于查看和配置不做烧录操作。4. 固件升级完整实战备份、烧录、验证一条龙4.1 升级前的状态检查不能省很多人拿到MFT就想直接刷固件这心态可以理解但升级固件之前的状态检查绝对不能省。我个人的习惯是先做三项必查项目当前固件版本、设备PSID、当前网卡配置文件。查询当前固件版本和信息sudo flint -d /dev/mst/mt4119_pciconf0 q输出中会有几个关键字段比如Device ID设备型号编号PSID产品特定标识FW Version当前固件版本FW Release Date固件发布日期这里特别要记住PSID后面选择固件镜像时靠它来匹配。PSID匹配错了轻则固件刷不进去重则固件和硬件不兼容直接导致设备无法使用。4.2 备份固化固件与配置我踩过的教训固件备份是我反复强调的一点因为曾经有一次刷固件翻车就是靠备份救回来的。那次是在一个BaseT接口的ConnectX-4 Lx上刷固件刷到一半网络中断了重连后显示设备状态异常赶紧用备份恢复了有惊无险。自那以后不管刷什么固件备份命令必定先执行。备份的步骤很简单两条命令# q是查询先拿到设备的固件信息和PSID sudo flint -d /dev/mst/mt4119_pciconf0 q # 用dc参数备份固件到当前目录文件名自己定义 sudo flint -d /dev/mst/mt4119_pciconf0 dc mft_backup.mlnx备份文件一定要保存到安全的地方别放在要升级的服务器上因为万一系统崩溃了备份文件也跟着没了。我习惯把固件备份拷到另一个存储上和待刷的固件镜像放在同一个目录方便对比查看。4.3 用flint烧录固件的完整过程拿到固件镜像通常是一个后缀为.bin的文件并且确认PSID匹配后烧录操作就比较简单了。sudo flint -d /dev/mst/mt4119_pciconf0 -i fw-ConnectX5-rel-16_34_1000.bin b这里最关键的是b参数它是burn的缩写表示烧录。烧录过程中会有进度条耗时通常在1到3分钟之间具体看固件镜像大小。期间不要断电、不要重启、不要跑其他占用大量PCIe带宽的任务否则失败风险大增。等待烧录完成后输出会提示Verifying...然后是Done。到了这一步还不算完建议执行sudo mst reset来让新固件生效或者在业务允许的前提下直接重启服务器。需要注意的是mst reset命令会重置网卡所有经过该网卡的通信都会暂时中断生产环境操作前一定要确认维护窗口和业务影响。4.4 升级后如何确认结果固件烧录完成后最重要的一步就是验证。我常用的验证命令是sudo flint -d /dev/mst/mt4119_pciconf0 q查看FW Version是否和烧录的镜像版本一致同时对比PSID是否还保持原样。这里有个容易忽略的细节有些固件升级成功后网卡的SRIOV配置、启动协议等参数会被重置为默认值。所以我在升级完成后还会顺手查一下mlxconfig的当前配置sudo mlxconfig -d /dev/mst/mt4119_pciconf0 q如果发现有重要配置被重置可以用mlxconfig手动恢复。这也是一个实战经验——之前帮朋友升级固件后他网卡原来配好的PXE启动配置丢了排查了好久才发现是固件更新导致的而不是配置脚本的问题。5. 常用命令解析mst、flint、mlxconfig、mlxlink的实战用法5.1 mst所有MFT操作的地基mst命令在MFT里很特殊它本身不做固件级的操作但所有固件操作都建立在它启动的MST模块之上。因此它也往往是你执行的第一个命令。三个最常用的操作# 启动MST加载必要的内核模块 sudo mst start # 查看当前所有可见的Mellanox设备 sudo mst status # 列出PCI设备信息显示设备对应的总线地址 sudo mst devicesmst status输出的设备路径就是后面flint、mlxconfig等命令里-d参数要用到的值比如/dev/mst/mt4119_pciconf0。从输出里还能看到设备的PCI地址和Link状态如果某个PCI设备没被正常识别多半是硬件驱动或BIOS设置的问题需要提前处理。启动后如果后来换过网卡或者插拔过设备可能需要sudo mst restart来重新扫描PCI设备列表否则新设备的设备节点不会自动出现。这个细节在线上环境排查时非常有用。5.2 flint固件操作的全能选手flint是MFT工具族的灵魂它的功能覆盖了固件操作的方方面面实际上所有固件的烧录和备份几乎都靠它完成。除了前面已经演示过的q查询、dc备份、b烧录之外还有几个我用得比较多的参数# 查询设备固件详情包括版序、PSID、UUID等 sudo flint -d /dev/mst/mt4119_pciconf0 q # 查询固件镜像文件的信息无需连接物理设备 sudo flint -i fw-ConnectX5-rel-16_34_1000.bin qi # 修改网卡MAC地址部分型号支持 sudo flint -d /dev/mst/mt4119_pciconf0 -mac 00:0a:35:00:11:22 m # 清除固件高风险操作一般不要用 sudo flint -d /dev/mst/mt4119_pciconf0 c这里需要特别提醒flint的c参数可以清除固件会让网卡的固件状态变成空执行后设备进入一个特殊模式如果此时断电或者外力干扰恢复难度很大极不建议小白尝试。如果你真的遇到需要清除固件的场景请务必先走一遍正规的恢复流程确认能够重新烧录后再操作。另一个细节是老版本教程里常用的是mstflint命令4.27.0版本中已经统一为flint如果你在网上查到了mstflint的命令示例先确认一下是否适用于新版。虽然老版命令在某些旧版本MFT里还能用但为了避免混淆和兼容性意外新环境建议始终用flint。5.3 mlxup更简单但更粗放的升级方式与flint的手工指定镜像不同mlxup是一个半自动化的升级脚本它的逻辑是自动识别你的设备型号和当前版本然后从本地官方目录或你指定的镜像目录找到匹配的固件直接升级。如果只是想把固件保持在新状态不想手动查镜像mlxup是最快的方式。用法非常简单# 查询所有设备的可用固件版本但不升级 sudo mlxup --query # 升级所有设备到最新可用固件 sudo mlxup -umlxup的优点是省事缺点是对「刷哪个版本」缺乏精细控制。如果你的网卡在某个特定固件版本上运行得特别稳定不想升级到最新那最好放弃mlxup手动用flint指定目标版本。我自己在跑NFV业务的服务器上就专门把固件锁定在一个稳定版本完全不用mlxup自动升级。另外mlxup在部分型号上会默认使用远程仓库的固件索引如果服务器访问外网受限它会卡在下载索引阶段不往下走这时候可以先把固件和索引文件下载到本地然后用-d指定目录或者干脆改用flint手工烧录。5.4 mlxconfig与mlxlink配置管理和链路诊断mlxconfig是管网卡固件里可配置启动参数的在服务器运维里很重要特别是涉及PXE、SRIOV和交换模式Ethernet/InfiniBand的场景。# 查看当前全部可配置参数 sudo mlxconfig -d /dev/mst/mt4119_pciconf0 q # 修改某个参数比如启动协议改为PXE sudo mlxconfig -d /dev/mst/mt4119_pciconf0 set BOOT_PROTOCOLPXE # 重置全部配置为默认值 sudo mlxconfig -d /dev/mst/mt4119_pciconf0 r这里有一个关键点mlxconfig修改的参数是写进固件里的修改后需要重置网卡或重启系统才会生效。别跑完set命令就直接以为生效了一定要记得sudo mst reset或协调维护窗口重启机器。mlxlink则是我每次排查物理层问题时的首选工具。它能看到比linux网卡命令更详细的物理链路信息# 查看设备所有物理端口的状态 sudo mlxlink -d /dev/mst/mt4119_pciconf0 # 查看某个端口的详细信息包括速率、FEC模式、线缆长度等 sudo mlxlink -d /dev/mst/mt4119_pciconf0 -p 1输出里会列出Link状态Up/Down、速度Speed、FEC模式如RS-FEC、线缆类型如Copper/DAC/AOC等。之前我排查过一次25G网卡频繁断链的问题用mlxlink看到FEC模式显示为No FEC而交换端开启的是RS-FEC两边不匹配手动调整后链路彻底稳定下来。这类问题你用ethtool也能看到一些线索但绝对没有mlxlink这么直接。6. 高风险操作避坑清单固件升级失败和恢复的实战经验6.1 刷固件失败时的排查链路即使做好了备份固件升级失败的场景依然可能出现很多情况下并不像官方文档写的那样「一键恢复」而是需要你去判断失败的原因到底出在哪一步。排查链路我一般这么走第一步重新执行mst start和mst status确认设备是否仍然被系统识别。如果设备节点还在大可以放心——意味着可以通过flint重新烧录。第二步如果mst status里看不到设备节点尝试扫描PCI总线sudo lspci -nn | grep Mellanox如果能通过lspci看到设备说明PCIe枚举正常大概率是MST模块或驱动层面的问题试试重载内核模块sudo modprobe -r mlx5_core sudo modprobe -r mst_pci sudo modprobe mst_pci sudo mst start第三步如果lspci里看不到设备或者设备显示状态异常这个时候就不要继续在系统层折腾了需要检查硬件状态——是否有断电、PCIe插槽松动、过热等问题。若是远程操作刷固件失败的最好到现场直接操作避免在链路不稳的情况下反复尝试烧录造成二次损坏。如果设备已经「半砖」状态——设备能被识别但无法正常通信这时MFT提供的恢复模式非常关键。具体的恢复操作需要根据网卡型号选择对应方式有的型号支持通过特殊的启动镜像进入恢复模式。这里提醒一句不要在网上随便找恢复工具不同型号固件格式差异很大用错恢复工具反而更难救。6.2 不要随便升级固件的几种情况用过一段时间Mellanox网卡之后我发现「升级固件」很多时候不是必须的甚至是有风险的。结合自己的经验以下情况不建议手痒升级网卡运行稳定业务无异常没有新功能需求尽量别动。固件升级的唯一意义是修复问题和兼容新特性很多线上网卡跑了好几年固件没动过什么问题没有。服务器在特殊网络环境里比如接了不常见的交换机或自研网络设备升级固件可能导致链路协商参数变化无形中引入不确定风险。固件版本跨度很大的情况从非常老的版本直接跳到最新版本中间若没有过渡版本适配出现问题的概率会上升。建议先看Release Notes确认是否需要分步升级。无法保证稳定供电和可靠远程通道的时候。刷固件过程中断电是致命打击远程会话断了至少还可以让现场同事帮忙如果整机断电了你就只能靠备份和恢复工具硬扛。6.3 固件备份管理和版本归档的建议讲了这么多坑最后分享一个「亡羊补牢」的好习惯建立一个固件版本归档目录。在为每一批网卡做完升级之后把当前版本的固件镜像、查询输出、备份的bin文件、操作的命令记录都存到一个统一的目录里。目录结构可以参考这个思路/opt/firmware-archive/ ├── 2025-06-connectx5/ │ ├── fw-ConnectX5-rel-16_34_1000.bin # 本次升级的目标固件 │ ├── backup_connectx5_20250601.bin # 升级前的原固件备份 │ ├── firmware_version_before.txt # 升级前的flint q输出 │ ├── firmware_version_after.txt # 升级后的flint q输出 │ └── command_log.txt # 本次所有操作的命令记录这样做的价值平时看不见一旦半年后想确认某台服务器当前固件是什么版本、备份固件放在哪里几秒钟就能找到答案。相比哪天突然出了问题时手忙脚乱去翻各种记录这个习惯成本低、收益高。我自己经历过两三次固件相关的现场事故后切实体会到一个完整备份记录体系对故障复盘有多重要。MFT本身只是一个工具工具用得好不好关键还是看你的操作流程和风险意识。把这套逻辑建立起来以后不管面对MFT还是其他固件管理工具你都不会慌乱。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。