2024年6月12日发(作者:)
NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之
一。主要应用在UNIX环境下。最早是由SUN开发,现在能够支持在不同类型的系统之
间通过网络进行文件共享,允许一个系统在网络上与他人 共享目录和文件。通过使用
NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件,使得每个计算机的节
点能够像使用本地资源一样方便的使用网上资源。换言之,NFS可用于不同类型计算机、
操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享
NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。
服务器程序向其它计算机提供对文件系统的访问,其过程就叫做“输出”。NFS客户端程
序对共享文件系统进行访问时,把它们从NFS服务器“输送”出来。文件通常以“块”
为单位进行传输,其尺寸是8K(虽然它可能会将操作分成更小尺寸的分片)。NFS传输协
议用于服务器和客户机之间的文件访问和共享的通信,从而使客户机远程的访问保存在存
储设备上的数据。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote
Procedure Call) 是能使客户端执行其他系统中程序的一种机制。可以说NFS本身就是使
用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都
要启动RPC服务,不论是NFS SERVER(服务器)或者NFS CLIENT(客户端)。这样
SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC
和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。
(1)访问一个本地文件还是一个NFS文件对于客户端来说是透明的,当文件被打开
时,由内核决定这一点。文件被打开之后,内核将本地文件的所有引用传递给名为“本地
文件访问”的框中,而将一个NFS文件的所有引用传递给名为“NFS客户端”的框中。
(2)NFS客户端通过其TCP/IP模块向NFS服务器发送RPC请求(RPC,远程过程
调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。),NFS
主要使用UDP(UDP协议的全称是用户数据报协议,在网络中它与TCP协议一样用于处
理数据包,是一种无连接的协议),最新的实现也可以使用TCP。
(3)NFS服务器在端口2049接收作为UDP数据包的客户端请求,NFS允许服务
器使用一个临时端口,但是大多数实现都是直接指定UDP端口2049。
(4)当NFS服务器收到一个客户端请求时,它将这个请求传递给本地文件访问例
程,然后访问服务器主机上的一个本地的磁盘文件。
(5)NFS服务器需要花一定的时间来处理一个客户端的请求,访问本地文件系统一
般也需要一部分时间。在这段时间间隔内,服务器不应该阻止其他客户端请求。为了实现
这一功能,大多数的NFS服务器都是多线程的——服务器的内核中实际上有多个NFS服
务器在NFS本身的加锁管理程序中运行,具体实现依赖于不同的操作系统。既然大多数
UNIX内核不是多线程的,一个共同的技术就是启动一个用户进程(常被称为“nfsd”
NFS的后台进程)的多个实例。这个实例执行一个系统调用,使其作为一个内核进程保留
在操作系统的内核中。
(6)在客户端主机上,NFS客户端需要花一定的时间来处理一个用户进程的请求。
NFS客户端向服务器主机发出一个RPC调用,然后等待服务器的应答。为了给使用NFS
的客户端主机上的用户进程提供更多的并发性,在客户端内核中一般运行着多个NFS客
户端,同样具体实现也依赖于操作系统。
发布评论