系统环境: [root@linuxidc ~]# cat /etc/RedHat-release ##查看系统版本信息 CentOS release 6.7 (Final) [root@linuxidc ~]# uname -r ##查看内核信息 2.6.32-573.el6.x86_64 [root@linuxidc ~]# uname -m ##查看系统是32位还是64位的 x86_64

服务端配置 在启动NFS服务之前,首先要启动RPC服务(CentOS5是portmap服务,CentOS6.6以后的版本是rpcbind服务),否则NFS服务器无法向RPC服务注册。另外,RPC服务如果重启,原来以及有的NFS端口就会丢失,因此,只要RPC服务重启,NFS服务就要重启向RPC重新注册新的随机端口号。一般修改NFS配置文件后,不需要重启服务,直接平滑重启即可,命令:/etc/init.d/nfs reload或者exportfs -rv就可以修改/etc/exports生效。

  /etc/init.d/nfs reload的作用是:让已经到达服务器的请求给他处理完毕,但是没有到达服务器的请求,就把它断掉。就相当于我们去车站坐车,车子即将出发时,已经上车的就可以正常出发,没有赶上车的就没有办法跟车出发。

要部署NFS服务,需要安装下面的软件包: 1)nfs-utils:NFS服务的主程序 2)rpcbing:NFS可以视为一个RPC的主程序,在启动任何一个RPC程序之前,需要做好端口和功能的对应映射工作

1)查看NFS的软件包 [root@linuxidc ~]# rpm -qa nfs-utils rpcbind

nfs和rpc默认是没有安装的,需要yum安装

2)CentOS6.7默认没有安装软件包,可以使用yum install nfs-utils rpcbind -y命令来安装NFS软件 [root@linuxidc ~]# yum install nfs-utils rpcbind -y [root@linuxidc ~]# rpm -qa nfs-utils rpcbind nfs-utils-1.2.3-70.el6_8.2.x86_64 rpcbind-0.2.0-12.el6.x86_64

3)启动NFS服务 第一步:先启动rpc服务 [root@linuxidc ~]# /etc/init.d/rpcbind start #启动rpc服务 [root@linuxidc ~]# /etc/init.d/rpcbind status #查看rpc服务状态 rpcbind (pid 4269) 正在运行...

第二步:启动NFS服务 [root@linuxidc ~]# /etc/init.d/nfs start #启动nfs服务 [root@linuxidc ~]# /etc/init.d/nfs status #查看nfs服务状态 rpc.svcgssd 已停 rpc.mountd (pid 3282) 正在运行... nfsd (pid 3298 3297 3296 3295 3294 3293 3292 3291) 正在运行... rpc.rquotad (pid 3277) 正在运行...

必须要先启动rpc服务,然后再启动NFS服务,如果先启动NFS服务,启动服务时会失败,提示如下 [root@linuxidc ~]# /etc/init.d/nfs start 启动 NFS 服务: [确定] 关掉 NFS 配额:无法注册服务: RPC:无法接收; errno = 拒绝连接 rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp). [失败] 启动 NFS mountd: [失败] 启动 NFS 守护进程:

[root@linuxidc ~]# rpcinfo -p 172.16.1.31 #查看NFS服务向rpc注册的端口信息,主端口号是:111 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 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tc p 875 rquotad 100011 2 tcp 875 rquotad

第三步:检查开机是否自启动

[root@linuxidc ~]# chkconfig nfs on [root@linuxidc ~]# chkconfig rpcbind on [root@linuxidc ~]# chkconfig --list nfs nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@linuxidc ~]# chkconfig --list rpcbind rpcbind 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@linuxidc ~]# tail -2 /etc/rc.local
/etc/init.d/rpcbind start /etc/init.d/nfs start

在工作中,大都是统一按照运维规范将服务的启动命令放到/etc/rc.local里面,而不是用chkconfig来管理的,所有的服务一旦开机自启动就必须放到/etc/rc.local中。这样的好处是,一旦管理此服务器的人员离职忙活着业务迁移都可以通过/etc/rc.local很容易的查看到服务器对应的相关服务,可以方便的运维管理。

4)NFS服务端配置文件的配置 NFS默认配置文件路径是:/etc/exports,文件默认是空的。

/etc/exports配置文件的格式是: NFS共享的目录 NFS客户端地址(参数1,参数2) 123456 [root@linuxidc ~]# cat /etc/exports
#share /data by linuxidc for bingbing at 20160425
/data 172.16.1.0/24(rw,sync) ##一条配置搞定NFS配置文件 其中:/data是服务器端共享的目录 172.16.1.0/24共享目录的客户端ip地址 (rw,sync) ,其中rw代表拥有读写的权限,sync代表数据同步写入NFS服务器端的硬盘中。也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。

v NFS共享的目录:为NFS服务器端要共享的实际目录,要用决定路径,如(/data)。注意共享目录的本地权限,需要读写权限,一定要让本地目录可以被NFS客户端的用户读写 v NFS客户端地址:为NFS服务器端授权的可访问的共享目录的NFS客户端地址,可以为单独的ip地址或者主机名,域名等,也可以是整个网段的地址。 创建/data目录,并且属主和属组都为:nfsnobody,其中nfsnobody是安装nfs服务时默认的用户 [root@linuxidc ~]# mkdir /data -p [root@linuxidc ~]# chown -R nfsnobody:nfsnobody /data [root@linuxidc ~]# ls -ld /data drwxr-xr-x 6 nfsnobody nfsnobody 4096 12月 8 20:17 /data [root@linuxidc ~]# /etc/init.d/nfs reload [root@linuxidc ~]# showmount -e 172.16.1.31 ##本地测试,说明服务端测试成功 Export list for 172.16.1.31: /data 172.16.1.0/24

客户端配置

1.客户端和服务端一样,也要安装nfs和rpm的安装包。(配置见服务器端) 2.客户端需要启动rpc服务,加入开机自启动,不需要启动nfs服务。(配置见服务器端) 3.测试: 第一步:ping,能不能ping通服务器端ip地址 [root@linuxidc ~]# ping 172.16.1.31 PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data. 64 bytes from 172.16.1.31: icmp_seq=1 ttl=64 time=0.383 ms 64 bytes from 172.16.1.31: icmp_seq=2 ttl=64 time=0.434 ms 64 bytes from 172.16.1.31: icmp_seq=3 ttl=64 time=0.420 ms 64 bytes from 172.16.1.31: icmp_seq=4 ttl=64 time=0.437 ms 64 bytes from 172.16.1.31: icmp_seq=5 ttl=64 time=0.439 ms ^C --- 172.16.1.31 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4997ms rtt min/avg/max/mdev = 0.383/0.422/0.439/0.030 ms

第二步:telnet服务端的111端口 [root@linuxidc ~]# telnet 172.16.1.31 111 Trying 172.16.1.31... Connected to 172.16.1.31. Escape character is '^]'.

第三步:showmount服务端

[root@linuxidc ~]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /data 172.16.1.0/24

第四步:挂载,文件共享 [root@linuxidc ~]# mount -t nfs 172.16.1.31:/data/ /mnt

第五步:查看是否挂载成功了 [root@linuxidc ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.5G 6.9G 18% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 36M 145M 20% /boot 172.16.1.31:/data/ 8.8G 1.5G 7.0G 18% /mnt