转贴地址:http://linux.vbird.org/linux_server/0330nfs.php
图形界面:system-config-nfs
命令: /etc/rc.d/init.d/portmap start 启动 portmap
/etc/rc.d/init.d/nfs start 启动 nfs
查看已经激活了多少服务: /sbin/chkconfig --list
查看当前有哪些服务正在运行: /sbin/service --status-all
主要内容:
NFS 启动的 RPC daemons
NFS server 总共需要启用到至少两个 daemons ,一个管理 Client 是否可以登入的问题,另一个管理登入主机后的 Client 能够使用的档案权限!如果您还要管理 quota 的话,那么 NFS 还会自动的再加载其它相关的 RPC program 呢!我们这里以最简单的方式来设定 NFS,说明如下:
- rpc.nfsd:这个 daemon 主要的功能就是在管理 Client 是否能够登入主机的权限啦,其中还包含这个登入者的 ID 的判别喔!
- rpc.mountd:这个 daemon 主要的功能,则是在管理 NFS 的档案系统哩!当 Client 端顺利的通过 rpc.nfsd 而登入主机之后,在他可以使用 NFS server 提供的档案之前,还会经过档案使用权限 ( 就是那个 -rwxrwxrwx 与 owner, group 那几个权限啦 ) 的认证程序!他会去读 NFS 的设定档 /etc/exports来比对 Client 的权限,当通过这一关之后, Client 就可以取得使用 NFS 档案的权限啦!(注:这个也是我们用来管理 NFS 分享之目录的使用权限与安全设定的地方哩!)
需要的套件
要启动 NFS 我们必须要有两个套件才行,分别是:
- nfs-utils 与 nfs-utils-clients (有时后仅有一个)
- portmap
- portmap:
就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC server program,而要启动任何一个 RPC server program 之前,我们都需要做好 port 的对应 ( mapping ) 的工作才行,这个工作其实就是『 portmap 』这个服务所负责的!也就是说,在启动任何一个 RPC server 之前,我们都需要启动 portmap 才行呢!那么这个 portmap 到底在干嘛呢?就如同这个服务的名称,哈哈!就是作 port 的 mapping 啊!举个例子来说:当 Client 端尝试来使用 RPC server 所提供的服务时,由于 Client 需要取得一个可以连接的 port 才能够使用 RPC server 所提供的服务,因此, Client 首先就会去跟 portmap 讲『喂!可不可以通知一下,给我个 port number ,好让我可以跟 RPC 联络吧!』这个时候 portmap 就自动的将自己管理的 port mapping 告知 Client ,好让他可以连接上来 server 呢!所以啰:『启动 NFS 之前,请先启动 portmap !』
- nfs-utils:
就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其它相关 documents 与说明文件、执行档等的套件!这个就是 NFS 的主要套件啦!一定要有喔!
好了,知道我们需要这两个套件之后,现在干嘛?!赶快去您的系统先用 RPM 看一下有没有这两个套件啦!没有的话赶快用 RPM 去安装喔!不然就玩不下去了!
例题:
请问我的主机是以 RPM 为套件管理的 Linux distribution ,例如 Red Hat, Mandrake 与 OpenLinux 等版本,那么我要如何知道我的主机里面是否已经安装了 portmap 与 nfs 相关的套件呢?
答:
简单的使用 rpm -qa | grep nfs 与 rpm -qa | grep portmap 即可知道啦!
Server 端的设定:
NFS 的套件结构
NFS 这个咚咚真的是很简单,上面我们提到的 NFS 套件中,设定档只有一个,执行文件也不多,记录文件也三三两两而已吶!赶紧先来看一看吧! ^_^
- /etc/exports:这个档案就是 NFS 的主要设定档了!不过,系统并没有默认值,所以这个档案『不一定会存在』,所以您必须要使用 vi 主动的建立起这个档案喔!我们等一下要谈的设定也仅只是这个档案而已吶!
- /usr/sbin/exportfs:这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸载或重新分享等等,这个指令是 NFS 系统里面相当重要的一个喔!至于指令的用法我们在底下会再介绍。
- /usr/sbin/showmount:这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。这个 showmount 可以用来察看 NFS 分享出来的目录资源喔!
- /var/lib/nfs/xtab:这个档案则是主要的 NFS 的纪录文件咯!当我们的 NFS 分享出目录资源后,到底有哪些 Client 端曾经连接上我们的 NFS 主机呢?呵呵!就是看这个档案的内容即可啰! ^_^
就说不难吧!主要就是这几个啰!
主机的规划技巧建议
如果您的工作环境中,具有多部的 Linux 主机,并且预计彼此分享出目录时,那么在安装 Linux distribution 的时候,最好可以规划出一块 partition 作为预留之用。因为『 NFS 可以针对目录来分享』,因此,您可以将预留的 partition 挂载在任何一个挂载点,再将该挂载点(就是目录啦!)由 /etc/exports 的设定中分享出去,那么整个工作环境中的其它 Linux 主机就可以使用该 NFS 主机的那块预留的 partition 了!所以,在主机的规划上面,主要需要留意的只有 partition 而已。此外,由于分享的 partition 可能较容易被入侵,最好可以针对该 partition 设定比较严格的参数在 /etc/fstab 当中喔!
设定流程(/etc/exports)
我们在原理的部分对于 NFS 稍微解释了一下,哇!怎么看起来好像粉难喔!其实一点也不!为什么呢?因为 portmap 只要一支 scripts 就可以启动, NFS 只要设定一个档案就可以顺利运作!那么怎么能说不简单呢!呵呵!这个 NFS 真是他 X 的太太太.....简单了~在开始 NFS 之前,让我们先以 Windows 的系统当中的『资源共享』来说明一下整个流程吧:
5. 在 Windows Server 上面,开启档案总管,在某个目录上面按右键选择启动资源共享;
6. 在资源共享的内容当中,需要设定『使用者权限』( 以 Windows 2000 为例 );
7. 在 Client 端需要登入 Windows server 时,需要启动『网络上的芳邻』来寻找可用的网络上面分享的目录,然后点选该目录,若可以登入该 Windows server 时,则可以依据步骤一的权限使用该目录下的档案!
呵呵!没错! NFS 的整个流程也差不多是这样:
- 首先,需要确认一下您的 Linux 主机是否可以支持 NFS 这项服务,然后再设定一下使用者的来源IP或主机名称以及分享出去的目录的权限,之后呢,启动 NFS 即可将刚刚设定的目录给他分享出去了!
- 那么在 Client 端怎么使用这个分享出来的目录?就是先以 showmount 这支程序检查 Linux Server 是否有可以使用的 NFS 目录,如果有的话,就将他 mount 在本机上面,如果可以 mount ,那么就可以使用 NFS 主机提供的资源了!
哈哈!果然很简单吧!所以底下我们就来一个一个步骤的说明一下 NFS 怎么设定啰: