NFS介绍
NFS是Network File System的缩写 ,是在网络层面,NFS(Network File System)网络文件系统会经常用到,用于在网络上共享存储。这样讲,你对NFS可能不太了解,阿铭举一个例子来说明一下NFS是用来做什么的。假如有三台机器A, B, C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A, B, C. 但是使用NFS只需要放到A上,然后A共享给B和C即可,B和C把A共享的目录放在本地,这个动作叫做挂载。访问的时候,B和C是通过网络的方式去访问A上的那个目录的。其主要特点就是允许一个系统和网络上的他人共享目录和文件。
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上的一致
portmap和rpcbind实质是一种东西,rpc服务不监听任何端口,rpcbind监听端口111,NFS借助RPC协议实现通信
portmap是在centos5以及之前的版本叫做portmap,之后叫rpcbind
NFS服务端配置安装配置
准备两台机器,一个作为客户端(192.168.37.132),一个作为服务端(192.168.37.130),在服务端上安装两个包nfs-utils和rpcbind
#yum install -y nfs-utils rpcbind //安装两个包
安装的时候epel会比较慢,我们可以通过编辑yum的配置文件,这样操作
#cd /etc/yum.repos.d/ //进入配置文件内
#mv epel.repo epel.repo.1 //将epel源更换名字,之后下载就比较快
安装完成之后就可以编辑exports
#vim /etc/exports //加入如下内容
/home/nfstestdir 192.168.37.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
这个配置文件就只有简单的一行,分为三段,第一段是要共享的目录,这里我们做实验用的目录还没有创建,第二段是允许访问的主机(可以是一个IP也可以是一个IP段),第三段就是权限,之后会介绍,保存配置文件后,执行如下准备操作
#mkdir /home/nfstestdir //创建分享的目录
#chmod 777 /home/nfstestdir //方便做实验
#systemctl start rpcbind //启动rpcbind
#systemctl start nfs //启动nfs服务,rpcbind默认监听端口111
#systemctl enable rpcbind //设置开机启动
#systemctl enable nfs //设置开机启动
NFS配置选项
rw 读写
ro 只读
sync 同步模式,内存数据实时写入磁盘
async 非同步模式 ,把内存总数据定期写入磁盘
no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大 ,不安全,不建议使用
root_squash 与上面选项相对,客户端上的root用户受到约束,被限定成某个普通用户
all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
客户端的配置
#yum install -y nfs-utils //安装包
安装之后我们不用启动什么服务,查看服务端共享了哪些目录,使用showmount命令
#showmount -e 192.168.37.130 //该ip为NFS服务端的ip
当出现报错的信息时,可能情况时rpcbind没有监听端口111或是防火墙的影响,此时我们关闭客户端和服务端上的防火墙#iptables -F,然后再来执行命令
在客户端挂载NFS
#mount -t nfs 192.168.37.130:/home/nfstestdir /mnt //挂载目录
此时通过命令#df -h就可以看见挂载的目录