查看需要的软件包是否安装。
[root@test ~]# rpm -qa|grep -i nfs
nfs-utils-lib-1.0.8-7.2.z2
nfs-utils-1.0.9-40.el5
system-config-nfs-1.3.23-1.el5
[root@test ~]# rpm -qa|grep -i portmap
portmap-4.0-65.2.2.1
若系统没有安装所需软件,手工安装,方法在这里省略。
NFS服务的配置文件是/etc/exports
exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
1.输出目录:
输出目录是指NFS系统中需要共享给客户机使用的目录;
2.客户端:
客户端是指网络中可以访问这个NFS输出目录的计算机
客户端常用的指定方式
指定ip地址的主机 192.168.10.20
指定子网中的所有主机 192.168.10.0/24
指定域名的主机 test.test.com
指定域中的所有主机 *.test.com
所有主机 *
3.选项:
选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:
访问权限选项
设置输出目录只读 ro
设置输出目录读写 rw
用户映射选项
all_squash 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash 与all_squash取反(默认设置);
root_squash 将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash 与rootsquash取反;
anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx 将远程访问的所有用户组都映射为匿名用 户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure 限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure 允许客户端从大于1024的tcp/ip端口连接服务器;
sync 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async 将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay 检查是否有相关的写操作,如果有则将这些写操作 一起执行,这样可以提高效率(默认设置);
no_wdelay 若有写操作则立即执行,应与sync配合使用;
subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
配置实例
[root@mailsvr1 ~]# mkdir /nfs
[root@mailsvr1 ~]# cd /nfs/
[root@mailsvr1 nfs]# mkdir test1
[root@mailsvr1 nfs]# mkdir test2
[root@mailsvr1 nfs]# mkdir test3
[root@mailsvr1 nfs]# mkdir test4
[root@huyb ~]# more /etc/exports
/nfs/test1 192.168.10.0/24(rw,async) *(ro)
/nfs/test2 192.168.10.253(rw,sync)
/nfs/test3 *.test.com(ro,no_root_squash)
/nfs/test4 *.test.com(rw,insecure,all_squash,sync,no_wdelay)
/mnt/cdrom 192.168.10.*(ro)
维护NFS服务的输出目录列表
命令exportfs
-a 输出在/etc/exports文件中所定义的所有目录;
-r 重新读取/etc/exports文件,不需要重起服务;
-u 停止输出某一目录;
-v 在屏幕上显示过程;
重新输出共享目录
[root@mailsvr1 ~]# exportfs -rv
exporting 192.168.10.0/24:/nfs/test1
exporting 192.168.10.253:/nfs/test2
exporting *.test.com:/nfs/test3
exporting *.test.com:/nfs/test4
exporting 192.168.10.*:/mnt/cdrom
exporting *:/nfs/test1
查看NFS服务输出的共享目录
[root@mailsvr1 ~]# showmount -e 192.168.10.3
Export list for 192.168.10.3:
/mnt/cdrom 192.168.10.*
/nfs/test4 *.test.com
/nfs/test3 *.test.com
/nfs/test2 192.168.10.253
/nfs/test1 (everyone)
停止输出所有共享目录
[root@mailsvr1 ~]# exportfs -auv
[root@mailsvr1 ~]# showmount -e 192.168.10.3
Export list for 192.168.10.3:
启动或停止NFS服务器
[root@mailsvr1 ~]# /etc/init.d/nfs stop
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS quotas: [ OK ]
Shutting down NFS services: [ OK ]
[root@mailsvr1 ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
查询nfs的状态
[root@mailsvr1 ~]# /etc/init.d/nfs status
rpc.mountd (pid 3123) is running...
nfsd (pid 3120 3119 3118 3117 3116 3115 3114 3113) is running...
rpc.rquotad (pid 3108) is running...
[root@mailsvr1 ~]# /etc/init.d/portmap status
portmap (pid 2555) is running...
查询nfs服务器的共享目录
showmount 192.168.10.3 查询指定主机的nfs共享目录
showmount 查询本地主机的
-a 显示指定的nfs服务器的所有客户端主机及其所连接的目录;
-d 显示指定的nfs服务器中已被客户端连接的所有输出目录;
-e 显示指定nfs服务器上所有输出的目录;
客户端连接
[root@test /]# mount -t nfs 192.168.10.3:/nfs/test1 /mnt/
[root@test /]# mount | grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.10.3:/nfs/test1 on /mnt type nfs (rw,addr=192.168.10.3)
卸载共享
[root@test /]# umount /mnt/