第八章 分布式文件系统

第八章 分布式文件系统


分布式文件系统DFS的目的就是允许在物理上分散的计算机用户使用公共的文件系统共享数据和存储空间。

1分布式文件系统的特点和基本要求

①**透明性:**对于顾客来说,分布式文件系统应表现为常规的集中式的文件系统,即服务员和存储器的多重性和分散性对顾客应该是透明的。透明性的另一个方面是用户的可移动性,即用户可以在系统中的任何机器上登录。

②**性能:**分布式文件系统的性能和常规文件系统的性能差不多。

③**容错:**在发生各种故障时分布式文件系统应该能正常工作,尽管其性能可能有所降低。

④**可扩充性:**系统适应增加服务负载的能力叫做可扩充能力。

**十个期望属性:**透明性、用户灵活性、高性能、简单易用性、可扩充性、高可用性、高可靠性、数据完整性、安全性和异构性。

2分布式文件系统的命名

一、分布式文件系统的命名方案

分布式文件系统中文字透明和位置透明

分布式文件系统中有三种命名方法:

  • 把主机名和文件的本地名字结合起来给文件命名。这是一种最简单的命名方法,它能保证唯一的系统范围内的名字。
  • 把远程文件目录附加到本地名字空间中。SUN工作站的NFS是这种方法的典型代表,它使用安装(mount)机制把远程文件目录附加到本地名字空间中。
  • 把所有各部分文件系统全部集成组成单一的全局名字空间结构。同一名字空间可被所有顾客见到。理想上,合成的文件系统结构应和常规文件系统是同型的。

二、分布式文件系统命名的实现技术

1、组织名字服务员的方法

①使用集中式的名字服务员。集中的名字服务员维护一张表或者数据库,提供必要的名字到对象的映射关系。

②将文件系统分割成域,每个域有自己的名字服务员。构建一个全局名字树,当本地名字服务员查找一个名字a/b/c时,它可以生成一个指向另一个域(即另一个名字服务员)的指针,把名字剩余部分(b/c)发送给它。

③每个处理器管理自己的名字。查找名字时,首先广播到网络中。在每个处理机上,到来的请求被转发给本地名字服务员,只有当名字服务员找到相应的匹配纪录时才做出回答。

2、常用的命名实现技术

①路径名翻译。正文名字到底层标识符的变换典型地都使用常规UNIX中的方法,即递归查找(recursive lookup)程序。

②有结构的标识符。实现透明的命名需要提供文件名到其位置的变换机制。

③提示(hint)。这是用于位置变换的另一个方法。一个提示是一份信息,能提高性能,如果它不正确也不会引起任何语义上的副作用。

④安装机制。为了创建一个全局名字结构而把远程文件系统连接起来,通常使用安装机制。

3分布式文件系统的共享语义

在分布式文件系统中,同一个文件可能被不同地点的多个用户同时访问和修改。如果一个用户对文件进行了更改,其他用户何时能看到这些更改?

  • 当多个用户同时对同一个文件进行写操作时,如何处理这些并发写入?
  • 如何确保所有用户都能访问最新和一致的文件数据?

共享语义在分布式文件系统中是一个关键概念,它描述了当多个客户端(或用户)同时访问同一个文件时,这些访问和修改操作如何被系统处理和协调。

共享语义是评价分布式文件系统允许多个顾客共享文件的重要标准。它说明分布式文件系统的这样一个特性,即多个顾客同时访问共享文件的效果。特别是,这些语义应当说明被顾客修改的数据何时可以被远程顾客看到。

  • UNIX语义:在UNIX语义中,对分布式文件系统中的文件进行每个read读时能看到以前所有对该文件执行write写的效果。顾客对打开的文件进行的写可立即被其他同时打开此文件的顾客看到,即使该顾客在远程也能看到。
  • 对话语义:对话语义符合以下两个规则:第一,对于打开文件的write可立即被本地顾客看见,远程的顾客虽然也同时打开该文件,但却看不见。第二,一旦文件关闭,对此文件所作的修改仅在以后开始的对话中才能看见,该文件已经打开的各副本不表现这些修改。
  • 事务处理语义:几个文件对话对一个文件的作用及输出等效于以某个串行次序执行这些对话的作用及其输出
  • 不可改变的共享文件的语义:在这种语义中,一旦文件被其创建者说明为共享的,他就不能在被修改。不可改变的文件有两个重要性质:第一其名字不可再用;第二其内容不可改变

4分布式文件系统的缓存

一、文件的远程访问方法

远程服务和缓存是实现顾客进程对远程文件进行访问的两个互相补充的方法

远程服务:在远程服务方法中,顾客把访问请求传送给服务员,服务员执行访问,结果会送给顾客。访问请求被变换成对服务员的报文,服务员的回答也打包成报文回送给顾客。

缓存:如果请求的数据不在本地,则从服务员处取来那些数据的复制件给顾客。通常取来的数据量比实际请求的要多得多,例如整个文件或几个页面,所以随后的访问可在顾客所在地的本地副本中进行。

缓存方案存在以下的设计问题:

  • 被缓存数据的粒度:缓存单位越大,则下次访问的数据在顾客方的本地找到的可能性越大,命中率越高,但是传送数据的时间和一致性问题也越大。

  • 顾客缓存器对的地点(主存还是磁盘):主存缓存器可以访问数据更快可以减少访问时间,磁盘缓存器可以提高可靠性和单个机器的自治性。

  • 如何传播被缓存的副本的修改:修改快代表一块被顾客修改过的数据块,修改块要写到原本上,有三种延迟写的策略来解决这个问题。

①驱逐时写:当被修改过的数据块要被从缓存器中驱逐出去的时候,该数据块被发送到原本

②周期性写:周期性的扫描缓存器,把从上次扫描以来已被修改过的快发送给原本

③关闭时写:当文件关闭时把数据写回到服务员。在文件打开很短时间或很少修改的情况下,这种方法不会很大地减少网络通信。

④立即写:一旦数据写到缓存器上就把此数据写到服务员的磁盘上

“关闭时写”适合“对话语义”; “立即写”方法比较适合UNIX语义。

  • 如何决定各个顾客缓存中的数据是否一致:

①**顾客发动的方法。**顾客与服务员联系,检查本地数据与原本是否一致。这个方法的关键是有效性检验的频度。

②**服务员发动的方法。**服务员为每个顾客登记被该顾客缓存的文件或文件的某个部分。当服务员检测出可能不一致时,必须做出反应。服务员发动方法的一个问题是违背顾客/服务员模型。

二、缓存和远程服务的比较

1、两种远程访问方法和共享语义的关系

两种远程访问方法和前面介绍的共享语义的关系:

①对话语义和缓存整个文件非常匹配。对话其内的读和写访问可以完全由被缓存的副本提供,因为可以把此文件按照语义和几个不同的映像联系起来。这个模型是很吸引人的,因为它实现简单。

②使用缓存对UNIX语义进行分布式实现有很严重的负面影响,它使得UNIX语义的分布式实现变得很困难。所有请求都由一个服务员指引服务的远程服务方法和UNIX语义符合得很好。

③不可改变的共享文件语义是为了缓存整个文件而创建的,使用这种语义,缓存一致性问题完全消失。

④当由同一机器上的同一服务员为所有的对同一文件的请求服务(如在远程服务中那样)时,事务处理语义可通过加锁的方法直截了当地实现。

2、比较

两种方法的优缺点 :选择缓存还是远程服务的问题本质上是选择改进性能的潜力还是选择简单性的问题。

  • 缓存方案的主要缺点是一致性问题。在不经常写的访问模式中,缓存方法是优越的;但在有经常写的情况下,用于解决一致性问题的机制在性能、网络通信量和服务员负载方面产生重大开销。

  • 在用缓存作为远程访问方法的系统中,仿真集中式系统的共享语义是很困难的。使用远程服务时,服务员将所有访问串行化,因此能够实现任何集中的共享语义。

  • 远程服务方法仅仅是本地文件系统接口在网络上的扩充。这样,机间接口是本地顾客和文件系统之间的接口的映射。

5分布式文件系统的容错和可扩充性

一、无状态服务和有状态服务

当一个服务员在为其顾客请求进行服务的时候,如果它保存其顾客的有关信息时,称该服务员是有状态的(stateful)。相反,如果服务员在为其顾客请求进行服务的时候不保存该顾客的任何信息,就称该服务员是无状态的(stateless)。

在这里插入图片描述

使用坚定的无状态服务的代价是需要较长的请求报文,并使得处理请求的速度较慢,此外,无状态服务在设计分布式文件系统时要加上一些约束。

首先,因为每个请求要能识别目标文件,所以需要一个唯一的、全系统范围的、低层的命名。对每个请求,将远程名翻译成本地名更使处理该请求的速度降低;

第二,由于顾客会重发对文件操作的请求,所以这些操作必须是幂等的(idempotent),一个幂等操作即使连续执行了多次,其效果仍相同。

需要有状态服务的场合:

如果使用远程网和网际网,收到报文的次序可能与其发送的次序不同,此时有状态的服务更为可取,因为使用所维持的状态可以把报文正确地排序。

另一种场合,如果服务员使用服务员发动的方法进行缓存一致性检验,则不能提供无状态服务,因为它维持一个哪些文件被哪些顾客缓存的纪录。

二、可用性和文件复制

**可恢复性:**当对某个文件的操作失败,或由顾客夭折此操作时,如果文件能转换到原来的一致状态,则说此文件是可恢复的。

**坚定性:**如果当某个存储器崩溃和存储介质损坏时某个文件能保证完好,则说此文件是坚定的。

**可用性:**如果无论何时一旦需要就可访问,甚至在某个机器和存储器崩溃,或者在发生通信失效的情况下,某个文件仍然可被访问,则这种文件叫做是可用的。

**文件复制:**文件复制是一个冗余措施。这里指的是不同机器上的文件复制,而不是同一机器上不同介质上的文件复制(如镜像磁盘)。复制文件可以增强其可用性。多机复制也能改进性能,因为可以选择最近的复制件给访问请求提供服务,从而获得短的服务时间。

一个复制件的可用性不能够受到其他复制件的影响,并且需要对用户隐匿复制细节,对任何复制件的更新必须反映到所有其他的复制件,大多数情况下,不能放弃文件数据的一致性,因此使用复制来增加可用性时还要使用复杂的更新传播协议。

三、可扩充性

6分布式文件系统的安全性

分布式文件系统的安全性包括保护和加密两个方面:保护和加密对于在分布式系统中实施安全性是不可缺少的部分,它的主要作用是防止未经授权的数据发布和数据修改。这一机制的关键是协议的握手类型,每一方都要证明自己的身份。当前,多数系统使用下列两种不同的方法之一:

  • 一个认证服务器,它物理上安全地维护一个用户口令列表。

  • 如 网络文件系统(NFS)那样,使用的公共密钥机制,维护一个以用户口令加密后的确认密钥的公共可读数据库。

7网络文件系统NFS

NFS其实是一组协议,该组协议为顾客提供了一个分布式文件系统的模型。所以,运行在不同操作系统和不同机器上的NFS有多种不同的实现,但是这些不同的实现之间具有相互操作的能力,从而NFS可以运行在由异构的计算机连接起来的环境中。

**顾客方:**如果安装上NFS,顾客所使用的本地UNIX文件系统接口被虚拟文件系统VFS接口所代替,如果加在VFS接口上的操作请求是一个访问本地文件的操作请求,则该请求被传递到本地文件系统;如果该操作请求是一个访问远程文件的操作请求,NFS顾客把对NFS文件系统的访问操作变换成对文件服务员的远程过程调用。VFS的目的是隐藏不同文件系统之间的差别。

**服务员方:**服务员一方的结构和顾客方的结构类似,NFS服务员负责处理来自NFS顾客的请求。服务员方的RPC代理(RPC stub)对请求进行拆包,NFS服务员将请求转换成通常的VFS操作,然后传递给VFS层。最后,服务员方的VFS调用本地文件系统接口,在服务员方进行实际的文件操作。

在这里插入图片描述

NFS v4以前的版本同许多其他分布式文件系统的区别是,其文件服务员是无状态的。但是,NFS v4放弃了这种方案,其服务员是有状态的。

  • 42
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值