NVMe Over Fabric ---一块SSD引发的速度竞赛

-回复 -浏览
楼主 2020-05-27 08:11:58
举报 只看此人 收藏本贴 楼主

     周末去隔壁参加了一个Oracle广州嘉年华活动,在这个数据库论坛上,一家做网络设备的公司做了一个存储相关的分享,让我收获很多。



先别问Mellanox是什么公司哈,我也是刚百度出来.....


       这家小而专的公司,看上去也是专注做连接的,和700一样:)分享中的一个观点,生动地说明了数据中心领域,硬件和软件是如何彼此促进,共同推动IT架构螺旋式向前发展的。


       ——服务器处理能力的发展,就是一个存储、计算、网络和软件相互“甩锅”的过程。

                      


  • 最早的背锅侠 – 硬盘



  图1 机械硬盘:陶醉于5400,7200转手速的麒麟臂


在企业应用里,处理能力的瓶颈往往在数据库,而数据库的瓶颈一般在IO,因为传统机械硬盘的磁头寻道机制,使得数据落盘相比于CPU运算、内存和网络传输,效率要低得多。


                  图2 传统机械硬盘下的处理延迟


      从上面的技术栈中可以看出,在机械硬盘时代,磁盘的IO延迟决定了整个系统的处理延迟(最少也要6毫秒),是当之无愧的背锅侠,其他两位(网络、软件系统)则可以安于现状不思进取,因为优化了也没什么用,处理瓶颈还在硬盘IO。

      而机械硬盘时代偏偏又特别漫长(现在大部分服务器硬盘还是HDD),因此服务器存储的接口和协议也都是按照机械硬盘的标准设计的:


                图3 SAS/SATA硬盘接口


传统机械硬盘的SAS/SATA接口,CPU与硬盘之间必须经过磁盘控制器,进一步降低了IO访问速度。


  • 一代甩锅侠(SSD硬盘)与接锅侠(SAS/SATA硬盘接口)

随着大容量闪存技术的成熟和成本下降,SSD硬盘在数据中心存储中逐渐普及。闪存使用半导体技术进行数据访问,告别了机械硬盘磁头寻道的方式,使得IO能力大幅提升。

 

                        图4 SSD固态硬盘


但由于现有服务器上的硬盘接口标准(SAS / SATA)都是按照高延时的机械硬盘而设计的,SSD硬盘接入需要兼容现有接口。随着SSD的性能逐渐增强,这些接口标准已经成为限制SSD的一大瓶颈(如上面图三中的磁盘控制器),使得SSD硬盘强大的IO能力无法完全发挥


  • 二代甩锅侠(NVMe接口)与接锅侠(存储网络)

说了半天,我们的主题NVMe Over Fabric还一个字都没出现。

别着急,NVMe(新一代硬盘接口)和Fabric(存储网络)正是第二代甩锅侠和接锅侠的主角:)

随着容量更大、性能更高、成本越来越低的SSD硬盘成为未来确定趋势,不再背锅的时候,原来不思进取的软件系统层和网络层开始坐不住了。首当其冲的是SAS / SATA硬盘接口标准,由于已经成为限制SSD性能发挥的瓶颈,责无旁贷地扛起了性能突破这口大锅。


                    图5 NVMe硬盘接口


革了SAS/SATA命的是新一代存储设备接口标准NVMe(Non-Volatile Memory express,非易失性存储器标准),翻译成中国话就是专门为SSD存储设计的接口协议。和传统SAS/SATA接口协议相比,NVMe接口具有两大优势:

1、低延时

如图五所示,NVMe采用PCI-E“存储直连CPU”通道,取代了传统SAS/SATA的“南桥控制器中转,再连接CPU”的方式,同时精简了指令调用方式,执行命令时不需要读取寄存器,大大降低了CPU访问SSD存储的延时。

2、良好的并行性

SSD硬盘的一个特点是并行度很高(多个Nand块同时工作),可以更好地支持并发读写。但传统SAS / SATA接口支持的IO队列数量为1,最大队列深度为32。在NVMe标准下,支持的队列数量为64k,最大队列深度可达64k,因此大大提高了存储的IOPS(与队列深度成正比,与IO延时成反比)。

         图6 机械硬盘HDD到NVMe SSD的IOPS提升

         图7 机械硬盘HDD到NVMe SSD的延时下降


NVMe SSD有多强大,看看为其代言的三星SSG战队在英雄联盟S7全球总决赛里,击败两连冠的SKT夺得总冠军就知道了。


         

      图8  SSG安掌门 – 我为NVMe SSD带盐


计算、网络、存储构成了完整的数据访问链路,是一根绳上的蚂蚱,NVMe SSD使得CPU访问存储速度爆表,存储表示不再背锅,那这锅甩给谁呢?没错,计算跟网络…...

现代IDC中,由于数据量巨大,本机硬盘已经远远满足不了容量和性能的要求,需要外接专有存储,实现计算与存储的分离。通常方式有集中式的磁盘阵列(如EMC存储)和分布式的存储集群(如Ceph)。“存储区域网络”(SAN,Storage Area Network)正是计算与存储节点间传输数据的桥梁。目前常用的SAN有IP-SAN和FC-SAN,分别使用以太网/光纤网络作为传输介质和协议。我们以常用的IP-SAN为例,看看在计算节点远程访问存储节点硬盘(注意,我们假设存储节点已经使用NVMe SSD硬盘,IO性能爆表了哦~)的情况下,性能瓶颈在哪里。


                 图9  存储网络的开销成为性能瓶颈


从上图来看,IP-SAN方式下,数据要从存储节点的NVMe SSD硬盘,搬运到计算节点的应用程序里,要经过10步之多,每一步都会造成延迟和消耗CPU!! 实验表明,仅仅发送和存储数据,对计算/存储节点的CPU占用就在30%~40%。CPU表示这锅我不背,我本该是用来做计算的吧…...


  • 终极甩锅侠(RDMA)

终极话题来了,NVMe不Over Fabric还好,一旦Over Fabric(通过网络访问远程SSD),CPU和存储网络都成了瓶颈。那么如何突破存储网络下,计算节点远程访问存储SSD的瓶颈呢?

Oracle在他的性能怪兽产品 -- Exdata数据库一体机中,率先给出了工业上的示范。

       图10  基于Infiniband架构的Exdata一体机


      基于Infiniband架构的存储网络,可以完美支持RDMA(Remote Direct Memory Access,远程内存直接访问)协议,这个协议正是为了解决网络传输中服务器端数据处理的延迟而产生的。

     图11  RDMA协议简化网络存储访问路径


和之前的图9对比可以发现,RDMA通过专有的HCA网卡,实现了数据从存储节点的内存(用户态)直接拷贝到计算节点的内存(用户态),完全省去了图9中的2~10步骤,同时使得CPU不再参与繁重的数据包封装与读取,内核用户态切换等工作,可以专心做自己的本职工作– 计算。


  图12  从机械硬盘HDD到NVMeOver Fabric (RDMA)


 至此,数据处理完成了从“硬盘提升(SSD)“到“接口协议改进(NVMe)“到“网络协议改进(RDMA)”的优化过程,上演了一场存储、计算、网络和软件间的“甩锅”大战。这场大战可能永远不会终止,因为总会有性能瓶颈也就总会有背锅侠,这也是硬件驱动软件变革、软件驱动架构变革的IT发展的真实写照吧。

PS.:传统的RDMA实现还主要依赖于特定硬件(Infiniband交换机和网卡),比较成熟但不太符合未来数据中心云化、通用化的方向。一个好消息是,目前RDMA已经可以在以太网上实现 – ROCE (RDMA over Converged Ethernet),阿里云也推出了基于ROCE和NVMe SSD的POLARDB数据库产品。随着未来25G,40G高速以太网的发展普及,相信又快又适合大规模部署的RDMA存储网络,会逐渐取代现有的FC、ISCSISAN网络,成为主流。

结合我们的场景,云Oracle的性能瓶颈正是在CPU,Ceph本身就是消耗CPU的大户,也许未来,云Oracle也可以通过RDMA的方式实现NVMeOver Fabric,搭建自己的一体机方案。


我要推荐
转发到