计算、存储、网络是现代企业IT硬件基础架构的核心。基于Flash和新一代PCM固态存储的SSD正在极大的改变企业存储的格局。可以说NVMe就是针对新型的Non volatile memory而量身定制的。对于今天的应用来说,基于NVMe协议的SSD可以提供对性能、延迟、IO协议栈开销的完美优化。而对于计算和网络来说,如何能够适应这种存储上的变化,则是在NVMe协议逐渐走向成熟后需要解决的一个核心问题。

一个简单的例子就是今天随便一个SSD高达几十万IOPS的随机读写性能对于今天的单机应用来说简直是过于浪费了。同时,固态存储也带来了客观上高密存储的可能性。今天的基于2.5# U.2接口的NVMe SSD可以轻易做到10TB以上的容量。如果一个服务器接入8个这样的SSD,可以实现80TB的存储容量。

解决这样问题的关键,则是通过共享机制,并将存储容量池化在多个计算节点间共享使用。显然,这与存储的虚拟化和云化以及软件定义存储的方向是吻合的。从更广泛的意义上来说,公有云和私有云正式通过了高度的共享和灵活的配置来实现成本节约,可靠性提升和便利管理。

从下面的Wikibon Server SAN Research Project报告结果来看,基于DAS和传统的SAN,NAS的市场正在被超大规模企业云和企业Server SAN存储方式逐渐取代。而决定这种替换的速度,则是来源于新技术的可行性以及企业对于采纳这些新技术的接受程度。NVMe over Fabrics把NVMe协议在单系统时代提供的高性能、低延迟和低协议负担的优势进一步发挥到了NVMe存储系统互连结构中。

在这种结构里,基于NVMe over Fabrics的主机可以通过互连结构访问到任何一个数据中心的存储节点,而这种访问是具有同样高性能、低延迟和低协议负担的优势。更加难能可贵的是,NVMe over Fabrics协议是构造在其他的传输层协议基础之上的,因此可以使用原来的传输层协议配合NVMe over Fabrics的协议实现这些优势,并不需要摒弃数据中心已经建设好的硬件环境。

在NVMe over Fabrics协议诞生之前,基于SCSI的众多互联协议已经在考虑如何改善系统性能并降低CPU的负担了。iSCSI协议提供了基于IP以太网的SCSI互联协议,它仅仅依赖传统的IP网络,提供了可共享的存储方式。由于iSCSI依赖于TCP协议,并且TCP协议本身代价较大,因此它的性能在通常的配置下并不好。为了优化iSCSI的性能,扩展了iSCSI Extensions for RDMA (iSER)。

iSER是面向各种RDMA传输层协议的存储协议,由于RDMA效率很高,iSER相比于iSCSI协议来说具有非常好的性能、极低的延迟和CPU使用率。但是由于iSER仍然是基于SCSI这个存储协议进行扩展的,因此在协议栈的组织上仍然受限于SCSI协议的限制,例如队列的数量、深度等。在性能达到几十万IOPS的时候仍然会有较大的协议开销。基于上述原因和出于对未来NVM存储功能要求的需要,NVMe over Fabrics协议应运而生。

NVMe over Fabrics协议定义了使用各种通用的传输层协议来实现NVMe功能的方式。在协议中所指的传输层包括了RDMA,Fiber Channel,PCIe Fabrics等实现方式。依据具体的传输层不同,又有不同的传输层绑定协议去具体规范每一种互联网络所具体需要实现的传输转换层实现。例如,INCITS 540 Fibre Channel – Non-Volatile Memory Express (FC-NVMe)规定了对于FiberChannel这种媒体所支持NVMe over Fabrics所必需实现的接口方式。

由于NVMe over Fabrics协议的这种灵活性,它可以非常方便地生长在各个主流的传输层协议中。不过由于不同的互联协议本身的特点不同,因此基于各种协议的NVMe over Fabrics的具体实现活跃都是不同的。一些协议本身的协议开销较大,另一些需要专用的硬件网络设备,客观上限制了NVMe over Fabrics协议在其中的推广。下表列出了一些典型的协议的优缺点。

虽然有着众多可以选择的互联方式,这些互联方式按照接口类型可分成三类:内存型接口,消息型接口和消息内存混合型接口。相应的互联类型和例子参见下图。

本文作者路向峰现任Memblaze公司CTO,文章最先发布于公众号晶格思维(crystalwit)。该系列文章将从NVMe over Fabrics的诞生背景及技术细节入手,向读者全面解析当下存储领域这一热门话题。文章后续部分将陆续发布于本公众号,读者亦可扫描下面二维码关注晶格思维公众号阅读原文。

为了部落:NVMe over Fabric诞生记相关推荐

  1. 为了部落:NVMe over Fabric诞生记——RDMA篇

    (之前的章节介绍了NVMe over Fabrics的发展背景及协议的基本内容,查看上文<为了部落:NVMe over Fabric诞生记>,这节将介绍与NVMe over Fabrics ...

  2. NVMe over Fabric诞生记——RDMA篇

    公元2016年6月8日,伴随着众多粉丝的期待,这部耗资1.6亿美元,改编自<魔兽争霸:人类与兽人>游戏,拥有众多英雄人物史诗般的IMAX 3D电影在中国大陆上映.<魔兽>电影展 ...

  3. bug诞生记——临时变量、栈变量导致的双杀

    这是<bug诞生记>的第一篇文章.本来想起个文艺点的名字,比如<Satan(撒旦)来了>,但是最后还是想让这系列的重心放在"bug的产生过程"和" ...

  4. 大V诞生记 —— 谁是VMware?

    大V诞生记 -- 谁是VMware? (点击阅读原文,一键收听微电台"大V科技谈") https://mp.weixin.qq.com/s/QtPrki9V7BNFOx53_3gW ...

  5. mapbox 导航_寻宝风格导航地图 Treasure 诞生记 | Mapbox 地图设计思路

    Designing the Treasure map style 不久前,我们为大家介绍了霓虹灯风格地图 80's 8-bit 的设计思路,这篇文章我们继续分享一个有趣的地图设计 -- 寻宝风格地图 ...

  6. 谷歌Gmail诞生记:十年回首

    美国<时代>周刊网络版今天刊登题为<Gmail诞生记:10年前鲜为人知的故事>(How Gmail Happened: The Inside Story of Its Laun ...

  7. 2019领克车展 Max Co币机诞生记

    领克车展 Max Co币机诞生记 网上拿张现场图 先引用一篇时下2019上海车展文章的段落 上海车展新车满满,领克展台玩起了"骚操作" https://chejiahao.auto ...

  8. “爱运动管理系统”诞生记(4)

    "爱运动管理系统"诞生记(4) 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 照着<21天学通C语言>,把C语言粗 ...

  9. Apache DolphinScheduler 诞生记

    Apache DolphinScheduler 诞生记 DolphinScheduler,简称"DS", 中文名 "小海豚调度"(海豚聪明.人性化,又左右脑可互 ...

最新文章

  1. 基于比特币现金的Token逐梦而来
  2. c malloc 头文件_C 数据类型
  3. 通过Nginx复杂安装
  4. Mybatis入门程序增删改查操作
  5. Spring后端接收表单方式上传的文件和数据
  6. 20200120每日一句
  7. 机器学习算法应用_机器学习:定义,类型,算法,应用
  8. allegro转AD教程
  9. AEJoy —— 表达式之通过 sampleImage() 营造遮蔽效果【JS】
  10. 如何把pdf转换成ezd_电脑怎么把pdf转换成ppt
  11. 创建VSIX项目模板
  12. 【西祠日志】【19】【20】有人说,21天可以养一种习惯
  13. Python之 函数笔记
  14. flappy+bird+android源代码,Flappy Bird(安卓版)逆向分析(一)
  15. 《诗水人间优秀博客》摘选目录
  16. 不使用layer的masksToBounds和cornerRadius来设置圆角
  17. 关于ARM指令的英文全称(方便记忆|巧记汇编指令)
  18. 龙虎榜股票数据分析软件机构席位游资主力意图趋势选股短线涨停
  19. 【计算机科学基础】程序的编译与运行
  20. 2017年蓝桥杯模拟赛

热门文章

  1. springboot整合elasticsearch及热更新字典及同义词
  2. 2021,码上归来(内有红包)
  3. 【教程】40G MTP-LC光纤配线架实现4x10G LC布线
  4. Python中取反的理解
  5. 如何做一个基于微信校园浴室预约小程序系统毕业设计毕设作品
  6. 题目分享:求多边形的对角线的交点
  7. java幻灯片效果_java中怎么实现幻灯片切换特效?详细实例展示
  8. 深度学习开发环境及编程基础
  9. python设置背景图片
  10. 在Excel中sumif和sumproduct的用法