第十七章 系統(tǒng)的可靠性分析與設(shè)計
17.1 可靠性概述
與可靠性相關(guān)的概念主要有:可靠度、可用度、可維度、平均無故障時間、平均故障修復(fù)時間及平均故障間隔時間等。
- 可靠度。系統(tǒng)的可靠度R(t)是指在t=0時系統(tǒng)正常的條件下,系統(tǒng)在時間區(qū)間[0,t]內(nèi)能正常運行的概率
- 可用度。系統(tǒng)的可用度A(t)是指系統(tǒng)在時刻t可運行的概率
- 可維度。系統(tǒng)的可維度M(t)是系統(tǒng)失效后,在時間間隔內(nèi)被修復(fù)的概率。
- 平均無故障時間,可靠度為R(t)的系統(tǒng)平均無故障時間MTTF定義為從t=0時到故障發(fā)生時系統(tǒng)的持續(xù)運行時間的期望值
- 平均故障修復(fù)時間??捎枚葹锳(t)的系統(tǒng)平均故障修復(fù)時間MTTR可以用類似于求MTTF對的方法求得。
- 平均故障間隔時間。MTBF常常能與MTTF發(fā)生混淆,因為兩次故障(失?。┲g必然有修復(fù)香味,因此MTBF中應(yīng)包含MTTR。對于可靠度服從指數(shù)分布的同,從任意時刻到達故障的期望時間都是相等的。
17.2 系統(tǒng)故障模型
17.2.1 故障的來源以及表現(xiàn)
- 失效:硬件的物理改變
- 故障:由于部件的失效、環(huán)境的物理干擾、操作錯誤或不正確的設(shè)計引起的硬件或軟件中的錯誤狀態(tài)。
- 錯誤(差錯):故障在程序或數(shù)據(jù)結(jié)構(gòu)中的具體位置。錯誤與故障之間可能出現(xiàn)一定距離。故障或錯誤有如下幾種表現(xiàn)形式:
- 永久性:描述連續(xù)穩(wěn)定的失效、故障或錯誤。在硬件中,永久性失效反應(yīng)了不可恢復(fù)的物理改變。
- 間歇性:描述那些由于不穩(wěn)定的硬件或變化著的硬件或軟件狀態(tài)所引起的、僅僅偶然出現(xiàn)的故障或錯誤。
- 瞬時性:描述那些由于暫時的環(huán)境條件引起的故障或錯誤。
一個故障可能是由物理失效、不適當(dāng)?shù)南到y(tǒng)設(shè)計、環(huán)境影響或系統(tǒng)的操作員所引起。永久性失效會導(dǎo)致永久性故障。間歇性故障可能由不穩(wěn)定、臨界穩(wěn)定或不正確的設(shè)計所引起。環(huán)境條件會造成瞬時性故障。所有這些故障都可能引起錯誤。不正確的設(shè)計和操作員失誤會直接引起錯誤。由硬件的物理條件,不正確的硬件或軟件設(shè)計,或不穩(wěn)定但重復(fù)出現(xiàn)的環(huán)境條件所引起的故障可能是可檢測的,并且可以通過替換或重新設(shè)計來修復(fù);然而,由于暫時的環(huán)境條件所引起的故障是不能修復(fù)的,因為其硬件本身實際上并沒有損壞。瞬時和間歇故障已經(jīng)成為系統(tǒng)中的一個主要錯誤源。
17.2.2 幾種常見的故障模型
1. 邏輯級的故障模型
固定型故障指電路中元器件的輸入或輸出等線的邏輯固定為0或固定為1。短路故障是指一個元件的輸出線的邏輯值恒等于輸入線的邏輯值;元件的開路故障是元件的輸出線懸空,邏輯值可根據(jù)具體電路來決定。橋接故障是指兩條不應(yīng)相連的線連接在一起而發(fā)生的故障。
2. 數(shù)據(jù)結(jié)構(gòu)級的故障
故障在數(shù)據(jù)結(jié)構(gòu)上的表現(xiàn)成為差錯。常見的差錯如下。
- 獨立差錯:一個故障的影響表現(xiàn)為使一個二進制位發(fā)生改變。
- 算數(shù)差錯:一個故障的影響表現(xiàn)為使一個數(shù)據(jù)的值增加或減少2i(i=0,1,2,3....)
- 單向差錯:一個故障的影響表現(xiàn)為使一個二進制向量中的某些位朝一個方向(0或1)改變。
3. 軟件故障和軟件差錯
軟件故障是指軟件設(shè)計過程中造成的與設(shè)計說明不一致的情況,在數(shù)據(jù)結(jié)構(gòu)或程序數(shù)據(jù)中的表現(xiàn)稱為軟件差錯。常見的軟件差錯有以下幾種:
- 非法轉(zhuǎn)移:程序執(zhí)行了說明中不存在的轉(zhuǎn)移
- 誤轉(zhuǎn)移:程序執(zhí)行了盡管說明中存在,但依據(jù)當(dāng)前控制數(shù)據(jù)不應(yīng)進行的轉(zhuǎn)移。
- 死循環(huán):程序執(zhí)行時間超過了規(guī)定界限。
- 空間溢出:程序使用的空間超過了規(guī)定界限。
- 數(shù)據(jù)執(zhí)行:指令計數(shù)器指向數(shù)據(jù)單元。
- 無理數(shù)據(jù):程序輸出的數(shù)據(jù)不合理。
4. 系統(tǒng)級的故障模型
故障在系統(tǒng)級上的表現(xiàn)成為功能錯誤,即系統(tǒng)輸出與系統(tǒng)設(shè)計說明的不一致。如果系統(tǒng)輸出無故障保護機構(gòu),則故障在系統(tǒng)級上的表現(xiàn)就會造成系統(tǒng)失效。
17.3 系統(tǒng)配置方法
容錯技術(shù)是保證系統(tǒng)在某些組成部分出現(xiàn)故障或差錯時仍能正常工作的技術(shù)。
17.3.1 單機容錯技術(shù)
是保證系統(tǒng)在某些組成部分出現(xiàn)故障或差錯時仍能正常工作的技術(shù)。系統(tǒng)的故障可分為兩類:一類是“致命的”,不可能自行修復(fù);另一類是局部的,可能被修復(fù)。容錯技術(shù)正是用于構(gòu)造一種能夠自動排除非致命性故障的系統(tǒng),即容錯系統(tǒng)。
在單機容錯技術(shù)中,提高系統(tǒng)工作可靠性的方法主要有自檢技術(shù)和冗余技術(shù)。容錯又有多種形式,如硬件容錯、軟件容錯、整機容錯等。
1. 自檢技術(shù)
自檢是指系統(tǒng)在發(fā)生非致命性故障時能自動發(fā)現(xiàn)故障和確定故障的性質(zhì)、部位,并自動采取措施更換和隔離產(chǎn)生故障的不見。自檢需采用診斷技術(shù),常用專門程序?qū)崿F(xiàn),屬于程序設(shè)計的范圍。容錯系統(tǒng)的實現(xiàn)要求系統(tǒng)必須具有重復(fù)部件或備份部件,或具有不止一個完成某種功能的通道,因此自檢技術(shù)長配合冗余技術(shù)使用。計算機的容錯系統(tǒng)一把都需要應(yīng)用自檢技術(shù)。
2. 冗余技術(shù)
可分為硬件冗余、軟件冗余、時間冗余、信息冗余等。冗余技術(shù)中最常用的兩種方法是重復(fù)線路和備份線路。重復(fù)線路指用多個相同品種和規(guī)格的元件或構(gòu)件并聯(lián)起來,當(dāng)做一個元件或構(gòu)件使用,只要有一個不出故障,系統(tǒng)就能夠正常工作。在并聯(lián)工作時每一個構(gòu)件的可靠性概率是互相獨立的。備份線路與重復(fù)線路的差別是參加備份的構(gòu)件并不接入系統(tǒng),只有在處于工作狀態(tài)的構(gòu)件發(fā)生故障后才把輸入和輸出接到備份構(gòu)件上來,同時切斷故障構(gòu)建的輸入、輸出。
17.3.2 雙機熱備份技術(shù)
是一種挼硬件結(jié)合的較高容錯應(yīng)用方案。該方案是由連哪個臺服務(wù)器系統(tǒng)和一個外接共享磁盤矩陣列柜和響應(yīng)的雙機熱備份軟件組成。其中呢的外接共享磁盤矩陣列柜也可以沒有,而是在各自的服務(wù)器中采取RAID(獨立冗余磁盤陣列)卡。
在這個容錯方案中,操作系統(tǒng)和應(yīng)用程序安裝在兩臺服務(wù)器的本地系統(tǒng)盤上,整個網(wǎng)絡(luò)系統(tǒng)的數(shù)據(jù)是通過磁盤陣列集中管理和數(shù)據(jù)備份的。數(shù)據(jù)集中管理是通過雙機熱備份系統(tǒng),將所有站點的數(shù)據(jù)直接從中央存儲設(shè)備讀取和存儲,并由專業(yè)人員進行管理,極大地保護了數(shù)據(jù)的安全性和保密性。用戶的數(shù)據(jù)存放在外接共享磁盤陣列中,在一臺服務(wù)器出現(xiàn)故障時,備份主動替代主機工作,保證網(wǎng)絡(luò)服務(wù)不間斷。
雙機熱備份系統(tǒng)采用“心跳”方法保證系統(tǒng)與備用系統(tǒng)的聯(lián)系。所謂“心跳”,指的是主、從系統(tǒng)之間相互按照一定的時間間隔發(fā)送通信信號,表明各自系統(tǒng)當(dāng)前的運行狀態(tài)。一旦“心跳”信號表示主機系統(tǒng)發(fā)生故障,或者備用系統(tǒng)無法收到主機系統(tǒng)的“心跳”信號,則系統(tǒng)的高可用管理軟件認為主機系統(tǒng)發(fā)生故障,立即將系統(tǒng)資源轉(zhuǎn)移到備份系統(tǒng)上,備用系統(tǒng)替代主機工作,已保證系統(tǒng)正常運行和網(wǎng)絡(luò)服務(wù)不間斷。
雙機熱備份方案中,根據(jù)兩臺服務(wù)器的工作方式可以有三種不同的工作模式,即,雙機熱備模式、雙機互備模式和雙機互工模式。
雙機熱備模式即目前通常所說的active/standby方式,active服務(wù)器處于工作狀態(tài);而standby服務(wù)器處于監(jiān)控準(zhǔn)備狀態(tài),服務(wù)器數(shù)據(jù)包括數(shù)據(jù)庫數(shù)據(jù)同時往兩臺或多臺服務(wù)器寫入(通常各服務(wù)器采用RAID磁盤陣列卡),保證數(shù)據(jù)的即時同步。當(dāng)active服務(wù)器出現(xiàn)故障時,通過軟件偵測或手工方式將standby機器激活,保證應(yīng)用在短時間內(nèi)完全恢復(fù)正常使用。
雙機互備模式,是兩個相對獨立的應(yīng)用在兩臺機器上同時運行,但彼此均設(shè)為備機,當(dāng)某一臺服務(wù)器出現(xiàn)故障時,另一臺服務(wù)器可以在短時間內(nèi)將故障服務(wù)器的應(yīng)用接管過來,從而保證了應(yīng)用的持續(xù)性,但對服務(wù)器的性能要求比較高。
雙機雙工模式是集群的一種形式,兩臺服務(wù)器均處于活動狀態(tài),同時運行相同的應(yīng)用,以保證整體系統(tǒng)的性能,也實現(xiàn)了負載均衡和互為備份,通常使用磁盤柜存儲技術(shù)。
17.3.3 服務(wù)器集群技術(shù)
集群技術(shù)指一組相互獨立的服務(wù)器在網(wǎng)絡(luò)中組合成為單一的系統(tǒng)工作,并以單一系統(tǒng)的模式加以管理。大多數(shù)情況下,集群中所有計算機擁有一個共同的名稱,集群內(nèi)任一系統(tǒng)上運行的服務(wù)可被所有的網(wǎng)絡(luò)客戶使用
集群必須可以協(xié)調(diào)管理各分離的構(gòu)件出現(xiàn)的錯誤和故障,并可透明的向集群中加入構(gòu)件。一個集群包含多臺(至少兩臺)共享數(shù)據(jù)存儲空間的服務(wù)器。其中任何一臺服務(wù)器運行應(yīng)用時,應(yīng)用數(shù)據(jù)被存儲在共享的數(shù)據(jù)空間內(nèi)。每臺服務(wù)器的操作系統(tǒng)和應(yīng)用程序文件存儲在各自的本地儲存空間上。
集群內(nèi)各節(jié)點服務(wù)器通過一個內(nèi)部局域網(wǎng)相互通信,當(dāng)一臺節(jié)點服務(wù)器發(fā)生故障時,這臺服務(wù)器上所運行的應(yīng)用程序?qū)⒃诹硪粋€節(jié)點服務(wù)器上被自動接管。當(dāng)一個應(yīng)用服務(wù)發(fā)生故障時,應(yīng)用服務(wù)將被重新啟動或被被另一臺服務(wù)器接管。當(dāng)以上的任一故障發(fā)生時,客戶都能很快連接到其他應(yīng)用服務(wù)器上。
17.4 系統(tǒng)可靠性模型
17.4.1 時間模型
可靠性增長模型,基于這樣一個假設(shè):一個軟件的中的故障數(shù)據(jù)在t=0時是常數(shù),隨著故障被糾正,故障數(shù)目逐漸減少。
17.4.2 故障植入模型
是一個面向錯誤數(shù)的數(shù)學(xué)模型,目的是以程序的錯誤數(shù)作為衡量可靠性的標(biāo)準(zhǔn),基本假設(shè)如下:
- 程序中的固有錯誤數(shù)是一個未知的常數(shù)。
- 程序中的人為錯誤數(shù)按均勻分布隨機植入
- 程序中的固有錯誤數(shù)和人為錯誤被檢測到的概率相同。
- 檢測到的錯誤立即改正
17.4.3 數(shù)據(jù)模型
對于一個預(yù)先確定的輸入環(huán)境,軟件的可靠度定義為在n次連續(xù)運行軟件中軟件完成指定任務(wù)的概率。
17.5 系統(tǒng)內(nèi)的可靠性分析和可靠度計算
17.5.1 組合模型
是計算機容錯系統(tǒng)可靠性能最長用哪個的方法。一個系統(tǒng)只要滿足一下條件,就可以用組合模型來計算其可靠性。做如下假設(shè):
- 系統(tǒng)只有兩種狀態(tài):運行狀態(tài)和失效狀態(tài)
- 系統(tǒng)可以劃分成若干個不重疊的部件,每個部件也只有兩種狀態(tài):運行狀態(tài)和失效狀態(tài)
- 部件的失效是獨立的
- 系統(tǒng)失效當(dāng)且僅當(dāng)系統(tǒng)中的剩余資源不滿足系統(tǒng)運行的最低資源要求(系統(tǒng)的狀態(tài)只依賴于部件的狀態(tài))時。
- 已知每個部件的可靠性,可靠性指可用度或可靠度等概率參數(shù)。
組合模型的目標(biāo)就是根據(jù)各部件的可靠性來計算系統(tǒng)的可靠度,基本思想如下:
1. 枚舉所有系統(tǒng)狀態(tài)
2. 計算每個系統(tǒng)狀態(tài)的概率
3. 可靠性計算
17.5.2 馬爾柯夫模型
兩個核心概念是狀態(tài)和狀態(tài)轉(zhuǎn)移。系統(tǒng)的狀態(tài)表示了在任何瞬間用以描述該系統(tǒng)所必須知道的一切。
17.6 提高系統(tǒng)可靠性的措施
防止故障造成系統(tǒng)失效的兩種技術(shù)是故障掩蔽技術(shù)和系統(tǒng)重組技術(shù),故障掩蔽技術(shù)是指防止故障造成差錯的各種技術(shù),系統(tǒng)重組技術(shù)是防止差錯導(dǎo)致系統(tǒng)失效的各種技術(shù)。故障掩蔽技術(shù)和系統(tǒng)重組技術(shù)是達到容錯的兩種基本途徑。而他們又是建立在資源冗余的基礎(chǔ)上的。資源冗余有硬件冗余、信息冗余、時間冗余和軟件冗余4種形式。
17.6.1 硬件冗余
最常用的是三模冗余TMR,三個相同的模塊接收三個相同的輸入,產(chǎn)生的結(jié)果送至多數(shù)表決器。表決器的輸出取決于三個輸入的多數(shù),若有一個故障模塊,則另兩個正常模塊的輸出可將故障模塊的輸出掩蔽,從而不再表決器輸出產(chǎn)生差錯。
17.6.2 信息冗余
是指通過在數(shù)據(jù)中附加冗余的信息以達到故障檢測、故障掩蔽或容錯的目的。
1. 海明校驗碼
基本的海明糾錯碼能糾正一位錯。原理是基于重疊奇偶校驗的概念:將原始數(shù)據(jù)位分成若干個重疊的組,每一組設(shè)一位奇偶校驗位。由于位間有重疊,因此每位原始數(shù)據(jù)從屬于多余一個組。而且每位原始數(shù)據(jù)的從屬關(guān)系是不一樣的,糾錯時,根據(jù)哪些組的奇偶校驗位出錯,就可以唯一的確定是哪一位數(shù)據(jù)出錯,將該位取反就完成了糾錯。
2. 循環(huán)冗余校驗碼
17.7 備份與恢復(fù)
系統(tǒng)的數(shù)據(jù)備份就是在系統(tǒng)其它地方創(chuàng)建數(shù)據(jù)與程序的電子復(fù)制,為重建系統(tǒng)中被破壞的或不正確的數(shù)據(jù)提供條件,備份最常用的技術(shù)是數(shù)據(jù)轉(zhuǎn)儲和建立日志文件等。
數(shù)據(jù)轉(zhuǎn)儲可分為靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。靜態(tài)轉(zhuǎn)儲是指系統(tǒng)中無事務(wù)時進行的轉(zhuǎn)儲操作,動態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲操作和用戶操作并發(fā)進行,而且轉(zhuǎn)儲工作不會影響事務(wù)的運行,但它不能保證副本中的數(shù)據(jù)正確有效。
建立日志文件是指把所有事務(wù)對系統(tǒng)的修改活動都登記下來。若發(fā)生了故障,對于靜態(tài)轉(zhuǎn)儲,可以在重裝后備系統(tǒng)之后,利用日志文件進行回復(fù),避免重新運行事務(wù);對于動態(tài)轉(zhuǎn)儲,可以把轉(zhuǎn)儲得到的副本和轉(zhuǎn)儲期間的日志文件結(jié)合起來進行故障恢復(fù),使系統(tǒng)恢復(fù)正常工作狀態(tài)。
備份通常分為聯(lián)機備份和脫機備份兩種方式。
脫機備份也叫冷備份,是一種靜態(tài)轉(zhuǎn)儲技術(shù),備份系統(tǒng)所有的物理文件和初始化文件。優(yōu)點是在恢復(fù)過程中步驟最少,比熱備份快并且出錯機會少,定期的脫機備份加上一組好的重做日志可以把系統(tǒng)的數(shù)據(jù)恢復(fù)到有任何一個時間點上。
聯(lián)機備份也叫熱備份,是一種動態(tài)轉(zhuǎn)儲技術(shù),由于只備份所需的文件,因而被看做是部分備份。在系統(tǒng)運行時執(zhí)行。優(yōu)點是可以實現(xiàn)完全的時間點恢復(fù),同時由于數(shù)據(jù)庫一直處于打開狀態(tài),減少了系統(tǒng)對物理資源的要求,改善了數(shù)據(jù)的執(zhí)行;但聯(lián)機備份比較復(fù)雜,需要對系統(tǒng)的核心有比較深刻的認識,對備份策略進行反復(fù)的測試,才能最終確定他的正確性和可用性。