当前位置: 首页 > news >正文

【SPDK】【NoF】使用SPDK部署NVMe over TCP

SPDK NVMe over Fabrics Target是一个用户空间应用程序,通过以太网,Infiniband或光纤通道等结构呈现块设备,SPDK目前支持RDMA和TCP传输。

本文将在已经编译好SPDK的基础上演示如何使用SPDK搭建NVMe over TCP,前提是您已经将一块NVMe硬盘挂载到linux系统中。

如果您想获取有关SPDK更详细的信息,请参考 官方文档。

演示过程的Host主机的ip地址是192.168.0.21,Target主机的ip地址是192.168.0.22

Target端配置
假设您已经成功编译SPDK

初始化SPDK
# 进入spdk目录
$ cd spdk

# 运行脚本转让设备控制权给SPDK
$ sudo scripts/setup.sh
0000:03:00.0 (15ad 07f0): nvme -> uio_pci_generic

# 查看设备状态
$ sudo scripts/setup.sh status
Hugepages
node     hugesize     free /  total
node0   1048576kB        0 /      0
node0      2048kB     1024 /   1024

Type     BDF             Vendor Device NUMA    Driver           Device     Block devices
NVMe     0000:03:00.0    15ad   07f0   0       uio_pci_generic  -          -

启动 nvmf-tgf
$ sudo build/bin/nvmf_tgt

创建TCP传输
$ sudo scripts/rpc.py nvmf_create_transport -t TCP -u 16384 -m 8 -c 8192


创建 NVMe 块设备
$ sudo scripts/rpc.py bdev_nvme_attach_controller -b NVMe1 -t PCIe -a 0000:03:00.0

将NVMe块设备分配给子系统
# 创建子系统
$ sudo scripts/rpc.py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001 -d SPDK_Controller1

# 将NVMe块设备分配给刚刚创建的子系统
$ sudo scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 NVMe1n1

# 为子系统添加TCP监听器
$ sudo scripts/rpc.py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t TCP -a 192.168.0.22 -s 4420


Host端配置
安装 nvme-cli
$ sudo apt install nvme-cli

加载驱动程序
$ sudo modprobe nvme-tcp

发现 Target
$ sudo nvme discover -t tcp -a 192.168.0.22 -s 4420
Discovery Log Number of Records 1, Generation counter 5
=====Discovery Log Entry 0======
trtype:  tcp
adrfam:  ipv4
subtype: nvme subsystem
treq:    not required
portid:  0
trsvcid: 4420
subnqn:  nqn.2016-06.io.spdk:cnode1
traddr:  192.168.0.22
sectype: none

连接Target
$ sudo nvme connect -t tcp -n "nqn.2016-06.io.spdk:cnode1" -a 192.168.0.22 -s 4420

# 查看设备
$ sudo fdisk -l
...
Disk /dev/nvme0n1: 5 GiB, 5368709120 bytes, 10485760 sectors
Disk model: SPDK_Controller1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x441af706

Device         Boot Start      End  Sectors Size Id Type
/dev/nvme0n1p1       2048 10485759 10483712   5G 83 Linux
...

此时可将块设备nvme0n1p1进行挂载访问

取消连接Target
$ nvme disconnect -n "nqn.2016-06.io.spdk:cnode1"

# 或者
$ nvme disconnect-all


Reference
[1]: https://spdk.io/doc/nvmf.html
[2]: https://www.cnblogs.com/JamesLi/p/11399054.html

http://www.lryc.cn/news/277251.html

相关文章:

  • Spring boot 3 集成rocketmq-spring-boot-starter解决版本不一致问题
  • python爬虫实战(6)--获取某度热榜
  • 十三、K8S之亲和性
  • 对于网关的理解-Gateway
  • win10 - Snipaste截图工具的使用
  • Selenium 学习(0.19)——软件测试之基本路径测试法——拓展案例
  • 工作记录-------正则表达式---小白也能看懂
  • C3-1.3.1 无监督学习——异常检测
  • 1.4.1机器学习——梯度下降+α学习率大小判定
  • 在IntelliJ IDEA中,.idea文件是什么,可以删除吗
  • 【Spring Cloud】Gateway组件的三种使用方式
  • 对象的复制
  • 基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统
  • Maven之属性管理
  • 快乐学Python,数据分析之获取数据方法「公开数据或爬虫」
  • 前端常用的设计模式
  • 游戏引擎支持脚本编程有啥好处
  • react中概念性总结(二)
  • WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏
  • Transformer 的双向编码器表示 (BERT)
  • 关于LwRB环形缓冲区开源库的纯C++版本支持原子操作
  • 微信小程序Canvas画布绘制图片、文字、矩形、(椭)圆、直线
  • Unity Editor实用功能:Hierarchy面板的对象上绘制按按钮并响应
  • 解决录制的 mp4 视频文件在 windows 无法播放的问题
  • 一键与图片对话!LLM实现图片关键信息提取与交互
  • 洛谷 P8833 [传智杯 #3 决赛] 课程 讲解
  • 中国IT产经新闻:新能源汽车发展前景与燃油车的利弊之争
  • 一、数据结构
  • 案例分享:各行业销售岗位的KPI指标制定分享
  • 【办公类-19-01】20240108图书统计登记表制作(23个班级)EXCEL复制表格并合并表格