NVMe over Fabrics 概况
NVMe over Fabrics 技术特征
跨网络传输NVMe命令需要特殊的考虑,而不仅仅是针对本地存储内存。例如,为了远距离传输NVMe协议,理想的底层网络或fabric技术将具有以下特性:
- 可靠的、基于可信的流程控制和交付机制。这种流控制允许网络或Fabric进行自身限流,提供了可靠的连接,可以保证在硬件级别进行传输,而不需要由于拥塞而丢弃帧或包。对FC,InfiniBand和PCI Express传输来说,基于可信的流量控制是天然具备的。
- 一个最优化的客户端。客户机软件应该能够直接向fabric发送和接收本机NVMe命令,而不需要使用SCSI之类的翻译层。
- 一个低延迟的fabric。fabric本身应该优化为低延迟。包括交换在内,fabric的端到端延迟不应超过10µs。
- 减少延迟和CPU利用率适配器或接口卡。适配器应该能够为应用程序注册直接内存区域,以便将传输的数据直接传递到硬件fabric适配器。
- Fabric扩展。这种fabric应该能够扩展到成千上万个或更多的设备。
- 多主机支持。fabric应该能够支持多个主机同时主动发送和接收命令。这也适用于多个存储子系统。
- 多端口支持。主机服务器和存储系统应该能够同时支持多个端口。
- 多路径支持。fabric应该能够同时支持任何NVMe主机initiator和任何NVMe存储target之间的多个路径。
独立I/O队列的最大数量(64K)和这些NVMe I/O队列固有的并行性可以很好地用于上述结构类型。每个64K I/O队列都可以同时支持64K个命令,这使得它能够在非常大的fabric中实现。此外,NVMe命令集中只有很少数量的命令使得在各种fabric环境中实现相对简单。
本地NVMe和NVMe over Fabrics之间的差异
大约90%的基于fabric的NVMe协议与本地NVMe协议相同。这包括NVMe名称空间、I/O和管理命令、寄存器和属性、电源状态、异步事件、保留等。主要的区别在以下四个方面,见下表。

这些差异主要是NVMe产品的开发人员感兴趣的,因为他们的设备驱动程序需要正确处理本地NVMe设备和远程NVMe设备。其中一些项,例如标识符,可以公开给最终用户,以帮助识别特定应用程序的特定NVMe设备。发现机制设计用于处理多种类型的传输。
NVMe传输分布图
在本地NVMe实现中,NVMe命令和响应通过PCIe接口映射到主机中的共享内存。然而,fabric是建立在发送和接收消息的概念之上的,端点之间没有共享内存。NVMe fabric消息传输被设计为使用包含一个或多个NVMe命令或应答的capsule,将NVMe命令和应答封装到基于消息的系统中。capsule或capsule与数据的组合独立于特定的fabric技术,并通过所需的fabric技术发送和接收。
对于fabric上的NVMe,使用常规的NVMe提交队列和完成队列维护整个NVMe多队列模型,但封装在基于消息的传输之上。NVMe I/O队列对(提交和完成)是为多核cpu设计的,这种低延迟的高效设计在NVMe over Fabrics中得到了保持。

当通过fabric设备向NVMe发送复杂消息时,capsule允许将多个小消息作为一个消息发送,这提高了传输效率并减少了延迟。capsule要么是提交队列条目,要么是与一定数量的数据、元数据或聚散列表(SGLs)相结合的完成队列条目。这些元素的内容与本地NVMe协议相同,但是capsule使用将它们打包在一起的方式以提高效率。

NVMe Qualified Name (NQN)
存储网络结构的关键优点之一是用于在所有设备之间保持一致性的固有理解力。在本例中,fabric上的NVMe使用熟悉的限定命名寻址约定。
NVMe限定名(NQN)用于标识远程NVMe存储目标。它类似于iSCSI限定名(IQN)。关于NVMe限定名的更多详细信息在NVMe基本规范的第7.9节中进行了描述,可以在http://www.nvmexpress.org/speciations/中找到。

总结
NVMe over Fabrics准备扩展低延迟高效的NVMe块存储协议,以提供大规模的远程存储共享。fabric上的NVMe在不同的fabric类型之间维护NVMe协议的体系结构和软件一致性,发挥NVMe的优点,而不管存储target中使用的fabric类型或非易失存储类型如何。未来几年对这个行业来说将是非常激动人心的!
NVMe over Fabrics 概况的更多相关文章
- NVMe over Fabrics:概念、应用和实现
对于大部分人来说,NVMe over Fabrics(简称NVMf)还是个新东西,因为其第一个正式版本的协议在今年6月份才发布.但是这并不影响人们对NVMf的关注,因为这项依托于NVMe的技术很可能继 ...
- NVMe over Fabrics又让RDMA技术火了一把
RDMA是个什么鬼?相信大部分不关心高性能网络的童鞋都不太了解.但是NVMe over Fabrics的出现让搞存储的不得不抽出时间来看看这个东西,这篇文章就来介绍下我所了解的RDMA. RDMA(R ...
- NVMe over Fabrics 协议Discovery服务交互过程跟踪
Discovery服务过程跟踪 对于NVMe over Fabrics的subsystem,有两种类型:Discovery子系统和NVM子系统.这里介绍与Discovery子系统相关的交互内容(即:在 ...
- 文章汇总(包括NVMe SPDK vSAN Ceph xfs等)
基础部分 NVMe驱动解析-前言 NVMe驱动解析-注册设备 NVMe驱动解析-关键的BAR空间 NVMe驱动解析-DMA传输(热门) NVMe驱动解析-响应I/O请求 用一个简单的例子窥探NVMe的 ...
- linux nvme的那些workqueue
目前nvme三个常见的使用的workqueue ,主要有nvme_workq,nvme_rdma_wq ,nvme_fc_wq,下面一一描述一下初始化及使用的场景.分别对应于NVME over PCI ...
- NVMe协议1.3c(一) 概述
刚开始接触NVMe,对此理解不深,如有错误敬请指出 1.1概述 NVM ExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信. 此接口针对企业和客户端固态驱动器进行了优化,通常 ...
- [SPDK/NVMe存储技术分析]008 - RDMA概述
毫无疑问地,用来取代iSCSI/iSER(iSCSI Extensions for RDMA)技术的NVMe over Fabrics着实让RDMA又火了一把.在介绍NVMe over Fabrics ...
- [SPDK/NVMe存储技术分析]010 - 理解SGL
在NVMe over PCIe中,I/O命令支持SGL(Scatter Gather List 分散聚合表)和PRP(Physical Region Page 物理(内存)区域页), 而管理命令只支持 ...
- [SPDK/NVMe存储技术分析]004 - SSD设备的发现
源代码及NVMe协议版本 SPDK : spdk-17.07.1 DPDK : dpdk-17.08 NVMe Spec: 1.2.1 基本分析方法 01 - 到官网http://www.spdk.i ...
随机推荐
- win10下载
Win10 简体中文正式版 微软MSDN官方ISO镜像下载(2020年1月21日更新) 官方地址:https://www.microsoft.com/zh-cn/software-download/w ...
- [Python]爬取 游民星空网站 每周精选壁纸(1080高清壁纸) 网络爬虫
一.检查 首先进入该网站的https://www.gamersky.com/robots.txt页面 给出提示: 弹出错误页面 注: 网络爬虫:自动或人工识别robots.txt,再进行内容爬取 约束 ...
- HTML5基础-新增标签+新增属性+布局案例
html5中常用的结构标签 article 文章 header 头部 nav 导航 section 区域 aside 侧边栏 hgroup 区块的相关信息 figure 定义一组内容及标题 figca ...
- js遇到代码出现问题时如何调试代码
单步跟踪调试 debugger; 控制台watch功能查看变量当前值 进入函数操作 随着不断点击,不停进行循环,指定变量的值也在发生改变 添加断点 跳入跳出函数 throw new Error() 主 ...
- css3基本选择器+属性选择器+动态伪类+UI状态伪类+结构类
后代选择器 祖先元素 后代元素{ } 子元素选择器(直接子元素选择器) 父元素>子元素{ } 兄弟选择器 元素+兄弟元素(紧邻该元素之后的下一个兄弟元素) 所有兄弟元素选择器 元素~兄弟元素(该 ...
- TotalUninstall6破解步骤卸载软件更彻底更专业
软件包分享,这里使用的是6.24版本 链接:https://pan.baidu.com/s/1aVd6bclk5A6puyWBfAOA2A提取码:mhl9 接下来开始安装 安装步骤: 点击安装.基本上 ...
- 基于90nm CMOS技术的功能齐全的64Mb DDR3 STT-MRAM
自旋转矩磁阻随机存取存储器(ST-MRAM)有望成为一种快速,高密度的非易失性存储器,可以增强各种应用程序的性能,特别是在用作数据存储中的非易失性缓冲器时设备和系统.为此,everspin开发了基于9 ...
- #AcWing系列课程Level-2笔记——4. 浮点数二分算法
浮点数二分算法 编写浮点数二分,记住下面的思路,代码也就游刃有余了! 1.首先找到数组的中间值,mid=(left+right)>>1,区间[left, right]被划分成[left, ...
- 监控自己的电脑浏览器访问记录并生成csv格式
#!usr/bin/env python #-*- coding:utf-8 _*- """ @author:lenovo @file: 获取浏览器历史记录.py @ti ...
- 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)
qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...