本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種機箱故障檢測方法及系統(tǒng)。
背景技術(shù):
機箱作為計算機配件中的一部分,它起的作用是放置和固定各種計算機硬件配置,并對這些硬件配置起到承托和保護的作用,這些硬件配置對計算機的正常運行起到非常重要的作用,因此,需要定期的監(jiān)測機箱硬件是否正常。
現(xiàn)有技術(shù)中,一般采用串行檢測的方式對機箱進行檢測,當(dāng)檢測到機箱故障,需要將故障上報處理后才可以再次對機箱進行檢測,也可以理解為采用一個線程對機箱故障進行檢測,這種故障處理的方式,無法同時進行故障檢測和故障處理,效率較低。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了一種機箱故障檢測方法及系統(tǒng),解決了現(xiàn)有技術(shù)中,采用同一個線程對機箱故障進行檢測,無法同時進行故障檢測和故障處理,并提高了故障檢測和故障上報的效率。
本發(fā)明實施例提供的一種機箱故障檢測方法,該方法包括:
通過時間管理線程進行計時,當(dāng)達到一個預(yù)設(shè)的時間周期時,向故障檢測線程發(fā)送故障檢測信號;
通過所述故障檢測線程對機箱中各個硬件進行檢測,當(dāng)檢測到某個硬件的故障時,獲取所述故障的錯誤信息,并將所述錯誤信息上報給錯誤處理線程;
通過所述錯誤處理線程依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,并依據(jù)所述錯誤信息的類別對所述錯誤信息進行處理。
可選的,所述將所述錯誤信息上報給錯誤處理線程包括:
所述故障檢測線程將所述錯誤信息寫入到預(yù)設(shè)的第一隊列中;
所述錯誤處理線程從所述第一對列中讀取所述錯誤信息。
可選的,所述依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,包括:
獲取所述錯誤信息中的錯誤碼;
將所述錯誤碼與預(yù)設(shè)的類別信息進行匹配;
獲取與該錯誤碼匹配的類別信息。
可選的,所述依據(jù)所述錯誤信息的類別對所述錯誤信息進行處理,包括:
將所述錯誤信息轉(zhuǎn)換為預(yù)設(shè)的格式,得到轉(zhuǎn)換后的目標錯誤信息;
依據(jù)所述錯誤信息的類別,將所述目標錯誤信息進行緩存。
可選的,還包括:
所述錯誤處理線程接收到錯誤信息后,判斷是否需要向故障檢測線程反饋信息;
若是需要向故障檢測線程反饋信息,所述錯誤處理模塊將反饋信息寫入預(yù)設(shè)的第二隊列;
所述故障檢測模塊從所述第二隊列中讀取所述反饋信息。本發(fā)明實施例提供的一種機箱故障檢測系統(tǒng),所述系統(tǒng)包括:
定時管理模塊,用于通過時間管理線程進行計時,當(dāng)達到一個預(yù)設(shè)的時間周期時,向故障檢測線程發(fā)送故障檢測信號;
故障檢測模塊,用于通過所述故障檢測線程對機箱中各個硬件進行檢測,當(dāng)檢測到某個硬件的故障時,獲取所述故障的錯誤信息,并將所述錯誤信息上報給錯誤處理線程;
錯誤處理模塊,用于通過所述錯誤處理線程依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,并依據(jù)所述錯誤信息的類別對所述錯誤信息進行處理。
可選的,所述故障檢測模塊,包括:
寫入子模塊,用于所述故障檢測線程將所述錯誤信息寫入到預(yù)設(shè)的第一隊列中;
讀取子模塊,用于所述錯誤處理線程從所述第一對列中讀取所述錯誤信息。
可選的,所述錯誤處理模塊,包括:
第一獲取子單元,用于獲取所述錯誤信息中的錯誤碼;
匹配子單元,用于將所述錯誤碼與預(yù)設(shè)的類別信息進行匹配;
第二獲取子單元,用于獲取與該錯誤碼匹配的類別信息。
可選的,所述錯誤處理模塊,包括:
格式轉(zhuǎn)換子模塊,用于將所述錯誤信息轉(zhuǎn)換為預(yù)設(shè)的格式,得到轉(zhuǎn)換后的目標錯誤信息;
緩存子模塊,用于依據(jù)所述錯誤信息的類別,將所述目標錯誤信息進行緩存。
可選的,還包括:
判斷模塊,用于所述錯誤處理線程接收到錯誤信息后,判斷是否需要向故障檢測線程反饋信息;
寫入模塊,用于若是需要向故障檢測線程反饋信息,所述錯誤處理模塊將反饋信息寫入預(yù)設(shè)的第二隊列;
讀取模塊,用于所述故障檢測模塊從所述第二隊列中讀取所述反饋信息。
本發(fā)明實施例公開了一種機箱故障檢測方法及系統(tǒng),該方法包括:通過時間管理線程進行計時,當(dāng)達到一個預(yù)設(shè)的時間周期時,向故障檢測線程發(fā)送故障檢測信號;通過所述故障檢測線程對機箱中各個硬件進行檢測,當(dāng)檢測到某個硬件的故障時,獲取所述故障的錯誤信息,并將所述錯誤信息上報給錯誤處理線程;通過所述錯誤處理線程依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,并依據(jù)所述錯誤信息的類別對所述錯誤信息進行處理。由此可知,本發(fā)明實施例的方法,采用三個獨立的模塊分別實現(xiàn)計時、機箱故障檢測以及錯誤信息處理,實現(xiàn)了對機箱故障檢測及錯誤信息上報的異步處理,提高了機箱故障檢測和上報的效率,進而提高了對機箱故障處理的效率。并且,對故障的錯誤信息分類處理,并分類緩存,方便了用戶對錯誤信息的查找。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1示出了本發(fā)明實施例提供的一種機箱故障檢測方法的流程示意圖;
圖2示出了本發(fā)明實施例提供的對錯誤信息分類緩存的示意圖;
圖3示出了本發(fā)明實施例提供的一種機箱故障檢測系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
參考圖1,示出了本發(fā)明實施例提供的一種機箱故障檢測方法的流程示意圖,在本實施例中,所述方法可以包括:
s101:通過時間管理線程進行計時,當(dāng)達到一個預(yù)設(shè)的時間周期時,向故障檢測線程發(fā)送故障檢測信號;
本實施例中,在s101之前,首先可以在主線程中創(chuàng)建一個時間管理線程,并通過主線程設(shè)置一個預(yù)設(shè)的時間周期,例如,設(shè)置的該預(yù)設(shè)的時間周期可以為10s。
本實施例中,在s101之前,主線程還綁定了時間中斷callback,當(dāng)時間管理線程檢測到達到預(yù)設(shè)的時間周期時,可以通過調(diào)用時間中斷callback,以使時間管理線程向故障檢測線程發(fā)送故障檢測信號。
s102:所述故障檢測線程對機箱中各個硬件進行檢測,當(dāng)檢測到某個硬件的故障時,獲取所述故障的錯誤信息,并將所述錯誤信息上報給錯誤處理線程;
本實施例中,獲取到的錯誤信息可以包括:節(jié)點id、錯誤碼、錯誤事件id、錯誤描述信息等。這些信息可以唯一標識該故障的來源(例如,是哪個硬件的故障)以及該故障的具體信息。
其中,獲取到錯誤信息后,可以將錯誤信息的內(nèi)容進行打包處理,并將打包處理后的錯誤信息發(fā)送給錯誤處理線程。
本實施例中,在s103之前,主線程預(yù)先創(chuàng)建了第一隊列,當(dāng)故障檢測線程檢測到故障的錯誤信息后,將所述錯誤信息上報給錯誤處理線程具體可以包括:
所述故障檢測線程將所述錯誤信息寫入到預(yù)設(shè)的第一隊列中;
所述錯誤處理線程從所述第一對列中讀取所述錯誤信息。
其中,該預(yù)設(shè)的第一隊列即主線程預(yù)先創(chuàng)建的第一隊列,再將錯誤信息寫入到第一隊列之前,還可以先將該錯誤信息壓入queue。
本實施例中,需要說明的是,第一隊列可以是send/recv對列,故障檢測線程可以將錯誤信息寫入到send對列中,錯誤處理線程可以從recv對列中讀取寫入的該錯誤信息。
除此之外,本實施例中,故障線程向錯誤處理線程上報,還可以理解為是通過ipc(英文全稱:inter-processcommunication,中文全稱:進程間通信)機制進行的。
s103:所述錯誤處理線程依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,并依據(jù)所述錯誤信息的類別對所述錯誤信息進行處理。
本實施例中,依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,具體的可以包括:
獲取所述錯誤信息中的錯誤碼;
將所述錯誤碼與預(yù)設(shè)的類別信息進行匹配;
獲取與該錯誤碼匹配的類別信息。
本實施例中,預(yù)設(shè)的類別可以是技術(shù)人員根據(jù)經(jīng)驗或者機箱的構(gòu)造預(yù)先設(shè)置好的,錯誤信息的類別例如可以包括:溫度、電壓、功率、風(fēng)扇等。
本實施例中,確定了錯誤信息的類別后,不同類別的信息可以進行不同的處理。由于在s103之前,主線程已經(jīng)綁定了errorcallback函數(shù),在確定了錯誤信息的類別后,可以跳轉(zhuǎn)到該類別對應(yīng)的errorcallback對該錯誤信息進行處理。
本實施例中,錯誤處理線程,在從第一隊列中讀取到該錯誤信息后,可以將該錯誤信息首先轉(zhuǎn)換為錯誤處理線程可以識別的格式,然后再確定該錯誤信息的類別。
本實施例中,依據(jù)該錯誤信息的類別對該錯誤信息進行相應(yīng)的處理可以包括:
將所述錯誤信息轉(zhuǎn)換為預(yù)設(shè)的格式,得到轉(zhuǎn)換后的目標錯誤信息;
依據(jù)所述錯誤信息的類別,將所述目標錯誤信息進行緩存。
本實施例中,如圖2所示,不同類別的錯誤信息可以緩存到不同的位置,例如:可以首先對預(yù)設(shè)的緩存空間進行劃分,不同的錯誤類別占用不同的緩存空間和位置,因此,可以實現(xiàn)將錯誤信息進行分類存儲,這樣用戶可以通過錯誤的類型,調(diào)取緩存的錯誤信息。
本實施例中,故障檢測線程檢測到的一些特定的錯誤信息,再發(fā)送給時間管理線程后,需要時間管理線程反饋是否收到的信息,具體的,還可以包括:
所述錯誤處理線程接收到錯誤信息后,判斷是否需要向故障檢測線程反饋信息;
若是需要向故障檢測線程反饋信息,所述錯誤處理模塊將反饋信息寫入預(yù)設(shè)的第二隊列;
所述故障檢測模塊從所述第二隊列中讀取所述反饋信息。
本實施例中,需要說明的是,第二隊列可以是send/recv對列,錯誤處理線程可以將反饋信息寫入到send對列中,故障檢測線程可以從recv對列中讀取寫入的該反饋信息。
其中,該反饋信息可以表示,該錯誤處理線程是否接收到該故障檢測線程發(fā)送的錯誤信息。
本實施例中,需要說明的是,上文中提到的一些操作中,有一些操作時在執(zhí)行s101之前執(zhí)行的,在s101h之前執(zhí)行的操作可以表示為初始化操作,其中,初始化的具體操作可以包括:
主線程創(chuàng)建時間管理線程、故障檢測線程以及錯誤處理線程;
確定機箱中包含的有效硬件;
設(shè)置時間周期;
時間管理線程綁定時間中斷callback;
故障檢測線程創(chuàng)建第一隊列;
錯誤處理線程創(chuàng)建第二隊列;
錯誤處理線程申請緩存空間。
本實施例中,采用三個獨立的線程分別實現(xiàn)計時、機箱故障檢測以及錯誤信息處理,實現(xiàn)了對機箱故障檢測及錯誤信息上報的異步處理,提高了機箱故障檢測和上報的效率,進而提高了對機箱故障處理的效率。并且,對故障的錯誤信息分類處理,并分類緩存,方便了用戶對錯誤信息的查找。
參考圖3,示出了本發(fā)明實施例提供的一種機箱故障檢測的系統(tǒng)的結(jié)構(gòu)流程圖,在本實施例中,所述系統(tǒng)包括:
定時管理模塊301,用于通過時間管理線程進行計時,當(dāng)達到一個預(yù)設(shè)的時間周期時,向故障檢測線程發(fā)送故障檢測信號;
故障檢測模塊302,用于通過所述故障檢測線程對機箱中各個硬件進行檢測,當(dāng)檢測到某個硬件的故障時,獲取所述故障的錯誤信息,并將所述錯誤信息上報給錯誤處理線程;
錯誤處理模塊303,用于通過所述錯誤處理線程依據(jù)預(yù)設(shè)的分類規(guī)則確定所述錯誤信息的類別,并依據(jù)所述錯誤信息的類別對所述錯誤信息進行處理。
可選的,所述故障檢測模塊,包括:
寫入子模塊,用于所述故障檢測線程將所述錯誤信息寫入到預(yù)設(shè)的第一隊列中;
讀取子模塊,用于所述錯誤處理線程從所述第一對列中讀取所述錯誤信息。
可選的,所述錯誤處理模塊,包括:
第一獲取子單元,用于獲取所述錯誤信息中的錯誤碼;
匹配子單元,用于將所述錯誤碼與預(yù)設(shè)的類別信息進行匹配;
第二獲取子單元,用于獲取與該錯誤碼匹配的類別信息。
可選的,所述錯誤處理模塊,包括:
格式轉(zhuǎn)換子模塊,用于將所述錯誤信息轉(zhuǎn)換為預(yù)設(shè)的格式,得到轉(zhuǎn)換后的目標錯誤信息;
緩存子模塊,用于依據(jù)所述錯誤信息的類別,將所述目標錯誤信息進行緩存。
可選的,還包括:
判斷模塊,用于所述錯誤處理線程接收到錯誤信息后,判斷是否需要向故障檢測線程反饋信息;
寫入模塊,用于若是需要向故障檢測線程反饋信息,所述錯誤處理模塊將反饋信息寫入預(yù)設(shè)的第二隊列;
讀取模塊,用于所述故障檢測模塊從所述第二隊列中讀取所述反饋信息。
本發(fā)明實施例的裝置,采用三個獨立的模塊分別實現(xiàn)計時、機箱故障檢測以及錯誤信息處理,實現(xiàn)了對機箱故障檢測及錯誤信息上報的異步處理,提高了機箱故障檢測和上報的效率,進而提高了對機箱故障處理的效率。并且,對故障的錯誤信息分類處理,并分類緩存,方便了用戶對錯誤信息的查找。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。