NFS
目录
1 NFS简介 1
2 NFS机制 1
1 NFS简介
NFS(Network File System,网络文件系统) 是一种基于网络的文件系统。它可以将远端服务器文件系统的目录挂载到本地文件系统的目录上,允许用户或者应用程序像访问本地文件系统的目录结构一样,访问远端服务器文件系统的目录结构,而无需理会远端服务器文件系统和本地文件系统的具体类型,非常方便地实现了目录和文件在不同机器上进行共享。虽然 NFS 不是唯一实现这个功能的文件系统,但它无疑是最成功一个。
NFS是SUN在20世纪80年代开发出来的,至今为止,NFS 经历了 NFS,NFSv2,NFSv3 和 NFSv4 共四个版本。现在,NFS 最新的版本是 4.1,也被称为 pNFS(parallel NFS,并行网络文件系统)。
前四个版本的 NFS,作为一个文件系统,它几乎具备了一个传统桌面文件系统最基本的结构特征和访问特征,不同之处在于它的数据存储于远端服务器上,而不是本地设备上,因此不存在磁盘布局的处理。NFS 需要将本地操作转换为网络操作,并在远端服务器上实现,最后返回操作的结果。因此,NFS 更像是远端服务器文件系统在本地的一个文件系统代理,用户或者应用程序通过访问文件系统代理来访问真实的文件系统。
众所周知的是,NFS 的客户端在访问远端服务器文件系统时,既需要通过服务器获得文件的属性信息,还需要通过服务器获得文件的数据信息,这使得 NFS 天然地具备将文件的属性信息和数据信息分离在不同服务器上进行访问的特性,于是最后一个版本 NFS4.1/pNFS,将 Lustre/CephFS/GFS 等集群文件系统的设计思想引入到自身中,成为一个具有里程碑意义的 NFS 版本。它使得 NFS 的数据吞吐的速度和规模都得到了极大提高,为 NFS 的应用带了更为广阔的空间。
NFS 之所以备受瞩目,除了它在文件共享领域上的优异表现外,还有一个关键原因在于它在 NAS 存储系统上应用。NAS 与 DAS 和 SAN 在存储领域的竞争中,NFS 发挥了积极的作用,这更使得 NFS 越来越值得关注。
2 NFS机制
NFS 文件系统主要分为三个部分:The Protocol(网络协议),Client Side(NFS 客户端)和 Server Side(NFS 服务器)。NFS 客户端提供了接口,保证用户或者应用程序能像访问本地文件系统一样访问 NFS 文件系统,NFS 服务器作为数据源,为 NFS 客户端提供真实的文件系统服务,而网络协议则使得 NFS 客户端和 NFS 服务器能够高效和可靠地进行通信。NFS 网络协议使用的是 RPC(Remote Procedure Call,远程过程调用)/XDR(External Data Representation,外部数据表示)机制。
NFSv3 是一个较为稳定和成熟的 NFS 版本,它的实现机制如下图所示,当我们在NFS client访问系统文件的时候,NFS client会通过网络访问NFS server,获取需要访问的数据响应客户端的请求,这个过程对用户而言像访问本地文件系统一样轻松。
在 NFS 文件系统的文件操作中,除了 read 和 write 操作考虑到性能因素,专门使用缓存机制外,其它的操作基本上都是同步完成的。以 rename 重命名为例来进行说明,如下图所示。首先用户或者应用程序开始调用文件操作,即client客户端发起重命名系统文件请求,经过系统调用 sys_rename,到达vfs虚拟文件系统层 vfs_rename,然后交给 NFS 文件系统 nfs_rename 来处理。NFS 文件系统无法操作存储介质,它调用 NFS 客户端函数 nfs3_proc_rename 和 NFS 服务器函数 nfsd3_proc_rename 进行通信,即经过RPC/XDR把文件操作转发到 NFS 服务器的VFS虚拟文件系统层 vfs_rename,最后调用NFS服务器的Local FS本地文件系统如 ext2 的函数 ext2_raname,完成文件重命名。
NFSv4.1 介绍针对更高扩展性和更高性能的并行 NFS(pNFS)的概念。 要支持更高的可扩展性,NFSv4.1 具有集群化文件系统风格类似的拆分数据/元数据架构。如下图 所展示的,pNFS 将生态系统拆分为三个部分:客户端、服务器和存储。您可看到存在两个路径:一个用于数据,另一个用于控制。pNFS 将数据布局与数据本身拆分,允许双路径架构。当客户想要访问文件时,服务器以布局响应。布局描述了文件到存储设备的映射。当客户端具有布局时,它能够直接访问存储,而不必通过服务器(这实现了更大的灵活性和更优的性能)。当客户端完成文件操作时,它会提交数据(变更)和布局。如果需要,服务器能够请求从客户端返回布局。
NFSv3应用比较稳定,NFSv4.1只是一些新版系统在支持,现在NFS文件系统成为了很多企业存储之路,特别是NFS NAS结合更是成为了很多大企业,事业单位的存储之路。当然除了NFS外也还有很多有创意的文件存储系统,如IRODS他也采用了拆分数据/元数据架构,只不过他的元数据是存储在数据库中,而数据可以存储在不同的域中。
****************
参考
NFS 文件系统源代码剖析
网络文件系统与 Linux
- 大小: 51.3 KB
- 大小: 48.3 KB
- 大小: 39.6 KB
分享到:
相关推荐
总之,为了让Linux内核支持NFS文件系统,你需要在内核配置阶段正确选择相关选项,并进行编译安装。这样,你的Linux系统就能实现跨网络的文件共享,无论是作为客户端挂载远程NFS,还是作为服务器提供文件服务。在实际...
标题中的“OK6410开发板nfs文件系统搭建资源”揭示了这是一个关于使用OK6410开发板配置NFS(Network File System)文件系统的教程或资料包。OK6410是一款基于ARM926EJ-S内核的嵌入式微处理器,常用于开发和实验环境...
### 集群环境NFS文件系统:性能影响因素深入解析 #### 一、NFS在集群环境中的关键角色 NFS(Network File System),即网络文件系统,是一种分布式文件系统协议,允许用户在网络上访问远程文件如同访问本地文件...
### ARM Linux NFS 文件系统建立知识点 #### 一、NFS简介 - **定义**:NFS(Network ...以上内容涵盖了从NFS基础知识到实际操作的具体步骤,旨在帮助读者理解和掌握ARM Linux环境下NFS文件系统建立的方法和技术要点。
### U-Boot 移植与 Linux 内核移植及 NFS 文件系统挂载详解 #### U-Boot 积极移植 U-Boot (Universal Boot Loader) 是一个广泛应用于嵌入式系统的引导程序,它支持多种处理器架构和操作系统。本文将详细介绍如何...
网络文件系统nfs文件系统使用;介绍与NFS相关的几个文件和命令;NFS安装;NFS配置;启动和停止NFS服务......
### ARM板上挂载NFS文件系统的详细指南 #### 一、概述 本文档旨在详细介绍如何在ARM开发板上挂载NFS(Network File System)文件系统,包括所需的开发环境搭建、IP地址设置、NFS服务配置以及最终的挂载过程。通过本...
nfs 文件系统 安装部署已经故障排查 一、NFS 服务介绍 NFS(Network File System)网络文件系统主要用于 Linux 系统上实现文件共享的一种协议,其客户端主要是 Linux 没有用户认证机制,且数据在网络上传送的时候...
### ITop4412精英版配置支持NFS文件系统服务器和QT并烧录到开发板上 #### 嵌入式Linux实验讯为ITop4412定制内核 本篇教程主要针对嵌入式Linux开发人员,旨在帮助大家解决在定制ITop4412开发板内核时遇到的各种问题...
### Windows挂载NFS文件系统手册 #### 技术方案概览 本文档旨在提供一个详细的步骤指南,帮助用户理解如何在Windows环境下挂载NFS(Network File System)文件系统。NFS是一种允许用户通过网络访问远程文件系统的...
NFS文件系统是实现跨平台、跨网络的文件共享的重要手段,尤其在Linux和Unix环境中广泛应用。本教程主要讲解NFS服务器的安装、配置以及客户端的使用。 首先,NFS服务器的安装通常涉及两个关键软件包:portmap和nfs-...
NFS是Network File System的简写,即网络文件系统,NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。 在嵌入式Linux系统中有两种应用: 1、...
5步叫你挂载nfs网络文件系统,操作简单易懂,
linux操作系统-NFS文件系统管理 分享给大家学习
这个问题导致了网络不通,无法挂载 NFS 文件系统。 知识点二:UBOOT 配置问题 UBOOT 的配置文件中,网关的设置被错误地设置成了 IP 地址,而不是正确的网关地址。这导致了网络不通,无法挂载 NFS 文件系统。 知识...
虚拟机NFS挂载开发板文件系统涉及到一系列网络配置和NFS服务配置的知识点。下面详细介绍相关知识点: 网络配置 1. 桥接模式配置:虚拟机网络设置中桥接模式(Bridged)是指虚拟机与宿主机共享一个物理网卡,并且在...
Linux 搭建 NFS 和 Ramdisk 文件系统定义 本文档主要介绍了 Linux 下如何搭建 NFS(Network File System)和 Ramdisk 文件系统,旨在帮助开发者快速了解并搭建这两种文件系统。 1. Linux 建立文件系统 Linux 文件...