下载本文的PDF版本 PDF

独树一帜的文件系统

闪存技术已经取得了长足的进步。现在是软件赶上的时候了。


Adam H. Leventhal


在过去的五年中,闪存已经从一种有前景的加速器7(其在数据中心的位置仍然不确定)发展成为一种已确立的企业级组件,用于存储对性能至关重要的数据4,9。它在消费领域的普及以及随之而来的规模经济推动了它的崛起(见图1)。随着固态硬盘(SSD)的出现,闪存以一种为兼容性优化的形式到来——只需用固态硬盘替换硬盘即可获得显著的性能提升。但是,固态硬盘使用的NAND闪存的特性与它们经常取代的硬盘中的磁介质特性大相径庭2。虽然固态硬盘在各种应用中变得越来越普及,但行业界才刚刚开始设计能够充分利用闪存细微差别的存储系统。随着它摆脱兼容性的束缚,性能、可靠性和成本方面都可能实现显著的改进。

NAND闪存的原生操作与传统块设备所需的操作截然不同。顾名思义,FTL(闪存转换层)将块设备命令转换为闪存上的操作。这种转换绝非易事;粒度和基本操作都存在差异。固态硬盘控制器在垃圾回收、写入放大、磨损均衡和纠错等细分领域展开竞争2。尽管现代固态硬盘必须支持看似简单的块读取和块写入操作,但它们使用的算法正变得越来越复杂。块设备的一个非常常见的用途是托管文件系统。当然,文件系统执行自身类型的转换:从文件创建、打开、读取和写入目录层次结构到块读取和写入。文件系统操作本身并没有什么内在的东西使其能够很好地服务于块接口;这只是持久存储的主导标准,而且已经存在了几十年。

在闪存转换之上分层文件系统转换是低效的,并且会阻碍性能。数据库等复杂的应用程序长期以来一直绕过文件系统(又是一层又一层)以获得最佳性能。抽象层之间丢失的信息会损害性能、寿命和容量。文件系统可能“知道”正在复制文件,但FTL将每个复制的块视为离散且唯一的。文件系统还针对旋转磁盘的物理现实进行了优化,但是当数据根本不旋转时,将数据放置在旋转最快的扇区上是没有意义的。卷管理器(将磁盘集合呈现为块设备的软件)在基于磁盘的存储中导致了类似的低效率,掩盖了来自文件系统的信息。

现代文件系统(如WAFL(随处写入文件布局)5、ZFS和Btrfs(B树文件系统)1)集成了以前分配给卷管理器的职责,并重新组织了抽象层。由此产生的系统更高效且更易于管理。当操作以毫秒为单位衡量时,优化不良的软件很重要;在操作以微秒为单位衡量的闪存设备上,它更为重要。为了充分利用闪存,用户需要专门为NAND闪存的原生操作和功能设计的软件。

固态硬盘的现状

多年来,固态硬盘几乎完全是为了无缝替换硬盘而构建的;它们不仅支持相同的块设备接口,而且还具有相同的外形尺寸(例如,2.5英寸或3.5英寸硬盘)并使用相同的协议(例如,SATA、SAS或FC)进行通信。这有点像使用磁带适配器将iPod连接到汽车音响;现在看来,在新车中,30针iPod连接器比磁带播放器更常见。最近,固态硬盘已开始摆脱旧的兼容性约束:一些笔记本电脑现在使用定制外形尺寸的固态硬盘以实现紧凑性,并且许多供应商生产PCI连接的固态硬盘以降低延迟。

大多数固态硬盘仍然模拟硬盘的块接口:读取和写入任意系列的扇区(512字节或4KB区域)。NAND闪存的原生操作差异很大,足以产生一些实质性的挑战。读取和写入发生在页面的粒度级别(通常约为8KB),但有一个重要的注意事项,即写入只能发生在已擦除的页面上,并且页面只能以32-64个(256-512KB)块为单位进行擦除。虽然详细描述FTL如何从闪存原语呈现块接口超出了本文的范围,但很容易感受到其复杂性。考虑一个块,其中所有页面都已被写入,并且设备接收到逻辑覆盖一个页面内容的操作。FTL可以将块复制到内存中,修改页面,擦除块,然后将其整体重写,但这将非常缓慢——甚至比硬盘还慢!此外,每次写入或擦除操作都会磨损NAND闪存。芯片的额定操作次数是有限的——目前从500到50,000次循环不等,具体取决于类型和质量,并且随着芯片本身的缩小,这些数字也在缩小。一种幼稚的块管理方法会很快磨损介质;更糟糕的是,频繁覆盖的区域会比其他区域更快磨损。由于这些原因,FTL使用间接层,允许数据写入任意位置,并实现磨损均衡,即在整个介质上均匀分布写入的过程2

弥合差距

构成FTL的算法非常复杂,但与现代文件系统的算法相比,也相差无几。实际上,FTL和文件系统有很多共同之处。两者都跟踪已分配区域与空闲区域,两者都实现逻辑到物理的映射,并且两者都将一个操作集转换为另一个操作集。较新的FTL甚至包括压缩和重复数据删除等功能——这些仍然是现代文件系统的主要功能。FTL和文件系统通常是孤立构建的。FTL和文件系统的职责进行大规模集成和重组的想法代表了一个经典的难题:谁将为不存在的硬件编写软件,谁将构建硬件来启用迄今为止未编写的软件?

大多数固态硬盘供应商都专注于批量市场,在批量市场中,在主机上要求使用新的文件系统将成为一种障碍,而不是优势。固态硬盘供应商可以通过提供不同的接口或开放其固件来支持更广泛的文件系统开发人员社区,但同样——在没有显而易见且引人注目的文件系统的情况下——几乎没有动力。Indilinx参与OpenSSD10项目是一个例外,但主要重点是在传统范围内进行FTL开发和实验。当OCZ收购Indilinx时,OpenSSD实际上变得名存实亡。供应商似乎没有动力,只有模糊的激励因素来为开发人员提供他们最希望获得的可见性和控制级别。将闪存感知能力构建到文件系统中的主流努力导致了文件系统和固态硬盘之间接口的更适度修改。

文件系统和固态硬盘之间最受关注的接口是ATA TRIM命令或其对应命令SCSI UNMAP命令。TRIM和UNMAP向设备传达相同的含义:给定的区域不再使用。FTL面临的挑战之一是高效的空间管理;并且可用空间越多,执行该任务就越容易。随着可用空间耗尽,FTL迁移数据的余地越来越小,并且它们需要以越来越紧凑的形式保存数据;当有大量可用空间时,FTL可以更加随意。

为了性能和冗余,几乎所有固态硬盘都“过度配置”。它们包含的闪存容量比固态硬盘的广告容量多10%到100%。文件系统具有已分配和空闲块的概念,但没有手段——也没有理由——将该信息传达给硬盘。为了让固态硬盘获得空闲存储的好处,现代文件系统使用TRIM或UNMAP命令来指示逻辑区域不再使用。一些固态硬盘——特别是那些为消费市场设计的固态硬盘——从支持TRIM和UNMAP的文件系统中获益匪浅。当然,对于稳态接近满载的文件系统,TRIM和UNMAP的影响很小,因为空闲块不多。

渐进式革命

虽然许多公司都参与了渐进式改进,但最有可能创建闪存优化文件系统的公司是那些既构建固态硬盘又构建在主机上运行的软件的公司。迄今为止,最受欢迎的例子是FusionIO的DirectFS6。在这里,闪存存储为文件系统提供了更具表现力的操作。DirectFS不仅仅是单独使用传统的块接口,而是与虚拟化闪存存储层进行交互。该层管理闪存介质的方式很像传统的FTL,但为上面的文件系统提供了更高的可见性和扩展的操作集。

DirectFS实现显著的性能提升,不是通过取代硬件控制器中的智能,而是通过重新组织文件系统和闪存控制器之间的职责。例如,FusionIO已经提出了SCSI标准的扩展,该标准可以原子地执行分散的读取和写入3。这些很容易被FTL支持,但大大简化了文件系统中确保断电时元数据一致性所需的逻辑。DirectFS还依赖于提供“稀疏地址空间”的存储,这有效地将分配和块映射职责从文件系统转移到FTL,而FTL已经必须执行此任务。William Josephson等人2010年发表的一篇文章指出,“专门为闪存设计的新的抽象层可以显著提高软件的简洁性和系统性能6。”

与TRIM一样,逐步向现有存储接口添加表现力和功能允许文件系统利用提供这些功能的设备上的新设施。存储系统设计人员可以选择是否需要提供这些接口的设备,或者实现一个在不需要时禁用的类似功能。设备供应商可以决定支持更丰富的接口是否代表足够的竞争优势。虽然这种方法可能永远不会达到最佳状态,但它可能允许行业单调地导航到足够的局部最大值。

鸡和蛋

围绕闪存构建存储系统仍然有其他方法。一种更激进的方法是比DirectFS走得更远,将更多的高级职责分配给文件系统,例如块管理、磨损均衡、读取干扰感知和纠错。这将允许对存储系统中的软件抽象进行彻底的重组,确保有足够的信息进行适当的优化,而在当今的层中,必须应对次优的信息和通信。同样,这种方法今天需要一个可以对整个系统(从文件系统到接口、控制器和闪存介质)进行广泛控制的供应商。对于封闭的专有系统来说,这当然是可行的——事实上,一些供应商正在追求这种方法——但要使其作为新的开放标准获得吸引力将是困难的。

固态硬盘炼金术

如今面向批量市场的固态硬盘价格低廉且速度快,但它们的性能不稳定,可靠性不足。更高层次的软件在充分了解这些缺点的基础上进行设计,可以将这种商品化的铁变成金子。在不重新设计部分或全部I/O接口的情况下,这些相同的固态硬盘可以构成高性能和高可靠性存储系统的基础。

这种方法不是围绕NAND闪存的特性设计文件系统,而是将商品化固态硬盘本身视为原始存储的基本单元。NAND闪存已经具有复杂的内在特性;固态硬盘的涌现特性甚至更加模糊和多样。例如,固态硬盘的一个常见病理是,在服务并发或交错的读取和写入操作时,性能会发生变化。充分理解这些病理并创建更高层次的软件来适应它们,将代表闪存版本的存在主义软件寓言:从商品化组件获得企业级质量。存储世界以前在磁盘上已经见过这种现象;Sun的ZFS等软件已经从廉价组件中生产出快速、可靠的系统。

这种转变中唯一容易的部分是找到基础材料。考虑到单个、不变的固态硬盘构建这样一个软件系统已经很复杂了;在不断变化的固态硬盘市场多样性中这样做进一步复杂化了任务。闪存的特性在类型和制造工艺之间有所不同,但变化发生在硬件进化的速度。固态硬盘的变化不仅是为了适应底层的介质和控制器硬件,而且还以软件的速度变化,修复错误和改进算法。尽管如此,一些供应商仍在追求这种方法11,因为虽然它比为专用硬件设计更复杂,但它有可能生产出卓越的系统,从而搭上批量固态硬盘的经济曲线。

闪存的未来

闪存作为一种相关技术的寿命是一个激烈争论的话题。闪存的成本尚未赶上硬盘驱动器的成本,但如图1所示,每GB的价格正在接近不到十年前的硬盘驱动器的价格。虽然闪存凭借其价格和密度趋势占据了重要的地位,但一些专家预计,NAND闪存的物理缩放限制即将到来。其他人则预见到闪存创新还有几十年的时间。无论是闪存还是其他技术,非易失性固态存储都将成为存储层次结构中永久的一部分,它填补了硬盘和CPU速度之间巨大的差距8

下一个进化阶段应该是专门为固态介质的特性设计文件系统,而不是依赖中间层进行转换。各种方法都各有缺陷。存储接口的渐进式更改可能永远无法达到真正的顶峰。为闪存创建新的接口可能在市场上站不住脚。将固态硬盘视为存储的原子单元可能只是另一种半途而废的措施,而且在技术上也很困难。

今天,一些公司正在押注闪存在至少近期内的相关性——有些公司在当今设备的限制范围内工作,另一些公司则在构建、增强或替换现有接口。闪存的性能已经激起了计算机行业对更快、更便宜的持久存储的渴望。实验阶段早已结束;现在是时候为闪存构建软件并拥抱实现其全部潜力所需的专业化了。

参考文献

1. Btrfs wiki. https://btrfs.wiki.kernel.org/index.php/Main_Page

2. Cornwell, M. 2012. 固态硬盘剖析。 10(10); https://queue.org.cn/detail.cfm?id=2385276

3. Elliott, R., Batwara, A. 2012. T10技术委员会的注释。11-229r4 SBC-4 SPC-5 原子写入和读取 http://www.t10.org/cgi-bin/ac.pl?t=d&f=11-229r4.pdf; 12-086r2 SBC-4 SPC-5 分散写入,可选原子性 http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-086r2.pdf; 12-087r2 SBC-4 SPC-5 收集读取 - 可选原子性 http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-087r2.pdf

4. Gray, J., Fitzgerald, B. 2008. 服务器应用程序的闪存磁盘机会。 06(04); https://queue.org.cn/detail.cfm?id=1413261

5. Hitz, D., Lau, J.; Malcolm, M. 1994. 用于NFS文件服务器设备的的文件系统设计。WTEC'94 USENIX 1994年冬季技术会议:19-19。 http://dl.acm.org/citation.cfm?id=1267093

6. Josephson, W. K., Bongo, L. A., Li, K., Flynn, D. 2010. DFS:用于虚拟化闪存存储的文件系统。 Transactions on Storage (TOS); 6(3). http://dl.acm.org/citation.cfm?id=1837922

7. Leventhal, Adam. 2008. 今天的闪存存储。 6(4); https://queue.org.cn/detail.cfm?id=1413262

8. Leventhal, Adam. 2009. 三奇偶校验RAID及更高版本。 7(11); https://queue.org.cn/detail.cfm?id=1670144

9. Moshayedi, M., Wilkison, P. 2008. 企业级固态硬盘。 06(04); https://queue.org.cn/detail.cfm?id=1413263

10. OpenSSD项目。 http://www.openssd-project.org/wiki/The_OpenSSD_Project

11. PureStorage FlashArray。 http://www.purestorage.com/flash-array/purity.html

喜欢它,讨厌它?请告诉我们

[email protected]

Adam H. Leventhal 是 Delphix(一家数据库虚拟化公司)的首席技术官。此前,他曾在Sun和后来的Oracle担任首席闪存工程师,在那里他设计了ZFS存储设备、Exadata和其他产品中的闪存集成。十多年来,Adam一直参与Sun、Oracle以及现在的Delphix的存储系统设计。

© 2013 1542-7730/13/0300 $10.00

acmqueue

最初发表于Queue vol. 11, no. 3
数字图书馆中评论本文








© 保留所有权利。

© . All rights reserved.