我们都知道,机械硬盘当一个文件被删除后,操作系统其实并没有删除数据 -
“事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为可覆盖的,所以下次数据将要再次写入的时候,可以覆盖写入这块被标记的区域。这也就是为啥那些所谓的文件恢复软件能恢复的道理。(数据依然存在)。”
这一套在普通的机械硬盘上工作起来非常完美,因为他们可以直接覆写旧的区域,但是当用到NAND闪存上就行不通了,当全部闪存被写满一遍后,没有空余(从未写过)的块可以被使用的情况下,速度就下来了。
在固态硬盘闪存内,数据存储一般是以page(页)为最小单位存储的(典型的为4KB),而128个page组成了一个block(块),数据可以以
4KB大小的页来读取和写入,但却只能以512KB(128
page)的块大小来删除。当读取数据或者写入到一个没有被使用过的page上时,固态硬盘的速度是很快的,但是覆写数据的话,就比较复杂了,需要许多步骤来完成。步骤可见下图:
具体就是:先要把整个块复制到缓存中,在缓存中用新数据代替旧数据,同时硬盘中的整个块就被删除了,最后将新组成的块写入硬盘,完成覆写操作。了解了删除和覆写,最后再来看TRIM命令到底是用来做什么的。简单说,TRIM命令就是当数据被删除时,让系统告诉SSD数据没了,让SSD将数据立即擦除。SSD一样会复制整个包含删除数据的块到缓存,清空块并写入有效数据的页回去,区别是这样等于把这个延迟时间从覆写数据的那个时间提前到了删除数据的时候(这个时候你对速度不敏感,如果你删除了很大很大的数据,可以去观察硬盘灯在你删除之后几秒内狂闪)[5],也就是说在删除文件的同时,硬盘上相应的区域也已经被那一连串覆写操作清空了,等到写入新数据时,因为有了完全空白的页,写入速度当然就快了。
所以,TRIM命令所做的就是把刚做的事情提前做了,从而使数据的读写速度保持较高的水平。
TRIM就是一把双刃剑,只有开启了这项功能,我们安装上的固态硬盘才可以享受到更长久的使用寿命和读写速度。但是开启此功能后,数据操作就要特别小心,没有后悔药。
TRIM开启关闭方法
打开命令提示符窗口页面之后,我们单击输入以下命令:
fsutil behavior query disabledeletenotify
关闭功能:fsutil behavior set disabledeletenotify 1
开启功能:fsutil behavior set disabledeletenotify 0