您好,欢迎访问三七文档
分布式操作系统分布式文件系统文件服务和文件服务器文件服务和文件服务器:–文件服务:文件系统提供给客户的内容详细说明。它描述了可用的原语,以及原语所需的参数和执行的动作;对于客户来说,文件服务精确地定义了他们所期望的服务,但并不涉及服务如何实现。文件服务说明了文件系统对客户的接口。对任何分布式系统来说,文件系统都是其中的一个关键组成部分。与在单处理机系统中一样,分布式系统中文件系统的工作也是存储程序和数据,在需要时可使用它们。–文件服务器:运行于某台机器上的一个有助于实现文件服务的进程。一个系统可以有一个或多个文件服务器,每台服务器提供不同的文件服务。客户可能不知道有多少个文件服务器以及每个服务器的位置和功能。知道的是调用文件服务时,所要求的工作执行方式和返回的结果。例如,一个分布式系统可以有两个文件服务器,分别提供UNIX文件服务和MS-DOS文件服务,每个用户进程可以分别地使用适合它的文件服务器。5.1分布式文件系统设计文件系统包括:文件服务和目录服务。–文件服务:提供涉及单个文件的操作,包括读、写和追加等功能;–目录服务:提供涉及目录的操作,包括创建、删除目录,目录中增加、删除文件等功能。5.1.1文件服务接口文件的定义;文件是一个未经解释的字节序列。文件中信息的含义和结构完全取决于应用程序,操作系统仅把它看作是一个字符流。文件类型;在主机上存在着多种类型的文件,每种类型的文件都有各自不同的特性。一个文件可以组织成一个记录系列,大部分文件服务器都支持文件作为一字节序列的概念.文件属性;文件有多个属性,这些属性都是关于文件的一部分信息,而不是文件本身的一部分。典型的属性有:所有者、大小、创建日期和访间权限。文件服务通常提供读写某些属性的原语.文件保护:–不可变文件;文件创建后通常是可以修改的,但在某些分布式系统中,对文件的操作只有CREATE和READ。一旦文件创建了,就不能政变它。这样的文件称为是不可变的(immutable)。保持文件的不可变性,使得支持文件高速缓存和复制变得更为容易,因为它消除了有关文件改变时必须修改所有文件拷贝的问题。–权能(capability)和存取控制表每个用户拥有访问每个对象的某种权力,称作权能。权能指定了允许的访问类型。所有的存取控制表将每个文件与可以访问它的用户以及访问方式联系起来。UNIX通过使用二进制位来分别控制所有者、所有者组、以及其他每个人对每个文件的读、写、以及运行。文件服务类型:文件服务可以分成两大类–上载/下载模式;文件服务只提供两种主要的操作:读文件和写文件。前一个操作是将整个文件从一个文件服务器传送到提出请求的客户:后一个操作是将整个文件从客户传送到服务器。可在任一方向上传送整个文件。文件可以存储在内存或本地的硬盘。优点是概念简单。应用程序取得所需的文件在本地使用,任何修改过的文件或新创建的文件在程序结束时都要将它回写。不需要掌握复杂的文件接口,文件传送高效。但客户端须有足够大的存储空间,若只需文件的一小部分,移动整个文件很浪费。–远程访问模式;在这种模式中,文件服务提供了大量的操作用于打开和关闭文件,读写文件的一部分,在文件中来回移动,检查和改变文件属性等等。而在上载/下载模式中,文件服务只提供物理存储和传送,在这里文件系统运行在服务器上而不是运行在客户端。远程存取访问模式的优点是在客户端不需要很大的空间,当仅需要文件的一小部分时,不需要传送整个文件。5.1.2目录服务器接口目录服务提供创建和删除目录,命名和重命名文件以及将文件从一个目录移动到另一个目录等操作。目录服务的性质并不依赖于单个文件是整体传送还是远程访问。目录服务定义了构成文件(目录)名的某种字母表和语法。文件名通常是从1到某一最大数的字母、数字和某些特殊字符。有些系统将文件名分成两个部分,通常用一个点分开,文件扩展名标识文件的类型。其他的系统使用一个显式属性来达到此目的。包含在一台机器中的目录树ABCDE子目录的操作。用户可以把相关文件组合到一起。相应地,系统提供了创建和删除目录的操作,也提供了在目录中插入、移动和查找文件的操作。分层文件系统。子目录可以包含它自已的子目录,以此类推,这样就形成一棵目录树,通常称为分层文件系统。ABCDE02111机器1机器2计数器指向这个目录的目录数量在两台机器中的目录树在某些系统中,可以对任意目录建立连接或指针。这种连接和指针可以放在任一目录中,使得不仅可以按树结构组织目录,而且可以将目录组织成更强有力的任意目录图。在树型层次结构中,仅当目录为空时,才能删除指向该目录的连接。在目录图中,一个目录只要存在至少另一条链接就可以删除指向该目录的链接。DEFABCROOTADBCEFROOTADBCEF客户1客户2文件服务器1文件服务器2(a)两个文件服务器(b)一个所有客户有同样文件系统图:不同客户有不同文件系统ROOTADBCEF客户1客户2ROOTADBCEF基于此,是否存在一个全局根目录,所有的机器都认为其为根。设置全局根目录的一个方法是使这个根只包含每个服务器的一个入口。路径的形式为:/服务器/路径,虽有它自身的缺点(不是完全透明的),但在系统中是统一的。命名透明性位置透明:–路径名不能对文件(或其他对象)存储位置给出任何提示;像路径/server1/dir1/dir2/x说明x位于服务器1上,但是它并没有说明服务器1的位置.–服务器在网络中可以自由地移动到它想去的任何地方而无需改变路径名。位置独立:–在一个系统中文件能自由移动而无需改变其文件名;一个明确将机器或服务器嵌入路径名的分布式系统不是位置独立的系统。–位置独立性是不容易实现的,但它是分布式系统所期望拥有的一个特性。分布式系统中文件和目录的命名方法:–机器+路径命名(/machine/path或machine:path);–安装远程文件系统到本地文件分层结构中;–一个在所有机器上看上去都一样的单个名字空间。前两种方法容易实现,特别是作为一种并非为分布式系统设计的连接现存系统的方法。实现第3种方法很困难并且需要仔细设计,但如果要实现使分布式系统像单个计算机一样工作的目标,这种方法是需要的。两级命名文件具有符号名(例如:prog.c)和二进制名(例如I-node)。目录提供映射。文件(和其他对象)具有符号名,供用户使用,但它们还可具有内部的二进制名供系统自己使用。目录实际上起的作用是提供这两个命名层次之间的一个变换(映射)。用户和程序使用符号名是很方便的,但在系统内部使用,名字太长且不方便。这样当用户打开一个文件或另外引用一个符号名时,系统将立即在适当的目录中查找符号名以得到其用于定位该文件二进制名。有时,二进制名对于用户是可见的,而有时候是不可见的。通过符号连接可以让二进制名同时指向服务器及其上的文件名。这种方法允许一个服务器上的目录拥有一个不同的服务器上的文件。符号连接是一个目录项目,它映射到一个(服务器,文件名)字符串上,可以在为查找其二进制召而命名的服务器上查到。符号连接本身只是一个路径名。可以使用权限作为文件二进制名。这种权限具有多种形式有可能得到多个二进制名,一个符号名可能对于多个二进制名,这样可以通过冗余提供容错。5.1.3文件共享的语义UNIX语义–系统对所有操作都强制一个绝对时间顺序,并且总是返回最近的值;ababcAB初始文件2.读出“abc”1.写入“c”当两个或更多个用户共享相同的文件时,必须精确地定义读和写的语义以避免产生问题。在read操作紧跟在write操作后执行时,read操作返回刚刚写入的值,在分布式系统中,可能返回已经过时的值ababcA客户11.写入“abc”abB客户22.读出“ab”ab服务器如果所有的文件请求都必须送到某个服务器上去执行,将高速缓存文件的所有修改回写到服务器。该方法在概念上简单,但效率很低。另一种方法是放宽文件共享的语义。会话语义–对一个打开文件的修改仅对修改该文件的进程(或机器)是初始可见的,仅当文件关闭时,其修改才对其他进程(或机器)可见。(writeonclose)不可更改文件–对文件的操作仅能创建和读。不能进行更改,只是简单的共享和复制。修改文件总是用一个新文件来自动替代;原子事务采用原子事务处理,要变全变,否则什么都不变。5.2分布式文件系统的实现文件的使用系统结构高速缓存复制NFS文件系统学到的教训5.2.1文件的使用大多数文件比较小(小于10K);对文件的读操作多于写操作;对文件的读写是顺序的,很少随机访问;对文件使用方式进行研究并给出一些经验信息。尽管静态和动态测量在根本上是不同的,但将它们结合起来使用,可以对文件系统的使用得到一个更好的描述。大多数文件的寿命比较短;文件共享非常少;一般进程只使用某几个文件;用不同的属性区分文件类型。5.2.2系统结构一、客户与服务器的关系:–客户与服务器没有差别;执行基本相同的软件,都可自由地为公众提供文件服务。提供文件服务就是输出所选择的目录名,以便其他的机器可访问它。–文件服务器和目录服务器是用户程序;可根据需要配置一个系统以便在同一机器上或不同机器上执行客户和服务器软件。–客户与服务器分配在完全不同的机器上。虽然功能分开看起来更简洁些,但并没有根本理由说明一种方式优于其他的方式。二、文件服务器和目录服务器的关系:–二者合并为一个服务器来处理所有文件和目录的调用;–二者保持独立。赞成分开的理由是两个功能确实不相关,保持独立会更加灵活些。反对这个主张的理由是:两个服务器要求更多的通信。打开一个文件,需要进入目录服务器,以便将它们的符号名变换成二进制名,然后用二进制名进入文件服务器对文件进行读写。27图:局域网系统集成VVSiSiInternet路由器防火墙modem管理间集线器5类UTP跳线RJ45配线板110配线板110配线板程控交换机信息插座信息插座大对数MS-DOS目录服务器UNIX目录服务器文件服务器目录也可在不同的服务器上分层构建,例如查找a/b/c,第一种方法:对此可由客户机迭代依次查找(a),要求客户知道哪些服务器保存了哪个目录和更多信息;第二种方法:对此可由服务器自动查找,更有效。但不可能用正常的RPC(远程进程调用)来处理,这是因为接收客户所发送消息的进程,不是发送应答的进程。多个目录服务器分层目录查找路径名,开销是很大的,可通过保存高速缓存提示改善性能。1、这些提示是最近查找的名字和查找的结果。2、当一个文件打开时,先检查高速缓存中是否有该路径名。如果有,那么就不用逐个目录去查找,从高速缓存中直接读取其二进制地址。如果没有,再进行目录查找并更新高速缓存。,3、为了使高速缓存提示最具有使用价值,必须保证提示在大部分时间里是正确的。高速缓存提示是许多分布式操作系统都适用的一种强有力的技术。三、文件、目录和其他的服务器是否应该保留客户的状态信息。1、一种意见:服务器应该是无状态的。当客户发送一个请求给服务器,服务器完成请求,发送一个应答,然后从内部表中移出关于该请求的所有信息。在请求之间,服务器不保存具体客户的信息。2、另一种意见则坚持:服务器应该保存两个请求之间的客户的状态信息。文件打开之后,服务器必须保存哪个客户打开了哪个文件的信息。当有请求到来时,服务器就使用文件描述符来确定需要哪个文件。将文件描述符变换成文件本身的表就是状态信息。无状态服务器有状态服务器1、容错1、请求消息比较短2、不需要OPEN/CLOSE调用2、更好的性能3、没有服务器空间的浪费3、可以预读4、没有打开文件数目4、易于幂等性5、客户崩溃时不会造成服务器错误5、可以对文件加锁对于不保留状态信息的服务器比保留状态的服务器有助于更好的容错,但每一个请求必须是独立的。为了使服务器能够工作,它必须包含全文件名和文件中的偏移量,增加了消息的长度。5.2.3高速缓存存储文件在服务器磁盘上。有充足的空间,存放的所有文件对所有客户都是可访问的。文件只有一个拷贝,不存在一致性问题;问题是运行效率低。客户读文件,文件必须从服务器磁盘传送到服
本文标题:分布式操作系统5
链接地址:https://www.777doc.com/doc-2642514 .html