1. 搭建RDMA与NVMe-oF实验环境
任务目标
在两台服务器上完成RDMA与NVMe-oF实验环境搭建:安装并加载RDMA网卡驱动、部署NVMe-oF相关软件包,最终通过ibping或rping验证两台服务器间的RDMA链路连通性。本案例以Mellanox ConnectX-4/5网卡和Ubuntu 22.04 LTS为例,其他型号或发行版需对应调整驱动安装方式。
环境与依赖
- 硬件:两台x86服务器,各配1块Mellanox ConnectX-4/5 RDMA网卡(推荐25GbE以上),使用直连或经交换机连接
- 操作系统:Ubuntu 22.04 LTS(内核≥5.15,已内置mlx5_core驱动)
- 软件包:
rdma-core、infiniband-diags、libibverbs-dev、nvme-cli、nvmet(内核模块)
实现步骤与代码
1. 安装软件包(两台服务器均执行)
sudo apt update
sudo apt install -y rdma-core infiniband-diags libibverbs-dev nvme-cli
# 确认内核NVMe-oF target模块已加载
sudo modprobe nvmet
sudo modprobe nvmet-rdma
sudo modprobe nvme-rdma
2. 确认RDMA网卡状态
# 查看RDMA设备列表,应看到mlx5_0或类似设备
ibv_devinfo
# 查看网卡端口状态,确认Active
ibstat
3. 配置IP地址(示例:Server A为192.168.10.1/24,Server B为192.168.10.2/24)
# Server A
sudo ip addr add 192.168.10.1/24 dev ibp3s0f0 # 以实际接口名为准
sudo ip link set ibp3s0f0 up
# Server B
sudo ip addr add 192.168.10.2/24 dev ibp3s0f0
sudo ip link set ibp3s0f0 up
4. 验证RDMA链路连通性
# 在Server A上启动rping服务端(监听端口9400)
rping -s -a 192.168.10.1 -p 9400 -C 3 &
# 在Server B上执行rping客户端
rping -c -a 192.168.10.1 -p 9400 -C 3 -v
5. 验证NVMe-oF传输层(可选但推荐)
# 在Server A上创建NVMe-oF target子系统
sudo mkdir -p /sys/kernel/config/nvmet/subsystems/testnqn
cd /sys/kernel/config/nvmet/subsystems/testnqn
echo 1 | sudo tee attr_allow_any_host > /dev/null
sudo mkdir namespaces/1
echo -n "/dev/nullb0" | sudo tee namespaces/1/device_path > /dev/null # 需先创建null_blk设备
echo 1 | sudo tee namespaces/1/enable > /dev/null
# 添加RDMA端口
sudo mkdir -p /sys/kernel/config/nvmet/ports/1
cd /sys/kernel/config/nvmet/ports/1
echo 1 | sudo tee addr_adrfam > /dev/null
echo 2 | sudo tee addr_trtype > /dev/null # 2=RDMA
echo 192.168.10.1 | sudo tee addr_traddr > /dev/null
echo 4420 | sudo tee addr_trsvcid > /dev/null
sudo ln -s /sys/kernel/config/nvmet/subsystems/testnqn /sys/kernel/config/nvmet/ports/1/subsystems/testnqn
# 在Server B上发现并连接target
sudo nvme discover -t rdma -a 192.168.10.1 -s 4420
sudo nvme connect -t rdma -n testnqn -a 192.168.10.1 -s 4420
sudo nvme list
验证方法与判定标准
- RDMA连通性:
rping客户端输出显示PING/PONG往返成功且-C 3指定的3次传输全部完成,无超时或错误信息,即判定RDMA链路正常。 - NVMe-oF连接:
nvme discover能列出Server A上的testnqn子系统;nvme connect成功且nvme list能看到新增的NVMe设备(如/dev/nvme0),说明NVMe-oF over RDMA数据通路已建立。 - 驱动状态:
ibstat显示端口状态为Active,ibv_devinfo能识别到设备,说明RDMA驱动工作正常。
常见问题
- ibstat看不到设备:确认网卡已正确安装且被系统识别(
lspci | grep Mellanox),必要时重新加载驱动:sudo modprobe -r mlx5_core && sudo modprobe mlx5_core。 - rping连接超时:检查IP是否配置正确、网卡是否up、防火墙是否放行UDP端口(rping使用RoCE v2时走UDP 4791端口)。
- NVMe-oF target创建失败:确认已加载
nvmet和nvmet-rdma模块,且configfs已挂载(sudo mount -t configfs none /sys/kernel/config)。