14.1 NFS介绍
14.2 NFS服务端安装配置
14.3 NFS配置选项
14.1 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的服务端和客服端实现通讯。
假如现在有三台web服务器作负载均衡,要实现让三台web服务器上的存放图片目录保持一致。通常使用的办法是把图片目录拷贝到其他几台服务器上,这样做既浪费带宽也不能保证数据的实时更新,因此使用NFS。当A机器上更新了数据,B和C机器也会马上实时更新。同理,B机器上更新数据,其他两台服务器也可以更新。这样用户访问ABC中一台,数据都是同步的。
工作原理:NFS是属于C/S结构的。NFS服务端上既有NFS服务还要RPC服务,而NFS客户端上也有RPC服务。NFS服务端要给NFS客户端提供服务,需要通过RPC服务来支持,RPC服务是由rpcbind(CentOS5以前叫portmap)来提供支持的.默认NFS是监听任何端口。而RPC服务监听111端口来实现TCP/IP的通讯,当两台机器上的RPC服务通讯后 NFS服务就跟RPC说他要监听哪个端口来传输数据 RPC就会告诉客户端上的RPC 而客户端上就会开启那个端口来实现NFS的通讯。
总之,NFS需要通过PRC协议来通讯
。
14.2 NFS服务端安装配置
这里以192.168.80.102为服务端 192.168.80.100为客户端。NFS的服务端上需要启动NFS和RPC两个服务,而客户端上只需要启动RPC服务即可
步骤
1.服务端上安装nfs-utils包和rpcbind包
1 | [root@localhost ~]# yum install -y nfs-utils |
安装nfs-utils
包的时候已经包含安装了rpcbind
包了 因此只安装nfs-utils
包即可
2.编辑/etc/exports文件
1 | [root@localhost ~]# vim /etc/exports |
/home/nfsdir
表示需要共享的目录 192.168.80.0/24
表示指定给那些机器共享目录可以是IP端,括号里面表示挂载选项和设置
3.新建共享目录和设置目录权限
1 | [root@localhost ~]# mkdir /home/nfsdir/ |
4.启动nfs和rpcbind服务
1 | [root@localhost ~]# systemctl start rpcbind |
14.3 NFS配置选项
参数 | 含义 |
---|---|
rw | 读写 |
ro | 只读 |
sync | 同步模式,内存数据实时写入磁盘 |
async | 非同步模式 |
no_root_squash | 客户端挂载NFS共享目录后,root用户不受限制,权限很大 |
root_squash | 与上面选项相对,客户端上的root用户收到限制,被限定成某个普通用户 |
all_squash | 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户 |
anonuid/anongid | 和上面几个选项搭配使用,定义被限定用户的uid和gid |
NFS客户端安装配置
步骤
1.客户端上安装nfs-utils包
1 | [root@kun0769 ~]# yum install -y nfs-utils |
因为nfs-utils
包包含rpcbind
包 而客户端只有开启rpcbind
服务即可
2.显示NFS服务端共享目录的情况
1 | [root@kun0769 ~]# showmount -e 192.168.80.102 |
错误显示是两台机器网络不通,可以判断是两台机器上的防火墙导致的1
2[root@kun0769 ~]# systemctl stop firewalld
[root@kun0769 ~]# setenforce 0
1 | [root@kun0769 ~]# showmount -e 192.168.80.102 |
可以看到192.168.80.102机器上共享目录是/home/nfsdir
3.挂载共享目录到本地
1 | [root@kun0769 ~]# mount -t nfs 192.168.80.102:/home/nfsdir /mnt/ |
-t
指定文件系统格式
测试
在客户端上在共享目录下创建文件 查看文件属组 并在服务端上查看该文件的属组
客户端1
2
3[root@kun0769 ~]# touch /mnt/hello.txt
[root@kun0769 ~]# ll /mnt/hello.txt
-rw-r--r--. 1 1000 kun1 0 6月 20 23:13 /mnt/hello.txt
服务端1
2[root@localhost ~]# ll /home/nfsdir/hello.txt
-rw-r--r--. 1 mysql mysql 0 6月 20 23:13 /home/nfsdir/hello.txt
可以发型文件是创建时间是一样的 属组的在/etc/exports
配置文件设置好了限制为uid1000的普通用户 这个要看本机的uid为1000的是哪位用户 没有只显示1000