NFS协议是网络存储的发展根基,也是网络共享的基本协议。那么对于目前这个领域的发展我们来简单谈谈。首先我们需要了解NFS的基本概念以及相应的一些应用。之后我们来介绍一下PNFS的知识。
NFS(网络文件系统)是在1984年由Sun微系统公司设计开发的,目的是为了连接它们的系统.在其发展过程中,通过促成文件系统之间的连接,革命性地改变了存储行业,使得一个环境中的所有文件都能够处于公共视野之下.
回溯到1984年,当时的高速主干网络是10Mb/s以太网,而磁盘驱动器的容量是按照MB计算,而不是GB.NFS满足了需求,并很快就在行业内得到广泛使用,并成为标准.
从那时候起,NFS进行了一些有限的改进,一些是针对性能,但是大部分的改进幅度都是很微小的--许多是针对安全,以及为了跟上其他UNIX标准.我们都熟悉NFSv1,v2,v3,现在是v4版本,而且我们都抱怨NFS的性能,因为网络和存储的性能增长要更快,而NFS却没有跟上步伐.
自从NFS诞生,网络已经从10Mb/s以太网发展到了10Gb以太网(三个数量级的性能增长),存储已经从3Mb/s磁盘驱动器发展到了400Mb/s光纤通道RAID(独立磁盘冗余阵列),这也是133倍的性能增长.而与此同时,NFS只是从4KB数据包发展到了64KB.对于一些不好的网络,大的数据包还可能是个问题,但是当我们需要在高速网络上传输大量数据的时候,我们就需要更好的技术.好消息就是NFS的未来马上就要实现了.
不用担心,NFS v4.1来了
理解NFSv4.1(也被叫做pNFS)的***方法就是读一些文章.pNFS(并行NFS)是NFSv4.1协议的一部分,可以让数据在设备之间进行高速移动.这原来是在另外一个组中进行开发的.pNFS.com提供了一些关于为什么需要pNFS的背景知识(阅读下面所列出的问题,它们详细的指出了现有的NFS协议所具有的一些问题).
本图描绘了pNFS系统的架构:
关于这张图,最有意思的就是IEFT(国际互联网工程任务组)准备支持T10 OSD协议(T10:SCSI存储接口技术委员会,OSD:基于对象存储设备),并将其作为NFSv4.1的一部分.这也就意味着,通过NFSv4.1,你可以从NFS服务器中按照块、T10 OSD对象或文件来移动数据.很重要的一点就是,随着NFSv4.1开始启动,由于大部分厂商在还仅仅只是将这些方法中的一个方法作为实施的开始,因此就有一些问题.
同样重要的是,作为传输机制的一部分,数据和元数据是分开的.因此对于基于块的存储来说,一般情况下,索引节点以及任何非直接的扩展都被聚集在一起,而块地址则是通过使用DMA(直接内存存取)来从网络上直接获得.和NFSv4以及更早版本的NFS在网络上读取文件的方式比起来,这种方式的性能将是一日千里.当然,如果是在10Mb/s以太网,或者1Gb以太网上读取文件,不同方式的差别不会很大,但是你也会感觉到采用新方法所带来的改善.现在,如果你拥有10Gb以太网,或者说DDR(双数据率)IB(InfiniBand),或者说未来更快的网络,那么现有的NFS协议可以让这些高速网络的运行得简直就像在1Gb以太网上一样.
1991年左右,我被一个站点叫去做技术支持.他们有两台Cray超级计算机,通过HiPPI连接(高性能并行接口,800MB),而且他们还由一个FDDI(光纤式分布数据接口,100Mb).你可能会疑惑,为什么HiPPI的速度不是FDDI的八倍,而是只高出10%呢.他们问,为什么他们花了这么多钱来部署HiPPI,结果却只得到10%的性能提升.我不能给出很好的答案.当然,HiPPI上ftp和rcp的运行要更快.这趟访问的唯一一个好处就是我去了德国,因为我不能给客户以满意的答复.在当时,NFS甚至在高速网络上也运行不快.NFS做了一些细微的调整,使得它在1Gb以太网上也能够被接受,但是它还是不能达到网络的速度.转眼过去15年,我们马上就要进入商品高速网络时代,如10GB以太网,但是目前版本的NFS还是不能胜任.下面是对NFS问题的描述:
"客户对存储I/O带宽的要求的增长远远快于网络文件服务器所能提供的能力.当我们在NFS协议上进行安装时,就会越来越多的遇到这种问题.这个问题可以通过提高服务器带宽的方式来解决.这个草案建议对NFS文件服务进行改进,让NFS文件服务能够随客户群扩展而扩展.建议的方法就是通过并行化文件服务,将所有可能的带宽都集中到一个单一的文件系统上,这样的结果就是多个网络连接到多个要求数据传输的服务器终端.我们要在NFS架构内部实现这种方式,比如通过一个NFSv4协议的次版本".
显然,IETF的这个声明显示它理解NFS目前的局限,并正努力解决它们.几乎所有的主要厂商都介入到了NFSv4.1(pNFS)的制订,包括但不限于,EMC、IBM、NetApp、Sun,当然还有Linux社团.甚至还有一些网路传言说,微软正准备在未来的Windows版本中考虑NFSv4.1.我对此持怀疑态度.
NFSv4.1的局限
和有些人想的相反,NFS是一个协议,而不是文件系统.NFS允许通用的外部接口进入文件系统.即使它的名字是这样,它也不是一个文件系统.这也就是说你要受到底层文件系统性能的约束.例如,如果微软将NFSv4.1纳入未来某个版本的Windows系统,而你的摄像头连接是在10Gb以太网上,但是这并不是说你可以通过FAT32文件系统在你旧的计算机上以1GB/秒的速度导出数据.这里有很多限制.
事实是,在这里,我们的媒介不能以1Gb/s的速率传输数据,更重要的是,你受制于文件系统的性能.即时你拥有能够以1Gb/s速率传输数据的媒介,鉴于目前的数据格式,FAT32文件系统也不可能支持这种数据速率.
我相信NFSv4.1会使很多文件系统相形见绌.现在,这些NFS文件系统可以借口说它们被目前的NFS性能局限所限制,这可能是实情,但是未来就不是如此了.我一直在尝试的一件事情就是在一台本地NFS文件服务器设备上运行性能测试,以测试我的读写速度究竟能有多快.然后我会观察底层硬件,并判断性能瓶颈是出在文件系统还是硬件上.在这些时间里,我发现,更经常的是,性能瓶颈是在文件系统上而不是硬件上.由于目前的NFS协议有局限,而10Gb以太网则没有,因此,在NFS上连接到服务器的文件系统可以将性能问题归咎于协议,但是这种日子将很快过去.
作为一名悲观论者,我的看法是一些厂商将选择不支持NFSv4.1和10Gb以太网,直到它们能够让它们的文件系统能够和NFSv4.1及10Gb以太网***配合,使数据传输达到网络的速度.没有一个厂商会希望让自己看起来很糟糕得.拥有高性能文件系统的那些厂商(我们都知道他们它们是谁)可能是***支持NFSv4.1的厂商.因为你总是被数据通道中最慢的组件所约束,因此那些文件系统不支持高性能数据传输的厂商也可能不支持NFSv4.1.在未来几年中观察NFS4.1的进展是一件非常有意思的事情,特别是如果你理解厂商之所以这么做的原因的话.