NFS是sun公司提出的一种网络文件系统,提供对文件系统进行透明远程的访问。 它使用一种external data representation(XDR:XDR是SunSoft的开放网络计算环境的一种功能。XDR提供了一种与体系结构无关的表示数据,解决了数据字节排序的差异、数据字节大小、数据表示和数据对准的方式。在OSI模型中的表示层实现)。NFS是基于RPC(远程过程调用)来运行的。 当时NFS的设计目标有以下几个: (1) 设备与操作系统的无关性 (2) 崩溃后简单恢复 (3) 透明访问,就像访问本地目录一样 (4) 在客户端保持unix语义 (5) 合理的性能,达到本地磁盘访问的80%的速度 NFS设计包含了协议,服务端,客户端3个部分。 NFS protocol NFS 协议使用了Sun RPC机制。RPC是同步的,直到服务端完成调用并返回结果前,客户端这边都会一直阻塞等待。这也让RPC看起来就像是本地过程调用一样。 NFS协议是一种无状态协议,每一个过程调用的参数都包含了能完成这个调用的所有信息。服务端无需跟踪记录之前的请求。这让崩溃恢复变得简单,当服务端崩溃后,客户端会重发请求知道收到响应。服务端和客户端都有必要去检测崩溃,服务端需要检测客户端的崩溃以便丢弃之前保留的客户端状态,客户端也需要检测服务端的崩溃以便重建服务端的状态。 NFS使用UDP协议和IP协议,因为UDP是一种不可靠的传输协议,我们NFS因其自身无状态和请求是幂等的,客户端可以通过重试调用知道数据包被传输过去。 最常见的NFS过程参数是一个称为文件句柄的结构,它由服务器提供,并由客户端用来引用文件。文件句柄是不透明的,也就是说,客户端从不查看文件句柄的内容,但在对文件进行操作时使用它。