58

详解SSD可靠性影响因素、原理和解决方法

 5 years ago
source link: http://www.10tiao.com/html/683/201807/2650717963/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


      闪存技术对大家来说,已经不是什么新鲜技术。但每个技术从出现到广泛应用,都需很长的时间跟现有技术进行博弈,最终通过实践才能深得用户的认可。闪存就是一个典型的例子。用户在欣喜闪存高性能的同时,也对可靠性擦写次数故障率等问题充满担忧。所以,笔者觉得非常有必要通过以下几点,谈谈闪存这方面的问题,缓解大家的疑虑和担忧。


闪存介质为什么会有擦写寿命的限制?

 

      闪存介质中,保存数据的基本单元被称为Cell。每个Cell通过注入、释放电子来记录不同的数据。电子在Cell中进出,会对Cell产生磨损;随着磨损程度的增加,Cell中的电子出现逃逸的概率会不断增加,进而导致Cell所保存的数据出现跳变。(举个例子,某个Cell最开始保存的二进制数据是10,一段时间后再读取该Cell,二进制数据可能就变成了11)。


      因为闪存中保存的数据有一定的概率出现跳变,因此需要配合ECC算法(Error-Correcting Code)来使用。


      写入数据时,ECC引擎基于原始数据计算出冗余数据,并将原始数据和冗余数据同时保存。


      读取数据时,原始数据和冗余数据一并被读出,并通过ECC引擎检查错误并纠正错误,最终得到正确的原始数据。

      闪存所保存的数据出现跳变的数量,随着擦写次数的增加而增加。当擦写次数达到一定的阈值后,闪存中保存的数据出现跳变的数量会增大到ECC引擎无法纠正的程度,进而导致数据无法被读出。这个阈值就是闪存的最大擦写次数。

 

LDPC算法为什么可以提升闪存的擦写寿命?

 

      闪存所保存的数据,在保存一段时间后,会出现跳变;且出现跳变的数量,随着擦写次数的增加而增加。因此,SSD内部需要有ECC引擎进行数据检错和纠错。


      在SSD领域,当前标准的ECC算法是BCH算法(该算法以三位作者的名字首字母命名),可以满足绝大多数SSD的纠错需求。闪存介质所宣称的最大擦写次数,就是基于BCH算法来给出的。


      但随着TLC介质和3D NAND的普遍应用,同样的数据块,其寿命末期的出错率将会大大增加,BCH编码的纠错能力显得非常无力,这也使得LDPC纠错算法在SSD领域有了用武之地。

      LDPC算法是一个纠错能力很强的算法(相比BCH,可以纠正更多的数据跳变),复杂度较高,最早应用于通信行业。


      1963年Gallager的一篇名为<Low Density Parity Check Codes>的论文详细描述了该算法思想,从此LDPC就此诞生,LDPC 编码已经广泛应用于光通信、卫星通信、通信等领域,可以说是一套非常成熟的纠错算法。 


SSD的高性能是如何体现的?

 

      存储系统的性能主要体现在两个指标上,一个是IOPS代表每秒存储处理的IO数量,另一个是时延代表存储接收到IO之后处理的速度。

      上表为SSD和传统HDD的性能对比,我们可以看出无论从IOPS还是从时延角度SSD均远远好于HDD。


      从IOPS角度一块SSD提供的IOPS,需要60块左右高性能HDD才能达到相同的IOPS,但是从时延角度SSD的低时延是HDD无法提供的。

 

听说SSD写几千次就坏了,这是真的吗?

 

      当然这不是真的。SSD在处理数据写入时,每次都写到新的物理地址,从而使得所有的闪存物理空间被均匀使用。


      举个例子,假设一块600GB的SSD,其闪存介质写次数为1万次,那么该SSD可以写入的数据总量达到6PB (600GB*10000)。


      而业界对大量企业级硬盘的研究数据显示,应用在企业级环境中的硬盘,整个生命周期的写入数据总量是有限的。假设以单盘写入小于200TB为例,这意味着这块600GB的SSD磁盘,可以使用近十年以上。


      所以,即便SSD所采用的闪存介质只能写入几千次或者几万次,但是将闪存做成SSD之后,完全满足企业级应用的需求。

 

SSD寿命由哪些因素所决定?

 

      SSD的寿命一般是指其所使用的闪存颗粒可以承受的磨损寿命。SSD内部的其他器件不会成为整盘寿命的限制或瓶颈,一般不会成为寿命的短板。为了延长SSD磨损寿命,大多数厂商采用如下方法。


  • 1、提供冗余(Over Provisioning)。举个例子,一块100GB容量的SSD,其内部的闪存颗粒的物理容量是大于100GB,企业级SSD一般可以达到128G或者更多,超出的那部分就被称为冗余。


  • 2、采用较好的部件。如更好的颗粒、更好的控制芯片等。举例,SLC闪存颗粒的最大擦写次数优于MLC,而MLC又优于TLC。


      SSD的寿命与所采用的闪存冗余度、颗粒类型器件也有很大关系,所采用闪存的冗余越大,寿命越长。采用闪存的颗粒类型越好,寿命越长。采用控制芯片纠错能力越强,寿命越长。


      SSD寿命并非单纯取决于闪存的类型,而是多个因素综合作用的结果。通过充裕的容量冗余、强力的LDPC纠错算法,可以满足各种企业级应用需求。

 

导致SSD发生故障的原因一般有哪些?

 

      导致SSD的故障原因主包括闪存介质故障、硬件故障、软件故障等。相比HDD,SSD没有机械部件,因此对运行环境各方面的要求更低,满足HDD正常运行的环境完全可以满足SSD正常运行,并且在如在地铁、舰船等振动环境下,SSD更能发挥其稳定可靠地优势,保持业务稳定运行。

 

SSD故障后数据是否可以恢复?

 

      SSD和HDD虽然技术原理有所不同,但是在多数故障场景下,可以通过排除故障点,对故障SSD的数据进行部分或全部恢复。这一点上SSD与HDD相类似。


  • 1、当闪存介质失效时如果SSD内部出现了部分闪存介质失效,进而导致SSD故障,那么此时与HDD内部磁碟发生了物理伤害的情况是类似的,可以对故障部分进行隔离,进而恢复其他数据。


  • 2、当其他硬件失效时如果SSD出现了除闪存介质之外的其他硬件器件失效,进而导致SSD故障,那么可以通过替换失效的硬件器件,对数据进行部分或全部恢复。


  • 3、当SSD发生软件故障时软件故障可以通过升级软件来恢复部分或全部数据。


  • 4、针对数据安全擦除,实际上不属于SSD故障。在对SSD执行了全盘安全擦除后,数据无法恢复,SSD的数据安全擦出不必像HDD一样必须物理销毁。


      好了,今天的分享到此为止,关于更多闪存深度知识,请参看前期详细总结分享过<Flash闪存颗粒和工艺知识深度解析>文章。另外,笔者对本号涉及的技术做了总结和汇总(20+本打包),请点原文链接或识别小程序获取电子书详细信息。



热文阅读



温馨提示:

请搜索“ICT_Architect”“扫一扫”二维码关注公众号,点击原文链接获取更多技术资料

Stay hungry Stay foolish


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK