经常有一些用户询问关于高性能I/O的需求——万一他们可以使用Linux系统而不是AIX或者Solaris操作系统。但是从来没有人询问 Windows或者NTFS中的高性能I/O(高IOPS或者高流式I/O),因为这是不可能存在的。
Windows和NTFS文件系统自从10年前出现到现在几乎没有太大的改变,由于它们自身结构限制的原因它们是不大可能拓展的。NTFS文件系同层、分配策略以及架构组织使得NTFS文件系统不能有效地支持多TB文件系统,更不用说PB级文件系统了,因为NTFS没有成为微软的目标市场也就不足为奇了。
那么Linux系统最初的目标市场是什么呢?当然是取代微软桌面了。Linux已经从在桌面上运行逐渐转移到在Sun、IBM公司和SGI的大型 SMP服务器上运行。但是Linux操作系统和Linux文件系统能够应对高性能I/O带来的挑战吗?
你也许会认为你不需要高性能I/O,但是每台服务器都需要这种I/O性能来满足备份和恢复等简单需要。现有的LTO-4磁带驱动器可以以每面120MB(无压缩)的速度运行,支持每面240MB的无压缩数据速率。万一你的文件系统不能支持这种流式数据传输所需的I/O的话,那么接下来备份和恢复所花费的时间可能要比你预期的长。对于多磁带驱动器的大型环境来说,磁带驱动器不能以完全的数据速率进行工作的话,这就需要更多的磁带驱动器来满足备份时间窗口,这也会对恢复流程造成影响。因此,只要是说到备份或者恢复,似乎所有人都对Linux文件系统的性能更感兴趣。
Linux文件系统可以满足其他大型Unix服务器的文件系统需求吗?有些人可能会就这个问题询问SGI,但是SGI有一款名为ProPack 的软件,这款软件具有针对Linux的高速I/O优化功能,另外SGI还有一个名为CxFS的开放特有Linux文件系统,它并不是标准Linux套件的一部分。因为SGI的ProPack和CxFS不属于标准Linux套件,所以我们在这里就不谈它们了。我们将主要谈一谈标准Linux系统,因为我们大多数认识用的都是这种系统。
我们将主要来看两点:
1、Linux操作系统
2、Linux文件系统
Linux操作系统
我们先不考虑Linux未来的发展,而是将重点放在现在。Linux拥有一系列可以满足AIX以及Solaris系统I/O性能的特性(例如直接I/O),但是说到底Linux不是基于高性能多线程I/O进行设计的。
有很多方面对Linux的性能造成了限制,例如与其他操作系统相比的页面大小、Linux在直接I/O和页面调整方面的限制、以及Linux不允许通过I/O请求的大小来自动直连I/O——我曾经发现Linux内核将较大的(大于512MB)的I/O请求分解成128KB的请求。因为最初Linux I/O性能和文件系统的设计目标是为了取代Windows操作系统,所以出现这种问题并不奇怪。
Linux还存在其他一些问题,对初用者来说缺少专门的人来负责。万一你发现有问题,许多人都表示会来对它进行修复,编写Linux程序的人也许不会对你的问题做出回应。万一一家Linux厂商答应对你发现的故障进行修复,这并不意味着Linux部门将接受他们的许诺,或者马上接受。对故障打补丁的同时可能会带来维护上的一些问题。
Linux文件系统和Linux内核设计的目标应该是解决一些完全不同于AIX或者Solaris的故障问题,万一你发现有故障问题的话,应该直接找Linux部门而不是IBM公司或者Sun。万一你使用的是AIX或者Solaris,向IBM公司或者Sun求助的话,他们不会说没有办法解决的。
Linux文件系统
记住,大多数Linux文件系统的设计目标都是为了取代NTFS,而不是为了取代像GPFS(IBM公司)、StorNext(昆腾)或者 QFS(Sun)这些高性能文件系统的。这些文件系统主要是针对流式I/O进行设计的,我们现在知道流式I/O对高速IPOS和数据库读取都是十分重要的。
当前常用的Linux文件系统(EXT3、EXT4以及XFS)在很长一段时间内都没有发生过结构上重大的变化。EXT2和EXT3在某些方面改进之后升级到了EXT4,但是像RAID条带的超级块以及首个元数据分配等简单特性都没有发生改变。
另外,像RAID条带值的附件文件系统元数据区和间接分配,其中间接分配是支持较小分配(最大不超过4KB)以及所需的较大分配的固定值。拿一个200TB的系统来说,它使用EXT3支持的4KB分区来实现537亿个分区组成的200TB系统。万一是使用8MB的企业文件系统,就是262亿个可管理的分区。这种分配图甚至可以在内存中支持相同数量的分区。XFS文件系统与 EXT3有着类似的特点,万一Linux页面大小是64KB的话分区也可以达到64KB,但是仍然存在超级块的调整、元数据区和其他一些问题。
Linux占据一席之地
这并不是说我是Linux的反对者,这只因为我不是AIX或者Solaris的支持者。我甚至不是反对Windows,因为我在我的电脑上就使用的是Windows界面。但是我相信现在Linux文件系统还不足以取代高性能、高可扩展性的SMP文件系统。计算机是工具,操作系统和文件系统也是工具。没有人会用链锯替代竖锯,这种类比同样也适用于操作系统、文件系统以及它们运行在的硬件设备。
我知道有很多人每天都会用到微软的Word、Excel、PowerPoint和Visio。万一所有这些应用都不能在Windows类似的操作系统中运行的话,我可能会使用其中一些,但是我发现其中存在一些不兼容性,很久之前有人向我证明了可以兼容之后我才决定采用Windows系统。这里我认为每台计算机都是一个工具并且有它自己的用途。现在没有哪个计算机或者文件系统可以满足所有应用的需要。这并不奇怪,据我所知,Linux不支持大型文件系统的单实例以及为满足高性能需求从小型文件系统向大型文件系统的拓展。并且我认为这在短时期内是不会有所改变的。