探索中国CIO人才现状 | 第四季调研报告
透过《Facebook闪存失效大规模研究》看闪存的选型
2015-07-10  来源:techtarget

近日,一篇卡耐基梅隆大学的论文《Facebook闪存失效大规模研究》在IT圈火了。在闪存尤其火热的今天,很多用户都非常关心,PCIe闪存在使用之后究竟会有哪些风险,闪存故障的产生究竟与哪些因素有关,在使用过程中是否可以规避这些风险。对于闪存生产厂商而言,同样也有望从Facebook的样本中获取有效信息。

在本周的一个闪存沙龙上,Greenliant业务发展副总裁李炫辉与大家分享了他对《Facebook闪存失效大规模研究》这篇白皮书的深度解读,并且同ServerSAN技术专家、芯片技术专家以及互联网用户的技术专家共同探讨了企业对闪存可靠性的看法以及如何进行闪存可靠性评估等问题。

闪存的加速作用让很多企业尤其是互联网企业超越了IO瓶颈,获得成功,是互联网企业数据中心的功臣。但闪存作为一个“新”产品,其稳定性一直备受关注。毕竟,由于闪存的失效导致数据读写失败甚至是数据丢失,其损失也是不可估量的。卡耐基梅隆大学在Facebook数据中心通过近四年和数百万次的操作小时进行数据收集来了解闪存SSD失败的性质和趋势,这样的数据结论对闪存使用者是很有参考价值的。

闪存密度与可靠性

从下图我们可以看到,在一个芯片中增加单元或者将尺寸减小都会降低产品的生命周期和可靠性。 李炫辉表示现在大家都看到市场上闪存颗粒的价格在下降,比如20nm制程闪存的价格只有25nm闪存的60%,16nm制程闪存的价格只有20nm50%的价格。但随着价格的降低,可靠性也在下降。所以很多企业级产品仍然生产高制程产品而并不是一味追求低制程工艺。

闪存的密度与稳定性

很多数据中心管理者也曾坦言,稳定是数据中心的第一要义,这也就是为什么银行继续采用大机,为什么数据中心没有全部虚拟化,为什么用户还没有升级到Oracle最新版本的原因。闪存也是一样,企业用户希望利用闪存的高性能,同时希望最大化地规避闪存带来的风险。

李炫辉在介绍时表示,Greenliant在PCIe闪存的研发过程中,一直遵循着稳定可靠的根本原则。通过支持NVMe来实现无锁式IO并发、横向可扩展以及更低的写延迟。利用分布式ECC技术、嵌入式RAID保护以及掉电保护技术实现闪存的高可靠。并且保证用户在每天十次全盘擦写的情况下,闪存寿命不低于五年;即使在生命周期的后期,性能衰减最大不超过10%,以保证其性能一致性。

报告中五个重要发现的解析

一、闪存失败率与闪存的使用

在大家的意识里,闪存的磨损应该是与使用成正比的,但《Facebook闪存失效大规模研究》报告中,我们并没有看到一个直线上升的曲线,竟然出现了一个“小波峰”和一个“小波谷”(如下图)。在SSD应用的最初阶段,SSD的失败率会随着闪存芯片的磨损而增加,但过了这个“磨合期”之后会有所下降,然后又会恢复到与使用成正比的轨迹上来。

闪存的失败率与闪存的使用

二、闪存失败率与读操作

《Facebook闪存失效大规模研究》报告中,Facebook的SSD一共分6个平台,A到F。每个平台可以看成是一个SSD池,每个平台的服务器配置1或2块SSD卡,有PCIE 1.0和2.0两种接口。每块SSD的容量和使用年限不同。

Facebook的闪存应用情况

从下图中我们可以看到,大量的读取操作并没有增加闪存的出错率。其中在E平台上,读操作是写操作的大约两倍,但也并没有因此增加闪存的出错率。

闪存失败率与读操作

三、闪存失败率与控制器DRAM的使用

在下面两张图我们可以看到,跨SSD物理地址空间的稀疏逻辑数据布局(如,不连续数据),需要通过大量的存储在SSD内部DRAM缓存的metadata来跟踪逻辑地址翻译, 会极大地影响SSD失败率。也就是说分散写和分散读都会对失败率有较大影响。图9中,研究者对平台B的六种工作负载下DRAM buffer使用和失败率的关系进行了比对,结果表明,DRAM buffer使用率越高,失败率越高。

四、闪存失败率与温度

通常而言,随着温度的升高,闪存失败率会随之升高,但是通过截流SSD操作可以极大地减少高温带来的可靠性负面影响,但是会带来潜在的性能下降。下图中,平台A和B没有做截流,C和E的截流非常明显。

闪存失败率与温度

五、写数据量和实际写到芯片的数量

由于SSD控制器的优化以及系统软件的缓存机制,操作系统写到闪存SSD的数量 并不能精确地反映闪存Cell上的擦写数量。下图中,C、D、E平台写数据量和写到闪存芯片的数据量是成正比的,其他的平台并非如此。

写数据量和实际写到芯片的数量

闪存稳定性的研究

闪存在长期使用过程中会存在性能衰减的问题,同时坏块的增加也会带来潜在的性能下降,论文中也提到了这个问题,但是由于当时数据采集模型未能完全考虑到这方面,因此在此篇论文未能充分分析,作者也提到在今后的研究中会考虑到这个方面。其实,作为存储介质,闪存的稳定性也非常重要。一些客户九反映随时使用时间和擦写数据量的增加,可以观察到明显的性能下降,下降幅度甚至超过50%。

由于Greenliant多年闪存领域的研发和经验,他们在产品设计阶段就考虑到闪存介质的这种物理特性,通过架构、算法等等大大降低了这种缺陷带来的产品稳定性影响。Greenliant在实验室中对闪存卡产品在高温环境下进行长时间的擦写和性能测试,在长达1年的疲劳测试环境中,每天全盘擦写50次,超过18000次擦写后(相当于每天全盘擦写10次,连续5年),性能衰减不超过10%。并且他们还会继续测试下去,知道产品不可用,以检测G-card的架构设计和产品的极限。

闪存稳定性研究

闪存制造与闪存产品选择

根据Facebook多年的闪存应用实例中,我们不难发现,系统软件、应用和闪存控制器等等都会对闪存的稳定性和可靠性造成影响。当前,闪存中主要使用NAND flash,这是一种非易失存储介质,成本低,但在耐久性和数据持久性方面存在着巨大挑战。并且我们从Facebook的使用报告中也可以发现,读写干扰以及制造工艺的缺陷也将是失败率增加的重要因素。

作为联系主机和NAND Flash的桥梁,闪存控制器的作用至关重要。我们现在总结一下闪存的管理功能有哪些:

  • Error-correcting code (ECC校验)
  • RAID保护机制
  • Wear leveling(磨损平衡)
  • Bad block mapping(坏块管理)
  • Read/write disturb management(读写干扰管理)
  • Garbage collection(垃圾收集)

此外,闪存还有其他一些定制化的功能,如加密、安全擦除和自毁以及压缩和去重等。

正如前文中所提到的,Greenliant在可靠性方面采用了分布式ECC校验,在稳定性方面进行长期的擦写测试。在每天全盘擦写50次,超过18000次擦写后,Greenliant闪存的性能衰减不超过10%。

Firmware的升级,也可能是闪存出现故障的因素。新的算法可能带来组件发热量或功耗的升高,底层设备访问的机制变化也会产生与其它代码和接口的兼容性等问题。为了将这些隐患规避掉,Greenliant的做法就是充分的测试。每次Firmware升级,Greenliant都会将整个可靠性测试重新完整运行一遍,并且同时在异地两个实验室同时做测试,并且只有两个实验室均通过测试后,才会发布新的Firmware版本。

而应对磨损平衡,Greenliant采用的是先进的磨损平衡算法,以来来保证闪存在读写过程中无“热点”,改善闪存的耐久性。

此外,Greenliant还拥有完整的掉电数据保护测试,这些都为最终产品的稳定提供必要的保障。

性能、可靠性和成本对于闪存采购者和使用者都是非常重要的,这三者中,成本虽是显而易见,但性价比其实并不好说;性能呢,需要很长时间的测试;而稳定性,往往是很多用户最为关注的。美图网杨尚刚在沙龙讨论过程中表示,他在选择闪存时主要测试产品的可靠性,如产品的寿命以及生命周期内性能的抖动等。而测试方法就是模拟环境进行反复擦写。

《Facebook闪存失效大规模研究》分析的是一个足够长的时期内一个真实的应用场景中的闪存应用实例,相信用户和厂商都能够从中找到对自己有价值的部分,对闪存的选型和闪存的研发大有帮助。