一:NFS介绍
1.什么是NFS?
NFS是Network File System(网络文件系统)。
主要功能是通过网络让不同的服务器之间可以共享文件或者目录。NFS客户端一般是应用服务器(比如web,负载均衡等),可以通过挂载的方式将NFS服务器端共享的目录挂载到NFS客户端本地的目录下,像访问本地目录一样访问挂载的远程目录。
2.工作原理:
NFS服务本身监听port=2049,支持的功能非常多。需要开启的端口port也非常多。需要由RPC协助。
NFS在文件传送过程中依赖与RPC(Remote Procedure Call -- 远程过程调用)协议, 端口号 port =111;
--RPC的作用:指定NFS各个功能对应的端口号,然后通知给客户端,让客户端连接到正确的端口。
NFS本身是没有提供信息传送的协议和功能的,但是能够用过网络进行图片,视频,附件等分享功能。
只要用到NFS的地方都需要启动RPC服务,不论是NFS的服务端还是客户端。
NFS和RPC的关系:
可以理解为NFS是一个网络文件系统(比喻为租房的房主),而RPC是负责信息的传输(中介),客户端(相当于租房的租客)
NFS : 处理客户端的数据请求。
RPC: 处理客户端的连接请求。
第一步:启动RPC服务;
第二步:启动NFS服务;
第三步:客户端发消息给RPC服务,请求NFS服务;
第四步:RPC把端口和IP地址给NFS客户端;
第五步:NFS客户端拿着端口和地址请求服务挂载,可进行文件或目录的传输;
注意:NFS启动前RPC必须要启动;RPC重启后必须重启NFS
二:所需要的软件
操作环境: CentOS Linux release 7.5.1804 (Core)
服务端: 需要安装以下软件包,并开启服务
rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)
nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)
客户端:需要开启rpcbind服务,nfs-utils只要安装就可以
rpcbind: 这个是CentOS6.X的RPC主程序(CentOS5.X的为portmap)
nfs-utils: 这个是NFS服务主程序(包含rpc.nfsd、rpc.mountd、daemons)
可以通过 yum 等工具在线安装(需要主机可以联网),如:yum -y install rpcbind nfs-utils
也可通过rpm工具安装(需要先下载相关rpm软件包),如:rpm -ivh rpcbind*.rpm nfs-utils*rpm
systemctl enable rpcbind.service ## 设置重启/开机后自动启动rpcbind服务
systemctl restart rpcbind.service ## 重启rpcbind服务
systemctl enable nfs.service ## 设置重启/开机后自动启动nfs服务
systemctl restart nfs.service ## 重启nfs服务
NFS 服务端 配置文件的配置
NFS默认配置文件路径是:/etc/exports,文件默认是空的。
/etc/exports配置文件的格式是:
NFS共享的目录 NFS客户端地址(参数1,参数2[,参数n])
[root@linuxidc ~]# cat /etc/exports
#share /data by linuxidc for bingbing at 20160425
/nfs/share 192.168.137.0/24(rw,no_root_squash,no_all_squash,sync) ##一条配置搞定NFS配置文件
其中:/nfs/share 是服务器端共享的目录
192.168.137.0/24是共享目录 允许 的客户端ip地址
(rw,no_root_squash,sync) ,其中rw代表拥有读写的权限,no_root_squash代表不把root用户映射成nfsnobody用户;
sync代表数据同步写入NFS服务器端的硬盘中,也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。
[root@vm201 log]# showmount -e localhost ## 测试本机挂载情况,也可以用本机 IP : showmount -e ip
Export list for localhost:
/nfs/share 192.168.137.0/24
客户端配置
[root@vm111 ~]# showmount -e 192.168.137.201 ## 查看 192.168.137.201 共享的文件
Export list for 192.168.137.201:
/nfs/share 192.168.137.0/24
## 如下命令在客户端挂载服务端共享的文件,
##也可以写在 /etc/fstab 文件里(确定:如果服务端未启动,则客户端重启时可能无法启动)
[root@vm111 /]# mount -t nfs 192.168.137.201:/nfs/share /nfs/clientShare
在服务端查看共享目录的权限:
[root@vm201 share]# cat /var/lib/nfs/etab
/nfs/share 192.168.137.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,no_root_squash,no_all_squash)
/var/lib/nfs/etab 日志文件,记录了NFS共享出来的目录的完整权限的设置值;
/var/lib/nfs/xtab 日志文件,记录了NFS客户端访问NFS服务器的数据信息;