固态盘技术暴露垃圾回收问题
固态盘在数据存储应用越来越多的使用暴露出了它在应对性能降级方面的问题。其中最大的难题就是,这些驱动器收集无用信息并在执行写入操作之前将其从数据块中删除掉。 在行业中这被称为“垃圾回收”,也就是避免了在每次写入之前擦除整个数据块的需求。垃圾回收机制是运行在后台的,积累那些之前被标记要删除的数据块,对每个“垃圾”块是是整个块的擦除,回收空间为后续写入操作重新使用。 提供了这种创新的垃圾回收机制的厂商包括Indilinx、OCZ Technology Group和SandForce。 市场研究公司Objective Analysis预测企业级固态盘市场的出货量将大幅增长148%。该公司的分析师Jim Handy表示:“固态盘有一个硬盘驱动器没有的难点——那就是闪存必须在新数据写入之前被擦除。” 闪存的软件难题 Handy表示,擦除难题源自于目前所有软件都是针对写入硬盘驱动器设计的,而硬盘驱动器与固态盘闪存的运行机制是不同的。 Handy表示:“一个硬盘驱动器可以用新数据覆写已有数据。因为软件不能解决闪存‘写入前擦除’的需求,所以固态盘中的控制器必须应对这个问题。未使用和未擦除的数据块在后台被删掉和擦除。” Indilinx副总裁Geonyoung Hong表示,后台垃圾回收的主要好处在于可以提高写入性能。 Hong表示:“后台垃圾回收不会造成固态盘性能的降级——如果它没有中断来自主机的ATA命令处理的话。启动后台垃圾回收之前应该预设空闲时段和计算垃圾回收成本。” 预先采取了这些措施之后,写入放大增量和生命周期降级就可以被控制到一个合理的范围内——不会给固态盘带来太大伤害。 Hong表示:“主机发送的任何ATA命令都可以中止后台垃圾回收。” 几乎所有固态盘的一个共通点就是利用过量配置来帮助垃圾回收流程。固态盘中的闪存容量高出提供给用户的可用容量——一个64GB的固态盘实际上包括80GB的内部NAND闪存,但是用户可见的是64GB。其他16GB提供了一个用于后台处理的区域。 Hong表示:“每个固态盘因为各种原因而保留了一个区域。”固态盘行业标准制订机构JEDEC建议这个预留的空间占总空间的7%。如果比例提高,就应该称之为过量配置。 SandForce首席技术官Radoslav Danilak表示,当一个固态盘重新回收块(将有用数据从多个块集中迁移到更少量的块中)的时候往往会发生一个问题。 Danilak表示:“主机最终需要用来自用户或者操作系统的更新数据取代旧数据,这会让一些刚刚回收来的数据失效。” 在这个例子中,固态盘现在重新写入主机不需要的数据。Danilak表示:“这实际上提高了固态盘的写入放大量,而导致闪存更早地损耗。有一个更好的解决方案,那就是加强实施垃圾回收的流程,这样就可以与主机写入操作同时进行,而不会造成驱动器性能降低。” 垃圾回收之后的固态盘性能 Danilak指出,垃圾回收之前的写入性能通常很高,而且不同供应商之间的性能水平都差不多。 Danilak表示:“在写入每个数据块一次之后,驱动器开始启动垃圾回收流程,写入性能大幅度降低,有时候甚至高达90%。” 他表示,SandForce的解决方案可以让驱动器可执行写入主机操作与垃圾回收流程同时进行。 TRIM有利于固态盘性能 OCZ Technology Group产品管理副总裁Eugene Chang表示,OCZ采取了另外一种不同的垃圾回收方法。 他说:“我们的驱动器设计支持垃圾回收或者TRIM,实际使用取决于驱动器架构(例如内部RAID)、目标市场和应用。” #p#page_title#e# Chang还表示,OCZ的目标是将固态盘的性能保持在高于硬盘寿命的最高水平上。他说,OCZ采用两种基本的垃圾收集方法:将维护整合在固件中、提供用户发起的工具来完成相同的任务。 Chang表示,OCZ提供了三种不同的垃圾回收方法。 有些OCZ驱动器的固件具备空闲时垃圾回收功能,包括PCI-Express和高容量3.5英寸固态盘,旨在加强高性能耐用性。OCZ的主流2.5寸固态盘解决方案支持Windows 7和各种版本的Linux系统提供的TRIM。 Chang表示,对于那些喜欢使用Windows XP或Vista的用户来说,OCZ提供了一个手动垃圾回收工具,用户可自行决定是否启用。另外OCZ还提供了一个针对XP和Vista系统的垃圾回收升级固件。 Chang说:“垃圾回收只是帮助OCZ长期维持固态盘性能的功能集之一。” Handu表示,垃圾回收的问题短期内不会消失。 他说:“我们预计在问题解决之前还将听到更多关于这个问题的讨论。尽管如此,大多数现有的垃圾收集技术足以满足目前应用软件的需求。”
Danilak表示,SandForce SSD Processors使得低成本MLC内存(30000随机写入IOPS,4000传输率)的写入性能高于其他基于MLC的解决方案(IOPS通常不超过1000)和更高成本的SLC解决方案(IOPS通常不超过5000)