SSD 相关基础知识
SDD 基础知识
SSD(Solid State Drives)是固态硬盘,使用闪存颗粒来存储数据,闪存又可分为NAND Flash和NOR Flash,通常所说的SSD硬盘都使用NAND Flash芯片来存放数据。NOR型存储内容以编码为主,其功能多与运算相关;NAND型主要功能是存储资料。
- Nor Flash:主要用来执行片上程序
优点:具有很好的读写性能和随机访问性能,因此它先得到广泛的应用;
缺点:单片容量较小且写入速度较慢,决定了其应用范围较窄。
- NAND Flash:主要用在大容量存储场合
优点:优秀的读写性能、较大的存储容量和性价比,因此在大容量存储领域得到了广泛的应用;
缺点:不具备随机访问性能。
SDD Flash规则
在对SSD中数据进行更改操作时,不能像HDD那样对原有数据进行覆盖更新,需要读取到整个页面的数据到缓存,然后更新缓存中的数据,再将更新后的数据写入到空的页面或已擦除的页面,将原有页面标示为无效。
以页为单位进行数据写入,以Block为单位进行数据擦除。通常会将页设置为4KB,将Block设置为512KB。
每个Block的擦除次数有上限,擦除次数过多容易导致Block损坏。
SSD 映射表(Mapping Table)
数据在实际存储单元的绝对地址被称为物理地址,数据在程序中使用的相对地址被称为逻辑地址,SSD在内部维护一张映射表,用来存储物理地址与逻辑地址的映射关系。
映射表使用DRAM(Dynamic Random Access Memory)来存放,方便快速访问,SSD会同时存放多份映射表,并且定期刷新映射表数据。
如果SSD因为断电等原因导致映射表损坏,就会导致整快SSD数据丢失。
SSD 垃圾回收(Garbage Collection)
垃圾回收指将多块Block中的有效数据集中搬迁到新的Block上,将原有Block进行擦除以备新数据写入。
垃圾回收策略可分为主动垃圾回收策略和被动垃圾回收策略:
- 主动垃圾回收策略:通过周期性地任务来检查BLOCK的可用空间,主动对需要的BLOCK进行垃圾回收。
- 被动垃圾回收策略:当数据写入操作发生时,发现当前可用空间小于临界值,首先进行垃圾回收,然后再写入数据。
SSD 磨损均衡(Wear Leveling)
由于每个BLOCK的擦除次数是有限的,即擦写寿命(Program/Erase Count,P/E值),为避免少数BLOCK被频繁擦除而导致损坏,因此广泛采用磨损均衡算法将写操作均匀分布到各闪存单元上,使得所有的闪存单元与整块盘的最大使用寿命保持在同以数据量级。
磨损均衡算法可分为两类:
动态WL,在对BLOCK进行擦写操作时,优先选择P/E值较低的BLOCK进行操作
静态WL,将P/E值降低的BLOCK数据移动到P/E值较高的BLOCK中存放。
SSD 预留空间(Over Provisioning)
垃圾回收的前提是有足够的空闲空间来拷贝原BLOCK中有效数据,为避免因缺少空闲空间导致无法进行垃圾回收操作,需要预留一部分存储空间来备用。
预留空间除保证垃圾回收机制外,还用来存放SSD的系统数据如映射表、SSD固件、以及坏块信息等。
当预留空间值越大时,垃圾回收就会越快,写放大就会变小,整快盘的读写性能就会变得越好,但带来的坏处就是用户可用的空间变小。
另外SSD使用Spare Area(SA区来标记坏块。
SSD 写放大原因
假设需要在4K的数据页中追加2K的数据,先将该页现有数据读取到缓存,然后将2K新数据追加到缓存,然后挑选一个空的或者已擦除的页面来写入数据,将原数据页标记为无效。在选择空的活已擦除的页面时,如果触发"被动垃圾回收策略",需要将整个BLOCK中的有效数据读取到缓存,然后对整个BLOCK进行擦除,再将缓存中数据写入到BLOCK中,导致实际写入SSD中数据量远大于需求数据写入量,数据写入操作被放大,即SSD 写放大Write Amplification,简称WA。
SSD 断电保护
通常SSD会使用钽电容或者超级电容用作掉电后的供电设备,当检查到SSD断电后,电容设备提供电力来保证SSD将DRAM中缓存的数据写入闪存。
针对DRAM中数据,保护机制分为三种:
- 保护DRAM中所有数据
- 只保护DRAM中的用户数据
- 只保护DRAM中的映射表
如果断电保护机制失效,则很有可能导致SSD出现数据丢失,严重情况下会丢失所有数据。
##==================================================================================##
摘抄自:
http://www.cnblogs.com/Christal-R/p/7230304.html
http://www.cnblogs.com/Christal-R/p/7246415.html
http://www.chinastor.com/baike/ssd/0322364312017.html
##==================================================================================##

SSD 相关基础知识的更多相关文章
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- JAVA相关基础知识
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- iOS蓝牙开发(一)蓝牙相关基础知识(转)
转载自:http://www.cocoachina.com/ios/20150915/13454.html 原文作者:刘彦玮 蓝牙常见名称和缩写 MFI ======= make for ipad , ...
- IOS 蓝牙相关-基础知识(1)
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...
- iOS_SN_BlueTooth( 一)蓝牙相关基础知识
原文 http://www.cocoachina.com/ios/20150915/13454.html 作者:刘彦玮 蓝牙常见名称和缩写 MFI ======= make for ipad ,ip ...
- ios蓝牙开发(一)蓝牙相关基础知识
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...
- SQL学习(一)相关基础知识
RDBMS基础知识 1.数据库是按照数据结构来组织.存储和管理数据的仓库:数据库是一些关联表的集合. 2.数据表是数据的矩阵,在一个数据库中的表看起来像一个简单的电子表格. 3.列:一列包含了相同的数 ...
随机推荐
- vim中代码自动格式化
参考资料: https://blog.csdn.net/qachenzude/article/details/25511875 1,gg 跳转到第一行 2,shift+v 转到可视模式 3,shift ...
- How to reconfigure installed dpkg package (tzdata, locales)
1 List the installed dpkg package $ sudo dpkg --list 2 Reconfigure the package $ sudo dpkg-reconfigu ...
- Python之路番外(第三篇):Pycharm的使用秘籍
版本:Pycharm2017.3.4Professional Edition 一.Pycharm的基本使用1.在Pycharm下为你的python项目配置python解释器 file --settin ...
- Null value was assigned to a property of primitive type setter of cn.itcast.oa.domain.Forum.topicCount
[引用http://m.blog.csdn.net/blog/u013998070/41087351] Null value was assigned to a property of primiti ...
- 企业类Web原型制作分享-Kraftwerk
这是一个设计师团队,将数码产品的创意发挥到极致.整个网站采用深黑色背景和图文搭配,网站有很多动画特效,均突出数码产品的质感.网站结合滚动区实现导航栏悬浮效果,用弹出面板实现点击弹出内容等交互效果. 本 ...
- ubuntu14上安装nltk
安装nltk 1)在buntu终端命令键入:wget https://bootstrap.pypa.io/ez_setup.py,下载ez_setup.py. 2)下载完成后后,键入:sudo py ...
- 2017多校1 hdu-Balala Power!
其实这道题的思路挺简单的,就是找在第一位置没有出现过并且权值小的那个字母为0. 把a~z按照权值排序,其实难就难在这里,权值很大我们怎么给他排序. 其实可以开个数组来存他们每位数是多少,然后给他们比个 ...
- ubuntu禁用n卡驱动(进系统卡死)
显卡驱动 该发行版依旧内置了Nouveau 开源驱动,这是导致频繁死机的直接原因.接下来要做的三件事情是: 禁用Nouveau 内核模块 安装Intel HD 530 驱动(二选一) 安装NVIDIA ...
- Rest架构风格
一.REST介绍:: 1.REST是英文 Representational State Transfer的缩写 -- 表象化状态转变 或者 表述性状态转移 1.1 REST是 Web服务的一种架构风格 ...
- mybatis 接口绑定 和 动态SQL
一.MyBatis 接口绑定方案及多参数传递 1.作用:实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象就可以获取mapper.xml中编写的sql 2.后面 ...