nfs原理
1.开启RPC服务
2.NFS向RPC服务注册启动的端口
3.用户向RPC询问NFS服务的端口
4.RPC返回端口给客户端
5.客户端通过获得的端口与NFS服务器进行数据传输
实验步骤
一、准备
1.检查系统版本信息
2.检查是否安装nfs和rpc服务
3.安装服务
二、配置
1.启动rpc服务和nfs服务
2.查看nfs是否有向rpc注册端口
3.设置开机自启动
4.编辑nfs配置文件,并重启服务
5.在客户端进行挂载
三、测试
1.测试客户端与服务端的连通性
2.在分享目录内创建文件并在客户机上测试
详细配置:
注意:关闭selinux和iptables
服务端:
检查系统版本
[root@nfsclient ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@nfsclient ~]# uname -r
2.6.32-642.el6.x86_64
[root@nfsclient ~]# uname -m
x86_64
检查是否安装服务
[root@nfsserver ~]# rpm -aq nfs-utils rpcbind
安装服务
#这里可以有两种方法,一种是正常yum安装,另一种是yum组安装
#分别在服务端和客户端使用这两种方法
[root@nfsserver ~]# yum install nfs-utils rpcbind -y
启动rpc服务
#必须先开启rpc服务,在开启nfs服务,否则nfs服务会启动不了,并且可能会发生错误
[root@nfsserver ~]# /etc/init.d/rpcbind restart
Stopping rpcbind: [ OK ]
Starting rpcbind: [ OK ]
[root@nfsserver ~]# ps -ef |grep rpc
rpcuser 1258 1 0 18:36 ? 00:00:00 rpc.statd
rpc 1630 1 0 18:53 ? 00:00:00 rpcbind
root 1634 1546 0 18:54 pts/0 00:00:00 grep --color=auto rpc
#检查nfs是否有向rpc注册端口
[root@nfsserver ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
#此处结果显示表示rpc自己使用的端口
[root@nfsserver ~]# rpcinfo -p localhost
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
#此处即为rpc没有开启而产生的报错
开启nfs服务
[root@nfsserver ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@nfsserver ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 44683 mountd
100005 1 tcp 53742 mountd
100005 2 udp 45815 mountd
100005 2 tcp 37259 mountd
100005 3 udp 43988 mountd
100005 3 tcp 48220 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 43032 nlockmgr
100021 3 udp 43032 nlockmgr
100021 4 udp 43032 nlockmgr
100021 1 tcp 52980 nlockmgr
100021 3 tcp 52980 nlockmgr
100021 4 tcp 52980 nlockmgr
#这种输出才是nfs向rpc注册端口后的结果,由于nfs提供多种服务,所以会申请多个端口
#还可以在/etc/sysconfig/nfs中设定监听端口,便于iptbales的书写
echo"LOCKD_TCPPORT=32803" >>/etc/sysconfig/nfs
将rpc和nfs设置为开机自启动
[root@nfsserver ~]# chkconfig nfs on
[root@nfsserver ~]# chkconfig rpcbind on
[root@nfsserver ~]# chkconfig --list nfs
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@nfsserver ~]# chkconfig --list rpcbind
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#其实查看/etc/init.d/nfs | rpcbind即可得知,rpc于nfs先启动,后关闭
配置nfs服务并重启
[root@nfsserver ~]# mkdir /data
[root@nfsserver data]# chown -R nfsnobody.nfsnobody /data/
#如果没有修改共享目录的属主,则可能会出现如下报错
#touch: cannot touch `hehe': Permission denied
#实际上nfs在开启服务后会自动创建nfsnobody这个用户,可在/var/lib/nfs/etab 查看默认设置
[root@nfsserver ~]# cat /etc/exports
##share my miss for glx at 2017/09/13
/data 192.168.1.0/24(rw,sync)
[root@nfsserver ~]# /etc/init.d/nfs reload
#ps:reload平滑重启不会影响正在访问客户
#ps:查看/etc/init.d/nfs可以得到,reload等同于/usr/sbin/exprotfs -r