分布式系统的可靠性.ppt
《分布式系统的可靠性.ppt》由会员分享,可在线阅读,更多相关《分布式系统的可靠性.ppt(53页珍藏版)》请在三一办公上搜索。
1、第8章 分布式系统的可靠性,分布式系统(八)2011,2,基本模型,分布式系统的一个重要目标是获取高度的可依赖性(Dependability)。可依赖性的概念包括以下三个方面:可靠性:在错误存在的情况下持续服务的能力。安全性:不出现灾难性错误的能力。保密性:指避免、或承受对系统进行的故意性攻击的能力。本章重点关注可依赖性中的可靠性,即故障、错误或失效(faults,errors,or failures,这些概念通用)的检测和处理。,分布式系统(八)2011,3,基本模型,分布式系统可靠性的目标是当故障发生时,确保系统的全局一致性。即确保系统具备容错能力。故障来源于如下4类:节点(硬件)故障:物
2、理硬件故障;程序(软件)故障:软件设计或编码错误;通讯故障:通信介质故障;时序故障:物理故障导致运行时序错误。,分布式系统(八)2011,4,基本模型,要确保系统具备容错能力,通常使用冗余技术。有四种冗余类型:硬件冗余:如额外的PE、I/O系统等。软件冗余:如软件模块的额外版本。信息冗余:如使用了额外位数的错误检测代码。时间冗余:如用来完成系统功能的附加时间。,分布式系统(八)2011,5,基本模型,有三种基本的处理故障的方法:主动复制。所有的复制模块协同进行,并且它们的状态紧密同步。被动复制。由唯一的一个处于主动的模块设定定期检查点,定期更新其它模块的交互状态。半主动复制。是主动复制和被动复
3、制的混合。此种方法所需的恢复开销相对较低。主动复制用到了错误屏蔽的概念,即隐藏出现的故障或防止故障造成错误结果。被动复制,又称为动态方法,它通过从系统中检测错误的存在,并采取一定措施转移错误元件来获得容错。,分布式系统(八)2011,6,基本模型,故障检测可被分为两类:外部检测:将检测节点失效的职责赋予节点的外部附件(或其它节点)。但需防止检测者本身故障、检测者和被检测者间通信故障时导致的误检(误报)。内部检测将检测机制置于一个节点内部(自检)。通常假定内部有一个可以完全信赖的“硬核”(hardcore)检测元件,“硬核”不受节点故障的冲击。完全做到这一点其实是很难的。通常结合使用外部检测方法
4、和内部检测方法,以得到一个有效的故障检测方案。故障检测的技术实施手段包括:通信应答超时、编码校验、结果比较等。,分布式系统(八)2011,7,基本模型,处理软件故障通常采用两个软件模型:基于进程的模型:一个应用程序由一连串协同作业的进程组成,如 P1P2Pn。基于对象的模型:一个应用程序由一连串对象组成,每一个对象都是一个独立的原子操作。通过很好定义的界面访问,就可以获得对象的封装。我们的讨论中,以基于进程的模型为例。,分布式系统(八)2011,8,容错系统设计的构件模块,具备容错能力的、可靠的分布式系统中涉及到三种逻辑实体,包括二种构件模块:稳定存储器故障停止处理器和一个用于构件模块的:原子
5、操作,分布式系统(八)2011,9,稳定存储器,稳定存储器是在系统失效的情况下,可以躲过系统错误的特定存储空间的抽象概念。也就是说,稳定存储器空间里的内容不被一个失效所摧毁。存储器的两个基本操作是读和写,稳定存储器的目标是在系统失效的情况下,屏蔽不希望的事件,正确地执行读、写操作。,分布式系统(八)2011,10,稳定存储器,对于读read(address:a)来说,返回(status:good or bad,data:d),其不希望结果包括:a是好的,但读取返回bad;同上,而且后来的读也返回bad;a是坏的,但读取返回good;或者a是good,但读取返回不同的数据d。对于写write(a
6、ddress:a,data:d)来说,其不希望的结果:a保持不变,而d变为不同的数据d;a变为(bad,d)。一个理想的稳定存储器:读总是返回正确的结果,写总是成功。,分布式系统(八)2011,11,稳定存储器RAID,获得适宜的稳定存储器的一个方法是使用RAID技术(Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列)。目前常用的有下列RAID技术:,分布式系统(八)2011,12,故障-停止处理器,一个处理器故障时,最好的结果是不进行任何不正确的操作,而简单地停止工作。这样的处理器称为故障-停止处理器。一个故障-停止处理器有以下特性:(a)处理器停
7、止运行。(b)暂态存储丢失,而稳态存储不受影响。(c)任何处理器均可检测到故障-停止处理器的失效状态。,分布式系统(八)2011,13,故障-停止处理器,可以使用下面的方法使一个非故障-停止处理器变成一个故障-停止处理器:使用稳定存储器和一个可靠的存储处理器(一个控制存储媒介的处理器)以及k+1个处理器:这k+1个处理器都运行同样的程序并通过存储处理器访问同一个稳定存储器。如果存储处理器发现任何一个请求是不同的,或者任何一个请求没有在指定的期间到达存储处理器,则意味着检测到一个失效事件,因而应该丢弃所有请求。这个故障-停止处理器是一个k-故障-停止处理器:当系统中有k个元件失效时,仍然可以满足
8、故障-停止处理器的要求。,分布式系统(八)2011,14,原子操作,一个原子操作就是由硬件独立执行的一系列动作。即每一个动作或者被完全彻底地执行,或者系统的状态保持不变(动作根本没有执行)。每一个动作都是孤立的,当执行这一动作时,在进程中感觉不到外界活动的存在,也意识不到外界状态的变化。同样,任何外界的进程均感觉不到一个孤立的原子操作的内在状态的变化。即原子操作具有“全或无”性质。许多应用都需要原子操作,如:对信号量操作、对数据库的访问等。,分布式系统(八)2011,15,故障的处理,节点故障的处理拜占庭式故障的处理通信故障的处理软件故障的处理,分布式系统(八)2011,16,节点故障的处理,
9、使用主动复制的方法处理节点故障,相对来说比较简单和容易,但其代价较大:处理“永久”故障的硬件冗余比较昂贵;处理“暂时”故障的时间冗余(重试)其效率受到较大影响。我们讨论被动复制的方法,在被动复制中可以使用向前式恢复或向后式恢复。向前式恢复中,假定系统中故障和损失的性质可被完全准确地获知。这样就可能去掉这些故障以使系统继续向前运行。(看似简单,实现困难!)向后式恢复适用于当故障的性质无法预知及去掉时。系统要定时地记录系统状态,这样当失效导致系统处于不相容的状态时,系统可以重新恢复到从前没发生故障的状态。(比较可行!),分布式系统(八)2011,17,向后式恢复,检查点(Check-point):
10、进程执行中设定的、记录当时进程状态的、用于以后节点故障时进程向后恢复回来的点被称为“检查点”。有两种方法来保存检查点:每个检查点被传送到每一个被动(备份)模块。每个检查点被存储在当地的稳定存储器中。系统总是保存最近、最新的一个检查点,当进程无故障地运行到一个新的检查点时,就需要进行新旧检查点保存的替换,检查点保存的替换必须是原子操作:即要么保存替换为新检查点,要么保留旧检查点。,分布式系统(八)2011,18,向后式恢复,一个进行新旧检查点保存替换的方案(Sequoia):使用2个处于稳定存储器中的内存库(A库和B库)作为检查点的双份保存。在对新检查点状态信息进行保存以刷新旧检查点状态信息时,
11、同时写入4个固定、相同的时戳:A库,刷新前Ta1,刷新后Ta2;B库,刷新前Tb1,刷新后Tb2。通过分析替换操作后的时戳结果,确定下一步的措施,以及是否导致替换操作成功:,(例中假设先刷新A库;若相反,则类似),分布式系统(八)2011,19,向后式恢复,如果4个时戳相等,则新旧检查点保存替换操作完全成功。如果一个库中只写下刷新前的时戳(如Ta1),则失效发生在向该库(A库)刷新的过程中,即该库(A库)中新检查点是不完全的,此时需用另一个旧库(B库)中的旧检查点信息将该库(A库)恢复。一旦有一个库刷新成功(如Ta1=Ta2),则可以复制这个新库(A库)中的新检查点信息到旧库(B库)中,而使整
12、个新旧检查点保存替换操作成功。,分布式系统(八)2011,20,节点故障的处理,当检测到节点模块(如PE)出现故障时,使用被动复制的向后式恢复方法,可以这样处理:对于“永久性”故障:用后备冗余模块替换故障模块,替换上来的模块从稳定存储器中获得上一个检查点(最近的)的系统状态,从该处重新执行。(硬件冗余)对于“暂时性”故障:使用原来的模块从稳定存储器中获得上一个检查点(最近的)的系统状态,从该处重新执行。(时间冗余),分布式系统(八)2011,21,前卷式恢复,一个向前式恢复策略是前卷式恢复,它是半主动复制的一个特例,其主要的思路是:一个进程(任务)的初始备份(或上一个正确的检查点开始)由不同的
13、处理器来运行,这些版本的结果在检查点进行表决(或比较):如果表决结果是成功的,则可以获得一个储存在稳定存储器中的正确结果。在这个结果的基础上,再执行下一项任务的备份。如果表决结果是失败的,非故障处理器就在以前的任务的每一个结果的基础上执行下一项任务的备份。与此同时,后备处理器替换故障处理器对以前的任务执行一次回卷运行,即在后备处理器上再运行以前的任务,目的是获得正确的结果。稳定存储器只保存基于以前的任务项的正确版本的经过表决后正确的结果,而抛弃掉其他结果。所有版本都失效,或后备处理器重新运行以前的任务也不能获得正确的结果,回卷是不可避免的。但这种最坏情况发生的可能性很小,因此前卷式恢复仍然可以
14、节省很多的回卷时间。,分布式系统(八)2011,22,前卷式恢复,Pradhan和Vaidya提出有2个验证间隔的前卷式恢复方案,Long,Fuchs和Abraham提出有1个验证间隔的前卷式恢复方案。(参考相关文献),分布式系统(八)2011,23,向后恢复中的问题,考虑向后恢复中的两个特殊问题:检查点的存储:讨论检查点存储的策略。检查点方法:讨论设置检查点的方法。,分布式系统(八)2011,24,检查点的存储,向后恢复式的系统中,将系统的数据分为2类:活动数据(进程执行中的数据)检查点数据(检查点时刻保存的数据)系统存储器可以分为3个层次:第一层:寄存器(register)和高速缓存(ca
15、che),易失性的(如失电丢失);第二层:内存(memory),易失性的或非易失性的(如闪存flash memory,或自供电内存);第三层:磁盘(disk),非易失性的。3个层次的存储器其访问速度依次指数级降低,成本依次指数级降低,容量依次指数级增大。,分布式系统(八)2011,25,检查点的存储,可能的检查点存储的分配方案有:在第一层(寄存器和高速缓存)存储活动数据,在第二层(非易失性内存)和第三层(磁盘)存储检查点。在第一层和第二层(易失性内存)存储活动数据,在第三层存储检查点。总之,检查点数据必须存储在稳定存储器中。前一种方案检查点存储的效率较高。,分布式系统(八)2011,26,检查
16、点的存储,一个方案:基于高速缓存的检查点方案活动数据存储在CPU的寄存器和高速缓存中,检查点数据存储在内存中。检查点和回卷的要求如下:在检查点将局部状态(CPU寄存器)保存在一个特殊的内存区域。将更改过的高速缓存中的数据写到内存中。回卷时从特殊的内存区域装入CPU寄存器。将高速缓存中的所有被更改的数据设定为使无效(高速缓存中不能命中,从而强制从内存中读取检查点数据)。,分布式系统(八)2011,27,检查点的存储,此方案的另一个重要问题是活动数据不能全部在高速缓存时,需要保持更改过的高速缓存中的数据与内存的一致,有2种方法:写通(write-through)高速缓存方法:高速缓存被更改时,改变
17、将立刻写入内存。写回(write-back)高速缓存方法:只有高速缓存失效(退出)时才进行更新内存。在写回方法中,因为在处理器失效的情况下没有必要改写内存,因此恢复时会更快。,分布式系统(八)2011,28,检查点的存储,另一个方案:双胞胎页面方案活动数据存储和检查点数据存储映射到存储等级的两块区域。当使用新的检查点时,它们就彼此交换角色,即:活动数据变成检查点数据,检查点数据区域用于活动数据。两块区域的分配策略有:将活动数据存储和检查点数据存储映射到同一个等级,如第二层或第三层。将活动数据存储和检查点数据存储映射到相邻的等级,如第一层和第二层或第二层和第三层。,分布式系统(八)2011,29
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 系统 可靠性

链接地址:https://www.31ppt.com/p-6094362.html