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在同一子网