SSD固态硬盘的GC与Trim

操作系统:其实并没有删除数据;

 事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为无效的,

 所以等该区域被擦除后,下次数据将要再次写入的时候,可以写入这块被标记的区域。

 这也就是为啥那 些所谓的文件恢复软件能恢复的道理。(数据依然存在)。

固态硬盘:在固态硬盘闪存内,数据存储一般是以page(页)为最小单位存储的(典型的为4KB),而128个page组成了一个block(块),

数据以页(page)为单位来读取和写入,但却只能以块(Block)为单位来删除。

 当读取数据或者写入到一个没有被使用过的page上时,固态硬盘的速度是很快的,

 但是在无效数据区上的话,就比较复杂了,需要许多步骤来完成。

*注意:硬盘本身是不知道当前数据的状态的,他只是被控制着做这做那。

 上面这一套在普通的机械硬盘上工作起来非常完美,因为他们可以直接覆写旧的区域,

 但是当用到NAND闪存上就行不通了,当全部闪存被写满一遍后,没有空余 (从未写过)的块可以被使用的情况下,速度就下来了。

GC:要覆写(这里指在无效数据区域写)一个4KB 页的文件系统,首先要把整个512KB 块复制进缓存里。

 然后,在缓存里删除这个4KB页,替换成新的数据。

 接下来,清空整个闪存内的这个512KB区域,并从缓存里把新的数据写回去。

Trim:SSD一样会复制整个包含删除数据的块到缓存,清空块并写入有效数据的页回去,

区别是这样等于把这个延迟时间从覆写数据的那个时间提前到了删除数据的时候

简而言之,这个问题是因为操作系统和文件系统不能和SSD的主控进行删除文件的交流造成的,

 如果有之前没清除干净的数据,所有写入的页的操作都要先清除块再改写,将严重影响写入速度。

 有2种途径来修复这个问题:

第一个:定期运行垃圾回收程序(GC)

 这个操作有点像整理,在SSD空闲时,全盘扫描有效的页并合并整理起来变为一个包含全部有效页的块,而那些无效的页和块都将被完全的清除。

第二个:更好的途径就是当数据删除时候让系统告诉SSD数据没了,让SSD立即擦掉那些数据占用的块,这就是Trim命令做的事。

 当一个文件在支持Trim的系统里被删除后,操作系统会发个命令给SSD,

 让他知道这个数据所在的这个page可以直接被写入,

 等于把控制权从操作系统变 为了SSD主控制器固件。

总结:Trim保证速度不下跌的真正秘密是: 把将来要做的事提前做掉了, 但是这件事迟早要做,所以基本不会影响SSD原有的写入次数(寿命)。

Trim的三要素:

  1. 系统: Win7, 2008R2 , Linux核心2.6.28以上。

  2. 固件: SSD的厂商在固件里要放有Trim算法。

  3. 驱动: MS的驱动,Intel的AHCI驱动目前支持。 别的要看之后的更新了。

以上3点缺一不可。

RAID阵列里的盘明确不支持TRIM,不过RAID可以支持GC。

参考:http://blog.csdn.net/dayancn/article/details/52054664

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小讲堂

PHP环境中安装pear、phpunit以及xdebug全攻略1.准备2.安装

首先,本文是基于wamp环境的基础上的,所以,如果您看到这里还没有搭建好wamp环境的话,介意您先把环境搭建好,因为这里都是一些实践性的内容。 1.准备 wam...

45680
来自专栏逸鹏说道

大公司都有哪些开源项目之腾讯

1.WeUI 为微信Web服务量身设计 WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知...

52960
来自专栏美团技术团队

WebView性能、体验分析与优化

在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便...

1.2K120
来自专栏pangguoming

最火的Android开源项目整理

一、代码库 1、from  代码家 整理比较好的源码连接 ***************************************************...

88640
来自专栏程序你好

一个微服务架构的简单示例

50930
来自专栏更流畅、简洁的软件开发方式

【自然框架】之通用权限(八):权限到字段(列表、表单、查询)

 通用权限想要写的文章目录:(这是第八章) 1、 简介、数据库的总体结构 2、 介绍人员表组 3、 介绍组织结构表组 4、 介绍角色表组 5、 介绍“项目自我描...

32870
来自专栏安恒网络空间安全讲武堂

​writeup | 强网杯—Share your mind

0x01 分析题目 拿到题目后,首先先分析一下题目,发现有注册和登录,尝试登录成功后,发现如下几个页面 Overview // 显示当前自己所有发帖 Write...

36960
来自专栏云计算教程系列

为公益伸出援手,自建 NTP 服务器池

在本教程中,讲述如何设置了自己的时间服务器,并使其成为NTP池项目的成员,为社区服务,现在国内NTP服务器数量还是不够乐观,还是那句话,如果你有位于国内的、长期...

3.7K120
来自专栏FreeBuf

打开文件夹就运行?COM劫持利用新姿势

*本文原创作者:菠菜,本文属FreeBuf原创奖励计划,未经许可禁止转载 打开文件夹就能运行指定的程序?这不是天方夜谭,而是在现实世界中确实存在的。利用本文探讨...

27880
来自专栏全栈开发

webpack构建优化:bundle体积从3M到400k之路

在CQM平台开发时,把demo网站给同事体验,都纷纷反馈第一次打开页面的时候需要等待很久,页面一直在转菊花。作为一个为韩国头部厂商提供优质服务的网站,接到这种反...

76740

扫码关注云+社区

领取腾讯云代金券