专家介绍:Henry Newman是国外专业存储网站的撰稿人,在高性能计算和存储行业从事了27年的顾问工作。

  我经常被潜在客户问道如果他们可以使用Linux而不是AIX或Solaris操作系统,那么如何应对高I/O的要求。没有人曾经问过我有关Windows 或NTFS上的高性能I/O--高IOPS(每秒输入输出)或高I/O流的问题,因为这是不可能的。自从10年前发布以来,Windows和NTFS文件系统没有什么变化。鉴于它目前的架构,它也不能进行扩展。NTFS文件系统布局、分配方式和结构不能有效支持多TB文件系统,更不用说PB级别的文件系统。这并不奇怪,因为这不是微软的目标市场。

  那么Linux最初的目标市场是什么呢?当然,是替代微软的桌面环境。后来,Linux从桌面运行转移到运行在许多来自Sun、IBM和SGI的大型SMP(对称多处理器结构)服务器上面。但是,作为一个操作系统,Linux以及其Linux文件系统可以应对来自高性能I/O的挑战吗?

  你可能会想你不需要高性能I/O,但是即使是简单到备份和恢复这样的操作,每个服务器也都需要这种类型的I/O性能。目前的LTO-4(线性磁带开放协议)磁带驱动器在无压缩的情况下可以以每秒120MB的速率运行,在带压缩情况下,可以支持高达每秒 240MB的数据速率。如果你的文件系统并不支持这种流式数据速率I/O,那么备份和恢复将会花费比预期更多的时间。对于带许多磁带驱动器的大型环境来说,不能在全数据速率下使用这些磁带驱动器意味着需要更多的磁带驱动器来满足备份时间窗口的要求,同时恢复操作也会受到影响。因此,我觉得,即使只是针对备份和恢复,每个人都应该对Linux文件系统的性能感兴趣。

  那么Linux文件系统--我的定义是在ext-4、XFS和xxx--是否能够达到其他的基于UNIX的诸如Sun和IBM这样的大型SMP服务器的文件系统的性能呢?一些人可能还会问到SGI,但是SGI有一个名为 ProPack的软件包,这个包包含了针对Linux高速I/O的一系列优化,而且SGI同时还有它们自己的名为CxFS的开放私有域Linux文件系统,而这个文件系统并不是标准的Linux产品的一部分。由于SGI ProPack和CxFS都不是标准Linux产品的一部分,因此我们这里不考虑它们。我们坚持讨论标准Linux是因为这是大多数人所使用的。

  我们将关注两个领域:作为操作系统的Linux以及Linux文件系统。

  Linux操作系统的问题

  我们将暂时不考虑Linux未来所可能发生的事情,而是专注于现在已有的情况。Linux有一些功能可以达到AIX和Solaris的I/O性能,例如直接I/O,但是底线是Linux并不是围绕着高性能多线程I/O而设计的。

  有一些领域限制了Linux的性能,例如和其他操作系统相比的页大小,Linux在直接I/O和页对齐上的限制,以及Linux不能通过自动根据请求大小来进行直接I/O的情况--我看到过Linux内核将大的I/O请求(大于512KB)分解成128KB大小的请求。鉴于Linux I/O性能和文件系统当初是为了替代Windows桌面而设计的,因此出现这种情况并不奇怪。

  就我所见,Linux还有其他问题。对于初学者而言,缺乏能够负责的人。在Linux上,如果你发现一个问题,会有各个组的人来同意解决这个问题,但是当初写Linux的人却并不一定会响应你所遇到的问题。如果一个大型的Linux厂商同意你的问题,并提供解决方法,这并不意味着这种方法将会被--或很快会被--Linux社区所接受。而且,针对你的问题的补丁还会带来维护的问题。

  Linux文件系统和Linux内核设计的目标看起来似乎是试图解决和AIX或Solaris完全不同的问题,而如果你有问题,IBM和Sun也比Linux社区更直接负责得多。如果你运行AIX或Solaris,并且向IBM或Sun抱怨并反映问题,它们不可能说我们没法控制。

  Linux文件系统

  记住,大部分的Linux文件系统都是围绕替代NTFS而开发的,而不是一些诸如GPFS(IBM)、StorNext(昆腾)或QFS(Sun)这样的高性能文件系统。这些文件系统是为流式I/O 设计的,我们现在知道流式I/O对每个人、对一些高速IOPS以及一些情况下对数据库访问都是很重要的。

  现在所通常使用的Linux文件系统(现在是ext-3,很快将有ext-4和xfs)在很长时间内都没有大的结构性变动了。Ext-4在ext-3和ext-2的基础上改进了一些分配,但是没有考虑一些简单的事情,例如RAID(独立磁盘冗余阵列)带超级锁的对齐,以及第一次元数据分配。

  此外,类似于将额外文件系统元数据域和RAID带值相对齐这样的事情也没有被考虑,类似于间接分配的功能也没有,而这样的分配是固定值,所以如果系统支持小分配(最大4KB),那么就需要大量的分配数。举200TB的文件系统为例子,如果ext-3使用最大为4KB的分配值,那么这样的文件系统将需要5370亿个分配数来代表200TB。在企业级文件系统中可以使用8MB的分配值,那么分配数量就缩小为可以管理的2620万个。使用这种数字的分配值,位图或分配表甚至小于等于内存!xfs 文件系统拥有和ext-3非常相似的特征。是的,它的分配可以更大,达到64KB,但是超级锁、元数据域的对齐以及其他问题仍然存在。

  Linux有它自己的位置

  我前面的评述并不代表我是反对Linux的,就像我并不倾向AIX或Solaris。我甚至不反对Windows,因为我使用一台Windows笔记本电脑作为我的主要电脑。但是我认为缺省的Linux文件系统还不足以代替高性能、高可扩展性SMP文件系统。计算机是工具,而操作系统和文件系统也是工具箱中的工具。没有人会在有电锯的情况下却去使用链锯,同样的比喻也适用于操作系统、文件系统以及它们所运行的硬件。

  我日常接触的许多人使用MS Word、MS Excel、MS PowerPoint和MS Visio。即使不是全部,我还是可以运行一些来自别人的Windows上的应用程序,但是我经常发现字体不匹配等问题,于是我在很早以前就决定采用 Windows,除非有人可以证明给我看没有问题。我这里的观点是每个计算机都是一个工具,而且有自己的用途。目前,没有一个单一的计算机或文件系统可以满足所有应用的要求。这并不奇怪。Linux是有一席之地,但是就我而言,它的定位并不支持大型文件系统的单实例,不能支持高性能要求下的大型和小型文件系统的良好扩展。而我不认为这种情况会很快改变。