运维锅总详解NFS

NFS是什么?如何对NFS进行部署及优化?NFS工作流程是什么?NFS的性能及优缺点是什么?NFS发展历史又是怎样的?希望本文能帮您解答这些疑惑!

一、NFS简介

NFS (Network File System) 是由 Sun Microsystems 在 1984 年开发的一种分布式文件系统协议,允许客户端通过网络访问远程服务器上的文件系统。NFS 被广泛应用于局域网 (LAN) 和广域网 (WAN) 环境中,用于共享文件和数据。以下是 NFS 的一些关键特点和工作原理:

关键特点

  1. 透明性:客户端可以像访问本地文件系统一样访问远程文件系统,无需了解底层的网络传输细节。
  2. 平台兼容性:NFS 支持多种操作系统,包括 Unix/Linux、Windows 和 macOS,提供跨平台的文件共享能力。
  3. 灵活性:支持多种文件系统类型,适用于不同的存储需求。
  4. 安全性:通过 Kerberos 等机制提供身份验证和加密传输,保证数据安全。
  5. 可扩展性:适用于小型局域网和大型分布式网络,能够处理大量并发访问请求。
  6. 简便的管理:通过简单的配置文件和命令行工具,管理员可以方便地配置和管理 NFS 服务。

工作原理

  1. 服务器端配置:在服务器上安装并配置 NFS 服务,指定需要共享的目录,并设置相应的访问权限。
  2. 客户端挂载:客户端通过挂载命令将远程的 NFS 共享目录挂载到本地文件系统中,之后就可以像访问本地文件一样操作该目录。
  3. RPC 机制:NFS 使用远程过程调用 (RPC) 来实现客户端与服务器之间的通信,客户端请求文件操作,服务器执行相应操作并返回结果。
  4. 状态无关:NFS 采用无状态设计,服务器不需要维护客户端的连接状态,每个请求都包含足够的信息以独立处理,从而提高了系统的健壮性和容错能力。
  5. 缓存机制:为了提高访问速度,NFS 客户端通常会缓存文件数据和属性,但这也可能引发一致性问题。NFS 通过租约 (Lease) 和回调 (Callback) 机制来管理缓存一致性。

版本

NFS 有多个版本,每个版本都引入了一些新的特性和改进:

  • NFSv2:最早的稳定版本,支持基本的文件操作。
  • NFSv3:增加了对大文件的支持、异步写入等特性,提高了性能。
  • NFSv4:引入了状态化协议、改进的安全机制、统一的文件锁定和委托机制,进一步提升了性能和安全性。

使用场景

  1. 共享文件存储:在公司内部网络中共享文件和数据。
  2. 备份和恢复:使用 NFS 共享存储进行数据备份和恢复。
  3. 分布式计算:在集群环境中,通过 NFS 共享文件系统来支持分布式计算任务。

总之,NFS 是一种高效、灵活的文件共享解决方案,在各种网络环境中得到了广泛应用。

二、NFS部署及优化

下面是 NFS 部署的详细步骤,包括具体的配置文件示例:

1. 安装 NFS 服务器和客户端

在 NFS 服务器上

对于 Ubuntu/Debian 系统:

sudo apt update
sudo apt install nfs-kernel-server

对于 CentOS/RHEL 系统:

sudo yum install nfs-utils
在 NFS 客户端上

对于 Ubuntu/Debian 系统:

sudo apt update
sudo apt install nfs-common

对于 CentOS/RHEL 系统:

sudo yum install nfs-utils

2. 配置 NFS 服务器

创建共享目录
sudo mkdir -p /mnt/nfs_share
sudo chown nobody:nogroup /mnt/nfs_share
sudo chmod 777 /mnt/nfs_share
编辑 /etc/exports 文件
sudo nano /etc/exports

添加以下内容:

/mnt/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check)
启动并启用 NFS 服务
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server
检查 NFS 共享
sudo exportfs -v

3. 配置 NFS 客户端

创建挂载点
sudo mkdir -p /mnt/nfs_clientshare
挂载 NFS 共享
sudo mount 192.168.1.100:/mnt/nfs_share /mnt/nfs_clientshare

(其中 192.168.1.100 是 NFS 服务器的 IP 地址)

配置开机自动挂载

编辑 /etc/fstab 文件:

sudo nano /etc/fstab

添加以下内容:

192.168.1.100:/mnt/nfs_share /mnt/nfs_clientshare nfs defaults 0 0

4. 测试 NFS 配置

在客户端上,测试读写权限:

cd /mnt/nfs_clientshare
touch testfile
echo "NFS Test" > testfile
cat testfile

5. 优化和安全配置

配置防火墙

确保 NFS 所需的端口被允许通过防火墙。例如,在 Ubuntu 上:

sudo ufw allow from 192.168.1.0/24 to any port nfs
配置用户和权限

根据需求配置共享目录的用户和组权限。确保只有授权用户可以访问。

启用 NFSv4 和 Kerberos 认证

编辑 /etc/idmapd.conf 文件:

sudo nano /etc/idmapd.conf

设置 Domain

[General]
Domain = yourdomain.com

配置 Kerberos 认证,根据具体环境进行设置。

性能优化

编辑 /etc/fstab 文件中的挂载选项:

192.168.1.100:/mnt/nfs_share /mnt/nfs_clientshare nfs rw,sync,noatime,nodiratime 0 0

配置文件示例

/etc/exports 文件:
/mnt/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check)
/etc/fstab 文件:
192.168.1.100:/mnt/nfs_share /mnt/nfs_clientshare nfs defaults 0 0
/etc/idmapd.conf 文件:
[General]
Domain = yourdomain.com

通过以上步骤,您可以成功部署和配置 NFS,并进行优化和安全配置,以满足不同环境的需求。

三、NFS工作流程

NFS 协议涉及服务器和客户端之间的通信,包括文件请求、传输和响应。以下是 NFS 协议工作流程的示例图。

Client Server NFS 工作流程 1. Mount Request 2. Mount Response 3. File Operation Request (e.g., Read/Write) 4. File Operation Response 5. Unmount Request 6. Unmount Response 每个文件操作包括以下步骤 7. Lookup Request 8. Lookup Response 9. Open Request 10. Open Response 11. Read/Write Request 12. Read/Write Response 13. Close Request 14. Close Response Client Server

图解说明

  1. Mount Request:客户端发送挂载请求到 NFS 服务器,请求访问共享目录。
  2. Mount Response:NFS 服务器回应挂载请求,客户端获得访问权限。
  3. File Operation Request:客户端发送文件操作请求(例如读取或写入文件)。
  4. File Operation Response:NFS 服务器处理文件操作请求并返回结果。
  5. Unmount Request:客户端发送卸载请求,结束对共享目录的访问。
  6. Unmount Response:NFS 服务器回应卸载请求。

每个文件操作包括以下步骤:
7. Lookup Request:客户端请求查找文件或目录。
8. Lookup Response:NFS 服务器返回查找结果。
9. Open Request:客户端请求打开文件。
10. Open Response:NFS 服务器回应打开请求。
11. Read/Write Request:客户端请求读取或写入文件。
12. Read/Write Response:NFS 服务器返回读取或写入结果。
13. Close Request:客户端请求关闭文件。
14. Close Response:NFS 服务器回应关闭请求。

通过以上 Mermaid 图和说明,可以清晰地了解 NFS 协议的工作流程。

四、NFS的性能及优缺点

NFS 性能

NFS 的性能取决于多个因素,包括网络带宽、服务器硬件配置、客户端数量、NFS 协议版本以及配置优化等。NFSv4 相较于 NFSv3 有了显著的性能提升,主要得益于其状态化协议、改进的文件锁定机制和更好的缓存管理。

优缺点

优点
  1. 透明性:客户端可以像访问本地文件一样访问远程文件系统。
  2. 跨平台支持:支持多种操作系统,包括 Unix/Linux、Windows 和 macOS。
  3. 灵活性:可以方便地扩展和缩减存储资源。
  4. 简便管理:通过简单的配置文件和命令行工具,可以轻松管理 NFS 服务。
  5. 性能优化:通过配置和调优,可以在不同环境中实现较好的性能。
缺点
  1. 网络依赖:性能和稳定性依赖于网络质量,在网络不稳定或带宽受限的情况下,性能会下降。
  2. 安全性:默认情况下,NFS 的安全机制较弱,需要额外配置 Kerberos 等安全认证机制。
  3. 一致性问题:由于缓存机制,可能会出现数据一致性问题,需要通过配置来管理。
  4. 扩展性限制:在高并发和大规模集群环境中,可能会遇到性能瓶颈,需要使用其他分布式文件系统如 Ceph 或 GlusterFS。

应用场景

  1. 共享文件存储:在公司内部网络中,通过 NFS 共享文件和数据。
  2. 备份和恢复:使用 NFS 共享存储进行数据备份和恢复。
  3. 分布式计算:在集群环境中,通过 NFS 共享文件系统来支持分布式计算任务。
  4. 虚拟化环境:在虚拟化环境中,通过 NFS 共享存储来支持虚拟机的存储需求。
  5. 开发环境:在开发和测试环境中,通过 NFS 共享文件系统,便于多用户协作和共享资源。

总结

NFS 是一种高效、灵活的文件共享解决方案,适用于各种网络环境。尽管有一些局限性,但通过合理的配置和优化,可以在大多数情况下提供稳定和高效的文件共享服务。在选择 NFS 时,需要根据具体的应用场景和需求,权衡其优缺点,并进行相应的配置和调优。

五、NFS发展历史

NFS(Network File System)是由Sun Microsystems在1984年开发的一个分布式文件系统协议,用于允许客户端通过网络访问远程文件系统。

NFS协议的历史演进

  1. NFSv1(1984年)

    • 初始版本,用于内部开发和测试,未被广泛使用。
  2. NFSv2(1989年)

    • 第一个公开发布的版本,广泛使用。
    • 使用UDP作为传输协议,简单且快速。
    • 提供基本的文件操作功能,包括读取、写入、删除和重命名等。
  3. NFSv3(1995年)

    • 增加了对大文件的支持,最大文件大小由2GB提升到更大。
    • 支持异步写入,提高了性能。
    • 增加了64位文件偏移量的支持,解决了大文件访问的问题。
    • 提供更详细的错误报告。
    • 仍使用UDP作为主要传输协议,但也可以使用TCP。
  4. NFSv4(2000年)

    • 引入状态化协议,支持更强的文件锁定和委托机制。
    • 提供更好的安全机制,包括强制的用户认证和文件加密。
    • 统一的命名空间,使得跨服务器的文件系统访问更为简便。
    • 默认使用TCP作为传输协议,提高了可靠性和性能。
    • 集成了NFSv2和NFSv3的功能,简化了客户端和服务器之间的交互。
  5. NFSv4.1(2010年)

    • 引入并行NFS(pNFS),允许客户端并行访问多个存储服务器,提高性能。
    • 增加了会话模型,提高了错误恢复能力。
    • 增强了对集群环境的支持。
  6. NFSv4.2(2016年)

    • 增加了新的文件操作,例如拷贝、读写洞(Sparse File)的支持。
    • 提供更好的空间管理功能,包括预分配和释放存储空间。
    • 增强了安全性和性能。

总结

NFS协议自1984年首次发布以来,经历了多个版本的迭代和改进,每个版本都引入了新的功能和优化,以提高性能、增强安全性和扩展性。NFS已成为一种成熟且广泛应用的分布式文件系统协议,支持跨平台的文件共享,适用于各种网络环境和应用场景。

完。
希望对您有所帮助!关注锅总,及时获得更多花里胡哨的运维实用操作!

六、一个秘密

图片

锅总个人博客

https://gentlewok.blog.csdn.net/

锅总微信公众号

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3269759.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

rem实现屏幕适配(jQuery)

一、rem换算 1.根据视口宽度动态计算字体大小,如果宽度大于750px,则将字体大小设置为100px,否则按比例缩小。 tips:使用时记得引入jQuery.js // 在文档加载完成后执行函数,确保DOM已经准备就绪$(function () {// 定义一个自执行…

二叉树详解-第四篇 二叉树链式结构的实现

目录 1.二叉树的遍历 1.1前序遍历: 1.2 中序遍历: 1.3 后序遍历: 2.二叉树链式结构的实现 2.1 Tree.h 2.2 Tree.cpp 2.2.1 前序遍历 void PreOrder(TNode* Root) 2.2.2 中序遍历 void InOrder(TNode* Root) 2.2.3 后序遍历 void Bac…

【Python实战因果推断】58_因果推理概论8

目录 Identifying the Treatment Effect The Independence Assumption Identification with Randomization Identifying the Treatment Effect 现在你已经理解了问题所在,接下来该看看解决方案(至少是一个解决方案)了。识别(i…

聊一聊知识图谱结合RAG

因为最近在做一些关于提高公司内部使用的聊天机器人的回答准确率,并且最近微软官方也是开源了一下graphrag的源码,所以想聊一聊这个知识图谱结合rag。 rag在利用私有数据增强大模型回答的领域是一种比较典型的技术,也就是我们提出问题的时候&…

网站漏洞扫描软件Burp suite和Xray安装应用及联合使用

目录 1、网站漏洞扫描软件应用-Burp suite 01 burp 扫描工具使用介绍: 02 burp 扫描工具安装过程: 1)获取扫描工具程序包 2)安装部署扫描工具 3)bp安装完毕的基础设置: 3.1)抓取浏览器访…

免费使用正版的Typora教程

1.来到Typora官网下载安装。 Typora官网: https://typoraio.cn/ 2.激活主程序 编辑修改Typora安装目录下文件 下面展示文件目录路径 : D:\SoftWare\Typora1.9.5\resources\page-dist\static\js\LicenseIndex.180dd4c7.4da8909c.chunk.js查找:e.hasAc…

huggingface里的模型如何下载呢?

HF-Mirror加速访问Hugging Face的门户。作为一个公益项目,我们致力于提供稳定、快速的镜像服务,帮助国内用户无障碍访问Hugging Face的资源。https://hf-mirror.com/ pip install -U huggingface_hub export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download

别再浪费时间,快速实施项目管理软件的技巧

国内外主流的10款项目进度管理软件对比:PingCode、Worktile、蓝凌OA、用友、泛微OA、飞书、Asana、Trello、Smartsheet、Jira。 在快节奏的商业环境中,有效地管理项目进度常常是团队成功与否的关键。许多团队面临着项目管理过于复杂,难以迅速…

04 卷积神经网络

目录 1. 基本概念 1.1 卷积神经网络 1.2 卷积 1.3 汇聚(池化) 2. CNN网络架构及参数学习 2.1 网络架构 2.2 参数学习 3. 典型的卷积神经网络 3.1 LeNet-5 3.2 AlexNet 3.3 Inception网络 3.4 残差网络 4. 其他卷积方式 1. 基本概念 1.1 …

ElasticSearch搜索

ES搜索 elastic search 一套搜索引擎技术,主要技术栈包括 Elasticsearch:用于数据存储、计算和搜索 Kibana:用于数据可视化 在数据库模糊查询中,因为不走索引,所以效率很低,而在搜索引擎中,不仅效率高,而且即使出现个别错字,或者用拼音搜索,甚至用同…

LeetCode Hot100 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…

本地化部署Chatglm和防踩坑攻略

最近想搞点什么东西练练手,传统crud又没有意义,于是就看到了给介绍AI的文章,然后就慢慢自己摸索,从0到1,独自部署应用。 项目简介 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是…

CVPR`24 | 4D编辑哪家强?浙大首次提出通用指导4D编辑框架:Instruct 4D-to-4D

文章链接:https://arxiv.org/pdf/2406.09402 项目地址:https://immortalco.github.io/Instruct-4D-to-4D/ 今天和大家一起学习的是Instruct 4D-to-4D,可以通过2D扩散模型实现4D感知和时空一致性,以生成高质量的指令引导的动态场景…

selenium----CSS表达式选择元素

前面我们学习了根据 id、class属性、tag名 选择元素。 如果我们要选择的 元素 没有id、class 属性,或者有些我们不想选择的元素 也有相同的 id、class属性值,怎么办呢?这时候我们通常可以通过 CSS selector 语法选择元素。 选择元素 通过 …

22.jdk源码阅读之Thread(上)

1. 写在前面 Java 中的 Thread 类是多线程编程的基础,也是我们日常工作中用的比较多的类,但是你真的了解它吗?下面这几个问题你是否有思考过? start() 和 run() 方法有什么区别?什么是线程的生命周期?什么…

邮件攻击案例系列三:动态 IP 池爆破员工邮箱钓鱼重要客户

案例描述 2023 年 11 月,某制造业企业员工 Emily 接到海外客户电话,向其核实一封电子邮件的真实性,因为客户认为,该邮件所给出的链接不像是该公司的官网网址。Emily 查看自己的邮箱,并未发现客户所说的邮件。但从客户…

RPA:如何一次回答多个问题

洞悉技术的本质,享受科技的乐趣 先完成10%目标,迈出100%之一行动 2分钟的努力也有价值 从每天解决1个小问题开始。 本文介绍如何使用playwright来处理新页面 三句话说清楚问题 一天回答一个问题太慢了,我想一天回答 3个问题 了解基本原理 新页…

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

概率模拟(sigmoid、softmax)

概率模拟(sigmoid、softmax) 1. sigmoid1.1 sigmoid 定义1.2 sigmoid 主要特性1.3 sigmoid 的缺点1.4 代码画 sigmoid 函数图像 2. softmax2.1 softmax 定义与原理2.2 softmax 特点与优势2.3 softmax 应用场景2.4 softmax 实现方式2.5 softmax 注意事项2…

C++从入门到起飞之——友元内部类匿名对象 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、友元 2、内部类 3. 匿名对象 4、完结散花 1、友元 • 友元提供了⼀种突破类访问限定符封装的…