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
如果版本太低,怎么办?两种方式:
- 升级发行版:比如从CentOS 7迁移到Rocky Linux 8。
- 手动编译内核:不推荐,除非你有特殊需求。编译一次至少半小时,还容易出依赖问题。
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 知识体系图
下面这张图,把本章的核心逻辑串起来了。你想想看,从内核到驱动再到固件,是一条完整的链路。
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