如何构建高可靠闪存和以其为中心的高效计算平台?

闪存已经被业界重度关注,对于用户来说如何利用好闪存,需要从闪存本身的特性以及如何以闪存为中心来构建新平台才是关键。
 
解决这个问题或者难题的前提条件就是,如何构建高可靠性的闪存产品?
 
Greenliant亚太营销副总裁李炫辉的观点认为,需要从两个重要的方面出发,一是高可靠性闪存产品要从设计到制造生产整个环节上给予支持;二是基于NVMe标准的高扩展性和多厂商产品兼容性将会带来新的进步。
 
首先做点小广告,方便大家理解后面的内容,绿芯半导体(Greenliant)是超过20年NAND控制器和固态存储设计专家,到目前为止为固态存储应用提供超过 4千万颗 NAND控制器。一个专注于芯片领域的厂商,在2014年也对闪存卡市场报以浓厚兴趣,旋即推出应用于数据中心高性能和高可靠性的闪存卡G-card。其目的就是通过先进的软、硬件NAND闪存管理技术,专注于提高存储子系统的性能和可靠性。
 
现在,Greenliant 是多个行业标准化组织和行业生态系统的积极参与者和贡献者。
 
绿芯半导体的闪存产品G-card 主要用于IO性能加速环境,包括数据库性能加速如My SQL/Oracle/SQL、Virtualization/VDI、延时敏感型交易应用、Server SAN或SDS、Big Data、视频缓存或CDN加速,以及制造、能源、教育科研行业的高性能计算存储领域。
 
2015年8月5日,Greenliant亚太营销副总裁李炫辉带来了中国闪存峰会的压轴戏,对构建高可靠性对闪存产品进行了一番深入浅出的分析。
 
对于闪存产品,很多客户甚至厂商只看到了其高IO性能的特性,而在其它方面延续了对磁盘系统的认识。但是闪存由于其物理特性与磁介质完全不同,因此和磁盘相比还有很大的差别。例如闪存受到擦写次数的限制,随时间与数据擦写量增长存在性能波动和衰减的情况,同时其寿命和性能也受到工作温度影响,因此如何解决闪存设备的可靠性是闪存存储产品能否大规模使用的关键。
 
闪存控制器是闪存系统的核心,闪存控制器是联系主机和NAND Flash的桥梁,掌握了闪存控制器技术几乎就可以掌握闪存产品的未来命运。那么闪存控制也需要具备几个主要的闪存管理功能,如Error-correcting code (ECC校验)、RAID保护机制、Wear leveling(磨损平衡)、Bad block mapping(坏块管理)、Read/write disturb management(读写干扰管理)、Garbage collection(垃圾收集),同时需要具备闪存控制器其它定制化功能,如加密、安全擦除或自毁、压缩或去重等。
绿芯半导体在闪存控制器方面有20多年的研发技术和经验,在闪存领域具有完全自主的技术能力,如NAND闪存的检测、封装技术,自主研发的企业级闪存控制器以及Firmware,闪存存储架构设计,功耗管理,高级电路保护技术,完善的QA控制以及量产质量控制等等,在闪存技术方面有很多的专利。
 
闪存峰会展会现场,Greenliant李炫辉为现场用户解答闪存热点问题。
 
Greenliant G-card的高可靠性设计采用了独特的分布式ECC 、自带 RAID 以及掉电数据保护功能。
由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND Flash的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提条件是能比较可靠的进行坏区检测。但潜在的问题是性能衰减和可靠性下降如何避免?
 
当Flash设备随着使用时间和数据量的增长,坏块会逐渐增加,会产生大量的ECC Error,这时设备性能和可靠性会大幅度下降,对应用性能和数据安全带来影响。
 
G-Card具有高可靠性的分布式ECC设计架构,源自于每个NANDrive组成元件內置ECC引擎。这种创新架构不仅提高了闪存卡容量的可扩展性,又保证了产品的生命周期内持续的性能和可靠性。除了分布式ECC引擎,Greenliant G-card是业界第一款板载硬件RAID的闪存卡,单卡板载40颗 NANDrive,每5颗 NANDrive   组成一个RAID 组,共计8个 RAID 组。
 
Greenliant对产品进行长期擦写以及性能测试。在疲劳测试环境中,每天全盘擦写50次,超过18000次擦写后(相当于每天全盘擦写10次,连续5年),性能衰减不超过10%。另外,采用先进的磨损平衡算法保证无“热点”。
 
在Facebook闪存失效大规模研究中有两个主要发现:
(1) SSD失败并不是单纯地随闪存芯片磨损增加;它们历经几个明显的时期,与失败如何出现和随后如何被检测到相一致 (Figure 4)。
(2) 高温会带来高的失败率,但是通过截流SSD操作看来可以极大地减少高温带来的可靠性负面影响,但是会带来潜在的性能下降(Figure 10)
 
 
 
基于绿芯半导体对NAND闪存介质的理解和经验,造成现象(1)(2)中的主要原因是由于在生产过程中没有发现和标示潜在的坏块或临界状态的块,造成在生产环境运行时故障率上升。同时长时间的高温运行也会对闪存介质的可靠性产生不利影响。
 
针对这种实际使用环境中闪存问题的存在,Greenliant在生产制造流程中专门设计了高温环境下的检测和质量控制(见下图),如对NAND颗粒进行二次测试,高温测试(125℃),大温度范围测试(-55℃到125℃),高温高湿度下压力测试(125℃,85% RH)等等。保证了闪存产品在生产环境下的可靠性和稳定性。
 
 
除了闪存介质以外,板卡以及外围组件的质量也会对闪存产品的可靠性和稳定性带来影响,如前一段时间的电池门事件就是这种情况。对于板卡层面,Greenliant在设计和制造生产方面也制定了针对性的高标准测试流程。例如在电池组件方面,Greenliant选择了较高成本的电容电池,利用自主地电路保护和控制技术,保障电池组件在高温以及长期使用过程中的可靠性。Greenliant板载电容电池在长达1年的高温疲劳测试后,健康度仍然高达99%。
另外闪存的Firmware升级,其实也可能会对设备运行带来不确定因素。如新的算法可能带来组件功耗以及发热量的升高,底层设备访问的机制变化与其它代码和接口的兼容性等等。
Greenliant每一次Firmware的更新,都会将整个可靠性测试重新完整运行一遍,并且同时在异地两个实验室同时做测试,只有两个实验室均通过测试后,才会发布新的Firmware版本。
 
作为最先推出NVMe协议闪存卡的领导厂商之一,Greenliant一直在推进相关技术和产品推广,NVMe相比AHCI协议具备无锁式IO并发、可横向扩展也有更低的写延迟。过去由于缺乏统一的标准,不同厂商的闪存产品不能兼容和互操作,对于用户的使用和运维管理带来很大的复杂性。而NVMe标准的推出则解决了这个问题,同时NVMe协议还大大改善了闪存卡的访问性能。
 
阿明与Greenliant李炫辉在展位现场合影,感谢Rachel友情拍照。
 
实际应用中,在服务器中采用多张PCIe闪存卡,实现本地大容量高性能存储,或搭建软件定义存储架构(Server SAN),G-card 在性能和容量方面展示了优异的可扩展性。在IOPS、延迟、功耗、尺寸、初始成本和总体拥有成本方面 显著优于其他的主存储方案。G-card 集先进性、可靠性、稳定性于一体,可以为数据中心提供高效能、高可靠性和高安全性的存储解决方案。
 
经过一番讨论,大家对构建高可靠性的闪存产品有了一定的认识,下一步,需要在分析闪存本身特性的同时,深入了解以闪存为中心的弹性计算平台如何构建?
 
作为Greenliant核心合作伙伴,达沃时代在闪存应用方面有着自己独特的理解, 这也是达沃时代目前发展的核心所在。
 
达沃时代技术总监雷迎春博士闪存峰会主题演讲
 
不过他总结了闪存存在的几个关键问题:
 
一是,闪存不是高性能磁盘,需要以闪存为中心的存储软件来支撑。
 
二是,为充分发挥闪存性能,通常数据在闪存上的部署结构采取日志结构,但是,仅采取日志结构的设计,仍不足以高效地使用闪存。
 
三是,存储软件需要充分了解闪存的物理特性,适配工作,尽力最小化闪存内部的额外开销,存储软件不宜介入闪存的内部工作,如实现应用层FTL等,否则,会占用过多的主机CPU资源。
 
四是,除了系统设计外,高效的软件实现也是充分发挥闪存特性的关键。
 
围绕这几个关键问题,达沃时代技术总监雷迎春博士展开了“以闪存为中心的弹性计算平台”的分析。
 
 
首先来一张图,让你先认清达沃的弹性计算平台架构。雷迎春博士分析,这是达沃时代针对第三平台概念的一种实现。关键元素是融合存储,其中,YeeStor针对单数据中心,WooStor面向多数据中心。YeeOS是达沃融合存储的核心,提供多种API接口,对于文件、块、对象等访问都支持。几乎所有应用对存储的访问都可以表示为对文件和块的访问,文件访问强调高带宽和共享,块访问强调高IOPS和低延迟,很难用一套I/O栈同时高效支持文件和块,所以,YeeStor在内部又分解为YeeSAN和YeeFS,它们有相同的接口,但是,内部实现完全不同,文件和块分别走不同的I/O路径和I/O处理逻辑。YeeSAN和YeeFS之间的关系是并行关系,而不是依赖关系。
 
所谓应用定义存储,达沃的理解是允许基于应用的工作负载进行灵活配置。因此,YeeStor可以被配置为分布式文件系统、Hadoop HCFS、集群NAS、分布式块存储、分布式RESTful对象存储等。
 
YeeStor是非对称结构,达沃选择这个结构的原因是,如果在共享存储池上支撑多种应用的运行,那么,其上的工作负载一定是异质的。有一些存储系统采用对称结构,由客户端驱动I/O,如Ceph的块服务和GlusterFS,这种结构比较适合单一类型的工作负载。在对称结构中,灵活的资源调度和资源预留会比较难于实现。非对称结构被诟病的一个原因是元数据服务通常是主备式,可能是系统的瓶颈。YeeStor的元数据服务和数据服务一样均是横向扩展,而且是线性增长,解决了这个问题。
 
目前,大部分存储系统的软件都是以磁盘为中心的,包括某些全闪阵列。在这样的系统中,闪存被用作高性能磁盘,另一方面,操作系统中的I/O栈也没有为闪存的到来做好准备。
 
SSD中的FTL让闪存看起来像一个磁盘。闪存由多个块组成,一个块由多个页组成。同时,设置了预留块,用于替换不合适的块。此外,闪存还有几个关键特性:不支持覆盖写,只能以页为单位进行读写,只能以块为单位擦除。闪存的这些特性,对写性能有显著影响,主要表现为写放大和可变的写延时。
 
另外,SSD内部存在4个层次的并行:通道、封装、芯片、面。这意味着,一次合理的I/O,可以从多个芯片访问到的多个块,即集群块(Clustered Block),类似于RAID系统中的条带化(Striping)。换言之,SSD需要大粒度I/O。
 
SSD的I/O模式分析,操作系统或应用的I/O粒度通常为4KB或8KB,情况如下:
 
随机读时,不能充分利用SSD的内部并行机制,特别是当两个并发读访问恰好是同一个面(Plane)时,需要竞争访问。
 
随机写时,不能充分利用SSD的内部的并行机制。写密集时,垃圾回收和写入竞争,恶化写放大和产生较长的写延迟。特别地,擦除操作需要更⾼的延迟;当两个并发写访问恰好是同⼀个面时,需要竞争访问;SSD控制器需要更多开销,维护映射表,并且要求内存中的映射表持久化;产生随机的无效数据,导致内部碎片,而在垃圾回收时,需要大量的擦除操作,开销更大。
 
顺序读时,不能充分利用SSD的内部并⾏机制,但是,可以利⽤SSD中内置的预读优化,当然,并不是每个SSD都有这个特性;
 
顺序写时,没有随机写的很多问题,但是,不能充分利用SSD的内部并⾏机制。
 
如果I/O粒度为4MB或16MB,即SSD集群块大小,情况就不一样了,具体见下图:
 
 
达沃把闪存看作特殊的非易失内存,而不是硬盘。针对闪存的I/O特点,达沃在底层存储部分设计了日志结构的数据部署,LOS(Log-structured Object Storage)。LOS允许应用使用传统的I/O粒度,如4KB;LOS之下,面向SSD的I/O粒度是集群块大小,如4MB。本质上,LOS起着负载调峰的作用,把上层应用的突发I/O调整为SSD上的均匀I/O;把上层应用的小粒度I/O,调整为SSD上的大粒度I/O。LOS不仅对SSD友好,对HDD也友好。同时,LOS对SSD/HDD介质的直接管理和访问,绕过了操作系统的传统I/O栈。
 
达沃存储采用了MEANS 2.0结构,MEANS(a Micro-Engines Architecture for Network Servers)是雷迎春十多年前针对高性能服务器提出的一个面向多核环境,兼具线程和事件驱动的软件结构。达沃认为,存储软件要解决CPU、内存、网络、存储资源的使用。对于CPU和内存资源的使用,采用微线程,降低切换开销;采用微引擎,充分使用多核CPU;采用数据区分,降低NUMA和锁的开销。对于网络资源的使用,设计多核友好的网络服务框架或采用RDMA。对于存储资源的使用,使用用户态LOS。
 
随着闪存在企业环境的应用越来越多,一个明显的现象是,存储软件滞后于存储硬件的发展。特别地,当单节点的4KB随机IOPS期望达到500K或1M时,软件通常是瓶颈,必须精心设计,才能发挥下层存储硬件的I/O能力。
 
他看到PCIe闪存卡有Host-base PCIe闪存卡和Device-based PCIe闪存卡的区分,Host-base PCIe更依赖主机来做以后的路恐怕会越来越窄,他更看好Device-based。NVMe广泛应用之后,闪存卡架构可能会更倾向于Device-based。不过,以后软件更好地跟上硬件的发展,给予更多优化,闪存需要适配的存储软件,才能在一个系统里面发挥出闪存的效能。
 
另外,在考虑到闪存本身的特性情况下,如何提升可靠性成为未来的关键。(阿明)