NVMe-oF 1.1规范:多路径、非对称命名空间和NVMe/TCP

提到NVMe over Fabric,我就会想到它的几种应用场景:

1、 存储阵列到主机的网络连接(替代FC、iSCSI等);

2、 服务器、本地NVMe存储解耦(跨机箱/JBOF),SSD存储资源池化共享;

3、 分布式存储/超融合系统内部互连?

关于上面第3点,对技术专家来说应该早有答案,而我会在下文中写出自己的理解和分析,班门弄斧还望大家多指正。

首先,我们来看看当初新闻里宣布的NVMe-oF 1.1主要特性:

  • TCP transport supports NVMe-oF on current data center TCP/IP network infrastructure.
  • Asynchronous discovery events inform hosts of addition or removal of target ports in a fabric-independent manner.
  • Fabric I/O Queue Disconnect enables finer grain I/O resource management.
  • End-to-end (command to response) flow control improves concurrency.

我想先聊下这次被正式加入规范的NVMe/TCP。

NVMe/TCP加入、网卡卸载的重要性

与之前的1.0版一样,NVMe over FC protocol (FC-NVMe) 在新规范里的篇幅还是一点点,却仍被排在3种传输协议层的头一个。原因不难想到——那就是光纤通道(Fibre Channel)存储网络的已有投资、用户群,包括SAN交换机和HBA卡等,以及相对更早、更成熟的应用,比如Dell EMC PowerMax等全闪存阵列。

NVMe over Fabric跑在RDMA协议层上可以有3种选择:iWARP、InfiniBand和RoCE,其中IB主要集中应用于HPC领域、iWARP普及的不太乐观,而RoCE的主导和领先者也是Mellanox。

上面我引用了2018年5月一篇The Register记者的采访文章《CTO观点:关于FC-NVMe与NVMe-oF的那些事儿》,当然今天的情况应该会更乐观。

上图中的PDUs是Protocol Data Units(协议数据单元)的缩写,我想这张图不用解释大家也能看懂。

根据我看到的信息,NVMe/TCP并不是在所有的网卡上都能跑出比较理想的性能。这个有点像早期的iSCSI和FCoE,纯软件支持会比较差一些,推荐使用驱动/Firmware支持NVMe/TCP硬件卸载的网卡。

在《VMware vSAN下一目标:NVMe-oF存储扩展?》中我曾列出过上面这张图,Lightbits使用一张FPGA卡来跑NVMe/TCP target和全局FTL等数据服务。这个要想大规模普及,估计离不开initiator端网卡的优化支持。

如今vSAN对NVMe-oF的支持还没有正式宣布,前文中我介绍过2种具体的技术实现方式:

使用RoCE连接JBOF SSD扩展柜

使用NVMe/TCP连接lightbits闪存“阵列”

除了vSAN之外,对于更多的分布式存储/Server SAN和超融合(HCI)而言,NVMe-oF可以被用于计算资源与存储介质(SSD盘)之间的连接吗?在解释这一点之前,我们先来看看NVMe的另外2个新特性:

Multipath和ANA(Asymmetric Namespace Access)

NVMe-oF 1.1规范似乎简单了点,除了协议本身之外没有写更多的东西,所以这部分就要参考NVMe1.4规范了。

上图是一个双控制器/双端口的NVM子系统示例,在EMC DSSD之后,使用PCIe直连服务器和存储阵列的应用估计寥寥无几,所以该子系统基本上代表了双端口NVMe SSD 和JBOF机箱的设计。比如这里的NS(NameSpace)B,就可以通过2个NVMe控制器同时提供前端访问。

系统的规模再大点,就不是只靠双端口SSD能解决了。多主机通过多个NVMe控制器来访问同一个SSD命名空间,我理解这里的Namespace就类似于传统存储的(SCSI)LUN,而控制器和NVMe盘之间应该会有PCIe Switch。

上图中Host A对NSID 1的访问就有2个路径。具体到4个Controller,可能是x86“刀片”、FPGA或者像Mellanox Bluefield、Broadcom StingrayPS1100R那样的SoC“智能网卡”。

至于什么是Asymmetric Namespace Access(ANA,非对称命名空间访问)呢?这有点让我想起了传统存储阵列的ALUA(Asymmetric LogicalUnit Access)。

如上图,我理解NVMe Controller 1和2可能位于同一模块或者机箱内,而NVMe Controller 3位于另一模块/机箱。这时如果是PCIe Fabric,虚线两边应该拥有各自的PCIe Switch,之间又有互通。举例来说,SSD Namespace B和D同时连接到3个NVMe控制器,位于左边的Controller 1和2访问性能效率应该较高,而Controller 3不是最优路径。

我注意到NS B和D被划在了一个ANA Group,这个感觉也比较像传统存储的LUN分组,包括分配/解除映射、路径策略切换、QoS等操作都可以统一发起。如果存储软件支持快照等高级特性,创建时间点一致的快照可能也会调用这个ANA Group吧。

如果用基于RDMA或者TCP以太网的NVMe Fabric,情况会比PCIe要复杂一些,毕竟系统拓扑的规模也增大了,但原理应该和上面这个基本相同。

分布式存储/超融合支持NVMe-oF的要点

最后是前面留下的那个问题,NVMe规范对SSD的管理粒度只到NameSpace,而大多数对等节点的分布式存储/超融合都需要将底层磁盘(闪存)空间打散成更小粒度的数据块,这时就需要底层有个文件系统或者类似的对象组织结构,读写时产生的跨节点数据操作一般应该是通过私有协议来实现。

那么vSAN在计划中之所以能支持NVMe-oF,应该是将计算节点与JBOF/Lightbits解耦的原因,服务器节点更像是SDS管理网关的感觉。同时带有本地盘的服务器节点也能一起组成异构集群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/315871.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【基于Java Swing设计药品信息管理系统】——界面美观、功能全,可直接上手使用

一、基本功能描述 药品信息管理系统的选题背景主要是因为现今医疗行业中,药品管理和库存管理都是非常重要而复杂的工作。传统的手动记录、查询等方式耗费人力物力较多,并且容易出错。因此,采用计算机技术来帮助药品信息管理和库存管理已成为必要的趋势。 该药品信息管理系统…

【MATLAB源码-第106期】基于matlab的SAR雷达系统仿真,实现雷达目标跟踪功能,使用卡尔曼滤波算法。

操作环境: MATLAB 2022a 1、算法描述 1. 雷达系统参数设定: - 工作频率:选择一个适合的工作频率,例如X波段(8-12 GHz)。 - 脉冲重复频率(PRF):设定一个适当的PR…

BikeDNA(六)参考数据的内在分析2

BikeDNA(六)参考数据的内在分析2 1.数据完整性 见链接 2.网络拓扑结构 见链接 3.网络组件 断开连接的组件不共享任何元素(节点/边)。 换句话说,不存在可以从一个断开连接的组件通向另一组件的网络路径。 如上所述…

WPF实现右键选定TreeViewItem

在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem中实现右键菜单时,往往希望在弹出菜单的同时选中该节点,以使得菜单针对选中的节点生…

数据结构 模拟实现二叉树(孩子表示法)

目录 一、二叉树的简单概念 (1)关于树的一些概念 (2)二叉树的一些概念及性质 定义二叉树的代码: 二、二叉树的方法实现 (1)createTree (2)preOrder (…

密码学(三)

文章目录 前言一、Software Attestation Overview二、Authenticated Key Agreement三、The Role of Software Measurement 前言 本文来自 Intel SGX Explained 请参考: 密码学(一) 密码学(二) 一、Software Attesta…

Javascript jQuery简介

✨前言✨ 1.如果代码对您有帮助 欢迎点赞👍收藏⭐哟 后面如有问题可以私信评论哟🗒️ 2.博主后面将持续更新哟😘🎉本章目录🎉 🥝一.jQuery简介🥥二.JQeury常用API🍇1.jQeury选择…

Eclipse插件UCdetector清理无用JAVA代码

下载插件 UCDetector - Browse /ucdetector at SourceForge.net 目前最新版本是2017年的2.0.0 保存 Eclipse/dropins 重启 操作 在项目上右键

JavaScript Web Worker用法指南

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 Web Worker可以将耗时任务放到后台执行,避免阻塞UI。本文将详细介绍Web Worker的用法,让你…

【AWS】使用亚马逊云服务器创建EC2实例

目录 前言为什么选择 Amazon EC2 云服务器搭建 Amazon EC2 云服务器注册亚马逊账号登录控制台服务器配置免费套餐预览使用 Amazon EC2 云服务器打开服务器管理界面设置服务器区域填写实例名称选择服务器系统镜像选择实例类型创建密钥对网络设置配置存储启动实例查看实例 总结 前…

基于SSM中小型医院管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

高质量训练数据助力大语言模型摆脱数据困境 | 景联文科技

目前,大语言模型的发展已经取得了显著的成果,如OpenAI的GPT系列模型、谷歌的BERT模型、百度的文心一言模型等。这些模型在文本生成、问答系统、对话生成、情感分析、摘要生成等方面都表现出了强大的能力,为自然语言处理领域带来了新的突破。 …

面向零信任架构的访问安全态势评估

伴随着“云大物移”等新兴 IT 技术的快速发展,企业数字化转型使得 IT 业务的网络环境更加复杂多样,企业数字资源的安全防护正面临着前所未有的压力与威胁。零信任安全架构放弃了传统基于“边界”的安全模型,以访问上下文的安全态势感知为基础…

jdk、tomcat、mysql的安装windows项目部署

文章目录 1、安装jdk2、tomcat安装3、MySQL安装3、外部访问数据库 1、安装jdk 1.双击运行jdk-8u144进行一个安装 2.一直点击下一步,到修改路径那个地方把他的存放路径改到D盘 3.找到我们刚刚修改的那个路径点进bin目录然后复制该路径进行一个环境变量配置4.找到我的…

Gogs - 管理协作者

Gogs - 管理协作者 References 仓库设置 管理协作者 权限设置 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

41k+ stars 闪电般快速的开源搜索引擎 docker安装教程

目录 1.下载 2.启动 成功示例 3.创建索引 4.插入数据 4.1下载数据 4.2插入数据 4.3查看数据 5.官方地址 1.下载 docker pull getmeili/meilisearch:latest 2.启动 mkdir -p /opt/meili_datadocker run -it --rm \-p 7700:7700 \-v /opt/meili_data:/meili_data \ge…

SAP OData(二)Association

Entity之间用Association来表示关联关系,可以同CDS view中的Association一起理解。 我们在上次已经建好实体Item的基础上,再建一个Header,其方法的重写也参考Item即可,然后开始本篇的探索。 一,构建Association 1.1…

数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q

目录 ​​​​​​​ 二叉树的定义: *特殊的二叉树: 二叉树的性质: 二叉树的声明: 二叉树的先序遍历: 二叉树的中序遍历: 二叉树的后序遍历: 二叉树的层序遍历: 二叉树的节…

AVL树(Java)

目录 一、什么是AVL树 二、AVL树的实现 AVL树的节点 AVL树的插入 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 AVL树的验证 三、AVL树的性能分析 一、什么是AVL树 在了解什么是AVL树之前,我们先回顾二叉搜索树的概念 二叉搜索树(二叉排序…

pytorch学习笔记(八)

Sequential 看看搭建了这个能不能更容易管理,CIFAR-10数据集进行 看一下网络模型CIFAR-10模型 1 2 3 4 5 6 7 8 9 输入进过一次卷积,然后经过一次最大池化&#…