nfs安装和配置

前提

最近项目做负载均衡的时候多个服务之间的数据需要同步,同步的方案有:
1.NFS文件挂载
2.rsync等数据同步工具
3.fastdfs分布式文件系统
考虑到易用性以及文件不会太多,将每个服务的数据挂载到同一个地方是最简单的方法了。

NFS简介

NFS是Network File System的缩写,即网络文件系统。客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。

NFS工作流程

1、由程序在NFS客户端发起存取文件的请求,客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出文件存取功能的请求。
2、NFS服务端的RPC找到对应已注册的NFS端口,通知客户端RPC服务。
3、客户端获取正确的端口,并与NFS daemon联机存取数据。
4、存取数据成功后,返回前端访问程序,完成一次存取操作。

centos7下配置nfs并远程挂载
首先检查是否缺少基础环境

rpm -qa | grep nfs-utils
rpm -qa | grep rpcbind

没有则通过以下命令安装

yum -y install nfs-utils rpcbind

开机启动

systemctl enable rpcbind
systemctl enable nfs-server
#取消开机启动
systemctl disable rpcbind
systemctl disable nfs-server

查看服务状态及启动命令

systemctl status rpcbind
systemctl status nfs

systemctl start rpcbind
systemctl start nfs

创建共享目录并配置权限

mkdir /data/images
chmod 777 -R /data/images

配置NFS服务

vi /etc/exports

#内容为
#[共享目录]   [客户端地址1(参数1,参数2,...)]        [客户端地址2(参数1,参数2,...)] ,例如
/data/images 192.168.126.0/24(rw,sync,all_squash)

#设置并保存成功后执行exportfs -r命令刷新

配置详解

1.共享目录要用绝对路径,可被nfsnobody读写

2.NFS客户端地址:
指定IP: 192.168.0.1
指定子网所有主机: 192.168.126.0/24
指定域名的主机: test.com
指定域名所有主机: *.test.com
所有主机: *

3.参数:
ro:目录只读
rw:目录读写
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
no_all_squash:与all_squash取反(默认设置)
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
no_root_squash:与rootsquash取反
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户

NFS其它常用目录

/usr/sbin/exportfs NFS服务的管理命令 
/usr/sbin/showmount 客户端的查看命令 
/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值 
/var/lib/nfs/xtab 记录曾经登录过的客户端信息

相关命令

exportfs -r    #修改了/etc/exports后立即生效
nfsstat       #查看NFS的运行状态
rpcinfo     #查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序
showmount -e ip   #显示此IP地址分享出来的目录

挂载测试

#当修改了服务配置并生效后,我们就可以挂载相应的目录到共享目录,nfs服务再101,我们在102执行以下命令
mount -t nfs 192.169.126.101:/data/images /data/images

df -h   #查看挂载情况,挂载成功则可以新增数据测试数据是否同步

umount /data/images    #卸载挂载
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章