项目1应用文件共享服务任务2构建Linux文件服务器本任务重点内容NFS系统简介NFS服务的安装与配置NFS服务测试NFS系统简介NFSServer可以让你的PC将网络远程的NFS主机提供的共享的目录,挂载到本地端的机器当中。所以,在本地端的机器看起来,那个远程主机的目录就好象是自己的partition一般!NFSserver可以看作是一个FILESERVERNFS系统简介RPC(RemoteProcedureCall)虽然NFS有属于自己的协议和所使用的portnumber,但NFS本身没有提供信息传输的协议和功能。NFS之所以能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议,而这些传输协议用到这个RPC功能。NFS系统简介RPC(RemoteProcedureCall)可以将NFS服务器看成是一个RPC服务器,NFS客户端看成是一个RPC客户端,所以只要用到NFS的地方都要启动RPC服务,不论是NFSSERVER或者NFSCLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAMPORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。NFS系统简介举个例子来说:当Client端尝试来使用RPCserver所提供的服务时,由于Client需要取得一个可以连接的port才能够使用RPCserver所提供的服务,因此,Client首先就会去跟portmap讲『喂!可不可以通知一下,给我个portnumber,好让我可以跟RPC联络吧!』这个时候portmap就自动的将自己管理的portmapping告知Client,好让他可以连接上来server呢!所以啰:『激活NFS之前,请先激活portmap!』NFS系统简介NFS需要启动的DAEMONSrpc.nfsd:主要负责登陆权限检测。rpc.mountd:主要功能是管理NFS的文件系统。当客户端顺利的通过rpc.nfsd登陆NFS服务器后,在使用NFS服务器所提供的文件前,还必须通过文件使用权限的验证,rpc.mountd会读取NFS的配置文件/etc/exports来对比客户端的权限。portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务提供的服务试,portmap会将所管理的与服务对应的端口号提供给客户端,从而使客户端可以通过端口向服务器请求服务注:在REDHAT中PORTMAP是默认启动的NFS服务的安装NFSSERVER在REDHATLINUX平台下一共需要两个软件包:nfs-utils和portmapnfs-utils:提供rpc.nfsd及rpc.mountd这两个NFSDAEMONS的软件portmap:NFS其实可以被看作是一个RPCSERVERPROGRAM,而要启动一个RPCSERVERPROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。NFS服务的配置服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:欲分享出去的目录主机名称1或者IP1(参数1,参数2)主机名称2或者IP2(参数3,参数4)上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。例:/home/test192.168.0.100(rw)NFS服务的配置可以设定的参数主要有以下这些:rw:可读写的权限;ro:只读的权限;no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。root_squash:登入NFS主机使用分享目录的使用者如果是root时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID与GID都会变成nobody那个身份(缺省)all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。anonuid:将登入NFS主机的用户都设定成指定的userid,此ID必须存在于/etc/passwd中。anongid:同anonuid,但是变成groupID就是了!sync:资料同步写入存储器中。async:资料会先暂时存放在内存中,不会直接写入硬盘。NFS服务的配置例如可以编辑/etc/exports为:/tmp*(rw,no_root_squash)/home/public192.168.0.*(rw)*(ro)/home/test192.168.0.100(rw)/home/linux*.the9.com(rw,all_squash,anonuid=40,anongid=40)NFS服务的配置设定好后可以使用以下命令启动NFS:#/etc/rc.d/init.d/portmapstart(在REDHAT中PORTMAP是默认启动的)#/etc/rc.d/init.d/nfsstartNFS服务的配置exportfs命令来使新配置生效,该命令格式如下:exportfs[-aruv]-a:全部mount或者unmount/etc/exports中的内容-r:重新mount/etc/exports中分享出来的目录-u:umount目录-v:在export的时候,将详细的信息输出到屏幕上。NFS服务的配置具体例子:#exportfs-rv==全部重新export一次!exporting192.168.0.100:/home/testexporting192.168.0.*:/home/publicexporting*.the9.com:/home/linuxexporting*:/home/publicexporting*:/tmpreexporting192.168.0.100:/home/testtokernel#exportfs-au==全部都卸载了。NFS服务的配置权限问题假设/etc/exports里面的内容为#vi/etc/exports/home/public192.168.0.*(rw)*(ro)NFS服务的配置•假设我们在192.168.0.100这个client端登陆此NFS主机(192.168.0.2),那么情况一:在192.168.0.100的帐号为test这个身份,同时,NFS主机上也有test这个帐号在/home/public中,由于我有读写的权限,如果NFS主机在/home/public这个目录的权限对于test开放写入的话,那么就可以读写,并且写入档案的所有人是test。如果NFS主机的/home/public对于test这个使用者并没有开放写入权限时,那就无法写入,虽然/etc/exports里面是rw,也不起作用.NFS服务的配置•假设我们在192.168.0.100这个client端登陆此NFS主机(192.168.0.2),那么情况二:如果我们在192.168.0.100的身份为test2,但是NFS主机却没有test2这个帐号时b).在/home/public与/home/test里面是否可以写入,还需要看/home/public的权限而定,不过身份就被变成nobody了NFS服务的配置•情况三:在192.168.0.100的身份为root在/home/public底下的身份被压缩成了nobody,因为预设的属性都具有root_squash,所以档案所有人就变成了nobody.客户端NFS服务的测试showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法showmout-a:这个参数是一般在NFSSERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。-e:显示指定的NFSSERVER上export出来的目录。客户端NFS服务的测试例如:showmount-e192.168.0.1Exportlistforlocalhost:/tmp*/home/linux*.linux.org/home/public(everyone)/home/test192.168.0.100客户端NFS服务的测试mountnfs目录的方法:#mount-tnfshostname(orIP):/directory/mount/point具体例子:#mkdir/nfs/tmp#mount-tnfs192.168.0.1:/nfs/tmp/mnt/nfs#cd/mnt/nfs#ls客户端NFS服务的测试开机时自动连上NFS:如果希望开机的时候,系统就自动挂载NSF,则需要编辑/etc/fstab档。例:192.168.1.100:/tmp/mnt/nfsnfsdefaults00与NFS有关的一些命令介绍nfsstat:查看NFS的运行状态,对于调整NFS的运行有很大帮助rpcinfo:查看rpc执行信息,可以用于检测rpc运行情况的工具。