当前位置:首页 > 问答 > 正文

聊聊NVMe和NVMe-oF那些复杂又有趣的东西,感觉没那么简单但挺重要

聊到NVMe和NVMe-oF,很多人可能觉得这是数据中心里工程师才需要关心的硬核技术,离我们很远,但其实,它们背后的思想非常有趣,可以理解为一场关于数据“高速公路”的彻底升级,目标就是解决我们时代最核心的矛盾:数据产生的速度远远超过了我们处理和存取它的速度。

聊聊NVMe和NVMe-oF那些复杂又有趣的东西,感觉没那么简单但挺重要

咱们先聊聊NVMe,你可以把传统的硬盘接口(比如SATA,就是以前接机械硬盘和早期固态硬盘的那个)想象成一条双向两车道的省级公路,而固态硬盘(SSD)本身呢,就像一台性能超强的超级跑车,问题来了:你把一台法拉利放在一条限速很低、还容易堵车的两车道公路上,它能跑得起来吗?显然不能,它的强大性能被这条破路彻底拖累了,这就是早期SSD面临的尴尬,硬盘本身很快,但通往电脑CPU的“路”太窄太慢,成了瓶颈。

NVMe就是为了解决这个问题而生的,它不像SATA那样是“盘踞”在老旧主板上的接口协议,而是专门为闪存这种“跑车”设计的、直接连接CPU的“双向十六车道高速公路”。(来源:NVM Express组织官方白皮书)这条路的规则也变了,以前SATA时代,数据请求要排成一个长队,一个一个处理,就像在收费站只有一个收费口,NVMe则允许成千上万个指令队列同时进行,每个队列都能排很长的队,相当于开了无数个收费口,让超级跑车们能并行狂飙,NVMe SSD的延迟极低,速度快得惊人,现在我们个人电脑里那种能让系统秒开、游戏加载飞起的固态硬盘,基本都是NVMe协议的,它解决了“本地”数据存取的速度问题。

聊聊NVMe和NVMe-oF那些复杂又有趣的东西,感觉没那么简单但挺重要

但故事到这里只讲了一半,随着云计算和大数据的爆发,数据不再只安分地待在一台服务器里,比如你刷短视频,视频文件可能存储在机房中某台专门的存储机器上,而负责解码和推送视频的计算服务器是另一台,这就产生了新的需求:怎么能让一台计算服务器像使用自己肚子里的硬盘一样,去高速访问另一台存储服务器里的硬盘呢?传统的网络存储方式,比如通过以太网走的iSCSI,或者更早的光纤通道,就好比用普通的货运火车来运输数据,虽然能运,但速度慢、延迟高,手续繁琐,无法发挥NVMe SSD的性能。

NVMe-oF(NVMe over Fabric)登场了,这里的“Fabric”可以理解成“网络织物”,其实就是指各种高速网络,比如以太网或InfiniBand,NVMe-oF的精髓在于,它把NVMe那条高效的“高速公路”通过网络“延伸”了出去。(来源:SNIA(全球网络存储工业协会)相关技术讲解)它做的事情非常巧妙:它定义了一种“语言”或“协议”,让计算服务器发出的NVMe指令(原本只能在机器内部使用),能够被原封不动地打包,通过网络传输到远端的存储服务器上,那边的存储服务器听懂后,直接操作自己的NVMe硬盘,再把结果按原路返回。

这带来了几个巨大的好处:第一是极致性能,因为指令是原生的,几乎没有额外的转换开销,延迟可以做到非常低,接近直接访问本地NVMe硬盘的体验,第二是解耦与灵活性,计算资源和存储资源可以分开独立扩展和管理,需要强大算力的就多买计算服务器,需要海量存储的就扩展存储服务器,非常灵活,这就是所谓的“解耦架构”,第三是资源共享,一个高性能的NVMe存储系统可以被网络上的多台服务器同时高速共享,就像建了一个巨大的“闪存资源池”,资源利用率大大提高。

NVMe-oF世界也有其复杂和有趣的选择题,最主要的两种实现路径是NVMe/TCPNVMe/RoCE,NVMe/TCP就是跑在标准的TCP/IP网络上的,它最大的优点是兼容性强,利用现有的、最普遍的网络就能部署,门槛相对较低,但TCP协议本身为了保证可靠性会有一些处理开销,性能虽远胜传统方式,但并非极致,而NVMe/RoCE则要求网络硬件(网卡、交换机)支持RDMA技术,这是一种“远程直接数据存取”,可以理解为数据包不经过对方服务器的CPU,直接写入内存,相当于给数据包开了“特权通道”,极大地降低了延迟和CPU占用,性能极佳,但对网络环境要求很高,需要专门配置。(来源:多家厂商如英特尔、博通的技术文档对比)

你看,从NVMe到NVMe-oF,本质上是一场追求“速度与效率”的接力赛,NVMe解决了单台服务器内部的数据存取瓶颈,让数据存取从“省道”升级到“高速公路”;而NVMe-oF则进一步,通过先进的网络技术,把这条高速公路变成了连接整个数据中心的“高速路网”,让数据可以在这个路网中以前所未有的速度自由流动,这不仅仅是技术的迭代,更是支撑我们未来AI训练、实时大数据分析、高性能数据库等一切低延迟、高吞吐量应用的关键基石,它看似隐藏在幕后,却实实在在地决定着前端应用的体验和可能性。

聊聊NVMe和NVMe-oF那些复杂又有趣的东西,感觉没那么简单但挺重要