什么是SSD中的TRIM?

TRIM命令(ATA命令集中称为TRIM, SCSI命令集中称为UNMAP)允许操作系统通知固态硬盘(SSD)哪些数据块不再被认为在使用,可以在内部擦除。

微调是在ssd推出后不久推出的。由于ssd的低级操作与硬盘驱动器有很大的不同,操作系统处理删除和格式等操作的典型方式导致ssd上的写操作的性能下降。TRIM使SSD能够更有效地处理垃圾收集,否则会减慢将来对所涉及块的写操作。

虽然在引入微调之前,已经有一些工具可以将一些驱动器“重置”到新的状态,但是它们也会删除驱动器上的所有数据,这使得它们无法用于正在进行的优化。到2014年,许多SSD拥有独立于修剪工作的内部后台垃圾收集机制。尽管即使在不支持TRIM的操作系统下,这也成功地维持了它们的性能,但是它也有增加写放大和闪存单元磨损的相关缺点。

原本在机械硬盘上,在删除数据时,系统只会在逻辑地址表的这个位置做个标记,说明这里应该是没有东西了,以后新的数据可以放在这个逻辑位置上。系统并不会发送任何请求给硬盘,因为下次在这个逻辑位置写入新数据时,系统可以直接找到磁盘上对应的物理位置,将硬盘上该处的无用数据覆盖,因此才有数据恢复的可能。所以对于硬盘的物理内容,在删除文件时其实并没有发生任何变化。

对于固态硬盘(SSD),由于闪存的固有特性,更新页之前必须要擦除相关块。如果不开启TRIM,在文件系统中早已被删除的块在物理上还存放着原来的数据,且SSD主控无法知道这个块已经无用,直到有新的数据要求写入该块。物理上存放已无用的数据会在SSD垃圾回收(GC)的过程中被当成有用数据对待,被这对于固态硬盘的寿命是非常不利的,同时会导致其工作效率和性能的降低。

而当操作系统识别到SSD并确认SSD支持TRIM后,在删除数据时,向SSD发出TRIM指令,通知SSD主控对应的页面已经无效,SSD启动GC(垃圾回收)机制时,就可以及时释放这些页面。未来有数据需要写入的时候,直接就可以写入了。

所以说,TRIM只是避免SSD在垃圾回收时将无用数据当成有用数据来搬运,从而延长了SSD的寿命。以上就是Trim的原理以及真正作用。

并不是操作系统提供Trim指令支持,所有SSD都能享受到Trim技术所带来的好处,这还需要固态硬盘的固件支持才能实现。一些主要的固态硬盘主控芯片厂商已经提供了支持Trim的固件(例如英特尔"X25-M G2"),不过也有厂商开发出不依赖操作系统的垃圾回收技术,通过回收不再使用的闪存区块加入负载平衡算法,防止固态硬盘在长期使用后速度下滑,并延长闪存使用寿命,过程完全在固态硬盘内部完成。