Trim,其实是一个ATA指令,并无正式中文名称,操作系统发送此指令给SSD主控,以通知它哪些数据占用的地址是‘无效’的。
在讲解Trim的重要性前,先说一点文件系统的相关知识。当我们在操作系统中删除一个文件时,系统并没有真正删掉这个文件的数据,它只是把
这些数据占用的地址标记为‘空’,即可以覆盖使用。但这只是在文件系统层面的操作,硬盘本身并不知道那些地址的数据已经‘无效’,除非系统通知它要在这些
地址写入新的数据。在HDD上本无任何问题,因为HDD允许覆盖写入,但到SSD上问题就来了,我们都已知道闪存不允许覆盖,只能先擦除再写入,要得到
‘空闲’的闪存空间来进行写入,SSD就必须进行GC操作。在没有Trim的情况下,SSD无法事先知道那些被‘删除’的数据页已经是‘无效’的,必须到
系统要求在相同的地方写入数据时才知道那些数据可以被擦除,这样就无法在最适当的时机做出最好的优化,既影响GC的效率(间接影响性能),又影响SSD的
寿命。
大家要牢记,Trim只是一个指令,它让操作系统通知SSD主控某个页的数据已经‘无效’后,任务就已完成,并没有更多的操作。Trim指
令发送后,实际工作的是GC机制。Trim可减少WA的原因在于主控无需复制已被操作系统定义为‘无效’的数据(Trim不存在的话,主控就不知道这些数
据是无效的)到‘空闲’块内,这代表要复制的‘有效’数据减少了,GC的效率自然也就提高了,SSD性能下降的问题也就减弱了。其实Trim的意义在于它
能大量减少“有效”页数据的数量,大大提升GC的效率。特别是消费级的SSD由于一般OP空间较少,因此相对于有大量OP空间的企业级SSD来
说,Trim显得尤其重要。
Trim的作用可参考下图。
Trim指令只有在操作系统进行删除、格式化等操作时候才会发送。Trim指令目前还不支持发送给RAID阵列中的SSD。(操作系统下进行的软件RAID可以支持)。
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目前不支持加密的文件系统。(以防止暴露加密文件系统信息)
阅读(698) | 评论(0) | 转发(0) |