SSD固态硬盘的Trim命令是什么

我相信听到过买SSD要买支持Trim的玩家不在少数,不过我敢肯定大多数玩家到目前为止还搞不懂Trim到底是干啥的,只是一味跟风,今天在这里我就稍微详细的解释下Trim这个命令。

Q: 为啥我们需要Trim?

A: 我们都知道,当一个文件被删除后,操作系统其实并没有删除数据 - “事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为可覆盖的,所以下次数据将要再次写入的时候,可以覆盖写入这块被标记的区域。这也就是为啥那 些所谓的文件恢复软件能恢复的道理。(数据依然存在)。”
    这里要注意一点: 硬盘本身是不知道当前数据的状态的,他只是被控制着做这做那。 上面这一套在普通的机械硬盘上工作起来非常完美,因为他们可以直接覆写旧的区域,但是当用到NAND闪存上就行不通了,当全部闪存被写满一遍后,没有空余 (从未写过)的块可以被使用的情况下,速度就下来了。
    在固态硬盘闪存内,数据存储一般是以page(页)为最小单位存储的(典型的为4KB),而128个page组成了一个block(块),数据可以以 4KB大小的页来读取和写入,但却只能以512KB(128 page)的块大小来删除。当读取数据或者写入到一个没有被使用过的page上时,固态硬盘的速度是很快的,但是覆写数据的话,就比较复杂了,需要许多步 骤来完成。步骤可见下图:

当SSD的所有空闲块都被使用后,再有写入操作,它只能覆写数据到之前被操作系统标记为删除的区域。这也是速度下降的开始:

要覆写一个4KB 页的文件系统,首先要把整个512KB 块复制进缓存里。然后,在缓存里删除这个4KB页,替换成新的数据。接下来,清空整个闪存内的这个512KB区域,并从缓存里把新的数据写回去。如果你需 要同时覆写很多的块 - ”例如是一系列小文件随机写入操作或者只是简单的写入一个大文件到SSD“。你会让你的SSD缓存快速过载,然后你的写入速度就会”垂直落体“。。。告诉 你,你能体会到会有多慢,早期缓存少的SSD甚至会延迟接近1秒(JMF602之流),为了修复这个问题,SSD厂商一个个都在新主控制器上加入了越来越 大的外置缓存,这虽然一定程度上解决了随机写入卡的问题,但是却不能解决SSD在覆写时速度下降的问题。

Q: Trim命令到底做了什么?

A: 简而言之,这个问题是因为操作系统和文件系统不能和SSD的主控进行删除文件的交流造成的,如果有之前没清除干净的数据,所有写入的页的操作都要先清除块再改写,将严重影响写入速度。有2种途径来修复这个问题:

第一个就是定期运行垃圾回收程序(GC)(这个操作有点像整理,在SSD空闲时,全盘扫描有效的页并合并整理起来变为一个包含全部有效页的块,而那些无效的页和块都将被完全的清除)。

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

当一个文件在支持Trim的系统里被删除后,操作系统会发个命令给SSD,让他知道这个数据所在的这个page可以直接被写入,等于把控制权从操作系统变 为了SSD主控制器固件。SSD一样会复制整个包含删除数据的块到缓存,清空块并写入有效数据的页回去,区别是这样等于把这个延迟时间从覆写数据的那个时 间提前到了删除数据的时候(这个时候你对速度不敏感,如果你删除了很大很大的数据,可以去观察硬盘灯在你删除之后几秒内狂闪),自然就会显得SSD的速度 回来了,因为你写入的时候有可用的空块。barefoot主控的SSD,有个程序叫做Wiper,这个程序会扫描全盘,清除掉全盘过去被删除的页(和 Trim的操作一样,手动),让SSD像新买来的一样。事实上这个程序在清除全盘已删除的数据之前,预先做了有效数据备份。由于程序独特算法和主控对应, 别家的主控不支持,因为不算是真正的Trim命令(不是由系统发出的命令),所以可以支持XP之类的老系统。

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

有很多人说,Trim是为测试而生的,这话其实没错,因为 1.Trim不能提速,只是保证速度尽可能不下降。(实际是SSD上没被使用的容量那里的速度不下降。Trim提前把那里的块清空了。下次直接可以写当然 快了。)2.Trim没改变原本要做的事,只是提前做掉了,测试软件测试时候就不需要做了,从而“显得”速度上去了。

对于GC来说,由于是移动,整理,合并了旧页到新块,删除了无效的旧块,会牺牲点写入次数(寿命)。但是GC支持RAID,也算有利有弊吧。

Q : 支持Trim有啥要求?RAID到底支持不支持Trim?

A : 首先我也是个玩家,非业内人士,所以下面的回答可能不正确,欢迎指出,而且这东西随时后更新,现在的答案不一定用的到将来。

Trim的三要素: 1. 系统: Win7, 2008R2 , Linux核心2.6.28以上。

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

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

以上3点缺一不可。

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

当前固件下的SF1200和SF1500主控SSD,请使用Intel的AHCI驱动,MSAHCI不支持TRIM。这个bug是因为此主控算法极其特殊,采用改革的压缩算法,造成删除数据时,Trim命令发送给了错误的页和块,造成Trim无效。

SSD固态硬盘的Trim命令是什么相关推荐

  1. linux分区4k对齐方法,Ubuntu 系统 SSD固态硬盘检查4K对齐以及开启Trim

    最近在折腾Ubuntu系统,想工作上能更专注一些,下面是一些经验吧算是. 0x00 查看SSD以及系统环境是否支持Trim 系统需要满足如下条件才能开启trim 1. 系统内核版本大于等于 2.6.3 ...

  2. SSD固态硬盘能否恢复--争议

    固态硬盘(SSD)凭借超高速的读写速度在高端玩家中颇受欢迎,但是SSD硬盘也暴露出一些不成熟的表现,之前已有过固件门.性能下降等例子.Techgage网站最新的测试显示SSD硬盘在数据恢复方面遇到了新 ...

  3. [SSD固态硬盘技术 0] SSD的结构和原理导论

    版权声明: 本文禁止转载 机械硬盘的存储系统由于内部结构,其IO访问性能无法进一步提高,CPU与存储器之间的性能差距逐渐扩大.以Nand Flash为存储介质的固态硬盘技术的发展,性能瓶颈得到缓解. ...

  4. plsql 删除一直在执行_固态硬盘开启Trim后,删除数据究竟能不能恢复?

    固态硬盘其实是闪存存储硬盘系列的一个俗称(SSD),近些年闪存存储发展迅速,一些企业级的固态硬盘容量能够达到10T以上容量,在速度和存储密度上的优势逐渐盖过传统的机械硬盘. 那么固态硬盘删除数据后能不 ...

  5. Macbook Pro 升级 SSD 固态硬盘+数据转移完全教程

    From:  http://www.guomii.com/posts/27398 最近 SSD 固态硬盘降价非常猛,小编也终于没有能够忍住,最近入手了一块镁光 Crucial M4 128GB 的 S ...

  6. 固态硬盘安装linux系统教程视频,操作Ubuntu中SSD固态硬盘的安装步骤和优化技巧...

    SSD硬盘对于我们电脑的重要性自然是不必说的,一个好的SSD硬盘可以帮助我们节省很多的电脑空间的使用,有小伙伴在网络上提问对于SSD固态硬盘的使用需要在安装的Ubuntu系统中优化的时候自己不知道你怎 ...

  7. ubuntu查看 固态硬盘位置_在Ubuntu(Linux)中启用固态硬盘(固态硬盘)TRIM | MOS86...

    随着更多的小型计算设备已经开始使用SSD固态硬盘(固态硬盘),一个担心的是,随着时间的推移,如果以与传统硬盘驱动器相同的方式使用SSD固态硬盘,则开始看到性能明显下降.这是由于SSD固态硬盘如何处理删 ...

  8. SSD固态硬盘怎么选?选对接口是关键

    随着固态硬盘的价格不断走低,其优异的性能也更为引人关注,越来越多的用户开始考虑自家的电脑怎样进行硬盘更新.那么问题来了,固态硬盘应该怎么选呢? 在选购SSD时,除了性能上的需求需要满足以外,接口的选择 ...

  9. 固态硬盘的计算机需要进行磁盘碎片整理吗,SSD固态硬盘需要碎片整理吗 固态盘切忌磁盘碎片整理...

    SSD固态硬盘需要碎片整理吗 固态盘切忌磁盘碎片整理.对于电脑的用户来说,磁盘碎片整理可以减少硬盘冗杂文件的堆积,加速了磁盘运转速度,从而提升了电脑整体的运行速度.但是SSD千万不能碎片整理,快来看看 ...

最新文章

  1. 想转行ML/AI却没有方向?这篇指南告诉你!
  2. Ember 3.9 发布,3.8 升级为 LTS
  3. 前端学习(712):数组的概念
  4. 一条消息未发,粉丝已破千万
  5. 老年人用什么方式存款最好?
  6. oracle11g增加备库,oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
  7. Python3.x:pip install pymssql安装时出错
  8. 一个教务系统多少钱_ERP系统多少钱
  9. Arrays工具类的常用方法
  10. java权限管理面试_java shiro面试题
  11. java-多线程编程
  12. 六自由度机械臂研究(1)- 简介, 自由度与改装
  13. PNP与NPN的转换电路
  14. 如何快速增长支付宝会员成长值
  15. 服务器状态监控app,服务器/网站连接状态监控工具
  16. 【分享视频资源】React JS教程
  17. mysql重复读导致余额不对_我所理解的MySQL之四:事务、隔离级别及MVCC
  18. 软件测试面试题【含答案】
  19. OSPF ISDN DCC
  20. 【Latex】Latex插入代码块

热门文章

  1. 360等中概股遭遇找壳难 回归A股不容易
  2. ip和mac地址格式填报校验
  3. JAVA银企直连建设银行云直连模式超详细讲解
  4. Tableau--使用参数为报表增加一个统计周期筛选条件(日,周,月,季度,年)
  5. 使用BT下载是否会损毁SSD?
  6. C#开发CANopen主站(SDO收发数据)
  7. ARM-Linux应用程序自动升级以及自动回滚的实现
  8. 基于视频图像的识别算法
  9. 服装ERP系统在工业4.0“+”互联网+的处境
  10. 链接文件转blob格式下载(浏览器)