通過有效的故障管理提高系統(tǒng)可靠性(中)
此外MTTF基本上是一個很難用任何分析手段計算得到的數(shù)字,軟件質(zhì)量的提高一般只需投入更多時間和資金,或者用更好的工具就可以了,但通常硬件質(zhì)量方面任何大的改進(如MTTF)需要投入巨資。
另一方面,MTTR可以確切計算出來,只需付出相對很低且可以估計的費用就能獲得一個數(shù)量級的改進。 為做到這一點,多數(shù)HA系統(tǒng)設計人員都定義一小類修復操作,使之滿足所有部件失效情況。就像我們將要看到的那樣,在系統(tǒng)中設計冗余部件減少MTTR是一種很有效的方法,可以避免與系統(tǒng)中多個部件都成函數(shù)關系的MTTF降低,但這并不表示對MTTF的考慮不重要,有一些通用部件設計技術常常用來提高系統(tǒng)MTTF水平。
錯誤、故障與失效
在我們討論修復之前,必須首先清楚地了解是什么原因需要我們進行修復,這里將介紹三個概念,即錯誤、故障和失效。錯誤是一個可以觀察到的狀態(tài),指一個值或者一個響應偏離了真實或正確值;故障定義為一個引起錯誤的交互系統(tǒng)或部件失效;失效也是一種狀態(tài),指系統(tǒng)或交互部件所觀察到的反應偏離了規(guī)定的方向。
故障會引起錯誤,從而導致失效,但錯誤也可能在錯誤狀態(tài)檢測范圍內(nèi)得到修正。此外,故障還會引起一個新的故障,這個故障再引起另一個錯誤,并繼續(xù)下去。二者的主要區(qū)別在于錯誤是可以觀察的,而故障是觀察不到的。如果可能,我們可以通過修正錯誤來嘗試"修復"故障,但在大部分場合卻無法做到。為了解這一點,我們需要看一下系統(tǒng)產(chǎn)生的錯誤類型。 一般來講錯誤有兩類。
第一類是定義明確的錯誤,其原因(故障)非常清楚,結(jié)果也是已知且確定的,并在一定范圍內(nèi)。這類錯誤一般是可以修正的,只要處置得當,不會引起失效。
第二類錯誤本質(zhì)上是一種瞬態(tài)錯誤,一般很少發(fā)生,通常沒有重復性和再生性,與時序或過載效應相關。
據(jù)研究顯示,成熟系統(tǒng)中后一類瞬態(tài)錯誤要明顯多于確定性錯誤,數(shù)量之比約為100比1。對于這種錯誤,我們通常不能用修正的方法進行修復,達到防止失效的目的,這是因為我們常常不能準確找出造成這種錯誤的故障。有時也能夠從錯誤推斷出故障,但大多數(shù)情況下做不到這一點,因為找不到線索,所以我們一般通過對錯誤造成的(或?qū)⒃斐傻?失效進行恢復,從而達到修復的目的。更通常的做法是從失效源頭處進行恢復,即從故障開始。