从SLC、MLC,到今天的TLC乃至QLC,技术的迭代使得NAND存储密度越来越高,每GB的拥有成本也越来越低。如今,几TB甚至十几TB的企业级NVMe SSD已经开始成为主流,但另一方面,NAND的Cell擦写寿命越来越短,也引发了对于SSD寿命的诸多讨论。
通常说的SSD寿命是指在SSD生命周期内允许的数据写入量。增加SSD的容量、选择更高可擦写次数的NAND颗粒,无疑都是延长SSD寿命的有效手段。同时,它还要求SSD的其它硬件、软件(固件)都不存在短板。
一块企业级SSD在其整个生命周期中,应当在各类复杂的负载及外界环境下,都能保证其关键指标的一致。它要求产品在设计时,就充分考虑复杂多样的用户使用场景,并在功能设计、电路设计、元器件选型、固件算法等方方面面均满足预定的寿命和可靠性指标。NAND寿命虽然是影响SSD寿命的因素之一,但二者并不等同。
不论是SLC、MLC,还是TLC,它们都利用了量子力学的隧道效应,在控制门上加较高的编程电压,使电子穿越隧道氧化层到达浮栅,并聚集在浮栅上,存储信息。擦除时仍利用隧道效应,将电压反转,从而消除浮栅上的电子,达到清除信息的结果。电子在反复来回穿越的过程中会对隧道氧化层造成不可逆的磨损,使其不能再有效保持浮栅门中的电荷,并最终失效。
NAND寿命的量化指标为P/E Cycles,也就是写入/擦除(Program / Erase)次数,一写一擦就会消耗NAND的1个P/E。根据NAND厂商的要求,在P/E耗尽之前,NAND应满足以下特征:
SLC NAND的P/E次数可达数万,MLC约为3000,而早期主流的消费级cTLC NAND大约只有1000(随着纠错算法的迭代,目前消费级cTLC也可达到3000-5000 PE);企业级eTLC则高得多,一般为5000~10000。假设SSD的用户容量并没有几何级的增加,NAND的可用P/E次数少了,用户对SSD整盘寿命的担心自然会增加。
假如,我的SSD是1TB可用容量,P/E次数为1000,是否意味着,当我写完第1000TB数据的时候,SSD才会寿终?很遗憾,事实并非如此,甚至比你想的更加糟糕。写放大是导致这一问题的根本。
根据NAND工作原理,它以Page(页)为单位写入数据,以Block(块)为单位进行擦除,在新数据写入时,需要先对写入位置进行擦除操作,而不是像HDD那样可以直接覆盖。由于一个Block中含有多个Page,因此在擦除时需要先对里面的有效数据进行保留,重新写入,引发GC(Garbage Collection,垃圾回收)和写放大(WA,Write Amplification)。即,用户写1笔数据,实际写入到SSD中的可能是2~3笔,这样无疑会加剧NAND的P/E消耗。
企业应用的工作负载千差万别,不同工作负载所触发的写放大并不一样。在对硬盘的写入寿命测试中,我们通常会用到三种典型的负载模型:顺序、纯4K随机和JESD219中定义的IO模型,并引入WAF(写放大因子)的概念。
如上所示,顺序写入的WAF较小,约等于1(实际写入量约等于用户写入量),但由于现实业务场景很少有纯顺序工作负载,其测出的写入寿命并不具备实际可执行性;4K随机看似合理,但由于不含小于4K的IO操作,和用户实际场景也有一定差别;JESD219则对企业级用户的实际业务情况进行了参考和模拟,为SSD写入负载测试带来了行业参考标准,它包含从512 bytes到64K不同权重IO分布的组合,这些小于4K的IO也会进一步带来写放大。
此外,JESD219还根据企业级IO模型特点,对冷热数据进行了定义,借此触发磨损均衡(Wear-leveling),引入额外数据搬移,这也是JESD219标准下SSD的写放大会比纯 4K随机负载更高的原因。
不同测试方法导致不同的SSD寿命预估结果,WAF越高,其结果越具参考性。例如,市面上常见的企业级SSD,在纯顺序工作负载下的DWPD(硬盘生命周期内,全盘每天可写入的次数)可以达到5,在JESD219定义负载下,DWPD可能只有1。
以Memblaze PBlaze6 6920系列企业级SSD为例,其5年DWPD和PBW寿命是在JESD219工作负载下测试得出的。这样的测试标准显然更符合企业用户的实际使用场景,更具参考意义。
对于增加NAND的P/E可擦写次数,目前并没有好的办法,只能通过一些技术手段,让NAND在P/E耗尽之前,尽可能表现可靠。
NAND原厂对于数据纠错,会提供Retry Table,通过改变读数据的参考电压等各种参数供用户(SSD模组厂)使用。而对于那些合作足够紧密的厂商,甚至可以得到内部命令,进一步微调每一个波谷的位置,从而实现更强的数据纠错能力。
NAND的老化不以外界意志为转移,P/E Cycles,顾名思义只和Program & Erase动作相关,以优化读取电压为手段的提升P/E次数更是站不住脚。原厂每代NAND产品都经过了长时间的验证,得出了合适的参数固化成NAND产品投入市场。SSD厂商可以在所有与写放大的相关算法、技术中做出优化,但终不能突破P/E Cycles的最大数值。
当P/E Cycles达到厂商承诺的顶点时,SSD寿终。此时,你可能仍然可以对SSD进行读取、写入操作,但其中某个你注意不到的指标很可能已经发生“器官衰竭”,明显的表现就是数据保持能力急剧下降,出现数据错误率上升、数据损坏甚至丢失等问题,这样的隐患仅通过读写测试很难得到。此时SSD已不具备可靠特性,不建议继续使用。
SSD寿命单位有两种,PBW(或TBW)和 DWPD:
DWPD和PBW/TBW可以相互换算,公式如下:
假设一款SSD的用户容量为3.2TB,5年DWPD为3.4,那么其TBW为3.2TB*3.4*365*5,即19856TB。
DWPD的计算和硬盘服役时间有关,对企业级SSD来说,一般以5年产品保修期为参考。以PBlaze5 926系列企业级SSD为例,其每天3.4 DWPD写入量对应为5年生命周期,如果这块SSD只需要服役3年,那么其每天的DWPD可以达到5.7。
寿命代表SSD可以用多久,MTBF(Mean Time between Failures,平均故障间隔时间)则代表了寿命期间,这块SSD是否可靠。上文《揭秘:SSD的“可靠性”到底可不可靠》提到,在SSD生命周期内,其可靠性表现应始终满足行业标准(如企业级SSD需保证用户容量不变,UBER ≤ 10E-16,FFR≤ 3%,断电后40℃的室温下数据可以保持3个月);当SSD寿命耗尽,即达到预定的最大P/E次数,其可靠性会出现大幅下降。
不论是SSD的寿命PBW、TBW、DWPD,还是SSD的可靠性指标MTBF,它们都关乎到硬盘的实际可用性,并对用户的最终使用造成影响。SSD厂商也需站在用户立场,通过模拟真实用户使用场景,以敬畏而又严谨的态度,以相对保守的数字量化,为企业或个人用户做出保证,助其做出正确选择。