网络文件系统协议

上传人:jiups****uk12 文档编号:44671203 上传时间:2018-06-14 格式:PPT 页数:31 大小:74.50KB
返回 下载 相关 举报
网络文件系统协议_第1页
第1页 / 共31页
网络文件系统协议_第2页
第2页 / 共31页
网络文件系统协议_第3页
第3页 / 共31页
网络文件系统协议_第4页
第4页 / 共31页
网络文件系统协议_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《网络文件系统协议》由会员分享,可在线阅读,更多相关《网络文件系统协议(31页珍藏版)》请在金锄头文库上搜索。

1、网络文件系统协议l NFS11. 简介 lNFS是Sun发展的,对网络中的共享文件进行透明 远程访问的一种网络文件系统协议。lNFS协议是使用建立在外部数据描述(XDR)上的远 程过程调用(RPC)原语定义的。这使之具有广 泛的适应性:可适用于不同的机器、操作系统、 网络体系和传输协议。l此协议的实现已经存在于从个人电脑到超级计算 机等不同种类的机器上。 l协议允许服务器分发远程访问优先级给一个受限 制的客户集。l它执行了操作系统特定的功能,以允许把远程目 录树链接在本地的文件系统上。 21.1 远程过程调用 l Sun的远程过程调用规范提供了一种面向过程 的远程服务接口。.每一个服务器都提供

2、了一 个包含一组过程的“程序”。NFS就是一种这 样的程序。l主机地址、程序号和过程号的组合指定了一个 远程过程。NFS可以使用在多种底层的传输层 协议上,甚至可以使用在另一个远程过程调用 实现之上。l为了便于讨论,我们假定NFS实现在Sun的RPC 上。 31.2 外部数据描述 l 外部数据描述(XDR)标准提供了一个在网 络上描述数据类型的公用方法。NFS协议规 范实际就是用RPC数据描述语言书写的。要 想获得更多的信息,请参见RFC 1014 “XDR:外部数据描述标准“。41.3 无状态服务器 lNFS协议应该尽可能无状态。也就是说,服务器 应该不必保持关于它的客户端的任何协议状态信

3、息。在失败事件发生时,无状态服务器比有状态 服务器有明显的优点。l在无状态服务器中,客户端仅仅需要重发请求直 到服务器响应;客户端甚至不需要知道服务器已 经崩溃或者是网络临时故障。而有状态服务器的 客户端要么需要检测服务器失败,并且在服务器 恢复的时候重建服务器状态,或使客户端操作失 败。 5l简化恢复的基本方法就是尽可能 的采取“幂等”操作(为了它们 有被重复的潜力)。这个协议各 种版本中,大多数操作(例如 Read 和Write)是幂等的; NFS 中也有一些操作不能幂等。对非 密等操作协议中均给与了明确提 示。62. NFS 协议定义 l随时间改变,服务器使用的协议也 可能改变。不同服务

4、器使用的NFS版 本也可能不同。为此,RPC对每一个 RPC请求都提供了一个版本号。l已经定义了NFS协议的三个版本。即 使在第三版中,也有少部分过时的 过程和参数,这将在以后的版本中 被删除。 72.1 文件系统模型 lNFS假定文件系统是分层次的,除了最底层是文件, 其它层次都是目录。在目录中的每一个条目(文件, 目录,设备等)都有一个字符串名。不同的操作系统 可能在目录树的深度或者使用的名字上有所限制,就 象用不同的语义来描述“路径名”,它是在名字中把 所有组成部分(目录和文件名)串联起来。l一个“文件系统”就是在一个服务器上(通常是一个 磁盘或者物理分区)有一个指定的“根”的树。一些

5、操作系统提供了“安装”操作使所有的文件系统出现 在一棵单一的树上。而其它的操作系统保持着一个文 件系统“森林”。l文件是由无解释字节组成的无结构流。l第三版的NFS使用更普遍的文件系统模型。 8l NFS一次只查询路径名中的一个组成部分。 为什么不一次就得到整个路径名,返回一个 文件句柄呢?这里有一些不这样做的原因。l例如,路径名需要在路径的组成部分之间有 分隔符,不同的操作系统可能使用不同的分 隔符。我们可以定义一种网络上标准的路径 表示法,但是,这样做,对于每一个路径名 在每一个终点上(网络节点)都必须进行语 法分析和转换。9l 在NFS协议中的所有过程都假定是同步的。当 一个过程返回给客

6、户端完成信息,则客户就可 以假定此操作已经完成,并且与请求相关的任 何数据都处于一个稳定的存储器上。l例如,客户端的WRITE请求可能导致服务器更 新数据块、文件系统信息块(比如间接块)、 和文件属性信息(大小和修改时间)。当 WRITE返回给客户端完成信息后,客户端就可 以假定这个写操作是可靠的。甚至在服务器崩 溃的情况下,它也可以恢复这些已经写的数据 。这就是服务器无状态的一个非常重要的部分 。 l任何请求,只要服务器没有返回完成信息,客 户端都必须保存这些请求, 以便在服务器崩 溃的情况下再次发送这些请求。 102.2 服务器过程 l这个协议被定义为一组过程,这组 过程含有用RPC语言定

7、义的参数和 结果。lRPC语言实际上是XDR语言在程序、 版本、过程声明方面的扩展。l协议中每一个过程功能的简要描述 都应该提供足够允许实现的信息。112.2.1 不做工作 void NFSPROC_NULL(void) = 0; 这个过程不做工作,在所有RPC服务中它可以 用来允许服务器响应测试和定时。2.2.2 获得文件属性 attrstat NFSPROC_GETATTR (fhandle) = 1; 如果响应状态是 NFS_OK,则返回由输入 fhandle指定的文件的属性。 122.2.3. 设置文件属性 struct sattrargsfhandle file; sattr att

8、ributes; ; attrstat NFSPROC_SETATTR (sattrargs) = 2;“attributes”值参数包含着一些字段,这 些字段要么是 -1,要么是 “file”的文件属 性的一个新值。如果响应状态是NFS_OK,那么 由文件柄fhandle指定的文件的属性被重新设置 。 注意: -1指示在 “attributes“中一个没有使用 的字段,在协议的下一版本将修改。 132.2.4 获得文件系统的根 void NFSPROC_ROOT(void) = 3; 已经过时。这个过程不再使用。查询 根文件句柄已经由MNTPROC_MNT过程来实 现。(详细情况请参见附录A

9、,“安装协 议定义”) 142.2.5. 查询文件名 diropres NFSPROC_LOOKUP(diropargs) = 4; 如果响应“status“是NFS_OK,响应 “file“和 响应 “attributes“是参数 “dir“给定的目录中 的文件名的文件句柄和属性。 152.2.6 从符号链接读 union readlinkres switch (stat status) case NFS_OK: path data; default: void; ; readlinkres NFSPROC_READLINK(fhandle) = 5; 如果 “status“的值是NFS_O

10、K,响应 “data“是 fhandle参数引用的文件的符号链接中的数据 。 注意:因为NFS总是在客户端解析路径 名,如果在不同的客户端或者服务器上使用不 同的语义,那么在一个符号链接中的路径名可 能有不同的含义(或者无意义)。 162.2.7 从文件中读 struct readargs fhandle file;unsigned offset;unsigned count; unsigned totalcount; ; union readres switch (stat status) case NFS_OK: fattr attributes; nfsdata data; defaul

11、t: void; ; readres NFSPROC_READ(readargs) = 6; 17在由 “file“给出的文件中,从 “offset”字节偏移开始返回 “count“ 个字节的 “data“。 这个文件的第一个 字节是偏移量0。在读操作发生后,文件 属性从 “attributes“中返回。 注意 :参数 “totalcount“没有使用,在协议 的下一修订版中将删除。 18l2.2.8 写到缓冲区 void NFSPROC_WRITECACHE(void) = 7; 将在协议的 下一修订版中使用。 l2.2.9 写到文件 struct writeargs fhandle fil

12、e; unsigned beginoffset; unsigned offset; unsigned totalcount; nfsdata data; ; attrstat NFSPROC_WRITE(writeargs) = 8; 19从“ f i l e “ 开 头 偏 移 的“ o f f s e t “ 字 节 处 开 始 写 数 据“ d a t a “ 。 文 件 的 第 一 个 字 节 是 在 偏 移 0 的 位 置 。 如 果 响 应 状 态“ s t a t u s “ 是 N F S _ O K , 那 么 在 写 操 作 完 成 后 响 应 属 性“ a t t r i

13、 b u t e s “ 中 包 含 着 文 件 的 属 性 。 写 操 作 是 原 子 的 , 从 这 次 “ W R I T E “ 中 写 入 的 数 据 不 会 与 客 户 端 的 另 一 次 “ W R I T E “ 写 入 的 数 据 混 合 在 一 起 。注 意 : 参 数 “ b e g i n o f f s e t “ 和 “ t o t a l c o u n t “ 被 忽 略 , 在 协 议 的 下 一 修 订 版 中 将 被 删 除 。从 “file“开头偏移的 “offset“字节处开始写数 据 “data“。文件的第一个字节是在偏移0的位 置。如果响应状态 “

14、status“是NFS_OK,那么在 写操作完成后响应属性 “attributes“中包含 着文件的属性。写操作是原子的,从这次 “WRITE“中写入的数据不会与客户端的另一次 “WRITE“写入的数据混合在一起。 注意: 参数“beginoffset“和“totalcount“被忽略, 在协议的下一修订版中将被删除。20l2.2.10 创建文件 struct createargs diropargs where; sattr attributes; ; diropres NFSPROC_CREATE(createargs) = 9; 文件“name“创建在由 “dir“指定的目录 中。新文件的初始属性由“attributes“决定。 NFS_OK的响应状态表明这个文件被创建。响应 “file“和响应“attributes“是这个文件的文件 句柄和属性。任何其它的响应状态 “status“ 都意味着此操作失败,没有文件被创建。 注意: 这个例程可以传递一个排它的创建标 志,意味着“仅在文件不存在的时候创建这个 文件”。 21l2.2.11 删除文件 stat NFSPROC_REMOVE(diropargs) = 10; 文件 “name”从 “dir”确定的目录中 删除。NFS_OK的响应意味

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号