当传统存储厂商还在大力推动传统磁盘的时候,卡耐基梅隆大学通过将近4年的时间,通过Facebook数据中心的几万台服务器,进行了闪存 大规模使用的研究报告。这个报告第一次展示了闪存SSD可靠性的大规模研究。“他们在 Facebook数据中心通过近四年和数百万次的操作小 时进行数据收集来了解闪存SSD失败的性质和趋势。”

这次包括的意义在于:企业级测试、大规模、长时间的第一次全面了解闪存在企业级数据中心大规模应用的研究。对于闪存在数据中心的应 用具有很高的参考价值。可以预见,此次测试大大加速闪存大规模商业化。

那么此次报道对于闪存可靠性的研究有哪些精彩观点?近日,笔者参与了自媒体人阿明组织的一个闪存研讨会。现场邀请到来自Greenliant 亚太营销副总裁李炫辉,他就《Facebook闪存失效大规模研究》论文展开一系列现场讨论的话题。《大话存储1&2》作者张冬也将带来他对 该论文的独家分享。 同时,本次沙龙还邀请到来自人人网李蓓、美图杨尚刚等互联网用户。

Greenliant亚太营销副总裁李炫辉认为,“A Large-Scale Study of Flash Memory Failures in the Field《Facebook闪存失效大规模研 究》的论文题目,立足点非常好,它是在一个完整的闪存产品生命周期里面,并且在一个真实生产环境里面,去研究和发现闪存的可靠性对 于现代软件以及数据中心的影响。因为很多设备厂商可能只看自己设备的情况,但是对于下游厂商如何使用自己的设备应用的情况和问题, 了解不多。而且从整个生命周期去理解这个事情,是非常有意义的。”

目前我们谈到的闪存卡或者叫固态盘,其最基础的组成部分就是闪存颗粒。但是目前业内公认的一个观点就是,闪存颗粒并没有因为采用新 的纳米材质而提高其可靠性。随着闪存密度的增加,在芯片层面的可靠性是降低的。大家都在谈闪存颗粒越来越便宜了,比如说20纳米只有 25纳米60%的价格,16纳米大概只有20纳米50%的价格,越来越便宜了。但是问题是它是便宜了,但是可靠性会下降的。这就是为什么你会看 到有一些企业级产品维持高制程的工艺,并非低制程的工艺。

图一就是显示了当前随着闪存密度的增加带来了芯片级可靠性的降低:闪存大规模报告第一次出台,预测企业级应用大大加速

图一  闪存的可靠性趋势,通过增加每个单元的比特数来增加闪存密度或者通过减少颗粒大小都会影响到闪存的寿命和可靠性。

纵轴是可靠性、可擦除次数,横轴是纳米制程。

所以就有了现在闪存颗粒厂商都开始注重3D NAND。为什么颗粒厂商都开始注重3D NAND?原因在于 3D NAND在平面上可以采取更高制程,可 以让颗粒在35纳米甚至40纳米的制程上,通过多层结构增加容量,提高单个晶圆产出率、降低成本,同时大限度的保持闪存的寿命和可靠 性。

图一可以看出早期在72纳米的情况下,MLC的可擦除次数可以达到1万次。比如说到了35纳米,可擦写掉到几千次了。并且这里面还有bit error rate的变化,就是擦写过程中会出现错误的比例。

如何测试闪存的稳定性,李炫辉用了一个术语称为DWPD(Disk Write Per Day)(全盘磁盘写/每天),固态盘测试稳定性是每天10次DWPD, 就是说每天全盘擦写十次来测试闪存的性能以及寿命。因为这是符合企业盘在数据中心的实际应用情况。李炫辉表示测试Greenliant是一天 50次擦写进行测试,在55度的恒温下去跑。并且现在还再继续跑,已经跑了一年了。那么如果实际应用就可以支撑5年以上。虽然目前测试 结果是50*360超过18000次擦写。但是目前还没有看到衰减迹象。所以还在继续测试。想看一看Greenliant的闪存卡的极限是多少。

闪存大规模报告第一次出台,预测企业级应用大大加速

图二显示Greenliant对产品进行长期擦写以及性能测试 。在疲劳测试环境中,每天全盘擦写50次, 超过18000次擦写后,性能衰减不超过10%。

而且通过长期跟踪测试,有几个主要发现跟大家分享一下。

(1) SSD失败并不是单纯地随闪存芯片磨损增加;它们历经几个明显的时期,与失败如何出现和随后如何被检测到相一致

闪存大规模报告第一次出台,预测企业级应用大大加速

图三 我们知道磁盘是开机故障率比较高,然后是稳定期,故障率维持恒定,然后经过长时间使用,故障率又上升。闪存不同,看图三,闪存是开机故障率低,之后故障率有所提高,然后又是稳定期,最后故障率又提高。按照图示,李炫辉表示,对于闪存来说,早期能够替换临界状态 的颗粒非常重要。

当闪存大规模使用时,质量不好的颗粒就会出现损坏,故障率上升。这时,闪存可以通过OP( Over-provisioning,是指SSD保留他用的空 间)的颗粒替换质量不高的颗粒,替换之后,闪存逐步进入稳定工作的状态,故障率降低,直至生命周期的末端,故障率提升。

因此,Facebook论文里面还提到一个现象,早期替换率高的反而后期是比较稳定的,早期替换低的后期可能故障率更高。原因是什么呢?原 因是前期会有一些颗粒处于临界值,早期没有能够把处于临界状态的颗粒给替换掉,随后临界状态颗粒到后期变成坏的了 。早期出现的故 障多是坏块,由于块造成的SSD失效。

(2) 读干扰错误并不普遍

闪存大规模报告第一次出台,预测企业级应用大大加速

图四:固态硬盘的故障率与闪存单元读取数据关系不大,图中显示,其中超过写入闪存单元两倍的从闪存单元读取数据,但是显示不出故障 依赖于从闪存单元读取数据量。

(3) 跨SSD物理地址空间的稀疏逻辑数据布局(如,不连续数据),需要通过大量的存储在SSD内部DRAM缓存的metadata来跟踪逻辑地址翻译, 会极大地影响SSD失败率

(4) 高温会带来高的失败率,但是通过截流SSD操作看来可以极大地减少高温带来的可靠性负面影响,但是会带来潜在的性能下降

闪存大规模报告第一次出台,预测企业级应用大大加速

SSD的最适宜稳定可能不是大家想象的那么低,据李炫辉介绍:50℃~55℃是SSD适合的工作温度,稳定过高会带来错误,导致失败。温度过 低,也不利于SSD性能的发挥。

“闪存并不是温度越低性能越高,实际上温度越低由于电子驱动性能会下降因此还需要合适的工作温度,50到55摄氏度是比较好的工作环境 。既比较流畅,又没有那么高的激发态会出现电子流失。如果说太高了,可能电子流失会比较多一点。如果太低了,对于电子操作性能会下 降了,所以说还不能太低。”,不过对于这个问题,“所谓限流,直接对供电进行限制,相对来讲就是降低散热,降低散热实际上就变相地 降低温度了。通过限流可以降低温度、提高可靠性,但问题是这样又影响到了性能,实际上这是一个矛盾体。这个问题就需要在板卡的设计 过程中,怎么去这个给分摊掉,防止出现热点。热点就是真正的热点了,就是温度高点,一个地方的温度高会造成整个系统温度高。这就是 之所以用分布式架构的原因,防止出现集中式的热点。”

(5)由于SSD控制器的优化以及系统软件的缓存机制,操作系统写到闪存SSD的数量并不能精确地反映闪存Cell上的擦写数量

SSD故障是由两方面组成的:早期是由坏块检测功能造成的,后期就是wearout磨损造成的,对于wearout可以优化。

那么这里就需要提到磨损均衡的概念。磨损平衡分为动态和静态磨损平衡以及全局磨损平衡。

闪存大规模报告第一次出台,预测企业级应用大大加速

如图纵轴所示,有的块擦写了60次,有的块擦写了160次。这样就有很多块不能合理利用,大大减少闪存颗粒的实际寿命。

闪存大规模报告第一次出台,预测企业级应用大大加速

而通过磨损平衡的概念,让每个块都实现150次左右擦写(如上图),大大提高了块的利用率,这样有利于改善闪存耐久性,会优化闪存的性能。另外 在颗粒级别会有全局磨损平衡算法,这样进一步提升设备的可靠性。

当有Wear Leveling磨损均衡的时候,基本上所有的擦写都是一致的。“你擦了102次,我擦了98次,大家都差不多,这样大家均匀的一起走 向末路,而不会在一个SSD里面,我这个颗粒很快挂掉了,你那个颗粒还有半年的生命周期。”

通过以上闪存颗粒出现的问题可以帮助我们

(1)了解各种不同因素对闪存可靠性的影响,包括系统软件,应用以及SSD控制器,

(2) 设计更加可靠的闪存架构和系统

(3)为今后闪存可靠性研究改善评估方法

对于颗粒问题我们可以通过闪存控制器来优化,闪存控制器是闪存系统的核心

闪存控制器是联系主机和NAND Flash的桥梁 闪存控制器有以下闪存管理功能:

Error-correcting code (ECC校验)

RAID保护机制 Wear leveling(磨损平衡)

Bad block mapping(坏块管理)

Read/write disturb management(读写干扰管理)

Garbage collection(垃圾收集)


分布式ECC设计让性能持续成为可能

当Flash设备随着使用时间和数据量的增长,坏块会逐渐增加,会产生大量的ECC Error,这时设备性能和可靠性会大幅度下降,对应用性能 和数据安全带来影响。这就造成常见闪存卡ECC模块设计潜在的问题:性能衰减和可靠性下降。

由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND的生产中及使用过程中会产生坏块。为了 检测数据的可靠性,在应用NAND Flash的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提是能比较可靠的进行坏区检测。

G-Card分布式的ECC校验架构,就有点像动车了。在每一个颗粒里面,都封装了一个小的控制器,这个控制器就支持我们内部的ECC校验的处 理。这就意味着即使说出现比较多的错误,我有更多的处理的校验的芯片在里面,因此我的性能不会受影响,我的可靠性也不会受影响。这 样就说在颗粒内部实现非常好的性能和可靠性的保障。

闪存大规模报告第一次出台,预测企业级应用大大加速

Greenliant G-Card 分布式ECC设计架构—NANDrive模组

Greenliant磨损平衡的测试数据显示,每一个块的擦写次数的偏差都在7%以内,非常小的偏差。这样就保证非常高的可靠性,为此,一天全 卡擦写10次,G-card可以至少使用5年。李炫辉讲到“这五年之内,G-card基本性能和可靠性,没有变化,一直在整个生命周期是可持续的 。这就是闪存里面的磨损均衡,我要保证颗粒大家都用的次数差不多,我要有一个磨损均衡的算法。”

分布式ECC既带来了更可靠的校验计算能力,同时分布式的组件布局降低单个组件的功耗和温度,防止温度过高对系统可靠性和稳定性的影响另外需要用户了解的是SSD的存储策略。但系统需要对存储数据的闪存颗粒块进行擦写的时候,首先要将块内的有效数据迁移走,然后对于 整个页进行擦写。因此写放大会大大影响闪存的寿命。

我们知道PCIe设备是不支持Raid卡的,这时候如果出现颗粒级的故障,数据就会丢失。Greenlian在板卡上又定义了一个硬件Raid。每五个这样的颗粒做一个Raid组,连接一个阵列控制器,我们上面一共有8个阵列控制器,控制了8个组。这样保证说当颗粒出现故障的时候,用户的数据也是安全的。

闪存大规模报告第一次出台,预测企业级应用大大加速

“Greenlian板卡就在这种颗粒之间再实现硬件的Raid,这样就解决了用户对于数据高可靠性的一个要求。因为大部分PCIe闪存卡,都是基于操作系统的一个Raid,就会造成性能下降,加大颗粒的磨损度。”李炫辉讲到。而Greenlian的G-card闪存卡直接实现颗粒之间硬件Raid,

写放大(英语:Write amplification,简称WA),是影响SSD寿命以及性能的重要因素之一。

何为写放大,我这里根据网上资料,简单明了的谈一下。SSD里的数据不是直接更新,只能通过不断的擦除、重写进行。但是因为这个擦除 最小单元是块级别。所以如果你写入的数据如果远远小于块的大小。就是所谓的写放大。

如何你要写入一个4KB的数据,而块的大小是512KB,要简单一步写入4KB的操作变成:闪存读取(512KB)→缓存改(4KB)→闪存擦除(512KB )→闪存写入(512KB),共四步操作,造成延迟大大增加,速度变慢。写入放大就是: 实际写4K的数据,造成了整个块(共512KB)的写入 操作,那就是放大了128倍。这就是说WA是影响SSD随机写入性能和寿命的关键因素。

谈论了这么多针对《Facebook闪存失效大规模研究》论文的话题,相信大家对SSD包括闪存的技术架构和特点有一定的了解。下篇文章我们 会探讨《大话存储1&2》作者冬瓜哥(张冬)带来的闪存中最底层的东西,cell、Page、Block等内容。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党