1.服务器安装NFS服务

yum -y install nfs-utils rpcbind

2.服务器配置

vim /etc/exports
/root/test 192.168.107.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
/NFS/cloud.shunwang.com/ 192.168.107.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)

# /NFS/cloud.shunwang.com/ 本机共享的mul
# 192.168.107.0/24 可以访问的客户端主机ip 192.168.107.0/24表示一个网段 192.168.107.0-192.168.107.255的ip度可以, 也是设置单个ip 或者域名也可以
# rw read-write 可读写
# ro read-only 只读
# sync 文件同时写入硬盘和内存
# sync 文件暂存于内存,而不是直接写入内存
# no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的
# root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份
# all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限
# anonuid:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534)
# anongid:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534)
# no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
# root_squash(默认):将来访的root用户映射为匿名用户或用户组;
# secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
# insecure:允许客户端从大于1024的tcp/ip端口连接服务器
# wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
# no_wdelay:若有写操作则立即执行,应与sync配合使用;
# subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
# no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

3.修改配置生效

exportfs -r  

4.服务启动(按顺序)

systemctl restart rpcbind.service
systemctl restart nfs-server.service
systemctl enable rpcbind.service
systemctl enable nfs-server.service 

5.查看是否启动成功,查看日志

cat /var/log/messages
cat /var/log/messages | grep nfs

6.查看NFS开了哪些端口?

netstat -tnlp
# portmap 启动的 port 在 111;
# NFS 启动的 port 在 2049;
# 其他 rpc.daemons 启动的 port 则是随机产生的,因此需向 port 111 注册。

7.查询RPC服务的注册状况

rpcinfo -p localhost # localhost未主机ip

8.NFS 的连线观察

-a :显示目前主机与用户端的 NFS 连线分享的状态;
-e :显示某部主机的 /etc/exports 所分享的目录资料。
showmount -e localhost
exportfs -arv

9.如果有其他用户端挂载了你的 NFS 档案系统时,那么该用户端与档案系统资讯就会被记录到 /var/lib/nfs/xtab 里头去的!

tail -f /var/lib/nfs/xtab

10.如果修改 /etc/exports中配置,可以通过exportfs重新挂载

-a :全部挂载(或卸载) /etc/exports 档案内的设定
-r :重新挂载 /etc/exports 里面的设定,此外,亦同步更新 /etc/exports及 /var/lib/nfs/xtab 的内容!
-u :卸载某一目录
-v :在 export 的时候,将分享的目录显示到荧幕上
# 重新挂载一次 /etc/exports 的设定
exportfs -arv

# 全部都卸载
exportfs -auv

11.客户端安装NSF服务

yum -y install nfs-utils rpcbind

12.客户端启动(按顺序)

(centos7)
systemctl start nfs
systemctl start rpcbind
systemctl enable nfs
systemctl enable rpcbind

(centos6)
service nfs start
service rpcbind start
chkconfig nfs on
chkconfig rpcbind on 

13.挂载

mount -t nfs 192.168.107.214:/root/test /root/01-yu/06-test # 192.168.107.214:服务器地址 /root/test:服务器目录 /root/01-yu/06-test:本机目录

14.解除挂载

umount /root/01-yu/06-test # /root/01-yu/06-test:本机上挂载的目录

15.解除挂载显示繁忙 

umount.nfs4: /data/www/ROOT/txt: device is busy

fuser -m -v /data/www/ROOT/txt
    -v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段
    -m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。

/data/www/ROOT/txt:  root     kernel mount /data/www/ROOT/txt
                     root      203349 f.... java
                     root      4070544 ..c.. bash
如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。
kill -9 203349
kill -9 4070544
umount /data/www/ROOT/txt