异常掉电的隐患

  若没有合理的掉电保护机制,而异常掉电的发生又不可避免,当发生异常掉电,会引发很多问题。

(1)丢盘

  异常掉电,会使得映射表来不及保存,丢失逻辑地址到物理地址的映射,待重新上电后,SSD将无法被BIOS识别。只能通过返厂维修解决问题,然而所谓返厂维修是通过重新开卡解决你的丢盘问题。重新开卡也就意味着所有用户数据的丢失!

(2)丢失缓存中的数据

  SSD一般都采用SDRAM或者DDR(也即DDR SDRAM)做缓存,其中SDRAM是非易失性存储介质,断电之后数据会丢失。

(3)导致误判的“坏块”增加

  MLC中,能存储2bit的数据,page以shared page方式存放,把LSB、MSB一个物理cell的两个bit分别映射到两个不同的page里面;将LSB(lower significant bit)放到Lower page(慢页)中存放,将MSB(most significant bit)放到Upper page(快页)中存放;操作规则为:先操作LSB后操作MSB。因此慢页的操作耗时比快页短。

  所以在MLC中,若Program时,Lower page没有被成功Program,会导致这个cell上的电压发生偏移,从而影响到Upper page中的数据。因此,如果错误bit数超过ECC纠错能力,那么在重新上电读取错误时,该Block被标记为坏块;或者,如果Lower page已经编程成功,而在Upper page编程过程中突然掉电,必然会导致Lower page中的数据发送错误,如果数据错误数量超过SSD ECC纠错能力,那么就会在读取时出现错误,Block会被主控判为“Bad Block”并标识到bad block table中。

掉电保护原理

  通常SSD会使用钽电容或者超级电容用作掉电后的供电设备;钽电容,适合宽温环境,但是容量较小;超级电容,不适合高低温环境,但是容量很大。

(1)超级电容(或钽电容)通过正常电源充电;

(2)在超级电容(或钽电容)输入端、SATA电源输入端,分别对输入电源进行侦测,侦测电路连接到对应的GPIO口;

(3)电源突然断电的瞬间,由GPIO反馈到Firmware;

(4)端口5V断后,Firmware反馈给HOST,不再接收还未传输到SSD的数据;

(5)限制电路端的侦测电路(防止瞬间输入电流过大而击穿硬件的保护电路)反馈到HOST,切换电源输入,转由超级电容(或钽电容)供电,满足断电后更新映射表及缓存内数据的写入所需的电力。

待考虑的问题

(1)电容容量的大小

  容量太小:电量不够用于数据的保存,照样会有异常掉电隐患。容量太大:一是,SSD需要电容充分放电后才能被识别,如果只是短暂突然的掉电,重新上电后电容仍然没有放电完毕,SSD将不会被识别;二是,容量大的电容需要充电的时间长,充电时间若不够,没有足够的电量保存数据。

(2)电容得老化问题

  电容也是有使用期限的,很长时间之后电容得老化可能导致电容电量只能有原来的30%。

(3)数据保护对象

  不同的厂家对数据保护对象有不同,常见的保护对象分为以下三种:

  • 保护SDRAM中所有数据(映射表+用户数据);再次上电后,相当于断电前的操作被中断,重新上电后就可立马进入待命状态。
  • 只保护映射表;再次上电后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,再将保存的用户数据提取出来,两者结合更新映射信息,更新完之后才进入待命状态。
  • 只保护用户数据;再次上电后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,只是丢掉了用户断电前正在操作的数据,无法更新。

【转载】SSD断电保护原理的更多相关文章

  1. [转载]SSD原理与实现

    [转载]SSD原理与实现 这里只mark一下,对原论文讲解的很好的博文 https://zhuanlan.zhihu.com/p/33544892 这里有一个关于SSD的很好的程序实现,readme里 ...

  2. iOS App的加固保护原理

    本文由  网易云发布. 本文从攻防原理层面解析了iOS APP的安全策略.iOS以高安全性著称,但它并非金刚不坏之身.对于信息安全而言,止大风于青萍之末是上上策,杭研深入各个细节的研发工作,正是网易产 ...

  3. [转帖]SSD的工作原理、GC和TRIM、写入放大以及性能评测

    SSD的工作原理.GC和TRIM.写入放大以及性能评测 https://blog.csdn.net/scaleqiao/article/details/50511279   SSD的物理结构和工作原理 ...

  4. 进程保护原理Hook函数Openprocess

    Win32子系统:                                                                                            ...

  5. [转载]jQuery诞生记-原理与机制

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3520 一.看似偶然的 ...

  6. 【转载】COM多线程原理与应用

    原文:COM多线程原理与应用 目录: COM多线程原理与应用 目录: 前言: 套间: 套间的定义: 套间的分类: 套间的进入和退出: 对象的同步: 组件对象的同步: COM对象线程模型: 进程内对象线 ...

  7. SSD基本工作原理

    SSD主要由SSD控制器,FLASH存储阵列,板上DRAM(可选),以及跟HOST接口(诸如SATA,SAS, PCIe等)组成. SSD主控通过若干个通道(channel)并行操作多块FLASH颗粒 ...

  8. 【转载】Java类加载原理解析

    Java类加载原理解析 原文出处:http://www.blogjava.net/zhuxing/archive/2008/08/08/220841.html 1       基本信息 摘要: 每个j ...

  9. [转载]cocos2d-触摸分发原理

    本文由泰然翻译组组长 TXX_糖炒小虾 原创,版权所有,转载请注明出处并通知作者和泰然! 原作 http://www.ityran.com/archives/1326/comment-page-1 触 ...

随机推荐

  1. Sql server的Merge语句,源表中如果有重复数据会导致执行报错

    用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...

  2. InfoPath读取数据库

    public void LoadBtn_Clicked(object sender, ClickedEventArgs e) { // 配置连接字符串 using (SqlConnection con ...

  3. 使用yum下载rpm包

    查看系统有哪些可用的yum源yum repolist all yum指定本地源安装rpm包yum install <package-name> --enablerepo=<repos ...

  4. Oracle 截取字符串(截取固定分隔符中间的字符

    #### Oracle 截取字符串(截取固定分隔符中间的字符) #### ####  oracle 取固定分隔符之间的字符--方法一 substr+ instrSELECT  substr('12JP ...

  5. [Python]运算符的优先级顺序

    运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模和取整除 + - 加法减法 >> & ...

  6. C#实现的协同过滤算法

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace SlopeOn ...

  7. Odoo作为App后端时如何调试App

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307340.html  一:Odoo可以作为app后台+后台管理系统使用 Odoo作为一个可供二次开发的框架, ...

  8. Docker技术入门与实战 第二版-学习笔记-4-Dockerfile外其他生成镜像的方法

    其它生成镜像的方法 即除了标准地使用Dockerfile来生成镜像外,还有一些其他的方法 1)从 rootfs 压缩包导入 格式:docker import [选项] <文件>|<U ...

  9. AxisWebservice 发送多参数配置

    1.在web.xml中配置代码如下 <servlet> <servlet-name>AxisServlet</servlet-name> <display-n ...

  10. 【转】mysql增量备份恢复实战企业案例

    来源地址:http://seanlook.com/2014/12/05/mysql_incremental_backup_example/ 小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但 ...