Linux下NFS网络文件系统设定及管理

Category : 工作学习 / Tags : , / Date : 2006.11.15 / /

1. 准备工作
2. NFS的由来与其功能
  2.1 什么是NFS ( Network FileSystem )
  2.2 什么是RPC ( Remote Procedure Call )
  2.3 NFS启动的RPC daemons
  2.4 NFS的文件存取权限
3. NFS Server 端的设定
  3.1 所需要的套件
  3.2 NFS的套件结构
  3.3 /etc/exports 配置文件的语法与参数
  3.4 NFS服务的启动:rpcinfo
  3.5 NFS的连接观察: showmount, /var/lib/nfs/etab, exportfs
  3.6 NFS的安全性
4. NFS 客户端的设定
  4.1 远端NFS服务器的挂载
  4.2 客户端可处理的挂载参数与开机挂载
  4.3 无法挂载的原因分析
  4.4 自动挂载 autofs 的使用
5. 案例演练
6. 参考资料

1、准备工作

  NFS 这个借由网路分享文件系统的服务在架设的时候是很简单的,不过,他最大的问题在于『权限』方面的概念! 因为在客户端与服务器端可能必须要具备相同的帐号才能够存取某些目录或档案。 另外,NFS的启动需要透过所谓的远端程序呼叫 (RPC),也就是说,我们并不是只要启动NFS就好了,还需要启动RPC这个服务才行!

2、 NFS的由来与其功能

2.1 什么是 NFS (Network FileSystem)

  NFS(Network File System)是一种分布式文件系统,允许网络中的安装不同操作系统的计算机间共享文件和外设,所以它的通讯协定设计与主机及操作系统无关. 它是由SUN公司于1984年推出,使得可以本地机一样的使用另一台联网计算机的文件和外设。NFS在文件传送或信息传送过程中依赖于RPC协议。


  
  图一、NFS 主机分享目录与 Client 挂载示意图

  就如同上面的图示一般,当我们的NFS Server设定好共享出来的/home/sharefile这个目录后,其他的NFS Client端就可以将这个目录挂载到自己系统上面的某个挂载点(挂载点可以自定义),例如前面图示中的NFS client 1与NFS client 2挂载的目录就不相同。我只要在 NFS client 1系统中进入/home/data/sharefile内,就可以看到 NFS Server系统内的/home/sharefile目录下的所有资料了 (当然,权限要足够)。这个 /home/data/sharefile 就好像 NFS client 1自己机器里面的一个 partition。只要权限对了,那么您可以使用 cp, cd, mv, rm… 等等磁盘或文件相关的命令。

  好的,既然NFS是通过网络来进行文件的传输,那么经由socket pair的概念你会知道NFS应该会使用一些port吧?那么NFS使用哪个 port来进行传输呢?答案是….不知道?因为NFS用来传输的port是随机选择小于1024以下的端口来使用的。 那客户端怎么知道你服务器端使用那个port呢?此时就得要远程过程调用(Remote Procedure Call, RPC)的协议来辅助,下面我们就来谈谈什么是 RPC?

2.2 什么是 RPC (Remote Procedure Call)

  RPC, 远程过程调用 (remote procedure call)是能使客户端执行其他系统中程序的一种机制。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。常用于分布式客户端/服务器模型, 发出请求的程序是客户程序,而提供服务的程序是服务器。

  因为NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些 port 来传输文件,因此, NFS 的功能所对应的 port 才没有固定, 而是采用随机取用一些未被使用的小于 1024 的端口来作为传输之用。但如此一来又造成客户端想要连上服务器时的困拢, 因为客户端得要知道服务器端的相关端口才能够连接!

  此时我们就得需要远程过程调用(RPC) 的服务,RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且返回给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并返回客户端正确的端口。

  注:在启动 NFS 之前,RPC 就要先启动了,否则NFS会无法向 RPC 注册。 另外,RPC若重新启动时,原来注册的资料会不见,因此RPC重新启动后,它管理的所有程序都需要重新启动以重新向RPC注册。


  
  图二、NFS 与 RPC 服务及文件系统操作的相关性

  如上图所示,当客户端有NFS文件存取需求时,它会如何向服务器端请求文件呢?

  1)、客户端会向服务器端的RPC(port 111)发出NFS档案存取功能的询问要求;
  2)、服务器端找到对应的已注册的NFS daemon端口后,会返回给客户端;
  3)、客户端了解正确的端口后,就可以直接与NFS daemon来建立连接;

  由于 NFS 的各项功能都必须要向RPC来注册,如此一来RPC就能了解NFS这个服务的各项功能之port number, PID, NFS 在主机所监听的IP等等,而客户端才能够通过RPC的询问找到正确对应的端口。 也就是说,NFS 必须要有RPC存在时才能成功的提供服务, 因此我们称NFS为RPC server的一种。事实上,有很多这样的服务器都是向RPC注册的,举例来说,NIS (Network Information Service)也是RPC server 的一种。 此外,由图二你也会知道,不论是客户端还是服务器端,要使用 NFS 时,两者都需要启动 RPC 才行。

  更多的 NFS 相关协议信息你可以参考下面网页:
  http://www.faqs.org/rfcs/rfc1094.html
  http://www.tldp.org/HOWTO/NFS-HOWTO/index.html

2.3 NFS启动的RPC daemons

  我们现在知道NFS服务器在启动的时候就得要向RPC注册,所以NFS服务器也被称为RPC server之一。 那么NFS服务器主要的任务是进行文件系统的共享,文件系统的共享则与权限有关。 所以 NFS 服务器启动时至少需要两个 daemons ,一个管理client端是否能够登入的问题, 一个管理client端能够取得的权限。如果你还想要管理quota的话,那么NFS还得要再载入其他的RPC程序。我们以较单纯的NFS主机来说:

  rpc.nfsd:
  这个 daemon 主要的功能就是在管理 Client 是否能够登入主机的权限,其中还包含这个登入者的 ID 的判别。

  rpc.mountd
  这个daemon主要的功能,则是在管理NFS的文件系统,当Client端顺利的通过rpc.nfsd而登入主机之后,在他可以使用NFS服务器提供的文件之前,还会经过文件使用权限 (就是那个-rwxrwxrwx与owner, group那几个权限)的认证程序!它会去读NFS的配置文件/etc/exports 来比对Client的权限,当通过这一关之后Client就可以取得使用NFS文件的权限(注:这个也是我们用来管理NFS共享之目录的使用权限与安全设定的地方)

  rpc.lockd (非必要)
  这个玩意儿可以用在管理文件的锁定(lock)用途。为何文件需要『锁定』呢?因为既然分享的NFS文件可以让客户端使用,那么当多个客户端同时尝试写入某个文件时,就可能对于该文件造成一些问题啦!这个rpc.lockd则可以用来克服这个问题。 但rpc.lockd必须要同时在客户端与服务器端都开启才行,此外,rpc.lockd也常与rpc.statd 同时启用。

  rpc.statd (非必要)
  可以用来检查文件的一致性,与rpc.lockd有关!若发生因为客户端同时使用同一文件造成文件可能有所损毁时, rpc.statd 可以用来检测并尝试回复该文件。与 rpc.lockd同样的,这个功能必须要在服务器端与客户端都启动才会生效。



无觅相关文章插件,快速提升流量

Pages: 1 2 3 4 5 6 7 8 9 10 11

Comments

There are no comments.

Leave a Reply

You must be logged in to post a comment.

传奇 似水流年 绽放 风筝 八月照相馆