7.1
1、基本概念:
1)可用性:可用性反映的是系统随时可被用户使用的特性。
2)可靠性:可靠性指的是在错误存在的情况下,系统持续服务的能力。
3)安全性:安全性指的是在系统出现暂时错误的情况下,不出现灾难性后果的能力。
4)可维护性:可维护性指的是系统一旦出现故障,系统易于修复的能力。
5)保密性:保密性要求系统资源不被非法用户访问。
错误的时间特性来看,错误可分为 :暂时性的(transient)、间歇性的(intermittent)和永久性的(permanent)。
7.3
1、向后式恢复:
1)检查点:在向后式恢复中进程被恢复到一个先前的正确的状态。进程执行中的一些点被称为“检查点”(checkpoint),在以后发生错误的情况下,进程可以被恢复到这些点。在检查点的实现过程中,需要考虑两个主要问题:检查点的存储和检查点的更新。
2)有两种方法来保存检查点:(1)每一个检查点被组播到每一个备份模块;(2)每个检查点被存储在它的本地坚固存储器中。当进程正确地从一个旧的检查点运行到一个新的检查点时,旧的检查点就要被新的检查点替换。当进程执行到两个检查点之间时发生错误,那么进程应该卷回到旧的检查点处重新执行。
3)检查点的原子更新:当使用新的检查点替换旧的检查点的过程中,系统也会发生失效。这可以通过检查点的原子更新过程来解决,也就是说,在检查点的更新中,要么旧的检查点被新的检查点替换,要么旧的检查点被完整地保留。
4)检查点原子更新的实现: 假设库A和库B现在保存的检查点是C1,现在要用检查点C2取代库A和库B的内容。在取代前,假设Ta1=Ta2=Tb1=Tb2=1,检查点的更新过程如下:
(1) 为了更新库A,先置Ta1=2;
(2) 将库A的内容用检查点C2取代;
(3) 库A更新完毕,置Ta2=2;
(4) 为了更新库B,先置Tb1=2;
(5) 将库B的内容用检查点C2取代;
(6) 库B更新完毕,置Tb2=2;
5)识别在检查点更新过程中发生的失效 :
7.4
1、一致性检查点:
1)全局状态:一种全局状态的定义是一系列局部状态的集合,这里的局部状态就是一个进程的检查点,每个局部进程有一个局部状态。
2)局部检查点可能组成如下两种不一致的全局状态:
a)丢失报文。进程Pi的检查点状态显示它给进程Pj发送了报文m,但是进程Pj并没有关于该报文的纪录。
b)孤儿报文。进程Pj的检查点状态显示它收到了一个来自进程Pi的报文m,但是进程Pi的状态显示它没有向进程Pj发送过报文m。
3)一个强一致(strongly consistent)的检查点集合是由一系列的没有孤儿报文和没有丢失报文局部检查点组成。
4)一个一致的检查点集合是由一系列没有孤儿报文的局部检查点组成。
显然一个强一致的检查点集合包括一系列局部检查点,在这些检查点之间,进程之间没有报文传送。如果每个进程都在发送一个报文之后生成一个检查点,那么最近的检查点集合将永远是一致的。
2、异步检查点:
1)异步检查点算法中程序中检查点状态的保存过程较为简单,程序中各进程周期性地相互独立地保存自己的运行状态,程序各进程之间不需要相互协商。
2)在恢复过程中,各进程之间则需要相互协商通过复杂的回卷算法各自回卷到合适的检查点时刻以使整个程序的各个进程恢复到最近的一个一致的全局状态。
3)一致检查点的检测方法:
a)比较发送的和接收的报文数量来检测孤儿报文的存在。如果接收到的报文数目和任何发送报文的进程发送的报文的数目是一致的,那么就可以认为找到了一个局部检查点的一致集合。
b)使用间隔依赖图来进行检测。如果每个进程i的向量时钟是LCi,一个检查点集合是一致的,当且仅当不存在i和j满足LCi<LCj。
4)异步检查点算法的优缺点:优点是允许分布式程序的各个进程拥有最大程度的自治性,因而算法的延迟较小。缺点之一是由于每个进程需要保存若干时刻的检查点信息,空间开销较大;缺点之二是在恢复过程中可能会重复回卷,甚至出现多米诺效应,使程序一直回卷到初始状态。
3、同步检查点:
1)在同步检查点算法中,各相关的进程协调它们的局部检查点的建立行为,以保证所有的最近的检查点都是一致的。在同步检查点中,只有最近的一致的检查点集合才需要被维护和保存。
2)同步检查点算法的优缺点:由于使用同步检查点算法,各进程的局部检查点组成的集合是一个全局一致的状态,所以在恢复时各个进程只需要简单地从检查点处重新开始执行。同步检查点算法的优点是每个进程只需保存最近时刻的检查点信息,空间开销较小,且在恢复的时候没有多米诺效应。其缺点是,在建立检查点时,各进程间的同步使程序运行中止时间较长,且牺牲了分布式程序的自治性。