分布式文件系统协议:NFS(Network File System)网络文件系统

文章目录

    • NFS名词解释
    • NFS的历史版本
    • NFS支持的操作系统
    • NFS工作原理
    • NFS使用的端口
    • NFS的认证机制
    • NFS的优点
    • NFS使用场景
    • 推荐阅读

NFS名词解释

NFS(Network File System)网络文件系统是一种分布式文件系统协议,最初由Sun Microsystems开发,并在1984年首次发布。

NFS允许不同计算机通过网络共享资源,特别是文件和目录,就像它们是本地存储的一部分一样。使用NFS的客户端可以挂载远程服务器上的文件系统,使得用户能够以透明的方式访问远程数据,实现跨多个系统的文件共享。

NFS基于客户端-服务器架构运行,其中服务器端提供共享的文件系统资源,而客户端则通过网络请求这些资源。

NFS协议通常在应用层实现,它依赖于底层的传输层协议进行通信,传统上是基于UDP,部分版本也可以使用TCP以增强可靠性

NFS的关键技术之一是远程过程调用(RPC),这是一种让客户端能够直接调用位于远程机器上的服务或函数的技术。通过RPC,NFS定义了一套标准接口,用于处理文件操作,如打开、读取、写入、创建和删除等。

NFS广泛应用于企业环境和多操作系统环境中,提高了数据共享的效率和灵活性。
在这里插入图片描述

NFS的历史版本

NFS(Network File System)自1980年代以来已发展了多个版本,下表是主要的历史版本:

NFS版本发布时间版本描述
NFSv1第一个版本,发布于1984年基于Sun Microsystems的原始设计,存在诸多限制且功能有限,它并未广泛部署
NFSv2发布于1985年,在RFC 1094中定义引入了文件属性、目录操作和其他增强功能,但仍有一些局限性,如32位文件大小限制和缺乏安全模型
NFSv3发布于1995年,在RFC 1813中定义增加了对64位文件大小的支持,提高了性能,并引入了更丰富的错误处理机制,NFSv3是使用最为广泛的NFS版本之一
NFSv4NFSv4.0在2000年由RFC 3010定义,NFSv4.1由RFC 5661在2010年定义NFSv4引入了状态保持、会话概念、RPC流水线化、复制支持、安全性改进(例如 Kerberos 集成)以及其他许多新特性。NFSv4.1还增加了并发写入支持、租约管理和复制提升等

NFS支持的操作系统

NFS(Network File System)作为一种广泛使用的网络文件系统协议,很多操作系统平台都支持NFS协议。支持NFS的主流操作系统:

  1. Unix-like 系统

    • Solaris
    • FreeBSD
    • OpenBSD
    • NetBSD
    • macOS
    • AIX
    • HP-UX
    • IBM z/OS
    • UnixWare
  2. Linux 发行版

    • Red Hat Enterprise Linux (RHEL)
    • CentOS
    • Ubuntu
    • Debian
    • SUSE Linux Enterprise Server (SLES)
    • Arch Linux
    • Gentoo Linux
      -几乎所有Linux发行版都支持NFS作为客户端和服务器。
  3. Windows 操作系统

    • Windows 10(通过安装适用于Windows的Services for NFS)
    • Windows Server 2008及以后版本(自带NFS服务)
  4. 其他操作系统可能通过第三方软件或插件提供对NFS的支持。

NFS最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案(share files)。所以,你也可以简单地将它看做是一个文件服务器(file server)。

NFS工作原理

NFS(Network File System)工作原理基于网络的客户端-服务器架构,它允许网络中的不同计算机如同访问本地磁盘一样透明地共享和存取远程主机上的文件系统

具体过程如下:

首先,NFS服务器在其操作系统上配置并启动相关的服务进程,如rpc.nfsd用于处理来自客户端的数据请求,并通过rpc.mountd管理共享目录的挂载权限。服务器在 /etc/exports 文件中定义了哪些目录可以被哪些客户端以何种权限访问。

当客户端需要访问服务器端的共享资源时,它会通过Portmapper(或rpcbind)服务查询到NFS服务器所监听的实际端口,并向这些端口发送挂载请求。一旦服务器验证并批准该请求后,客户端就可以将远端的共享目录“挂载”至本机的一个指定路径下。

在数据交换过程中,NFS协议借助于Remote Procedure Call (RPC)机制,使客户端能够执行诸如读、写、打开、关闭等与文件系统相关的操作。这些操作实际上是对服务器上对应文件系统的调用,而结果则通过网络返回给客户端。

为了提高性能,NFS支持缓存技术,即客户端可以对常用文件的部分或全部内容进行缓存。同时,为了确保多用户环境下的数据一致性,NFS使用lock manager服务(如lockd)来管理和同步多个客户端对同一文件的并发访问。

NFS使用的端口

NFS(Network File System)在运行时使用多个端口,以下是主要的端口:

  1. 端口 111 (TCP/UDP):这是RPC(Remote Procedure Call)端口映射器(Portmapper)的服务端口。所有NFS相关的服务都会通过Portmapper注册它们所监听的实际端口号。当客户端需要与服务器进行通信时,首先会联系Portmapper以获取到NFS及其他相关服务实际使用的动态或固定端口号。

  2. 端口 2049 (TCP/UDP):这是NFS服务的标准文件系统服务端口,用于传输文件数据和元数据。NFS v3及以前版本通常只使用这个端口进行文件操作。

  3. 其他端口:

    • mountd:负责处理文件系统的挂载请求,端口号通常是随机分配,但也可以配置为固定端口。
    • nlockmgr:管理网络锁定,确保多个客户端对共享文件进行并发访问时的一致性,它也监听一个由portmapper分配的端口。
    • rquotad:提供远程磁盘配额服务,对于那些需要配额管理的NFS共享而言是必需的,同样监听一个由portmapper分配的端口。

NFS依赖于Portmapper来进行端口管理和服务发现,并且至少固定使用111和2049两个端口。其他关联服务可能使用非固定的动态端口。

NFS的认证机制

NFS(Network File System)在默认情况下并不强制要求进行用户账号的认证,但可以根据配置文件实现一定程度的安全性控制和身份验证。

在传统的NFSv3及更早版本中,NFS通常依赖于客户端主机的信任关系来进行访问控制。这意味着NFS服务器通过检查请求的来源IP地址,并基于/etc/exports文件中的设置来决定哪些客户端可以挂载共享以及使用什么权限。这种机制下,用户的实际身份没有经过严格的身份验证,而是采用了匿名映射或“信任”模式,即客户端用户的UID和GID直接映射到服务器端的相应UID和GID上。

在安全性要求更高的环境中,NFS可以通过多种方式增强安全措施

  1. root Squashing:默认情况下,为了避免来自客户端的root用户以服务器的root权限操作共享文件系统,NFS服务器会将所有远程root用户映射为一个非特权用户(如nfsnobody),这被称为root squashing。

  2. 身份映射服务

    • NIS (Network Information Service) 或者后来的 NIS+ 可以用于集中式账户管理和身份验证。
    • LDAP 也可以作为身份验证后端,使得NFS能够与一个中心化的用户数据库同步,确保只有授权用户才能访问共享资源。
  3. Kerberos 集成:在NFSv4中引入了对Kerberos身份验证协议的支持,提供了强大的加密和认证机制,确保只有经过身份验证的用户和服务才能进行交互。

虽然NFS本身不强制执行严格的用户账号认证,但在实际部署中,一般都会结合安全技术来实施必要的身份验证和授权控制。

NFS的优点

NFS(Network File System)的主要优点包括:

  1. 跨平台共享:不同操作系统之间能够无缝共享文件和目录。
  2. 集中管理:数据存储集中化,便于管理和备份。
  3. 空间节约与成本优化:客户端无需重复存储相同数据,降低硬件投资成本。
  4. 灵活访问:用户可以从任何授权的系统上透明地读写远程文件。
  5. 性能优化:支持缓存机制以提高文件访问速度,减少网络传输开销。
  6. 可扩展性好:可以根据需求增加服务器来扩展存储资源。
  7. 易用性强:配置简单,使用标准命令即可挂载和操作远程文件系统。

NFS使用场景

NFS(Network File System)通常在以下场景下使用:

  1. 数据共享

    • 在企业或数据中心环境中,多台服务器需要访问同一组文件时,例如多个Web服务器共享用户上传的图片、文档等资源。
    • 开发团队间共享代码库或者构建工具链,实现跨开发环境的一致性。
  2. 虚拟化与云计算

    • 虚拟机(VMs)通过宿主机挂载的NFS共享来存储和读取其操作系统镜像、应用程序数据及用户数据,简化管理和维护。
    • 在云服务中,NFS可以作为云主机与云存储之间的接口,用于存储和共享虚拟机磁盘映像或容器数据卷。
  3. 集群计算

    • HPC(高性能计算)集群中的各个节点可以通过NFS共享大型数据集,以支持并行计算任务的数据访问需求。
    • 大数据处理环境中,分布式计算框架可能依赖于NFS共享目录,使得不同节点能够存取统一的数据源。
  4. 备份与恢复

    • 作为备份目标,NFS服务器可被用作集中式备份存储,便于进行数据备份和灾难恢复操作。
    • 数据迁移过程中,NFS可以临时作为中间层存储,简化从旧系统到新系统的数据迁移过程。
  5. 媒体制作与渲染农场

    • 在多媒体制作和动画渲染等行业中,大量工作站需要共享大型项目文件,NFS提供了高效且实时的数据访问能力。
  6. 容器编排

    • 在Kubernetes或其他容器编排平台中,NFS常用于持久卷(Persistent Volumes)提供动态存储分配,满足容器应用对持久化数据的需求。
  7. 测试与部署

    • 开发人员在本地机器上快速搭建与生产环境一致的配置时,通过挂载NFS共享可以确保代码版本、配置文件以及静态资源的同步更新。

NFS广泛应用于需要跨网络透明共享文件和目录的场合,尤其适用于那些强调数据一致性、资源共享和灵活扩展性的分布式系统架构。

以上就是关于NFS协议的一些总结,希望对大家认识这个协议有所帮助。

推荐阅读

  • Ubuntu挂载NFS(Network File System) ,怎么解决权限不一致的问题?
  • 自己整理的Ubuntu NFS常用指令,对初学者有用
  • Ubuntu镜像源cn.arichinve.ubuntu.com不可用原因分析和解决

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue中的日历组件 Calendar 实现 考勤打卡记录

日历组件 Calendar 可以自定义在页面添加内容。 实现效果图 1.由于Calendar没有右上角月份切换的API事件,可以给组件源码添加自定义添加一个事件 2.也可以通过自带的input事件来获取日历 3.vue页面完整代码 注释:this.$m(this.beginTime).format(…

揭秘程序栈:你的代码在幕后是怎么运行的?

计算机科学中,许多概念和原理可能会让开发者感到头疼,比如程序栈。这个看似晦涩的概念,实对我们理解程序运行至关重要。本文将以通俗易懂的方式,带你深入理解程序栈的工作原理和优化策略。 一、为什么需要栈? 栈是一…

Jupyter-Notebook无法创建ipynb文件

文章目录 概述排查问题恢复方法参考资料 概述 用户反馈在 Notebook 上无法创建 ipynb 文件,并且会返回以下的错误。 报错的信息是: Unexpected error while saving file: Untitled5.ipynb attempt to write a readonly database 排查问题 这个是一个比较新的问…

保姆版Vps安装灯塔(ARL)

因为灯塔的默认端口为5003,所以我们在安装之前就在防火墙里把我们的5003端口打开 打开端口步骤如下: 1.我们打开控制面板,在控制面板里点击 系统和安全 。如下图: 2.接着点击 Windows Defender防火墙,如下图: 3.再…

IPhone、IPad、安卓手机、平板以及鸿蒙系统使用惠普无线打印教程

演示机型:惠普M281fdw,测试可行机型:惠普M277,惠普M452、惠普M283 点击右上角图标。 点击WI-FI Direct 开,(如果WI-FI Direct关闭,请打开!) 记录打印机的wifi名称(SSID)和密码。 打开IPhone、I…

kotlin Kmp多平台模板生成

地址: Kotlin Multiplatform Wizard | JetBrains 可生成kotlin多个平台模板 https://terrakok.github.io/Compose-Multiplatform-Wizard/

冻结Prompt微调LM: PET(b) LM-BFF

PET-TC(B) paper b: 2020.9 It’s not just size that matters: Small language models are also few-shot learners. Prompt: 多字完形填空式人工Prompt Task:Text Classification Model: Albert-xxlarge-v2 Take Away: 支持多字的完形填空Prompt&a…

vue中父组件异步传值,渲染问题

vue中父组件异步传值&#xff0c;渲染问题 父组件异步传值&#xff0c;子组件渲染不出来。有如下两种解决方法&#xff1a; 1、用v-if解决&#xff0c;当父组件有数据才渲染 <Child v-if"dataList && dataList.length > 0" :data-list"dataLis…

09 STM32 - PWM

9.1 PWM简介 脉冲宽度调制(Pulse Width Modulation,简称PWM)&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点&#xff0c;就是对脉冲宽度的控制。 9.2 PWM波原理 如下图所示&#xff0c;使用定时器定时&#xff0c;从0开始&#x…

抽象类(没有对象)之引用对象失败之谜

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…

第十二章 Spring Cloud Alibaba Sentinel

文章目录 前言1、简介1.1、基本概念 2、Sentinel控制台3、Sentinel开发流程3.1、 app-api消费端工程引进依赖3.1.1、yml新加配置&#xff08;跟nacos同级&#xff09; 3.2、定义资源3.3、定义规则3.3.1、流量控制3.3.2、流控模式3.3.3、流控效果3.3.4、熔断降级3.3.5、通过Naco…

基于springboot+vue的社区团购系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

腾讯云MPS为出海媒体企业助力

在如今互联网发达的时代&#xff0c;一个视频通过网络发布即可供给全球用户进行观看。其中视频媒体企业便其中的领头先锋&#xff0c;为了让创作者们以及全球各大用户的视频进行快速推广&#xff0c;出海则是不二之选。但是因为各地区域的不同&#xff0c;带宽的不同与网络的限…

【EI会议征稿通知】第四届工业制造与结构材料国际学术会议(IMSM 2024)

第四届工业制造与结构材料国际学术会议&#xff08;IMSM 2024&#xff09; 2024 4th International Conference on Industrial Manufacturing and Structural Materials&#xff08;IMSM 2024&#xff09; 第四届工业制造与结构材料国际学术会议&#xff08;IMSM 2024&#x…

WordPress怎么禁用文章和页面古腾堡块编辑器?如何恢复经典小工具?

现在下载WordPress最新版来搭建网站&#xff0c;默认的文章和页面编辑器&#xff0c;以及小工具都是使用古腾堡编辑器&#xff08;Gutenberg块编辑器&#xff09;。虽然有很多站长说这个编辑器很好用&#xff0c;但是仍然有很多站长用不习惯&#xff0c;觉得操作太难了&#xf…

Spring Boot自动配置原理

1.SpringBootApplication注解 springboot是基于spring的新型的轻量级框架&#xff0c;最厉害的地方当属**自动配置。**那我们就可以根据启动流程和相关原理来看看&#xff0c;如何实现传奇的自动配置 SpringBootApplication//标注在某个类上&#xff0c;表示这个类是SpringBo…

微软与沃达丰签订10年合作,提供Copilot等生成式AI服务

1月16日&#xff0c;微软在官网宣布&#xff0c;与全球最大电信公司之一沃达丰&#xff08;Vodafone&#xff09;签订10年合作协议&#xff0c;将为3亿多企业、消费者提供生成式AI、云和数字服务等。 通过此次合作&#xff0c;沃达丰将利用微软的Copilot等生成式AI来改变客户、…

基于麻雀优化算法SSA的CEEMDAN-BiLSTM-Attention的预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

StarRocks 生成列:百倍提速半结构化数据分析

半结构化分析主要是指对 MAP&#xff0c;STRUCT&#xff0c;JSON&#xff0c;ARRAY 等复杂数据类型的查询分析。这些数据类型表达能力强&#xff0c;因此被广泛应用到 OLAP 分析的各种场景中&#xff0c;但由于其实现的复杂性&#xff0c;对这些复杂类型分析将会比一般简单类型…

align-item 和 align-content

align-item 和 align-content flex 布局中的 align-items 和 align-content 属性都用于垂直对齐 flex 容器内的项目&#xff0c;但它们适用于不同的情况&#xff1a; align-items: 这个属性用于在交叉轴上对齐单行内的 flex 项目。当你有一个 flex 容器&#xff0c;并且里面的…