NFS 文件共享服务

一、NFS

1.1 什么是NFS

NFS(Network File System,网络文件系统)是一种分布式文件系统协议,最初由Sun Microsystems开发,用于在计算机网络上共享文件。NFS 允许用户在不同的机器之间挂载远程文件系统,使得远程文件像本地文件一样访问和操作
NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。 NFS 也是 NAS 存储 设备必然支持的一种协议

1.2 NFS 基本的原理

NFS 服务器:负责共享其本地文件系统,使其在网络上可访问

NFS 客户端:通过网络挂载来自 NFS 服务器的文件系统,并将其集成到本地文件系统中

1.3 NFS 的常见使用场景

  1. 文件共享:在多个用户和设备之间共享文件,简化协作和数据访问。
  2. 备份与恢复:集中存储备份数据,方便快速恢复。
  3. 虚拟化与云计算:为虚拟机或容器提供共享存储,支持动态资源分配。
  4. 大数据处理:在集群计算环境中共享数据,提高数据处理效率。

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.客户端配置
首先先验证一下服务有没有安装

客户端验证共享

下载httpd服务

将服务端的/opt/web 挂载到/var/www/html

我们在客户端生成的目录和内容在服务端同步:

开启web服务之后可以成功访问网页内容:

2.2 NFS 工作流程总结:

挂载

客户端通过 mount命令挂载远程 NFS 文件系统

客户端向 NFS 服务器发送挂载请求,服务器验证并返回确认信息

文件操作

一旦挂载成功,客户端可以执行各种文件操作(如读、写、打开等)

每个文件操作通过 RPC 请求发送到 NFS 服务器

数据传输

NFS 服务器处理请求并返回操作结果或数据。客户端将这些数据集成到本地文件系统,用户无感知地进行操作。

相关推荐
m0_7482402536 分钟前
前端如何检测用户登录状态是否过期
前端
black^sugar37 分钟前
纯前端实现更新检测
开发语言·前端·javascript
寻找沙漠的人1 小时前
前端知识补充—CSS
前端·css
GISer_Jing1 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
m0_748245522 小时前
吉利前端、AI面试
前端·面试·职场和发展
理想不理想v2 小时前
webpack最基础的配置
前端·webpack·node.js
pubuzhixing2 小时前
开源白板新方案:Plait 同时支持 Angular 和 React 啦!
前端·开源·github
cominglately2 小时前
centos单机部署seata
linux·运维·centos
魏 无羡2 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse2 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos