本發明涉及計算機應用技術,特別是涉及一種雙控制器系統的故障調試方法。
背景技術:
目前采用雙控制器系統的產品,通常在產品設計上沒有VGA顯示接口,沒法直接連接鍵盤顯示器。有些產品考慮到系統安全會把相關的網絡后臺服務(比如sshd)關閉了。這樣,當系統出現異常,或者網絡異常不能登錄系統后臺,無法遠程登錄調試時,會導致無法調試定位故障原因的問題。在實際應用中,雖然網絡異常,但在很多情況下,此時系統內部程序還是在正常運行的。
目前尚未提出一種能夠對雙控制器系統的故障進行調試的方法。
技術實現要素:
有鑒于此,本發明的主要目的在于提供一種雙控制器系統的故障進行調試的方法,可以實現對雙控制器系統故障的調試。
為了達到上述目的,本發明提出的技術方案為:
一種雙控制器系統的故障調試方法,包括:
a、在雙控制器系統啟動時,雙控制器系統中的兩個控制器各自分配一塊內存區域作為本控制器的內存塊設備;每個所述控制器,針對對端控制器的所述內存區域,分配一段內存地址空間作為本控制器的內存映射塊設備,通過非透明橋NTB將該段內存地址空間與對端控制器的所述內存區域建立映射,通過文件系統,格式化本控制器的所述內存映射塊設備,觸發本控制器的debug_damon守護進程運行;
b、當任一所述控制器A的系統出現故障時,其對端控制器B利用該控制器B的所述內存映射塊設備,觸發所述控制器A的debug_damon守護進程執行系統調試操作,并向所述制器B反饋相應的執行結果。
綜上所述,本發明提出的雙控制器系統的故障進行調試的方法,可以實現對雙控制器系統故障的調試。
附圖說明
圖1為本發明實施例的方法流程示意圖;
圖2為圖1中步驟102的具體實現示意圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖及具體實施例對本發明作進一步地詳細描述。
本發明的核心思想是:考慮到采用雙控制器系統的產品通常會帶有非透明橋(Non-Transparent Bridge,NTB)功能,本發明將利用NTB,在雙控制器系統中,通過一端正常的控制器調試另一端故障控制器系統,以實現雙控制器系統的故障調試。
為了便于對本發明的清楚理解,在對本發明具體實施例進行說明之前,先對非透明橋技術簡單介紹如下:
非透明橋的功能和透明橋很相似,其主要差別只有一點,即在非透明橋的兩邊都有智能設備或處理器,并且他們擁有獨立的地址空間。而且,非透明橋一邊的主機不能看到橋另一邊的完整地址或I/O空間。每個處理器把非透明橋的另一側視為一個端點(endpoint),并把它映射到自己的地址空間。
在非透明橋環境中,允許橋兩邊的主機通過便箋寄存器、門鈴寄存器和心跳消息來交換一些狀態信息。通過門鈴寄存器可以傳送心跳消息。一端主機可以通過對心跳消息的接收情況獲知另一端主機出現故障。
圖1為本發明實施例的方法流程示意圖,如圖1所示,該實施例實現的雙控制器系統的故障調試方法,主要包括:
步驟101、在雙控制器系統啟動時,雙控制器系統中的兩個控制器各自分配一塊內存區域作為本控制器的內存塊設備;每個所述控制器,針對對端控制器的所述內存區域,分配一段內存地址空間作為本控制器的內存映射塊設備,通過非透明橋(NTB)將該段內存地址空間與對端控制器的所述內存區域建立映射,通過文件系統,格式化本控制器的所述內存映射塊設備,觸發本控制器的debug_damon守護進程運行。
本步驟中,雙控制器系統啟動后,各個控制器將分別為自己配置一塊內存區域作為本控制器的內存塊設備,然后,各控制器再各自配置一段內存地址空間本作為用于與對端控制器的上述內存塊設備建立映射的內存映射塊設備,這樣,通過加載本控制器的內存映射塊設備,便可訪問對端控制器的上述內存塊設備。
本步驟中,需要通過文件系統對內存映射塊設備對應的內存空間進行格式化,以便此后在該內存空間進行文件的讀寫操作。
這里,每個控制器的debug_damon守護進程運行后,將主要用于捕獲對端控制器通過NTB發過來的中斷,執行對端控制器要求執行的命令,并且把執行結果,存放在指定的位置,執行完之后,發中斷給對端控制器,告知對端控制器開始獲取執行結果數據。
步驟102、當任一所述控制器A的系統出現故障時,其對端控制器B利用該控制器B的所述內存映射塊設備,觸發所述控制器A的debug_damon守護進程執行系統調試操作,并向所述制器B反饋相應的執行結果。
較佳地,本步驟可以采用如圖2所示的下述方法實現:
步驟1021、當任一所述控制器A對應的系統出現故障時,其對端控制器B掛載控制器B的所述內存映射塊設備。
本步驟中,當一個控制器A出現故障時,其對端控制器B將掛載與控制器A的所述內存塊設備存在映射關系的控制器B的內存映射塊設備,以便保存需要進行執行的調試操作命令,這樣,此后發生故障的控制器A可以通過加本控制的內存塊設備獲得該調試操作命令并執行,從而可以實現對控制器A的系統調試。
步驟1022、所述控制器B將需要所述控制器A的debug_damon守護進程執行的調試操作命令,寫入一個cmd格式文件中;在所述寫入完成后,卸載所述內存映射塊設備。
本步驟中,將由正常運行的控制器B將需要所述控制器A的debug_damon守護進程執行的調試操作命令,保存在cmd格式文件中,該cmd格式文件將存儲于當前掛載的內存映射塊設備中。這樣,由于控制器B的內存映射塊設備與控制器A的所述內存塊設備存在映射關系,因此,此后控制器A可以通過掛載控制器A的內存塊設備,讀取所述cmd格式文件執行其中的調試操作命令。
這里,在所述寫入完成后,將卸載所述內存映射塊設備,以確保所映射的內存塊設備上信息的可靠性和一致性。
步驟1023、所述控制器B通過發送中斷指令,通知所述控制器A的debug_damon守護進程執行所述cmd格式文件中的調試操作命令。
步驟1024、所述控制器A的debug_damon守護進程捕捉到所述中斷指令后,掛載本控制器的所述內存塊設備,執行其中所述cmd格式文件中的調試操作命令,輸出所述執行結果到cmd_result文件中,將所述cmd_result文件保存在本控制器的所述內存塊設備中。
步驟1025、所述控制器A的debug_damon守護進程卸載控制器A的所述內存塊設備;通過中斷指令通知所述控制器B獲取所述執行結果。
步驟1026、所述控制器B的debug_damon守護進程捕捉到所述中斷指令后,掛載控制器B的所述內存映射塊設備,并訪問所述cmd_result文件獲取所述執行結果。
通過上述技術方案可以看出,本發明基于NTB技術可以在雙控制器系統產品中的任一控制器系統出現故障時,通過一端正常的控制器對出現故障的控制器系統進行調試,從而可以實現雙控制器系統的故障調試。
綜上所述,以上僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。