14.1 NFS介绍
NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。
NFS原理图:
当A、B、C三台机器访问同一个文件的时候,必须保证得到的文件是一致的。
例如:A机器上面的sdb1通过NFS服务共享给B和C机器,这样实现负载均衡,A上更新了文件,B和C机器能够立刻看到;B或者C机器更新了文件,A机器也能立马收到。
14.2 NFS服务端安装配置
准备两台机器:A机器为服务端、B机器为客户端。
A机器安装nfs-utils、rpcbind:
yum install -y nfs-utils rpcbind
B机器安装nfs-utils:
yum install -y nfs-utils
编辑配置文件:/etc/exports,增加几行配置
/home/nfstestdir //要分享的目录
IP 192.168.87.0/24 (rw,sync,all_squash,anonuid=1000,nongid=1000) //指定能够访问共享目录的ip和相关的权限
创建分享的目录:该权限为777
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
启动rpcbind服务:
systemctl start rpcbind //111端口
启动nfs:
systemctl start nfs
设置开机启动nfs:
systemctl enable nfs
14.3 NFS挂载配置选项
/etc/exports,增加几行配置,其中访问权限:
rw:读写 ro:只读
sync:同步模式,内存数据实时写入磁盘,会降低磁盘效率
async:非同步模式,隔一段时间才写入磁盘,但是容易丢失数据
no_root_squash:客户端挂载共享目录后,root用户不收约束
root_squash:客户端上的root用户被限定为某个普通用户
all_squash:客户端上的所有用户,都被限定为一个普通用户
anonuid、anongid和squash一起使用,定义被限定为指定哪个普通用户的uid和gid
客户端B机器的配置: 连接服务端A机器:
show mount -e 192.168.87.128 //服务端的ip
此时如果报错:可能有以下原因
1、A机器的nfs服务没启动
2、网络不通,可以telnet一下
3、A和B的防火墙、selinux其中一个没有关闭
systemctl stop firewall
setenforce 0
再连接一下A机器服务端:就能看到A机器上的分享目录了
shwo mount -e 192.168.87.128
挂载A机器上的分享目录:
mount -t nfs 192.168.87.128:/home/nfstestdir /mnt/
df -h //查看是否挂载成功
然后B机器就能够在/mnt/目录 下操作A机器上的分享目录了
在B机器上,创建一个文件:
touch a
ls -l a //显示的文件a的主和组,是uid=1000,gid=1000的用户和组。即是A机器上配置文件里定义的anonudi=1000,anongid=1000的用户。