4、固件升级前的准备工作:硬件兼容性检查、当前固件版本确认、备份当前配置、网络连通性验证、维护窗口规划

各位同学,大家好。我是你们的老朋友,一个在 InfiniBand 网络里摸爬滚打多年的工程师。今天咱们聊聊固件升级前那些“磨刀不误砍柴工”的准备工作。

说实话,我见过太多人上来就刷固件,结果刷完网卡变砖,或者集群直接“炸裂”。嗯,这里要敲黑板了——准备工作做得好,升级过程没烦恼。这可不是一句空话,是我用无数次加班换来的血泪教训。

4.1 硬件兼容性检查:别让固件“水土不服”

你想想看,固件不是万能的。不是所有网卡都能刷最新版固件。我个人的习惯是,在动手之前,先花十分钟查清楚三件事:

  • 网卡型号与固件版本的匹配关系:比如 Mellanox ConnectX-5 和 ConnectX-6,它们的固件不能混用。我曾经有个同事,把 CX-6 的固件刷到了 CX-5 上,结果网卡直接“罢工”,连 IB 链路都起不来。
  • 服务器平台兼容性:有些固件对 BIOS 版本、PCIe 槽位有要求。特别是那些老旧的服务器,比如 Dell R730 配 ConnectX-4,有时候固件太新反而会出问题。
  • 交换机与网卡的协同版本:如果你的交换机固件是 2.42.5000,网卡固件是 16.32.1000,它们之间能不能“好好说话”?我建议去厂商官网查一下 Release Notes,里面会明确列出兼容性矩阵。

我的避坑指南:我曾经在升级前没检查交换机固件版本,结果网卡升级后,链路协商失败,整个集群的带宽从 100Gbps 掉到了 40Gbps。排查了整整两天,才发现是固件不兼容。所以,查兼容性,别偷懒

4.2 当前固件版本确认:知己知彼

在动手升级前,你得先知道“现在是什么版本”。这就像看病,你得先知道病人得了什么病,才能开药方。

我个人习惯用 ibstatmlxfwmanager 这两个命令。来,看个例子:

# 查看当前网卡固件版本
ibstat | grep -i firmware

# 或者用 mlxfwmanager 查看详细信息
mlxfwmanager --query

输出结果大概长这样:

Firmware version: 16.29.1000
PSID: MT_0000000019
Description: ConnectX-5 EN adapter card

这里要注意,PSID 很重要。它决定了你该下载哪个固件包。不同 PSID 的固件不能互刷,否则会报错。我记得有一次,客户拿错了固件包,PSID 对不上,刷了三次都失败,最后才发现是这个问题。

小技巧:建议把当前固件版本、PSID、网卡型号都记录下来,存到一个文本文件里。万一升级失败,你还能回滚到旧版本。

4.3 备份当前配置:给自己留条后路

升级固件,说白了就是“动手术”。手术前,你得把病人的病历、检查报告都备份好。网卡也一样,它的配置信息、分区表、VPI 设置等,都需要备份。

我常用的备份命令是:

# 备份网卡配置到文件
mlxconfig -d /dev/mst/mt4123_pciconf0 query > /backup/mlxconfig_backup_$(date +%Y%m%d).txt

# 备份分区表
flint -d /dev/mst/mt4123_pciconf0 query full > /backup/flint_backup_$(date +%Y%m%d).txt

备份文件最好存到两个地方:本地磁盘和远程服务器。为什么?因为升级过程中,万一本地磁盘挂了,你还有远程备份可以恢复。嗯,这是我在一次机房断电事故中学到的教训。

警告:千万不要跳过备份步骤!我曾经见过有人升级后,网卡的 RoCE 配置丢失,导致 RDMA 业务中断。因为没有备份,只能手动重新配置,花了整整一个下午。备份,就是你的“后悔药”。

4.4 网络连通性验证:确保“通信畅通”

升级固件时,通常需要从服务器下载固件包,或者通过管理网络远程操作。所以,网络连通性必须提前验证好。

我一般会做以下检查:

  • 管理网络连通性:用 ping 测试到固件服务器的连通性。注意,要测试大包,因为固件包通常比较大。
  • InfiniBand 网络连通性:用 ibping 测试 IB 链路是否正常。如果 IB 链路不通,升级后可能无法验证新固件是否正常工作。
  • SSH 会话稳定性:如果你是通过 SSH 远程升级,建议用 screentmux 来保持会话。否则,网络一断,升级过程就中断了,后果很严重。
# 测试管理网络大包连通性
ping -M do -s 9000 192.168.1.100

# 测试 IB 网络连通性
ibping -S 1 -L 1 -C 1

我的经验:有一次,我在远程升级时,SSH 会话突然中断了。幸好我用了 screen,重新连接后,升级进程还在继续。如果没用 screen,那网卡可能就“半死不活”了。所以,screen 或 tmux,是远程升级的标配

4.5 维护窗口规划:选对时间,事半功倍

固件升级不是小事,它会影响业务。所以,你得规划好维护窗口。我个人建议:

  • 选择业务低峰期:比如凌晨 2 点到 6 点。这个时间段,业务流量最小,即使升级失败,影响也最小。
  • 预留足够的时间:不要只留 30 分钟。升级一个网卡,从下载固件到刷写完成,再到重启验证,至少需要 1 小时。如果遇到问题,可能需要更长时间。
  • 通知相关人员:提前发邮件或开会,通知业务方、运维团队、网络团队。让大家知道你要做什么,什么时候做,预计影响多久。
  • 制定回滚计划:如果升级失败,你该怎么办?是回滚到旧版本,还是直接换备件?这些都要提前想好。

小建议:我习惯在维护窗口开始前,先做一次“预演”。比如,先在测试环境里升级一遍,看看有没有问题。如果测试环境没问题,再在生产环境动手。这样,心里更有底。

好了,关于固件升级前的准备工作,我就讲到这里。总结一下:硬件兼容性检查、当前固件版本确认、备份当前配置、网络连通性验证、维护窗口规划,这五步,一步都不能少。你想想看,准备工作做得越充分,升级过程就越顺利。下次咱们聊聊具体的固件下载和刷写步骤,到时候见。