2008年(8065)
分类: 服务器与存储
2008-05-19 16:20:47
在1984年的时候,高速网络骨干是10 BaseT以太网,磁盘驱动器的容量是以MB,而不是GB计算的。NFS满足了一种需求,因此迅速在行业内得到广泛采用,并成为了一种标准。
从那时候起,NFS进行了有限的几次升级,一些是出于提高性能的目的,但是绝大部分的升级都比较小——一些升级是为了提高安全性,或者跟上UNIX标准的发展。我们都对NFSv1、v2、v3和现在的v4非常熟悉,我们都抱怨过NFS的性能,因为网络和性能都飞速发展,而NFS则远远落在了后面。
自从NFS推出以来,网络已经从10 BaseT发展到了10Gb(提高了三个数量级),存储则从3MB/秒的磁盘驱动器发展到了400MB/秒的光纤通道RAID,性能提高了133倍。同时,NFS只是从4KB包变成了64KB包。大的包也许会给恶劣的网络带来问题,但是如果是通过高速网络传输大量的数据,大的包是必要的。当然,好消息是NFS的未来即将出现。
NFSv4.1在此,无须害怕
要了解什么叫NFSv4.1以及pNFS的话,最好的途径就是多阅读相关资料。pNFS是Parallel NFS的简称,是NFSv4.1的一部分,该支持机器之间数据的高速传递。最初其是作为一个独立组出现。在pNFS.com上,可以查阅到为何需要pNFS的相关背景资料。
下图表示了pNFS系统的组成:
在这副图片中,非常有意思的一点就是IEFT (Internet Engineering Task Force)作为NFSv4.1的一部分将支持T10OSD。这就意味着,通过NFSv4.1,用户可以以块的方式,在NFS之间传输数据、T10 OSD对象或者文件。请记住,NFSv4.1才刚刚开始,因为绝大部分厂商只采用了这些方法中的一种作为开始,所以最好多问几个问题。
另外还有很重要的一点就是在传送机制中,数据与元数据是独立分开的。因此,对基于块的存储来说,最有可能出现的情况就是inode与任何非直接区域都集中起来,并且,利用DMA,可以直接通过网络读取块地址。相比NFSv4或者更早之前的产品利用网络读取文件的方式来说,采用这种方法来运行可以保证该产品不间断地工作。如果你使用的是一条100Base T的线路或者是1Gb速度的以太网来的话,尽管你还是可以看到有一些改进了的地方,但并不会太明显。现在假设你有一个速度高达10GB的以太网,或者说DDR(double data rate)IB(InfiniBand),也许在将来,使用某个速度更快的网络。现有的NFS协议使得这些高速网络只能以像在1Gb以太网中运行那样缓慢。
在1991年,我收到一个站点打来请求技术支持的电话。他们有两台通过HiPPI(High Performance Parallel Interface 800 Mbit)连接的Cray机器,同时,他们还有一台FDDI(Fiber Distributed Data Interface 100 Mbits)。也许你会猜,HiPPI的运行速度并不会比FDDI快8倍,事实上,HiPPI的运行速度只比FDDI的运行速度快10%。他们也许会问为什么他们将所有的钱投在HiPPI上,仅仅是为了提高10%的效率。我没办法给出一个合理的解释。很显然,在HiPPI上,ftp和rcp运行速度的确是更快一些。既然我没能给我的客户一个合理的解释,我从这次旅程中得到的唯一好处就是我能去一趟德国。以NFS为支撑的话,高速风络也并不能高速运转。对NFS做一些小小改变的话,也许能让其适用于1Gb以太网,但并不能保证其以光纤速度运行。让我们回望15年前,那个时候高速网络,也就是10Gb以太网正在逐渐商品化,但是NFS目前的版本并没有担负起这一使命。这就引发了如下的声明:
“客户对存储I/O带宽的要求已经超过了支持它的网络文件的能力极限。而NFS协议则加剧了这一问题。要解决这个问题,有一个办法就是增加服务器的带宽。根据该草案提议,相关厂商应该尽快努力让NFS文件服务能够适应客户端集群的要求。该提案旨在于通过平行文件服务器来达到增加有可能提供给单个文件系统的集合带宽,这将最终导致可能参与数据传输的多个服务器终端与多网络连接。通过NFS框架,特别是通过NFSv4协议的低版本,我们应该可以达到这个目标。”
显然,从这份声明看,IETF理解NFS目前的局限,并且正在着手解决这一问题。包括(但不仅限于)EMC,IBM,NetApp,Sun以及Linux community在内的几乎所有主流厂商都将支持NFSv4.1。在网上,也有传言说Microsoft也准备在其未来的产品中采用NFSv4.1。我个人对此表示怀疑。
NFSv4.1不能做什么
和一些人认为的相反,NFS是一个协议,而不是一个文件系统。NFS允许文件系统中有通用的外部接口。它并不是一个文件系统,尽管它的名字听起来有点象。这意味着你受到底层文件系统性能的束缚。例如,如果微软在未来的系统中支持NFSv4.1,你把你的数码相机条横到10Gb以太网连接的模式,这并不意味着FAT32文件系统能够让你的硬件设备以1GB/秒的速度把数据传到你的老计算机中。有几个局限妨碍了这一速度的实现。
让我们首先看看这个事实:媒介无法以1GB/秒的速度传输数据,更为重要的是,你会受到文件系统性能的限制。即使你的媒介可以以1GB/秒的速度传输数据,这一速度在FAT32文件系统中也无法实现,即使数据的规划能够支持这样的传输速度也不行。
我相信NFSv4.1会让很多文件系统看起来很糟糕。现在这些NFS文件系统可以找出很多借口,说他们受到目前NFS性能限制的束缚,这也许是真的,但是这种情况在未来就不一样了。我经常做的一件事情就是运行本地NFS文件服务器,进行性能测试,看看读写的速度如何。然后我查看底层的硬件,然后估计一下性能局限是在文件系统还是在硬件上。很多时候,性能的局限都不是由于硬件造成的,问题出在文件系统上。因为目前的NFS协议有局限,而10Gb以太网却没有,连接到运行NFS的服务器上的文件系统仍然可以把过错怪罪到这个协议上,但是这样的日子很快就要一去不复返了。
作为一个悲观主义者,我认为一些厂商将不会支持NFSv4.1和10Gb以太网,除非它们能够修补好它们的文件系统,让文件系统能够以接近光纤通道的速度传输数据。厂商为什么要让自己看起来更糟糕呢?拥有高性能文件系统(我们都知道是哪些厂商)的厂商也许是第一批支持NFSv4.1的厂商。那些不支持高性能数据传输的文件系统也许不会支持NFSv4.1,因为你总是受到数据传输路径上最慢的部分的限制。在未来几年中,观察NFSv4.1的进展将会非常有趣,如果你能理解厂商各种做法背后的动机,那么就会更为有趣。