Linux? 在文件系统领域不断创新。它支持任何操作系统上的众多不同文件系统。它还提供尖端文件系统技术。Linux 最近又引入两种新的文件系统,它们是 NiLFS(2) 日志结构文件系统和 exofs 基于对象的存储系统。探索这两种文件系统背后的动机和它们的优点。
一种新的 Linux 文件系统的公布总是令人既兴奋又恐惧。兴奋是因为文件系统意味着新的发展空间。恐惧是因为文件系统在早期还是试验性的,尚未迎来黄金时期。但是有时候,新文件系统的公布也意味着对 Linux 未来的投资,而最近 2.6.30-rc1 的公布确实标示着令人感兴趣的前景。在过去几个季度,Linux 主要公布了三种文件系统。2008 年底引入了 B-Tree File System(Btrf),最近又引入了两种独特的文件系统:NiLFS(2) 和 exofs。
我们首先了解这些非传统文件系统,然后探索 NiLFS(2) 和 exofs 的细节。
日志结构文件系统和 SSDs日志结构文件系统是用于由 NAND 闪存组成的固态硬盘(solid-state disks,SSD)的理想格式。闪存的基本问题是写擦周期数量有限。日志可以写到整个设备上,尽量写满设备,从而最大程度地减少擦的周期。由于这个原因,日志结构文件系统在 SSD 上(连续写)表现非常好,并且提供更好的损耗均衡。
日志结构文件系统在现代计算系统中有丰富的历史。第一个日志结构文件系统由 John Ousterhout 和 Fred Douglis 在 1988 年提出,随后由 Sprite 操作系统在 1992 年实现。顾名思义,日志结构文件系统将文件系统视为一个循环日志,将新的数据和文件系统元数据写到日志的头部,并且从尾部回收空闲空间(如图 1 所示)。这意味着数据可能在日志中出现两次或更多次,但是由于日志是按时间先后顺序发展的,最近的数据被视作活动数据。日志中保留数据的多个副本可以带来一些有趣的优点,后面将详细谈到这些优点。
与其说日志结构方法是一个卖点,不如说它是体系结构上的一个细节,不过这种方法确实有一些独特的优点。一个关键的优点在于系统崩溃后的数据恢复,当使用日志结构方法时,这种恢复更简单。
另一个优点是利用底层存储系统挖掘性能。您也许还记得,连续写到硬盘比随机 I/O 要快得多。如果所有的写都是连续的,那么查找的开销随之减少,从而可以获得更快的硬盘 I/O,进而得到更快的文件系统。