2015年8月5日,由DOIT传媒和存储在线联合主办的2015中国闪存峰会在北京盛大开幕。本次峰会以“闪存加速数据经济变革——颠覆方式和速度”为主题,超过 500位各行业用户代表,数十位顶级学者、产业精英和技术专家出席,以圆桌讨论和主题演讲等形式,从不同角度深入探讨“闪存加速数据经济变革”这一话题。
在下午的PCIe加速卡论坛,来自北京达沃时代科技有限公司总经理的雷迎春发表了题为《以闪存为中心的融合存储》的演讲,他认为,硬件上日新月异的发展,系统软件上非常滞后。当一个模块做完以后,它可以不断堆集,做的非常快,一个软件想跟上硬件,总的来说还没有完全发挥它的特点,会有软件和硬件兼容性的问题。
以下是文字实录:
雷迎春:大家好,我是北京达沃时代的雷迎春。我今天演讲题目是“以闪存为中心的融合存储”,讲讲我们在闪存方面的工作,这是我们公司做的弹性计算平台,我们对第三平台的实现,核心存储是融合存储,融合存储的核心是YeeOS。基于YeeOS开发了两种场景:单数据中心和多数据中心。达沃存储提供多种接口,允许企业应用运行在物理机和虚拟环境,服务器是我们的硬件基础,允许服务器部署在不同的数据中心。
上层应用对存储的访问分为以文件为中心的访问和以块为中心的访问。我们认为很难用一套代码同时满足两种不同的负载需求,在我们内部分解为YeeSAN和YeeFS接口,里面的数据部署都是不一样的,会部署在不同的存储里面。我们对应用定义的认识本身是可配置,YeeStor可以分布在分布式文件系统,也可以分布在hadoop HCFS。YeeStor是非对称式结构,有一些系统采取对称式的,我们认为这种结构本身是客户端驱动IO。非对称结构被垢病的原因是元数据是瓶颈,我们用的是元数据服务和对象存储服务均可以实现横向线性扩展。
我们支持超融合。我认为真正的超融合以应用为中心,使用各种资源,包括网络资源和存储资源。我们2012年就完成了多数据中心,连接全国14个数据中心,从北京到华南,从上海到西藏。我们做这个工作从2008年开始。2012年谷歌发布了sapnner,我们和sapnner有很大的区别,sapnner网络走光纤,我们走的是互联网,sapnner支持自家的广告业务,我们支持100多个来自不同厂商的应用,所以我们和谷歌sapnner定位不一样,难度也不一样。广域情况下有延迟问题和各个数据中心不统一的问题。
我们一开始做是让多数据中心进行共享。我们可以用woostor连接不同的数据中心。很多公司提供混合云的时候,在网络层做SDN,我们是国内第一家在存储层进行连接,我们认为我们干了一件比较有意思的事情,可能是连接应用和数据,任何一个数据中心的应用和任何一个数据中心的数据发生联系。
回到今天的主题简单讲一下YeeOS。数据分布主要解决数据调度和可靠性,比如说你是用EC还是副本,缓存是读写缓存,存储是很关键,存储效率主要解决压缩,日志是底层做的事情。
国外包括很多存储和国内开源软件是以磁盘为衷心的。达沃曾经是很年轻的公司,因为我做存储很长时间了,所以我们当时也没有预计到闪存的崛起,过去做的工作也是磁盘中心。我认为以磁盘为中心最大的问题,把闪存当成高性能磁盘使用,另外一方面,操作系统其实是为传统磁盘做服务。
我们看看SSD有哪些问题,FTL是SSD的核心,各个公司的FTL算法不一样,因为这是商业秘密。FTL最大的工作让闪存看起来像一个磁盘,磁盘是一个连续空间,主要干这个事情,真正情况下的闪存分成块,每个块由多个页组成,还有一些预留块。闪存不支持覆盖性,读写单位是页,擦除的单位是块。我们可以简单看一下,写一个地址会写在新的位置,有一个表,操作完以后,过一段时间垃圾回收程序会把内容复制到一个新的位置,把以前的删除掉,剩下一个空闲块。我们写的时候有一连串的工作,有多个写操作。当写密集的时候,垃圾回收忙不过来,没有办法提供空闲块,所以会有写放大。在闪存情况下,线性写比随机写快很多,线性写对空闲块的需求远远小于随机写对空闲块的需求。
SSD中的内部并存,这是闪存逻辑图,里面有通道层并行、封装、芯片、片。一次IO操作可以访问多个块数据,称为集群块,我们过去写的时候很少注意这个,从这个图上可以看到,闪存尽量靠近集群块,效率才会高一些。
这是SSD的IO模式分析,如果直接落到盘上可能有一系列的问题,比如说写密集的时候,垃圾回收和写的竞争,还有SSD可能维护很多的影射表,还要产生很多内部碎片。如果用4K直接往闪存上写是很糟糕的事。我们直接要做的事改变IO力度,尽可能贴近闪存的内部工作模式。
这是达沃存储底层LOS,应用永远是4K的粒度,读缓存放在内存当中,写缓存是放在非易失内存。它会保证IO延迟是非常快的。另外一块在读缓存全部都是4K管理模式,写缓存里面全部是最佳写。整个磁盘介质划分成一段一段的工作,会记录下来每个段的使用情况,垃圾回收会保证一定程度的空闲的段,VLB本身记录下来一个快的ID可以知道是在内存当中,还是在哪个位置。
我们设计这个工作的时候,LOS类似负载调峰,总是让闪存处于最理想的工作方式,我们这个工作绕开了传统IO栈。这种方式不仅对SSD有好处,可能也会对硬盘有比较大的好处。
这是我们做的测试,4K直接写,随机写和线性写的区别,这是普通的SSD,SATA的接口,有很大的提升。从这张图里面,我们自己觉得顺序比随机好。这个图并没有考虑到生命周期的事,从理论上推演,如果总是以闪存希望的IO粒度,1M、4M去写,显然让闪存的生命周期更长久一些,也会更加健康一些。
从学术论文里可以看到一些好东西,可是真正的实现就是百花齐放了。我们软件是自己写的,不太建议用开源软件写,但是很难在可靠性上帮助你,因为任何一个软件,不能百分之百没有BUG,一旦出现BUG就很糟糕了。
做磁盘的时候不会考虑IOPS,很难顾及到,网络也会出问题。混合读写很难跑到50万IOPS,如果CPU好一点,配的是2690,会跑到80-100万的IOPS。这时候网络是很大的问题,用万兆跑的时候,协议处理上都会有很多问题。刚才张冬跟各位讨论的,其实软件是一个问题。
闪存需要与之相配的软件,这是做Log-structured的软件。我们HD4跑4K的时候很难发挥出优势。我曾经和一位做闪存的前辈沟通过,他告诉我,他们今年在一个卡提供20TB的数据,再过一两年,可能会提供100个TB。这个时候你使用Host-based就很麻烦了,因为你几乎管理不过来CPU,还要把CPU分享给应用使用。闪存性价比已经非常高了,大有取代硬盘的趋势。固定硬盘长期存放是很可靠的,闪存是新兴的,我们不知道它是不是能长期存放数据,温度很高的时候很不稳定。我觉得闪存作为长期存储数据还是有点不太放心。
总的体会,硬件上日新月异的发展,系统软件上非常滞后。当一个模块做完以后,它可以不断堆集,做的非常快,一个软件想跟上硬件,总的来说还没有完全发挥它的特点,会有软件和硬件兼容性的问题。
欲知更多关于2015中国闪存峰会的精彩内容请点击查看闪存峰会全程直播报道专题。