專利名稱:一種雙控制器存儲系統(tǒng)的服務(wù)和控制器狀態(tài)監(jiān)控方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機存儲和服務(wù)監(jiān)控技術(shù),具體地說是一種雙控制器存儲系統(tǒng) 的服務(wù)和控制器狀態(tài)監(jiān)控方法
背景技術(shù):
隨著計算機信息廣泛應(yīng)用和發(fā)展,計算和數(shù)據(jù)的可靠性成為信息的核心,計 算機存儲設(shè)備和系統(tǒng)的可靠性要求也越來越強,對于單個控制器的存儲設(shè)備和系 統(tǒng),若控制器發(fā)生故障(一般為硬件故障),存儲服務(wù)就不可用,導(dǎo)致數(shù)據(jù)服務(wù)
中斷甚至數(shù)據(jù)完整性受破壞。共享多個磁盤陣列RAID的雙控控制器的存儲設(shè)備和 系統(tǒng)實現(xiàn)了數(shù)據(jù)和服務(wù)的冗余互備,在雙控制器存儲系統(tǒng)在應(yīng)用中發(fā)生一個控制 器故障時,另一個控制器應(yīng)檢測到并接管其所有服務(wù)。如何有效可靠地實現(xiàn)雙控 制器存儲系統(tǒng)的服務(wù)運行狀態(tài)監(jiān)控和故障接管是雙控存儲系統(tǒng)要解決的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種雙控制器存儲系統(tǒng)的服務(wù)和控制器狀態(tài)監(jiān)控方法。 本發(fā)明的目的是按以下方式實現(xiàn)的,針對雙控存儲系統(tǒng)服務(wù)監(jiān)控的需求,本發(fā) 明解決了服務(wù)運行狀態(tài)的監(jiān)控和切換,并以控制器狀態(tài)值簡潔表示控制器服務(wù)運 行狀態(tài),以控制器狀態(tài)為驅(qū)動來調(diào)整服務(wù)運行停止,相對以服務(wù)為切換單元的監(jiān) 控方式。
為實現(xiàn)本發(fā)明的目的是通過雙控節(jié)點間通信共享雙控系統(tǒng)上的狀態(tài)和服務(wù)運 行信息,當一節(jié)點服務(wù)運行異?;蛘叨〞r心跳信息超時,則正常節(jié)點將按照設(shè)計 切換狀態(tài),并以該狀態(tài)為目標調(diào)整控制器上相應(yīng)服務(wù)運行和停止;
定義三個軟件功能模塊節(jié)點通信模塊CO固,集群服務(wù)管理模塊CSM和本地服務(wù) 管理模塊LSM。模塊之間可相互通信,其中C(MM模塊主要功能是接收來自CSM模塊 的信息并通過控制器通信介質(zhì)傳輸給另一控制器COMM模塊;CSM模塊從C(MM模塊接 收對方控制器信息,從LSM模塊接收本地服務(wù)組運行狀態(tài)信息,決策本控制器的狀 態(tài)值并發(fā)送給COMM模塊和LSM模塊;LSM模塊從COMM模塊獲取狀態(tài)值,調(diào)整并定時 檢測服務(wù)組本地控制器服務(wù)組運行情況,通知CSM模塊。兩個控制器運行的狀態(tài)分 別為active: active; takeover: standby禾口standby: takeover;
在確定本地控制器狀態(tài)后,LSM模塊定時查詢本控制器狀態(tài)并檢測本地服務(wù)組 運行狀態(tài)是否一致,若不一致則進行一致性調(diào)整,調(diào)整操作為嘗試執(zhí)行最多N次異 常服務(wù)的啟動或停止,N為預(yù)設(shè)定的數(shù)值,大于等于0,調(diào)整操作可能會失??;CSM 模塊從LSM獲取服務(wù)組運行狀態(tài),并通過COMM模塊循環(huán)接收和定時發(fā)送節(jié)點傳輸信息;節(jié)點傳輸信息包括控制器狀態(tài)和服務(wù)組各服^"運行狀態(tài),運行或停止,CSM模 塊每次獲得對方傳輸?shù)墓?jié)點信息則將接收的時間記錄,若對方控制器服務(wù)運行異 常,或者超過預(yù)設(shè)時間沒有接收到對方節(jié)點信息,則接管對方服務(wù)組并更改本控 制器狀態(tài)為takeover;
當本控制器在運行過程中由于檢測到對方異常而進行狀態(tài)變化時,若需要接管 對方控制器服務(wù),則在接管之前執(zhí)行一個預(yù)設(shè)定的程序,該程序一般是觸發(fā)電子 開關(guān)重啟或者停止對方控制器,徹底隔離對方控制器對服務(wù)資源的控制器;
當雙控系統(tǒng)處于一個takeover,另一個standby狀態(tài),把它切到兩控制器都是 active的狀態(tài),S卩active,active狀態(tài),方法是添加一個檢測的標志,稱為擴展狀 態(tài)值,隨同心跳信息一起傳輸,當有該擴展狀態(tài)值為預(yù)設(shè)特定值吋,則忽略對方 狀態(tài)變化而不自動改變本控制器狀態(tài);切換時設(shè)置該擴展狀態(tài)值為預(yù)設(shè)特定值并 更改該節(jié)點狀態(tài)值,分別都更改為acUve狀態(tài),最后取消擴展狀態(tài)值;
要停止雙控系統(tǒng)中所有控制器,方法和從takeover, standby切換到 active, active類似,即使用擴展狀態(tài)值并設(shè)置inactive狀態(tài),在相應(yīng)所有服務(wù)停 止之后停止COMM, CSM, LSM模塊;
當要重啟或停止雙控存儲系統(tǒng)中單一控制器,且此時兩控制器正在運行,方法 是先將非停止的控制器狀態(tài)設(shè)置為takeover,再將要重啟或停止的控制器狀態(tài)設(shè) 置為inactive;具體控制歩驟如下
Sl.置本地控制器狀態(tài)為inactive,不啟動任何服務(wù)組,并開始收發(fā)狀態(tài)信息;
S2等待若干秒,秒數(shù)由系統(tǒng)啟動時間差最大值決定,目的是保證兩控制器同 時啟動時能夠最后相互達到相同狀態(tài);
S3若對方狀態(tài)也為inactive,表明對方也在啟動,則設(shè)置本地控制器狀態(tài)為 active,執(zhí)行歩驟S7;
S4若對方狀態(tài)為active,則設(shè)置本地控制器狀態(tài)為active,執(zhí)行步驟S7;
S5若接收不到對方信息或者對方狀態(tài)為takeover,表明對方已運行所有服務(wù) 組,則設(shè)置本地控制器狀態(tài)為standby,執(zhí)行步驟S7;
S6若對方狀態(tài)為standby,則設(shè)置本地控制器狀態(tài)為takeover,執(zhí)行步驟S7;
S7根據(jù)本地控制器狀態(tài)調(diào)整服務(wù)組運行狀態(tài)并定時檢測本地控制器狀態(tài)值 和服務(wù)組運行情況。
本發(fā)明的優(yōu)點在于把控制器狀態(tài)耦合到服務(wù)運行狀況中,方便雙控存儲系統(tǒng) 狀態(tài)查看和維護,尤其適合于兩個節(jié)點的雙控存儲系統(tǒng)。
圖l是軟件模塊結(jié)構(gòu);
圖2控制器系統(tǒng)啟動狀態(tài)監(jiān)控流程圖3說明了雙控制器存儲系統(tǒng)運行時的狀態(tài)轉(zhuǎn)變圖。
具體實施例方式
參照附圖對本發(fā)明的方法作以下詳細的說明。
雙控存儲系統(tǒng)結(jié)構(gòu)為兩個控制器連接到同一磁盤組,控制器之間有必要的通信 介質(zhì),-般包括直連以太網(wǎng)卡、直連串口、同一局域網(wǎng)絡(luò),在兩個控制器上都運 行執(zhí)行本發(fā)明方法的監(jiān)控程序。
把雙控系統(tǒng)提供的服務(wù)分為兩組,記為ServiceGroupO,ServiceGroupl, 一般 每個服務(wù)組包括iSCSI Target服務(wù)和FC Target服務(wù)。每個服務(wù)組的服務(wù)都提供啟 動、停止和狀態(tài)査詢操作。在服務(wù)發(fā)生異常或由于控制器故障導(dǎo)致服務(wù)切換到另 一控制器時,是以服務(wù)所在服務(wù)組為單位進行切換。
為區(qū)分兩個控制器,分別標識為控制器0和控制器1,監(jiān)控程序記控制器系統(tǒng)狀 態(tài)類型有inactive, active, takeover, standby, 狀態(tài)值為inactive表不控制器處 于不提供服務(wù)狀態(tài),且沒有準備好提供服務(wù);狀態(tài)值active,在控制器0上表示應(yīng) 該運行服務(wù)組0的所有服務(wù),在控制器l上表示應(yīng)該運行服務(wù)組l的所有服務(wù); 一個 控制器狀態(tài)值為takeover,表示服務(wù)組0和服務(wù)組1的所有服務(wù)都在該控制器上運 行; 一個控制器狀態(tài)值為standby,表示不提供任一服務(wù)組的服務(wù),但是可以由系 統(tǒng)管理員手動操作切換到active狀態(tài),或者檢測到另一控制器心跳超時而主動切 換到takeover狀態(tài)。
因此正常情況下,兩個控制器運行的狀態(tài)為(active, active), (takeover, standby) ,(standby, takeover)。
因此,在確定本地控制器狀態(tài)后,LSM模塊定時査詢本控制器狀態(tài)并檢測本地 服務(wù)組運行狀態(tài)是否一致,若不一致則進行一致性調(diào)整,調(diào)整操作為嘗試執(zhí)行最 多N次異常服務(wù)的啟動或停止,N為預(yù)設(shè)定的數(shù)值,大于等于0,調(diào)整操作可能會失 敗。CSM模塊從LSM獲取服務(wù)組運行狀態(tài),并通過COMM模塊循環(huán)接收和定時發(fā)送節(jié)
點傳輸信息。節(jié)點傳輸信息包括控制器狀態(tài)和服務(wù)組各服務(wù)運行狀態(tài)(運行/停 止),CSM模塊每次獲得對方傳輸?shù)墓?jié)點信息則將接收的時間記錄,若對方控制器 服務(wù)運行異常,或者超過預(yù)設(shè)時間沒有接收到對方節(jié)點信息,則接管對方服務(wù)組 (如果存在)并更改本控制器狀態(tài)為takeover。
當本控制器在運行過程中由于檢測到對方異常而進行狀態(tài)變化時,若需要接管 對方控制器服務(wù),則在接管之前執(zhí)行一個預(yù)設(shè)定的程序,該程序一般是觸發(fā)電子 開關(guān)重啟或者停止對方控制器,徹底隔離對方控制器對服務(wù)資源的控制器。
當雙控系統(tǒng)處于一個takeover,另一個standby狀態(tài),可以把它切到兩控制器都 active的(active, active)狀態(tài),方法是添加一個檢測的標志,稱為擴展狀態(tài)值, 隨同心跳信息一起傳輸,當有該擴展狀態(tài)值為預(yù)設(shè)特定值時,則忽略對方狀態(tài)變 化而不自動改變本控制器狀態(tài)。切換時設(shè)置該擴展狀態(tài)值為預(yù)設(shè)特定值并更改該 節(jié)點狀態(tài)值,分別都更改為active狀態(tài),最后取消擴展狀態(tài)值。當要停止雙控系統(tǒng)中所有控制器,方法ltr從(takeover, standby)切換到 (active, active)類似,即使用擴展狀態(tài)值并設(shè)置inactive狀態(tài),在相應(yīng)所有服 務(wù)停止之后停止CO麗,CSM, LSM等模塊。
當要重啟或停止雙控存儲系統(tǒng)中單一控制器,且此時兩控制器正在運行,方法 是先將非停止的控制器狀態(tài)設(shè)置為takeover,再將要重啟或停止的控制器狀態(tài)設(shè) 置為inactive。
每個控制器使用狀態(tài)值表示該控制器整體的服務(wù)運行情況,并以狀態(tài)值為目標 驅(qū)動調(diào)整控制器上服務(wù)的運行和停止。
雙控制器系統(tǒng)共提供兩組服務(wù),記為服務(wù)組0和服務(wù)組1,每組服務(wù)由一個或多
個服務(wù)組成,切換服務(wù)時以整個服務(wù)組進行切換。
控制器使用ID 0和1標記,兩個控制器在軟硬件正常時可以都提供服務(wù),此吋 控制器0和控制器1分別提供服務(wù)組0和服務(wù)組1的服務(wù),此時控制器0和控制器1狀 態(tài)值都為active。
控制器狀態(tài)值為inactive表示控制器處于不提供服務(wù)狀態(tài),且沒有準備好提供 服務(wù);狀態(tài)值active,在控制器O上表示應(yīng)該運行服務(wù)組O的所有服務(wù),在控制器l 上表示應(yīng)該運行服務(wù)組l的所有服務(wù); 一個控制器狀態(tài)值為takeover,表示服務(wù)組 0和服務(wù)組1的所有服務(wù)都在該控制器上運行; 一個控制器狀態(tài)值為standby,表示 不提供任一服務(wù)組的服務(wù),但是可以由系統(tǒng)管理員手動操作切換到active狀態(tài), 或者檢測到另一控制器心跳超時而主動切換到takeover狀態(tài)。
雙控制器系統(tǒng)運行時,控制器定時檢測本控制器上服務(wù)運行狀態(tài)并定時向?qū)Ψ?節(jié)點傳輸狀態(tài)和服務(wù)運行情況,稱為心跳傳輸,當檢測到對方心跳傳輸超過預(yù)設(shè) 時間值,或者對方本應(yīng)正常運行的服務(wù)組中的任一服務(wù)運行異常,則接管對方服 務(wù)并更改木節(jié)點狀態(tài)。
控制器定時檢測本控制器上服務(wù)運行狀態(tài),若根據(jù)狀態(tài)應(yīng)運行的服務(wù)停止則進 行預(yù)設(shè)的最多N次嘗試重啟該服務(wù),其中N大于等于O。
一控制器接管另控制器服務(wù)組前,可執(zhí)行一個預(yù)定程序,該預(yù)定程序一般用 于從軟件和電氣上隔離另一控制器對雙控系統(tǒng)共享資源的訪問。
權(quán)利要求
1、一種雙控制器存儲系統(tǒng)的服務(wù)和控制器狀態(tài)監(jiān)控方法,其特征在于,通過雙控節(jié)點間通信共享雙控系統(tǒng)上的狀態(tài)和服務(wù)運行信息,當一節(jié)點服務(wù)運行異?;蛘叨〞r心跳信息超時,則正常節(jié)點將按照設(shè)計切換狀態(tài),并以該狀態(tài)為目標調(diào)整控制器上相應(yīng)服務(wù)運行和停止;定義三個軟件功能模塊節(jié)點通信模塊COMM,集群服務(wù)管理模塊CSM和本地服務(wù)管理模塊LSM,模塊之間相互通信,其中COMM模塊功能是接收來自CSM模塊的信息并通過控制器通信介質(zhì)傳輸給另一控制器COMM模塊;CSM模塊從COMM模塊接收對方控制器信息,從LSM模塊接收本地服務(wù)組運行狀態(tài)信息,決策本控制器的狀態(tài)值并發(fā)送給COMM模塊和LSM模塊;LSM模塊從COMM模塊獲取狀態(tài)值,調(diào)整并定時檢測服務(wù)組本地控制器服務(wù)組運行情況,最后通知CSM模塊;系統(tǒng)啟動后每個控制器要決定本地控制器的狀態(tài),兩個控制器運行的狀態(tài)分別為activeactive;takeoverstandby和standbytakeover;在確定本地控制器狀態(tài)后,LSM模塊定時查詢本控制器狀態(tài)并檢測本地服務(wù)組運行狀態(tài)是否一致,若不一致則進行一致性調(diào)整,調(diào)整操作為嘗試執(zhí)行最多N次異常服務(wù)的啟動或停止,N為預(yù)設(shè)定的數(shù)值,大于等于0,調(diào)整操作可能會失??;CSM模塊從LSM獲取服務(wù)組運行狀態(tài),并通過COMM模塊循環(huán)接收和定時發(fā)送節(jié)點傳輸信息;節(jié)點傳輸信息包括控制器狀態(tài)和服務(wù)組各服務(wù)運行狀態(tài),運行或停止,CSM模塊每次獲得對方傳輸?shù)墓?jié)點信息則將接收的時間記錄,若對方控制器服務(wù)運行異常,或者超過預(yù)設(shè)時間沒有接收到對方節(jié)點信息,則接管對方服務(wù)組并更改本控制器狀態(tài)為takeover;當本控制器在運行過程中由于檢測到對方異常而進行狀態(tài)變化時,若需要接管對方控制器服務(wù),則在接管之前執(zhí)行一個預(yù)設(shè)定的程序,該程序一般是觸發(fā)電子開關(guān)重啟或者停止對方控制器,徹底隔離對方控制器對服務(wù)資源的控制器;當雙控系統(tǒng)處于一個takeover,另一個standby狀態(tài),把它切到兩控制器都是active的狀態(tài),即active,active狀態(tài),方法是添加一個檢測的標志,稱為擴展狀態(tài)值,隨同心跳信息一起傳輸,當有該擴展狀態(tài)值為預(yù)設(shè)特定值時,則忽略對方狀態(tài)變化而不自動改變本控制器狀態(tài);切換時設(shè)置該擴展狀態(tài)值為預(yù)設(shè)特定值并更改該節(jié)點狀態(tài)值,分別都更改為active狀態(tài),最后取消擴展狀態(tài)值;要停止雙控系統(tǒng)中所有控制器,方法和從takeover,standby切換到active,active類似,即使用擴展狀態(tài)值并設(shè)置inactive狀態(tài),在相應(yīng)所有服務(wù)停止之后停止COMM,CSM,LSM模塊;當要重啟或停止雙控存儲系統(tǒng)中單一控制器,且此時兩控制器正在運行,先將非停止的控制器狀態(tài)設(shè)置為takeover,再將要重啟或停止的控制器狀態(tài)設(shè)置為inactive;具體控制步驟如下S1.置本地控制器狀態(tài)為inactive,不啟動任何服務(wù)組,并開始收發(fā)狀態(tài)信息;S2等待若干秒,秒數(shù)由系統(tǒng)啟動時間差最大值決定,目的足保證兩控制器同時啟動時能夠最后相互達到相同狀態(tài);S3若對方狀態(tài)也為inactive,表明對方也在啟動,則設(shè)置本地控制器狀態(tài)為active,執(zhí)行步驟S7;S4若對方狀態(tài)為active,則設(shè)置本地控制器狀態(tài)為active,執(zhí)行步驟S7;S5若接收不到對方信息或者對方狀態(tài)為takeover,表明對方已運行所有服務(wù)組,則設(shè)置本地控制器狀態(tài)為standby,執(zhí)行步驟S7;S6若對方狀態(tài)為standby,則設(shè)置本地控制器狀態(tài)為takeover,執(zhí)行步驟S7;S7根據(jù)本地控制器狀態(tài)調(diào)整服務(wù)組運行狀態(tài)并定時檢測本地控制器狀態(tài)值和服務(wù)組運行情況;
2、 根據(jù)權(quán)利要求l所述的的方法,其特征在于每個控制器使用狀態(tài)值表示該控 制器整體的服務(wù)運行情況,并以狀態(tài)值為目標驅(qū)動調(diào)整控制器上服務(wù)的運行和停 止。
3、 根據(jù)權(quán)利要求l所述的的方法,其特征在于雙控制器系統(tǒng)共提供兩組服務(wù), 記為服務(wù)組0和服務(wù)組1,每組服務(wù)由一個或多個服務(wù)組成,切換服務(wù)時以整個服 務(wù)組進行切換。
4、 根據(jù)權(quán)利要求l所述的的方法,其特征在于,控制器使用ID 0和1標記,兩 個控制器在軟硬件正常時可以都提供服務(wù),此時控制器0和控制器1分別提供服務(wù) 組0和服務(wù)組1的服務(wù),此時控制器O和控制器l狀態(tài)值都為active。
5、 根據(jù)權(quán)利要求l所述的的方法,其特征在于,控制器狀態(tài)值為inactive表示 控制器處于不提供服務(wù)狀態(tài),且沒有準備好提供服務(wù);狀態(tài)值active,在控制器O 上表示應(yīng)該運行服務(wù)組O的所有服務(wù),在控制器l上表示應(yīng)該運行服務(wù)組l的所有服 務(wù); 一個控制器狀態(tài)值為takeover,表示服務(wù)組0和服務(wù)組1的所有服務(wù)都在該控 制器上運行; 一個控制器狀態(tài)值為standby,表示不提供任一服務(wù)組的服務(wù),但是 可以由系統(tǒng)管理員手動操作切換到active狀態(tài),或者檢測到另一控制器心跳超時 而主動切換到takeover纟犬態(tài)。
6、 根據(jù)權(quán)利要求l所述的方法,其特征在于,雙控制器系統(tǒng)運行時,控制器定時檢測本控制器上服務(wù)運行狀態(tài)并定時'向?qū)Ψ焦?jié)點傳輸狀態(tài)和服務(wù)運行情況,稱 為心跳傳輸,當檢測到對方心跳傳輸超過預(yù)設(shè)時間值,或者對方本應(yīng)正常運行的 服務(wù)組中的任一服務(wù)運行異常,則接管對方服務(wù)并更改本節(jié)點狀態(tài)。
7、 根據(jù)權(quán)利要求l所述的方法,其特征在于,控制器定時檢測本控制器上服務(wù) 運行狀態(tài),若根據(jù)狀態(tài)應(yīng)運行的服務(wù)停止則進行預(yù)設(shè)的最多N次嘗試重啟該服務(wù),其中N大于等于0。
8、 根據(jù)權(quán)利要求l所述的方法,其特征在于, 一控制器接管另一控制器服務(wù)組 前,可執(zhí)行一個預(yù)定程序,該預(yù)定程序一般用于從軟件和電氣上隔離另一控制器 對雙控系統(tǒng)共享資源的訪問。
全文摘要
本發(fā)明公開一種雙控制器存儲系統(tǒng)的服務(wù)和控制器狀態(tài)監(jiān)控方法,定義三個軟件功能模塊節(jié)點通信模塊COMM,集群服務(wù)管理模塊CSM和本地服務(wù)管理模塊LSM,模塊之間相互通信,其中COMM模塊功能是接收來自CSM模塊的信息并通過控制器通信介質(zhì)傳輸給另一控制器COMM模塊;CSM模塊從COMM模塊接收對方控制器信息,從LSM模塊接收本地服務(wù)組運行狀態(tài)信息,決策本控制器的狀態(tài)值并發(fā)送給COMM模塊和LSM模塊;LSM模塊從COMM模塊獲取狀態(tài)值,調(diào)整并定時檢測服務(wù)組本地控制器服務(wù)組運行情況,最后通知CSM模塊;系統(tǒng)啟動后每個控制器要決定本地控制器的狀態(tài),實現(xiàn)控制器故障自動切換和存儲服務(wù)持續(xù)可用。
文檔編號G06F9/46GK101594383SQ20091001711
公開日2009年12月2日 申請日期2009年7月9日 優(yōu)先權(quán)日2009年7月9日
發(fā)明者施培任 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司