本發(fā)明屬于檢測領(lǐng)域,尤其涉及一種狀態(tài)檢測方法及系統(tǒng)。
背景技術(shù):
嵌入式部件廣泛應(yīng)用于計算系統(tǒng)中并扮演較為重要的角色,嵌入式部件固件出問題后經(jīng)常出現(xiàn)重啟、死機的情況,技術(shù)人員進行故障分析時往往需要明確嵌入式部件的工作狀態(tài)是否正常;目前尚沒有簡單、有效的方法判斷嵌入式部件的工作狀態(tài)。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種狀態(tài)檢測方法及系統(tǒng),以解決上述問題。
本發(fā)明實施例提供一種狀態(tài)檢測方法。上述方法包括以下步驟:被監(jiān)控設(shè)備正常運行后,監(jiān)控設(shè)備獲取所述被監(jiān)控設(shè)備中的心跳計數(shù)器的計數(shù)值;
所述監(jiān)控設(shè)備根據(jù)所述計數(shù)值與所述心跳計數(shù)器中的正常啟動值的比較結(jié)果;或者,根據(jù)所述計數(shù)值的變化狀態(tài);或者,根據(jù)所述計數(shù)值的獲取情況,確定所述被監(jiān)控設(shè)備的狀態(tài)。
本發(fā)明實施例還提供一種狀態(tài)檢測系統(tǒng),包括監(jiān)控設(shè)備、被監(jiān)控設(shè)備;其中,所述監(jiān)控設(shè)備與所述被監(jiān)控設(shè)備連接;
所述被監(jiān)控設(shè)備正常運行后,監(jiān)控設(shè)備獲取所述被監(jiān)控設(shè)備中的心跳計數(shù)器的計數(shù)值;
所述監(jiān)控設(shè)備根據(jù)所述計數(shù)值與所述心跳計數(shù)器中的正常啟動值的比較結(jié)果;或者,根據(jù)所述計數(shù)值的變化狀態(tài);或者,根據(jù)所述計數(shù)值的獲取情況,確定所述被監(jiān)控設(shè)備的狀態(tài)。
通過以下方案:被監(jiān)控設(shè)備正常運行后,監(jiān)控設(shè)備獲取所述被監(jiān)控設(shè)備中的心跳計數(shù)器的計數(shù)值;所述監(jiān)控設(shè)備根據(jù)所述計數(shù)值與所述心跳計數(shù)器中的正常啟動值的比較結(jié)果;或者,根據(jù)所述計數(shù)值的變化狀態(tài);或者,根據(jù)所述計數(shù)值的獲取情況,確定所述被監(jiān)控設(shè)備的狀態(tài);提供了一種簡單、有效的方法判斷嵌入式部件的工作狀態(tài)。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖1所示為根據(jù)本發(fā)明實施例1提供的狀態(tài)檢測方法的流程圖;
圖2所示為根據(jù)本發(fā)明實施例2提供的被監(jiān)控嵌入式部件重啟、死機計
數(shù)邏輯圖;
圖3所示為根據(jù)本發(fā)明實施例3提供的重啟、死機檢測邏輯圖;
圖4所示為根據(jù)本發(fā)明實施例4提供的狀態(tài)檢測系統(tǒng)的示意圖。
具體實施方式
下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
圖1所示為根據(jù)本發(fā)明實施例1提供的狀態(tài)檢測方法的流程圖,包括以下步驟:
步驟101:被監(jiān)控設(shè)備正常運行后,監(jiān)控設(shè)備獲取所述被監(jiān)控設(shè)備中的心跳計數(shù)器的計數(shù)值;
進一步地,被監(jiān)控設(shè)備正常運行前,還包括:被監(jiān)控設(shè)備啟動后,所述被監(jiān)控設(shè)備中的心跳計數(shù)器進行周期性的計數(shù),累加至預(yù)設(shè)的正常啟動值。
具體而言:
嵌入式部件(被監(jiān)控設(shè)備)計算能力相對較弱,心跳計數(shù)器采用一個字節(jié)數(shù)據(jù)(即可表示0-255);嵌入式部件啟動后,其固件系統(tǒng)維護一個心跳計數(shù)器,初始值為0,固件系統(tǒng)開啟一個永不停止的循環(huán),每次循環(huán)周期為t秒,周期t的設(shè)置建議值為2s,周期太小會增加嵌入式系統(tǒng)的計算壓力。
嵌入式系統(tǒng)將心跳計數(shù)器按照周期t逐漸累加一直達到“正常啟動值”,正常啟動值即表示嵌入式部件已經(jīng)正常啟動的計數(shù)器值,正常啟動值可以根據(jù)實際實際情況調(diào)節(jié),建議值為128;當心跳計數(shù)器累加到正常啟動值時,可認為嵌入式部件已經(jīng)正常啟動。
進一步地,被監(jiān)控設(shè)備正常運行后,所述心跳計數(shù)器將從所述正常啟動值進行計數(shù),累加至極限值后,所述心跳計數(shù)器再次從所述正常啟動值開始累加,進行循環(huán)計數(shù)。
具體而言,嵌入式部件正常啟動后,心跳計數(shù)器將從“正常啟動值”累加到254,心跳計數(shù)器達到254后,心跳計數(shù)器再次從“正常啟動值”開機累加,一直到達254,依此規(guī)律心跳計數(shù)器從“正常啟動值”到254進行更新;心跳計數(shù)器一直在“正常啟動值”到254變化,即表示嵌入式部件一直在正常工作。
步驟102:所述監(jiān)控設(shè)備根據(jù)所述計數(shù)值與所述心跳計數(shù)器中的正常啟動值的比較結(jié)果;或者,根據(jù)所述計數(shù)值的變化狀態(tài);或者,根據(jù)所述計數(shù)值的獲取情況,確定所述被監(jiān)控設(shè)備的狀態(tài)。
進一步地,被監(jiān)控設(shè)備正常運行后,所述監(jiān)控設(shè)備判斷所述心跳計數(shù)器中的計數(shù)值小于所述正常啟動值,則所述被監(jiān)控設(shè)備處于重啟狀態(tài)。
進一步地,被監(jiān)控設(shè)備正常運行后,所述監(jiān)控設(shè)備判斷所述心跳計數(shù)器中的計數(shù)值不變化,則所述被監(jiān)控設(shè)備處于死機狀態(tài)。
進一步地,被監(jiān)控設(shè)備正常運行后,所述監(jiān)控設(shè)備獲取不到所述心跳計數(shù)器中的計數(shù)值,則所述被監(jiān)控設(shè)備處于死機狀態(tài)。
進一步地,所述心跳計數(shù)器采用一個字節(jié)數(shù)據(jù)。
進一步地,所述被監(jiān)控設(shè)備包括基板控制器bmc、復(fù)雜可編程邏輯器件cpld、磁盤控制器controller、磁盤擴展器expander;所述監(jiān)控設(shè)備包括:基板控制器bmc、服務(wù)器、電腦pc。
具體而言,
如果心跳計數(shù)器的計數(shù)值突然小于“正常啟動值”則可認為設(shè)備重啟,如果心跳計數(shù)器的計數(shù)值不變化或者獲取不到則認為設(shè)備死機。
重啟標志:心跳計數(shù)器的計數(shù)值已經(jīng)超過“正常啟動值”后,外部監(jiān)控設(shè)備即可認為嵌入式部件已經(jīng)正常啟動,在后續(xù)的檢測中如果計數(shù)值小于“正常啟動值”,則認為嵌入式部件已經(jīng)重啟過;
死機標志:心跳計數(shù)器的計數(shù)值已經(jīng)超過“正常啟動值”后,外部監(jiān)控設(shè)備即可認為嵌入式部件已經(jīng)正常啟動,在后續(xù)的檢測中如果計數(shù)值一直維持不變或者讀取不到計數(shù)值,則認為嵌入式部件已經(jīng)死機。
嵌入式部件維持一個寄存器用來存放心跳計數(shù)器的計數(shù)值,可通過i2c等物理鏈路被其監(jiān)控設(shè)備獲取到。
監(jiān)控設(shè)備重啟、死機檢測邏輯:
監(jiān)控設(shè)備和嵌入式部件約定一個“正常啟動值”,建議值為128,作為認為嵌入部件正常啟動的標志。
監(jiān)控設(shè)備維護一個監(jiān)控進程,以一定周期t(建議值為2s)檢測被監(jiān)控嵌入式部件,物理上通過i2c等鏈路訪問被監(jiān)控嵌入式部件,讀取被監(jiān)控嵌入式部件的心跳計數(shù)器的計數(shù)值,讀取到計數(shù)值為“正常啟動值后”后,認為被監(jiān)控嵌入式部件正常啟動,被監(jiān)控部件正常啟動后,心跳計數(shù)器值在正常情況下會維持在“正常啟動值”到254,監(jiān)控設(shè)備繼續(xù)按照輪訓周期訪問被監(jiān)控嵌入式部件;
重啟標志:如果檢測到心跳計數(shù)器的計數(shù)值小于“正常啟動值”,則認為嵌入式部件發(fā)生了重啟;
死機標志:如果檢測到心跳計數(shù)器的計數(shù)值不變或者無法訪問到心跳計數(shù)器的計數(shù)值,則認為嵌入式部件已經(jīng)死機;
按照上述邏輯檢測被監(jiān)控部件是否重啟、死機,并在嵌入式部件重啟、死機時記錄一條重啟、死機日志(包括日志產(chǎn)生時間)。
下面結(jié)合具體應(yīng)用場景進行詳細說明:
典型應(yīng)用場景舉例
1)bmc(基板控制器)是服務(wù)器監(jiān)控管理模塊,用于檢測服務(wù)器各項傳感器指標,控制服務(wù)器風扇運轉(zhuǎn)等,是服務(wù)器關(guān)鍵子系統(tǒng)之一;
服務(wù)器檢測基板控制器(bmc)是否重啟、死機,bmc按照上述邏輯維護一個心跳計數(shù)器,bmc設(shè)計一個ipmi命令,外部通過ipmi命令獲取該計數(shù)器的計數(shù)值;服務(wù)器操作系統(tǒng)通過kcs接口發(fā)送ipmi命令訪問bmc或者遠程pc通過lan接口發(fā)送ipmi命令訪問bmc,獲取到bmc心跳計數(shù)器的計數(shù)值,按照重啟、死機檢測邏輯檢測bmc是否重啟、死機,如果重啟、死機則記錄日志。
2)bmc作為監(jiān)控設(shè)備會與不同的子模塊通信,例如會訪問cpld(complexprogrammablelogicdevice,復(fù)雜可編程邏輯器件),cpld維護一個心跳計數(shù)器;bmc可通過i2c將獲取心跳計數(shù)器的計數(shù)值,按照重啟、死機檢測邏輯檢測cpld是否重啟、死機,如果重啟、死機則記錄日志。
3)存儲系統(tǒng)中controller(磁盤控制器)、expander(磁盤擴展器)是存儲系統(tǒng)中的關(guān)鍵嵌入式部件,可在controller、expander中維護一個心跳計數(shù)器,并設(shè)計與外部監(jiān)控設(shè)備通信的接口(例如scsi命令、ses命令等);操作系統(tǒng)或上級管理系統(tǒng)通過scsi或ses命令訪問controller、expander,按照重啟、死機檢測邏輯檢測設(shè)備是否重啟、死機,如果重啟、死機則記錄日志。
圖2所示為根據(jù)本發(fā)明實施例2提供的被監(jiān)控設(shè)備重啟、死機計數(shù)邏輯圖,包括以下步驟:
步驟201:被監(jiān)控設(shè)備開機;
步驟202:開啟心跳進程;
步驟203:心跳計數(shù)器累加;
步驟204:若心跳計數(shù)器的計數(shù)值i大于正常啟動值,則執(zhí)行步驟205,否則執(zhí)行步驟203;
步驟205:被監(jiān)控設(shè)備正常啟動;
步驟206:心跳計數(shù)器累加;
步驟207:若心跳計數(shù)器的計數(shù)值小于254,則執(zhí)行步驟206;否則,執(zhí)行步驟208:
步驟208:心跳計數(shù)器的計數(shù)值設(shè)為正常啟動值,從“正常啟動值”開始累加,執(zhí)行步驟206。
圖3所示為根據(jù)本發(fā)明實施例3提供的重啟、死機檢測邏輯圖,包括以下步驟:
步驟301:監(jiān)控設(shè)備開機;
步驟302:開啟重啟、死機檢測進程;
步驟303:訪問被監(jiān)控設(shè)備心跳計數(shù)器;
步驟304:判斷心跳計數(shù)器的計數(shù)值是否大于正常啟動值,若大于,則執(zhí)行步驟305;否則,執(zhí)行步驟303;
步驟305:訪問被監(jiān)控設(shè)備心跳計數(shù)器;
步驟306:心跳計數(shù)器中的計數(shù)值不變或者獲取不到,則執(zhí)行步驟309;否則,執(zhí)行步驟307;
步驟307:判斷心跳計數(shù)器中的計數(shù)值小于正常啟動值,則執(zhí)行步驟305;否則,執(zhí)行步驟308:;
步驟308:被監(jiān)控設(shè)備已重啟;
步驟309:被監(jiān)控設(shè)備已死機;
步驟310:記錄重啟、死機日志。
圖4所示為根據(jù)本發(fā)明實施例4提供的狀態(tài)檢測系統(tǒng)的示意圖,包括監(jiān)控設(shè)備、被監(jiān)控設(shè)備;其中,所述監(jiān)控設(shè)備與所述被監(jiān)控設(shè)備連接;
所述被監(jiān)控設(shè)備正常運行后,監(jiān)控設(shè)備獲取所述被監(jiān)控設(shè)備中的心跳計數(shù)器的計數(shù)值;
所述監(jiān)控設(shè)備根據(jù)所述計數(shù)值與所述心跳計數(shù)器中的正常啟動值的比較結(jié)果;或者,根據(jù)所述計數(shù)值的變化狀態(tài);或者,根據(jù)所述計數(shù)值的獲取情況,確定所述被監(jiān)控設(shè)備的狀態(tài)。
進一步地,被監(jiān)控設(shè)備正常運行前,還包括:
被監(jiān)控設(shè)備啟動后,所述被監(jiān)控設(shè)備中的心跳計數(shù)器進行周期性的計數(shù),累加至預(yù)設(shè)的正常啟動值。
進一步地,被監(jiān)控設(shè)備正常運行后,所述心跳計數(shù)器將從所述正常啟動值進行計數(shù),累加至極限值后,所述心跳計數(shù)器再次從所述正常啟動值開始累加,進行循環(huán)計數(shù)。
進一步地,被監(jiān)控設(shè)備正常運行后,所述監(jiān)控設(shè)備判斷所述心跳計數(shù)器中的計數(shù)值小于所述正常啟動值,則所述被監(jiān)控設(shè)備處于重啟狀態(tài)。
進一步地,被監(jiān)控設(shè)備正常運行后,所述監(jiān)控設(shè)備判斷所述心跳計數(shù)器中的計數(shù)值不變化,則所述被監(jiān)控設(shè)備處于死機狀態(tài)。
進一步地,被監(jiān)控設(shè)備正常運行后,所述監(jiān)控設(shè)備獲取不到所述心跳計數(shù)器中的計數(shù)值,則所述被監(jiān)控設(shè)備處于死機狀態(tài)。
通過以下方案:被監(jiān)控設(shè)備正常運行后,監(jiān)控設(shè)備獲取所述被監(jiān)控設(shè)備中的心跳計數(shù)器的計數(shù)值;所述監(jiān)控設(shè)備根據(jù)所述計數(shù)值與所述心跳計數(shù)器中的正常啟動值的比較結(jié)果;或者,根據(jù)所述計數(shù)值的變化狀態(tài);或者,根據(jù)所述計數(shù)值的獲取情況,確定所述被監(jiān)控設(shè)備的狀態(tài);提供了一種簡單、有效的方法判斷嵌入式部件的工作狀態(tài)。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。