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 `(不是很重要的挂载不建议这样,如果挂载不上会导致服务器启动不了)