1、NFS介绍
NFS是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
(1)NFS在企业中的应用场景
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里, 然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资源。
(2)企业生产集群为什么需要共享存储角色
A用户上传图片到Web1服务器,然后让B用户访问这张图片,结果B用户访问的请求分发到了Web2,因为Web2上没有这张图片,这就导致它无法看到A用户上传的图片,如果此时有一个共享存储,A用户上传图片的请求无论是分发到Web1还是Web2上,最终都会存储到共享存储上,而在B用户访问图片时,无论请求分发到Web1还是Web2上,最终也都会去共享存储上找,这样就可以访问到需要的资源了。
负载均衡器,平衡web服务器上的压力,将客户端的访问压力分摊给多个服务器,多个服务器一起承担。
2、NFS系统原理介绍(①rpcbind ②nfs)
(1)NFS工作流程图
![](https://i-blog.csdnimg.cn/blog_migrate/46e895577b34f1d798cc5282def86d44.png)
(RPC Remote Procedure Call,远程过程调用)
(2)NFS的工作流程原理
①先启动RPC服务
②启动NFS服务,向RPC服务注册启动的端口
③客户端请求NFS服务
④返回端口到客户端
⑤拿着地址端口请求传输数据
3、NFS服务端部署环境准备
(1)软件的安装
需要安装nfs-utils和rpcbind软件
(2)启动NFS相关服务(注册的过程)
①启动rpcbind
![](https://i-blog.csdnimg.cn/blog_migrate/01c9b52323f536b0a9aa462d6eff04c8.png)
RPC监听端口111
②启动NFS服务
![](https://i-blog.csdnimg.cn/blog_migrate/036e00ef5ad164cde1b221af2e0f89d3.png)
③配置NFS服务端服务开机自启动
![](https://i-blog.csdnimg.cn/blog_migrate/d0f73611cc7479e020f8d4b788bde17e.png)
/etc/rc.local个人配置脚本文件中,先设置rpcbind,再设置NFS
(3)配置NFS服务端
①NFS配置文件路径
默认是/etc/exports,并且默认是空的
②配置文件格式
![](https://i-blog.csdnimg.cn/blog_migrate/5cda93ea1b2b23470a6ff279a31c43fa.png)
/data :共享目录路径
192.168.204.0/24 :允许挂载我的共享目录的IP地址段
(rw) :可读可写
(sync):实时同步
修改完配置文件以后必须重启nfs服务
![](https://i-blog.csdnimg.cn/blog_migrate/a24bd6da63a00ae6ad9c13850d0c4e18.png)
(4)给共享目录更改属主和属组为nfsnobody
![](https://i-blog.csdnimg.cn/blog_migrate/5d19a12ea3b007d67ff53cb2f0f992ae.png)
root降权模式(root_squash),任何用户向共享目录中存东西,默认是程序用户的权限。
(5)进行本地挂载测试
![](https://i-blog.csdnimg.cn/blog_migrate/9a8b0247b9d6bc4307bfaad924508870.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fa7a61b3c7d9834a451d0b4c3ba08599.png)
如果挂载出现卡的现象,进入/etc/ssh/sshd_config,将第81行和122行yes改为no
4、配置NFS客户端
(1)客户端必须安装nfs-utils软件(这个软件中本身就包含rpc客户端,客户端不需要监听某个端口,故不用装rpcbind)
(2)检查远端showmount,是否有网可用
(3)配置开机自动挂载nfs共享目录
配置客户端mount挂载命令使挂载开机自动执行,这里有两种方法,如下:
第一种方法:将挂载命令放在/etc/rc.local里
缺点:偶尔开机挂载不上,工作中除了开机自启动配置,还要对是否挂载做监控
- echo "mount -t nfs 172.16.1.31:/data /mnt"
第二种方法,将挂载命令放在/etc/fstab里
- [root@web01 ~]# tail -1 /etc/fstab
- 172.16.1.31:/data /mnt nfs defaults 0 0
- fstab会优先于网络被Linux系统加载。网络没启动时执行fstab会导致连不上NFS服务器端,无法实现开机挂载。而且,即使是本地的文件系统,也要注意,fstab最后两列要设置0 0.否则有可能导致无法启动服务器的问题。
- 因此,nfs网络文件系统最好不要放到fstab里实现开机挂载。
-
但是,如果是在开机自启动服务里设置并启动了netfs服务(强制让操作系统再次读取fstab这个文件),放入fstab里也是可以开机挂载的。