1、认识nfs服务
实验系统:rhel5.5
6.0系统的portmap改名rpcbindnfs为Network File System的缩写,即网络文件系统。nfs是unix或类unix操作系统常用的网络共享文件系统之一,通过nfs,用户可以像访问本机磁盘一样访问网络上的文件系统。 nfs可以提供的服务包括在目录中搜寻文件,列出文件,目录管理,获取文件属性和文件读写,nfs的优点在于,本地计算机可以使用较少的磁盘空间,而将数 据存放于一台机器上并通过网络访问;用户不必在每个网络机器上都有家目录,家目录可以放在nfs服务器上通过网络访问:DVD-ROM,移动硬盘,U盘和 其他存储介质可以通过网络共享访问,这样可以减少网络上的移动存储器的数量。 nfs需要用到RPC(远程过程调用)。那么什么是RPC?nfs与rpc的关系是什么呢?首先我们了解nfs的工作原来,nfs提供了许多小的程序,这 些程序有不同的功能,每启动一个功能就会启用一些端口来传输数据。nfs的这些功能对应的端口并非固定,这些端口号是小于1024的随机端口。这样依赖, 客户端如何才能知道服务器上这些随机端口的端口号呢?RPC就承担了让客户端和nfs通信的作用.rpc的作用就在于指派这些nfs的功能对应的端口号, 并且和客户端通信,让客户端可以顺利的和这些端口连接。nfs的程序会通知rpc相关的程序端口号,然后rpc再通知用户端。因为rpc服务的端口号本身 是固定的(111端口),所以客户端只需要和111端口通信就可以活的所有相关的端口号和信息了。 nfs工作的流程如下: 1>客户端向RPC端口发送请求,要求和NFS程序通信。 2>rpc将nfs程序的端口号发回给客户端。 3>客户端与nfs程序建立连接。 nfs需要至少5个监控程序才可以正常运行。这些监控程序的文件名和作用如下: ~rpc.nfsd。他通过/etc/rc.d/init.d/nfs脚本启动,作用在于判断客户端是否具有登录nfs服务器的权限。 ~rpc.mountd。装载nfs文件系统的程序,他可以判断文件的使用权限。 ~portmap。portmap的作用在乎定向RPC通信流,是NFS重要组成部分。 ~rpc.statd。在NFS服务器和客户端通信中断后,rpc.statd和rpc.lockd可以帮助客户端重新连接至服务器。rpc.statd必须在客户端和服务器都启用时才有效。 ~rpc.lockd。当多个用户连接nfs服务器时,有可能试图访问同一文件。这个程序的作用在于锁定文件,以避免文件被不同的更改请求覆盖。rpc.lockd必须在客户端和服务器端都启用时才有效。
2、nfs服务器安装2.1、在上一节中,提到了nfs服务必须和rpc服务协同工作,所以安装nfs服务至 少需要两个rpm包:nfs-utils*.rpm和portmap*.rpm。在RHEL5安装光盘中,还有一个图形界面的nfs配置工 具:system-config-nfs,这个包是可选安装的。 2.2、配置nfs服务器 首先,这里介绍一个nfs相关的重要文件。 */etc/exports.这个文件就是nfs的主配置文件,在nfs安装完成后,这个文件的内容为空。nfs的设定只需要编辑到这个文件。 */usr/sbin/showmount。这个命令是客户端用来查看服务器上的共享资源目录的。 */usr/sbin/exportf。此命令可以重新共享服务器上的资源。一般在nfs主设定文件/etc/exports变更后,可以用到他。 */var/lib/xtab。nfs的记录文件,包含客户端的连接记录。
6.0为/var/lib/nfs/etab
下面介绍如何配置/etc/exports这个nfs的主设定文件。该文件内容的格式如下: 目录名称 主机名或ip/(参数1/2...) 主机名或IP(参数1/2...) 这里的目录名称就是共享文件夹的路径;在目录名称后,只可访问此目录的主机名或IP,上面的“参数1/2...”指定了该主机的访问权限和访问策略。下面列出了常用的参数的解释和作用。 rw 可读写权限 ro 只读权限 sync 资料同步写入内存和硬盘 async 资料先写入内存,后写入硬盘 no_root_squash 如果用root登录,则拥有root权限 root_squash 如果用root登录,则身份被压缩成匿名使用者,一般身份为nobody all_squash 无论用什么帐号登录,身份均被压缩为匿名使用者 anonuid 匿名使用者的uid值,这个uid值在/etc/passwd中存在 anongid 匿名使用值的GID值,这个GID值在/etc/passwd中存在 下面讲解一个实例: /tmp/nfs 211.90.88.0/24(rw,no_root_squash) 这里的意思是将/tmp/nfs共享给211.90.88.0网段的主机,权限是可读写,并且对root用户不压缩权限,注意,在这里,网段匹配不可以用*号,如下面的写法就是错误的:/tmp/nfs 211.90.88.*/24(rw,no_root_squash)
如果需要针对不同的主机开放不同的权限,则需要对不同的主机/网段分开写对应参数,比如:/tmp/nfs 211.90.88.0/24(rw,no_root_squash) *(ro) 此例表示,除了211.90.88网段之外的所有主机对/tmp/nfs只读,而211.90.88段的主机可读写/tmp/nfs。 下面来看一个综合实例:/tmp/nfs 211.90.88.0/24(rw,no_root_squash) *(ro) /tmp/public 192.168.1.1(rw) /tmp/abc *.abc.com(rw,all_squash,anongid=99) 此例中的第一行在上面已经讲过;第二行中的目录仅对192.168.1.1这一个ip开放;第三行的目录对abc.com域名开放,权限为可读写,并且访问者身份压缩为nobody,GID规定为99 2.3、启动nfs服务 在启动nfs服务之前,需要确保portmap已经启动,之后再启动nfs服务: service portmap start chkconfig --level 2345 portmap on service nfs start chkconfig --level 2345 nfs on 如何需要增加nfs服务器的资料一致×××,则需要启动nfslock服务: service nfslock start chkconfig --level 2345 nfslock on nfs启动之后,可以用exportfs命令重新挂载/卸载共享目录。exportfs的参数作用如下: exportfs [-arvu] -a 全部挂载/卸载 -r 重新挂载/etc/exports 设定 -u 卸载某一目录 -v 输出分享的目录列表 如果需要重新挂载/etc/export里的设定,可以用exportfs -ar 命令;如需输出目录共享目录和规则,可用export -v 命令;卸载目录可用exportfs -u 命令,关于-u参数的使用,下面以实例讲解、 假定/etc/exports的内容如下:/tmp/all 211.90.88.0/24(rw,no_root_squash)