3、操作系统与驱动安装:Linux内核版本要求、MLNX_OFED驱动安装、固件升级与验证

好,咱们进入实操环节。这一章讲的是RoCE部署的「地基」——操作系统和驱动。说实话,我见过太多项目在底层环境上翻车,后面排查起来特别痛苦。所以这部分,咱们一次搞定。

3.1 Linux内核版本要求

RoCE对内核版本有硬性要求。不是随便装个Linux就能跑的。我个人习惯,先看内核版本,再看发行版。

核心要求:

  • 内核版本 ≥ 4.9:这是最低门槛。低于这个版本,RoCE v2的GID表管理有问题。
  • 推荐内核 ≥ 5.4:我在项目中遇到过,5.4以后的内核,对RoCE的拥塞控制支持更完善。
  • 发行版建议:Ubuntu 20.04+、RHEL/CentOS 8+、Rocky Linux 8+。

重要:如果你用RHEL 7或CentOS 7,内核默认是3.10。必须升级内核,否则RoCE v2根本跑不起来。我曾经在一个客户现场,他们坚持用CentOS 7.9,结果折腾了两天,最后还是换了内核。

检查内核版本:

uname -r
# 输出示例:5.4.0-150-generic

如果版本太低,怎么办?两种方式:

  1. 升级发行版:比如从CentOS 7迁移到Rocky Linux 8。
  2. 手动编译内核:不推荐,除非你有特殊需求。编译一次至少半小时,还容易出依赖问题。

3.2 MLNX_OFED驱动安装

MLNX_OFED是Mellanox(现NVIDIA)官方的驱动包。说白了,它就是让网卡和内核通信的「翻译官」。没有它,RoCE就是纸上谈兵。

安装步骤:

第一步:下载对应版本

去NVIDIA官网下载。注意,一定要选对内核版本和发行版。我建议用LTS版本,稳定。

# 以Ubuntu 20.04 + 内核5.4为例
wget https://content.mellanox.com/ofed/MLNX_OFED-5.8-2.0.3.0/MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz
tar xzf MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz
cd MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64

小技巧:下载前先确认网卡型号。用 lspci | grep Mellanox 查看。不同网卡(如ConnectX-5、ConnectX-6)对驱动版本要求略有不同。

第二步:安装依赖

MLNX_OFED安装脚本会自动检查依赖。但有时候会缺包。我习惯先手动装一遍:

sudo apt update
sudo apt install -y build-essential dkms libelf-dev linux-headers-$(uname -r)

第三步:运行安装脚本

sudo ./mlnxofedinstall --force

这里加 --force 是因为有时候系统里残留了旧驱动,不加会报错。嗯,要注意,这个参数会覆盖已有配置,生产环境要谨慎。

第四步:重启并验证

sudo reboot
# 重启后检查
ofed_info -s
# 输出示例:MLNX_OFED_LINUX-5.8-2.0.3.0 (OFED-5.8.2.0.3)

避坑指南:我曾经在一次升级中,忘记卸载旧驱动,直接运行安装脚本。结果网卡驱动加载失败,网络全断。后来只能进单用户模式手动卸载。所以,升级前一定先执行 sudo ./mlnxofedinstall --uninstall 清理干净。

3.3 固件升级与验证

驱动装好了,网卡固件也得跟上。固件是网卡自带的「小系统」,控制着底层硬件行为。RoCE的很多特性,比如拥塞控制、PFC,都依赖固件支持。

检查当前固件版本:

mlxfwmanager
# 或者
flint -d /dev/mst/mt4123_pciconf0 query

升级固件:

# 下载对应固件包(.bin文件)
# 以ConnectX-5为例
mlxfwmanager -d /dev/mst/mt4123_pciconf0 -i fw-ConnectX5-16_32_1000.bin -u -y

验证升级结果:

mlxfwmanager
# 查看FW Version是否更新

核心原则:固件版本必须与驱动版本匹配。NVIDIA官方有兼容性矩阵。我建议,驱动和固件都使用同一份MLNX_OFED包中提供的版本,这样最保险。

固件升级注意事项:

  • 升级过程中不能断电:否则网卡变砖。我见过有人升级到一半,机房跳闸,结果网卡彻底废了。
  • 双端口网卡:升级固件会影响所有端口。如果网卡正在承载业务,需要先切换流量。
  • 回滚:升级前备份当前固件。用 mlxfwmanager -d /dev/mst/mt4123_pci conf0 --query -b backup.bin 备份。

3.4 知识体系图

下面这张图,把本章的核心逻辑串起来了。你想想看,从内核到驱动再到固件,是一条完整的链路。

RoCE部署:操作系统与驱动安装核心流程 Linux内核 版本 ≥ 4.9,推荐 ≥ 5.4 MLNX_OFED驱动 下载 → 安装依赖 → 运行脚本 → 重启验证 网卡固件 检查版本 → 升级 → 验证兼容性 关键检查点 1. uname -r 查内核 2. ofed_info -s 查驱动 3. mlxfwmanager 查固件 4. 三者版本必须匹配 5. 升级前备份旧固件 6. 生产环境谨慎操作 三者缺一不可:内核是基础,驱动是桥梁,固件是灵魂

3.5 验证与测试

装完不是结束,得验证。我习惯跑几个命令确认:

# 1. 查看网卡状态
ibstatus
# 输出示例:ConnectX-5 port 1: link up, speed 100Gb/s

# 2. 查看RoCE GID表
show_gids
# 输出示例:port 1, index 0, GID fe80::...

# 3. 测试连通性
ibping -c 10 -S 1 192.168.1.2

个人经验:如果 ibstatus 显示 link down,先别慌。检查光模块、线缆、交换机端口。我遇到过好几次,都是光纤没插紧。另外,dmesg | grep mlx5 可以看驱动加载日志,很有用。

好了,这一章的内容就这些。内核、驱动、固件,三步走完,RoCE的底层环境就稳了。下一章咱们聊网络配置,那才是真正让RoCE跑起来的关键。


公众号:蓝海资料掘金营,微信deep3321