一、什么是NFS

       NFS(网络文件系统)是一种分布式文件系统,能够使用户透明地访问远程资源,系统之间能够

共享文档、数据和程序等。

1.1 NFS(网络文件系统)介绍

       NFS是一种基于远程过程调用(RPC)协议,采用客户端\服务器结构实现的分布式文件系统。在

NFS的网络环境中,一个Linux系统中既可以作为NFS服务器,提供共享的文件系统或目录,供NFS客户系

统访问;也可以作为NFS客户系统,安装其他服务器提供的远程文件系统或目录,访问其中的目录或文件

资源。

      远程资源可安装于本地系统的任何目录位置,一旦安装了NFS服务器提供的远程共享目录或文件系

统,只要给予足够的权限,客户端就可以像访问本地的系统一样,透明地访问服务器中的目录和文件。可以(cp、mv、create、rm)中的文件与目录。

       NFS是一种强有力的数据集中存储于客户访问工具,使客户系统能够快速地访问大批量的数据。

如存储在中央数据库中的业务数据。还可以采用NFS方式安装linux系统,还可以利用NFS服务器存储引导

程序,直接引导客户系统。

1.2 NFS协议

工作原理如下:

   1.访问一个本地文件还是一个NFS文件对于客户端来说就是透明的,当文件被打开时,有内核决定这

一点,文件被打开之后,内核将本地文件的所有应用传递到名为'本地文件访问‘的框中,而将NFS文件

的所有引用传递到名为’NFS客户端‘的框中。

   2.NFS客户端通过其TCP/IP模块向NFS服务器发送RPC请求,NFS主要使用UDP,最新的实现也可以使用

TCP。

   3.NFS服务器在端口2049接收作为UDP数据包的客户端请求,尽管NFS可以被实现为使用端口映射器,

允许服务器使用一个临时端口,但是大多数实现都是直接指定UDP端口2049。

   4.当NFS服务器收到一个客户端请求时,它将这个请求传递本地文件访问例程,然后访问服务器主机

上的一个本地磁盘文件。

   5.NFS服务器需要话一定的时间来处理一个客户端的请求,访问本地文件系统一般也需要时间。

   6.在客户端主机上,NFS客户端需要花一定的时间处理一个用户进程的请求。NFS客户端向服务器主机

发出一个RPC调用,然后等待服务器的应答。为了给使用NFS的客户端主机上的用户进程提供更多的并发

性,在客户端内核中一般运行着多个NFS客户端。

                                        wKiom1ZtQtWSmA8tAAEr-OdOC6E476.jpg

                                NFS客户端与NFS服务器典型结构

1.3RPC(远程过程调用)

    当我们在使用某些服务来进行远程联机的时候,有些信息,例如主机的IP、服务的端口、与对应到的服务的PID 等等,都需要管理与对应!这些管理 port 的对应与服务相关性的工作,就是这个 Remote

Procedure Call, RPC 的任务了,NFS本身的服务并没有提供资料传递的协议,但是 NFS 却能让我们进行

档案的分享,这其中的原因,就是 NFS 使用到一些其它相关的传输协议!而这些传输的协议,就是使用

到这个所谓的 RPC 的功能!也就是说, NFS本身就是使用RPC的一个 program 就是了!所以只要用到

NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实

现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传

输。这样 Server 端与Client 端才能由RPC的协议来进行program port 的对应喔!NFS 主要在管理分享

出来的目录,而至于资料的传递,就直接将他丢给 RPC 的协议来运作就是了。

     1.客户端会向服务器的RPC(Port 111)发出NFS文件存取功能的询问请求。

     2.服务器找到对应的已注册的NFS守护进程的端口后会回报给客户端。

     3.客户端了解正确的端口后,就可以直接与NFS守护进程来联机。

                                  wKioL1ZtS9WjbMtXAAD310O0EL8747.jpg

                                   NFS与RPC服务及操作系统的相关性