冯丹:面向服务的异构融合存储系统与技术

大数据时代,数据呈爆炸式增长趋势,全球数据量每年以60%的速度递增。据IDC统计,2013年,全球数据量为4.4ZB,2020年将达到40ZB。长此以往,数据存储力有不逮,现有存储模式面临巨大挑战,亟需稳中求变,面向复杂应用环境的数据存储系统与技术研究成为我们实现未来可控的一个重要课题。

11

12月9日,以“新存储,新常态,新应用”为主题的中国存储峰会于北京悠唐皇冠假日酒店召开。下午超融合技术论坛上,中国计算机学会存储专委会主任委员,华中科技大学计算机学院院长冯丹女士在发表的《面向服务的异构融合存储系统与技术》主题演讲中指出,异构融合是将新的存储技术和传统硬盘融合,构成一个智能存储节点,再通过多个智能存储节点互联来构成系统。区域之间相互协作,满足不同应用的需求。

冯丹表示:“量变导致质变,存储模式需要变更,不能用一堆硬盘或者SSD摞起来。而存储逐渐从服务于单个机器,单机外设慢慢变为服务众多的应用。无论是超级计算,还是网络应用都在呈现服务化趋势。”

因此,在大会上,她主要从存储器件融合,系统融合还有面向服务的保障技术三部分详细介绍了面向服务的异构融合存储系统与技术。主要包括三点:

1.形成异构融合非易失性存储控制器及设备,针对PCM、Flash等器件特性进行优化,提高性能及寿命;

2.形成面向服务的异构融合对象存储体系;

3.形成服务等级目标保障技术,精确保障用户I/O带宽、访问延迟等。

以下为冯丹女士的演讲实录:

今天我给大家带来的演讲报告是面向服务的异构融合存储系统与技术。

主要是从这存储器件融合以及系统融合还有面向服务的保障技术三部分来介绍。

大数据时代,我们面临数据存储能力不足的巨大挑战

应该说当前大数据时代使得数据爆炸式的增长的趋势,导致数据的摩尔定律每年60%的增长率。也就是导致我们的数据量越来越大。据IDC统计,2013年,全球数据量是4.4ZB,2020年将达到40ZB。这么多数据怎么样存下来,首先就是一个挑战。量变导致质变,存储模式也需要变更,不能用一堆的硬盘或者SSD摞起来。

它的发展趋势,存储慢慢从服务于单个机器,单机外设慢慢变成服务众多的应用。无论是超级计算,还是网络应用都是呈现服务化的趋势,比如说中国的神威太湖之光还有美国Cray超级计算机系统Titan。包括气象分析、天气预报、生物医药、新材料、工程设计等等众多的应用,每种应用对存储的需求是不一样的。如何满足不同应用这种需求,就是一个问题。

除了高性能计算之外还有我们接触最多的,比如网络的存储服务,国外的亚马逊,谷歌,国内的阿里、腾讯云都面对这样的问题,每个月数据的增量,无论是微信朋友圈,还是QQ空间,2到3PB,怎么样靠低能耗方式存起来,都是问题。我可能最近一段时间朋友圈里的照片大家都来点赞,过一段时间可能你还保存着,多少年之后还希望能看一看。怎样在存储这一级实现我随时能够访问,系统这一级又能够以最低成本,最低功耗,最省容量的方式存储,这些都是难题。也就是说各种各样的应用对于存储的需求多种多样,需要按需服务。

具体来说就是存储资源种类非常多,如何构建海量存储系统?用户数据的种类也是多种多样,结构化、半结构化、非结构化数据,如何以最合适的方式放在存储上面?还有我上面的应用也是种类非常多,无论高性能计算类型还是网络应用对这个需求都不一样。高性能计算大部分是我要高的聚合带宽,对网络应用来说需要的是IOPS要高等等这些需求导致了我们怎么样来构建一个能够满足不同需求的存储系统的方式成为一个难题。

我们总结两个问题,一个就是我怎么样来构建一个存储系统。第二怎么样来服务于不同的应用。它的表现就是高性能,高可靠、高可用,低能耗等等能够最终实现按需服务。

异构融合的概念

我们应该说是在从2010年开始就提出异构融合的概念,开始做相应的研究。今天给大家汇报一下我们做的一些工作。总体思路就是将新的存储的技术和传统的硬盘来融合一起,构成一个智能存储节点。

通过多个智能存储节点互联来构成系统。区域之间能协作,来满足不同应用的需求,也就是我们所说的分布式系统。

多个数据之间可以构成一个多云的系统,利用每个云的不同特点,亚马逊的云肯定要收费,但服务可靠。360的云已经关闭了,它是免费的,但过一段时间可能不服务了。我怎么样来构建一个多云的系统来满足应用的不同需求,使得合适的数据放置在合适的地点做一些相应的工作。也就是说我们在系统一级都要做相应的融合技术,满足这种按需存储的需求。

存储器件的融合

a

在这里我首先跟大家分享的就是在器件一级的融合,我们看一下左边是传统体系结构,现在如何把新的器件技术加入进来?我们认为它可以融合在一起完成,我们就叫做异构融合。在硬件上FPGA向主机提供的是PCI-E的接口,这里提供了四个DMA的接口卡,做得是PCM卡。在这里面我们为了探索PCM到底是用来代替外存还是代替内存,贴了PCM的芯片。在PCM芯片用作内存使用的时候,是怎么样的一个使用方式。

我们做了设备原型,也是一个PCIE的卡,对主机实现就是支持NVME协议。子卡是Flash,可将它作为扩展内存使用。当我全部配成Flash卡的时候,可以把它当成SSD使用。我们探索当两种融合的时候,有什么可做的工作呢?

我们针对PCM的特性做了一些工作,它的主要特点就是阻值在晶态和非晶态之间存在一个不对称,读快写慢。写0和写1不对称,由原点决定。写1就是再结晶的过程,它的能耗要求比较低,中温,再结晶的过程时间比较长,写1慢,能耗低。写0是高温淬火的过程,能耗比较高,写0要快。利用这个我们做了相应优化,而它整体来说PCM相对Flash要快4-10倍的量级。基本上可以达到DRAM的访问速度,几十纳秒的量级。我们利用这个发挥所长,我们传统Flash构成的SSD存在的问题是通道里有很多闪存芯片,但只有一部分是真正存数据的。在查表时,需要查询数据所在位置,真正数据的读写还要征用数据通道,导致闪存效率较低。

而我们的原型系统中采用PCM和Flash,各取所长。用PCM做查询时要进行很多次操作,读完改写次数比较多,用它来做内存。数据在闪存上外存,可以提高性能。

feng1

最终,异构融合结构的固态盘在性能、寿命上基本接近或等于理想的纯内存页级映射结构。我们采用这种混合结构之后,基本和最理想的页级映射性能差在百分之零点几,基本可以接近最理想的页级映射性能,比普通使用的要好很多。因为它和最理想性能差,最多会有57%这样的性能差距。同时寿命的影响大大降低了Flash擦除的次数,映射表放在PCM上去,得到这样的结果。

再一个针对PCM做一些性能优化,刚才讲了原理,它的电源模块实际支持写入的Bit数有限,比如16位或者更少。我们知道一个总线四位,最高16位为1单元(unit),我要一次写一个unit,8个unit才能写下去,导致性能较低,个中原因是写入的高能耗,电源线干扰,受限的电源模块。

然后我们对负载特征进行分析,发现实际上数据是有一定规律。我们对这个多线程进行分析,发现它的数据全0,一半0,一半0一半任意数,还有任意写,我们发现写全0占非常高的比例。随着线程数的增加,写全0比例非常高。但PCM不管是写0还是写1都有能耗,写比读要慢。那么只能减少写入,做优化工作。如何减少写入?这么多写0,可不可以不写,我们相当于针对它进行相应优化。

第一步是根据数据规律做压缩。类型一全0不写,用两个标志位表示就行。类型二,三一半0一半1,都可以压缩成32bits。类型四11就表示任意。

第二步是重调度,把它拼接来写,开始的条件是只能写16bits,重调度第一步是类型四任意都得写。第二步是类型二三的数据并行写入,一次能耗供电能够写最多的bits数,就是这样的思路。

而8个Units,第一步压缩就是0都不写入,压缩掉。第二步是重新调度或者拼接,首先写XX,然后再把这两个进行拼接,把已经压缩的部分进行拼接。我们要写8个Units,最后变成三个Units就可以写下去了。

之后我们发现还可以采用部分数据反转。先判断写下去的8位或者16位是写0多还是写1多。变化的位数哪个多,再将它进行反转。之后让写的位数假设16位,反转之后减少为只写8位,这也是减少写的量。相当于进一步做压缩,可以从原来要写已压缩的3个units,变为2个Units。对负载进行测试也是有效果的。

这就是器件一级做的工作,器件的融合,如何发挥每一种器件的特点,如何将其优点发挥出来,再克服缺点,主要做这些工作。

基于对象的异构融合存储系统优化

系统一级我们做的工作就是基于对象的一个融合的存储系统。主要从体系结构,高效低能耗,高可靠和高安全这三个方面来做相应的方法探索以及优化,最后形成一个基于对象的异构融合的存储系统。

首先我们最主要的特征就是做了一个主动对象,它的主要特点是什么?我们要按需服务于不同的应用,其实传统存储并不知道用户有什么样的需求。从两部分可以知道它的需求,第一部分我们增加两个功能对象,第一个是用户功能对象,是否需要安全,可靠性都可以通过需求提供接口。第二个是系统功能对象,我们可以采集以前的对象进行分析,它是小的请求量居多的访问,还是大的请求量居多的访问。最简单存储的策略肯定不一样,我们一个要去测其聚合带宽,一个要去测多少IOPS,不可能两个应用同时都是这样,我们可以在系统内部做自我优化。

存储原来是傻存储,响应主机请求变成智能存储,能够主动服务于不同应用,自适应于复杂的应用环境。

我们相应对OSD(对象存储设备)扩展做了相应的标准,在2015年终于颁布。我们也形成了自己的系统,这个系统具体是在武汉光电实验室搭建的平台,128个节点,互联构成这个系统,我们做的就是整个文件系统。整个系统可以达到百GB的聚合带宽以及5000次并发访问,还有单目录下文件数量级达到百万量级等等。

主要特点,第一个智能性方面,我们做了一个比较有效的工作,可以根据历史负载预测未来趋势,触动相应存储策略的执行,服务不同的应用。高性能方面,我们也做了自己的硬件,这个硬件也是用FBGA做加速,和现在的超级计算,提高性能的方式相同,只不过更早一点做了这个工作。包括支持异或、压缩、加密、RDMA等操作加速。

元数据服务器,每个数量都达到百万量级,快速查找数据位置就成为了瓶颈。我们基于语义的特征,首先把查询范围缩小,让它落在一个区域内,在这个区域内用传统目录数的方式往下查。

我们结合一些新的发展,软件定义网络,分布式系统中间肯定要用网络互联。为了提高可靠性,需要更多的副本提高可靠性的性能。导致网络上有大量的冗余数据传输,效率更高。利用软件定义网络的优势做了拥塞感知的可靠组播协议。很多冗余的数据,这个数据节点传进来传出去,通过网络进来只传一遍,一下可以写两个副本,三个副本,可以提高性能。

具体结果,我们把这个组播的方式用在HDF上面,可以增加一倍以上,大大提高性能。我把一些新的进展放在我们系统中间去。

另外高可靠性方面,我们也是做了容双盘错的编码,特点是我用简单的异或运算,计算编码放在什么位置,计算非常简单,效率非常高。这是可靠性方面做的工作。

安全性方面存储,加入一些传统的安全方式在上面,包括访问控制,数据完整性、数据机密性等等。访问控制做的是分布式访问控制方式,可以比集中访问方式快1.3-16倍。

另外比较特色的是做溯源入侵检测,把存储系统中间访问相应进程的日志信息都存下来,不仅仅是简单日志,还有相互之间的依赖关系,关系图也建立起来。第一可以做图形检测,第二做适度的审计分析,数据修改后也可以追溯它从哪里来的。还有基于闪存的安全删除,这个也是根据它的原理来的。闪存的主要办法如果想写入,原来的数据就没了,实际上它存在大量复制在里面,安全性较差。我们可以在闪存写入的同时后台对原来的数据进行覆盖写,写完之后写1,后来变成写全0,是可以改变的。

服务等级目标保障技术

最后一方面提一下服务等级目标保障技术——SLO。用户面向服务的时候,我需要多少带宽你要满足。对服务提供商来说,我希望尽量把我的资源用起来,不是资源过量供给。我有100兆服务能力,我调度不好,有可能我100兆并没有充分发挥。怎么样达到相互之间既满足用户服务质量保障,同时我的资源没有浪费,我们就做了一些相应的工作。这个主要是在我们存储系统上面的虚拟机来做。

主要涉及两个点,一个是请求到达率,还有一个就是整个带宽的保障,我们用PI(比例积分)和V-Cup控制器。控制器的理论就是采用比例积分控制模型动态调整I/O到达率,采用V-Cup模型对I/O请求大小波动进行有效控制,实现对I/O带宽的精确控制。

第二方面,资源利用最大化。就是进一步在存储服务器上又加了一个控制,两层虚拟机这端和存储服务器这端连接在一起,使得资源利用最大化,最大限度满足不同用户需求。另外还要利用高尾延时,保证99%或99.9%的百分位的I/O延时目标。做虚拟机的保障精度,还有I/O延迟最大偏差是2%。

以上是我们在器件、系统、I/O保障这三个层面做的一些工作。