一、NFS 简介
(1) NFS 网络文件系统,主要功能是通过网络让不同的主机系统之间可以共享文件或目录,类似于 Windows 中的网络驱动器映射
(2) NFS 客户端可以通过挂载的方式将 NFS 服务器端共享的数据目录挂载到 NFS 客户端本地系统中
(3) NFS 网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,NFS 架构图
(4) NFS 客户端是如何知道 NFS 服务端使用的是哪个端口呢,答案就是通过 RPC 服务(RPC,远程过程调用),因为 NFS 支持的功能较多,每启动一个功能就会启用一个随机端口来作为传输之用,当 NFS 服务端启动功能时会主动向 RPC 服务注册取用相关端口及功能信息,RPC 服务最主要的功能就是记录每个 NFS 功能所对应的端口号,并且在 NFS 客户端请求时将该端口和功能对应的信息传递给请求数据的 NFS 客户端,类似于 NFS 客户端和 NFS 服务端的中介,在启动 NFS 服务之前要先启动 RPC 服务
二、NFS 工作流程
(1) 首先用户访问网站程序,网站程序在 NFS 客户端上发起存取 NFS 文件的请求
(2) NFS 客户端的 RPC 服务会通过网络向 NFS 服务端的 RPC 服务发出 NFS 文件存取功能的询问请求
(3) NFS 服务端的 RPC 服务找到对应的已注册的 NFS 端口后,通知 NFS 客户端的 RPC 服务
(4) NFS 客户端把数据存取成功后,返回给前端访问程序,告知用户存取结果
(5) 注意:NFS 的各项功能都需要向 RPC 服务注册,所以只有 RPC 服务才能获取到 NFS 服务的各项功能对应的端口号,也就是说,NFS 需要有 RPC 服务的协助才能成功对外提供服务,在启动 NFS 服务之前要先启动 RPC 服务,客户端无需启动 NFS 服务,但需要启动 RPC 服务
三、NFS 服务端配置
yum install -y nfs-utils rpcbind # 安装 NFS 软件包,nfs-utils 是 NFS 服务的主程序,rpcbind 是 RPC 服务的主程序 /etc/init.d/rpcbind start # 启动 RPC 服务 /etc/init.d/nfs start # 启动 NFS 服务 echo "/etc/init.d/rpcbind start" >> /etc/rc.local # 设置 RPC 服务开机启动 echo "/etc/init.d/nfs start" >> /etc/rc.local # 设置 NFS 服务开机启动
[root@localhost ~]# vim /etc/exports # NFS 配置文件 /data 192.168.5.0/24(rw) # /data 是要共享的目录,10.0.0.0/24 是允许的客户端,(rw) 是权限,表示允许读和写 /home 192.168.5.0/24(ro) # 注意,如果有多个权限用逗号隔开,且不能有空格 [root@localhost ~]# exportfs -rv # 重新加载 NFS 服务,使配置生效
四、NFS 客户端配置
yum install -y rpcbind nfs-utils /etc/init.d/rpcbind start # 只需启动 RPC 服务 setenforce 0 # 关闭 SELinux iptables -F # 关闭防火墙 showmount -e 192.168.5.131 # 查看 NFS 服务端的共享目录 mount -t nfs 192.168.5.131:/data /mnt # 挂载 NFS 共享目录,-t nfs 是挂载的格式类型,表示把远程主机 192.168.5.131 的 /data 目录挂载到本地的 /mnt 目录 echo "/etc/init.d/rpcbind start" >> /etc/rc.local # 设置开机启动并挂载 echo "/bin/mount -t nfs 192.168.5.131:/data /mnt" >> /etc/rc.local df -h # 查看挂载信息