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

SPDK NVMe-oF target多路功能介绍

基本概念

SPDK NVMe-oF target multi-path是基于NVMe协议的multi-path IO和namespace sharing功能。

NVMe multi-path IO指的是两个或多个完全独立的PCI Express路径存在于一个主机和一个命名空间。

而namespace 共享是两个或多个主机使用不同的NVMe控制器访问一个shared namespace。

Multi-path IO和namespace 共享需要NVM 子系统有两个以上的控制器。

两个主机同时访问一个shared namespace需要主机间的协调工作。

SPDK NVMe-oF target 的multi-path功能提供的是namespace的sharing功能。比如,多个客户端通过交换机能够同时发现,连接和操作SPDK NVMe-oFsubsystem下的namespace。这些namespace是可共享的。如图所示

图 1 SPDK NVMe-oF target namespace共享示例

NVMe-oF host1和host2能够同时通过交换机发现和连接到监听地址为192.168.12.11的SPDK NVMe-oF target subsystem1。两个host端可以同时对subsystem1下的namespace进行操作。

如果namespace不能共享,那么同时只能有一个NVMe-oF host连接到SPDK NVMe-oF target。

具体查看方法:

1. 运行SPDK NVMe-oF target 在目标机器端,子系统配置如下:

[Subsystem1]NQN nqn.2018-07.io.spdk:cnode1Listen RDMA 192.168.12.11:4420AllowAnyHost YesHost nqn.2016-06.io.spdk:initSN SPDK00000000000001MaxNamespaces 20Namespace Nvme0n1

2. 在客户端机器运行nvme命令发现和连接SPDK NVMe-oF target, 命令如下:

nvme discover -t rdma -a 192.168.12.11 -s 4420
nvme connect -t rdma -n "nqn.2016-06.io.spdk:cnode1" -a 192.168.12.11 -s 4420

3. 运行nvme id-ns命令, 参数是完整的nvme设备名, 比如/dev/nvme0n1:

nvme id-ns /dev/nvme0n1

在结果中, 我们就能看到如下内容:

nmic    : 0x1

nmic是Namespace Multi-Path I/O and Namespace sharing Capabilities的缩写。该值为1, 就表明这个namespace处于共享状态。

使用场景

在实际使用环境中,可以让SPDK NVMe-oF target子系统同时监听两个IP地址。客户端机器可以通过两个IP地址同时连接SPDK NVMe-oF target子系统。这样如果一个IP连接出现问题,比如网卡出现故障, 可以使用另外一个IP连接访问SPDK NVMe-oF target子系统。如下图所示:

图 2 使用多网络端口访问同一个subsystem

NVMe-oF host端使用192.168.11.0/24和192.168.12.0/24连接到SPDK NVMe-oF target的同一个subsystem。如果192.168.11.0/24的连接出现问题, 我们可以使用192.168.12.0/24的连接, 反之亦然。

具体操作步骤如下:

1. 运行SPDK NVMe-oF target 在目标机器端, 子系统配置如下:

[Subsystem1]
NQN nqn.2016-06.io.spdk:cnode1
Listen RDMA 192.168.11.11:4420
Listen RDMA 192.168.12.11:4420
AllowAnyHost Yes
Host nqn.2016-06.io.spdk:init
SN SPDK00000000000001
MaxNamespaces 20
Namespace Nvme0n1
Namespace Nvme1n1
Namespace Nvme2n1

2. 在客户机,首先查看一下系统的Linux 内核版本及配置。

从Linux 4.15开始,nvme驱动支持multipath功能。 但是需要在编译内核的时候,将NVME_MULTIPATH功能打开。接下来的步骤都是基于4.15以上的带有NVME_MULTIPATH功能的Linux内核。

运行如下命令发现SPDK NVMe-oF target子系统。

nvme discover -t rdma -a 192.168.11.11 -s 4420
nvme discover -t rdma -a 192.168.12.11 -s 4420

两个命令有相同的输出:

Discovery Log Number of Records 2, Generation counter 5
=====Discovery Log Entry 0======
trtype:  rdma
adrfam:  ipv4
subtype: nvme subsystem
treq:    not specified
portid:  0
trsvcid: 4420
subnqn:  nqn.2016-06.io.spdk:cnode1
traddr:  192.168.12.11
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
portid:  1
trsvcid: 4420
subnqn:  nqn.2016-06.io.spdk:cnode1
traddr:  192.168.11.11
rdma_prtype: not specified
rdma_qptype: connected
rdma_cms:    rdma-cm
rdma_pkey: 0x0000

3. 然后使用如下命令连接到子系统。

nvme connect -n nqn.2016-06.io.spdk:cnode1 -t rdma -a 192.168.11.11
nvme connect -n nqn.2016-06.io.spdk:cnode1 -t rdma -a 192.168.12.11

4. 运行”nvme list”命令可以得到如下结果。

Node             SN                   Model                                    Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     SPDK00000000000001   SPDK bdev Controller                     1           2.00  TB /   2.00  TB    512   B +  0 B   18.10
/dev/nvme0n2     SPDK00000000000001   SPDK bdev Controller                     2           1.60  TB /   1.60  TB    512   B +  0 B   18.10
/dev/nvme0n3     SPDK00000000000001   SPDK bdev Controller                     3         800.17  GB / 800.17  GB    512   B +  0 B   18.10

这样我们就可以在两条路径上对磁盘进行操作了。如果没有使用Linux内核的nvme multipath功能,运行”nvme list”命令会得到6个node, 因为每条路径3个node,总共2条路径。我们同样也能采用传统的multipath服务,来实现host端的multipath功能。本文不讨论如何使用传统的multipath服务。

相关文章:

SPDK NVMe-oF target多路功能介绍

基本概念 SPDK NVMe-oF target multi-path是基于NVMe协议的multi-path IO和namespace sharing功能。 NVMe multi-path IO指的是两个或多个完全独立的PCI Express路径存在于一个主机和一个命名空间。 而namespace 共享是两个或多个主机使用不同的NVMe控制器访问一个shared na…...

ADAudit Plus:助力企业安全的权威选择

在当今数字化的时代,信息安全已经成为企业发展的头等大事。随着网络攻击和数据泄露的频繁发生,企业需要一种全面的解决方案来保护其关键业务数据和敏感信息。ADAudit Plus作为一款强大的安全审计软件,为企业提供了完整的安全解决方案&#xf…...

sqli-labs关卡18(基于http头部报错盲注)通关思路

文章目录 前言一、靶场通关需要了解的知识点1、什么是http请求头2、为什么http头部可以进行注入 二、靶场第十八关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做…...

uni-app顶部导航栏背景色如何设置,微信小程序返回键设置

百度经验 https://jingyan.baidu.com/article/67508eb48c5c37dcca1ce499.html 这样设置微信小程序没有返回键 {"path": "pages/index/index","style": {"navigationBarTitleText": "首页","app-plus": {"ti…...

基于多种设计模式重构代码(工厂、模板、策略)

基于多种设计模式重构代码 现状 系统目前支持三种业务流程,业务A, 业务B,业务C,每个流程有相同的业务逻辑,也包含很多的特性化业务。由于之前业务流程的开发是快速迭代的,而且迭代了很多次,开发…...

boomYouth

上一周实在是过得太颓废了,我感觉还是要把自己的规划做好一下: 周计划 这周截至周四,我可以用vue简单的画完登陆注册的界面并且弄一点预处理: 周一 的话可以把这些都学一下: 父传子,子传父&#xff1a…...

关于这个“这是B站目前讲的最好的【Transformer实战】教程!“视频的目前可以运行的源代码GPU版本

课程链接如下: 2.1认识Transformer架构-part1_哔哩哔哩_bilibili 因为网上可以找到源代码,但是呢,代码似乎有点小错误,我自己改正后,放到了GPU上运行, 代码如下: # 来自https://www.bilibil…...

STM32定时器输入捕获测量高电平时间

STM32定时器输入捕获测量高电平时间 输入捕获测量高电平时间CuebMX配置代码部分 本篇内容要求读者对STM32通用定时器有一点理解,如有不解,请看 夜深人静学32系列15——通用定时器 输入捕获 输入捕获是STM32通用定时器的一种功能,可以捕获特定…...

开源WIFI继电器之硬件电路

一、原理图 源文件 二、原理图说明 1、器件说明 U4:ESP8285模块 U6:触发器 U3:继电器 2、继电器状态检测说明 检测继电器线圈是否通电来判断继电器是否导通,当Q1不导通时,Q1集电极的电压为3.3V,经…...

远程执行ssh脚本

sshpass -p 123456 ssh root10.1.10.18 "/root/start.sh"sshpass: 这是一个工具,用于提供密码给 ssh 命令,以便无需手动输入密码就能通过 SSH 连接到远程服务器。 -p ‘123456’: 这是 sshpass 命令的选项,指定了连接时使用的密码…...

excel导入 Easy Excel

依旧是框架感觉有东西,但是确实是模拟不出来,各种零零散散的件太多了 controller层 ApiOperation(value "导入Excel", notes "导入Excel", httpMethod "POST", response ExcelResponseDTO.class)ApiImplicitParams({…...

html实现图片裁剪处理(附源码)

文章目录 1.设计来源1.1 主界面1.2 裁剪界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/134455169 html实现图片裁剪处理(附源码),支持图片放大缩小&#…...

前端语言报错

1. 语法错误(Syntax Errors) 这是由于代码不符合语法规则而引起的错误,通常在代码编译阶段发生。示例: javascriptCopy code if (x 10 { // 缺少了右括号 // 代码逻辑 } 2. 类型错误(Type Errors) 这…...

详细讲解什么是观察者模式

观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象状态发生变化时,所有依赖于它的观察者都会得到通知并自动更新。 该模…...

镭速,克服UDP传输缺点的百倍提速传输软件工具

在网络传输中,我们经常会面临这样的困难:文件太大,传输速度太慢,浪费时间和流量;文件太小,传输速度太快,容易出现丢包和乱序,损害数据的完整性和正确性。这些困难的根本在于传输层协…...

Semi-Supervised Multi-Modal Learning with Balanced Spectral Decomposition

Y是所有模态的表征矩阵, ∑ i 1 d h ( λ i ) \sum_{i1}^dh(\lambda_i) ∑i1d​h(λi​) is the proposed eigenvalue-based objective function,the final similarity matrix W for the multimodal data as a block matrix 辅助信息 作者未提供代码...

3296:【例50.2】 计算书费《信息学奥赛一本通编程启蒙(C++版)》

3296:【例50.2】 计算书费《信息学奥赛一本通编程启蒙(C版)》 【题目描述】 下面是一个图书的单价表: 1、计算概论 28.9 元/本 2、数据结构与算法 32.7 元/本 3、数字逻辑 45.6 元/本 4、C程序设计教程 78 元/本 5、人工智能…...

统一身份认证平台之SSO建设

前言 上篇说道Passwordless无密码技术,也提到了数字时代密码管理的难度,其实在日常的生活中,很多用户也会因为忘记某些网站的登录密码而烦恼。为了方便记忆,很多人都在不同的站点使用相同的用户名和密码,虽然也可以减少…...

【开题报告】基于SpringBoot的膳食营养健康网站的设计与实现

1.选题背景与意义 基于SpringBoot的膳食营养健康网站的设计与实现是一个具有重要意义的选题。背景和意义主要包括以下几点: (1)社会健康意识的提升:随着人们健康意识的提高,越来越多的人开始关注自己的饮食营养问题。…...

超五类网线和六类网线的相同点和区别

本文对超五类网线和六类网线的相同点和区别进行了简单介绍,帮助大家区分和建立相应的概念。 相同点: (1)都是网络跳线,用于连接网络设备。 (2)网线内部由8根不同颜色的线组成。 区别&#xf…...

Czkawka:用Rust构建的开源存储清理工具全解析

Czkawka:用Rust构建的开源存储清理工具全解析 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 一、场景痛点:当代存储管理的…...

小白也能学会:MogFace透明蒙版可视化,人脸检测不再难

小白也能学会:MogFace透明蒙版可视化,人脸检测不再难 1. 为什么需要透明蒙版可视化? 想象一下这样的场景:你拍了一张全家福,想用AI工具检测照片中有多少人。传统的检测工具会在每个人脸上画一个绿色的方框&#xff0…...

从内核事件到业务洞察:手把手教你用sysdig + Lua脚本定制专属监控看板

从内核事件到业务洞察:用sysdig与Lua脚本构建定制化监控体系 当你的微服务集群每天处理数十亿次API调用时,标准监控指标如CPU使用率或内存消耗早已无法满足需求。真正的挑战在于:当某个关键业务接口的99线突然飙升时,如何快速定位…...

水墨江南模型效果对比:不同参数下的笔触与渲染风格

水墨江南模型效果对比:不同参数下的笔触与渲染风格 最近在尝试用AI生成水墨画,发现一个挺有意思的现象:同一个“水墨江南”模型,用不同的参数设置,画出来的效果天差地别。有时候是寥寥几笔的写意小品,有时…...

告别天价桥接芯片!用高云GW5AT-LV15MG132 FPGA搞定MIPI C-PHY摄像头测试盒

国产FPGA革新摄像头测试方案:高云GW5AT-LV15MG132的MIPI C-PHY实战解析 在摄像头模组生产线上,测试环节的成本与效率直接关系到企业竞争力。传统测试方案依赖进口FPGA搭配昂贵桥接芯片,不仅物料清单(BOM)成本居高不下…...

保姆级教程:在Windows系统本地部署Qwen3-14B-Int4-AWQ对话模型

保姆级教程:在Windows系统本地部署Qwen3-14B-Int4-AWQ对话模型 1. 前言:为什么选择本地部署? 在个人电脑上运行大语言模型听起来可能有些遥不可及,但随着模型量化技术的进步,现在即使是消费级显卡也能流畅运行14B参数…...

告别CTex!TeX Live+Texstudio组合安装避坑指南(Windows/Mac双平台)

告别CTex!TeX LiveTexstudio组合安装避坑指南(Windows/Mac双平台) 如果你曾经使用过CTex套装,可能会被其"开箱即用"的便利性所吸引。但当你需要跨平台协作或追求更灵活的定制时,TeX LiveTexstudio的组合无疑…...

【课后习题答案】SystemVerilog for Verification 3rd Edition第五章(绿皮书第三版)

1 解答class MemTrans;// a. 8位logic类型的data_inlogic [7:0] data_in;// b. 4位logic类型的addresslogic [3:0] address;// c. 打印data_in和address的void函数function void print();$display("data_in 0x%h, address 0x%h", data_in, address);endfunction// …...

UDS诊断服务-10例程控制服务(0x31)实战:从协议解析到车辆传感器校准

1. 从车辆抖动问题认识0x31服务的重要性 去年夏天,我遇到一辆行驶里程8万公里的SUV,车主反映急加速时发动机抖动明显。用诊断仪读取故障码显示"P0172 - 燃油修正系统过浓",但更换氧传感器和火花塞后问题依旧。这时候就需要请出我们…...

魔兽争霸3帧率优化与性能调优指南:从卡顿到高流畅度的开源解决方案

魔兽争霸3帧率优化与性能调优指南:从卡顿到高流畅度的开源解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 在现代硬件环境下运行经…...