你是否会遇到这样一种情况:

当你正在文思泉涌地敲打键盘赶稿件时,电脑突然抽风,然后,你就看到了绝望的蓝色(系统崩溃,电脑蓝屏了)。
其实office软件有自动保存的功能,当电脑重启,再次打开WORD文件时,会提醒你要不要导入最后自动保存的内容(这个方法不是100%管用)。

扯远了哈……

类似的情况,你是否想过,正在往SSD写入数据时,系统突然掉电了,那SSD的数据会怎么样呢?

总的来说,系统掉电会给SSD带来三种情况的灾难:

1. 用户写入数据丢失。我们在前面的文章提到“在Host写入数据时,并不会直接交给主控去写入NAND闪存,而是先把数据丢到DRAM缓存中,之后再传到主控内部的缓存中,最后再由主控写入NAND闪存”(详细内容请见本公众号历史文章“SSD内涵与外在俱佳—记SSD之结构与工作原理”)。我们假设Host写入的数据在放到DRAM这一步时突然掉电,由于DRAM是挥发性记忆体,只要断电,数据就会丢失。这对用户来说肯定会崩溃的,对企业级的用户更是不能容忍的。

2. FTL mapping信息丢失。SSD在完成一部分数据写入的时候需要更新闪存转换层FTL的mapping table(FTL相关详细内容请见本公众号历史文章“如何成为一个具有领导力的SSD主控?”), 如果在还未来及更新mapping table时,系统掉电,那么后果就是整块SSD对于系统不能识别。目前市场上SSD厂商都不会提供修复mapping table的工具。要想修复这块SSD就必须返厂维修,SSD厂商会通过特殊的方式对mapping table进行重建,并找到丢失的数据。

3.  造成SSD坏块增加。系统的突然掉电有可能会使NAND闪存中多个bit发生错误,如果错误的bit超过了ECC的纠错能力,主控就会将其标记为坏块,后续就不能用来存储数据。这也就是为什么在不正常断电之后,我们有时会看到坏块的增加。

在上一篇文章("你知道企业级SSD与消费级SSD的区别吗?")中,我们有介绍企业级SSD与消费级SSD区别。简单言之,企业级SSD更加注重数据的安全性,而消费级SSD更加注重的是成本。

对于消费级SSD,由于对数据的安全性要求不能那么的严格,并且ECC/LDPC纠错技术,Wear-leveling技术以及其他的Flash管理技术基本可以满足需求。

但是,对于企业级的SSD,这些措施并不能完全满足数据安全性的苛刻要求。

目前针对企业级SSD掉电保护的措施有两种:
1.增加电源储存电路(power hold-up circuit)。
2.关闭“回写缓存”(write-back caching)功能。

接下来,我们就这两种保护措施展开介绍:

1.增加电源储存电路(power hold-up circuit)

大多数的企业级SSD会有一块专门检测SSD供电电压的电路,如果检测到供电电压低于设定的阈值时,此时会给SSD主控发送预警。接着启动power hold-up电路,保证SSD正常的操作。

SMART公司的一款XceedIOPS SSD的掉电保护电路图如下:
Power hold-up电路中的电压源可以是超级电容(supercapacitor), 或者一系列的分离式电容(discrete capacitors), 甚至可以是一块电池(不过,目前市场上还没有产品采用这个方法)。这里主要分享超级电容和分离式电容。

(1)超级电容
超级电容是通过极化电解质实现储存能量的电化学元件。它可以在较小的三维空间存储惊人的能量。基于超级电容的掉电保护电路如上图所示。

由于设计基于超级电容的掉电保护电路相对简单,所以大多数的企业级SSD也是采用这个方法。但是超级电容想要在企业级SSD的应用中立于不败之地,并不容易。

超级电容大多数是铝电解电容。虽然铝电解电容具有较高的电容体积比,但是与所有的电解电容一样,铝电解电容同样具有可靠性顾虑。

超级电容会随着时间的增加,容量减小,并且电解液也会因为泄露和扩散而不断流失。温度对超级电容的影响不容忽视,环境温度每上升10度,超级电容的寿命就会折半。

(2)分离式电容

分离式电容会增加电路设计的复杂性,不过会克服超级电容可靠性的限制。基于分离式电容的掉电保护电路是采用了一系列的分离式电容并联,如下图。
分离式电容主要有氧化铌电容和聚合钽电容。这些电容不像超级电容那样采用电解液,所以不会有泄露相关的问题。氧化铌电容和聚合钽电容的环境温度可以达到85度。从这个角度讲,分离式电容更加利用企业级SSD的应用。

选择超级电容还是分离式电容,需要应用者根据成本与可靠性作出折中的决策。

2.关闭“回写缓存”(write-back caching)功能
我们先回顾一下什么叫write-back caching。看下图:

在Host写入SSD数据的整个流程是这样的:
(1)Host触发写入命令,并传入数据;
(2)SSD接收到数据之后,把数据放到DRAM缓存中,并开始写入NAND闪存;
(3)SSD发送完成报告给Host(注意,这时Data还没真正写入NAND闪存,SSD已经发送完成报告了);
(4)来自DRAM缓存的数据,这时才真正写入NAND闪存;
(5)NAND闪存完成数据写入之后给主控报告。

这样的一个过程,我们就称为write-back caching。

假设,系统在第(4)步掉电了,这时Host已经接收到完成报告,就认为数据已经写到了NAND闪存。但现实是骨感的,数据还在路上,这样,数据肯定丢失了。Host再去读它自己认为已经写好的数据,那么SSD会返回数据错误或者数据丢失。

如果,我们把这个功能关掉,把上面的流程调整一下:
(1)Host触发写入命令,并传入数据;
(2)SSD接收到数据之后,把数据放到DRAM缓存中,并开始写入NAND闪存;
(3)来自DRAM缓存的数据,这时才真正写入NAND闪存;
(4)NAND闪存完成数据写入之后给主控报告;
(5)SSD发送完成报告给Host。

关掉write-back caching之后,SSD要等到全部数据真正写入NAND闪存之后才会给Host发送完成报告, 这样,Host就不会错误的读取信息了。但是这样的做法会降低SSD的写入性能。在应用过程中,需要使用者作出折中的方案。

【结语】
掉电保护对企业级SSD尤为重要,目前掉电保护的措施有:
1.增加电源储存电路(power hold-up circuit),电容可以超级电容或者分离式电容。
2.关闭“回写缓存”(write-back caching)功能。

研发更加有效的掉电保护技术是一门科学,更是一门艺术,让我们拭目以待新科技。

更多精彩内容,敬请关注微公众号: 存储随笔,Memory-logger.

SSD掉电保护也是一门艺术相关推荐

  1. 固态硬盘掉电保护测试原理及要点

    前言 固态硬盘由于必须使用FTL做逻辑地址和物理地址之间的转换,如果在SSD读.写.删除等正常工作的情况下出现异常掉电,有可能会导致mapping table的因为来不及更新而丢失,从而出现SSD无法 ...

  2. flash写保护原理_STM32系统中的2种数据掉电保护方法!

    在嵌入式设备开发中,往往需要保存一些掉电不易失性的数据,如果系统配置.用户定制信息等等,如果增加额外的ROM IC,比如(基于I2C的24C02等等)往往会造成额外的PCB空间增大,硬件成本增加,降低 ...

  3. esp8266 eeprom_ESP8266_08基于flash的数据掉电保护

    这一节主要研究一下flash的用法,目的嘛,实现数据的掉电保护. 听起来像EEPROM? 确实很像,但不是!以STM32为例,片上是没有EEPROM的.但是,可以把一部分ROM当做EEPROM,通过程 ...

  4. iar编译工程的map怎么看使用flash大小_ESP8266_08基于flash的数据掉电保护

    这一节主要研究一下flash的用法,目的嘛,实现数据的掉电保护. 听起来像EEPROM? 确实很像,但不是!以STM32为例,片上是没有EEPROM的.但是,可以把一部分ROM当做EEPROM,通过程 ...

  5. 单片机带掉电保护c语言,基于LM358的单片机掉电保护电路

    描述 掉电保护简介 掉电数据保护是系统设备一个重要的功能. 目前,掉电数据保护的方法主要有2种: (1)加足够容量备用蓄电池,使系统掉电后继续工作: (2)不加备用电池,把掉电时需要保护的数据存储在非 ...

  6. 关于jffs2文件系统如何掉电保护

    JFFS2 是将节点信息保存在内存中 Flash上日志型文件系统的资料,了解到传统的基于闪存转换层(FLT)的文件系统存在的主要问题: 1. 效率低.因为每次都要把要修改的数据所在擦写块放入内存,产生 ...

  7. 基于串行E2PROM掉电保护计数器的设计

    百度网盘下载地址(959):点击下载 本实验是利用数码管来显示一个不断累加的两位数,其效果如图4-5所示: 图4-5 数码管的显示实验 在这个实验中,数码管的读数是经过IIC总线,从型号为24C02C ...

  8. 【51单片机门禁系统 密码锁+掉电保护 OLED显示】

    前段时间闲着无趣,自己做了一个小玩意,简单门禁系统,其中包括刷卡和密码输入,后期加上指纹,其中OLED用于显示,舵机用于模拟,蜂鸣器用于报警.刷卡使用的是射频识别技术,其中模块mfc522.下面部分代 ...

  9. 单片机供电及掉电保护

    上图:SMBJ5.0A,反向5V截止,当外部输入电压异常,超过5V,则该二极管就会反向击穿 SMBJ3.3A,反向3.3V截止 TC2117-3.3VDB:5V到3.3V转换芯片 C1-C3,C7不同 ...

最新文章

  1. myeclipse2014 mysql连接池_myeclips配置mysql连接池
  2. ORA-01855: AM/A.M. or PM/P.M. required问题排查与解析
  3. MIT线性代数:20.克拉默法则,逆矩阵和体积
  4. EFI BIOS下的磁盘管理工具Diskpart,Efifmt与Efichk(转)
  5. 重新定义代理的扩展性:WebAssembly在Envoy与Istio中的应用
  6. linux 内存强度测试软件,linux下的CPU、内存、IO、网络的压力测试工具与方法介绍...
  7. unity2018关联不到vs_现实VS真爱:远嫁的幸福和悲哀
  8. 多线程原理分析面试题理解
  9. 面向对象设计原则之1-单一职责原则
  10. 直播预告丨统一便捷的数据操作平台CloudQuery年终发布!
  11. .Net之美读书笔记15
  12. 编译aspell时出错
  13. html中评论的星星怎么写,css 评分效果的星星示例
  14. 希尔伯特:数学世界的亚历山大(2009-06-11 21:33:43)
  15. win7系统中如何以管理员身份修改hosts文件
  16. python大数据工程师薪资待遇_2019年就业薪资,凭什么大数据工程师遥遥领先?...
  17. 远程桌面 - linux
  18. Java 3D 开发
  19. SpaceX SN8飞船爆炸,马斯克:已拿到全部所需数据,火星,我们来了!
  20. 画论24 郭若虛《图画见闻志》

热门文章

  1. php writeup,PHP_encrypt_1(ISCCCTF) Writeup
  2. 大数据Clouder专项技能认证课程:Quick BI企业报表制作
  3. 不要再问芝士和奶酪有什么区别了!一次解释清楚
  4. 海岸TDM系统配置工具-流程
  5. C++中关于数据小数点,取整的方法
  6. Qt -设计嵌入式设备用户界面的利器
  7. 某东满3000减2020真的有这个劵么
  8. 智公网:公务员行测基础考点
  9. 春节小偷过年,手机放在办公桌上被偷
  10. Unity基本认识——走进Unity