掌握Ubuntu配置Mellanox在NVIDIA MLNX_OFED驱动源配置与依赖安装中的定位、故障信号与验证顺序。
NVIDIA MLNX_OFED驱动源配置与依赖安装落地前要同时核对MLNX_OFED驱动源配置的依赖安装、失败路径和添加NVIDIA官方APT源。
NVIDIA MLNX_OFED驱动源配置与依赖安装用MLNX_OFED驱动源配置、依赖安装、添加NVIDIA官方APT源连接到MLNX_OFED驱动源配置的调试、验证和交付动作。
在开始配置 NVIDIA MLNX_OFED 驱动源之前,首先要明确一个工程现实:直接使用 Ubuntu 系统自带的 rdma-core 或 核心 内核模块,虽然能识别 Mellanox ConnectX-4 Lx 25G 网卡,但往往无法启用 RoCE(RDMA over Converged Ethernet)高级特性,且在大流量场景下容易触发固件不匹配导致的丢包。因此,本节的核心目标就是通过添加 NVIDIA 官方 APT 源,安装完整版 MLNX_OFED 驱动及其编译依赖,为后续的 25G 网卡教程中的性能调优打下基础
不要使用 Ubuntu 默认仓库中的 mlnx-ofed-kernel-dkms 包,它版本滞后且缺少用户态工具。必须从 NVIDIA 官方 APT 源获取与内核版本严格匹配的 OFED 包
首先确认当前系统环境。执行 uname -r 查看内核版本,并运行 lspci | grep Mellanox 确认网卡型号。如果输出中包含 “ConnectX-4 Lx” 或 “MT27710”,说明硬件识别正常。接着检查是否已安装过旧版 OFED:ofed_info -s 若返回,需先执行 /etc/init.d/openibd force-unload 卸载旧驱动,避免源冲突
NVIDIA 为 Ubuntu 提供了独立的软件源,其关键机制在于:源中的 mlnx-ofed-kernel-dkms 包会针对当前运行的内核版本自动编译内核模块,而 build-essential 和 dkms 正是 DKMS(Dynamic Kernel Module Support)框架的编译工具链。缺少这两个依赖,驱动安装会直接报错 “Kernel module compilation failed”
执行以下命令添加 NVIDIA 官方签名密钥和源。注意,Ubuntu 22.04 对应 jammy,20.04 对应 focal,请根据 lsb_release -cs 输出替换
# 导入 NVIDIA GPG 密钥
wget -qO - https://www.mellanox.com/downloads/ofed/mlnx_ofed_key.pub | sudo apt-key add -
# 添加 APT 源(以 Ubuntu 22.04 为例)
echo "deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu22.04 ./" | sudo tee /etc/apt/sources.list.d/mellanox_mlnx_ofed.list
# 更新源
sudo apt update阅读这段代码时,重点看MLNX_OFED驱动源配置的伪代码,以及它如何用稳定性与可观测性证明结果可复测。
上述命令中,apt-key add 用于信任 NVIDIA 的发布密钥;tee 将源地址写入 /etc/apt/sources.list.d/ 目录下的独立文件,便于后续管理。更新源后若出现 “NO_PUBKEY” 错误,说明密钥导入失败,需手动执行 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的KEY_ID>
依赖安装是本节最容易出错的步骤。许多用户只安装了 build-essential,却忽略了 dkms 和 linux-headers-$(uname -r),导致内核模块编译阶段失败。正确的安装命令如下:
# 安装编译工具链和内核头文件
sudo apt install -y build-essential dkms linux-headers-$(uname -r)
# 安装 MLNX_OFED 核心驱动包(不含用户态工具)
sudo apt install -y mlnx-ofed-kernel-dkms阅读这段代码时,重点看MLNX_OFED驱动源配置的伪代码,以及它如何用稳定性与可观测性证明结果可复测。
build-essential 提供了 gcc、make 等编译器;dkms 负责在内核更新后自动重建模块;linux-headers-$(uname -r) 必须与当前内核版本完全一致,否则 DKMS 编译会因找不到 /lib/modules/$(uname -r)/build 而失败。安装 mlnx-ofed-kernel-dkms 时,系统会自动编译 核心、mlx4_en 等内核模块,并生成 /etc/infiniband/openib.conf 配置文件
安装完成后,立即执行 sudo dkms status 检查模块状态。输出应包含 “mlnx-ofed-kernel/<版本>, added” 且状态为 “installed”。如果显示 “built” 但未 “installed”,手动执行 sudo dkms install mlnx-ofed-kernel/<版本>
以下参数表记录了驱动安装后的关键验证点,用于确认 25G 网卡教程中的硬件是否就绪
| 检查项 | 标准 | 是否通过 |
|---|---|---|
| 内核模块加载 | lsmod | grep mlx5 输出包含 核心 和… | 未重启系统或未执行 sudo modprobe 核心 |
| 网卡状态 | ibstat 显示端口状态为 “Active”,速率… | 未安装 ibutils 或 rdma-core 用户态… |
| RDMA 设备 | ibv_devinfo 列出物理端口,且 节点 非全零 | 固件版本过旧,需通过 mlxup 工具更新 |
| 中断亲和性 | /proc/interrupts 中 mlx5 中断均… | 未配置 irqbalance 或手动绑定中断 |
验证时,优先使用 ibstat 而非 ip link show,因为前者直接报告 InfiniBand/RoCE 链路状态。如果 ibstat 显示 “Port state: Down”,检查光模块是否插紧,并执行 sudo ethtool -s enp3s0f0np0 speed 25000 autoneg off 强制设置 25G 速率
某数据中心运维团队在批量部署 25G 网卡教程中的服务器时,发现 20% 的节点在安装 mlnx-ofed-kernel-dkms 后 ibstat 显示端口 Down。排查发现这些节点的 BIOS 中 SR-IOV 未启用,导致 核心 无法分配足够的 MSI-X 中断向量。解决方法是进入 BIOS 开启 “SR-IOV Support” 并重启
配置过程中存在三个主要风险点,需要提前识别并准备兜底方案
不要试图通过 apt install mlnx-ofed-kernel-dkms 一次性安装所有组件。正确的顺序是:先安装 build-essential 和 dkms,再安装内核头文件,最后安装驱动包。颠倒顺序会导致 DKMS 因缺少头文件而编译失败
最后,执行 sudo reboot 重启系统,然后运行 dmesg | grep mlx5 确认驱动加载日志。如果看到 “核心: Init done” 且无 “firmware version mismatch” 错误,说明 25G 网卡教程的驱动源配置与依赖安装已全部完成,可以进入下一节的网卡配置环节
NVIDIA MLNX_OFED驱动源配置与依赖安装先对齐现场任务、输入材料和输出结果,再回到Ubuntu配置Mellanox的细节逐项核对。
NVIDIA MLNX_OFED驱动源配置与依赖安装的主要风险来自MLNX_OFED驱动源配置边界、状态和验证口径不清;落地前必须核对伪代码,并确认例外场景和结果记录。
NVIDIA MLNX_OFED驱动源配置与依赖安装里最先使用的工具、样例或资料是哪一个?
替换Ubuntu配置Mellanox时,哪些位置可以改,哪些位置要保留?
输出物检查时,最不能漏掉哪一项?
如果换一套素材,使用顺序要不要调整?