回顾文件系统二十年发展:愚蠢的演变

存储行业仍在不断地犯着同样的错误,企业们总是将厂商们的吹嘘之词当了真。以前,我们推出过一系列由两部分组成的专栏“愚蠢的演变”文章,解释了那些似乎已经在20多年前得到解决的问题是如何再一次令他们头疼不已。 显然,改变的事物越多,他们落后的程度就越大。

这次我要问的是:我们为什么还要继续相信文件系统的进化能够满足我们目前的和未来的需求呢? 让我们回顾一下免费和非免费系统文件系统的发展历程。

时间机器-回到上个世纪八十年代早期

我这次只从上个世纪八十年代早期谈起,但我们以后还会重复历史。我们为什么不能记住历史并从中吸取教训呢? 这种事情总是令我心惊。我对年轻一代说,历史总是在重复,他们说他们不想去听历史故事,他们关注的是当下以及如何让未来更加美好。 我在上个世纪九十年代时提出了一句名言:引擎从来都没有发生新的问题,只会有解决老问题的新引擎。当时我是在帮助其他人开发一种新的文件系统,该系统使用了我在10多年前协助优化设计时用到的技术和想法。

在上个世纪八十年代中期,大多数开放系统文件系统都是标准Unix系统的一部分。一些厂商如Cray和Amdahl编写了他们自己的文件系统。 这些厂商这么做的原因是标准unix操作系统文件不能满足日常工作的需求。 Solaris操作系统上的UFS来自另一个操作系统,即我们在六十年的编写的Multics系统。 现在,许多厂商如Convex、MultiFlow和Thinking Machines等开发出大量的高性能文件系统。任何拥有大规模系统的厂商都有自己的文件系统,所有的这些文件系统都试图去解决同样的问题。 我认为它们的可扩展性从大到小依次排列是这样的:

⒈元数据性能

⒉恢复性能

3.小模块性能

4.大模块性能

⒌存储管理

这里的关键字是可扩展性。 记住,在磁盘密度快速增加的时候,性能的可调整性比现在要强得多。 某些厂商已经开始考虑并行系统,某些则开始对曾经免费提供的文件系统进行收费。我最近已经在博客中提到了这些内容。这就象是deja-vu一样,周而复始。 但是由于这篇文章谈的是愚蠢的行为,就让我引用另一位瑜伽修行者瑜伽熊的话来说明问题吧:“我是比普通的熊要聪明一些。”试问:这个行业是否比较聪明呢?

1990年左右,Veritas发布了第一款商用unix操作系统VxFS.这个文件系统试图解决除了存储管理之外的所有问题,Veritas后来还将存储管理功能也添加了进去,推出了VxVM. VxFS对于当时商用unix操作系统的推广是有革命性意义的。大多数重要厂商都使用过这款产品,或者支持它,或者OEM它。 不久,Veritas又增加了其他一些东西进去,比如可以消除POSIX所要求的写锁限制的DB编辑功能。

虽然Veritas曾凭借这款产品纵横商用系统市场并赚了很多钱,但是Silicon Graphics决定编写自己的文件系统XFS.这款产品于九十年代中期发布。 该产品后来被开源并具备了某些与VxFS一样的功能,因为它的某些开发商与VxFS的开发商是同一批人。到九十年代末期和新世纪初期,许多厂商拥有了共享文件系统,但是在高性能计算社区,大部分的共享文件系统都是收费的。 大部分的共享文件系统都是通过单一元数据服务器和客户端进行配置的。同时,一小部分厂商试图利用共享域名空间和分布式空间分配技术来解决共享数据的问题。

结果怎么样呢? 没有一款文件系统是免费的,所有的文件系统都想要解决上面5个领域的所有问题。从2004年到Sun收购CFS的2007年,只有Lustre一个并行文件系统是例外。 但是它的免费也是相对而言的,因为当时它的大部分资金都来自于美国政府。它的资金很快就耗尽了,然后就被Sun收购过去。Sun希望围绕着Lustre文件系统开发出一些硬件来收回这项交易的收购成本。

与此同时,在商用领域,文件系统却在快速向Linux发展。XFS文件系统包括了许多标准Linux功能,满足了许多要求。 NAS厂商推出的基于设备的存储解决方案也满足了性能方面的许多要求,而且比文件系统厂商销售的许多文件系统更加易于管理。

现在,所有人都开始使用免费的文件系统了,这些文件系统不是八十年代那些厂商推出的免费文件系统,而是来自Linux发布或NAS设备厂商。存储产品中内置了文件系统。

这都很好,但是我刚刚回顾了九十年代早期的情况。还记得铁路行业高管在二十年代和三十年代时根本没有意识到自己处于运输行业的情况吗? 他们认为自己只是处于铁路行业中,因此根本不愿与航空业务放在一起。同样,NAS厂商似乎也没有意识到它们处于可扩展存储行业之中,大型共享文件系统厂商正在开发各种产品以更好地解决上述5个方面的问题。

我认为我们将不停地转圈,不断重复历史。八十年代的情况与二十年的早期的文件系统行业非常相似,九十年代早期的情况与新世纪前十年的中期的情况相似。 九十年代中期的情况与我们现在的情况非常相似。计算行业的其他领域可能也出现了类似的情况,正如我在以前的文章中所说的那样,如果我们回想一下,标量处理器、矢量处理、图形处理单元和现场可编程门阵列今年和去年的设计也是这种情况。

事物每过20年进行一次升级,解决问题的办法并没有太大的不同。这是为什么呢? 这是因为没人记住历史吗? 这是因为所有人都认为他们比前人更聪明? 事情真有不同吗?就象时尚、食品准备和无数其他行业的情况一样?

大约20年前,我在Cray Research的一些朋友萌生了将文件系统元数据与不同存储技术的数据分离的想法,因为数据和元数据拥有不同的存取模式。过去20年的发展历程不断在重复这一现象,但是这种观念从未真正成为文件系统必须考虑的问题之一。 现在我听说许多人都在谈这个问题。 我越想越清楚地明白解释这种现象的原因并不只有一个,如果我想清楚这个问题,我就会针对未来的市场做出行动,而不是象现在这样苦恼了。 如果我们想打破这个周期,给技术带来巨大的变革,我们就需要从过去的历史经验中学习。

POSIX已经存续了大约20年的时间。我现在已经听说POSIX在诸多方面的限制影响了上述5个方面的问题的解决。 如果我们改变POSIX,让它支持并行I/O,我希望我们可以看到并想到未来的发展。