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 |
| 端口状态 | ibstatus | state=4: ACTIVE,physical state=5: LinkUp |
| SM运行 | systemctl status opensm | active (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占用端口。