TRIM指令是微软联合各大SSD厂商所开发的一项技术,属于ATA8-ACS规范的技术指令。安全
TRIM是告诉NAND闪存固态存储设备要擦除哪些数据的SATA接口指令。当相关页面的数据能够被覆盖时,操做系统会发给SSD一个TRIM指令。SSD控制器等到主机开始删除和再次写入操做的时候,执行安全擦除操做。由于在写入操做过程当中不用花时间去擦除本来的数据,写入速度要快得多。
Trim指令也叫disable delete notify(禁用删除通知),当咱们在操做系统中删除一个文件时,系统并无真正删掉这个文件的数据,它只是把这些数据占用的地址标记为‘空’,便可以覆盖使用。但这只是在文件系统层面的操做,硬盘自己并不知道那些地址的数据已经‘无效’,除非系统通知它要在这些地址写入新的数据。
在HDD上本无任何问题,由于HDD容许覆盖写入,但到SSD上问题就来了,咱们都已知道闪存不容许覆盖,只能先擦除再写入,要获得‘空闲’的闪存空间来进行写入,SSD就必须进行GC(垃圾回收)操做。在没有Trim的状况下,SSD没法事先知道那些被‘删除’的数据页已是‘无效’的,必须到系统要求在相同的地方写入数据时才知道那些数据能够被擦除,这样就没法在最适当的时机作出最好的优化,既影响GC的效率(间接影响性能),又影响SSD的寿命。
而当Windows识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照,其创建速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。而后再是写入数据的时候,因为NAND闪存保存数据是纯粹的数字形式,所以能够直接根据Volume Bitmap的状况,向快照中已删除的区块写入新的数据,而不用花时间去擦除本来的数据。
Trim的做用可参考下图:
Trim的支持须要3个要素:
1.SSD主控制器和当前搭配的固件须要支持Trim命令接收。
2.当前操做系统须要支持Trim指令发送。(Win7/2008R2及后续版本)
3.当前使用的磁盘驱动程序必须支持Trim命令传输。
只有同时知足以上3个条件,才能作到系统Trim命令发送,驱动传输Trim命令,SSD固件接收到传输来的Trim命令。
Trim目前不支持如下几种状况:
1. Trim目前不支持RAID阵列中的SSD。(操做系统下进行软件RAID除外)
2. Trim目前不支持磁盘镜像文件内操做。(VM等虚拟机软件使用的虚拟磁盘文件)
3. Trim目前不支持加密的文件系统。(以防止暴露加密文件系统信息)
在window系统下查看SSD Trim功能是否开启:
1.启动CMD命令行窗口。
2.输入fsutil behavior query disabledeletenotify。
3.显示DisableDeleteNotify = 0 表示已开启。
4.若是没有开启,输入fsutil behavior set disabledeletenotify 0 进行设置。
5.能够手动关闭Trim功能,输入fsutil behavior set disabledeletenotify 1
注意:咱们是不须要关闭该功能的,由于只有开启了这项功能,咱们安装上的固态硬盘才能够享受到更长久的使用寿命。若是你安装的固态硬盘不支持该项功能,那么此功能在开启的时候会失败。