公務(wù)員期刊網(wǎng) 論文中心 正文

嵌入式系統(tǒng)雙機(jī)熱備技術(shù)淺議

前言:想要寫(xiě)出一篇引人入勝的文章?我們特意為您整理了嵌入式系統(tǒng)雙機(jī)熱備技術(shù)淺議范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。

嵌入式系統(tǒng)雙機(jī)熱備技術(shù)淺議

摘要:為構(gòu)建一個(gè)強(qiáng)實(shí)時(shí)性和高可靠性的嵌入式系統(tǒng),提出了一種嵌入式系統(tǒng)的雙機(jī)熱備方法。該方法首先采用“先啟為主”的主備機(jī)身份識(shí)別機(jī)制確認(rèn)主備機(jī)身份;然后為主備機(jī)之間的心跳通信配備了2條心跳線,并且在處于正常工作運(yùn)行狀態(tài)的主機(jī)上創(chuàng)建一個(gè)互斥信號(hào)量,以此確定當(dāng)前只有一臺(tái)機(jī)器處于工作狀態(tài),避免了雙主機(jī)現(xiàn)象的出現(xiàn);建立主備機(jī)同步通信機(jī)制,確保主備機(jī)的狀態(tài)和相互之間接收數(shù)據(jù)的實(shí)時(shí)通信;通過(guò)對(duì)主備機(jī)工作狀態(tài)的實(shí)時(shí)監(jiān)測(cè),及時(shí)診斷系統(tǒng)故障,并采用主備機(jī)自動(dòng)切換算法實(shí)現(xiàn)雙機(jī)熱備功能。

關(guān)鍵詞:嵌入式軟件;軟件測(cè)試;雙機(jī)熱備;實(shí)時(shí)系統(tǒng)

目前,嵌入式系統(tǒng)的健壯性和穩(wěn)定性是用戶和系統(tǒng)設(shè)計(jì)人員都十分關(guān)注的問(wèn)題。如果在嵌入式系統(tǒng)運(yùn)行過(guò)程中,因?yàn)橄到y(tǒng)硬件或者軟件故障導(dǎo)致整個(gè)系統(tǒng)無(wú)法繼續(xù)正常工作,則可能會(huì)帶來(lái)不可預(yù)知的影響和損失。因此,為了維護(hù)嵌入式系統(tǒng)的高可用性和高可靠性,必須采取適當(dāng)?shù)拇胧﹣?lái)保證嵌入式系統(tǒng)不間斷的穩(wěn)定運(yùn)行,雙機(jī)容錯(cuò)技術(shù)就是在這樣的背景下產(chǎn)生并在嵌入式系統(tǒng)中得到了廣泛應(yīng)用[1]。當(dāng)前嵌入式系統(tǒng)中最常見(jiàn)的雙機(jī)容錯(cuò)技術(shù)有無(wú)磁盤型、共享磁盤型、磁盤鏡像型、共享和鏡像共存型等,這些方法大多應(yīng)用在專用的容錯(cuò)系統(tǒng)中,應(yīng)用在通用的容錯(cuò)系統(tǒng)中的較少[2]。上述這些方法大都是在應(yīng)用層實(shí)現(xiàn)容錯(cuò)的功能,因此不可避免地會(huì)帶來(lái)以下問(wèn)題:①增加設(shè)計(jì)人員的工作量,設(shè)計(jì)人員在實(shí)現(xiàn)具體業(yè)務(wù)的同時(shí)必須考慮容錯(cuò)功能的實(shí)現(xiàn);②數(shù)據(jù)容錯(cuò)的可靠性難以保證,設(shè)計(jì)人員只要有考慮不周的地方,就可能導(dǎo)致容錯(cuò)系統(tǒng)無(wú)法正確備份,導(dǎo)致備份失效;③系統(tǒng)可擴(kuò)展性較差,一旦在系統(tǒng)中增加新的功能,設(shè)計(jì)人員必須重新考慮備份功能的實(shí)現(xiàn),系統(tǒng)的可測(cè)試性和可維護(hù)性差。為了能夠有效地保證嵌入式系統(tǒng)穩(wěn)定、可靠、有效和持續(xù)運(yùn)行,本文提出了一種嵌入式系統(tǒng)的雙機(jī)熱備方法。該方法能夠保證設(shè)備在無(wú)人監(jiān)管的情況下不間斷正常運(yùn)行,具有技術(shù)成熟、運(yùn)行成本低和任務(wù)可靠性較高等優(yōu)點(diǎn)。

1雙機(jī)熱備系統(tǒng)概述

雙機(jī)熱備技術(shù)一般是在服務(wù)器系統(tǒng)出現(xiàn)臨時(shí)故障時(shí)采取的一種熱備份技術(shù),通過(guò)對(duì)服務(wù)器系統(tǒng)的熱備份,可以避免服務(wù)器系統(tǒng)發(fā)生故障時(shí)產(chǎn)生的長(zhǎng)時(shí)間服務(wù)中斷,確保服務(wù)器系統(tǒng)能夠長(zhǎng)時(shí)間可靠運(yùn)行。雙機(jī)熱備概念分為廣義和狹義2種。從廣義上講,就是將2臺(tái)服務(wù)器中的重要服務(wù)進(jìn)行相互備份,并且2臺(tái)服務(wù)器共同執(zhí)行同一服務(wù)。當(dāng)任意1臺(tái)服務(wù)器運(yùn)行時(shí)出現(xiàn)故障,另外1臺(tái)服務(wù)器在最短的時(shí)間內(nèi)接管該故障服務(wù)器的一切服務(wù),該接管工作不需要人工進(jìn)行干預(yù),保證整個(gè)服務(wù)器系統(tǒng)正常不間斷運(yùn)行。狹義上講,服務(wù)器數(shù)據(jù)同時(shí)寫(xiě)入2臺(tái)服務(wù)器中,或者這2臺(tái)服務(wù)器采用1個(gè)共享存儲(chǔ)設(shè)備。在同一時(shí)間2臺(tái)服務(wù)器只有1臺(tái)處于激活(工作)狀態(tài),另外1臺(tái)處于靜默狀態(tài)。當(dāng)處于激活狀態(tài)的服務(wù)器故障時(shí),通過(guò)心跳機(jī)制激活另外1臺(tái)服務(wù)器,讓其接管當(dāng)前工作。雙機(jī)熱備系統(tǒng)采用故障隔離的工作原理,將發(fā)生故障的設(shè)備以故障點(diǎn)轉(zhuǎn)移的方式讓處于熱備份狀態(tài)的正常設(shè)備接管當(dāng)前工作,保證整個(gè)系統(tǒng)的不間斷運(yùn)行。故障的恢復(fù)不是在故障設(shè)備上,而是在熱備份的設(shè)備上,熱備份的方式不是用來(lái)修復(fù)當(dāng)前故障設(shè)備,而僅僅是將故障隔離。雙機(jī)熱備系統(tǒng)中的關(guān)鍵技術(shù)有主備機(jī)身份識(shí)別技術(shù)、主備機(jī)之間心跳通信技術(shù)、主備機(jī)同步技術(shù)和主備機(jī)故障檢測(cè)和切換技術(shù)等。

2主備機(jī)身份識(shí)別

目前大多數(shù)的雙機(jī)熱備系統(tǒng)都采用在主備機(jī)端安裝不同軟件的方式。這種方法的優(yōu)點(diǎn)是程序開(kāi)發(fā)較為簡(jiǎn)便、邏輯清晰;缺點(diǎn)是靈活性較差、不便于維護(hù)。為了使主機(jī)和備機(jī)具有完全對(duì)等性,采用“先啟為主”的主備機(jī)身份識(shí)別機(jī)制,即先啟動(dòng)的為主機(jī),后啟動(dòng)的為從機(jī)?!跋葐橹鳌钡闹鱾錂C(jī)身份識(shí)別機(jī)制采用端口監(jiān)聽(tīng)的方法實(shí)現(xiàn)。首先在主機(jī)和備機(jī)上分別配置好對(duì)方的IP地址和通信端口號(hào),在嵌入式系統(tǒng)的任務(wù)啟動(dòng)后立即創(chuàng)建一個(gè)套接字并向?qū)Ψ酵ㄐ哦丝诎l(fā)出連接請(qǐng)求。如果連接成功說(shuō)明對(duì)方已經(jīng)啟動(dòng),本機(jī)標(biāo)識(shí)為備機(jī);如果連接失敗將本機(jī)標(biāo)識(shí)為主機(jī),并將套接字綁定到主備機(jī)通信端口進(jìn)行監(jiān)聽(tīng)。這樣,無(wú)論備機(jī)何時(shí)啟動(dòng),主機(jī)都會(huì)接受備機(jī)的連接請(qǐng)求并與之建立連接。

3建立主備機(jī)之間的心跳通信

為了提高嵌入式雙機(jī)熱備系統(tǒng)的可靠性,首當(dāng)其沖需要解決的是主機(jī)設(shè)備和備機(jī)設(shè)備之間的通信問(wèn)題。雙方通信的可靠程度很大程度上決定了主機(jī)設(shè)備和備機(jī)設(shè)備數(shù)據(jù)的同步性、主機(jī)設(shè)備和備機(jī)設(shè)備相互監(jiān)測(cè)的準(zhǔn)確性、主機(jī)設(shè)備和備機(jī)設(shè)備數(shù)據(jù)傳輸?shù)姆€(wěn)定性以及隔離故障機(jī)和備用機(jī)恢復(fù)重新切入雙機(jī)系統(tǒng)的健壯性。通常在主機(jī)設(shè)備和備機(jī)設(shè)備之間采用心跳信號(hào)來(lái)相互監(jiān)測(cè)對(duì)方的工作狀態(tài),并作為診斷設(shè)備故障的一種輔助手段。一旦主機(jī)設(shè)備和備機(jī)設(shè)備之間的心跳信號(hào)發(fā)生故障,則表明有一方設(shè)備出現(xiàn)了故障,同時(shí)也能初步確定故障設(shè)備的原因。因此,在主機(jī)設(shè)備和備機(jī)設(shè)備之間建立心跳通信機(jī)制,也是提高嵌入式系統(tǒng)安全性的一種有效方法。傳統(tǒng)的雙機(jī)熱備系統(tǒng)中雙機(jī)之間是通過(guò)心跳線互發(fā)心跳建立連接通信的。若心跳線發(fā)生故障,就會(huì)將原有協(xié)調(diào)的系統(tǒng)分為2個(gè)獨(dú)立的個(gè)體。由于雙機(jī)彼此失去聯(lián)系,都以為對(duì)方發(fā)生故障,備用機(jī)本能的升為主用機(jī),而主用機(jī)由于本身工作正常,繼續(xù)保持主用,從而導(dǎo)致“雙主”現(xiàn)象的產(chǎn)生。傳統(tǒng)的解決“雙主”現(xiàn)象的辦法是增加心跳線的數(shù)量,但是該辦法的缺點(diǎn)是不僅會(huì)增加系統(tǒng)的硬件成本,而且還會(huì)占用系統(tǒng)的接口資源,新增加的心跳線還會(huì)成為潛在的故障點(diǎn),降低了系統(tǒng)的可維護(hù)性。為了提高雙機(jī)熱備系統(tǒng)的可靠性,主機(jī)和備機(jī)均采用雙網(wǎng)卡工作,雙網(wǎng)通過(guò)交換機(jī)連接到局域網(wǎng)中,采用一條心跳線進(jìn)行雙機(jī)之間的通信。因此,雙機(jī)之間通過(guò)心跳線、雙網(wǎng)的狀態(tài)3種通道傳遞心跳信號(hào)。只要這3種通道有一個(gè)能收到對(duì)方的心跳,即可認(rèn)為心跳正常。當(dāng)出現(xiàn)心跳失效的情況時(shí),分別選取雙網(wǎng)上的一臺(tái)設(shè)備(主機(jī)或者備機(jī))或設(shè)備的某個(gè)端口作為該通道的遠(yuǎn)程檢測(cè)點(diǎn)。當(dāng)某個(gè)網(wǎng)絡(luò)通道心跳失效時(shí),雙機(jī)通過(guò)該網(wǎng)絡(luò)通道檢查設(shè)置的遠(yuǎn)程檢測(cè)點(diǎn),若檢測(cè)不到則表明故障出現(xiàn)在本機(jī)端;若可以檢測(cè)到則表明故障出現(xiàn)在對(duì)方。為了進(jìn)一步提高雙機(jī)熱備系統(tǒng)的可用性,雙網(wǎng)通道在收到對(duì)方心跳時(shí)加入時(shí)間戳。在心跳無(wú)效的情況下,根據(jù)心跳時(shí)間戳,選擇最后收到心跳的網(wǎng)絡(luò),然后去檢查對(duì)應(yīng)此網(wǎng)絡(luò)的遠(yuǎn)程檢測(cè)點(diǎn),若可以檢測(cè)到,表明對(duì)方宕機(jī)下線,本機(jī)正常,可作為主機(jī)運(yùn)行;否則,標(biāo)明本機(jī)宕機(jī),此時(shí)應(yīng)工作在備機(jī)。雙機(jī)通信的流程如圖1所示。

4實(shí)現(xiàn)主備機(jī)同步

雙機(jī)熱備系統(tǒng)中主機(jī)設(shè)備與備機(jī)設(shè)備必須保持嚴(yán)格意義上的同步,它們之間同步性的好壞直接影響到主機(jī)設(shè)備和備機(jī)設(shè)備發(fā)生切換后雙方數(shù)據(jù)的一致性。若兩方數(shù)據(jù)同步性不好,則當(dāng)一方接管另一方(故障設(shè)備)工作時(shí),就會(huì)造成數(shù)據(jù)的不完整性,從而影響整個(gè)嵌入式系統(tǒng)的工作流程。因此,主備機(jī)的同步是確保整個(gè)系統(tǒng)主機(jī)設(shè)備及其備機(jī)設(shè)備中程序與數(shù)據(jù)同步運(yùn)行和實(shí)現(xiàn)雙機(jī)無(wú)縫切換的基礎(chǔ)。此外,主備機(jī)設(shè)備在運(yùn)行過(guò)程中的相互監(jiān)測(cè)以及當(dāng)一方發(fā)生故障時(shí)的故障診斷工作都對(duì)主備機(jī)之間的同步性能提出了更高的要求。主備機(jī)的同步不僅包括時(shí)鐘同步,還包括主備機(jī)狀態(tài)和數(shù)據(jù)同步。主備機(jī)的時(shí)鐘同步是指硬件上的同步,包括雙機(jī)時(shí)鐘周期和時(shí)鐘時(shí)序的同步。在主備機(jī)上電后,保證主備機(jī)使用的是同一外部有源晶振提供的時(shí)鐘周期,以此來(lái)保障系統(tǒng)的各個(gè)模塊完全按照相同的時(shí)鐘頻率運(yùn)行。主備機(jī)的狀態(tài)和數(shù)據(jù)同步是指主備機(jī)之間需要實(shí)時(shí)進(jìn)行通信,其中包括主備機(jī)的狀態(tài)和接收數(shù)據(jù)的實(shí)時(shí)通信。為了讓主備機(jī)的任務(wù)初始化能夠同步開(kāi)始,必須對(duì)主備機(jī)同時(shí)上電。當(dāng)主機(jī)任務(wù)啟動(dòng)指令到達(dá)的第一時(shí)間通知備機(jī)啟動(dòng)任務(wù),使備機(jī)同時(shí)進(jìn)入工作模式。在主備機(jī)均正常工作的情況下,主備機(jī)同時(shí)從網(wǎng)絡(luò)上接收信息,但只有主機(jī)有權(quán)限向外部設(shè)備發(fā)送信息,備機(jī)只接收外部信息,處于信息發(fā)送靜默狀態(tài)。主備機(jī)的同步過(guò)程如圖2所示。

5實(shí)現(xiàn)主備機(jī)故障檢測(cè)和切換

故障檢測(cè)技術(shù)是雙機(jī)熱備系統(tǒng)進(jìn)行主機(jī)設(shè)備和備機(jī)設(shè)備切換的關(guān)鍵環(huán)節(jié),通過(guò)對(duì)設(shè)備進(jìn)行實(shí)時(shí)準(zhǔn)確地狀態(tài)監(jiān)視和檢測(cè),能夠及時(shí)地發(fā)現(xiàn)并上報(bào)設(shè)備的故障,并啟動(dòng)冗余設(shè)備繼續(xù)完成系統(tǒng)當(dāng)前的工作任務(wù),是保證了雙機(jī)熱備系統(tǒng)可靠性和穩(wěn)定性的前提和基礎(chǔ)。采用如下3種措施實(shí)現(xiàn)主備機(jī)故障檢測(cè):①在主備機(jī)中配備看門狗定時(shí)器。在系統(tǒng)上電后,處理器在正常工作時(shí)會(huì)每隔固定的時(shí)間對(duì)看門狗計(jì)數(shù)器進(jìn)行清零操作。若主機(jī)或者備機(jī)出現(xiàn)故障,看門狗計(jì)數(shù)器值會(huì)超過(guò)某個(gè)閾值,最終會(huì)導(dǎo)致看門狗產(chǎn)生復(fù)位信號(hào),使處理器復(fù)位,通過(guò)上述方式可判斷主備機(jī)是否出現(xiàn)故障。②在主備機(jī)上電后,可對(duì)系統(tǒng)進(jìn)行自檢操作,包括CPU檢測(cè)、內(nèi)存檢測(cè)、I/O設(shè)備檢測(cè)等,可在上電時(shí)檢測(cè)系統(tǒng)硬件是否工作正常。③在系統(tǒng)運(yùn)行過(guò)程中,主備機(jī)之間通過(guò)心跳線和雙網(wǎng)的狀態(tài)相互監(jiān)測(cè)對(duì)方的工作狀態(tài)。由于主備機(jī)在上電時(shí)通過(guò)身份識(shí)別已明確自身是主機(jī)還是備機(jī),因此,如果在系統(tǒng)運(yùn)行過(guò)程中,主機(jī)檢測(cè)到備機(jī)故障,則不進(jìn)行切換,主機(jī)繼續(xù)保持工作;如果備機(jī)檢測(cè)到主機(jī)故障,則進(jìn)行切換,由備機(jī)接管主機(jī)繼續(xù)工作。

6結(jié)束語(yǔ)

雙機(jī)熱備技術(shù)是保證嵌入式實(shí)時(shí)系統(tǒng)可靠性和穩(wěn)定性最重要和最關(guān)鍵的方法,不僅有效降低了系統(tǒng)出現(xiàn)故障的概率,還大大提高了系統(tǒng)可用性。本文提出的方法具有成本低、易于實(shí)現(xiàn)、可靠性高、主備機(jī)切換時(shí)間短等優(yōu)點(diǎn),大大滿足短事務(wù)、強(qiáng)實(shí)時(shí)系統(tǒng)的要求,增強(qiáng)了雙機(jī)熱備系統(tǒng)在復(fù)雜、惡劣環(huán)境下的可維護(hù)性。

參考文獻(xiàn):

[1]肖佳,王古城,楊旭,等.雙機(jī)熱備與負(fù)載均衡的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2015,23(18):176-179.

[2]羅貴舟,王錦杰,楊旭斌,等.一種多策略雙機(jī)熱備方法[J].計(jì)算機(jī)測(cè)量與控制,2019,27(3):231-234,239.

作者:劉慕霄 劉憲忠 趙昶宇 單位:海軍裝備部駐北京地區(qū)軍事代表局駐天津地區(qū)第二軍事代表室 海軍裝備部駐天津地區(qū)第二軍事代表室 天津津航計(jì)算技術(shù)研究所

相關(guān)熱門標(biāo)簽