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
相关推荐
云计算练习生14 分钟前
linux shell编程实战 02 变量与交互式输入
linux·运维·shell编程·shell 变量
Dovis(誓平步青云)39 分钟前
《简易制作 Linux Shell:详细分析原理、设计与实践》
linux·运维·服务器
weixin_3077791342 分钟前
在Linux服务器上使用Jenkins和Poetry实现Python项目自动化
linux·开发语言·python·自动化·jenkins
小糖学代码1 小时前
网络:2.Socket编程UDP
网络·网络协议·udp
爱宇阳1 小时前
Linux 教程:如何查看服务器当前目录中的文件
linux·运维·github
天才奇男子1 小时前
用户管理,权限管理
linux·云原生
wheeldown1 小时前
【Linux】Linux 进程通信:System V 共享内存(最快方案)C++ 封装实战 + 通信案例,4 类经典 Bug 快速修复
linux·运维·服务器·开发语言
Ching·1 小时前
linux系统编程(十②)RK3568 socket之 TCP 客户端的实现
linux·tcp/ip·rk3568
NiKo_W2 小时前
Linux 线程控制
linux·数据结构·内核·线程·进程·线程控制
m0_611779962 小时前
MQTT和WebSocket的差别
网络·websocket·网络协议