了解容錯(cuò):保護(hù)系統(tǒng)安全
容錯(cuò)是許多行業(yè)領(lǐng)域中使用的概念,但它對(duì)數(shù)據(jù)存儲(chǔ)和信息技術(shù)基礎(chǔ)設(shè)施尤為重要。在這種情況下,容錯(cuò)是指計(jì)算機(jī)系統(tǒng)或存儲(chǔ)子系統(tǒng)在硬件或軟件出現(xiàn)故障時(shí),但仍能繼續(xù)工作而不中斷服務(wù),并且不會(huì)丟失數(shù)據(jù)或損害安全性。
系統(tǒng)中的容錯(cuò)能夠涵蓋整個(gè)數(shù)據(jù)存儲(chǔ)平臺(tái),從HDD硬盤(pán)到SSD硬盤(pán),從RAID到NAS。雖然容錯(cuò)有很多問(wèn)題,容錯(cuò)系統(tǒng)的最終目標(biāo)是提供安全保護(hù),實(shí)現(xiàn)起來(lái)更加復(fù)雜。
容錯(cuò)如何工作?
在最基本的層面上,通過(guò)確保系統(tǒng)沒(méi)有單點(diǎn)故障,可以將容錯(cuò)功能構(gòu)建到系統(tǒng)中。如果單個(gè)組件停止工作,將導(dǎo)致整個(gè)系統(tǒng)完全停止工作,這要求提供容錯(cuò)功能。
標(biāo)準(zhǔn)系統(tǒng)中的典型單點(diǎn)故障是電源單元(PSU),其將交流(AC)電源轉(zhuǎn)換為各種電壓的直流(DC)電源以為不同組件供電。如果電源單元(PSU)發(fā)生故障,那么它所支持的所有組件也將失效,通常會(huì)導(dǎo)致整個(gè)系統(tǒng)發(fā)生災(zāi)難性故障。
容錯(cuò)通常遵循以下兩種模型之一:
- 在某些情況下,遇到故障的容錯(cuò)系統(tǒng)可能會(huì)繼續(xù)正常運(yùn)行,而不會(huì)改變吞吐量、響應(yīng)時(shí)間或其他性能指標(biāo)。
- 其他容錯(cuò)系統(tǒng)在遇到某些故障時(shí),會(huì)在性能方面遇到“功能衰退”。也就是說(shuō),故障對(duì)系統(tǒng)性能的影響將與其嚴(yán)重程度成正比。因此,小故障將產(chǎn)生小影響,而不是大影響,也不會(huì)導(dǎo)致整個(gè)系統(tǒng)發(fā)生故障。即使在發(fā)生一個(gè)或多個(gè)嚴(yán)重故障時(shí),高度容錯(cuò)系統(tǒng)也將繼續(xù)工作。
安全容錯(cuò)計(jì)劃需要多個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)以確保冗余。
建立容錯(cuò)能力
創(chuàng)建容錯(cuò)的關(guān)鍵目的是避免(或至少盡可能地最小化)系統(tǒng)的功能由于其一個(gè)或多個(gè)組件中的故障而變得不可用的可能性。
在用于保護(hù)人員安全的系統(tǒng)(例如空中交通管制硬件和軟件系統(tǒng))以及安全、數(shù)據(jù)保護(hù)和完整性以及高價(jià)值交易所依賴的系統(tǒng)中,必須具有容錯(cuò)能力。
冗余性
為了消除單點(diǎn)故障,并提供容錯(cuò)功能,容錯(cuò)系統(tǒng)使用“冗余”概念。實(shí)際上,在以上例子中,這將意味著為系統(tǒng)配備一個(gè)或多個(gè)額外的電源單元(PSU),這些電源單元(PSU)是冗余的,在主要的電源單元(PSU)正常工作時(shí),它們不需要為系統(tǒng)供電。
但是,如果主要電源單元(PSU)發(fā)生故障(或者檢測(cè)到諸如過(guò)熱的故障,表明它即將發(fā)生故障),那么它就可能停止服務(wù),其中冗余的電源單元(PSU)可以啟動(dòng)而不會(huì)中斷運(yùn)行整體系統(tǒng)。
在理想情況下,將為系統(tǒng)中的所有組件提供冗余,但實(shí)際上成本更加高昂。出于這個(gè)原因,設(shè)計(jì)人員在選擇***候選冗余之前,計(jì)算組件發(fā)生故障的可能性、系統(tǒng)的重要程度以及冗余的成本。
另一種方法是采用在系統(tǒng)發(fā)生故障時(shí)啟動(dòng)的備用計(jì)算機(jī)系統(tǒng)。
多樣性
在某些情況下,可能無(wú)法提供冗余,這方面的一個(gè)例子是通常來(lái)自電網(wǎng)的主要電力供應(yīng)。如果市電發(fā)生故障(可能是由于發(fā)電廠發(fā)生故障或在風(fēng)暴期間電力線路刮斷),則通常無(wú)法接入替代的公共電網(wǎng)。
在這種情況下,容錯(cuò)可以通過(guò)多樣性來(lái)實(shí)現(xiàn),這意味著完全從另一個(gè)電源獲得電力供應(yīng)——很可能是備用發(fā)電機(jī),在市電故障時(shí)自動(dòng)啟動(dòng)。
在某些情況下,“多樣化”選項(xiàng)(在這種情況下是發(fā)電機(jī))可能不具有與主要選項(xiàng)相同的容量,這可能需要適當(dāng)?shù)亟档头?wù),直到可以恢復(fù)主要選項(xiàng)。
復(fù)制
實(shí)現(xiàn)容錯(cuò)的更復(fù)雜方法是通過(guò)“復(fù)制”。這涉及運(yùn)行系統(tǒng)或子系統(tǒng)的多個(gè)相同版本,并檢查它們的功能總是產(chǎn)生相同的結(jié)果。如果結(jié)果不同,則調(diào)用某些過(guò)程來(lái)確定哪個(gè)系統(tǒng)出現(xiàn)了故障。
最常用的是“民主”系統(tǒng),因此如果三個(gè)系統(tǒng)提供相同的結(jié)果,而第四個(gè)系統(tǒng)提供不同的結(jié)果,那么第四個(gè)系統(tǒng)被認(rèn)為是錯(cuò)誤的。
另一種方法是重新運(yùn)行已知正確結(jié)果的過(guò)程,以檢查哪個(gè)系統(tǒng)出現(xiàn)不同的結(jié)果,表明它有故障。
復(fù)制可以在組件級(jí)別執(zhí)行,例如,通過(guò)使三個(gè)處理器全部同時(shí)工作,或者可以在系統(tǒng)級(jí)別執(zhí)行,同時(shí)使用一組相同的計(jì)算機(jī)系統(tǒng)。
容錯(cuò)系統(tǒng)的要素
(1)硬件系統(tǒng)
典型的計(jì)算機(jī)系統(tǒng)或數(shù)據(jù)存儲(chǔ)系統(tǒng)包括中央處理單元(CPU)、系統(tǒng)存儲(chǔ)器(RAM),諸如硬盤(pán)驅(qū)動(dòng)器的輔助存儲(chǔ)系統(tǒng),以及電源單元(PSU)、網(wǎng)絡(luò)接口和主板。
為了提供容錯(cuò),容錯(cuò)計(jì)算機(jī)系統(tǒng)或數(shù)據(jù)存儲(chǔ)系統(tǒng)可以使用各種元件。這包括CPU的復(fù)制、電源單元(PSU)和內(nèi)存的冗余,在某種形式的RAID陣列中配置的硬盤(pán)驅(qū)動(dòng)器,包括冗余和復(fù)制,以及提供備用發(fā)電機(jī)的電源多樣性。
容錯(cuò)網(wǎng)絡(luò)可以由冗余網(wǎng)絡(luò)接口卡(NIC)和/或各種網(wǎng)絡(luò)選項(xiàng)(例如有線LAN NIC和無(wú)線LAN適配器)提供。
(2)軟件系統(tǒng)
軟件可以被設(shè)計(jì)成容錯(cuò)的,這樣即使在遇到錯(cuò)誤、異常或無(wú)效輸入時(shí),它也可以繼續(xù)運(yùn)行,只要它被設(shè)計(jì)成能夠處理這些錯(cuò)誤,而不是默認(rèn)地報(bào)告錯(cuò)誤和停止。
特別是,諸如TCP/IP之類的網(wǎng)絡(luò)協(xié)議已經(jīng)被明確地開(kāi)發(fā)出來(lái),以創(chuàng)建容錯(cuò)網(wǎng)絡(luò)。TCP/IP可以在個(gè)別網(wǎng)絡(luò)鏈接或節(jié)點(diǎn)可能意外變得不可用的環(huán)境中繼續(xù)運(yùn)行。它可以適應(yīng)不同的條件,以便盡可能通過(guò)任何可用的路由將數(shù)據(jù)包發(fā)送到目的地。
軟件系統(tǒng)還可以使用復(fù)制來(lái)提供容錯(cuò)功能:可以將一個(gè)非常重要的數(shù)據(jù)庫(kù)連續(xù)復(fù)制到另一個(gè)服務(wù)器,這樣,如果托管主數(shù)據(jù)庫(kù)的服務(wù)器出現(xiàn)故障,則可以立即將操作重定向到副本數(shù)據(jù)庫(kù)。
或者,可以將某些服務(wù)(尤其是Web服務(wù)器)放在負(fù)載平衡器后面,以便多個(gè)服務(wù)器都提供相同的服務(wù)。如果一臺(tái)服務(wù)器出現(xiàn)故障,那么負(fù)載均衡器只會(huì)將所有Web請(qǐng)求發(fā)送給其他服務(wù)器,直到修復(fù)故障。
當(dāng)然,這就引出了這樣一個(gè)問(wèn)題:如果負(fù)載均衡器發(fā)生故障,會(huì)發(fā)生什么情況?其答案通常是故障轉(zhuǎn)移系統(tǒng),它會(huì)立即將Web請(qǐng)求傳輸?shù)轿挥诹硪粋€(gè)位置的服務(wù)器上。由于此故障轉(zhuǎn)移位置的資源可能與主要數(shù)據(jù)中心的資源不同,因此在恢復(fù)正常操作之前,這可能會(huì)導(dǎo)致正常降級(jí)。
(3)電源
如前所述,許多容錯(cuò)系統(tǒng)包括多個(gè)電源單元(PSU),以在電源單元(PSU)發(fā)生故障時(shí)提供冗余。由于通常無(wú)法獲得冗余的主電源,因此大多數(shù)組織都依賴來(lái)自替代電源的電源形式。這通常是在市電發(fā)生故障時(shí)自動(dòng)啟動(dòng)的發(fā)電機(jī),以確保IT硬件、存儲(chǔ)設(shè)備、HVAC和其他系統(tǒng)具有所需的功率。
(4)高可用性與容錯(cuò)性
高可用性與容錯(cuò)性的概念之間經(jīng)常存在一些混淆。在最基本的層面上,高可用性指的是遭受最小服務(wù)中斷的系統(tǒng),而具有容錯(cuò)性的系統(tǒng)設(shè)計(jì)為永遠(yuǎn)不會(huì)遇到服務(wù)中斷。
在實(shí)踐中,這種差異可能很小。許多高可用性系統(tǒng)的目標(biāo)是所謂的“5個(gè)9”或99.999%的正常運(yùn)行時(shí)間,這相當(dāng)于每年只有幾分鐘的停機(jī)時(shí)間。
但是,管理這兩個(gè)概念的原則是非常不同的。容錯(cuò)系統(tǒng)旨在檢測(cè)故障并修復(fù)問(wèn)題(可能通過(guò)交換冗余組件)而不會(huì)中斷,而高可用性系統(tǒng)通常使用標(biāo)準(zhǔn)硬件,旨在在發(fā)生中斷后快速恢復(fù)服務(wù)。
高可用性通常被認(rèn)為是可接受的而不是容錯(cuò)的原因通常是成本:在系統(tǒng)中構(gòu)建容錯(cuò)設(shè)施可能比不時(shí)發(fā)生的短暫中斷要昂貴得多。許多組織使用這兩種方法的組合:容錯(cuò)系統(tǒng)用于最關(guān)鍵的活動(dòng),高可用性用于不太重要的活動(dòng)。
容錯(cuò)中要考慮的因素
(1)成本
到目前為止,容錯(cuò)的***缺點(diǎn)是它導(dǎo)致系統(tǒng)的構(gòu)建遠(yuǎn)比容錯(cuò)系統(tǒng)昂貴得多。這是因?yàn)?,它們通常需要同一組件的多個(gè)版本來(lái)提供冗余。
它們還可能需要額外的設(shè)備,如發(fā)電機(jī),即使它們從未使用過(guò),也需要定期維護(hù)和測(cè)試。其成本不僅是財(cái)務(wù)方面的,容錯(cuò)系統(tǒng)可能會(huì)占用更寶貴的數(shù)據(jù)中心空間。
考慮到所涉及的額外硬件,容錯(cuò)的額外成本在很大程度上是不可避免的。這意味著組織需要仔細(xì)考慮容錯(cuò)與高可用性的優(yōu)勢(shì)是否值得付出額外的成本。
(2)質(zhì)量下降
為了減少容錯(cuò)成本,組織通常幾乎不可避免地接受使用成本較低和質(zhì)量較差的冗余組件,因?yàn)閱蝹€(gè)組件的可靠性不再是關(guān)鍵。這可能導(dǎo)致支持和維護(hù)成本增加,并且如果組件質(zhì)量太差,甚至可能使系統(tǒng)整體不如沒(méi)有配備容錯(cuò)的系統(tǒng)可靠。為了避免這種情況,有必要監(jiān)控各個(gè)組件的性能和壽命。
(3)測(cè)試和故障檢測(cè)的難點(diǎn)
就其本質(zhì)而言,容錯(cuò)使得當(dāng)系統(tǒng)不能正常工作時(shí)更難以發(fā)現(xiàn),因?yàn)榻M件故障不會(huì)導(dǎo)致系統(tǒng)故障。
這意味著通常需要更多的資源來(lái)測(cè)試和監(jiān)控為容錯(cuò)而構(gòu)建的系統(tǒng)的健康狀況,在某些情況下,這可能需要開(kāi)發(fā)或獲取定制軟件或程序以幫助執(zhí)行任務(wù)。