本發(fā)明涉及軟件升級技術(shù)領(lǐng)域,特別是涉及一種存儲控制器集群的軟件在線升級方法及系統(tǒng)。
背景技術(shù):
在云計算時代,海量數(shù)據(jù)的爆發(fā)式增長對存儲技術(shù)的性能提出了更高的要求。為了提高存儲設(shè)備的性能和穩(wěn)定性,目前一個存儲設(shè)備普遍采用多個存儲控制器組成控制器集群來管理后端磁盤和下發(fā)i/o請求??刂破骷褐械拇鎯刂破鲀蓛梢唤M實現(xiàn)互為冗余,當(dāng)某個存儲控制器發(fā)生故障時,與其互為冗余的存儲控制器會接替它的工作,保證i/o不中斷。因此,多個存儲控制器需要在運行的全過程中保持狀態(tài)(配置文件)一致,以便能夠隨時互相接替。
另外,出于存儲控制器功能擴展及缺陷修復(fù)等目的,會需要對存儲控制器軟件進行升級。為了保證存儲控制器的狀態(tài)一致性,現(xiàn)有技術(shù)中在升級前往往需要先關(guān)閉存儲控制器軟件,停止存儲控制器的業(yè)務(wù)處理及i/o請求處理,在存儲控制器軟件更新之后再啟動存儲控制器軟件以繼續(xù)業(yè)務(wù)處理,這個過程也稱為離線升級,但該種升級方式會導(dǎo)致存儲設(shè)備在升級過程中不可用,降低了存儲設(shè)備的性能和穩(wěn)定性。
因此,如何提供一種解決上述技術(shù)問題的方案是本領(lǐng)域技術(shù)人員目前需要解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種存儲控制器集群的軟件在線升級方法及系統(tǒng),在不中斷i/o請求處理、不停止業(yè)務(wù)的前提下對存儲控制器的軟件進行自動升級,在升級過程中仍然始終保證所有存儲控制器的狀態(tài)一致、所有i/o正常處理(只有在csm更新時會有短暫停頓或延遲,幾乎可以忽略),提高了存儲設(shè)備的性能和穩(wěn)定性。
為解決上述技術(shù)問題,本發(fā)明提供了一種存儲控制器集群的軟件在線升級方法,包括:
步驟s11:接收用戶發(fā)送的軟件包,所述軟件包包括軟件主程序和能夠在運行時進行卸載和裝載的控制狀態(tài)機csm;
步驟s12:將所述軟件包分別發(fā)送至存儲控制器集群中的各個存儲控制器節(jié)點;
步驟s13:對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級;
步驟s14:控制事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個進行完軟件主程序升級后的存儲控制器節(jié)點,以便各個所述存儲控制器節(jié)點對csm更新。
優(yōu)選地,步驟s11與步驟s12之間,該方法還包括:
判斷所述軟件包是否無誤,如果是,進入步驟s12。
優(yōu)選地,步驟s13的過程具體為:
依次對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再依次對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級。
優(yōu)選地,所述分布式一致性算法為paxos分布式一致性算法。
優(yōu)選地,步驟s14中,所述各個所述存儲控制器節(jié)點對csm更新的過程具體為:
各個所述存儲控制器節(jié)點在接收到所述csm更新事件后靜默;
卸載舊版本的csm,裝載所述軟件包中的新版本的csm;
取消各節(jié)點的靜默,繼續(xù)處理事件和i/o。
優(yōu)選地,所述csm為以動態(tài)鏈接庫實現(xiàn)的csm。
優(yōu)選地,該方法還包括:
當(dāng)輪到配置節(jié)點進行軟件升級時,根據(jù)預(yù)設(shè)策略確定新的配置節(jié)點;
當(dāng)原來的所述配置節(jié)點完成軟件升級后,重新作為新的配置節(jié)點。
為解決上述技術(shù)問題,本發(fā)明還提供了一種存儲控制器集群的軟件在線升級系統(tǒng),包括:
接收單元,用于接收用戶發(fā)送的軟件包,所述軟件包包括軟件主程序和能夠在運行時進行卸載和裝載的控制狀態(tài)機csm;
分發(fā)單元,用于將所述軟件包分別發(fā)送至存儲控制器集群中的各個存儲控制器節(jié)點;
軟件主程序升級單元,用于對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級;
csm升級單元,用于控制事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個進行完軟件主程序升級后的存儲控制器節(jié)點,以便各個所述存儲控制器節(jié)點對csm更新。
優(yōu)選地,該系統(tǒng)還包括:
判斷單元,用于判斷所述軟件包是否無誤,如果是,則觸發(fā)所述分發(fā)單元。
優(yōu)選地,所述軟件主程序升級單元具體用于:
依次對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再依次對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級。
本發(fā)明提供了一種存儲控制器集群的軟件在線升級方法,本申請將存儲控制器軟件按照功能分成軟件主程序和csm,本申請先對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級,確保每一對互為冗余的存儲控制器中始終有一個軟件主程序在正常進行業(yè)務(wù)處理及i/o請求處理;然后再控制事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個進行完軟件主程序升級后的存儲控制器節(jié)點,以便各個所述存儲控制器節(jié)點對csm更新,保證了csm更新的一致性,進而保證了升級過程中所有存儲控制器的狀態(tài)一致。
可見,本申請在不中斷i/o請求處理、不停止業(yè)務(wù)的前提下對存儲控制器的軟件進行自動升級,在升級過程中仍然始終保證所有存儲控制器的狀態(tài)一致、所有i/o正常處理(只有在csm更新時會有短暫停頓或延遲,幾乎可以忽略),提高了存儲設(shè)備的性能和穩(wěn)定性。
本發(fā)明提供的一種存儲控制器集群的軟件在線升級系統(tǒng)具有如上有益效果。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種存儲控制器集群的軟件在線升級方法的結(jié)構(gòu)示意圖;
圖2為本發(fā)明提供的一種存儲控制器集群的軟件在線升級系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明的核心是提供一種存儲控制器集群的軟件在線升級方法及系統(tǒng),在不中斷i/o請求處理、不停止業(yè)務(wù)的前提下對存儲控制器的軟件進行自動升級,在升級過程中仍然始終保證所有存儲控制器的狀態(tài)一致、所有i/o正常處理(只有在csm更新時會有短暫停頓或延遲,幾乎可以忽略),提高了存儲設(shè)備的性能和穩(wěn)定性。
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參照圖1,圖1為本發(fā)明提供的一種存儲控制器集群的軟件在線升級方法的結(jié)構(gòu)示意圖,該方法包括:
步驟s11:接收用戶發(fā)送的軟件包,軟件包包括軟件主程序和能夠在運行時進行卸載和裝載的控制狀態(tài)機csm;
具體地,本申請將存儲控制器軟件按功能分為軟件主程序和用于管理存儲控制器節(jié)點的狀態(tài)的csm(controlstatemachine,控制狀態(tài)機)。另外,存儲控制器集群中通常都包括配置節(jié)點,本申請中由配置節(jié)點接收用戶發(fā)送的拷貝的最新版本的軟件包,軟件包包括最新版本的軟件主程序和能夠在運行時進行卸載和裝載的csm。
步驟s12:將軟件包分別發(fā)送至存儲控制器集群中的各個存儲控制器節(jié)點;
步驟s13:對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級;
為了保證在對存儲控制器進行軟件主程序升級時不中斷i/o請求及業(yè)務(wù)處理,本申請中不是對每一對互為冗余的存儲控制器中同時進行軟件主程序升級,而是對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級,確保每一對互為冗余的存儲控制器中始終有一個軟件主程序在正常進行業(yè)務(wù)處理及i/o請求處理。
具體地,每一對互為冗余的存儲控制器中,被選中的存儲控制器節(jié)點退出存儲控制器集群,停止i/o處理(會自動由另一與其互為冗余的存儲控制器節(jié)點承擔(dān)),退出i/o處理進程,替換軟件主程序并重新啟動i/o處理進程,運行新版本的軟件主程序,這個過程中仍使用舊版本的csm。
步驟s14:控制事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個進行完軟件主程序升級后的存儲控制器節(jié)點,以便各個存儲控制器節(jié)點對csm更新。
考慮到在實際應(yīng)用中,事件管理器向各個存儲控制器節(jié)點發(fā)送csm更新事件時會受到網(wǎng)絡(luò)等因素的影響,可能會出現(xiàn)各個存儲控制器節(jié)點收到csm更新事件的時間不一致,進而導(dǎo)致csm更新時間不一致,最終可能會導(dǎo)致所有存儲控制器的狀態(tài)的不一致的情況。
因此,本申請中,待所有存儲控制器節(jié)點的軟件主程序均升級完成后,配置節(jié)點會發(fā)送csm更新事件至事件管理器,由事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個存儲控制器節(jié)點。
分布式一致性算法保證了csm替換(包括卸載舊版本、裝載新版本)動作的一致性,進而保證了升級過程中所有存儲控制器的狀態(tài)一致。另外,csm更新的時間只有幾秒鐘,與現(xiàn)有技術(shù)中的離線升級比起來幾乎可以忽略不計。
綜上,本申請中的升級操作以事件驅(qū)動,利用分布式一致性算法保證各存儲控制器的事件一致性,以事件機制來驅(qū)動csm在各存儲控制器上的同步替換,從而實現(xiàn)在運行時更新軟件,且不破壞各控制器的一致性。
本發(fā)明提供了一種存儲控制器集群的軟件在線升級方法,本申請將存儲控制器軟件按照功能分成軟件主程序和csm,本申請先對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級,確保每一對互為冗余的存儲控制器中始終有一個軟件主程序在正常進行業(yè)務(wù)處理及i/o請求處理;然后再控制事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個進行完軟件主程序升級后的存儲控制器節(jié)點,以便各個存儲控制器節(jié)點對csm更新,保證了csm更新的一致性,進而保證了升級過程中所有存儲控制器的狀態(tài)一致。
可見,本申請在不中斷i/o請求處理、不停止業(yè)務(wù)的前提下對存儲控制器的軟件進行自動升級,在升級過程中仍然始終保證所有存儲控制器的狀態(tài)一致、所有i/o正常處理(只有在csm更新時會有短暫停頓或延遲,幾乎可以忽略),提高了存儲設(shè)備的性能和穩(wěn)定性。
作為一種優(yōu)選地實施例,步驟s11與步驟s12之間,該方法還包括:
判斷軟件包是否無誤,如果是,進入步驟s12。
為了保證后續(xù)軟件升級的順利進行,本申請在將軟件包分發(fā)至各存儲控制器之前,還會檢查軟件包是否可以使用,只有在可以使用時才將軟件包分發(fā)至各存儲控制器。
作為一種優(yōu)選地實施例,步驟s13的過程具體為:
依次對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再依次對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級。
具體地,在對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級時,可以依次對這些存儲控制器進行軟件主程序升級,這樣可以有效避免在同時升級出現(xiàn)故障時,存數(shù)設(shè)備崩潰的情況的發(fā)生,在某個存儲控制器升級失敗時只單獨對其進行修復(fù)或者其他處理,保證了升級過程的穩(wěn)定性。
作為一種優(yōu)選地實施例,分布式一致性算法為paxos分布式一致性算法。
具體地,paxos分布式一致性算法使得csm更新事件的發(fā)送和執(zhí)行采用了二次提交的方式實現(xiàn),可以保證csm替換(包括卸載舊版本、裝載新版本)動作的一致性,進而保證了升級過程中所有存儲控制器的狀態(tài)一致。
另外,paxos算法保證事件處理的一致性,成功則全成功,存在錯誤則全部回滾,也即csm升級不成功時,則控制各個存儲控制器節(jié)點的主程序也變?yōu)樵瓉淼呐f版本,從而始終保證所有存儲控制器節(jié)點要么全部升級成功,要么全部不升級。
當(dāng)然,這里的分布式一致性算法還可以為其他分布式一致性算法,本申請在此不做特別的限定,根據(jù)實際情況來定。
作為一種優(yōu)選地實施例,步驟s14中,各個存儲控制器節(jié)點對csm更新的過程具體為:
各個存儲控制器節(jié)點在接收到csm更新事件后靜默;
卸載舊版本的csm,裝載軟件包中的新版本的csm;
取消各節(jié)點的靜默,繼續(xù)處理事件和i/o。
具體地,各個存儲控制器節(jié)點在接收到csm更新事件后,對事件的處理和發(fā)送進行靜默,暫停處理i/o。然后,各個存儲控制器節(jié)點卸載舊版本的csm,裝載軟件包中的新版本的csm,然后取消各節(jié)點的靜默,繼續(xù)處理事件和i/o,升級完成。這個過程中,靜默的時間非常短,只有幾秒鐘,與現(xiàn)有技術(shù)中的離線升級比起來幾乎可以忽略不計。
作為一種優(yōu)選地實施例,csm為以動態(tài)鏈接庫實現(xiàn)的csm。
具體地,csm軟件以動態(tài)鏈接庫的方式實現(xiàn),可以在運行時進行裝載和卸載。
作為一種優(yōu)選地實施例,該方法還包括:
當(dāng)輪到配置節(jié)點進行軟件升級時,根據(jù)預(yù)設(shè)策略確定新的配置節(jié)點;
當(dāng)原來的配置節(jié)點完成軟件升級后,重新作為新的配置節(jié)點。
考慮到配置節(jié)點也要進行升級,在配置節(jié)點升級時,該控制器集群中會根據(jù)預(yù)設(shè)策略確定新的配置節(jié)點來暫時執(zhí)行原來的配置節(jié)點的工作,當(dāng)原來的配置節(jié)點按照本申請中的方法完成軟件升級后,重新作為新的配置節(jié)點。
請參照圖2,圖2為本發(fā)明提供的一種存儲控制器集群的軟件在線升級系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)包括:
接收單元1,用于接收用戶發(fā)送的軟件包,軟件包包括軟件主程序和能夠在運行時進行卸載和裝載的控制狀態(tài)機csm;
分發(fā)單元2,用于將軟件包分別發(fā)送至存儲控制器集群中的各個存儲控制器節(jié)點;
軟件主程序升級單元3,用于對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級;
csm升級單元4,用于控制事件管理器基于分布式一致性算法將csm更新事件發(fā)送至各個進行完軟件主程序升級后的存儲控制器節(jié)點,以便各個存儲控制器節(jié)點對csm更新。
作為一種優(yōu)選地實施例,該系統(tǒng)還包括:
判斷單元,用于判斷軟件包是否無誤,如果是,則觸發(fā)分發(fā)單元。
作為一種優(yōu)選地實施例,軟件主程序升級單元3具體用于:
依次對每一對互為冗余的存儲控制器中的其中一個存儲控制器進行軟件主程序升級,在每一對互為冗余的存儲控制器中都有一個存儲控制器完成軟件主程序升級后,再依次對每一對互為冗余的存儲控制器中的另一個存儲控制器進行軟件主程序升級。
對于本發(fā)明提供的存儲控制器集群的軟件在線升級系統(tǒng)的介紹請參照上述實施例,本發(fā)明在此不再贅述。
需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。