[计算机软件及应用]第十章故障恢复与系统容错

上传人:tia****nde 文档编号:70981692 上传时间:2019-01-19 格式:PPT 页数:35 大小:1.78MB
返回 下载 相关 举报
[计算机软件及应用]第十章故障恢复与系统容错_第1页
第1页 / 共35页
[计算机软件及应用]第十章故障恢复与系统容错_第2页
第2页 / 共35页
[计算机软件及应用]第十章故障恢复与系统容错_第3页
第3页 / 共35页
[计算机软件及应用]第十章故障恢复与系统容错_第4页
第4页 / 共35页
[计算机软件及应用]第十章故障恢复与系统容错_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《[计算机软件及应用]第十章故障恢复与系统容错》由会员分享,可在线阅读,更多相关《[计算机软件及应用]第十章故障恢复与系统容错(35页珍藏版)》请在金锄头文库上搜索。

1、第十章 故障恢复与系统容错,101概 述 现在已经有若干种可提供容错能力服务的方法。一般而言,具有容错能力的服务也可能发生意外故障,但故障发生后可迅速恢复并保证不丢失数据。 大多数具有容错能力的应用程序可划分为基于事务型和基于进程控制型两类,两者的区别在于完成恢复过程所花的时间不同故障发生后,基于事务型的服务将有一个相对较长的恢复时间。 基于进程控制型的程序与基于事务型的应用程序相比,其要求完全不同,这类应用程序的主要特征为:将从传感器中读出的信息作为输入并传送到传动器的输出部件,输出要么直接用来控制一个进程,要么用来激活警报系统以便于人们对进程进行干预。例如,空中交通管理、医院病人的监控以及

2、对反应堆的控制都属于这种类型的应用程序,它们通常都有非常严格的时间限制,从而要求恢复工作应在一个比较短的时间段内完成。,基于事务型的服务比较适合于维护长期存在的共享数据,但并非适合于所有的分布式应用程序。基于事务型的服务在正常工作时将数据项存储在恢复文件中,一旦发生故障,可马上进行恢复。 对服务进行恢复的通常方法是通过重启,利用恢复文件进行数据项的恢复,但这种方式对某些应用程序来说速度太慢。利用运行于不同计算机中的服务副本可大大提高恢复速度,若能够保证相互间的一致性,则可瞬时完成单一故障的恢复工作。但使用多个活跃的副本,对计算机资源又是极大的浪费。折衷方案是使用一台主服务器和若干台备份服务器,

3、系统正常工作时由主服务器处理客户要求,当主服务器发生故障时,启动某台备份服务器,接管主服务器还没有完成的操作。,102事务恢复 事务的原子化特征可以用耐久性和错误原子化来描述 。耐久性要求将数据项保存到永久存储器中并可随时使用,因此承认客户的提交请求意味着该事务的所有影响不仅记录在服务器的数据项中,而且记录在永久存储器中。所谓错误原子化,是指即使服务器发生故障,事务对数据项的影响也是原子化的。若某事务需具有恢复功能,则必须保证服务器的数据项具有耐久性,并且服务也应提供错误原子化功能。 虽然文件服务器和数据库服务器都将数据保存在永久存储器中,但其他的服务器并不是这样的,除非要求此服务器具有恢复功

4、能。在本章中假定:服务器运行时将所有的数据项都保存在易失性存储器中,并把所有已提交的数据记录到恢复文件或文件中。这样恢复工作就是把数据项的最新提交版本从永久存储器中恢复到服务器上。由于数据库通常需要处理大量数据,所以它们通常通过高速缓存把数据项从易失性存储器转移到磁盘永九存储器中。,耐久性和错误原子化并不是相互独立的,它们可由恢复处理程序这个单一机制来统一完成。恢复处理程序的主要任务是: (1)对于已提交的事务,将其数据项保存到永久存储器中(恢复文件中); (2)发生故障后,对服务器数据项进行恢复; (3)通过重新组织恢复文件以提高恢复工作的效率; (4)回收存储空间(在恢复文件中)。 在有些

5、情况下要求恢复处理程序处理介质故障即恢复文件本身的故障。这时可使用一种称为稳定存储器的技术进行恢复文件复制,从而不仅可以使发生介质故障的可能性大大减少,而且当系统在进行写操作发生故障时,可保证写操作是原子化的。,意向表:任何提供事务的服务器需要对客户事务所存取的数据项进行监控。当客户打开一个事务时,与之发生联系的第一台服务器提供一个新的事务标识符并将它返回给客户。这以后,事务中的每个客户请求(包括提交请求和异常终止请求),都应包含此标识符。在事务的执行过程中,应将更新操作作用于该事务数据项一系列的私有临时版本上。 服务器记录所有当前活跃事务的意向表,表中包含事务名以及由事务修改的数据项的值;提

6、交事务时,服务器利用事务意向表识别该事务所影响的数据项,并用此事务所产生的每个数据项的临时版本代替原提交版本,然后将新的值写到服务器的恢复文件中。事务异常终止时,服务器通过意向表来删除所有由该事务所产生的数据项的临时版本。,当服务器准备提交某事务时,它必须把该事务的意向表以及意向表中的数据项保存到恢复文件中,这样即使服务器临时发生故障也可以在以后执行提交操作。 当某事务所涉及的所有服务器全部同意提交该事务时,协调程序就会通知客户并发送消息到各参与服务器以执行提交操作。一旦已通知客户可进行提交,则相关服务器的恢复文件中必须包括足够多的信息,这样即使有服务器在准备提交或提交过程中发生故障,所有服务

7、器也可提交该事务。 恢复文件表目:为了使服务器上的分布式事务具有恢复功能,恢复文件中除了保存数据项外还应保存更多的信息。这些信息包括每个事务的状态:提交、异常终止、准备提交。 通过把意向表保存到恢复文件中可使恢复文件中的每个数据项与一个特定的事务相联系,恢复文件中包含的项目如表10 1所示。,1021 登录 登录技术是一种恢复文件的方法。在登录技术中,恢复文件代表某服务器所执行的所有事务的历史记录,其中包括数据项的值、事务状态表目以及意向表。在登录中表目的顺序反映了该服务器上事务准备提交、提交或异常终止的顺序。 在服务器正常工作时,若准备提交、提交或异常终止某事务,则需调用恢复处理程序;当服务

8、器准备提交某事务时,恢复处理程序就将意向表中的所有数据项、意向表本身以及事务当前状态(准备)添加到恢复文件中;当事务最终真正提交或异常终止时,恢复处理程序再将相应的事务状态添加到恢复文件中。 恢复处理程序为每个数据项分配一个标识符,从而使得恢复文件中数据项的成功版本与服务器中的数据项保持一致。,图10 1说明了银行服务事务T和u的登录机制。在事务T和U开始执行之前重新组织登录,图中左边表示A、B、C值的快照。在本图中将A、B、C作为数据项的标识符。图中显示了事务T已提交而事务U准备提交但尚未提交的状态。当事务T准备提交时,将数据项A和B的值写入到登录中的P1和P2位置,然后写入T的准备事务状态

9、表目及它的意向表中(A,P1),(B,P2);当提交事务时,将T的提交事务状态表目写人到P4位置;类似的,当事务U准备提交时,将数据项C和B的值写入到登录中的P5和P6位置,然后写入U的准备事务状态表目及它的意向表(c,P5),(B,P6)中。 每一个事务状态表目都包含一个指针指向前一个事务状态表目,从而使恢复处理程序可以反向跟踪恢复文件中的事务状态表目,事务状态表目的最后一个指针指向一个检查点(checkpoint)。,1数据项恢复 当服务器重启时,首先设置数据项的初始默认值,然后将控制权交给恢复处理程序。恢复处理程序负责恢复服务器上的数据项,它必须恢复所有已提交的事务对数据项的影响,并撤销

10、所有未提交或异常终止的事务对数据项的影响。 事务的晟新信息保存在登录的最后,因此恢复处理程序采用从后向前读取恢复文件的方式恢复服务器上的数据项。它利用具有提交状态的事务来恢复相应数据项,直到服务器上所有数据项都已恢复。 为了恢复事务对数据项的影响,恢复处理程序从恢复文件中读取相应的意向表,而意向表中包含该事务所影响的所有数据项的值在恢复文件中的位置及其标识符。 例:如果服务器在图10. 1以后发生故障,则恢复处理程序将按以下方式恢复数据项:读取登录中最后一条事务状态表目,发现事务U没有提交,故应撤销其影响,则移动到登录的前一个事务状态表目P4位置;发现事务T已提交,故应恢复事务T对数据项的影响

11、,即移动到登录的前一个事务状态表目P3位置找到事务T的意向表(A,P1),(B,P2),然后从P1和P2位置恢复数据项A、B。由于没有恢复数据项c,所以还应移动到检查点即P0点恢复C。,2恢复文件的重新组织 恢复处理程序负责恢复文件的重新组织以加快恢复过程并减少文件所占的存储空间。如果没有对恢复文件进行重新组织,那么恢复处理程序必须从后向前扫描恢复文件直到找出所有数据项的值。用checkpointing来表示将当前已提交的数据项值以及未完成事务的意向表和事务状态表目写入到某个新恢复文件中的过程。检查点表示由checkpointing过程所存储的信息。这样做的目的是减少恢复过程中需要处理的事务数

12、目并回收文件空间。 可在恢复完成以后任何事务开始之前立即执行checkpointing 过程。虽然恢复工作并非经常进行,但是需要在服务器正常工作时经常执行checkpointing过程。 具有恢复能力的系统可通过删除旧的恢复文件来回收存储空间。在恢复过程中,若恢复处理程序移动到恢复文件中的检查点,则可立即从检查点中恢复相关的所有数据项。,1022影子版本 影子版本技术是另一种组织恢复文件的方式。它通过一张地图对保存于称为版本存储文件中的数据项版本进行定位。地图将服务器数据项标识符与它们在版本存储文件中当前版本的位置联系起来,由事务写入的版本作为以前已提交版本的影子,将事务状态表目与意向表分开处

13、理。这里首先介绍影子版本。 当准备提交一个事务时,将所有由该事务所修改的数据项添加到版本存储文件中,并保持相应的提交版本不变,这些新的临时版本称为影子版本。当事务提交时,通过复制原来的地图并进入影子版本位置的方式构造新的地图。提交完成后,用新地图代替原来的地图。 当服务器重新启动时,恢复处理程序读取地图并利用地图中的信息对版本存储文件中的数据项进行定位,然后就可以恢复相应的数据项。,这里还是用事务T和u这个例子来说明这个技术。图10 .2第一列表示在事务T和u开始执行之前A、B、C的存款分别是100美元、200美元和300美元,第二列表示事务T提交后的状况。,图10 2所示的版本存储文件中包含

14、一个检查点,P3位置和P4位置表示事务T提交后A和B的版本情况,文件中还包含事务u准备提交时B和C的影子版本。,从旧地图转换到新地图必须在一个单一的原子化步骤内完成,因此需要利用稳定存储器来保存地图,这样即使在文件写操作过程中出了故障也可以保证地图的正确性。影子版本技术的恢复速度比登录技术快,这是因为在影子版本技术中,当前已提交数据项的位置记录在地图中,而登录技术需要扫描整个登录文件。系统正常工作时,登录技术的速度比影子版本技术快,这是因为登录技术仅仅需要将一系列操作添加到相同的文件中,而影子版本技术需要额外的稳定存储器写操作(涉及到两个独立的磁盘块)。 对服务器而言,仅有影子版本是不够的,还

15、必须将事务状态表目和意向表保存在事务状态文件中。意向表代表事务提交后对地图的修改。事务状态文件可组织成登录形式。,图10. 3表示提交事务T和准备提交事务U时地图及事务状态文件的相应情形.,1023恢复文件中的事务状态表及意向表表目 对分布式事务而言,必须在恢复文件中增加事务状态表目及意向表,理由如下: (1)某些恢复处理程序在假定事务正常提交的情况下会提前将数据项写入恢复文件。 (2)在事务使用了大量大数据项的情况下,由于要将数据项连续地写入恢复文件中,这将使服务器的设计复杂化。 (3)在时间段定序并发控制中,服务器有时可以确定某事务可最终提交并确认客户,这时再将数据项写人到恢复文件中,以确

16、保数据项的永久性,但是,该事务必须等待以前事务的提交。在这种情况下,恢复文件中相应的事务状态表目为等待提交,然后进行提交以保证恢复文件中已提交事务的时间段定序。恢复过程中允许提交任何等待提交事务,因为该事务所等待的事务要么已经提交,要么由于服务器出故障而异常终止。,1对两阶段提交协议的恢复 在分布式事务中,各台服务器保存自身的恢复文件。当服务器出故障时,恢复处理程序必须可对执行两阶段提交协议的事务进行有效恢复。在恢复处理程序中用到另外两个状态值done和uncertain。协调程序使用提交状态以表示表决的结果是Yes,并使用done状态表示两阶段提交协议执行完毕。工作者使用uncertain状态表示自身表决为Yes但还不知道最终结果。协调程序表目记录相应的工作者,工作者表目记录相应的协调程序,如表10 .2所示。,在协调的第一阶段,当协调程序准备提交时(即已将准备状态表目添加到恢复文件中),恢复处理程序将协调程序表目添加到恢复文件中。在工作者表决Yes之前,该事务必须已经准备提交(即已把准备状态表目添加到恢复文件中)。当工作者表决Yes时,恢复处理

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号