异常掉电的隐患

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

(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. 使用 Azure CLI 创建 Windows 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍如何使用 Azure CLI 部署运行 Windows Server 2016 的虚拟机. 部署完成后,我们连接到服 ...

  2. Oracle EBS 查看双节点是否做了信任

    perl $AD_TOP/patch/115/bin/txkRunSSHSetup.pl verifyssh -contextfile=$CONTEXT_FILE -hosts=erpapp1,erp ...

  3. 编写脚本-SQL SERVER 用户权限分配

    USE   [TXM];GOCREATE USER  [WIN-JO\Administrator]FOR LOGIN  [WIN-JO\Administrator];GOEXEC sp_addrole ...

  4. Centos/Linux下调整分区大小(以home和根分区为例)

    转载于  https://blog.csdn.net/qq_33233768/article/details/65437609   在安装新系统的时候,有时候没法预估或者说错误的划分了分区大小,常常会 ...

  5. AndroidManifest 配置主活动

    在activity标签中写如下代码: <activity android:name=".MainActivity" android:label="This is M ...

  6. 【排序算法】冒泡排序(Bubble Sort)

    0. 说明 参考 维基百科中的冒泡排序 冒泡排序 (Bubble Sort) 是与插入排序拥有相等的执行时间,但是两种算法在需要的交换次数却很大地不同. 在最坏的情况,冒泡排序需要 O(n2)  次交 ...

  7. wordpress靶机快速搭建

    一.什么是Wordpres? WordPress是一种使用PHP语言和MySQL数据库开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当 ...

  8. SQL SERVER解析Json

    外包的项目,有很多信息存储在JSON中,无论是查询还是修改信息都十分麻烦.找了一些实用的SQL Function去解析,并附修改例子. 使用过程: 1. 需要在SQL新建自定义类型 table: Hi ...

  9. 不使用 vue-cli 与 vue 模版,使用 Vue2.x + webpack4.x 从零开始一步步搭建项目框架

    说明 这是我根据慕课网上的一个课程 Vue+Webpack打造todo应用 过程一步步搭下来的框架,去掉了业务相关的逻辑. 项目最终的效果包括了引入vue框架:使用CSS预处理器:使用babel:引用 ...

  10. HTML5新特性postMessage解决跨域

    window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息.基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信.让我们来看一下 ...