一、容错计算概述
1.可靠性
系统可靠性(Reliability)的定义是指系统在一段时间内、在一定条件下无故障地执行指定功能的能力或可能性。通常用失效率表示。
2.可用性
可用性(Availability)是指计算机的使用效率,即系统在执行任务的任意时刻能正常工作的概率。
系统可用性用可用度来度量。系统在t时刻处于正确状态的概率称为可用度,用A(t)来表示。
其计算方法为:A =平均无故障时间/ (平均无故障时间+平均修复时间)
3.可靠性VS可用性
A系统每年因故障中断十次,每次恢复平均要30分钟,B系统每年因故障中断2次,每次需6小时恢复。则A系统可用性比B系统高,但可靠性比B系统差。
可靠性的量化指标是周期内系统平均无故障运行时间,可用性的量化指标是周期内系统无故障运行的总时间。一般提高可靠性的同时,也同时提高了可用性。
4.提高可靠性的措施
避错(Fault Avoidance)。提高软硬件的质量,将出错率降至最低,理想情况是避免出错。
容错性(Fault Tolerance)。发展容错技术,使得在故障发生时,系统仍能继续运行。
5.容错性
容错主要依靠冗余设计来实现,它以增加资源的办法换取可靠性。由于资源的不同,冗余技术分为硬件冗余、软件冗余、时间冗余和信息冗余。
6.容错系统工作方式
1)自动侦测(Auto-Detect):运行中自动检测冗余系统各冗余单元是否存在故障。
2)自动切换(Auto-Switch) :当出现故障时,自动使用冗余设备替换故障设备,接管当前任务。
3)自动恢复(Auto-Recovery): 故障主机被替换后,进行故障隔离,离线进行故障修复。修复后再接管原来的任务。
二、硬件冗余
1.增加线路、设备、部件,形成备份
硬件容错方法之一是硬件堆积冗余。在物理级可通过元件的重复来实现(如相同元件的串、并联,四倍元件等),在逻辑域可采用多数表决方案。冗余部分处于热状态。
另一硬件容错的方法叫待命储备冗余。该系统中共有M+1个模块,其中只有一块处于工作状态,其余M块都处于待命接替状态。冗余部分处于冷状态。
混合冗余系统是堆积冗余和待命储备冗余的结合应用。当堆积冗余中有一个模块发生故障时,立刻将其切除,并代之以无故障待命模块。这种方法可达到较高的可靠性。
-
双机容错和双机热备
双机热备份是当CPU出现故障时由闲置状态的备份系统接替,但正在处理的交易有可能丢失,从而导致数据的不一致。
冗余部分处于冷状态。
-
三机表决系统
在三机表决系统中,三台主机同时运行,由表决器 (Voter)根据三台机器的运行结果进行表决,有两个以上的机器运行结果相同,则认定该结果为正确。
冗余部分处于热状态。
-
集群系统
均衡负载的双机或多机系统就是集群系统(Clusting),适用于大型关键业务系统。
-
RAID系统
RAID (Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列;Redundant Array of Independent Disks,独立磁盘冗余阵列),是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
RAID的优点:
-
通过把多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能;
-
通过把数据分成多个数据块(Block)并行读写多个磁盘以提高访问磁盘的速度;
-
通过镜像或校验操作提供容错能力。
RAID级别:建议参考以下视频【硬件科普】磁盘阵列是什么东西?为什么需要磁盘阵列?不同阵列之间的区别是什么?_哔哩哔哩_bilibili
数据基带条阵列(RAID0):简单将数据分配到各个磁盘上,不提供真正容错性。
优点:多个硬盘并行工作,提高了读写性能
缺点:无容错能力,任一磁盘失效,数据可能丢失,且不能恢复。
磁盘镜像(RAID1):数据同时以同样的方式写到两个盘上,两个盘互为镜像。
优点:策略简单,提供了容错能力。
缺点:磁盘利用率只有50%。由于磁盘冗余,硬件开销较大,成本较高。
并行海明纠错阵列(RAID2):与RAID0类似,只是加入了海明冗余纠错码,数据按位存放到不同的硬盘上,并行读写。
优点:可靠性高,可确定哪个硬盘已经失效,并进行自动数据恢复。
缺点:磁盘冗余太多,开销太大。
奇偶校验并行位交错阵列(RAID3):与RAID2类似,将海明码换成了奇偶校验,因此只需要一个奇偶校验盘,对数据的处理以带区为单位。
优点:速度快,适合较大单位数据的读写,
缺点:奇偶校验盘没有冗余,出错后数据很难恢复。
奇偶校验扇区交错阵列(RAID4):与RAID3类似,采用单独奇偶校验盘。但数据是以扇区(sector)交错方式存储于各台磁盘,对数据的访问以磁盘为单位。读一个扇区,只需访问一个磁盘。写一个扇区,只访问一个数据盘和一个校验盘。
优点:各磁盘可独立工作(扇区读写),并行读写。
缺点:只有一个单独的奇偶校验盘,出错后数据很难恢复。校验码在一个磁盘上,产生写性能瓶颈(不能同时写多个磁盘)。
循环奇偶校验阵列(RAID5):与RAID4类似,但校验码不固定在一个磁盘上,而是循环地依次分布在不同的磁盘上。它是目前采用最多、最流行的方式,至少需要3个硬盘。
优点:校验码分布在多个磁盘中,使得写操作可以同时进行。为读操作提供了最优的性能。假如一个磁盘失效,分布在其他盘上的信息可以恢复数据(即数据重建)。
缺点:数据重建会降低读性能;每次计算校验信息,写操作开销会增大,是一般存储时间的3倍。
二位奇偶校验阵列(RAID6):也称为P+Q冗余技术或RAID0+1,其含义是它结合了RAID0的性能和RAID1的可靠性。将整个磁盘阵列看成一个二维阵列。RAID5只在一组(相当于行)上有奇偶校验盘,而RAID6在各组的同一位置的盘组成的列上也加上了奇偶校验盘。这两个奇偶校验盘形成了二维阵列(逻辑上的)。
2.数据备份
三、软件冗余
1.故障恢复策略
前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态。(杀毒)
后向恢复:指系统恢复到前一个正确状态,继续执行。(系统还原)
2.软件容错技术
恢复块方法:恢复块方法是一种动态屏蔽技术。采用“自动后向错误恢复”的策略。
N-版本程序设计:N版本程序设计是一种静态故障屏蔽技术,采用"前向错误恢复"的策略。N份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。
防卫式程序设计:
基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤消错误状态,恢复到一个已知的正确状态中去。(后向恢复)
实现策略包括错误检测,破坏估计和错误恢复三个方面。
四、信息冗余
信息冗余是为了检测或纠正信息在运算或传输中的错误而外加的一部分信息。
1.奇偶校验
无论信息位有多少,校验位只有一位,使码组中“1”的数目为偶(或奇)数。只能检测奇数个数据位错,不能纠错。
2.海明码
原理:分组交叉奇偶校验
要点:
1)设数据位占k位,校验位占r位:
2)校验码必须在2^n的位置(从右往左数):(表中Di为数据位,Pi为校验位)
H7 | H6 | H5 | H4 | H3 | H2 | H1 |
---|---|---|---|---|---|---|
D3 | D2 | D1 | P3 | D0 | P2 | P1 |
3)校验位计算:
H1⊕H3⊕H5⊕H7=0 (二进制数中倒数第一位是“1”的:1=001,3=011,5=101,7=111)
H2⊕H3⊕H6⊕H7=0 (二进制数中倒数第二位是“1”的:2=010,3=011,6=110,7=111)
H4⊕H5⊕H6⊕H7=0 (二进制数中倒数第三位是“1”的:4=100,5=101,6=100,7=111)
举例:
假设信息码是1101,采用偶校验,那么海明码是110x1xx
H1⊕H3⊕H5⊕H7=0 P1⊕1⊕0⊕1 =0, P1=0
H2⊕H3⊕H6⊕H7=0 P2⊕1⊕0⊕1 =0, P2=0
H4⊕H5⊕H6⊕H7=0 P3⊕0⊕1⊕1 =0, P3=0
从而得到海明码为: 1100100
特点:可检错,可纠一位错。检错码为0表示数据正常,不为0时检错码的值表示编码中出错数据位
3.CRC循环冗余校验
原理:收发双方约定一个生成多项式G(x)(规定其最高阶和最低阶系数必须为1),假设G(x)为r阶(共r+1位),则将原数据串左移r位,与G(x)做模2除法,余数作为校验码。发送方将校验位拼在数据位后面。接收方收到后,除以G(x),若不能整除,则传输有错。
举例:
主要特点:检错能力强,开销很小,易于实现。
五、时间冗余
例如检查点 (Check-Point)就属于时间冗余的一种,将机器运行的某一时刻存储起来,称作检查点。一旦发现运行故障,就返回到最近一次正确的检查点重新运行。