SSD Trim介绍

1. 机械硬盘

机械硬盘(HDD)主要是通过机械装置来控制磁头在硬盘上对磁性物质进行磁化来进行写读操作的装置,因此机械硬盘可以直接覆盖写,所以不需要特别的擦除操作。
操作系统(包括磁盘驱动及文件系统)对机械硬盘的此特性进行了专门优化。当用户删除硬盘上的文件时,操作系统并没有告诉硬盘删除操作,操作系统只是将文件系统的数据映射表进行相应的标记(如FAT表中标记FAT表项为空),并不是真正是删除文件数据。这样做,可以提高操作效率。下次有新文件写入时,操作系统会通过文件系统表项中空白项对应数据区的位置,直接进行覆盖写操作即可。

2. 固态硬盘

固态硬盘(SSD)主要是通过NandFlash来存取数据。操作系统按照操作机械硬盘的方式来操作固态硬盘时,会面临一些问题。
当用户删除文件时,操作系统只是在文件系统中标记对应数据区为空闲,并不真正擦除对应数据区。下一次写操作时,是直接覆盖写。FLASH对应的SLC块容量为1MB,操作系统删除100MB文件之后,假设写128K数据大小文件,此时直接是覆盖写,覆盖因为需要搬移,并且实际搬移的数据可能是需要擦除的无效数据,这就非常影响写速度。
在这里插入图片描述

3. Trim

针对固态硬盘的这种问题,操作系统层面还有各种协议协会,共同提出了专门针对固态硬盘的优化方案——Trim。Trim命令在ATA命令集中,被称为TRIM,在SCSI命令集中被称为UNMAP。
Trim,就是操作系统在删除文件时,直接告诉固态硬盘删除操作,而不只是在文件系统中标记一下。例如,操作系统删除200MB文件,通过Trim告诉固件,那么固件就直接将对应200MB的NandFlash擦除。这样写的时候,就不用进行过多搬移,尤其是针对无效数据的搬移。
所以Trim主要有两个作用:
将擦除操作从覆盖写移到删除操作时。
将对无效数据的搬移操作直接消除掉。
Trim的效果必须是操作系统与固态硬盘匹配,才能发挥效果。windows7默认状态下trim指令是开启的,如果想查询目前的trim指令状态,我们可以在管理员权限下,进入命令提示符界面,

  • 输入“fsutil behavior query disabledeletenotify”,之后会得到相关查询状态的反馈。
  • 提示为“disabledeletenotify=0”即trim指令已启用;
  • 提示为“disabledeletenotify=1”即为trim指令未启用。
  • 输入“fsutil behavior set disabledeletenotify 0”,启用TRIM功能。
  • 输入“fsutil behavior set disabledeletenotify 1”,关闭TRIM功能。

4. 补充

传统机械硬盘没有TRIM,也不需要TRIM。但是最新的机械硬盘,为了追求更高的容量,采用了SMR(叠瓦式磁记录方式),这就导致写的时候需要写更宽的磁道,也就是说写的时候,如果当前磁道相领磁道有数据,
也是需要有一个相应的搬移操作,这同样影响写速度。为了避免这种情况,主要是删除文件时,需要提前完成一个搬移操作,以此来避免影响写时的速度。所以此种方式的机械硬盘也是可以响应操作系统的Trim指令,并且有良好的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章