1、分布式操作系统Distributed OS分布式文件系统提纲n7.1 分布式文件系统的要求n7.2 分布式文件系统的组成n7.3 设计策略n7.4 接口n7.4.1 展开文件服务 7.4.2 与UNIX的比较 7.4.3 目录服务n7.5 文件系统实现技术n7.5.1 文件组结构n7.5.2 权限和存取控制n7.5.3 文件定位n7.5.4 高速缓存n7.6 NFS分析7.1 分布式文件系统的要求n分布式文件系统是分布式系统的基本构件之一,完成的功能类似与传统操作系统的文件系统。它用来支持永久性存储介质和信息的共享,允许用户程序直接存取远程文件而不需要拷贝到本地站点。n文件系统在分布式操作系统
2、中使用最频繁,因此它的功能和性能要求很高。其设计需要满足分布式系统中的一些透明性要求。要均衡灵活性和扩展性两方面的考虑。n当前的分布式文件系统大多支持以下部分的透明性:n存取透明性:不知道文件的分布。n位置透明性:全局文件名空间。n并发存取透明性:一个用户修改不影响另一用户。n故障透明性:客户端或服务器端故障时不影响其它的正确操作。n性能透明性:不会因距离而产生过多的性能衰减。7.1 分布式文件系统的要求n此外,分布式系统必须满足两个主要条件:n系统的异构性:必须定义系统的接口,体现开放性。n扩展性:系统能够增量扩展。n当系统包括大量源节点时,需要考虑透明性:n复制透明性:某个文件在不同站点可
3、有多个副本。n迁移透明性:文件迁移不会导致程序和系统管理表的变化。n细粒度分布式数据的支持:对子单元的数据进行共享。n网络分割:可能由于误操作所致,。7.1 分布式文件系统的要求n分布式文件系统包括3个组件展开文件服务、目录服务和客户组件:7.2 分布式文件系统的组成n三个组件的功能定义如下:n展开文件服务展开文件服务涉及到实现对文件内容的操作。文件的惟一标识符(UFID)在展开文件服务操作请求中用来标识文件。文件服务和目录服务的功能就是根据UFID(长整型、唯一性)划分;n目录服务目录服务提供文件文本名到UFID的映射。当创建文件时,客户组件把文件的标识符连同文本名记录在目录里。用户就可以通
4、过把文件的文本名提交给目录服务,从而获得文件的惟一标示符。目录服务提供了生成、修改目录以及从目录中取得文件标识副的功能。7.2 分布式文件系统的组成n单一的客户组件客户组件运行在每一台客户机上。它集成并扩展了适合客户机上用户程序的单一编程接口下的展开文件服务和目录服务操作。此外,客户组件还能通过在客户机上高速缓存最近使用的文件块而达到满意性能。7.2 分布式文件系统的组成n分布式文件系统至少应具有与常规文件系统相同的功能、通用性,而具有更高的性能。它们需要适合于特定用户,实现不同用户间高层上的系统共享。n1.展开文件服务。设计成能提供简单、通用目标的操作集合。n2.容错性。在客户或服务器故障时
5、必须能够继续工作。n3.目录服务。创建和修改单级目录结构的基本目录服务。其它功能包括分析路径名,将目录组织成多级结构并执行搜索。n4.客户组件。把展开文件服务中远程过程调用接口所使用的文件惟一标示符及目录服务从用户层的应用程序中隐藏起来。当需要时,客户组件根据文件标示符定位文件。7.3 设计策略n可以通过对接口过程的简单描述来描述这些系统接口。过程名、输入参数、结果、错误条件的产生以及操作如下:7.4 接口过程名(变量1,变量2,)(结果1,结果2,)Reports(错误1,错误2,)描述n输入参数数列在过程名后面的括号里。它的命名遵循下面的规则。结果列在输入参数后面,中间用箭头隔开。其命名规
6、则同输入参数一样。所有可能的异常和错误条件都列在关键字Reports的后面。Read(File,i,n)Data Reports(BadPosition)n定义了包含三个输入参数的Read过程。即文件的惟一标识符,两个整型数i、n表明从文件的i位置 读出n个数据。如果i超过了文件的长度,会引起一个BadPosition错误。n下面接口是客户组件使用的RPC接口。如果服务器处理请求时文件不存在或者操作所要求的存取权限不正确时,文件的惟一标识符是无效的。7.4 接口7.4.1展开文件服务n这里讨论的接口与UNIX文件系统中的原语在功能上等价。与UNIX接口相比,展开文件服务没有打开和关闭文件操作。
7、展开文件接口与UNIX文件系统接口最主要的区别在于容错性:n重复性操作:除了Create操作外,所有的操作都是幂等的。Create的重复执行使得每个请求都将产生一个新文件,造成空洞问题。n不稳定的服务器:对不稳定的服务器来说,执行接口的功能是可行的。在故障发生后,客户和服务器不需要恢复到以前的状态就可以重新启动并继续执行。n展开文件服务的使用:服务接口可用于构建客户组件或用户包。它可用于提供应用程序所需的各种高级接口,为了简单描述文件系统的操作,使用了类似展开文件服务中文件操作的模型,忽略了GetAttributes和SetAttributes两个操作,增加了length函数。7.4 接口7.
8、4.2 与UNIX比较n1 目录服务的任务。其主要任务是完成文件的文本名到惟一标识符的转换。为完成此转换,它保存了含有文本名到惟一标识符映射关系的目录文件。各目录服务跟一般的文件一样被保存,并有惟一的文件标识符。(文件系统的客户)。n改变目录有3种操作:AddName、ReName和UnName。AddName向目录增加一个条目并使文件属性记录的引用计数值增大。ReName更改文件的文本名,UnName删除文件。7.4 接口7.4.3 目录服务n2 构建一个分层文件系统。类Unix分层文件系统由排成树结构的目录组成。每个目录含有自身可以存取到的文件和其他目录的名字。n一个类UNIX文件命名系统
9、可以由采用了展开文件服务和目录服务的客户组件实现。树形目录可以这样实现:叶节点是文件,其他节点是目录。这种方法可以用AddName操作和属性记录中的引用数值来实现。7.4 接口7.4.3 目录服务n1 文件组的作用。n文件组是安装在服务器计算机上文件的集合。一个服务器可以包含多个文件组,文件组可以在服务器上移动,但文件不能改变其所属的组。文件组最初是为了支持不同计算机上可拆卸磁盘上文件集间的移动。分布式文件系统中,文件组支持文件服务器以更大的逻辑单元收集文件,以及实现文件在多个服务器上的存放。7.5 文件系统实现技术7.5.1 文件组结构n2 空间漏洞。n当事件的序列发生在对系统永久性不可存取
10、的存储空间时,系统中就会产生空间漏洞。文件和目录的分离所造成的缺陷是磁盘空间漏洞产生的原因。n当创建文件的应用程序终止时,没有把文件的惟一标识符写入目录或者删除该文件,就会产生空间漏洞。7.5 文件系统实现技术7.5.1 文件组结构n权限在分布式系统中用于防止资源遭受非授权的存取。n展开文件服务用来管理基于基于权限的存取控制,在对文件进行操作时,客户必须拥有正确的权限。n文件惟一标识符的结构。展开文件服务必须生成惟一的文件标识符,并使其不被伪造。实现唯一性的一种办法:文件组标识符+文件编号+随机数。n文件的存取控制基于UFID所形成的对文件的存取权限,即存取控制就是对授权用户隐藏UFID。7.
11、5 文件系统实现技术7.5.2 权限和存取控制n允许字段的加密。为了避免整个文件系统安全性的问题,可以将字段与随机数进行加密以生成单独的37位数字。n文件表示。展开文件服务管理着服务器磁盘上文件的存储。文件中的数据存储在非连续的空间块上。通过记录块指针的顺序来组织文件。索引块(独立数据结构)记录了这个顺序,它支持对文件的数据进行顺序存取或自由存取。索引块结构:7.5 文件系统实现技术7.5.2 权限和存取控制n响应文件服务请求的第一步是确定含有所请求文件组的服务器。这个由客户组件完成的。第二步是定位出被请求文件的块索引,这由含该文件的服务器自身完成。7.5 文件系统实现技术7.5.3 文件定位
12、n服务器的高速缓存。通过在服务器节点的本地存储器中保留最近使用的块副本可降低文件存取的开销。大多数文件服务器都包含一个高速缓存系统。磁盘块的高速缓存由主存的一部分区域按队列顺序组成,各块的大小与磁盘块的大小相同,各块都包含一个块指针。此后读该块的请求就可以直接从高速缓存中读出内容。n客户机的高速缓存。服务器高速缓存不能减少由于网络等待和服务器负载造成的延迟,可在客户机上高速缓存文件最近存取的块、文件属性及文件条目。7.5 文件系统实现技术7.5.4 高速缓存nNFS是第一个被设计成产品的文件系统。nNFS为运行在UNIX等系统上的客户程序提供了存取远程文件的透明性。在NFS网络中每台计算机既可以充当客户又可以充当服务器。NFS的主要目标是实现在高层上支持不同种类的硬件和操作系统。其它的目标:n存取透明性;n位置透明性;n故障透明性;n性能透明性;n迁移透明性;7.6 NFS分析nNFS未考虑一些要求:n复制透明性;n并发透明性;n扩展性;n实现;7.6 NFS分析