一、NFS
1.1 什么是NFS
NFS(Network File System,网络文件系统)是一种分布式文件系统协议,最初由Sun Microsystems开发,用于在计算机网络上共享文件。NFS 允许用户在不同的机器之间挂载远程文件系统,使得远程文件像本地文件一样访问和操作
NFS
主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS
也是
NAS
存储 设备必然支持的一种协议
1.2 NFS 基本的原理
NFS 服务器:负责共享其本地文件系统,使其在网络上可访问
NFS 客户端:通过网络挂载来自 NFS 服务器的文件系统,并将其集成到本地文件系统中
1.3 NFS 的常见使用场景
- 文件共享:在多个用户和设备之间共享文件,简化协作和数据访问。
- 备份与恢复:集中存储备份数据,方便快速恢复。
- 虚拟化与云计算:为虚拟机或容器提供共享存储,支持动态资源分配。
- 大数据处理:在集群计算环境中共享数据,提高数据处理效率。
1.4 NFS 实现原理
NFS
服务的实现依赖于
RPC
(
Remote Process Call
,远端过程调用)机制,以完成远程到本地的映射过程,在 CentOS 7
系统中,需要安装
nfs-utils
、
rpcbind
软件包来提供
NFS
共享服务,前者用于
NFS 共享发布和访问,后者用于 RPC
支持手动加载 NFS
共享服务时,应该先启动
rpcbind
,再启动
nfs
NFS端口号2049 ;RPC端口号111
1
、假如访问的是
NFS
客户端,先调用不同的函数(例如
Read()
函数,读功能、
Write()
函数,写功能、 Create()函数,创建功能、
Remove()
函数、删除功能、
Rename()
函数,重命名功能)对数据进行处理
2
、调用完函数后,首先
NFS
客户端会建立
TCP
连接,通过
TCP/IP
的方式传递给
NFS
服务端,连上远端的服务器。
3
、接着
NFS
服务端接收到请求后,
NFS
服务器会做
3
步系列操作(环环相扣,先映射端口,然后验证是 否能登录服务器,最后验证文件使用权限),如下: 首先,调用portmap
进程进行端口映射。
接着,调用
Rpc.nfsd
进程来验证
NFS
客户端是否拥有对应的权限连接
NFS
服务端。
最后,调用
Rpc.mount
进程来验证客户端是否拥有对应的文件使用权限;
4
、
Portmap
进程实现用户映射和压缩
5
、最后
NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件
二、NFS文件共享系统实验步骤
2.1 NFS 部署思路以及步骤
部署思路:
1 、安装 nfs 和 rpcbind 软件2 、修改配置文件设置共享3 、创建共享目录4 、开启服务5 、客户端验证共享目录可访问
部署步骤:
1.服务端配置
先检测一下服务有没有安装
vim /etc/exports #NFS 的配置文件为/etc/exports,文件内容默认为空
rw 表示可以读写;sync 表示同步;
no_root_squash
表示当客户机以
root
身份访问时赋予本地
root权限(默认是root_squash)
按顺序开启 rpcbind ;nfs 服务:
showmount -e localhost 可以查看共享是否成功:
2.客户端配置
首先先验证一下服务有没有安装
![](https://i-blog.csdnimg.cn/direct/4bebfb3581474ddc95311b78cf703e90.png)
客户端验证共享
下载httpd服务
将服务端的/opt/web 挂载到/var/www/html
我们在客户端生成的目录和内容在服务端同步:
开启web服务之后可以成功访问网页内容:
2.2 NFS 工作流程总结:
挂载
客户端通过 mount命令挂载远程 NFS 文件系统
客户端向 NFS 服务器发送挂载请求,服务器验证并返回确认信息
文件操作
一旦挂载成功,客户端可以执行各种文件操作(如读、写、打开等)
每个文件操作通过 RPC 请求发送到 NFS 服务器
数据传输
NFS 服务器处理请求并返回操作结果或数据。客户端将这些数据集成到本地文件系统,用户无感知地进行操作。