红联Linux门户
Linux帮助

Linux系统NFS的安装和配置

发布时间:2015-04-08 09:42:50来源:linux网站作者:sstudent

1.安装

需要安装 portmap和nfs-utils这两个包,下载rpm包后用rpm安装或者直接用yum安装都可以。

rpm -ivh portmap-4.0-65.2.2.1.i386.rpm

rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm


2.配置

配置文件是/etc/exports,如果不存在需要自己创建。

/etc/exports文件内容格式:

<输出目录> [客户端1域名/IP(选项(访问权限,用户映射,其他))] [客户端2域名/IP 选项(访问权限,用户映射,其他)]

NFS主要的选项有3类:

A 访问权限选项

设置输出目录只读:ro

设置输出目录读写:rw

B 用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash相反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与rootsquash相反;

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

C 其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

例如,我们在namenode1机器上配置做如下配置

/home/dfs/nfs_share_edits/      namenode2(rw)

这个配置是把namenode1上的/home/dfs/nfs_share_edits目录设置成共享,可以给namenode2来访问,访问权限是可读写。


3.启动

sudo service portmap start

sudo service nfs start

查询状态

service portmap status

service nfs status

停止服务

service nfs stop

service portmap stop


4.客户端挂载

命令格式

mount NFS服务器IP/域名:共享目录 本地挂载目录

例如,在namenode2机器上运行mount命令挂载namenode1的NFS共享目录

mkdir /home/dfs/nfs_share_edits

sudo mount namenode1:/home/dfs/nfs_share_edits  /home/dfs/nfs_share_edits

这是把namenode2把namenode1的NFS共享目录挂载到本地,这样就可以访问远程的共享目录了,挂载前需要先创建本地的挂载目录。

挂载之后,可以用mount命令查看挂载状态

sudo mount | grep -i nfs

卸载命令

sudo umount namenode1:/home/dfs/nfs_share_edits


5.相关的守护进程

nfsd

它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

mountd

它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
 
portmap

主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
 

6.相关的命令

#查看配置

exportfs

#默认查看共享的服务

showmount -e

#查看已经与客户端连接上的目录信息

showmount -a