1. 搭建双节点InfiniBand测试环境

任务说明

在两台各配备一块InfiniBand HCA的服务器上,完成以下目标:安装OFED驱动栈、配置子网管理器(SM)、验证两台节点间的RDMA连通性。最终通过ibstatus确认端口状态为Active,通过ibping确认双向可达。

环境与依赖

  • 硬件:2台x86服务器,各含1块Mellanox ConnectX-4/5/6 HCA(或兼容InfiniBand HCA)
  • 操作系统:Rocky Linux 8.6 / Ubuntu 22.04(本文以Rocky Linux为例)
  • 网络:IB线缆直连或通过IB交换机连接两台节点
  • OFED版本:MLNX_OFED_LINUX-5.8-1.1.2.1(或更新版本,可从NVIDIA官网获取)

实施步骤

1. 安装OFED驱动

在两台节点上分别执行以下操作。下载OFED驱动包后解压并运行安装脚本:

# 下载对应系统的OFED包(示例为Rocky 8.6 x86_64)
wget https://www.mellanox.com/downloads/ofed/MLNX_OFED-5.8-1.1.2.1/MLNX_OFED_LINUX-5.8-1.1.2.1-rhel8.6-x86_64.tgz
tar xzf MLNX_OFED_LINUX-5.8-1.1.2.1-rhel8.6-x86_64.tgz
cd MLNX_OFED_LINUX-5.8-1.1.2.1-rhel8.6-x86_64/
sudo ./mlnxofedinstall --force

安装完成后重启系统,然后验证驱动模块是否加载:

reboot
# 重启后检查
rdma link show   # 应看到mlx5_0等设备,状态为ACTIVE

2. 配置IP地址(可选但推荐)

为便于测试,为两台节点的IB接口配置IP(使用ib0接口):

# 节点A
sudo ip addr add 192.168.100.1/24 dev ib0
sudo ip link set ib0 up

# 节点B
sudo ip addr add 192.168.100.2/24 dev ib0
sudo ip link set ib0 up

3. 配置子网管理器(SM)

在节点A上运行opensm作为子网管理器(仅需一个SM)。若未安装,先安装:

sudo yum install -y opensm   # Rocky Linux
# 或 sudo apt install -y opensm  # Ubuntu

启动SM并设置开机自启:

sudo systemctl start opensm
sudo systemctl enable opensm
sudo systemctl status opensm   # 确认状态为active (running)

4. 验证连通性

在两台节点上分别执行以下命令验证。

步骤A:检查端口状态——在两台节点上分别运行:

ibstatus

预期输出应包含类似以下内容(以节点A为例):

InfiniBand device 'mlx5_0' port 1 status:
    state: 4: ACTIVE
    physical state: 5: LinkUp
    rate: 100 Gb/sec (4X EDR)
    base_lid: 0x2
    sm_lid: 0x1
    ...

关键判定:state必须为4: ACTIVE,physical state必须为5: LinkUp。若状态为DOWN或INIT,说明SM未生效或线缆/端口有问题。

步骤B:ibping双向测试——在节点A上启动服务端:

ibping -S -C mlx5_0 -P 1   # -S表示服务端模式,-C指定设备,-P指定端口

在节点B上运行客户端(需指定节点A的LID或IP):

# 使用LID方式(LID值从节点A的ibstatus中获取,例如0x2)
ibping -c 100 -C mlx5_0 -P 1 -L 2

# 或使用IP方式(若已配置IP)
ibping -c 100 -C mlx5_0 -P 1 -S 192.168.100.1

预期输出示例:

Pong from hostname (192.168.100.1) time 0.042 ms
Pong from hostname (192.168.100.1) time 0.038 ms
...
Received 100 responses, 0 errors

关键判定:收到100个响应且0 errors,说明RDMA数据通路正常。然后在节点B上启动服务端、节点A上运行客户端,反向测试一次,确认双向均通。

验证方法汇总

检查项命令通过标准
驱动加载rdma link show看到mlx5_0设备,状态ACTIVE
端口状态ibstatusstate=4: ACTIVE,physical state=5: LinkUp
SM运行systemctl status opensmactive (running)
数据通路ibping(双向)100 responses, 0 errors

常见问题排查

  • ibstatus显示state=DOWN:检查IB线缆连接、HCA是否被系统识别(lspci | grep Mellanox)、SM是否在运行。
  • ibstatus显示state=INIT:SM已发现端口但未完成握手,等待几秒重试;确认只有一个SM在运行。
  • ibping超时无响应:确认服务端已启动且使用正确的-C和-P参数;检查LID值是否正确(从服务端ibstatus获取)。
  • opensm启动失败:查看日志journalctl -u opensm -n 50,确认没有其他SM占用端口。