fbpx
维基百科

网络文件系统

网络文件系统(英語:Network File System,縮寫作 NFS)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由昇陽電腦(已被甲骨文公司收购)开发,于1984年发布[1]

它基于開放網路運算遠端程序呼叫(ONC RPC)系統:一个开放、标准的RFC系統,任何人或组织都可以依据标准实现它。

版本和产品

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

NFSv2

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

参与NFSv2设计实现的人包括羅素·桑德柏格(Russel Sandberg)、鮑伯·里昂(Bob Lyon)、比爾·喬伊、史提夫·克萊曼(Steve Kleiman)等。[1][4] NFSv2 的定义RFC 1094,于1989年3月发布。

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

虛擬檔案系統接口很容易模块化地实现一个简单的协议。在1986年2月,诸多操作系统实现了对NFSv2的支持,例如 System V release 2、DOS,以及使用Eunice英语Eunice (software)VAX/VMS[4]

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

NFSv3

Version 3(RFC 1813,1995年6月)添加如下功能:

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

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

NFSv4

NFSv4协议(RFC 3010,2000年12月;更新版 RFC 3530,2003年4月),借鉴了AFS(Andrew File System)和SMB/CIFS(Server Message Block)的特性,主要做了如下改进:性能提升,强制安全策略,引入有状态的协议。[6]从NFSv4开始,协议的实现/开发工作不再是由SUN公司主导开发,而是改为由網際網路工程任務組(IETF)开发。

NFSv4.1

NFSv4.1(RFC 5661,2010年1月)旨在为并行访问可横向扩展的集群服务(pNFS扩展)提供协议支持。

NFSv4.2

NFSv4.2 于2016年发布。

其他扩展

WebNFS,一个NFSv2 v3的扩展,使得用户可以方便的通过网页浏览器与NFS服务端交互,且不受防火墙限制。在2007年,SUN公司开源了WebNFS客户端的实现[7]

各种NFS相关的外挂/捆绑协议:

  • 字节区间建議锁網路鎖定管理(Network Lock Manager,縮寫 NLM)协议(支持 UNIX System V 文件鎖定 APIs)。
  • 远程配额记录(RQUOTAD)协议;使NFS用户可以查看服务端数据存储配额。

NFS over RDMA 是NFS对遠端直接記憶體存取(RDMA)协议的适配[8][9],就是将默认的传输层协议TCP替换为RDMA。

平台

NFS 通常用在 Unix 操作系统上(比如 SolarisAIXHP-UX)和其他 類Unix 的操作系统(例如 LinuxFreeBSD)。同时在其他一些操作系统也提供了NFS实现,例如经典的 Mac OSOpenVMSMicrosoft Windows[10]OS/2[11]Novell NetWare 还有 IBM AS/400。可选的远程文件访问协议还有伺服器訊息區塊(SMB, 或 CIFS)、 蘋果歸檔協定(AFP)、NetWare核心協定(NCP)和 OS/400 檔案伺服器檔案系統(QFileSvr.400)。

在Microsoft Windows系统上 SMB 和 NetWare核心協定(NCP)的使用比 NFS 更广泛;在Apple Macintosh 操作系统上则 AFP 的使用更广泛;而在 AS/400 系统上 QFileSvr.400 更为常用。Haiku 在2013年3月添加了 NFSv4 支援(作为Google 編碼夏季計畫的一部分)[12]

 
NFS specint2008 性能比較,2013年12月22日

典型实现

假设一个Unix风格的场景,其中一台计算机(客户端)需要访问存储在其他机器上的数据(NFS 服务器):

  1. 服务端实现 NFS 守护进程,默认运行 nfsd,用来使得数据可以被客户端访问。
  2. 服务端系统管理员可以决定哪些资源可以被访问,导出目录的名字和参数,通常使用 /etc/exports 配置文件 和 exportfs 命令。
  3. 服务端安全-管理员保证它可以组织和认证合法的客户端。
  4. 服务端网络配置保证可以跟客户端透过防火墙进行协商。
  5. 客户端请求导出的数据,通常调用一个 mount 命令。
  6. 如果一切顺利,客户端的用户就可以通过已经挂载的文件系统查看和访问服务端的文件了。

提醒:NFS自动挂载可以通过—可能是 /etc/fstab 或者自動安裝管理進程。

参考文献

  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 [2015-05-14]. (原始内容于2011-12-13). 
  2. ^ NFS Illustrated (2000) by Brent Callaghan - ISBN 0-201-32570-5
  3. ^ . Operating System Documentation Project. [2015-03-11]. (原始内容存档于2019-04-03). 
  4. ^ 4.0 4.1 Russel Sandberg. The Sun Network Filesystem: Design, Implementation and Experience (PDF). Technical Report (Sun Microsystems). [2015-05-18]. (原始内容 (PDF)于2020-10-25). 
  5. ^ Brian Pawlowski, Chet Juszczak, Peter Staubach, Carl Smith, Diane Lebel, David Hitz. NFS Version 3 Design and Implementation. USENIX. 1994 [2016-01-12]. (原始内容于2015-11-24). 
  6. ^ NFS Version 4. USENIX. 2005-04-14 [2017-05-08]. (原始内容于2011-07-28). 
  7. ^ yanfs.dev.java.net[永久失效連結]
  8. ^ Tom Talpey. (PDF). Network Appliance, Inc. February 28, 2006. (原始内容 (PDF)存档于2011年5月12日). 
  9. ^ Brent Callaghan. NFS over RDMA (PDF). Sun Microsystems. January 28, 2002 [2016-02-14]. (原始内容 (PDF)于2011-05-12). 
  10. ^ Introduction to Microsoft Windows Services for UNIX 3.5. technet.microsoft.com. Microsoft. [24 September 2016]. (原始内容于2018-06-18). 
  11. ^ NTFS plugin for NetDrive. ecsoft2.org. [2020-09-22]. (原始内容于2021-11-19). 
  12. ^ Paweł Dziepak. NFSv4 client finally merged. 2013-03-15 [2016-02-14]. (原始内容于2021-02-26). 

外部連結

网络文件系统, 此條目需要补充更多来源, 2015年11月3日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, 英語, network, file, system, 縮寫作, 是一种分布式文件系统, 力求客户端主机可以访问服务器端文件, 并且其过程与访问本地存储时一样, 它由昇陽電腦, 已被甲骨文公司收购, 开发, 于1984年发布, . 此條目需要补充更多来源 2015年11月3日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而移除 致使用者 请搜索一下条目的标题 来源搜索 网络文件系统 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 网络文件系统 英語 Network File System 縮寫作 NFS 是一种分布式文件系统 力求客户端主机可以访问服务器端文件 并且其过程与访问本地存储时一样 它由昇陽電腦 已被甲骨文公司收购 开发 于1984年发布 1 它基于開放網路運算遠端程序呼叫 ONC RPC 系統 一个开放 标准的RFC系統 任何人或组织都可以依据标准实现它 目录 1 版本和产品 1 1 NFSv2 1 2 NFSv3 1 3 NFSv4 1 4 NFSv4 1 1 5 NFSv4 2 1 6 其他扩展 2 平台 3 典型实现 4 参考文献 5 外部連結版本和产品 编辑NFSv1 只在SUN公司内部用作实验目的 开发团队在NFSv1的基础上做了重大改进之后将其对外发布 版本NFSv2由此产生 2 NFSv2 编辑 NFSv2最初在SunOS 2 0上面实现 1985年发布 3 参与NFSv2设计实现的人包括羅素 桑德柏格 Russel Sandberg 鮑伯 里昂 Bob Lyon 比爾 喬伊 史提夫 克萊曼 Steve Kleiman 等 1 4 NFSv2 的定义RFC 1094 于1989年3月发布 NFSv2 最初只是基于 UDP 设计者旨在保持伺服器端是无状态的 而将 锁 等机制的实现独立于核心协议之外 1 这是一个关键决定 它使服务器從故障恢复变得简单 当一个服务器变得不可用时 所有的网络客户端冻结 但一旦服务器恢复 每一个尝试重传的状态都包含在每个RPC里面 这是由客户端存根发起的 这样的设计决策允许UNIX应用程序可以忽视服务器端的问题 虛擬檔案系統接口很容易模块化地实现一个简单的协议 在1986年2月 诸多操作系统实现了对NFSv2的支持 例如 System V release 2 DOS 以及使用Eunice 英语 Eunice software 的VAX VMS 4 由于 32 bit 的限制 NFSv2 只允读写文件起始2G大小的内容 NFSv3 编辑 Version 3 RFC 1813 1995年6月 添加如下功能 支持 64 bit 文件大小和偏移量 即突破 2GB 文件大小的限制 支持服务端的异步写操作 提升写入性能 在许多响应报文中额外增加文件属性 避免用到这些属性时重新获取 增加 READDIRPLUS 调用 用于在遍历目录时获取文件描述符和文件属性 其他改进 在NFSv2发布后不久 NFSv3协议提案就在Sun Microsystems内部被提出 其主要目的是解决NFSv2进行同步写操作的性能问题 5 1992年7月的实现版本已经解决了NFSv2的许多不足之处 但是大文件支持 64位元文件大小和偏移量 这一紧迫的问题还没有解决 这成为迪吉多公司的一个痛点 他们当时推出64位版本的Ultrix 以支持其新推出的64位RISC处理器Alpha 21064 在引入NFSv3时厂商们正在越来越多的支持TCP作为传输层协议 当时有些厂商已经在NFS version 2支持TCP做为传输层 Sun Microsystems 在发布NFSv3时也增加了将TCP作为传输层的支持 使用TCP做传输层使得NFS跨越 WAN 成为可能 并且可以突破 UDP 傳輸大小8K的限制 使用更大的读写数据单元 NFSv4 编辑 NFSv4协议 RFC 3010 2000年12月 更新版 RFC 3530 2003年4月 借鉴了AFS Andrew File System 和SMB CIFS Server Message Block 的特性 主要做了如下改进 性能提升 强制安全策略 引入有状态的协议 6 从NFSv4开始 协议的实现 开发工作不再是由SUN公司主导开发 而是改为由網際網路工程任務組 IETF 开发 NFSv4 1 编辑 NFSv4 1 RFC 5661 2010年1月 旨在为并行访问可横向扩展的集群服务 pNFS扩展 提供协议支持 NFSv4 2 编辑 NFSv4 2 于2016年发布 其他扩展 编辑 WebNFS 一个NFSv2 v3的扩展 使得用户可以方便的通过网页浏览器与NFS服务端交互 且不受防火墙限制 在2007年 SUN公司开源了WebNFS客户端的实现 7 各种NFS相关的外挂 捆绑协议 字节区间建議锁網路鎖定管理 Network Lock Manager 縮寫 NLM 协议 支持 UNIX System V 文件鎖定 APIs 远程配额记录 RQUOTAD 协议 使NFS用户可以查看服务端数据存储配额 NFS over RDMA 是NFS对遠端直接記憶體存取 RDMA 协议的适配 8 9 就是将默认的传输层协议TCP替换为RDMA 平台 编辑NFS 通常用在 Unix 操作系统上 比如 Solaris AIX及HP UX 和其他 類Unix 的操作系统 例如 Linux 及 FreeBSD 同时在其他一些操作系统也提供了NFS实现 例如经典的 Mac OS OpenVMS Microsoft Windows 10 OS 2 11 Novell NetWare 还有 IBM AS 400 可选的远程文件访问协议还有伺服器訊息區塊 SMB 或 CIFS 蘋果歸檔協定 AFP NetWare核心協定 NCP 和 OS 400 檔案伺服器檔案系統 QFileSvr 400 在Microsoft Windows系统上 SMB 和 NetWare核心協定 NCP 的使用比 NFS 更广泛 在Apple Macintosh 操作系统上则 AFP 的使用更广泛 而在 AS 400 系统上 QFileSvr 400 更为常用 Haiku 在2013年3月添加了 NFSv4 支援 作为Google 編碼夏季計畫的一部分 12 NFS specint2008 性能比較 2013年12月22日典型实现 编辑此章節沒有提供參考來源 內容可能無法查證 2010年2月1日 假设一个Unix风格的场景 其中一台计算机 客户端 需要访问存储在其他机器上的数据 NFS 服务器 服务端实现 NFS 守护进程 默认运行 nfsd 用来使得数据可以被客户端访问 服务端系统管理员可以决定哪些资源可以被访问 导出目录的名字和参数 通常使用 etc exports 配置文件 和 exportfs 命令 服务端安全 管理员保证它可以组织和认证合法的客户端 服务端网络配置保证可以跟客户端透过防火墙进行协商 客户端请求导出的数据 通常调用一个 mount 命令 如果一切顺利 客户端的用户就可以通过已经挂载的文件系统查看和访问服务端的文件了 提醒 NFS自动挂载可以通过 可能是 etc fstab 或者自動安裝管理進程 参考文献 编辑 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 2015 05 14 原始内容存档于2011 12 13 NFS Illustrated 2000 by Brent Callaghan ISBN 0 201 32570 5 Solaris Operating System Unix Operating System Documentation Project 2015 03 11 原始内容存档于2019 04 03 4 0 4 1 Russel Sandberg The Sun Network Filesystem Design Implementation and Experience PDF Technical Report Sun Microsystems 2015 05 18 原始内容存档 PDF 于2020 10 25 Brian Pawlowski Chet Juszczak Peter Staubach Carl Smith Diane Lebel David Hitz NFS Version 3 Design and Implementation USENIX 1994 2016 01 12 原始内容存档于2015 11 24 NFS Version 4 USENIX 2005 04 14 2017 05 08 原始内容存档于2011 07 28 yanfs dev java net 永久失效連結 Tom Talpey NFS RDMA Implementation s Update PDF Network Appliance Inc February 28 2006 原始内容 PDF 存档于2011年5月12日 Brent Callaghan NFS over RDMA PDF Sun Microsystems January 28 2002 2016 02 14 原始内容存档 PDF 于2011 05 12 Introduction to Microsoft Windows Services for UNIX 3 5 technet microsoft com Microsoft 24 September 2016 原始内容存档于2018 06 18 NTFS plugin for NetDrive ecsoft2 org 2020 09 22 原始内容存档于2021 11 19 Pawel Dziepak NFSv4 client finally merged 2013 03 15 2016 02 14 原始内容存档于2021 02 26 外部連結 编辑RFCs RFC 5661 Network File System NFS Version 4 Minor Version 1 Protocol RFC 5403 RPCSEC GSS Version 2 RFC 3530 NFS Version 4 Protocol Specification RFC 2054 WebNFS Specification RFC 2339 Sun ISOC NFS Change Control Agreement RFC 2203 RPCSEC GSS Specification RFC 1813 NFS Version 3 Protocol Specification RFC 1790 Sun ISOC ONC RPC Change Control Agreement RFC 1094 NFS Version 2 Protocol Specification Various resources IETF Network File System Version 4 nfsv4 Charter Linux NFS Overview FAQ and HOWTO Documents 页面存档备份 存于互联网档案馆 NFS operation explained with sequence diagrams 页面存档备份 存于互联网档案馆 Review of Why NFS Sucks Paper from the 2006 Linux Symposium 页面存档备份 存于互联网档案馆 by Mike Eisler October 27 2006 取自 https zh wikipedia org w index php title 网络文件系统 amp oldid 73867302, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。