1. 环境搭建与验证

任务说明

本案例目标是在两台Linux服务器上完成RDMA环境搭建:安装RDMA网卡驱动与OFED软件栈,配置IP地址,并通过ibv_devinfo验证设备可见性。以下步骤在两台服务器上均需执行。

环境要求

  • 两台x86_64架构Linux服务器,内核版本与OFED支持列表匹配(本文以Ubuntu 22.04 /内核5.15为例)
  • RDMA网卡(如Mellanox ConnectX-5/6)已物理安装,lspci可识别
  • root权限或sudo权限

1. 安装OFED软件栈

从NVIDIA官网下载与内核版本匹配的MLNX_OFED,执行以下命令安装(以MLNX_OFED_LINUX-23.10-1.1.9.0-ubuntu22.04-x86_64为例):

# 下载并解压
wget https://content.mellanox.com/ofed/MLNX_OFED-23.10-1.1.9.0/MLNX_OFED_LINUX-23.10-1.1.9.0-ubuntu22.04-x86_64.tgz
tar xzf MLNX_OFED_LINUX-23.10-1.1.9.0-ubuntu22.04-x86_64.tgz
cd MLNX_OFED_LINUX-23.10-1.1.9.0-ubuntu22.04-x86_64

# 安装(自动编译内核模块并安装驱动与工具)
sudo ./mlnxofedinstall --force

安装完成后重启服务器:sudo reboot。重启后确认驱动已加载:

lsmod | grep mlx5_core   # 应输出mlx5_core相关模块
ibv_devinfo              # 若命令不存在,执行 sudo apt install ibutils 后重试

2. 配置IP地址

查看RDMA网卡接口名(通常为ens2f0/ens2f1或ib0):

ip link show   # 找到与Mellanox网卡对应的接口名

在两台服务器上分别配置静态IP(示例:Server1为192.168.1.1,Server2为192.168.1.2,子网掩码24位):

# Server1
sudo ip addr add 192.168.1.1/24 dev ens2f0
sudo ip link set ens2f0 up

# Server2
sudo ip addr add 192.168.1.2/24 dev ens2f0
sudo ip link set ens2f0 up

验证连通性:ping -c 3 192.168.1.2(在Server1上执行,应收到回复)。

3. 验证RDMA设备可见性

在两台服务器上分别执行以下命令,确认RDMA设备已被系统识别:

ibv_devinfo

预期输出应包含类似以下内容(以实际硬件为准):

hca_id: mlx5_0
    transport: InfiniBand (0)
    fw_ver: 16.35.2000
    node_guid: 0c42:a103:00ca:6a20
    sys_image_guid: 0c42:a103:00ca:6a20
    vendor_id: 0x02c9
    vendor_part_id: 4124
    hw_ver: 0x0
    phys_port_cnt: 1
        port: 1
            state: PORT_ACTIVE (4)
            physical_state: LINK_ACTIVE (5)

关键判定标准:hca_id存在且port: 1的state为PORT_ACTIVE (4),说明RDMA设备可见且链路已激活。若state为PORT_DOWN,检查网线连接及IP配置是否正确。

4. 双机互通验证(可选但推荐)

安装perftest工具后,在Server1上启动服务端,Server2上启动客户端,验证RDMA数据通路:

# Server1
sudo apt install perftest -y
ib_write_bw -d mlx5_0

# Server2(IP地址替换为Server1的实际IP)
ib_write_bw -d mlx5_0 192.168.1.1

若能看到带宽数据交互,说明RDMA网络端到端可用。

常见问题

  • ibv_devinfo命令不存在:安装ibutils或rdma-core包:sudo apt install ibutils rdma-core -y
  • 驱动加载失败:确认内核版本与OFED匹配,查看dmesg | grep mlx5获取错误信息
  • 端口状态为DOWN:检查网线/光模块连接,确认两端配置的IP在同一子网