1. RDMA环境搭建与验证
任务目标
在一台具备RDMA网卡的Linux服务器上,完成驱动与工具的安装,配置IPoIB或RoCE网络接口,并通过ibv_devinfo验证RDMA设备状态正常。
环境准备
操作系统:Ubuntu 22.04 / CentOS 8+(内核≥5.4)。硬件:Mellanox ConnectX-4及以上网卡(或其他厂商RDMA网卡)。需具备root权限。
安装驱动与工具
使用发行版自带包管理器安装即可,无需手动编译驱动(内核已内置RDMA子系统)。
# Ubuntu/Debian
apt update && apt install -y rdma-core infiniband-diags perftest iproute2
# CentOS/RHEL
yum install -y rdma-core infiniband-diags perftest iproute
安装完成后加载内核模块并确认驱动识别到设备:
modprobe rdma_cm
modprobe ib_umad
# 确认网卡被识别为RDMA设备
lspci | grep -i mellanox # 或其他厂商RDMA网卡
配置IPoIB或RoCE
根据实际网络环境选择一种配置方式。以下两种方式任选其一。
方式A:配置IPoIB(InfiniBand网络)
# 查看IB接口名称(通常为ib0)
ip link show
# 配置IP地址(示例:192.168.1.10/24)
ip addr add 192.168.1.10/24 dev ib0
ip link set ib0 up
# 确认接口状态
ip link show ib0
方式B:配置RoCE(以太网融合)
# RoCE v2需要以太网接口支持,确认网卡驱动已加载
# 查看以太网接口(如ens2f0)
ip link show
# 配置IP地址
ip addr add 192.168.1.10/24 dev ens2f0
ip link set ens2f0 up
# 确认RDMA设备与以太网接口的绑定关系
rdma link show
验证RDMA设备状态
运行ibv_devinfo检查设备是否可用:
ibv_devinfo
预期输出应包含类似以下关键信息(具体数值因硬件而异):
hca_id: mlx5_0
transport: InfiniBand (0)
firmware_version: 16.29.1016
node_guid: 0c42:a103:00b4:2a20
sys_image_guid: 0c42:a103:00b4:2a20
vendor_id: 0x02c9
vendor_part_id: 4123
phys_port_cnt: 1
port: 1
state: PORT_ACTIVE (4)
physical_state: LINK_ACTIVE (5)
验证方法与判定标准
按以下步骤确认环境搭建成功:
ibv_devinfo能列出至少一个hca_id,且端口状态为PORT_ACTIVE;- 若配置了IPoIB,
ping同网段另一台已配置的服务器IP能通; - 若配置了RoCE,
ping同网段IP能通,且rdma link show显示链路状态为ACTIVE; - 使用
rping或ib_write_bw(perftest工具)与对端服务器做一次简单的RDMA读写测试,能成功建立连接并完成数据传输。
以上条件全部满足,即判定RDMA环境搭建成功。
常见问题排查
- ibv_devinfo无输出:确认内核模块已加载(
lsmod | grep rdma),且网卡驱动正常(dmesg | grep -i mlx5); - 端口状态为DOWN:检查网线/光模块连接,确认对端设备已启用;IPoIB需确认子网管理器(OpenSM)已运行;
- RoCE无法通信:确认交换机支持RoCE v2(DCQCN或PFC配置),或改用RoCE v1在同一二层网络内测试。