服務(wù)創(chuàng)造價值、存在造就未來
系統(tǒng)的可靠性分析與設(shè)計是在系統(tǒng)分析與設(shè)計階段、系統(tǒng)集成階段應(yīng)該重點考慮的問題。主要包括:可靠性設(shè)計、系統(tǒng)的故障模型、系統(tǒng)配置方法、可靠性模型、提高系統(tǒng)可靠性的措施等內(nèi)容。
可靠性:產(chǎn)品在規(guī)定的條件下和規(guī)定的時間內(nèi),完成規(guī)定功能的能力。可靠性的概率度量叫可靠度。
可靠性分為固有可靠性和使用可靠性。與可靠性相關(guān)的概念主要有:可靠度、可用度、可維度、平均無故障時間、平均故障修復(fù)時間及平均故障間隔時間等。
(1)可靠度。系統(tǒng)的可靠度 R(t)是指在 t=0 時系統(tǒng)正常的條件下,系統(tǒng)在時間區(qū)間[0,t] 內(nèi)能正常運行的概率。
(2)可用度。系統(tǒng)的可用度 A(t)是指系統(tǒng)在時刻 t 可運行的概率。
(3)可維度。系統(tǒng)的可維度 M(t)是指系統(tǒng)失效后,在時間間隔內(nèi)被修復(fù)的概率。
(4)平均無故障時間??煽慷葹?R(t)的系統(tǒng)平均無故障時間(Mean Time To Failure,MTTF)定義為從 t=0 時到故障發(fā)生時系統(tǒng)的持續(xù)運行時間的期望值:
式中 λ 為失效率,是指器件或系統(tǒng)在單位時間內(nèi)發(fā)生失效的預(yù)期次數(shù),在此處假設(shè)為常數(shù)。
(5)平均故障修復(fù)時間??捎枚葹?A(t)的系統(tǒng)平均故障修復(fù)時間(Mean Time To Repair,MTTR)可以用類似于求 MTTF的方法求得。
設(shè) A1(t)是在風(fēng)險函數(shù) Z(t)=0 且系統(tǒng)的初始狀態(tài)為 1 狀態(tài)的條件下 A(t)的特殊情況,
則:
此處假設(shè)修復(fù)率 μ(t) = μ(常數(shù)),修復(fù)率是指單位時間內(nèi)可修復(fù)系統(tǒng)的平均次數(shù),則:
MTTR =1/ μ
(6)平均故障間隔時間。平均故障間隔時間(Mean Time Between Failure,MTBF)常常與 MTTF 發(fā)生混淆。因為兩次故障(失敗)之間必然有修復(fù)行為,因此,MTBF 中應(yīng)包含 MTTR。對于可靠度服從指數(shù)分布的系統(tǒng),從任一時刻 t 0 到達故障的期望時間都是相等的,因此有:
MTBF = MTTR + MTTF
任何系統(tǒng),不管現(xiàn)在運行得多么穩(wěn)定,總有發(fā)生故障的時候。系統(tǒng)故障一般遵循一定的規(guī)律規(guī)律。
下面先介紹幾個概念。
(1)失效:硬件的物理改變。
(2)故障:由于部件的失效、環(huán)境的物理干擾、操作錯誤或不正確的設(shè)計引起的硬件或軟件中的錯誤狀態(tài)。
(3)錯誤(差錯):故障在程序或數(shù)據(jù)結(jié)構(gòu)中的具體位置。錯誤與故障位置之間可能出現(xiàn)一定距離。故障或錯誤有如下幾種表現(xiàn)形式。
永久性:描述連續(xù)穩(wěn)定的失效、故障或錯誤。在硬件中,永久性失效反映了不可恢復(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)中的一個主要錯誤源。
故障的表現(xiàn)形式各有不同,我們可以利用故障模型對故障表現(xiàn)進行抽象。故障模型可以在系統(tǒng)的各個級別上建立。一般說來,故障模型建立的級別越低,進行故障處理的代價也越低,但故障模型覆蓋的故障也越少。如果在某一級別的故障模型不能包含故障的某些表現(xiàn),則可以用更高一級別的模型來概括。下面介紹幾種常用的故障模型。
1.邏輯級的故障模型
固定型故障指電路中元器件的輸入或輸出等線的邏輯固定為 0 或固定為 1,如某線接地、電源短路或元件失效等都可能造成固定型故障。短路故障是指一個元件的輸出線的邏輯值恒等于輸入線的邏輯值;元件的開路故障是元件的輸出線懸空,邏輯值可根據(jù)具體電路來決定。橋接故障指兩條不應(yīng)相連的線連接在一起而發(fā)生的故障。
2.?dāng)?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,…)。
單向差錯:一個故障的影響表現(xiàn)為使一個二進制向量中的某些位朝一個方向(0 或1)改變。
3.軟件故障和軟件差錯
軟件故障是指軟件設(shè)計過程造成的與設(shè)計說明的不一致的情況,軟件故障在數(shù)據(jù)結(jié)構(gòu)或程序輸出中的表現(xiàn)稱為軟件差錯。與硬件不同,軟件不會因為環(huán)境壓力而疲勞,也不會因為時間的推移而衰老。因此,軟件故障只與設(shè)計有關(guā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)失效。
容錯技術(shù)是保證系統(tǒng)在某些組成部分出現(xiàn)故障或差錯時仍能正常工作的技術(shù)。通常根據(jù)不同的系統(tǒng)配置方法而采用相應(yīng)容錯技術(shù):單機容錯技術(shù)、雙機熱備份技術(shù)和服務(wù)器集群技術(shù)。
容錯技術(shù)是保證系統(tǒng)在某些組成部分出現(xiàn)故障或差錯時仍能正常工作的技術(shù)。系統(tǒng)的故障可分為兩類:一類是“致命的”,不可能自行修復(fù),例如系統(tǒng)的主要部件全部損壞;另一類是局部的,可能被修復(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ù)
冗余可分為硬件冗余(增加硬件)、軟件冗余(增加程序,如同時采用不同算法或不同人編制的程序)、時間冗余(如指令重復(fù)執(zhí)行、程序重復(fù)執(zhí)行)、信息冗余(如增加數(shù)據(jù)位)等。冗余技術(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)件的輸入、輸出。
雙機熱備份技術(shù)是一種軟硬件結(jié)合的較高容錯應(yīng)用方案。該方案是由兩臺服務(wù)器系統(tǒng)和一個外接共享磁盤陣列柜和相應(yīng)的雙機熱備份軟件組成。其中的外接共享磁盤陣列柜也可以沒有,而是在各自的服務(wù)器中采取 RAID(Redundant Array of Independent Disk,獨立冗余磁盤陣列)卡。
在這個容錯方案中,操作系統(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)系。
雙機熱備份方案中,根據(jù)兩臺服務(wù)器的工作方式可以有三種不同的工作模式,即:雙機熱備模式、雙機互備模式和雙機雙工模式。
集群技術(shù)指一組相互獨立的服務(wù)器在網(wǎng)絡(luò)中組合成為單一的系統(tǒng)工作,并以單一系統(tǒng)的模式加以管理。此單一系統(tǒng)為客戶工作站提供高可靠性的服務(wù)。大多數(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ù)器上。
與系統(tǒng)故障模型對應(yīng)的就是系統(tǒng)的可靠性模型。人們經(jīng)常說某系統(tǒng)“十分可靠”,那么這個“十分”究竟如何衡量呢?
最著名的時間模型是由 Shooman 提出的可靠性增長模型,這個模型基于這樣一個假設(shè):一個軟件中的故障數(shù)目在 t = 0 時是常數(shù),隨著故障被糾正,故障數(shù)目逐漸減少。
在此假設(shè)下,一個軟件經(jīng)過一段時間的調(diào)試后剩余故障的數(shù)目可用下式來估計:
其中,τ 為調(diào)試時間, Er (τ ) 為在時刻 τ 軟件中剩余的故障數(shù), E0 為τ = 0 時軟件中的故障數(shù), Er (τ ) 為在[0,τ]內(nèi)糾正的故障數(shù),I 為軟件中的指令數(shù)。
由故障數(shù) Er (τ ) 可以得出軟件的風(fēng)險函數(shù):
Z(t)=C?Er(τ)
其中 C 是比例常數(shù)。于是,
軟件的可靠度為:
軟件的平均無故障時間為:
故障植入模型是一個面向錯誤數(shù)的數(shù)學(xué)模型,其目的是以程序的錯誤數(shù)作為衡量可靠性的標(biāo)準(zhǔn),模型的原型是 1972 年由 Mills 提出的。
Mills 提出的故障植入模型的基本假設(shè)如下:
(1)程序中的固有錯誤數(shù)是一個未知的常數(shù)。
(2)程序中的人為錯誤數(shù)按均勻分布隨機植入。
(3)程序中的固有錯誤數(shù)和人為錯誤被檢測到的概率相同。
(4)檢測到的錯誤立即改正。
在數(shù)據(jù)模型下,對于一個預(yù)先確定的輸入環(huán)境,軟件的可靠度定義為在 n 次連續(xù)運行中軟件完成指定任務(wù)的概率。
防止故障造成系統(tǒng)失效的兩種技術(shù)是故障掩蔽技術(shù)和系統(tǒng)重組技術(shù),故障掩蔽技術(shù)是指防止故障造成差錯的各種技術(shù),系統(tǒng)重組技術(shù)是防止差錯導(dǎo)致系統(tǒng)失效的各種技術(shù)。故障掩蔽技術(shù)和系統(tǒng)重組技術(shù)是達到容錯的兩種基本途徑。而它們又是建立在資源冗余的基礎(chǔ)上的。資源冗余有硬件冗余、信息冗余、時間冗余和軟件冗余 4 種形式。本節(jié)主要介紹前兩種形式。
硬件冗余最常用的是三模冗余(Triple Modular Redundancy,TMR),三個相同的模塊接收三個相同的輸入,產(chǎn)生的三個結(jié)果送至多數(shù)表決器。表決器的輸出取決于三個輸入的多數(shù),若有一個故障模塊,則另兩個正常模塊的輸出可將故障模塊的輸出掩蔽,從而不在表決器輸出產(chǎn)生差錯。
信息冗余是指通過在數(shù)據(jù)中附加冗余的信息以達到故障檢測、故障掩蔽或容錯的目的。應(yīng)用最廣泛的是海明校驗碼、奇偶校驗碼。
1.海明校驗碼
海明校驗碼是由 Richard Hamming 于 1950 年提出,目前仍然被廣泛采用的一種很有效的校驗方法,是只要增加少數(shù)幾個校驗位,就能檢測出二位同時出錯,亦能檢測出一位出錯并能自動恢復(fù)該出錯位的正確值的有效手段,后者稱為自動糾錯。它的實現(xiàn)原理,是在 k 個數(shù)據(jù)位之外加上 r 個校驗位,從而形成一個 k+r 位的新的碼字,使新的碼字的碼距比較均勻地拉大。把數(shù)據(jù)的每一個二進制位分配在幾個不同的偶校驗位的組合中,當(dāng)某一位出錯后,就會引起相關(guān)的幾個校驗位的值發(fā)生變化,不但可以發(fā)現(xiàn)出錯,還能指出是哪一位出錯,為進一步自動糾錯提供了依據(jù)。
2.循環(huán)冗余校驗碼
循環(huán)冗余校驗碼(Cyclic Redundancy Chec,CRC)也廣泛應(yīng)用于移動通信和磁盤數(shù)據(jù)存儲中。CRC 也是給信息碼加上幾位校驗碼,以增加整個編碼系統(tǒng)的碼距和查錯糾錯能力。
CRC 的基本原理是:在 K 位信息碼后再添加 R 位的校驗碼,整個編碼長度為 N 位,因此,這種編碼又稱(N,K)碼。對于一個給定的(N,K)碼,可以證明存在一個最高次冪為 N-K=R 的多項式 G(x)。根據(jù) G(x)可以生成 R 位的校驗碼,而 G(x)叫作這個 CRC 碼的生成多項式。
在計算機系統(tǒng)中,硬件故障、系統(tǒng)軟件和應(yīng)用軟件的故障、操作員的失誤,甚至病毒、人為破壞總是不可避免的,為了保證故障發(fā)生后,系統(tǒng)能盡快從錯誤狀態(tài)恢復(fù)到某種邏輯一致的狀態(tài),系統(tǒng)就必須有備份與恢復(fù)的機制。
系統(tǒng)的數(shù)據(jù)備份就是在系統(tǒng)其他地方創(chuàng)建數(shù)據(jù)與程序的電子復(fù)制,為重建系統(tǒng)中被破壞的或不正確的數(shù)據(jù)提供條件,備份最常用的技術(shù)是數(shù)據(jù)轉(zhuǎn)儲和建立日志文件??梢越Y(jié)合這兩種技術(shù)為系統(tǒng)提供比較好的備份手段。
數(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)儲操作與用戶事務(wù)并發(fā)進行,而且轉(zhuǎn)儲工作不會影響事務(wù)的運行,但它不能保證副本中的數(shù)據(jù)正確有效。
建立日志文件是指把所有事務(wù)對系統(tǒng)的修改活動都登記下來。若發(fā)生了故障,對于靜態(tài)轉(zhuǎn)儲,可以在重裝后備副本之后,利用日志文件進行恢復(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)所有的物理文件(控制文件、數(shù)據(jù)文件、重做日志和歸檔日志)和初始化文件。這種方式的優(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ù)的測試,才能最終確定它的正確性和可用性。