NVMe over TCP环境搭建

本文详细介绍了如何在Linux环境中搭建基于TCP传输协议的NVMeOverFabric(NVMeOF)测试环境。包括initiator和target端的驱动加载、虚拟磁盘创建、NVM子系统配置、连接与断开、性能测试等步骤,帮助读者理解NVMeOF的工作原理和操作流程。

了解一下NVMe OF的initiator与target,搭建简单环境测试。
本文参考链接:https://www.cnblogs.com/JamesLi/p/11399054.html

NVMe OF分为initiator端与target端,由initiator端发起请求与target端NVM subsystem建立连接,进而实现initiator端远程访问target端NVM subsystem,常用访问协议有RDMA、TCP,本文讲解基于TCP传输协议的NVMe OF测试环境搭建。

想要简单了解RDMA的同学可以参考之前写的文章:https://blog.csdn.net/zz2633105/article/details/119519952?spm=1001.2014.3001.5501

准备工作

initiator端与target端一般为两个linux设备,但如果没有条件放一个设备也可以。这里所说的linux设备可以是真是的设备,也可以是虚拟机。

initiator端准备

1)安装nvme-cli:执行nvme list命令,若提示未找到nvme命令则自行安装,例如ubuntu系统执行apt install nvme-cli

2)加载nvme相关驱动:执行modprobe nvme_coremodprobe nvme-fabricsmodprobe nvme_tcp命令,然后执行lsmod | grep nvme命令,结果如下:

# lsmod | grep nvme
nvme_tcp               36864  0
nvme_fabrics           24576  1 nvme_tcp
nvme_core             126976  2 nvme_tcp,nvme_fabrics

执行ls /dev/nvme-fabrics命令查看驱动是否加载成功,若存在节点,则驱动加载OK,常用的发行版linux系统都能支持,但如果嵌入式linux系统需要配置内核选项支持NVMe OF,配置如下:

CONFIG_NVME_CORE=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_FC=y
CONFIG_NVME_TCP=y
CONFIG_NVME_TARGET=y

target端准备

1)加载nvme相关驱动:modprobe nvmetmodprobe nvme_tcp命令,然后执行lsmod | grep nvme命令,结果如下:

# lsmod | grep nvme
nvmet_tcp              28672  1
nvmet                 126976  7 nvmet_tcp
nvme                   49152  0
nvme_core             126976  2 nvmet,nvme

执行ls /sys/kernel/config/nvmet/命令查看驱动是否加载成功,若存在目录,则驱动加载OK,常用的发行版linux系统都能支持,但如果嵌入式linux系统需要配置内核选项支持NVMe OF,配置如下:

CONFIG_NVME_CORE=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_FC=y
CONFIG_NVME_TCP=y
CONFIG_NVME_TARGET=y

2)准备物理盘或虚拟盘

initiator端通过传输协议读写target端侧NVM子系统,而这个NVM子系统下可以挂真实NVMe盘,也可以STAT盘,甚至是虚拟盘,由于本文只是搭建测试环境,故采用虚拟盘形式。

随意找个目录,执行dd if=/dev/zero of=test.raw bs=1M count=0 seek=512 命令,再找个没有使用的loop号(可以执行ls /dev/loop*查看,比如loop100),执行 losetup /dev/loop100 test.raw,最后执行fdisk -l命令查看是否加载设备成功,结果如下:

# fdisk -l

.......

Disk /dev/loop100: 512 MiB, 536870912 bytes, 1048576 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

若后续不使用了可以执行losetup -d /dev/loop100移除设备。

target端操作

注意后续所有操作需要sudo权限

创建NVM subsystem

执行以下命令创建NVM subsystem

cd /sys/kernel/config/nvmet/subsystems
mkdir nqn.2014-08.org.nvmexpress.mytest

允许任何initiator访问NVM subsystem

执行以下命令

cd nqn.2014-08.org.nvmexpress.mytest
echo 1 > attr_allow_any_host

申请namespace id

任意选个NSID创建,比如

cd namespaces
mkdir 1

NSID绑定存储设备

绑定存储设备并使能,执行以下

cd 1
echo /dev/loop100 > device_path
echo 1 > enable

注意上面的loop100就是上面创建的虚拟盘,如果有真实盘,则替换即可,比如echo /dev/nvme0n1 > device_pathecho /dev/sda1 > device_path

创建NVMe over TCP的Transport层

cd /sys/kernel/config/nvmet/ports
mkdir 1234
cd 1234
echo tcp > addr_trtype
echo ipv4 <
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值