在路上...

The development of life
我们一直都在努力,有您的支持,将走得更远...

站内搜索: Google

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

NFSNetwork FileSystem简称。

目的:让不同的机器、不同的作业系统可以彼此的分享档案。

NFS是通过网路来进行资料的传输,因此NFS应该会使用一些port

1、那么NFS使用哪个port来进行传输呢?

不知道^_^。因为NFS用来传输的port是随机选择小于1024以下的端口来使用。

2、那客户端如何知道服务器端使用哪个port呢?

通过RPC(Remote Procedure Call,远端程序呼叫)的协定来辅助。RPC最主要的功能就是在指定每个NFS功能所对应的port number,并且汇报给客户端,让客户端可以连接到正确的端口上。


3、RPC又是如何知道每个NFS的端口的呢?

这是因为当服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能。然后RPC又使用port 111来监听客户段的需求并为其提供正确的端口。因此,一定要注意:要启动NFS之前,RPC一定要先启动起来,否则NFS会无法向RPC注册。另外要注意:RPC如果重新起动,原本注册的资料会不见,因此RPC重新起动后,他管理的所有程序都需要重新启动以重新向RPC注册。

NFS其实可以被视为一个RPC程式,而要启动任何一个RPC程式之前,我们都需要做好port的对应工作才行,这个工作实际就是portmap这个任务负责的。也就是说,在启动任何一个RPC server前,我们都需要启动portmap才行。

portmap启动后,会出现一个port 111sunrpc服务,那就是portmap了。而NFS至少会启动两个daemon。然后就开始监听客户端的需求了。可使用命令:

netstat -ultn”查看NFS到底开了哪些端口。可能会看到很多端口,主要的是:

*portmap 启动的port111

*NFS启动的port2049

*其他rpc.daemons启动的port则是随机产生的,因此需向port 111注册。

4、如何知道每個 RPC 服務的註冊狀況?

可以使用 rpcinfo 命令来处理。”rpcinfo -p 主机IP” // 参数-p:显示出所有的portprogram的资讯。


5、NFS的连线观察:

NFS服务器设置好后,我们可以现自我检测一下是否可以连线了:利用showmount命令。

showmount [-ae] [hostname | IP]

参数:

-a:显示当前主机与客户端的NFS连线分享的状态;

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

如:showmount -e 192.168.0.167

6、NFS启动的RPC daemons:

NFS服务器的主要任务是进行档案系统的分享,档案系统的分享则与权限有关,所以NFS服务器启动时至少需要两个daemons

rpc.nfsd:管理客户端是否能够登入的问题,其中包括这个登入者的ID判别等;

rpc.mountd:管理客户端能够取得的对共享档案的权限。当客户端顺利通过rpc.nfsd而登入主机后,在他可以使用NFS服务器提供的档案前,还要经过档案使用权限(-rwxrwxrwx owner, group 那幾個权限)的认证程序。他会去读/etc/exports来比对客户端的权限,当通过这一关后客户端就可以取得使用NFS档案的权限了。


7NFS的档案存取权限问题,即客户端对共享文件有什么样的操作权限(这点很重要)。

当客户端以一个用户身份,比如may去存取NFS服务器上提供的共享档案系统时,NFS服务器所提供的共享档案系统会让客户端以什么身份去存取呢?

注意:NFS本身的服务并没有进行身份登入的识别,NFS服务器会以客户端的使用者UIDGID等身份来尝试读取服务器上的文件系统,即一般的Linux主机会以自己的/etc/passwd/etc/group来查询登入的使用者。所以会出现下面几种情况:

1NFS serverNFS client刚好有相同的帐号及群组。此时使用者可以直接以登录用户(may)的身份进行服务器提供的档案系统的存取。

2)在NFS server上对应登入may用户UID的使用者名称是其他的,如ToDDY。此时客户端的may可以存取服务器端的ToDDY使用者的档案。

3NFS server上没有客户端用户mayUID。此时may在该目录下被压缩成匿名者。一般NFS的匿名者会是UID65534的使用者,帐号名称通常为nobody

4)客户端的使用者身份是root时。每个linux主机上都有UID0root根用户,因此客户端的root照理说对NFS server的共享档案有全部的权限,这是很危险的。因此在预设的情况下,root的身份会被主动压缩为匿名者。如果想保持全部权限,则可在/etc/exports中指明no_root_squash参数。

在了解了使用者帐号与UID及档案系统的关系后,要实现在客户端以NFS取用服务器的档案系统时,还需要具备:

*NFS服务器开放可写入权限(/etc/exports中设定);

*服务器上的实际的共享档案系统具有可写权限。

摘自:NFS 伺服器(鸟哥的私房菜)

posted on 2009-08-31 21:05  palam  阅读(282)  评论(0编辑  收藏  举报