达沃时代雷迎春:超融合与闪存

leiyingchun

由中国计算机学会信息存储技术专业委员会、中国教育部信息存储系统重点实验室和DOIT、存储在线共同举办的2016中国闪存峰会在京召开,主题为“关键之年,让闪存绽放”,来自产业界的众多嘉宾围绕闪存技术本身将如何演变与发展,以及闪存竞争的其它存储芯片技术,存储系统将会怎样发展这些热点问题进行了精彩的分享。

达沃时代副总裁雷迎春先生发表了名为“超融合与闪存”的主题演讲。以下为此次演讲实录:

我是达沃时代的雷迎春,前面几位主要讲关于介质方面的事情,我们从超融合的角度看看面临的挑战,以及我们怎么使用闪存系统。

我在2000年左右的时候做存储,我们的软件06年的时候开始做,那个时候没有特别多的开源系统可以借鉴。Yeeos是我们的核心,我们派生出了YeeStor和WooStor中心,西藏到北京,南边是东莞的14个中心看成是一个操作系统,我们做了这样的事情。到目前为止,我们也是为数不多的提供运营者,我们的存储有多种接口,可以跑在虚拟机,也可以跑在物理的环境下。因为我们是SDS的软件,所以我们硬件上是使用标准的服务器,服务器也可以放在不同的数据中心里。

我们有原数据,这是不同的设计体验,但企业是有抑制的,有可能是高带宽的,我们通过分布式的体验,可以比较好的综合使用不同的资源。我们可以看到IT结构,第二平台到第三平台的升级是一个非常大的概率事件,推动力可能就是数据,我们现在产生的数据太廉价。随着数据的增加,IT系统越来越复杂,规模越来越大,其实传统的阵列可能会比较难受。并不是说阵列技术出了问题,而是可能在云结构下面有一些场景适应不了。第三平台的应用,现在主要就是超融合。今天讲讲我们在超融合开发过程中碰到的挑战。

资源共享,传统的阵列可以独享CPU,可以尽可能的发挥硬件的特点,我们从编程来看可以利用多线程。如果发挥NVMe可能利用别的模式,但是在超融合不是这样的,我们说不能使用超过20%的计算资源。我们在程序设计的时候,这不是简单把软件可以部署在一块,绝对不是这样的情况。超融合它的目标定义来说,更强调是一种均衡的性能,而不是说莫名其妙地提供数据,超融合看到应用的运行流畅性和系统的可靠性,最大的特点就是由于共享资源带来非常强的限制。

为什么细说这件事情,我们很典型的客户在教育环境,它们几乎不具备像传统IT的管理能力,对它们来说每天干的事情,关机直接拉电闸。第一个传统的阵列很少被关,不敢动,我们现在的客户直接关电,这个时候必须得考虑掉电保护,传统的UPS很难利用超融合,有几个原因,有可能是成本的原因。如果说你要把这些布件移到超融合,这个产品定义会出问题的。我们对超融合的使用来说,我们是定位于小白用户,或者说IT感受为0。Server SAN不会考虑掉电的情况,但是超融合不得不考虑掉电。

这个软件很难受,我们会做很多的操作在里面,因为只能通过软件的方式避免掉电的事情,所以我认为超融合的故障电是大于Server SAN,虚拟机有各种应用机。存储本身是自由的,超融合有其它第三方的应用。我们是通过软件来应对突发性的拉闸式的断电行为,我认为这是非常困难的事情。

我们传统的阵列来说,它的硬盘相对固定,这个时候比较容易做一些数据的分布。超融合不太一样,因为服务器和存储介质时刻都有可能不存在,所以我们程序里花了很大的时间来解决这样的意识性问题,资源不存在的事情。超融合需要很复杂的分布式计算技术,也需要很高效地适应节点和资源。有强的一致性,而不是系统的一致性,亚马逊论文说提供系统的一致性,只要系统一致就可以。我们目前需要存储一致性,只要数据存储,你就必须得保证数据一定要存在。无论资源怎么样,只要少的部分资源丢失不影响数据的,我认为考虑问题可能和做阵列厂商,或者说传统存储不太一样。分布式为什么非常重要,节点失效是常态。

NFS基础是RBC,你只会建一个链条,因为有限制。NFS可能没有办法用到带宽,因为现在的网络很快了。新的技术出现,都是为了利用已有更好的带宽资源做。如果标准的话,需要做很复杂的转化,这会消耗CPU的资源,本身超融合CPU不富裕,不得不用传统的方式来做。

超融合本身是需要统一存储的,现在很多的初创企业,或者说已有的超融合领先的企业,包括美国企业,很多的企业提供存储。但是VM是什么?你有可能会装数据库,肯定里面有文件应用会需要文件性的东西。超融合本身还是需要在存储的池里面提供统一存储的协议,而不是说仅仅简单的只是用一个快存储。超融合也好,Server SAN也好,传统阵列的功能都得有,需要分布式的技术来实现。由于CPU的限制,可能无法开启一些功能。比如说去重的问题,我们除了去重还有一些压缩,但凡会引起到CPU的资源,我们都没有办法开这样的功能。从用户的场景来说,超融合本身主要就是小白用户居多,阵列或者说是Server SAN是专业的维护人员,所以它场景是完全不一样的。超融合不太适合性能。

为什么超融合需要闪存,传统的情况下VM可以把IO顺序化,但是多个VM在一块会把数据变成一个随机的IO。没有闪存是不太可能的,我们曾经在两年前的时候做过一个全硬盘的超融合,但是这样的情况下现在的闪存太便宜,而且很容易达到几万,所以后来逐渐地把这个方案放弃。但是超融合离开闪存就不需要提了。我们有两种方式,混合存储和全闪存,都是利用快速的存储设备作为缓存。

现在在我们用户的部署情况下,大部分的应用还是混合存储,因为超融合的定义和阵列的定义不一样,阵列的定义是高性能,高可靠,对用户的成本还是非常敏感的。我们现在更多的工作还是在混合存储方面。我们设计了日志式的访问结构。这种方式很难用到超融合里面去。系统改变了IO的逻辑,由于虚拟化的存在可能会影响到存储软件对CPU的使用。传统的做工作,他们没有想过把数据写在本地利用超融合,他们想数据怎么写在外面的存储,通过网络。CPU好坏对效果有很大的差别,FTL本身让闪存看起来像硬盘,闪存本身每次写操作有可能只采取写到另外的位置。

了解这件事情本身是我们怎么用好闪存的工作,闪存本身很多的便携性,英特尔如果想利用好的话,内部架构本身是需要告知的,这些数据我们都是不断地问它们的负责人。SSD是有内部并行的,有通道、芯片、封装,SSD本身的读写力度越大的话,效果是越好的,力度小的话,开销会大一些。读没有问题,写的话大块的写,不要小块的写,我们认为这会影响到我们的系统设计。我们裸设备IO设计中,资源分配是由MDS管理,我们是把它分成段,我们基于裸设备的空闲回收。为了发挥SSD的特点,我们尽可能地顺序写解决可靠性这件事情,一部分的写缓存,另外做只读缓存,为了加快访问,我们在内存里面建立了系统,缓存做了大了,一旦宕机的话,不能秒级的恢复起来,还是需要扫描介质,然后把内存的索引服务恢复起来,这是要加快的。

下面的分布式存储可以解决可靠性和负载均衡,我们希望部署的方式更大块的使用闪存和硬盘,这是我们这样的东西。达沃当前的选择,读写缓存尽可能利用裸设备访问,解决延迟IOPS的问题。持久化的问题可能是硬盘,也有可能会是闪存,所以这是一套软件既可以支持全闪,也可以支持混合存储。

我们自己说是闪存,不能是硬盘,不能采取硬盘的方式访问,需要采用特殊的结构来做。日志的结构是随大流,我们利用这样的方式比较好的可以把闪存的特性发挥出来。但是它的代价本身就是内存资源,规模其实是有限的,尽量减少CPU的消耗,这是我们现在使用的超融合。

超融合本身是一个中产规模,这是小白用户,不太适合做高性能的事情。怎么让一个应用运行流畅,可能会是我们非常重要的考虑。开发难度上,超融合的难度是高于分布式存储。我们最近有几个月的时间解决存储的问题,我们在问原厂的程序员,他们有没有想过这个问题,所以很多的问题可能不得不自己解决,因为如果说不解决的话系统会出很大的事情,所以我认为难度是要高于存储的,因为存储只需要考虑自身的事情,而超融合要考虑应用,包括了操作系统本身的东西考虑的比较多。

闪存不是硬盘,需要一种合理的数据结构才能把闪存给使用的比较高效率。虽然混合存储居多,但是我们认为闪存和硬盘来说还是会共存的,我们现在硬盘还是大量的使用。现在有的项目一天有几亿个对象,我们需要做千亿级规模的存储,它其实用户就不想闪存,就是这样的想法,在他们看来可能还是会用硬盘更加合适,硬盘会在相当长的时间内有生命力。