本页使用了标题或全文手工转换

网络文件系统

维基百科,自由的百科全书
跳转至: 导航搜索

网络文件系统Network File System,NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984[1]年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。 NFS和其他许多协议一样,是基于Open Network Computing Remote Procedure Call(ONC RPC) 协议之上的。

NFS在RFCs中是一个开放、标准的协议,任何人或组织都可以依据标准实现它。

發展歷史[编辑]

NFSv1 只在SUN公司内部用作实验目的。 开发团队在NFSv1的基础上做了重大改进之后将其对外发布,版本NFSv2由此产生。[2]

NFSv2[编辑]

NFSv2最初在SunOS 2.0上面实现,1985年发布[3]

参与NFSv2设计实现的人包括 Russel Sandberg, Bob Lyon, Bill Joy, Steve Kleiman 等。[1][4] NFSv2 的定义RFC 1094, 于1989年3月发布。

NFSv2 最初只是基于 UDP. 设计者旨在保持server端是无状态的/stateless, 而将 locking 等机制的实现独立于核心协议之外。[1] 这是一个关键决定,它使从服务器故障恢复变得简单:当一个服务器变得不可用时,所有的网络客户端冻结,但一旦服务器恢复,每一个尝试重传的状态都包含在每个RPC里面,这是由客户端存根发起的。这样的设计决策允许UNIX应用程序可以忽视服务器端的问题。

Virtual File System 接口很容易模块化地实现一个简单的协议. 在1986年2月,诸多操作系统实现了对NFSv2的支持,例如 System V release 2,Microsoft DOS 还有 VAX/VMS using Eunice.[4]

由于 32-bit 的限制,NFSv2 只允读写文件起始2G大小的内容。

NFSv3[编辑]

Version 3 (RFC 1813, June 1995) 添加如下特性:

  • 支持 64 bit 文件大小和偏移,(即突破 2GB 文件大小的限制);
  • 支持服务端的异步写操作, 提升写入性能;
  • 在许多响应报文中额外增加文件属性, 避免用到这些属性时重新获取;
  • 增加 READDIRPLUS 调用, 用于在遍历目录时获取文件描述符和文件属性;
  • 其他改进.

在NFSV2发布后不久,NFSV3协议提案就在Sun Microsystems内部被提出,其主要目的是解决NFSV2进行同步写操作的性能问题[5]。1992年7月的实现版本已经解决了NFSV2的许多不足之处,但是大文件支持(64位文件大小和偏移量)这一紧迫的问题还没有解决。这成为DEC公司的一个痛点,他们当时推出64位版本的Ultrix,以支持其新推出的64位RISC处理器Alpha 21064。在引入NFSV3时厂商们正在越来越多的支持TCP作为transport-layer传输层协议。当时有些厂商已经在NFS version 2支持TCP做为传输层,Sun Microsystems 在发布NFSV3时也增加了将TCP作为传输层的支持。使用TCP做传输层使得NFS跨越 WAN 成为可能, 并且可以突破 UDP 报文大小(8K)的限制,使用更大的读写数据单元。

NFSv4[编辑]

NFSv4协议 (RFC 3010, December 2000; revised in RFC 3530, April 2003), 借鉴了AFS(Andrew File System)和SMB/CIFS(Server Message Block)的特性,主要做了如下改进: 性能提升,强制安全策略,引入有状态的协议[5]。从NFSv4开始,协议的实现/开发工作不再是由SUN公司主导开发,而是改为由 IETF(Internet Engineering Task Force) 开发。

NFSv4.1[编辑]

NFSv4.2[编辑]

外部連結[编辑]

  1. ^ 1.0 1.1 1.2 Russel Sandberg, David Goldberg, Steve Kleiman, Dan Walsh, Bob Lyon. Design and Implementation of the Sun Network Filesystem. USENIX. 1985. 
  2. ^ NFS Illustrated (2000) by Brent Callaghan - ISBN 0-201-32570-5
  3. ^ Solaris Operating System (Unix). Operating System Documentation Project. [2015-03-11]. 
  4. ^ 4.0 4.1 Russel Sandberg. The Sun Network Filesystem: Design, Implementation and Experience (PDF). Technical Report (Sun Microsystems). 
  5. ^ Brian Pawlowski, Chet Juszczak, Peter Staubach, Carl Smith, Diane Lebel, David Hitz. NFS Version 3 Design and Implementation. USENIX. 1994.