一種基於進程冗餘的容錯系統及其設計方法
2023-05-16 13:14:31 1
一種基於進程冗餘的容錯系統及其設計方法
【專利摘要】本發明涉及容錯系統設計方法【技術領域】,特別涉及一種基於進程冗餘的容錯系統及其設計方法。本發明提出了一種基於進程冗餘的容錯機制和策略,對關鍵進程構造雙模冗餘或多模冗餘,採用進程間同步等手段確保冗餘進程按照同樣的執行邏輯運行,監控系統並對不同的錯誤進行相應的錯誤處理,最終以此提高系統的可靠性和可用性。
【專利說明】一種基於進程冗餘的容錯系統及其設計方法
【技術領域】
[0001]本發明涉及容錯系統設計方法【技術領域】,特別涉及一種基於進程冗餘的容錯系統 及其設計方法。
【背景技術】
[0002]隨著銀行事務處理、信息服務、金融計算等領域對計算機系統的廣泛應用,對計算 機系統可靠性的要求也越來越高。容錯是一種提高計算機系統可靠性的重要手段,容錯的 含義是指在系統內部出現故障的情況下,計算機仍然能正確地執行指定算法。對於銀行、電 信等關鍵領域的應用,計算機系統對於系統失效極其敏感,保證系統關鍵進程的可靠性至 關重要。常見的容錯機制主要依據靜態結構冗餘原理實現,然而硬體層的冗餘成本很高且 實現複雜,應用軟體層的冗餘則不具有通用性。
[0003]常見的軟硬體容錯機制,如處理器鎖步技術、內存鏡像技術、多路徑I/O技術、N版 本程序設計等主要依據靜態結構冗餘原理實現,但硬體層的冗餘成本很高且實現複雜,而 應用軟體層的冗餘則不具有通用性。
【發明內容】
[0004]為了解決現有技術的問題,本發明提供了一種基於進程冗餘的容錯系統及其設計 方法,其對關鍵進程構造雙模冗餘或多模冗餘,採用進程間同步等手段確保冗餘進程按照 同樣的執行邏輯運行,監控系統並對不同的錯誤進行相應的錯誤處理,以此提高系統的可 靠性和可用性。
[0005]本發明所採用的技術方案如下:
一種基於進程冗餘的容錯系統,其全部集中於作業系統核心層,包括容錯進程管理模 塊、錯誤處理模塊、I/o容錯控制模塊和監控管理模塊,其中,
容錯進程管理模塊,用於實現冗餘進程全生命周期管理,包括冗餘進程的創建、調度、 同步、通信及銷毀,使得原生進程及其冗餘進程在有序執行原有邏輯的同時滿足容錯特性 的需要;
錯誤處理模塊,當通過同步比較檢測到冗餘進程的運行中發生錯誤時,錯誤處理模塊 進行故障類型診斷並根據預配置採取相應的處理方式,快速完成錯誤恢復;
I/o容錯控制模塊,負責容錯系統內部數據與外部數據的格式轉換和冗餘控制,並輔助 I/o操作進行同步比較;
監控管理模塊,包括運行於用戶態的控制臺和運行於內核態的監控管理模塊,控制臺 提供給用戶直觀的操作界面,用戶通過控制臺監測冗餘進程運行狀態,查看容錯事件日誌, 對系統的主要參數進行配置等;控制臺的所有數據通過與內核監控模塊交互獲得。
[0006]容錯進程管理模塊對fork、clone和vfork系統調用進行容錯控制,在do_fork( )函數的基礎上,增加了 do_double_fork和do_ft_fork兩個功能函數,實現了控制 應用程式派生雙模進程和雙模進程派生各自子進程的功能。[0007]I/O容錯控制模塊包括終端接口、磁碟接口、以及網絡接口。
[0008]一種基於進程冗餘的容錯系統的設計方法,包括:(I)、以SMP架構中的多CPU為 冗餘硬體,構造冗餘任務在獨立的CPU組上並行執行,通過對冗餘任務的執行數據進行比 較實現檢錯,並使用降模、重啟等機制完成錯誤恢復;(2)、在Linux作業系統中添加容錯容 器,容錯容器中的應用以冗餘方式運行,由進程容錯系統負責管理冗餘任務,分別在冗餘硬 件上獨立執行,並控制任務同步、數據比較、錯誤檢測和恢復。
[0009]在容錯容器中,一組冗餘任務執行相同的功能代碼,在其運行過程中,容錯系統對 其進行管理、同步和監控,並根據數據比較結果進行錯誤檢測,容錯容器外的任務仍以普通 單模方式運行。
[0010]本發明提供的技術方案帶來的有益效果是:
本發明給出了一種基於進程冗餘的容錯系統及其設計方法,設計了基於進程冗餘的容 錯策略和方法,並實現了進程容錯系統的原型系統,對關鍵進程進行冗餘,並通過同步機制 保證進程的正確執行,並對系統監控來進行相應的錯誤處理。實驗證明該方法性能損耗小, 並能有效地提高系統的可靠性,同時避免了硬體定製的複雜性,並對應用程式和用戶透明。
【專利附圖】
【附圖說明】
[0011]圖1為本發明的一種基於進程冗餘的容錯系統及其設計方法的系統模塊關係圖; 圖2為本發明的一種基於進程冗餘的容錯系統及其設計方法的容錯進程創建流程圖; 圖3為本發明的一種基於進程冗餘的容錯系統及其設計方法的工作流程圖。
【具體實施方式】
[0012]為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方 式作進一步地詳細描述。
[0013]如附圖1所示,一種基於進程冗餘的容錯系統,其全部集中於作業系統核心層,包 括容錯進程管理模塊、錯誤處理模塊、I/o容錯控制模塊和監控管理模塊,其中,
容錯進程管理模塊,用於實現冗餘進程全生命周期管理,包括冗餘進程的創建、調度、 同步、通信及銷毀,使得原生進程及其冗餘進程在有序執行原有邏輯的同時滿足容錯特性 的需要;
錯誤處理模塊,當通過同步比較檢測到冗餘進程的運行中發生錯誤時,錯誤處理模塊 進行故障類型診斷並根據預配置採取相應的處理方式,快速完成錯誤恢復;
I/o容錯控制模塊,負責容錯系統內部數據與外部數據的格式轉換和冗餘控制,並輔助 I/o操作進行同步比較;
監控管理模塊,包括運行於用戶態的控制臺和運行於內核態的監控管理模塊,控制臺 提供給用戶直觀的操作界面,用戶通過控制臺監測冗餘進程運行狀態,查看容錯事件日誌, 對系統的主要參數進行配置等;控制臺的所有數據通過與內核監控模塊交互獲得。
[0014]容錯進程管理模塊對fork、clone和vfork系統調用進行容錯控制,在do_fork( )函數的基礎上,增加了 do_double_fork和do_ft_fork兩個功能函數,實現了控制 應用程式派生雙模進程和雙模進程派生各自子進程的功能。
[0015]參考附圖2,容錯進程管理模塊對fork、clone和vfork系統調用進行容錯控制,在do_fork函數的基礎上,增加了 do_double_fork和do_ft_fork兩個功能函 數,實現了控制應用程式派生雙模進程和雙模進程派生各自子進程的功能。在容錯系統中, 一個進程要派生子進程將會調用fork、clone或vfork系統調用中的一個,系統會首先根據 ft_mak標誌位判斷當前進程是否是冗餘進程,如果是,調用do_ft_fork函數創建冗餘 進程的子進程;如果否,則判斷是否有容錯標誌ft_exec,如果有,表明需要容錯,調用do_ double_fork函數,派生冗餘進程;如果不需要容錯,調用系統中原有的do_fork函 數,正常派生進程。通過上述控制,實現了不同情況下進程派生的需要。
[0016]I/O容錯控制模塊包括終端接口、磁碟接口、以及網絡接口。根據不同的I/O種類, 設計系統I/o容錯控制模塊結構也可以主要包含兩個子模塊,磁碟/終端讀寫I/O控制和 網絡數據讀寫I/O控制。
[0017]參照附圖3,對本發明的內容以一個具體實例來描述實現這一體系結構的過程。
[0018]用戶通過容錯控制臺界面啟動應用程式,打開容錯開關(設置標誌位ft_eXeC)進 程容錯系統為該應用程式創建一對進程(原生-冗餘進程),這一對進程裝載應用程式相同 的執行代碼,並開始在獨立的CPU組上並行執行。
[0019]在同步協議控制下,原生-冗餘進程對同時到達同步點,並開始同步,若其中某個 進程在同步點上等待超時,則觸發錯誤進入故障檢測、錯誤處理。如果同步點上的操作為I/ 0操作,需要進行I/O轉換,判斷操作是否為寫操作,若是則對原生-冗餘進程對寫出的數據 進行比較,數據相同則認為執行正確,若比較數據不同則認為存在故障,進入故障檢測、錯 誤處理流程。若I/o操作為讀操作,則I/O容錯控制模塊完成I/O接口的數據轉換,並執行 最終的實際功能操作。
[0020]若同步點上的操作為非I/O操作,則直接在同步點上進行狀態一致性調整,如統 一函數返回值,記錄當前進程狀態信息,完成本次同步。
[0021 ] 以上所述僅為本發明的較佳實施例,並不用以限制本發明,凡在本發明的精神和 原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
【權利要求】
1.一種基於進程冗餘的容錯系統,其全部集中於作業系統核心層,包括容錯進程管理 模塊、錯誤處理模塊、I/o容錯控制模塊和監控管理模塊,其中,容錯進程管理模塊,用於實現冗餘進程全生命周期管理,包括冗餘進程的創建、調度、 同步、通信及銷毀,使得原生進程及其冗餘進程在有序執行原有邏輯的同時滿足容錯特性 的需要;錯誤處理模塊,當通過同步比較檢測到冗餘進程的運行中發生錯誤時,錯誤處理模塊 進行故障類型診斷並根據預配置採取相應的處理方式,快速完成錯誤恢復;I/o容錯控制模塊,負責容錯系統內部數據與外部數據的格式轉換和冗餘控制,並輔助 I/o操作進行同步比較;監控管理模塊,包括運行於用戶態的控制臺和運行於內核態的監控管理模塊,控制臺 提供給用戶直觀的操作界面,用戶通過控制臺監測冗餘進程運行狀態,查看容錯事件日誌, 對系統的主要參數進行配置等;控制臺的所有數據通過與內核監控模塊交互獲得。
2.根據權利要求1所述的一種基於進程冗餘的容錯系統,其特徵在於,所述的容錯進 程管理模塊對fork、clone和vfork系統調用進行容錯控制,在do_fork函數的基礎上, 增加了 do_double_fork和do_ft_fork兩個功能函數,實現了控制應用程式派生雙 模進程和雙模進程派生各自子進程的功能。
3.根據權利要求1所述的一種基於進程冗餘的容錯系統,其特徵在於,所述的I/O容錯 控制模塊包括終端接口、磁碟接口、以及網絡接口。
4.一種基於進程冗餘的容錯系統的設計方法,包括:(I)、以SMP架構中的多CPU為冗 餘硬體,構造冗餘任務在獨立的CPU組上並行執行,通過對冗餘任務的執行數據進行比較 實現檢錯,並使用降|吳、重啟等機制完成錯誤恢復;(2)、在Linux丨呆作系統中添加各錯各 器,容錯容器中的應用以冗餘方式運行,由進程容錯系統負責管理冗餘任務,分別在冗餘硬 件上獨立執行,並控制任務同步、數據比較、錯誤檢測和恢復。
5.根據權利要求4所述的一種基於進程冗餘的容錯系統的設計方法,其特徵在於,在 容錯容器中,一組冗餘任務執行相同的功能代碼,在其運行過程中,容錯系統對其進行管 理、同步和監控,並根據數據比較結果進行錯誤檢測,容錯容器外的任務仍以普通單模方式 運行。
【文檔編號】G06F11/07GK103593251SQ201310546513
【公開日】2014年2月19日 申請日期:2013年11月7日 優先權日:2013年11月7日
【發明者】王恩東, 胡雷鈞, 張東, 吳楠, 劉璧怡 申請人:浪潮電子信息產業股份有限公司