NFS服务全称是NetWork File System:网络文件系统,最先有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。linux
NFS原理图:网络
当A、B、C三台机器访问同一个文件的时候,必须保证获得的文件是一致的。app
例如:A机器上面的sdb1经过NFS服务共享给B和C机器,这样实现负载均衡,A上更新了文件,B和C机器可以马上看到;B或者C机器更新了文件,A机器也能立马收到。负载均衡
准备两台机器:A机器为服务端、B机器为客户端。async
A机器安装nfs-utils、rpcbind:ui
yum install -y nfs-utils rpcbind
B机器安装nfs-utils:code
yum install -y nfs-utils
编辑配置文件:/etc/exports,增长几行配置blog
/home/nfstestdir //要分享的目录 IP 192.168.87.0/24 (rw,sync,all_squash,anonuid=1000,nongid=1000) //指定可以访问共享目录的ip和相关的权限
建立分享的目录:该权限为777ip
mkdir /home/nfstestdir chmod 777 /home/nfstestdir
启动rpcbind服务:内存
systemctl start rpcbind //111端口
启动nfs:
systemctl start nfs
设置开机启动nfs:
systemctl enable 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
此时若是报错:可能有如下缘由
一、A机器的nfs服务没启动 二、网络不通,能够telnet一下 三、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的用户。