CentOS 6.8配置nfs服务
http://www.aiplaypc.com/215.html

了解一下什么是nfs

网络文件系统(Network FileSystem,NFS),一种使用于分散式文件系统的协议,由升阳公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在Unix系统间实现磁盘文件共享的一种方法。

NFS的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
演示环境介绍

系统:CentOS 6.8
nfs服务器ip:app0-app7 (已写入hosts)
nfs客户端ip:free0
开始安装配置

#安装
yum install nfs-utils rpcbind -y

安装完以后先不急着启动,先来了解一下nfs服务运行在哪些端口上,它默认需要使用5个端口,其中有4个端口是动态的,所以如果服务器和客户端之间有iptables,就要先把这4个动态端口设置成静态的,然后加入进防火墙规则里,需要修改的端口有如下四个(端口可以根据需求改,不一定就和我这一样):

#编辑nfs配置文件
vi /etc/sysconfig/nfs

TCP锁使用端口  LOCKD_TCPPORT=32803
UDP锁使用端口  LOCKD_UDPPORT=32769
挂载使用端口   MOUNTD_PORT=892
状态使用端口   STATD_PORT=662
sed -i s/#LOCKD_TCPPORT/LOCKD_TCPPORT/  /etc/sysconfig/nfs
sed -i s/#LOCKD_UDPPORT/LOCKD_UDPPORT/  /etc/sysconfig/nfs
sed -i s/#MOUNTD_PORT/MOUNTD_PORT/  /etc/sysconfig/nfs
sed -i s/#STATD_PORT/STATD_PORT/  /etc/sysconfig/nfs
grep -E "LOCKD_TCPPORT|LOCKD_UDPPORT|MOUNTD_PORT|STATD_PORT"  /etc/sysconfig/nfs

改好以后保存退出,除了以上四个端口要通过iptables,还有nfs协议端口2049以及rpc的111端口,这样才能顺利的使用nfs服务。

#往iptables里写入规则,让需要的端口通过
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 32769 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT

对一台机器开防火墙

-A INPUT -s xxx.xx.xx.xxx   -j ACCEPT 
#我在/mnt下新建一个目录,并touch一个测试文件test

mkdir /mnt/aiplaypc1
touch /mnt/aiplaypc1/tset

#编辑配置文件,默认是空的
sudo echo  '/log  10x.10x.xx.xx/32(ro,sync,wdelay,root_squash)'  >/etc/exports
vi /etc/exports

#把/mnt/aiplaypc1目录共享给主机,可以写主机名、域名等,使用默认参数```

(ro,sync,wdelay,root_squash)
/data/log-tomcat 10x.xx.xx.xxx/32(ro,sync,wdelay,root_squash)
/log 10x.10x.xx.xxx/32(ro,sync,wdelay,root_squash)
#/mnt/aiplaypc1 192.168.1.0/24(ro,sync,wdelay,root_squash) #也可以对ip段添加,还可以不写ip
echo '/log xxx.xxx.xxx.xxx/32(ro,sync,wdelay,root_squash)' >/etc/exports
echo '/log xxx.xxx.xxx.xxx/32(rw,all_squash,anonuid=0,anongid=0)' >>/etc/exports


    #参数详解
    ro #只读共享
    rw #读写共享

    sync #同步写操作
    async #异步写操作
    wdelay #延迟写操作

    root_squash #屏蔽远程root权限
    no_root_squash #不屏蔽远程root权限
    all_squash #屏蔽所有远程用户的权限

    #准备工作做好了,现在就可以启动服务了。
centos6:
service rpcbind restart
service nfs restart
chkconfig nfs on
chkconfig rpcbind on
centos7:
systemctl enable rpcbind.service
systemctl enable nfs-server.service
systemctl enable nfs-server.service
systemctl start rpcbind.service
systemctl start nfs-server.service

接下来是客户端的操作

    #安装
yum install nfs-utils -y

systemctl enable rpcbind

systemctl start rpcbind

systemctl enable nfs-server

systemctl start nfs-server

mkdir /data/new-logs/xxxxx
#挂载nfs服务器的共享目录到/mnt/aiplaypc2
mount -t nfs xxx.xxx.com:/data/log-tomcat /data/new-logs/xxxxxx/tomcat
fuser -k /data/new-logs/PT-SETTLE-APP01
mount -t nfs xxxx.xxxxx.com:/log    /data/new-logs/xxxxx


    #检查是否读取到了服务器的共享文件,不出意外就可以看到有个test文件
`    ls /data/new-logs/xxxx/tomcat`

    #开机自动挂载
`    echo "mount -t nfs xxxx.xxxx.com:/data/log-tomcat /data/new-logs/xxxx/tomcat nfs defaults 0 0" >> /etc/fstab   `(不是很重要的挂载不建议这样,如果挂载不上会导致服务器启动不了)