与传统硬盘存储相比,数据存放在固态存储中的原理有许多不同之处。一个明显的不同点是在删除数据的时候。在传统硬盘中,删除一个文件只需要将文件系统中指向这个文件的指针清除就可以了,这时数据依然存放在硬盘中,但操作系统会认为这部分的磁盘空间是可用的。所以这些数据最终会被新写入的数据覆盖。
但在SSD中并不是这样。闪存设备需要将一个单元(cell)清空后才能将数据写入。当单元中还有数据时,清空单元的程序必须在新数据写入之前执行。因此,写入的时间就变慢了。
不过现在已经有了很多方法来解决这个SSD的写惩罚问题。“对于ATA或SATA接口的设备,有一种叫做TRIM的技术,” Demartek公司的Dennis Martin在最近一次的存储决策(Storage Decisions)大会上说。“当一个文件被删除时,操作系统对说,‘噢,这是一块SSD?立即开启垃圾回收流程,清空这些单元,以便有数据写入时它们是空的。’”
然而,并不是所有的操作系统都支持TRIM。“Windows 7和Windows Server 2008缺省启用TRIM,而Red Hat 6在Ext4 文件系统中支持TRIM,但缺省是不启用的。”Martin说。
那么如果你使用的不是SATA接口的设备呢?有办法来解决SSD写惩罚的问题吗?根据Martin的回答,SAS厂商已经提出了与TRIM类似的被称为UNMAP的技术,但该技术目前还未被广泛应用。
“另外,许多闪存厂商提供了工具来预先进行垃圾回收。”他说。