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

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

闪存介质中,保存数据的基本单元被称为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闪存颗粒和工艺知识深度解析>文章。

另外,笔者对本号涉及的技术做了总结和汇总(30+本打包),请点原文链接或识别小程序获取电子书详细信息。

热文阅读

  • NVMe Over Fabrics架构概述

  • 详谈持续数据保护(CDP)和数据副本管理(CDM)技术

  • 关于InfiniBand架构和知识点漫谈

温馨提示:

请识别二维码关注公众号,点击原文链接获取更多云计算、微服务架构等技术资料总结。

SSD可靠性影响因素、原理和解决方法相关推荐

  1. Tomcat中文乱码问题的原理和解决方法

    为什么80%的码农都做不了架构师?>>>    Tomcat中文乱码问题的原理和解决方法 自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决 ...

  2. ARP***原理及解决方法与CMD命令分类(1)

    ARP***原理及解决方法与CMD命令分类 ARP***原理及解决方法与CMD命令 [故障原因] 局域网内有人使用ARP欺骗的***程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序). ...

  3. http劫持的实现原理以及解决方法

    大家平时上网的时候应该遇到过,就是在不管打开什么网页,下方角落里有时候会出现一些小广告,有时候这些广告,不是访问的站点为了盈利而投放的广告,而是第三方的运营商提供的,这就是 HTTP 劫持. HTTP ...

  4. QT错误:No rule to make target ‘../‘, needed by ‘debug/qrc_res (资源文件没有更新)的原理和解决方法

    问题分析:资源文件  resource.qrc 已经编译生成,在resource资源目录下进行删除不能改变已经编译生成的 resource.qrc 所以会出现此类错误. 解决方法:项目右键执行qmak ...

  5. JavaWeb篇之二------sql注入的原理和解决方法(预编译)

    引言 在上一篇最末,我展示了sql注入现象,接下来我们来探究sql注入的本质原理 Sql注入及解决方法 我们打个断点,debug调试一下(不清楚代码的可以看上一篇) 我们可以看到"泊进之介& ...

  6. android listview图片错位原理及解决方法

    最近去面试被问到了listview中图片错位的原因,而我一直在往viewholder和tag机制上聊(被虐了),其实viewholder和tag机制只是解决图片错位的方法,而非产生图片错位的原理,回来 ...

  7. (其他)用sublime text3编写的html网页用浏览器打开出现中文乱码的原理及解决方法(转)...

    最近发现Hbuler比较难用,换成sublime text3了,用了以前没用过的软件,就要学习他的操作,刚上手就出了点问题. 解决方法就是sublime text3以utf8 with bom保存. ...

  8. 某英语网不允许粘贴的原理及解决方法

    禁止右键的代码: $('body').bind('contextmenu', function() {return false; }); 某英语网原代码 禁止复制的代码: $('body').bind ...

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

    闪存技术对大家来说,已经不是什么新鲜技术.但每个技术从出现到广泛应用,都需很长的时间跟现有技术进行博弈,最终通过实践才能深得用户的认可.闪存就是一个典型的例子.用户在欣喜闪存高性能的同时,也对可靠性. ...

最新文章

  1. 如何优雅的设计java异常
  2. [scala-spark]6. 继承与特质trait
  3. 于python保留字的是_《于》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  4. Effective C++ 条款47
  5. Linux源码安装mysql 5.5.13 (cmake编译)
  6. php oracle 无查询结果,php - Oracle Insert查询不起作用,也不会抛出任何错误 - 堆栈内存溢出...
  7. python tab和空格混用_我的 Python 编码规范
  8. mgg mysql_MYSQL基础命令
  9. 企业信息化管理有什么意义?
  10. 腾讯 监控系统服务器数据采集,日均采集1200亿数据点,腾讯千亿级服务器监控数据存储实践...
  11. Android中Bitmap、Drawable、byte[]转换
  12. typedef NS_ENUM 等枚举介绍
  13. PKM2 - PKManager 基于内容的个人知识管理工具 5M 绿色免费
  14. Qt高级编程完整源码
  15. Linux日志管理实验
  16. 计算机Excel及格率怎么,及格率怎么算在excel里?
  17. 零极限:关于蓝色太阳水原理
  18. MarkDown 编辑器字体改颜色大小等常用操作
  19. 从身边的移动支付说起
  20. 软考-中级-网络工程师-笔记-第1章-计算机网络概论

热门文章

  1. 世界首个由队伍拥有并运营的CS:GO电竞联盟FLASHPOINT成立
  2. css firefox火狐浏览器下的兼容性问题
  3. 智能驾驶系统简介和测试要点分析
  4. 把图片转成像素点保存到Excel中
  5. Android-涂鸦板
  6. python3中import time是什么意思_python3_time模块详解
  7. 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))
  8. Android studio 获取MD5和SHA1
  9. ChatGPT 体验和思考
  10. 2022年二级建造师考试机电工程练习题及答案