• <ins id="kcjlw"></ins>

    <tr id="kcjlw"></tr>
      <output id="kcjlw"></output>

        全国统一服务电话 400-108-0268

        功能介绍

        清华大学教授舒继武:存储系统发展趋势的思考

        发布时间:2022-05-08 来源:本站

        4月14日,中国计算机学会信息存储专委会主任委员、清华大学计算机科学与技术系教授、厦门大学信息学院院长舒继武在“2022分布式存储线上论坛”开场发表《存储系统发展趋势的思考》主题演讲,分享存储系统发展的最新趋势,以及基于这些趋势对存储系统与技术发展的方向思考。

        存储系统发展的三大趋势

        1、存储金字塔架构层级逐渐模糊

        传统存储系统硬件从硬盘到NVMe SSD,再到上面的DRAM甚至缓存的存储金字塔架构,不同层级之间容量和性能都存在数量级差异。但随着一些新型硬件的产生和应用,如英特尔AEP等使得这些层级逐渐模糊,传统金字塔架构改变为类似大雁塔架构。

        2、数据中心进一步的极致追求

        第二个问题是数据中心,从前追求吞吐量,现在追求极致,包括性价比、能耗、用户体验等,在这种情况下传统机架式数据中心资源利用率低下,扩展不灵活、调度不灵活等缺点暴露无遗。

        数据中心业务有高扇出的特点,导致很多服务器延迟高于均值,因此尾延迟越来越受重视。例如天猫购物,一个请求发出需要后端上千台服务器响应,必然涉及尾延迟。传统CPU有流水线能做一些延迟隐藏,可以达到微纳秒级延迟,操作系统现在来说还是微毫秒级延迟,想让整个系统维持微秒量级的延迟还很困难,目前没有很好的解决机制。

        3、计算任务从主机端卸载到设备端

        第三是新型硬件的出现为整个系统设计带来的问题。例如可编程SSD,里面包含ARM/FPGA,能够处理专用数据,可编程交换机里包含ASIC,能处理专用数据包,还有智能网卡等,新的器件/设备的产生能很好地应对数据密集型和计算密集型应用。与此同时,新设备的产生也使得我们在设计软硬件时要考虑协同关系,包括IO栈如何重新设计,分布式协议如何重构等问题。

        存储系统与技术发展带来的思考

        1、低延迟高吞吐的软件设计思考

        基于以上三个发展趋势,再谈谈这些存储系统技术发展所带来的思考。由于时间关系主要讲两点。第一就是多级存储介质下的存储软件要如何考虑——新器件的到来让存储器变成多级架构,还有传统数据中心变成了硬件池化架构,其软件系统需要考虑哪些问题。

        首先,随着NVMe SSD的产生,带宽变化很大,传统HDD带宽约为80MB到100MB/s,现在傲腾SSD能达到7GB/s,延迟也有数量级变化。硬件性能激增的同时也要求稳定性,因此请求带宽和延迟抖动相对来说较小。另一方面硬件并发度增加,让你能同时处理更多请求数,以上是硬件变化。

        还有接口变化,像传统闪存系统提供软硬件交互,支持4KB块接口访问,是普通的单接口SSD,软件性能相对效率较低,优化也比较难。然后像英特尔又推出了一种双接口SSD,里面除了提供块接口外还同时提供直访字节接口,这样在软件和可靠性上有所提升,我们也曾经在这方面做了相关一套软件,确实性能比传统要高的多。

        还有像三星推出一种专门针对键值接口的SSD,能进行定向优化键值存储,因为是定向专用,所以只支持键值存储,无法支持文件系统。

        从硬件变化到接口变化再看架构变化。传统软硬件分层设备有一个FTL(Flash Translation Layer)转换层,存在比如性能问题——功能冗余、语义隔离(包括里面存在的写放大),还有耐久性问题,但它是标准硬件。

        之后还有开放通道SSD,我们在软硬件协同设计方面做了十多年的工作,主要克服普通SSD的性能和可靠性系列问题,尤其在云/数据中心里面得到很多应用,能进行性能隔离和定向优化,其存在问题在于硬件改动较大。

        近两年,西部数据还推出了一种分区SSD,基于Open-channel SSD开放架构,主要是把Zone分出来做一个抽象,缓解普通SSD的可靠性,其性能介于前面第一类和第二类之间,优势是硬件改动相比开放通道SSD较少。

        硬件接口和架构产生变化之后还要考虑系统设计,旨在实现低延迟高吞吐软件设计。这种设计用于内核态、用户态,或者两者优势兼具的新操作系统,在业界还一直有争论,内核态提供标准化抽象和封装,但里面有很多场景切换,性能相对较低,还存在内核开销等问题,优势是兼容性强,安全性高。

        用户态支持直访,性能较高但存在安全和兼容性问题。还有一种内核态和用户态协同,包括清华等很多单位在这方面都在做探索。

        另外,随着硬件变快以及CPU核数的增加,很多传统串行技术,现在变为采用并行技术降低延迟,提高吞吐率。比如Linux的NVMe,软件和硬件串行操作,延迟较高,如清华采用ccNVMe,通过软硬件操作并行来降低延迟。在吞吐率方面,通过做多任务/应用聚合吞吐来弥补传统像三星F2FS在扩展性上的不足。

        2、高速存储和网络协同设计

        另一个是高速存储和网络协同设计。存储介质要与网络介质匹配,存储介质性能才会发挥到最大,因此像NVMe SSD,基本上是与RDMA网络构建系统,NVMe over RDMA在业内比较热门。我们在NVMe over RDMA方面有很多研究,特别是轻量存储池化软件的设计,其核心是绕开服务器网络栈,节省网络栈开销,尤其是能让数据从智能网卡直达SSD,提供高吞吐和低延迟便利。

        除此之蛙,如斯坦福大学还提出硬件辅助虚拟化来加速IO路径,华盛顿大学通过智能网卡卸载存储功能以便提升硬件性能。

        硬件资源池化下的系统软件

        传统数据中心的架构缺陷

        大家知道传统数据中心是由很多的单一服务器互联起来,处理器和内存按照不同趋势发展,也就有了右图的剪刀差,导致数据中心内存不足就要加服务器,CPU也跟着增加,其实我们只想增加内存,计算能力是足够的,同理,CPU不足,增加服务器也就增加了多余的内存,这样会导致资源利用率低下,部署不够灵活。

        当然还有采用一些分布式技术让多个服务器进行协同处理,但目前基本上这种计算存储任务执行还是局限于单个服务器,分布式技术还解决不了这些问题。

        解耦数据中心架构

        解耦数据中心的架构,即做硬件资源池化是一个理想化的想法,也是一种趋势。硬件资源池化就是在数据中心里构建不同池子,CPU计算池,内存池,存储池,这些资源池用高速网络连接起来,现在英特尔、惠普都有这方面一些研究。

        当然这些池子通过高速互联网连接,对网络存在很大的挑战。但这样的部署设计,CPU计算能力不足就扩展CPU池,内存不足就扩展内存池子,升级简单,硬件资源利用率更高。

        当然理想很丰满,最大的问题是高速网络,网络传输性能会对Rack-Scale落地有制约,当然现在有很多公司在这方面进行努力研究。还有一个全新的开放协议——CXL,近年来发展势头很猛,也成为解耦互联的主流协议,国内很多企业也加入其中。英特尔去年成立CXL联盟,发布了从1.0到1.1,到现在2.0的CXL规范,正在努力缓解解耦数据中心的网络。

        CXL科普

        CXL不同于无线网及数据中心网络的连接模式,是全新的网络协议,支持三种模式——访问外存设备、处理器访问内存、设备访问内存,在物理层和协议层做了很多重新设计,能提供高吞吐和低延迟。

        系统设计对应要考虑如何使用,这里涉及到操作系统和运行时系统,资源池化的操作系统设计要考虑怎么将操作系统里的任务切分给不同硬件组件去做,组件还要去中心化,还要做好局部性,让网络有更好的支持。另外需要提供这种虚拟机抽象给应用层兼容现有软件,这是操作系统层要考虑的。

        运行时系统则要首先考虑支持高级语言比如java,还要应对传统垃圾回收效率低的问题,进行分布式动态内存垃圾回收,还有一些公司在把垃圾回收卸载到内存节点上去做。

        纯硬件方面由于网络问题无法快速落地。清华团队是基于软件、逻辑的角度来构建一个分布式持久性内存存储系统TH-DPMS,通过RDMA把持久性内存统一进行互连,构建具有全局地址空间的内存共享池,对外可以提供内存访问接口,对象接口等服务,具有高性能和扩展性,编程简单易管理,安全性也比较高。

        总结

        随着新硬件的产生,存储不再是从前的存储金字塔架构,而是类似大雁塔架构,另外一个数据中心原来追求规模到吞吐力,现在追求资源利用率到尾延迟的方向,而在这个方面思考了多级存储介质下存储软件设计,以及硬件资源池化下的系统软件发展方向。

        文章转载至:存储在线


        关键词标签:海量存储 文件存储 分布式存储 国产存储 私有云 企业级存储 软件定义存储

        返回列表
        上一篇:数据保护寄希望于“云”,靠谱吗?
        下一篇:数据保护寄希望于“云”,靠谱吗?
        www.男人的天堂.com
      1. <ins id="kcjlw"></ins>

        <tr id="kcjlw"></tr>
          <output id="kcjlw"></output>