您的位置:首页 > 其它

NFS服务器搭建

2010-07-05 17:53 204 查看
NFS服务器搭建

一.什么是NFSNetwork FileSystem

NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案。所以,您也可以简单的将他看做是一个档案服务器!有点类似微软的DFS服务器。可以让您的 PC 来将网络远程的 NFS 主机分享的目录,挂载到本地端的机器当中,在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分割槽一样!使用上面相当的便利!

二.什么是 RPC (Remote Procedure Call)

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

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

三.NFS Server端的设定

所需要的套件

要设定好 NFS 服务器我们必须要有两个套件才行,分别是:

NFS 主程序:nfs-utils

RPC 主程序:portmap

1.portmap

就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC 程序,而要启动任何一个 RPC 程序之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 portmap 』这个服务所负责的!也就是说, 在启动任何一个 RPC server 之前,我们都需要启动 portmap 才行!

nfs-utils

就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其它相关 documents 与说明文件、执行档等的套件!这个就是 NFS 的主要套件啦!一定要有喔!

--------------------------------------------------------------------------------

NFS 的套件结构

/etc/exports

这个档案就是 NFS 的主要设定档了!这个档案不一定会存在,您可能必须要使用 vi 主动的建立起这个档案.

/usr/sbin/exportfs

这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸载或重新分享等等.

/usr/sbin/showmount

exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。这个 showmount 可以用来察看 NFS 分享出来的目录资源!

/var/lib/nfs/*tab

在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经连结到此 NFS 主机的相关客户端数据。

/etc/exports 的设定

[root@linux ~]# vi /etc/exports

/tmp 192.168.1.0/24(ro) localhost(rw) *.ev.ncku.edu.tw(ro,sync)

# [分享目录] [第一部主机(权限)] [可用主机名] [可用万用字符]

现在我们来设置几个。

[root@linux ~]# vi /etc/exports

/tmp *(rw,no_root_squash)

/home/public 192.168.0.0/24(rw) *(ro)

/home/test 192.168.0.100(rw)

启动 NFS

设定档搞定后,当然要开始来启动才行啊!而前面我们也提到过,NFS 的启动还需要 portmap 的协助才行。





NFS 的联机观察

Showmount:显示某部主机的 /etc/exports 所分享的目录数据。

[root@linux ~]# showmount [-ae] [hostname|IP]

参数:

-a :显示目前主机与客户端的 NFS 联机分享的状态;

-e :显示某部主机的 /etc/exports 所分享的目录数据。





四.NFS 客户端的设定

1.确认本地端已经启动了 portmap 服务!





2.扫瞄 NFS 服务器分享的目录有哪些,并了解我们是否可以使用 (showmount)。





3.在本地端建立预计要挂载的挂载点目录 (mkdir),并利用 mount 将远程主机直接挂载到相关目录。使用df查看挂载点信息。





五.无法挂载的原因分析

如果客户端就是无法挂载服务器端所分享的目录时,到底是发生什么问题?你可以这样分析看看:

1.使用者或客户端身份权限不符:

以上面的例子来说明,我的 /home/test 只能提供 192.168.0.0/24 这个网域,所以如果我在 192.168.0.2 这部服务器中,以 localhost (127.0.0.1) 来挂载时,就会无法挂载上:

[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs

mount: localhost:/home/test failed, reason given by server: Permission denied

看到 Permission denied 了吧?没错啦~权限不符啦!如果确定您的 IP 没有错误,那么请通知服务器端,请管理员将你的 IP 加入 /etc/exports 这个档案中。

2.服务器或客户端某些服务未启动,比如Portmap或者是服务器端的 nfs 忘记开。

3.被防火墙档掉了:

这个在试验中比较容易被忽视,可以把防火墙关掉或者重新设定一下您的防火墙,这包含了两部份,包括 iptables 与 TCP_Wrappers !因为我们启动了 portmap ,这个东西有两个数据需要分享出来,一个是 port 111 需要提供出去,因此您的 iptables 规则当中,需要开放这个 port!

另外如果未设置信任网卡也会导致无法扫瞄到NFS 服务器分享的目录,如图所示,选中eth0即可。




本文出自 “我的地盘” 博客,请务必保留此出处http://justdo.blog.51cto.com/1544917/344279
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: