NFS服务器详解
Posted yuanbangchen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFS服务器详解相关的知识,希望对你有一定的参考价值。
一、NFS服务简介
NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。所以,你也可以简单的将他看做是一个文件服务器 (file server).
因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口才没有固定住, 而是随机取用一些未被使用的小于 1024 的端口来作为传输之用。
此时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的端口, 所以当然可以让 NFS 的启动更为快捷了。
所以你要注意,要启动 NFS 之前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。
当客户端有 NFS 档案存取需求时,他会如何向服务器端要求数据呢?
- 客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
- 服务器端找到对应的已注册的 NFS daemon 端口后,会回报给客户端;
- 客户端了解正确的端口后,就可以直接与 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 服务器也 被称为 RPC server 之一。 那么 NFS 服务器主要的任务是进行文件系统的分享,文件系统的分享则与权限有关。 所以 NFS 服务器启动时至少需要两个 daemons ,一个管 理客户端是否能够登入的问题, 一个管理客户端能够取得的权限。如果你还想要管理 quota 的话,那么 NFS 还得要再加载其他的 RPC 程序就是了。我们以较单纯的 NFS 服 务器来说:需要启动以下daemon.
rpc.nfsd:最主要的 NFS 服务器服务提供程序。这个 daemon 主要的功能就是在管理客户端是否能够使用服务器文件系统挂载信息等, 其中还包含判断这个登录用户的 ID 。
rpc.mountd:这个 daemon 主要的功能,则是在管理 NFS 的文件系统哩!当客户端顺利的通过 rpc.nfsd 而登入服务器之后,在他可以使用 NFS 服务器提供的档案之前, 还会经过档案权限 (就是那个 -rwxrwxrwx 与 owner, group 那几个权限啦)
的认证程序!他会去读 NFS 的配置文件 /etc/exports 来比对客户端的权限, 当通过这一关之后客户端就可以取得使用 NFS 档案的权限啦!(注:这个也是我 们用来管理 NFS 分享之目录的权限与安全设定的地方哩!)
rpc.lockd :(非必要):这个玩意儿可以用在管理档案的锁定 (lock) 用途。为何档案需要『锁定』呢?
因为既然分享的 NFS 档案可以让客户端使用,那么当多个客户端同时尝试写入 某个档案时, 就可能对于该档案造成一些问题啦!这个 rpc.lockd 则可以用来
克服这个问题。 但 rpc.lockd 必须要同时在客户端与服务器端都开启才行喔! 此外, rpc.lockd 也常与 rpc.statd 同时启用。
rpc.statd :(非必要)可以用来检查档案的一致性,与 rpc.lockd 有关!若发生因为客户端同时使用同一档案造成档案可能有所损毁时, rpc.statd 可以用来检测并尝试回复该档 案。与 rpc.lockd 同样的,这个功能必须要在服务器端与客户端都启动才会生 效。
二、所需要的软件及软件结构
要设定好 NFS 服务器我们必须要有两个软件才行,分别是:
RPC 主程序:rpcbind
就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC 服务,而要启动任何 一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这 个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软 件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)
NFS 主程序:nfs-utils
就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要 软件啦!一定要有喔!
NFS 软件结构:
/etc/exports:(主要配置文件):这个档案就是 NFS 的主要配置文件了!不过,系统并没有默认值,所以这个档案『 不一定会存在』,你可能必须要使用 vim 主动的建立起这个文件(/var/lib/nfs/etab 默认的权限设置)。
/usr/sbin/exportfs (NFS 文件系统维护指令):这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享/etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享等 等,这个指令是 NFS 系统里面相当重要的一个
/var/lib/nfs/*tab(分享资源的登录档):在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完 整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数 据。
/usr/sbin/showmount (客户端查询服务器分享资源的指令):这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount则主要用在 Client 端。这个 showmount 可以用来察看 NFS 分享出来的目录资 源
/etc/sysconfig/nfs: 主要设置端口 ( “ NFS 随便选取数个端口向 RPC 注册”时 产生的daemon的端口,rpc.nfsd:rpc.mountd: rpc.lockd rpc.statd rpc.rquotad 等等。)
以上是关于NFS服务器详解的主要内容,如果未能解决你的问题,请参考以下文章