实用技巧:垃圾收集提高SSD性能的有效方式固态硬盘技术在数据存储应用领域的普及应用使得固态硬盘解决性能下降问题的方式逐渐受到人们的关注。最大的问题之一是这些硬盘收集垃圾并在写入操作之前将它们从数据块中删除的方式。众所周知,垃圾收集(Garbagecollection)可以保证在每次写入操作之前不必对整个数据块进行擦除,从而提高写入性能。垃圾收集在后台工作,将之前标记删除的数据块收集起来,然后在每个垃圾区块执行整区擦除,然后将回收的空间返回以便写入操作再次使用。拥有创新垃圾收集解决方案的厂商包括Indilinx、OCZTechnologyGroup和SandForce。市场调研机构ObjectiveAnalysis的分析师JimHandy说:固态硬盘面临着不能存在于传统硬盘中的困难,在新数据被写入之前,闪存必须被擦除。ObjectiveAnalysis预计企业固态硬盘市场的销量将增长148%。闪存的软件问题Handy称,擦除困难来源于目前所有的软件都是为传统硬盘而编写的,不适用于固态硬盘中的闪存。Handy说:传统硬盘可以在现有数据上覆盖写入新数据。由于软件不能适应闪存的‘写入前擦除'需求,固态硬盘中的控制器必须解决这个问题。未使用的和未擦除的区块被移动到后台进行擦除。表示,后台垃圾收集的主要优势是提高写入性能。Hong表示:如果后台垃圾收集不影响主机的ATA指令执行过程,它就不会降低固态硬盘的性能。后台垃圾收集是由一个预设空闲周期来启动,同时实时计算垃圾收集的成本。Hong补充说,有了那些预防措施,写入放大增量和持续时间减少就可以被控制在一个合理的程度内,几乎不会对固态硬盘造成任何不利影响。Hong表示:主机发出任何ATA指令,后台垃圾收集操作就会马上中止。几乎所有的固态硬盘都在使用超额预备来协助垃圾收集。固态硬盘中的闪存容量比用户可用的容量要多一些,一块64GB的固态硬盘实际包含的内部NAND容量或许是80GB,但是用户见到的只有64GB。另外的16GB容量是为后台操作而准备的。Hong表示:每一块固态硬盘都会因为各种原因而预备一定的容量。他说,固态硬盘行业领先的标准开发组织JEDEC建议的预备容量为总容量的7%。如果这个比率加大,那就是超额预备了。SandForce的首席技术官RadoslavDanilak指出,当固态硬盘回收区块即将有用数据从多个区块转移到一个数量相对更少的区块时,经常会发生问题。说:主机最终会需要用来自用户或操作系统的更新来替换那些数据,这样就会让某些刚刚回收的数据马上变成过期数据。Danilak说,在这个例子中,固态硬盘重新写入的数据是主机不需要的数据。他说:这其实就增加了固态硬盘的写入放大因素,加快了闪存的寿命损耗。更好的解决方案是通过执行垃圾收集来改善整个过程,让它可以在不降低硬盘性能的情况下与主机写入操作同时进行。执行垃圾收集后的固态硬盘性能Danilak指出,垃圾收集之前的写入性能通常都非常高,各个供应商之间的差别不大。Danilak说:对每个区块进行一次写入操作后,硬盘就开始垃圾收集,写入性能就会大幅下降,有时甚至会降低90%。