????????????????????????????????????????????第一章 引言
一:本章內(nèi)容
?????哪里出了問題?
?????HA的軟件基礎(chǔ)
二:問題在哪里?
????????理想的高可用性(HA)系統(tǒng)是一種持續(xù)運行的系統(tǒng),可以不間斷地運行一段不確定的時間。在實踐中,HA系統(tǒng)會爭取“5個9”的可用性,即系統(tǒng)在一年內(nèi)能夠維持的正常運行時間的百分比——99.999%的正常運行時間,相當于每年大約5分鐘的停機時間。
????????很明顯, 對于系統(tǒng)失敗是由于這樣或那樣的原因造成的,系統(tǒng)沒有按照用戶和設(shè)計者希望的那樣可用。在所有可能導(dǎo)致系統(tǒng)故障的原因中——斷電、部件故障、操作人員失誤、軟件故障等等——其中軟件故障占了絕大部分。
????????許多HA系統(tǒng)試圖解決系統(tǒng)故障的問題,是通過求助于硬件解決方案,例如:
? ? (1)加固硬件
????(2)冗余系統(tǒng)/組件
? ? (3)熱交換CompactPCI組件
? ? (4)聚類
????????但是,如果這些系統(tǒng)崩潰是由軟件故障引起的,那么在這個問題上即使投入再多的硬件可能也解決不了問題。如果在恢復(fù)系統(tǒng)之后,系統(tǒng)內(nèi)存的狀態(tài)沒有得到正確地恢復(fù),那么該怎么辦? 如果您的系統(tǒng)是一個HA系統(tǒng)(例如,一個消費設(shè)備),而冗余硬件根本不是一個選項,又該怎么辦? 亦或者,如果您的特定HA系統(tǒng)基于自定義機箱,而基于PCI的HA“解決方案”對這種機箱毫無意義,又該怎么辦?
三:HA的軟件基礎(chǔ)
????????大多數(shù)系統(tǒng)設(shè)計人員不會考慮使用“標準”桌面PC作為有效HA系統(tǒng)的基礎(chǔ)。除了由硬件本身引起的可靠性問題外,底層軟件并不適合連續(xù)操作。當桌面操作系統(tǒng)和應(yīng)用程序需要修補或升級時,大多數(shù)用戶都希望重新啟動他們的計算機。不幸的是,作為日常操作的一部分,他們可能已經(jīng)習(xí)慣于重新啟動!
????????但是在HA系統(tǒng)中,可能需要在活動系統(tǒng)上升級各種軟件組件。各個模塊應(yīng)該便于分析和修復(fù),同時不影響系統(tǒng)本身的可用性。
????????我們認為,有效的HA系統(tǒng)必須通過模塊化的系統(tǒng)設(shè)計和實現(xiàn)方法來解決主要問題——軟件故障。基于微內(nèi)核架構(gòu),QNX RTOS不僅有助于隔離整個系統(tǒng)中的問題區(qū)域,而且還確保了系統(tǒng)組件的完全獨立性。每個組件都享有完整的基于MMU的內(nèi)存保護。系統(tǒng)級模塊(如設(shè)備驅(qū)動程序)可以從與任何其他進程相同的隔離和保護中獲益。您可以啟動和停止驅(qū)動程序、網(wǎng)絡(luò)協(xié)議、文件系統(tǒng)等,而不需要觸及內(nèi)核。微內(nèi)核RTOS從本質(zhì)上保持單點故障(SPOF)數(shù)量盡可能低。
????????QNX高可用性框架為構(gòu)建高效的HA系統(tǒng)提供了可靠的軟件基礎(chǔ)設(shè)施。除了支持面向硬件的HA解決方案(例如CompactPCI和自定義硬件)之外,您還擁有在整個系統(tǒng)中出現(xiàn)軟件故障之前隔離甚至修復(fù)軟件故障的工具。
????????例如,假設(shè)一個設(shè)備驅(qū)動程序因為試圖寫入分配給另一個進程的內(nèi)存而崩潰。MMU將向QNX微核發(fā)出警報,后者將向高可用性管理器(HAM)發(fā)出警報。然后,HAM可以重新啟動驅(qū)動程序。此外,還可以生成轉(zhuǎn)儲文件進行事后分析。
????????查看這個轉(zhuǎn)儲文件,您可以立即確定哪行代碼是罪魁禍首,然后準備一個修復(fù)程序,您可以在該字段中的所有其他單元遇到相同的錯誤之前將其下載。使用傳統(tǒng)的操作系統(tǒng),一個流氓驅(qū)動程序可能會運行幾天,然后系統(tǒng)變得腐敗到足以失敗----然后再確定問題就太晚了,更不用說動態(tài)安裝升級的驅(qū)動程序了! ? ?
????????HAM可以執(zhí)行多級恢復(fù),按一定的順序執(zhí)行多個操作。當序列中的各種操作之間存在嚴格的依賴關(guān)系時,這種技術(shù)是有用的,這樣系統(tǒng)就可以將自己恢復(fù)到故障前的狀態(tài)。
????????配備了QNX Neutrino RTOS本身以及高可用性框架中的特殊工具和API,您就能夠預(yù)測可能發(fā)生的各種問題,隔離它們,然后相應(yīng)地進行計劃。換句話說,假設(shè)故障會發(fā)生,您現(xiàn)在就可以針對它進行設(shè)計,并構(gòu)建能夠智能恢復(fù)的系統(tǒng)。
【翻譯自:QNX官方英文文檔 http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.ham/topic/about.html】