一、NFS介绍
1.什么是NFS
NFS是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。
NFS客户端(一般为应用服务器,如Web)可以通过挂载方式将NFS服务端共享的数据目录挂载到NFS本地客户端
2.NFS共享存储服务的应用
将数据存储到一台服务器上,实现数据统一一致,共享访问。
NFS存储服务器中主要存储哪些信息:用户上传的图片 音频 视频 附件等信息
NFS服务是分为服务端和客户端(NFS服务端—存储服务器;NFS客户端:网站web服务器)
实现共享存储好处:
1). 实现数据统一一致
2). 节省网站磁盘资源
3). 节省网站访问带宽
二、NFS系统原理介绍
1. NFS共享存储服务系统挂载结构图解与介绍:
1). nfs服务端创建共享存储目录
2). nfs客户端创建远程挂载点目录
3). nfs客户端进行远程挂载
4). 实现客户端数据信息统一一致
如图所示,在NFS服务端设置好一个共享目录后,其他有权限访问NFS服务器端的客户端都可以将这个共享目录挂载到本地客户端的某个挂载点上。客户端挂载完毕后,就进入到NFS客户端挂载点所在的目录,此时可看到NFS服务器端的共享目录下的所有数据。
2. NFS共享文件系统RPC服务
1)RPC服务的由来:NFS服务支持的功能相当多,而不同的功能会使用不同的程序启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口无法固定,它会随机取用一些未被使用的端口作为传输之用。因为端口不固定,会造成NFS服务端与NFS客户端的通信障碍。因为NFS客户端必须要知道NFS服务端的数据传输端口才能进行通信,才能交互数据。要解决这个问题就需要通过远程过程调用RPC服务。
2)RPC服务最主要的功能是记录每个NFS功能对应的端口号,并且在NFS客户端发出请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而保证客户端可以连接到正确的NFS服务端端口上去,达到实现数据传输、交互数据的目的。
3)RPC服务的工作原理
当NFS服务端启动服务时会随机取若干个端口,并主动向RPC服务注册取用的相关端口及功能信息,RPC服务就知道了NFS每个端口对应的NFS功能,然后RPC服务使用固定111端口来监听NFS客户端提交的请求,并将正确的NFS端口信息回复给请求的NFS客户端,如此,NFS客户端就可以与NFS服务端进行数据传输了。
启动NFS服务端之前,首先启动RPC服务。如果RPC服务重启的话,原来已经注册好的NFS端口数据就会丢失,此时,需要RPC服务管理的NFS程序也重新启动重新向RPC服务注册。
注:修改NFS配置文件后,不需要重新启动NFS服务,直接执行命令systemctl reload nfs或者exportfs -rv即可使修改的/etc/exports生效。
3. NFS的工作原理
共享文件系统的工作原理(服务端3步 客户端3步)
服务端做了三件事:
1). 启动rpcbind服务,
2). 启动nfs服务,
3). 将nfs的各个功能对应的端口号、PID、NFS在主机所监听的Ip等信息向RPC进行注册,在nfs服务稳定运行过程中,这些信息只注册一次
客户端做了三件事:
1). 启动rpcbind服务(可选)
2). 确保客户端和服务端网络连接建立成功
3). 执行mount命令进行网络存储挂载
三、NFS共享服务系统部署
1. NFS服务端部署流程:
第一个里程:检查服务软件是否安装
rpm -qa|egrep “nfs-utils|rpcbind”
第二个里程:进行软件服务安装
yum install -y nfs-utils rpcbind
第三个里程:编写nfs服务配置文件
NFS服务的默认配置文件路径为/etc/exports,并且默认文件为空的。
1)exports配置文件格式
/etc/exports文件的两种格式如下:
NFS共享目录 NFS客户端地址1(参数1,参数2,...)客户端地址2(参数1,参数2,...)
NFS共享目录 NFS客户端地址(参数1,参数2,...)
NFS共享目录:为NFS服务器端要共享的实际目录,要绝对路径。注意共享目录的本地权限。如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写
NFS客户端地址:为NFS服务器端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址,还可以用“*”来匹配所有客户端服务器。
权限参数集:对授权的NFS客户端的访问权限设置。(包括nfs权限—配置文件中的rw或者ro,也包括共享目录文件系统权限755还是777)
ro:默认选项,以只读的方式共享。
rw:以读写的方式共享。
root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。
no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户。
all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。
anonuid:设置映射到本地的匿名用户的UID
anongid:设置映射到本地的匿名用户的GID
sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。
async:异步,先将数据写入到内存,在将数据写入到硬盘。
secure:NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项。
insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)
2)异步和同步区别:
第四个里程:创建nfs服务共享目录,并且进行授权
第五个里程:启动nfs和rpc服务
1)启动rpcbind服务
因为NFS及其辅助程序都是基于RPC协议的(使用的端口为111),所以首先要确保系统中运行了rpcbind服务。
2)启动NFS服务
第六个里程:进行服务配置检查
1)检查功能信息是否注册
2)检查是否存在可用的共享目录
2. NFS客户端部署流程
第一个里程:检查服务软件是否安装
rpm -qa|egrep “nfs-utils|rpcbind”
第二个里程:进行软件服务安装
yum install -y nfs-utils rpcbind
第三个里程:进行共享目录挂载
第四个里程:进行共享存储测试
在客户端的挂载目录上创建数据
在客户端的挂载目录上创建数据,在服务端的/data目录下可以看到,实现了数据共享存储
四、NFS服务部署进程信息详述
1. rpc statd <- 检查数据存储一致性
2. rpc.rquotad <- 磁盘配额进程(remote quote server)
3. rpc.mountd <- 权限管理验证等(NFS mount daemon)
4. [nfsd] <- NFS主进程,管理登入,ID身份判别等。
5. rpc.idmapd <- name mapping daemon用户压缩/用户映射(记录)
NFS共享文件系统用户映射过程说明
五、NFS共享文件系统相关重要文件说明
/etc/exports nfs服务主配置文件
/usr/sbin/showmount 查看nfs服务共享目录信息
/usr/sbin/rpcinfo 查看rpc服务中是否有功能信息注册信息
/var/lib/nfs/etab 用于查看nfs服务默认配置信息
/proc/mounts nfs客户端mount挂载参数(可以查看默认挂载参数信息)
六、实践案例
1. NFS exports配置实例说明:
配置例一: /data 172.16.1.0/24(rw,sync)
说明:允许客户端读写,并且数据同步写入到服务器端的磁盘里
注意:24和“(”之间不能有空格
配置例二 /data 10.0.0.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000)
说明:允许客户端读写,并且数据同步写到服务器端的磁盘里,并且指定客户端的用户UID和GID
这种情况针对有多台NFS客户端服务器同时挂载一台NFS服务端服务器上。此时需要在客户端及服务端建立一个统一的NFS用户:名称、UID和GID都相同。
修改共享用户UID为例
a. 在NFS客户端和服务端都创建一个haha的用户和用户组,并指定UID为1002,GID也为1002
b. 部署NFS服务端
c.在NFS客户端上操作测试
配置例三 /home/oldboy 10.0.0.0/24(ro) <-- 是为开发人员想查看线数据准备配置方式
说明:只读共享
2. exports命令说明
exports -r命令相当于systemctl reload nfs,该带参数的命令用于使新加载的配置生效,还可以通过exportfs命令管理当前NFS共享文件系统目录列表。
通过exportfs命令共享NFS存储目录
3. NFS客户端自动挂载部署方法
autofs可以实现当用户访问NFS的时候再进行挂载,如果在指定的时间内没有用户访问NFS,autofs就会将挂载点自动卸载
autofs缺点:当高并发访问时,开始请求的瞬间需要执行挂载,性能较差
实现NFS自动挂载的前提:NFS服务端部署正常,并且能手动完成挂载
在客户端通过配置autofs实现自动挂载
1)autofs软件安装
2)启动autofs服务
3)配置autofs配置文件
4)卸载掉原有的挂载的共享目录信息,创建与配置文件一致的挂载目录
5)利用访问共享目录挂载的切入点实现自动挂载
利用访问共享目录挂载切入点实现自动挂载,一旦进入挂载点,就会自动挂载,退出访问挂载点一会,就会自动卸载
六、NFS共享存储服务知识点总结