NFS介绍
-
NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步
-
NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,目前最新为4.1版本
-
NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写
-
NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
NFS架构
NFS原理图
服务端的NFS服务监听一个端口通过RPC协议监听的端口,再去告诉客户端RPC协议,然后NFS客户端通过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通信
NFS服务需要借助RPC协议实现通信
NFS服务端安装配置
- yum install -y nfs-utils rpcbind
- vim /etc/exports //加入如下内容
/home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
- 保存配置文件后,执行如下准备操作
- mkdir /home/nfstestdir
- chmod 777 /home/nfstestdir
- systemctl start rpcbind
- systemctl start nfs
- systemctl enable rpcbind
- systemctl enable nfs
准备两台虚拟机,一台作为服务端,一台作为客户端。
分别查看服务端和客户端的IP地址
在服务端上安装两个包,分别为 nfs-utils 和 rpcbind
在客户端上安装nfs-utils 包
安装完成后,编辑文件/etc/exports,添加一行内容,保存退出
创建目录并设定777权限
查看服务端和客户端监听的端口
启动NFS服务并查看
设置开机启动
NFS配置选项
- rw 读写
- ro 只读
- sync 同步模式,内存数据实时写入磁盘,相应的就会降低磁盘效率
- async 非同步模式,它会每隔一段时间才会将数据刷新到磁盘
- no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
- root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
- all_squash 客户端上所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
- anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
客户端挂载NFS,查看客户端是否有权限
出现报错,无法与192.168.133.130通信,是由于防火墙导致的,需要关闭防火墙
关闭防火墙
再查看NFS客户端是否有权限
共享的目录是/home/nfstestdir
在客户端上挂载并查看
在客户端共享的目录下创建文件并查看
到服务端上查看
一旦挂载了NFS的共享目录,不管用哪一个用户来操作,都会用以1000uid和1000gid的用户反映过来。
客户端用户显示aming,而服务端用户显示mysql,是因为NFS上限定了用户。