通过有效的故障管理提高系统可靠性(中)
此外MTTF基本上是一个很难用任何分析手段计算得到的数字,软件质量的提高一般只需投入更多时间和资金,或者用更好的工具就可以了,但通常硬件质量方面任何大的改进(如MTTF)需要投入巨资。
另一方面,MTTR可以确切计算出来,只需付出相对很低且可以估计的费用就能获得一个数量级的改进。 为做到这一点,多数HA系统设计人员都定义一小类修复操作,使之满足所有部件失效情况。就像我们将要看到的那样,在系统中设计冗余部件减少MTTR是一种很有效的方法,可以避免与系统中多个部件都成函数关系的MTTF降低,但这并不表示对MTTF的考虑不重要,有一些通用部件设计技术常常用来提高系统MTTF水平。
错误、故障与失效
在我们讨论修复之前,必须首先清楚地了解是什么原因需要我们进行修复,这里将介绍三个概念,即错误、故障和失效。错误是一个可以观察到的状态,指一个值或者一个响应偏离了真实或正确值;故障定义为一个引起错误的交互系统或部件失效;失效也是一种状态,指系统或交互部件所观察到的反应偏离了规定的方向。
故障会引起错误,从而导致失效,但错误也可能在错误状态检测范围内得到修正。此外,故障还会引起一个新的故障,这个故障再引起另一个错误,并继续下去。二者的主要区别在于错误是可以观察的,而故障是观察不到的。如果可能,我们可以通过修正错误来尝试"修复"故障,但在大部分场合却无法做到。为了解这一点,我们需要看一下系统产生的错误类型。 一般来讲错误有两类。
第一类是定义明确的错误,其原因(故障)非常清楚,结果也是已知且确定的,并在一定范围内。这类错误一般是可以修正的,只要处置得当,不会引起失效。
第二类错误本质上是一种瞬态错误,一般很少发生,通常没有重复性和再生性,与时序或过载效应相关。
据研究显示,成熟系统中后一类瞬态错误要明显多于确定性错误,数量之比约为100比1。对于这种错误,我们通常不能用修正的方法进行修复,达到防止失效的目的,这是因为我们常常不能准确找出造成这种错误的故障。有时也能够从错误推断出故障,但大多数情况下做不到这一点,因为找不到线索,所以我们一般通过对错误造成的(或将造成的)失效进行恢复,从而达到修复的目的。更通常的做法是从失效源头处进行恢复,即从故障开始。