centos下nvme over rdma 环境配置

nvme over rdma 环境配置

本文主要介绍NVMe over RDMA的安装和配置。关于什么是NVMe over Fabrics,什么是NVMe over RDMA,本文就不做介绍了,网上资料一大堆。

可以看看什么是NVMe over Fabrics?

RDMA(全称:Remote Direct Memory Access)是一种远程直接内存访问技术,通过在硬件中实现传输层协议,将内存/消息原语接口暴露至用户空间,通过绕过CPU和内核网络协议栈来实现高吞吐和低延迟的网络。RoCE(RDMA over Converged Ethernet)是一种允许通过以太网使用远程直接内存访问(RDMA)的网络协议。

前面一文已经提到过centos 7.8 x86_64上面部署rdma环境,下面主要测试一下基于内核态的 nvme of rdma

#show_gids //看看网卡支持的roce版本
DEV     PORT    INDEX   GID                                     IPv4            VER     DEV
---     ----    -----   ---                                     ------------    ---     ---
mlx5_0  1       0       fe80:0000:0000:0000:1270:fdff:fe27:f982                 v1      eth2
mlx5_0  1       1       fe80:0000:0000:0000:1270:fdff:fe27:f982                 v2      eth2
mlx5_0  1       2       0000:0000:0000:0000:0000:ffff:0ac0:3398 10.192.51.152   v1      eth2
mlx5_0  1       3       0000:0000:0000:0000:0000:ffff:0ac0:3398 10.192.51.152   v2      eth2
mlx5_1  1       0       fe80:0000:0000:0000:1270:fdff:fe27:f983                 v1      eth3
mlx5_1  1       1       fe80:0000:0000:0000:1270:fdff:fe27:f983                 v2      eth3
n_gids_found=6
NVMe target配置
#modprobe nvmet
#modprobe nvmet-rdma
#modprobe nvme-rdma

参考前面 nvme of tcp 的步骤

# ls /sys/kernel/config/nvmet/
hosts  ports  subsystems
#cd /sys/kernel/config/nvmet/subsystems
#mkdir nvme-test-target
#tree
.
└── nvme-test-target
    ├── allowed_hosts
    ├── attr_allow_any_host
    ├── attr_serial
    ├── attr_version
    └── namespaces

3 directories, 3 files

#cd nvme-test-target/
#允许所有主机访问
#echo 1 > attr_allow_any_host 

#nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev  
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     BTAC210600LH3P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200
/dev/nvme1n1     BTAC210006RS3P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200
/dev/nvme2n1     BTAC209007EB3P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200
/dev/nvme3n1     BTAC210007A73P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200

#可以看出/dev/nvme0n1 是namespace 1
#mkdir namespaces/1
#ll namespaces/1
total 0
-rw-r--r-- 1 root root 4096 Sep  3 20:17 device_nguid
-rw-r--r-- 1 root root 4096 Sep  3 20:17 device_path
-rw-r--r-- 1 root root 4096 Sep  3 20:17 device_uuid
-rw-r--r-- 1 root root 4096 Sep  3 20:17 enable

指定namespace 1的device并启用
#echo '/dev/nvme0n1' > namespaces/1/device_path
#echo 1 > namespaces/1/enable
创建端口号配置IP
#mkdir /sys/kernel/config/nvmet/ports/1
#cd /sys/kernel/config/nvmet/ports/1
#ll
total 0
-rw-r--r-- 1 root root 4096 Sep  3 20:21 addr_adrfam
-rw-r--r-- 1 root root 4096 Sep  3 20:21 addr_traddr
-rw-r--r-- 1 root root 4096 Sep  3 20:21 addr_treq
-rw-r--r-- 1 root root 4096 Sep  3 20:21 addr_trsvcid
-rw-r--r-- 1 root root 4096 Sep  3 20:21 addr_trtype
-rw-r--r-- 1 root root 4096 Sep  3 20:21 param_inline_data_size
drwxr-xr-x 2 root root    0 Sep  3 20:21 referrals
drwxr-xr-x 2 root root    0 Sep  3 20:21 subsystems
#echo '10.192.51.152' > addr_traddr 

#低版本内核 4.19* 下面报过错误,升级5.*后正常
#echo rdma > addr_trtype
#echo 4420 > addr_trsvcid 
#echo ipv4 > addr_adrfam
端口子接口绑定
#ln -s /sys/kernel/config/nvmet/subsystems/nvme-test-target/ /sys/kernel/config/nvmet/ports/1/subsystems/nvme-test-target

#dmesg -T| grep "enabling port"
[Fri Sep 13 18:00:05 2024] nvmet_rdma: enabling port 1 (10.192.51.152:4420)
NVMe initiator配置
#yum -y install nvme-cli
#modprobe nvmet
#modprobe nvmet-rdma
#modprobe nvme-rdma
# nvme discover -t rdma -q nvme-test-target -a 10.192.51.152 -s 4420
=====Discovery Log Entry 0======
trtype:  rdma
adrfam:  ipv4
subtype: unrecognized
treq:    not specified, sq flow control disable supported
portid:  1
trsvcid: 4420
subnqn:  nqn.2014-08.org.nvmexpress.discovery
traddr:  10.192.51.152
rdma_prtype: not specified
rdma_qptype: connected
rdma_cms:    rdma-cm
rdma_pkey: 0x0000
=====Discovery Log Entry 1======
trtype:  rdma
adrfam:  ipv4
subtype: nvme subsystem
treq:    not specified, sq flow control disable supported
portid:  1
trsvcid: 4420
subnqn:  nvme-test-target
traddr:  10.192.51.152
rdma_prtype: not specified
rdma_qptype: connected
rdma_cms:    rdma-cm
rdma_pkey: 0x0000
# nvme connect -t rdma  -q nvme-test-target -n nvme-test-target  -a 10.192.51.152 -s 4420
# nvme list #多出来了nvme4n1磁盘
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev  
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     PHAX333201XZ3P8CGN   INTEL SSDPF2KX038T1                      1           3.84  TB /   3.84  TB    512   B +  0 B   9CV10200
/dev/nvme1n1     BTAC209500853P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200
/dev/nvme2n1     BTAC2095012Z3P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200
/dev/nvme3n1     BTAC210601LW3P8AGN   INTEL SSDPF2KX038TZ                      1           3.84  TB /   3.84  TB    512   B +  0 B   JCV10200
/dev/nvme4n1     2fb38638ea25c2ad3ee4 Linux                                    1           3.84  TB /   3.84  TB    512   B +  0 B   3.10.0-1
相关推荐
九河云1 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
神一样的老师1 小时前
利用亚马逊AWS IoT核心和MQTT进行数据采集的综合指南
云计算·aws
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮5 小时前
Linux 使用中的问题
linux·运维
dsywws6 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
点点滴滴的记录7 小时前
RPC核心实现原理
网络·网络协议·rpc
昔我往昔7 小时前
阿里云文本内容安全处理
安全·阿里云·云计算