NFS文件系统协议及解析概要
NFS讲解

NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之一。
主要应用在UNIX环境下。
最早是由SUN开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,允许一个系统在网络上与他人共享目录和文件。
通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便的使用网上资源。
换言之,NFS可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。
服务器程序向其它计算机提供对文件系统的访问,其过程就叫做“输出”。
NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器“输送”出来。
文件通常以“块”为单位进行传输,其尺寸是8K(虽然它可能会将操作分成更小尺寸的分片)。
NFS传输协议用于服务器和客户机之间的文件访问和共享的通信,从而使客户机远程的访问保存在存储设备上的数据。
NFS在文件传送或信息传送过程中依赖于RPC协议。
RPC,远程过程调用(Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。
可以说NFS本身就是使用RPC的一个程序。
或者说NFS也是一个RPC SERVER。
所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER(服务器)或者NFS CLIENT(客户端)。
这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。
可以这么理解RPC 和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。
(1)访问一个本地文件还是一个NFS文件对于客户端来说是透明的,当文件被打开时,由内核决定这一点。
文件被打开之后,内核将本地文件的所有引用传递给名为“本地文件访问”的框中,而将一个NFS文件的所有引用传递给名为“NFS客户端”的框中。
Linux网络文件系统(NFS)分析

Linux网络文件系统(NFS)分析1. 网络文件系统概述_____________________________________________________ 41.1 远程文件存取____________________________________________________ 4 1.2 网络文件系统概述________________________________________________ 4 1.3 网络文件系统上层实现____________________________________________ 5 1.3.1 Mount安装协议和NFS远程过程 __________________________________ 5 1.3.2 访问文件的具体流程___________________________________________ 5 1.4 网络文件系统下层实现——远程过程调用(RPC) ____________________ 6 1.4.1 RPC的概念模型_______________________________________________ 7 1.4.2 SUN RPC的定义 _______________________________________________ 7 1.4.3 SUN RPC的传输层实现机制 _____________________________________ 8 1.4.3.1 通信语义__________________________________________________ 8 1.4.3.2 动态端口映射______________________________________________ 8 1.4.4 一次RPC远程调用的具体流程 ___________________________________ 9 2. Linux的NFS系统框架 _________________________________________________ 112.1 源码分析环境___________________________________________________ 11 2.2 Linux下NFS的体系结构___________________________________________ 12 2.3 NFS的Client端___________________________________________________ 12 2.3.1 Client端的VFS层______________________________________________ 13 2.3.2 Client端的RPC层_____________________________________________ 20 2.3.3 Client端的NFS层______________________________________________ 27 2.3.3.1 NFS过程层_______________________________________________ 27 2.4 NFS的Server端 __________________________________________________ 33 2.4.1 Server端的RPC层 _____________________________________________ 33 2.4.2 Server端的NFS层_____________________________________________ 37 2.4.3 NFS Server端启动___________________________________________ 39 2.4.4 nfsservctl系统调用实现________________________________________ 40 2.4.5 RPC鉴别机制________________________________________________ 46 3 Mount安装协议的具体实现_____________________________________________ 483.1 NFS Client端Mount协议数据结构_______________________________ 48 3.2 NFS Client端Mount协议实现___________________________________ 50 3.2.1Linux根文件系统的NFS Mount协议安装________________________ 51 3.2.1.1 nfs_root_setup函数的实现_________________________________ 52 3.2.1.2 nfs_root_mount函数的功能________________________________ 54 3.2.2命令行下的动态NFS Mount协议安装___________________________ 60 3.2.2.1 nfs_read_super函数的实现 _________________________________ 60 4NFS文件操作具体流程 _________________________________________________ 64 4.1 NFS文件协议的数据结构 ______________________________________ 64 4.2 打开一个NFS文件的具体流程 __________________________________ 65 4.2.1 VFS层操作分析_______________________________________________ 65 4.2.2 NFS层操作分析______________________________________________ 67 4.2.3 RPC层操作分析______________________________________________ 694.2.4 Server端操作分析 _____________________________________________ 69 4.3 读写一个NFS文件的具体流程 __________________________________ 70 4.3.1 sys_read函数_______________________________________________ 71 4.3.2nfs_file_read函数 ____________________________________________ 71 4.3.3nfs_readpage nfs_readpage_sync函数___________________________ 72 5 NFS文件系统FAQ _____________________________________________________ 76 参考文献:______________________________________________________________ 791. 网络文件系统概述1.1 远程文件存取许多早期的网络系统提供了文件传输(File transfer)服务,它允许用户把某文件的一个副本从一台机器移到另一台机器上。
NFS协议

介绍NFS协议的概念和作用NFS(Network File System)协议是一种用于在计算机网络中实现跨平台文件共享的协议。
它允许不同操作系统的计算机之间通过网络共享文件和目录,使得用户可以像访问本地文件一样访问远程服务器上的文件。
NFS协议的作用是简化跨网络的文件共享和访问过程。
它允许客户端计算机通过网络连接到服务器,将服务器上的文件系统挂载到客户端的本地文件系统中。
这样,客户端可以像访问本地文件一样访问远程服务器上的文件和目录,而无需了解服务器文件系统的具体细节。
NFS协议的概念基于一种客户端‑服务器(client‑server)模型。
服务器端运行NFS服务器软件,负责管理文件系统和处理客户端的文件访问请求。
客户端运行NFS客户端软件,通过网络与服务器通信,并发送文件访问请求。
服务器接收请求后,执行相应的操作并将结果返回给客户端。
NFS协议的优点之一是它的跨平台性。
它可以在不同的操作系统之间实现文件共享,包括UNIX、Linux、Windows 等。
这使得不同操作系统的用户能够方便地共享和访问彼此的文件,促进了跨平台的协作和数据共享。
此外,NFS协议还提供了一些高级功能,如文件锁定、缓存机制和权限管理。
文件锁定允许多个客户端同时读取文件,但只允许一个客户端进行写操作,从而确保数据的一致性。
缓存机制可以提高文件访问的性能,减少网络传输的开销。
权限管理则允许服务器对文件和目录进行访问控制,保护敏感数据的安全性。
总之,NFS协议是一种用于在计算机网络中实现跨平台文件共享的重要协议。
它简化了文件共享和访问的过程,提供了跨操作系统的互操作性,同时具备一些高级功能,以满足不同用户的需求。
解释NFS协议的基本原理和工作方式NFS(Network File System)协议是一种用于实现跨网络的文件共享的协议。
它的基本原理是通过客户端‑服务器模型,将远程服务器上的文件系统挂载到客户端的本地文件系统中,实现对远程文件的透明访问。
网络文件系统(NFS)的工作原理和应用技术

6网络文件系统(NFS)的工作原理和应用技术郭英见图2R PC 工作过程计算机网络的软件环境包括网络协议和网络操作系统两个方面:网络协议用于实现各种操作系统的网络连接和数据通信;而网络操作系统是网络协议中的网络服务系统,是网络的核心。
工业标准的网络文件系统NFS 由于具有网络操作系统文件服务器的功能,且使用维护均比较方便,从而也被广泛地应用在各系统中。
本文从N FS 工作原理和应用技术两方面深入讨论N FS 。
一、网络文件系统NFS 的工作原理N FS 包括N FS 服务器和N FS 客户两部分,采用星型拓扑结构连接。
NFS 服务器是中心,N FS 客户是端点,见图1。
N FS 服务器:提供共享本地硬盘上的任何文件系统或目录等文件信息的计算机。
N FS 客户:能够安装远地文件系统和目录,并且从其他计算机上获取文件信息的计算机。
N FS 服务器与N FS 客户之间并无严格的界定,多任务的操作系统可同时作为客户和服务器,读取网络上其他正在访问自己硬盘的计算机上的文件。
为了NFS 的开发应用专门引入了远程过程调用RPC(Remote Pr ocedure Call)的概念,RPC 过程调用可以作为对话层和报文交换器用于所有的NFS 的应用程序。
RPC 由一系列过程组成,这些过程可以视为处理任何所需网络访问的高层应用程序,即可以透明地访问远地文件系统。
R 通过网络作用于客户和服务器之间,具体工作过程是首先客户向服务器发出请求报文,服务器接收到报文后,从中提取出请求,然后执行请求的过程,并且将结果汇编成响应报文。
客户将接收到的报文响应后,对报文进行反汇编,继续执行应用程序的正常过程。
这个过程的每一步都由RPC 程序库(与应用程序相连)的例程控制。
见图2。
二、网络文件系统NFS 的配置由于N FS 是由N FS 客户和N FS 服务器组成的,所以N FS 的配置就需分成NFS 服务器的配置和N FS 客户的配置。
nfs协议

nfs协议
NFS(Network File System)是一种用于在不同计算机
间进行文件共享的协议。
该协议旨在使远程文件访问像本地文件访问一样简单,而无需用户意识到其实际的远程性质。
NFS
协议主要基于RPC(Remote Procedure Call)协议,提供了
高效的网络通信机制。
NFS协议的主要优点之一是其在网络上数据传输的高效性。
它能够被用来在不同计算机之间传输大文件或大量的数据。
由于它的基本设计是面向连接的,因此它可以追踪和管理多个连接。
此外,NFS协议还能够缓存数据,以减少网络流量和延迟。
这样子系统能够快速地访问并处理数据,而不会是因为网络传输瓶颈而导致延迟。
NFS协议还提供了安全性的特性。
该协议支持基于Kerberos的身份验证机制,这样用户可以保密地访问文件,
而其他用户则无权访问。
同时,该协议还支持通过卷的权限来控制文件的读写权限,可以快速地管理文件。
然而,NFS协议也存在一些不足之处。
例如,如果传输的数据量非常大,就可能会导致网络传输瓶颈,甚至可能导致网络的崩溃。
此外,如果网络故障,对于已经开始传输数据的NFS就行就可能会遭受数据丢失和损坏的风险。
因此,在设计
和部署网络文件共享时,需要对系统进行适当的规划和优化。
总的来说,NFS协议是一个高效的网络文件共享协议,它提供了面向连接、快速缓存和安全身份验证等主要特性。
然而,
在部署这个网络文件共享系统时需要注意其局限性和安全性要求。
NFS概要

18 : NFS: Reply FSSTAT 19 : NFS: Call PATHCONF()
20 : NFS: Reply PATHCONF
NFS 背景
• PRC
– Sun RPC – DEC RPC
• DCOM & ORPC • iSCSI
Client
Server
1 : Portmap: Call GETPORT()
2 : Portmap: Reply GETPORT 3 : MOUNT: Call EXPORT() 4 : MOUNT: Reply EXPORT 5 : Portmap: Call GETPORT()
6 : Portmap: Reply GETPORT 7 : Portmap: Call GETPORT() 8 : Portmap: Reply GETPORT 9 : NLM: Call FREE_ALL()
其它分布式文件系统
• • • • Apollo Domain AT&T Remote File System(RFS) Andrew File System ( AFS ) Distributed File System ( DFS )
NFS Version 4 受到了 AFS 的影响。
NFS历史
NFS v3 结构
• NFS v3 需要通过与其它协议 协作来完成相关功能,设计 时为了尽可能的独立和尽量 重用已经存在的协议标准; • 基于RPC协议和XDR协议;
– XDR协议用于对网络之间传输的数据类 型进行描述; – RPC协议为远程服务提供一个面向过程 的接口,实现计算机之间的过程调用;
enum clnt_stat clnt_call( CLIENT * clnt, unsigned long procnum, xdrproc_t inproc, char *in, xdrproc_t outproc, char *out, struct timeval tout);
nfs 协议

nfs 协议NFS(Network File System)是一种网络文件共享协议,用于在计算机网络上实现文件共享和远程访问。
它是由Sun Microsystems开发的,最初用于UNIX系统。
NFS的主要目的是允许不同计算机上的用户通过网络访问和管理远程文件,就像本地硬盘上的文件一样。
它基于客户端-服务器架构,其中主机(服务器)提供文件服务,而用户端(客户端)则通过访问该主机来获取和操作文件。
NFS协议采用了基于RPC(Remote Procedure Call)的通信方式。
通过RPC,客户端可以请求服务器执行某些操作,如读取文件、写入文件等。
客户端和服务器之间的通信是通过网络完成的,因此可以在本地的计算机上对远程文件进行访问和操作。
NFS提供了很多优点。
首先,它使文件共享变得容易和高效。
用户可以像访问本地文件一样方便地访问远程文件,并且可以通过网络共享文件,而无需将文件复制到本地机器。
这对于多用户环境和跨平台的开发团队非常有用。
其次,NFS具有良好的可扩展性。
它支持多线程处理和并发访问,可以同时处理多个请求,提高了系统的处理能力和响应速度。
同时,NFS还支持分布式存储,可以将文件存储在多个服务器上,使得存储容量可以灵活扩展。
此外,NFS还具有很好的跨平台兼容性。
它可以在不同的操作系统和网络环境中使用,包括UNIX、Linux、Windows等。
这使得用户可以在不同的平台上访问和共享文件,提高了工作效率和文件管理的灵活性。
然而,NFS也存在一些局限性。
首先,由于数据传输是通过网络进行的,因此数据的传输速度可能受到网络速度的限制。
如果网络状况不佳或带宽有限,可能会影响到文件的传输速度和响应时间。
其次,由于NFS是基于文件的操作,因此不适合处理大型数据库或需要实时访问的应用程序。
对于这些要求高性能和实时性的应用,通常会采用专门的分布式文件系统或数据库。
总的来说,NFS是一种非常有用和广泛应用的协议,它大大简化了文件共享和远程访问的过程。
NFS网络文件系统详解

NFS⽹络⽂件系统详解第1章 NFS基本概述1.1 什么是nfsNFS是Network File System的缩写及⽹络⽂件系统。
主要功能是通过局域⽹络让不同的主机系统之间可以共享⽂件或⽬录。
NFS系统和Windows⽹络共享、⽹络驱动器类似, 只不过windows⽤于局域⽹, NFS⽤于企业集群架构中, 如果是⼤型⽹站, 会⽤到更复杂的分布式⽂件系统FastDFS,glusterfs,HDFS1.2 为什么要使⽤NFS服务进⾏数据存储1.实现多台服务器之间数据共享2.实现多台服务器之间数据的⼀致1.3 本地⽂件操作⽅式当⽤户执⾏mkdir命令, 该命令会通过shell解释器翻译给内核,由内核解析完成后驱动硬件,完成相应的操作。
1.4 NFS实现原理(需要先了解[程序|进程|线程])1.⽤户进程访问NFS客户端,使⽤不同的函数对数据进⾏处理2.NFS客户端通过TCP/IP的⽅式传递给NFS服务端。
3.NFS服务端接收到请求后,会先调⽤portmap进程进⾏端⼝映射。
4.nfsd进程⽤于判断NFS客户端是否拥有权限连接NFS服务端。
5.Rpc.mount进程判断客户端是否有对应的权限进⾏验证。
6.idmap进程实现⽤户映射和压缩7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递⾄内核,由内核驱动硬件。
rpc是⼀个远程过程调⽤,那么使⽤nfs必须有rpc服务1.5 NFS存储优点1.NFS⽂件系统简单易⽤、⽅便部署、数据可靠、服务稳定、满⾜中⼩企业需求。
2.NFS⽂件系统内存放的数据都在⽂件系统之上,所有数据都是能看得见。
1.6 NFS存储局限1.存在单点故障, 如果构建⾼可⽤维护⿇烦。
(web-》nfs()-》backup)2.NFS数据明⽂, 并不对数据做任何校验。
3.客户端挂载⽆需账户密码, 安全性⼀般(内⽹使⽤)1.7 ⽣产应⽤建议1.⽣产场景应将静态数据尽可能往前端推, 减少后端存储压⼒2.必须将存储⾥的静态资源通过CDN缓存(jpg\png\mp4\avi\css\js)3.如果没有缓存或架构本⾝历史遗留问题太⼤, 在多存储也⽆⽤第2章 NFS基本使⽤2.1 环境准备服务器系统⾓⾊外⽹IP内⽹IP主机名CentOS 7.5NFS服务端eth0:10.0.0.31eth1:172.16.1.31nfsCentOS 7.5NFS客户端eth0:10.0.0.7eth1:172.16.1.7web012.2 关闭防⽕墙及selinux(客户端,服务端都要关闭)2.2.1 关闭防⽕墙systemctl disable firewalldsystemctl stop firewalld2.2.2 关闭selinuxsed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/configsetenforce 02.3 服务端安装nfs[root@nfs ~]# yum -y install nfs-utils2.3.1 配置nfs我们可以按照共享⽬录的路径允许访问的NFS客户端(共享权限参数)格式,定义要共享的⽬录与相应的权限。
nfs常用命令-概述说明以及解释

nfs常用命令-概述说明以及解释1.引言1.1 概述在网络文件系统(Network File System,NFS)中,常用命令是管理和操作NFS的关键工具。
NFS是一种分布式文件系统协议,允许远程计算机之间共享文件和目录。
通过使用NFS常用命令,系统管理员可以方便地管理文件、目录和权限设置,实现文件共享和访问控制。
NFS常用命令包括基本命令、文件和目录管理命令以及网络相关命令,可以帮助管理员快速有效地操作和管理NFS系统。
掌握这些命令对于系统管理人员来说是至关重要的,可以提高工作效率,确保系统运行稳定和安全。
在本文中,我们将介绍NFS常用命令的基本用法和实际应用场景,探讨这些命令在系统管理中的重要性和作用。
通过深入了解和掌握这些命令,管理员可以更好地管理和维护NFS系统,确保系统的可靠性和稳定性。
1.2文章结构1.2 文章结构本文主要分为引言、正文和结论三个部分。
在引言部分,我们将介绍NFS(Network File System)的概述、文章的结构以及撰写该文的目的。
正文部分将详细介绍NFS常用的基本命令、文件和目录管理命令以及网络相关命令。
在结论部分,我们将总结本文介绍的常用命令,并探讨这些命令在实际应用场景中的重要性和对于系统管理的意义。
通过这样的结构,读者可以全面了解NFS的常用命令及其应用。
1.3 目的本文的主要目的是介绍NFS(Network File System)常用命令,帮助读者更好地理解和掌握NFS文件系统的管理和操作。
通过学习本文内容,读者可以了解如何使用不同的命令来管理文件和目录,以及在网络环境下如何使用NFS进行文件共享和访问。
此外,本文还将讨论NFS在系统管理中的重要性,以及实际应用中的具体场景。
通过学习本文,读者可以提高对NFS的理解,从而更有效地管理和维护文件系统。
2.正文2.1 基本命令在使用NFS(Network File System)时,了解一些基本的命令是非常重要的。
NFS服务概述

6.1 NFS服务概述NFS(Network File System,网络文件系统)是分布式计算机系统的一个组成部分,可实现在异构网络中共享和装载远程文件系统,目前已经成为文件服务的一种标准。
NFS主要用于不同系统之间的交互使用,所以其通信技术与主机和操作系统无关,通过NFS可在网络中的Unix 和Linux操作系统间共享数据,NFS将远程网络中的主机中的文件挂载到本机中,客户端可以使用复制、移动等命令对文件进行操作。
NFS虽然可以在网络中进行资源共享,但NFS本身并不提供数据传输服务的功能,必须借助于RPC协议来实现数据的传输,RPC定义了一种进程间通过网络进行交互通信的机制,RPC允许客户端通过网络向远程服务器发出请求,而不需要了解底层通信协议的细节。
当发生数据传输时,NFS服务器将起到RPC服务器的作用,而NFS客户端类似于RPC客户端,这样,NFS服务器和客户端就可以通过RPC协议进行数据传输。
NFS通常在局域网中使用,用于多台主机共享同一主机上的资源。
NFS服务器只要将其文件系统共享,NFS客户端就可以将该文件系统挂载到本地系统中,这样就在不同的系统之间建立了透明的文件共享机制。
6.2 NFS协议使用NFS,客户端可以透明地访问服务器上的文件和文件系统。
这不同于提供文件传输的FTP协议:FTP协议会产生一个文件的完整副本,而NFS只访问进程引用文件的那一部分,这意味着任何能够访问本地文件的客户端程序都可以访问一个NFS文件。
NFS是一个使用SunRPC构造的客户端/服务器应用程序。
NFS客户端通过向一个NFS 服务器发出RPC请求来访问服务器上的文件。
6.3 NFS工作原理(1)客户端访问的是一个本地文件还是一个NFS文件对客户端来说是透明的。
当文件被打开时,由内核决定这一点。
文件被打开后,内核将本地文件的所有引用传递给名为“本地文件访问”的框中,而将一个NFS 文件的所有引用传递给名为“NFS客户端”的框中。
nfs协议

nfs协议NFS(Network File System)即网络文件系统,是一种允许计算机通过网络访问和分享文件的协议。
它最早由Sun Microsystems开发,并在1984年首次引入了NFS协议。
该协议为网络上的计算机设备提供了互相访问和共享文件的能力,使得用户可以像本地文件一样方便地访问和操作远程主机上的文件。
NFS协议的设计目标是将远程文件访问的过程抽象为一个本地文件系统的操作,使客户端能够透明地访问服务器上的文件,就像访问本地文件一样。
通过使用NFS协议,用户可以像在本地一样操作文件,包括查看、创建、修改、删除等操作。
这种透明性使得用户可以方便地使用远程服务器作为本地的文件存储和共享。
NFS协议的核心思想是将文件系统的访问请求分为两个层次:客户端和服务器。
客户端通过NFS协议向服务器发送访问请求,并接收来自服务器的响应,从而实现对服务器上文件的操作。
为了方便客户端的使用,NFS协议使用了虚拟文件系统(VFS)的概念,将不同文件系统的差异隐藏在抽象层中,使得用户无需关心具体的底层文件系统。
在NFS协议中,客户端和服务器通过RPC(Remote Procedure Call)进行通信。
客户端发送RPC请求到服务器,服务器则执行相应的操作,并返回结果给客户端。
NFS协议支持多种操作,包括读取文件、写入文件、创建文件、删除文件等。
客户端可以通过向服务器发送相应的RPC请求,实现对文件的操作。
由于NFS协议的设计目标是提供透明的远程访问和共享文件的能力,因此客户端可以像在本地一样访问和操作远程服务器上的文件,而不需要关心具体的实现细节。
除了提供文件访问和共享的能力外,NFS协议还支持访问控制和安全验证。
服务器可以通过访问控制列表(ACL)来限制用户对文件的访问权限,并进行身份验证,以确保只有经过授权的用户才能访问和修改文件。
这种安全性机制可以有效保护文件的机密性和完整性,防止未经授权的访问和篡改。
超全面的NFS详解

这是我写的第一份笔记式文档,是对自己最近在研究NFS方面的一个小小的总结,这个稳定也参考和引用了一部分别人的文档,这里表示感谢,这篇是根据LINUX来写的,有空的话我还会写一篇FOR FREEBSD和SOLARIS的。
超全的NFS文档(FOR LINUX)欢迎大家和我交流网络方面的技术问题msn:bcst@ qq:11300242如果要转载的话请保留以上信息,谢谢配合一、 NFS简介NFS-Network FileSystem的缩写,NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。
NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。
NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
二、各NFS协议版本的主要区别V3相对V2的主要区别:1、文件尺寸V2最大只支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技术。
2、文件传输尺寸V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。
3、完整的信息返回V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。
4、增加了对TCP传输协议的支持V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP 协议的支持*5、异步写入特性6、改进了SERVER的mount性能7、有更好的I/O WRITES 性能。
9、更强网络运行效能,使得网络运作更为有效。
10、更强的灾难恢复功能。
异步写入特性(v3新增加)介绍:NFS V3 能否使用异步写入,这是可选择的一种特性。
网络文件系统协议

2.2.14 创建符号链接 struct symlinkargs { diropargs from; path to; sattr attributes; }; stat NFSPROC_SYMLINK(symlinkargs) = 13; 在给定的 目录"from.dir"中创建一个文件类型是NFLNK的文件 ""。这个新文件包含着路径名 "to",具有 "attributes"指定的初始属性。如果返回值是NFS_OK, 一个链接被创建。任何其它的返回值指示错误,链接 没有创建。 符号链接是指向另一个文件的指针。 在"to"中给定的名字不被服务器解释,只存储在新建 的文件中。当客户端引用一个符号链接文件的时候, 符号链接中的内容通常作为一个代替的路径名重新被 解释。READLINK的操作返回给客户端要解释的数据。 注意:在UNIX服务器上,attributes从不使用,因为 符号链接总是具有0777的模式。
7
2.1 文件系统模型 NFS假定文件系统是分层次的,除了最底层是文件, 其它层次都是目录。在目录中的每一个条目(文件, 目录,设备等)都有一个字符串名。不同的操作系统 可能在目录树的深度或者使用的名字上有所限制,就 象用不同的语义来描述“路径名”,它是在名字中把 所有组成部分(目录和文件名)串联起来。 一个“文件系统”就是在一个服务器上(通常是一个 磁盘或者物理分区)有一个指定的“根”的树。一些 操作系统提供了“安装”操作使所有的文件系统出现 在一棵单一的树上。而其它的操作系统保持着一个文 件系统“森林”。 文件是由无解释字节组成的无结构流。 第三版的NFS使用更普遍的文件系统模型。
17
在由 "file"给出的文件中,从“offset” 字节偏移开始返回 "count"个字节的 "data"。 这个文件的第一个字节是偏移 量0。在读操作发生后,文件属性从 "attributes"中返回。 注意:参数 "totalcount"没有使用,在协议的下一 修订版中将删除。
详解NFS协议网络文件系统的工作原理与配置指南

详解NFS协议网络文件系统的工作原理与配置指南NFS协议(Network File System)是一种用于在网络上共享文件和目录的协议。
它允许一个计算机上的用户通过网络访问另一台计算机上的文件,就好像这些文件位于本地计算机上一样。
本文将详细解析NFS协议的工作原理,并提供NFS协议的配置指南。
一、NFS协议的工作原理NFS协议是基于客户端-服务器模型的,其中客户端是发起文件访问请求的一方,而服务器是存储和提供文件的一方。
下面将详细介绍NFS协议的工作流程。
1. 客户端访问请求:客户端通过NFS客户端软件向服务器发送文件访问请求。
这通常是通过文件路径来标识需要访问的文件或目录。
2. 服务器响应:服务器接收到客户端的请求后,判断请求的合法性和可行性。
如果请求无效或不满足服务器的要求,服务器将返回错误消息给客户端。
3. 客户端权限验证:在成功接收到客户端请求后,服务器会验证客户端的身份和访问权限。
只有经过验证的客户端才能够继续文件访问过程。
4. 文件传输:在权限验证通过后,服务器将根据客户端请求的文件路径,将文件的数据块传输给客户端。
这些数据块通过网络进行传输。
5. 读写操作:客户端可以使用读操作从服务器中获取文件的数据,也可以使用写操作将数据写入服务器中的文件。
这样可以实现文件在不同计算机之间的共享和同步。
6. 文件锁定:为了确保多个客户端同时访问同一文件时不会发生冲突,NFS协议支持文件锁定机制。
当一个客户端对某个文件进行写操作时,其他客户端将无法对该文件进行写操作,直到锁定被释放。
7. 会话终止:当客户端完成文件的读写操作后,或者不再需要访问服务器上的文件时,会话可被终止。
终止会话后,客户端与服务器之间的连接被关闭。
二、NFS协议的配置指南在配置NFS协议之前,需要先确保系统已经安装了NFS软件包。
下面是NFS协议的简单配置指南。
1. 服务器端配置:- 安装NFS服务软件包;- 编辑NFS的配置文件(通常是/etc/exports),指定共享的目录和允许访问的客户端;- 启动NFS服务,确保服务在系统引导时自动启动。
NFS原理分析范文

NFS原理分析范文网络文件系统(Network File System,NFS)是一种用于在计算机网络中共享文件的协议。
它通过允许客户端计算机远程访问服务器上的文件,使得多台计算机可以共享相同的文件并进行协作。
NFS的设计目标是为了提供透明的文件访问服务,使得远程文件访问不感知于网络和服务器资源的限制。
下面将对NFS的原理进行分析。
NFS使用基于客户端-服务器模型的架构,其中服务器端维护文件系统并处理文件共享请求,而客户端通过发出远程过程调用(Remote Procedure Call,RPC)来访问和操作这些共享文件。
NFS的通信是通过网络传输的,因此保证了不同平台和操作系统之间文件的兼容性。
NFS的工作方式是通过操作文件的文件句柄(File Handle)来实现的。
文件句柄是服务器端唯一标识一个文件的数据结构,它包含了文件的元数据(如inode号)和服务器端的文件句柄。
客户端通过使用文件句柄来定位和访问文件,而不需要了解文件的具体路径和位置。
NFS采用了多层缓存机制来提高文件访问的性能。
客户端维护了本地缓存(Local Cache)来存储最近访问的文件数据,以减少对服务器端的请求。
服务器端也维护了文件缓存(File Cache)来存储经常访问的文件数据,以加快文件的读取速度。
此外,NFS还可通过客户端和服务器端之间的有效管理和控制来避免数据的冲突和不一致。
NFS还支持文件锁定机制,以确保在多个客户端同时访问相同文件时不会导致数据的错误和不一致。
通过锁定文件,NFS允许客户端对文件进行独占或共享访问,避免了同时写入导致的数据冲突。
NFS的安全性主要通过访问控制列表(Access Control List,ACL)和身份认证机制来实现。
ACL定义了对文件的访问权限,以确保只有授权的用户才能访问和修改文件。
NFS还支持多种身份认证方法,包括基于口令的认证、基于密钥的认证和基于Kerberos的认证,提供了强大的安全性保障。
NFS简介——精选推荐

NFS简介
⼀、NFS简介
NFS是⼀种基于TCP/IP传输的⽹络⽂件系统协议。
通过使⽤NFS协议,客户机可以像访问本地⽬录⼀样访问远程服务器中的共享资源。
对于⼤多数负载均衡群集来说,使⽤NFS协议来共享数据存储是⽐较常见的做法,NFS也是NAS存储设备必然⽀持的⼀种协议。
但是由于NFS没有⽤户认证机制,⽽且数据在⽹络上明⽂传输,所以安全性很差,⼀般只能在局域⽹中使⽤。
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调⽤)机制,以完成远程到本地的映射过程。
所以需要安装 nfs-utils、rpcbind 软件包来提供 NFS共享服务,前者⽤于 NFS 共享发布和访问,后者⽤于 RPC ⽀持。
⼆、NSF服务
1、/etc/exports 配置⽂件
2、服务器使⽤NFS发布共享资源
①安装 nfs-utils、rpcbind 软件包
②、设置共享⽬录
③、启动NFS服务
④、查看本机发布的 NFS共享⽬录
3、在客户机中访问NFS共享资源
①、安装nfs-utils、rpcbind 软件包,并开启服务
②、查看NFS服务器端共享的⽬录
③、⼿动挂载NFS共享⽬录
④、设置⾃动挂载
⑤、查看⾃动挂载是否设置成功
⑥、强制解挂(当服务器突然断掉,⽽客户端还在查看共享⽬录时)。
你需要了解NFS网络文件系统

你需要了解NFS网络文件系统你需要了解NFS网络文件系统一、NFS概念:透过网络,让不同的主机能“共享”文件。
通过NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
二、版本:共三个版本,NFSv2,NFSv3,NFSv4(包含4.0和4.1)。
其中NFSv2和NFSv3由Sun公司起草。
NFS4.0主要由NetApp。
三、版本特点V2:实现基本的网络共享及存取功能V3:修正了V2的一些bug。
——————V3与V2区别——————1.V2对每次读写操作中传输数据的最大长度限制:8192字节,V3无限制2.V2对文件名长度限制:255字节,V3无限制3.V2对文件长度限制:0xFFFFFFF,V3无限制4.V2对文件句柄长度固定为32B,V3中句柄长度上限为64字节5.V2只支持同步写,V3支持异步写操作。
V3增加了commit请求,commit可以将服务器缓存中的数据刷新到磁盘中。
*注:同步写指当客户端向服务器端写入数据时,服务器必须将数据写入磁盘中才能发送应答消息。
异步写指服务器只需要将数据写入缓存中就可以发送应答消息。
6.V3增加了ACCESS请求*注:ACCESS 用来检查用户的访问权限。
因为服务器端可能进行uid映射,一次客户端的Uid和gid不能正确反映用户的访问权限。
NFS2的处理方法是不管访问权限,直接返送请求,如果没有访问权限就出错。
NFS3中增加了ACCESS请求,客户端可以检查是否有访问权限。
7.V3中一些请求调整了参数和返回信息。
——————V4与V3区别——————1.V2和V3都是无状态协议,即服务器端不需要维护客户端的状态信息。
无状态协议的优点是当服务器出现问题后,客户端只需要重复发送失败请求就可以了,直到收到服务器的响应信息。
但某些操作必须需要状态,如文件锁。
如果客户端申请了文件锁,但是服务器重启了,但NFSv3是无状态的,客户端再执行锁操作可能会出错。
nfs的工作原理

NFS(Network File System)是一种允许远程计算机通过网络共享文件的协议和工具集合。
它的工作原理可以简要概括如下:1. 服务器端设置:在NFS服务器上,管理员需要设置共享文件系统并配置NFS 服务。
这包括指定要共享的目录、设置访问权限等。
2. 客户端挂载:客户端需要使用特定的命令将NFS共享目录挂载到本地文件系统中,使其在客户端上可用。
在挂载时,客户端通过指定服务器的IP地址和共享目录的名称来识别和连接NFS服务器。
3. NFS协议:NFS使用RPC(Remote Procedure Call)协议进行远程过程调用,客户端通过发送RPC请求到NFS服务器上的NFS服务程序。
这些RPC请求包含对共享文件的读取、写入和其他文件系统操作的请求。
4. 文件访问和传输:一旦客户端与NFS服务器建立连接并发送RPC请求,NFS 服务器会处理这些请求,执行文件系统操作,并将结果返回给客户端。
文件的读取和写入是通过网络进行传输的,NFS使用UDP或TCP协议进行数据传输。
5. 缓存和一致性:为了提高性能,NFS客户端会在本地维护一个文件和目录的缓存。
这允许客户端在不频繁访问NFS服务器的情况下使用缓存副本。
然而,NFS 需要确保数据的一致性,因此在对共享文件进行修改后,会通知客户端刷新缓存或使其无效,以保持数据的一致性。
6. 安全性和权限控制:NFS支持基于主机、IP地址和用户名等的访问控制,以确保共享文件的安全性。
服务器管理员可以配置访问权限和身份验证机制,以限制对共享文件的访问。
总的来说,NFS的工作原理是通过使用远程过程调用和网络传输,允许客户端远程访问和共享服务器上的文件系统。
它提供了一种方便的方式,使多台计算机能够共享文件并协作工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
rpc/xdr 编译器来生成服务器和客户机的“存根”,但是 NFS 不需要它 们的使用。可以使用提供等效功能的任何软件,如果编码完全相同,则 可以与其他 NFS 实现进行互操作。
如果响应状态为 NFS_OK,这时响应的属性中包含通过输入 fhandle 所指定的文件的属性信息。
2.2.3 设置文件属性
struct sattrargs { fhandle file;sattr attributes; }; attrstat NFSPROC_SETATTR (sattrargs) = 2;
attrstat NFSPROC_GETATTR(fhandle) = 1;
attrstat NFSPROC_SETATTR(sattrargs) = 2; void NFSPROC_ROOT(void) = 3;
diropres NFSPROC_LOOKUP(diropargs) = 4;
readlinkres NFSPROC_READLINK(fhandle) = 5;
虽然文件和目录在许多方面都是相似的对象,但读取目录和文件时使用 了不同的过程。这为表示目录提供了一种网络标准格式。可以使用与上 面相同的参数来对每个调用只返回一个目录条目的过程进行证明。问题 在于效率。目录可以包含多个条目,远程调用返回每个条目的速度太慢。
2.2 服务例程
协议定义通过一组例程进行定义,这些例程的参数和结果是使用 RPC 语言定义的(使用程序、版本和过程声明扩展的 XDR 语言)。对每个 例程功能的简要描述应提供足够的信息,以便于实施。第 2.3 节更详细 地描述了基本数据类型。
NFS 假定文件系统是基于目录进行分层的,目录为除底层文件之外的所 有内容。目录(文件、目录、设备等)中的每个条目都有一个字符串名 称。不同的操作系统可能对树的深度或使用的名称有限制,并且使用不 同的语法来表示“路径名”,这是名称中所有“组件”(目录和文件名) 的串联。“文件系统”是具有指定“根”的单个服务器(通常是单个磁
译者注: 从字面意义上可以看出,RPC 是一个跨越不同计算节点的过程调用,可 以理解为跨越不同计算机的函数调用。也就是说通过 RPC,你可以在一 台计算机上调用另外一台计算机上进程中的函数实现。如图 2 是一个简
答的调用示意图,客户端发起 RPC 调用,经过网络传输给服务端,服 务端进行处理后将结果返回给客户端。虽然经过了复杂的网络传输等过 程,但在客户端看来,就是进行了一次函数调用。
盘或物理分区)上的树。一些操作系统提供了一个“挂载”操作,使所 有文件系统显示为一棵树,而其他操作系统则维护一个文件系统的“森 林”。文件是未解释字节的非结构化流。NFS 的版本 3 使用了稍微更通 用的文件系统模型。
NFS 一次查找路径名的一个组件。这可能并不明显,为什么它不只是获 取整个路径名,沿着目录移动,并在完成后返回一个文件句柄。有几个 好理由不这么做。首先,路径名需要在目录组件之间使用分隔符,不同 的操作系统使用不同的分隔符。我们可以定义一个网络标准的路径名表 示,但是每个路径名都必须在每一端进行解析和转换。其他问题在第 3 节,NFS 实现问题中讨论。
假定 NFS 协议中的所有过程都是同步的。当一个过程返回到客户机时,
客户机可以假定操作已经完成,并且与请求相关联的任何数据现在都在
稳定存储中。例如,客户机写请求可能会导致服务器更新数据块、文件
系统信息块(如间接块)和文件属性信息(大小和修改时间)。当写操
作返回到客户机时,它可以假定写操作是安全的,即使在服务器崩溃的
void
NFSPROC_ROOT(void) = 3;
过时的。由于查找一个文件系统的根文件句柄需要在客户端和服务端移 动路径名称,因此本例程不在使用。要正确执行此操作,我们必须定义 路径名的网络标准表示。我们用 MNTPROC_MNT 例程代替了查找根 文件句柄的功能。(细节请参考附录 A,“挂载协议的定义”)
2.2.5 查找文件名
diropres NFSPROC_LOOKUP(diropargs) = 4;
如果回复的状态为 NFS_OK,这时应答的"file"和"attributes"分别是参 数中给定目录"dir"的文件句柄和文件“name”的属性。
2.2.6 从符号链接读取数据
union readlinkres witch (stat status) { case NFS_OK:path data;default:void; }; readlinkres NFSPROC_READLINK(fhandle) = 5;
readres NFSPROC_READ(readargs) = 6;
void NFSPROC_WRITECACHE(void) = 7;
attrstat
NFSPROC_WRITE(writeargs) = 8;
diropres NFSPROC_CREATE(createargs) = 9;
stat NFSPROC_REMOVE(diropargs) = 10; stat NFSPROC_RENAME(renameargs) = 11;
如果回复的状态为 NFS_OK,这时响应中的“data”是通过 fhandle 参数指定的文件的数据。
注意: 由于 NFS 仅仅在客户端解析路径名,符号链接的路径名在不同 的客户端意义是不同的(或者是无意义的)。
情况下,它也可以丢弃所写的数据。这是服务器无状态的一个非常重要
的部分。如果服务器等待从远程请求中刷新数据,客户机必须保存这些
请求,以便在服务器崩溃时重新发送它们。
/* Remote file service routines */ program NFS_PROGRAM {
version NFS_VERSION { void NFSPROC_NULL(void) = 0;
stat NFSPROC_LINK(linkargs) = 12;
stat NFSPROC_SYMLINK(symlinkargs) = 13;
diropres NFSPROC_MKDIR(createargs) = 14;
stat NFSPROC_RMDIR(diropargs) = 15;
readdirres NFSPROC_READDIR(readdirargs) = 16;
客户端服务端示意
图1
1.1 远程过程调用
Sun 的远程过程调用规范为远程服务提供了一个面向过程的接口。每台 服务器都提供一个“程序”,这是一组过程。NFS 就是这样一个程序。 主机地址、程序号和过程号的组合指定一个远程过程。NFS 的目标是不 需要低级别的任何特定可靠性级别,因此它可能用于许多底层传输协议, 甚至其他远程过程调用实现。为了便于讨论,本文的其余部分将假定 NFS 是在 Sun RPC 之上实现的,如 RFC 1057《RPC:远程过程调用协 议规范》中所述。
1.3 无状态服务
NFS 协议旨在尽可能无状态。也就是说,为了正常工作,服务器不需要 维护任何客户机的协议状态信息。无状态服务器在发生故障时比有状态 服务器有明显的优势。
对于无状态服务器,客户机只需要重试一个请求,直到服务器响应;它 甚至不需要知道服务器已经崩溃,或者网络暂时中断。另一方面,有状 态服务器的客户机需要检测服务器故障并在服务器恢复时重建服务器 状态,或者导致客户机操作失败。
statfsres NFSPROC_STATFS(fhandle) = 17; } = 2; } = 100003;
2.2.1 什么都不做
void
NFSPROC_NULL(void) = 0;
这个例程什么都不做,它在所有的 RPC 服务中都可用,以允许服务响
应测试和计时。
2.2.2 获取文件属性
attrstat NFSPROC_GETATTR (fhandle) = 1;
本备忘录的状态
本 RFC 描述了一个在太阳微系统公司(译者注:这里是指 SUN,当前 已经被 Oracle 收购)和其它正在使用的协议。新版本的协议正在开发 中,但其他人仍然可以从当前协议的描述中及设计问题的讨论中受益。 本备忘录的分发不受任何限制。
1. INTRODUCTION(引言)
Sun 网络文件系统(NFS)协议提供了透明的通过网络远程访问共享文 件的方式。NFS 协议被设计于可以很轻松的跨不同的机器、操作系统、 网络架构和传输协议。这种可移植性是通过使用建立在外部数据表示 (XDR)之上的远程过程调用(RPC)原语实现的。实现已经存在于从 个人计算机到超级计算机的各种机器上。
这听起来可能不是一个重要的问题,但它以一些意想不到的方式影响了 协议。我们认为,在协议中,能够编写不需要特殊崩溃恢复的非常简单 的服务器可能需要一些额外的复杂性。请注意,即使使用了所谓的“可 靠”传输协议(如 TCP),客户端仍必须能够通过在连接超时时重新打 开连接来处理服务中断。因此,无状态协议实际上可以简化实现。
NFS 文件系统协议及解析概要
本文是对 RFC1094 的翻译,它是 NFS 的第 2 版,之所以翻译这个版本 是因为它比较简单。后面会陆续完成第 3 版和第 4 版的翻译,并且完成 Linux 操作系统下 NFS 文件系统和其服务端的代码解析。作者为 SunnyZhang,翻译本文章出于如下几个目的: 1)练习英语,提升自身英语水平;2)进一步熟悉 NFS 协议;3)传播 存储相关知识。 另外,协议本身是纯文本格式,没有配图,因此理解起来可能有一定的 难度,因此译者在翻译的时候加入了一些译者注和插图,以方便大家理 解。不妥之处还请大家多批评指正。 更多存储相关技术文章可以关注本作者微信公众号或者头条号,名称为: itworld123