Trim功能是几乎所有SSD固态硬盘都具有的功能,是一个ATA指令,当系统确认SSD支持Trim在删除数据时,不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。从而实现更加快速的数据处理。
Trim 功能是几乎所有 SSD 固态硬盘都具有的功能,是一个 ATA 指令,当系统确认 SSD 支持 Trim 在删除数据时,不向硬盘通知删除指令,只使用 Volume Bitmap 来记住这里的数据已经删除。Volume Bitmap 只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。从而实现更加快速的数据处理。
Trim,英文意思是修剪,其实是一个 ATA 指令。ATA 技术是一个关于 IDE(Integrated Device Electronics)的技术规范族。最初,IDE 只是一项企图把控制器与盘体集成在一起的硬盘接口技术。 随着 IDE/EIDE 得到的日益广泛的应用,全球标准化协议将该接口自诞生以来使用的技术规范归纳成为全球硬盘标准,这样就产生了 ATA。
在机械硬盘上,写入数据时,Windows 会通知硬盘先将以前的擦除,再将新的数据写入到磁盘中。而在删除数据时,Windows 只会在此处做个标记,说明这里应该是没有东西了,等到真正要写入数据时再来真正删除,并且做标记这个动作会保留在磁盘缓存中,等到磁盘空闲时再执行。所以这样磁盘需要更多的时间来执行以上操作,速度就会慢下来。
而当 Windows 发现并识别 SSD 的 Trim 功能,则不向硬盘通知删除指令,只使用 Volume Bitmap 来记住这里的数据已经删除。然后再是写入数据的时候,由于 NAND 闪存保存数据是纯粹的数字形式,因此可以直接根据 Volume Bitmap 的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。
在没有 Trim 的情况下,SSD 无法事先知道那些被‘删除’的数据页已经是‘无效’的,必须到系统要求在相同的地方写入数据时才知道那些数据可以被擦除,这样就无法在最适当的时机做出最好的优化,既影响 GC 的效率(间接影响性能),又影响 SSD 的寿命。 Trim 只是一个指令,它让操作系统通知 SSD 主控某个页的数据已经‘无效’后,任务就已完成,并没有更多的操作。
Trim 指令发送后,实际工作的是 GC 机制。Trim 可减少 WA(写入放大)的原因在于主控无需复制已被操作系统定义为‘无效’的数据(Trim 不存在的话,主控就不知道这些数据是无效的)到‘空闲’块内,这代表要复制的‘有效’数据减少了,GC 的效率自然也就提高了,SSD 性能下降的问题也就减弱了。其实 Trim 的意义在于它能大量减少“有效”页数据的数量,大大提升 GC 的效率。特别是消费级的 SSD 由于一般 OP 空间较少,因此相对于有大量 OP 空间的企业级 SSD 来说,Trim 显得尤其重要。