1、第十章 分布式文件系统,简介 文件服务系统结构 NFS网络文件系统 Coda文件系统,简 介,文件系统 持久存储(persistent storage) 分布式文件系统 持久存储 信息共享 类似(有时更好)的性能和可靠性,各种存储系统及其特点,共享,持久性,分布式 缓存/复制,一致性维护,示例,Main memory,RAM,File system,UNIX file system,Distributed file system,Sun NFS,Web,Web server,Distributed shared memory,Ivy,1,1,文件系统的特点,功能 组织, 存储, 检索, 命名,
2、 共享和保护 文件相关的重要概念 文件:包含数据和属性 目录:提供从文件名到内部文件标识映射的特殊文件 元数据:额外的管理信息,包括属性、目录等 文件系统结构 文件系统操作,文件属性,文件系统结构,分布式文件系统还需要附加模块实现客户服务器通信、分布式命名和文件定位,UNIX文件系统操作,分布式文件系统的需求(1),透明性 访问透明性 位置透明性 移动透明性 性能透明性:当服务负载在一定范围内变化时,客户程序可以保持满意的性能 扩展透明性:文件服务可以扩充,以满足负载和网络规模的增长 并发文件更新 并发控制:客户改变文件的操作不影响其他用户访问或改变同一文件的操作 文件复制:多个副本 更好的性
3、能与容错 硬件和操作系统异构性:文件服务的接口必须有明确的定义。在不同操作系统和计算机上实现客户和服务器软件,分布式文件系统的需求(2),容错 为了处理暂时的通信错误,容错设计可以基于最多一次性语义 对于幂等操作:支持最少一次性语义 无状态的服务器: 崩溃重启时不需恢复 一致性 Unix提供单一副本更新语义 当文件在不同地点被复制和缓存时,可能会偏离单一副本更新语义 安全性 身份验证,访问控制,安全通道 效率 应提供比传统文件系统相同或更强的性能和可靠性,分布式文件系统的关键目标,如何保证透明性? 如何保证性能? 如何保证容错? 如何保证并发操作?,文件服务系统结构,文件服务的三个模块: 平面
4、文件服务 (Flat file service) 对文件内容进行操作 文件唯一标识符 (Unique file identifier (UFID) 目录服务(Directory service) 生成目录 在目录中加入新文件名 提供从文件名到UFID的转换,客户通过向目录服务提供文件名获得文件的UFID 是平面文件服务的客户 客户端模块 提供单一应用程序接口,支持应用程序透明地存取远程文件服务,文件服务系统结构,平面文件服务接口 平面文件服务操作,平面文件服务接口,与Unix比较 无open和close操作 Read和write操作执行于指定的开始点 原因:出于容错的考虑 可重复的操作 除了c
5、reate,所有的操作都是幂等的,允许至少一次的RPC语义 无状态服务器 文件操作无指针 崩溃重启时不需恢复,目录服务操作,提供从文件名到UFID的转换,层次性文件系统,目录树 每个目录是一个特殊文件 存储包含的文件和其他目录的名字 路径名 引用文件和目录 多部分名,如 “/etc/rc” 在目录树中查找 借助多个Lookup操作翻译路径名 客户端的目录缓存,分布式文件系统访问控制,Unix文件系统 系统会将用户的访问权限与 open 调用要求的模式(读或写)相比较 无状态的分布式文件系统 访问权限在服务器进行 访问控制的方法: 基于权能的验证(权能作为以后一系列的访问许可被返回给客户) 每次
6、请求都发送用户ID,每次文件操作,服务器都进行访问检查 AFS(Andrew文件系统 ) 和 NFS中的Kerberos,SUN网络文件系统NFS,NFS简介 通 信 进程 命名 同步 缓存和复制 容错性 安全性,NFS简介,NFS是Sun Microsystem公司1985年研制的网络FS,它是基于UNIX的,是第一个形成产品的DFS。 NFS正在努力成为工业标准。 NFS支持不同类型的系统,每台计算机在系统内安装NFS的客户组件和服务器组件。 NFS的实现思想、协议、实现都非常有特色,实现思想,基本思想:让客户集和服务器的任何一个集合共享一个公用FS,NFS允许一台计算机既是客户机又是服务
7、器。 当一个服务器输出某个目录时,该目录为根的子目录树同时被输出。服务器输出的目录列标记在文件的/etc/export中。 客户通过安装方式访问服务器的输出目录。 基本特征:服务器输出目录,客户从远处安装它们。 优点:当多个客户机同时安装同一个目录时,它们可以通过共享公用目录者的文件来进行通信。,NFS 体系结构 (1),远程访问模型 上传/下载模型,远程访问模型:客户被提供文件操作的接口,服务器负责实现这些操作。 服务器实现的功能较复杂,容易造成服务器瓶颈。 上传/下载模型:客户从服务器下载文件后,在本地访问该文件;完成对该文件的访问后,再将该文件上传回服务器。 服务器功能简单,对文件内部的
8、操作全部由客户端自行完成。所以,要求客户端有较大的空间。 另外,每次进行的是整个文件的传送,从而给网络带来许多不必要的压力。,NFS体系结构 (2),UNIX系统的基本NFS 结构,NFS在很大程度上独立于本地文件系统,虚拟文件系统VFS,VFS对每个文件系统的所有细节进行抽象,使得不同的文件系统在操作系统核心以及系统中运行的其他进程看来,都是相同的。 VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。 VFS在系统启动时建立,在系统关闭时消亡。 VFS拥有关于各种特殊文件系统的公共界面,如超级块、inode、文件操作函数入口等。,文件系统模型,NFS文件系统模型与UNI
9、X系统提供的文件系统模型很类似: 文件是字节流,层次化组织在命名图中 每个文件有文件句柄 支持硬链接和符号链接,文件系统模型,NFS支持的文件系统操作的不完全列表.,通 信,在NFS version 3中从文件读取数据 在NFS version 4中使用复合过程从文件读取数据,每个NFS操作都可以被实现为文件服务器的单一远程过程调用RPC,可以通过支持复合过程来提高性能,复合过程并不包含事务处理语义,进程-无状态和有状态的方法,在NFS version 3 中NFS协议是无状态的,也就是说,服务器不必保持关于它的客户端的任何协议状态信息 优点是简单性:在失败的事件发生的时候,不需要进入回到原先
10、状态的恢复阶段。 缺点是客户端得不到任何关于请求是否得以执行的保证。 在NFS version 4 中NFS放弃无状态的方法 无状态的模型难以实现文件锁 某些身份验证需要服务器保留客户的状态 需要高速缓存协议,这些协议与保留客户文件信息的服务器合作的最好(如租用),命名 (1),NFS中装入(部分)远程文件系统.,NFS命名模型为客户提供完全透明的访问由服务器保存的远程文件系统的机制 服务器可以输出(export)某个目录 用户不共享名称空间;解决办法:提供一个部分标准化的名称空间,命名 (2),NFS中从多个服务器装入嵌套目录,命名 (3),文件句柄 对文件系统内文件的引用 对文件是不变的,
11、可以缓存在客户端 文件属性,文件属性 (1),NFS中的强制文件属性,文件属性 (2),NFS中的推荐文件属性,同步-NFS中文件共享的语义 (1),在单处理器上,read操作出现在write操作之后时, read操作返回的是刚写入的值。 使用缓存的分布式系统可能返回过时的值,同步-NFS中文件共享的语义(2),四种处理分布式系统中文件共享的方法,同步-NFS中文件共享的语义(3),不可改变的文件: 文件不可更改,文件上的操作只能是create和read 使用新文件替换旧文件:文件不能更新,但目录可以更新 替换冲突问题:使用最后一个新文件或随机选择 文件被替换,而已被其他进程读取 继续使用旧文
12、件 检测文件已经改变,使随后的读取请求失败,同步-NFS中的文件锁定 (1),NFS version 4 上关于文件锁定的操作,同步-NFS中的文件锁定 (2),锁定文件的隐含方法-NFS共享预约:客户打开文件时,指定它所需的访问类型(READ、WRITE或BOTH),以及服务器应该拒绝的其他客户的访问类型( NONE、READ、WRITE或BOTH ),同步-NFS中的文件锁定(3),使用NFS共享预约实现操作的结果(新客户试图打开另一客户已成功打开的文件)当前文件的拒绝状态下客户请求共享访问的情况在当前文件访问状态下,客户请求拒绝状态的情况,请求访问,当前访问 状态,缓存和复制-客户端缓存
13、 (1),NFS中的客户端缓存 : 读操作缓存和写操作缓存(实现会话语义) 同一机器上的多客户可以共享一个高速缓存,缓存和复制-客户端缓存 (2),使用 NFS version 4 回调机制撤销文件委派,文件委派:服务器可以某些权限委派给用户,如共享预约: 来自同一机器上客户的文件锁定可在本地处理 服务器拒绝来自其他机器上的锁定请求,容错性-RPC 故障,处理重传的三种情况 请求正在处理 刚返回响应 早已返回响应,但响应丢失,NFS的底层RPC不能保证可靠性,而且缺乏对重复请求的检测 NFS 服务器提供重复请求高速缓存解决:XID事务处理标识符,容错性,出现故障的文件锁定 客户端崩溃:使用租用
14、 要考虑时钟同步 发送租用更新消息的可靠性 服务器崩溃:进入宽限期,只接收要求归还锁的请求 出现故障的打开委派 客户端崩溃:文件修改可能丢失 服务器崩溃:恢复时要求客户返回修改,撤销委派 服务器的文件是最新修改的 服务器再次完全控制了文件,可以将文件委派给其他客户,安全,NFS 安全性架构,使用安全RPC建立安全通道 在NFS version 4 之前只支持身份验证: 系统身份验证:客户向服务器以明文发送用户ID、组ID,服务器假设客户已通过登录过程,且信任客户所在的机器 安全NFS: 使用Diffie-Hellman方法建立共享会话密钥;密钥太短(192位) Kerberos协议,安全 RP
15、Cs,NFS version 4 中的安全RPC,NFS version 4支持通用的安全框架RPCSEC_GSS RPCSEC_GSS不仅支持不同的身份验证系统,而且支持消息的机密性和完整性 NFS安全设计为不仅支持自己的安全性机制,而且支持处理安全性的标准方法,GSS-API,GSS-API 提供了三种类型的安全服务: 验证验证是 GSS-API 提供的基本安全性,它是指对身份进行验证。如果用户通过了验证,则系统会假设其有权以该用户名进行操作。 完整性完整性是指对数据的有效性进行验证。即使数据来自有效用户,数据本身也可能会损坏或遭到破坏。完整性可确保消息与预期的一样完整(未增减任何内容)。
16、 保密性保密性可确保拦截了消息的第三方难以阅读消息内容。 针对网络应用程序使用 RPC协议的程序员可以使用 RPCSEC_GSS 来提供安全性。 RPCSEC_GSS 可提供 GSS-API 的所有功能,但其方式是针对 RPC 进行了调整的。 实际上,RPCSC_GSS 可用于向程序员隐藏 GSS-API 的许多方面,从而使 RPC 安全性具有更强的可访问性和可移植性。,访问控制(1),NFS访问控制的操作分类,访问控制 (2),NFS中关于访问控制的各种用户和进程,Coda 文件系统,Coda 概述 通 信 命名 缓存和复制 容错性 安全性,Coda概述 (1),Coda分布式文件系统是由卡
17、耐基梅隆大学1990年开发的一个分布式文件系统。源于AFS(Andrew file system)第二版,在移动计算处理上具有很多别的系统没有的先进特性(如高可用性)。 具有以下特性: 离线状态下移动客户端仍可操作 保持离线状态客户端的数据一致性 错误恢复 解决服务器之间的冲突 处理服务器之间的网络故障 处理断开的客户端 性能和可靠性 客户端可靠性能、持久的保存文件、目录以及属性。 回写式缓存 安全性 Kerberos方式身份验证 访问控制列表 可以免费获取源代码,Coda概述 (2),AFS的总体组织结构,AFS节点分成两组:Vice服务器和Virtue工作站,Coda概述 (3),Virt
18、ue 工作站的内部组织,每个Virtue 工作站都有一个Venus用户级进程: 作用类似于NFS客户,负责维护访问Vice服务器文件的机制 还负责使客户即使不能访问文件服务仍可继续执行,Coda概述 (4),Vice服务器上的进程 Vice文件服务器:维护本地文件,以用户态运行 身分验证服务器 更新进程:保持文件系统上的元信息在每台Vice服务器上保持一致,通信 (1),Coda RPC2 系统中的副作用,RPC2要比传统RPC复杂得多: 在UDP协议上提供可靠的RPC:调用远程过程时,客户端启动新线程负责与服务器的通信;服务器有规律的向客户返回消息,表示仍在处理请求。 支持副作用( Side
19、 effects ):提供副作用例程接口,客户和服务器可以使用针对应用程序的协议进行通信的机制 支持多播,通信 (2),一次发送一个无效化消息 并行地发送无效化消息,Coda中服务器需要记录哪些客户具有文件的本地拷贝,当文件被更改时,需要通过RPC通知这些客户,使其本地拷贝失效。可以使用多播。,命名,Coda客户访问单一的共享名称空间,Coda的命名系统类似UNIX。 使用卷(volume),类似磁盘分区 是构造整个名称空间的基本单元 是服务器端复制的单元,当装入一个卷时,每个Venus进程确保以/afs为根的命名图总是Vice服务器共同维护的完整名称空间的一个子图,文件标识符,Coda文件标
20、识符的实现和解析,Coda的每个文件包含于唯一的一个卷中,该卷可能复制于多个服务器。 物理卷:有自己的VID(卷标识符) 逻辑卷:可能被复制的物理卷,关联一个RVID(复制卷标识符)。多个副本与一个RVID关联。 一个文件对应96位的文件标识符。,缓存和复制-客户端缓存,Coda中打开会话时本地备份的使用,客户端缓存的重要性: 可扩展性 容错性 Coda高速缓存整个文件 回叫承诺:服务器记录哪些客户在本地缓存了文件的拷贝 如果文件被客户更改,会通知服务器,后者向其他客户发无效化消息(回叫中断:服务器废弃回叫承诺) 如果客户在服务器上有未被废弃的回叫承诺,它就可以安全地在本地访问文件。,缓存和复
21、制-服务器复制,对于同一复制文件,具有两个不同AVSG的客户,VSG (Volume Storage Group)是一个保存同一复制卷的服务器集合。 可用的VSG成员叫做AVSG (Available VSG members)。Coda使用ROWA(read one, write all)来维护复制卷的一致性 使用版本记录方案检测不一致性,容错性-断开连接的操作(1),对于一个卷, Coda客户的状态转换图,Coda允许客户在断开连接时(AVSG为空)的继续操作。 使用本地备份,再次连接后回传服务器。 基于事实:两个进程打开相同的文件进行写操作很罕见。 使用储藏技术(hoarding)。,容错
22、性-断开连接的操作(2),Coda使用复杂的优先级技术确保有用的数据已被缓存 计算优先级 用户可以在储藏数据库存储路径,声明重要的文件户目录 最近的文件引用信息 根据优先级获取文件,满足平衡状态的三个条件 未缓存的文件优先级不比任何已缓存的文件优先级高 高速缓存已满或没有任何未缓存的文件具有非零的优先级 每个缓存的文件都是客户AVSG中维护的文件拷贝 储藏走查(hoard walk):重新组织高速缓存以保持平衡,安全性-安全通道 (1),RPC2中的相互身份验证,Coda安全体系结构: 使用安全RPC和系统级的身份验证建立安全通道 处理文件的访问控制,安全性-安全通道 (2),在Coda 中建立 Venus client 和 Vice server 间的安全通道,系统级的身份验证,类似Kerberos方式身份验证: 客户利用密码生成KA,AS,从身份验证服务器AS获得身份验证令牌CT= A,TID,Ks(会话密钥), Tstart, Tend 和密文令牌ST=KviceCT (Kvice是服务器共享的密钥) 客户想与服务器建立安全通道时,发送密文令牌ST=KviceCT 服务器使用Kvice,得到CT,从而得到Ks,安全性-存取控制,Coda 中的文件和目录操作分类出于简单性与扩展性的原因,Vice服务器只将目录与访问控制列表关联,小 结,NFS和 Coda 间的比较,