本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體來說,涉及一種策略控制方法及策略控制系統(tǒng)。
背景技術(shù):
文件系統(tǒng)中的歸檔功能,需要定期將在線存儲系統(tǒng)上的部分?jǐn)?shù)據(jù)歸檔并遷移至某離線存儲系統(tǒng)。
現(xiàn)有技術(shù)的多策略執(zhí)行歸檔方法,在文件歸檔中由于多策略執(zhí)行會導(dǎo)致歸檔效率偏低以及負(fù)載均衡不合理,從而會造成系統(tǒng)歸檔能力下降。因此在分布式系統(tǒng)中,需要合理分配策略運轉(zhuǎn)狀態(tài)及資源,設(shè)置策略優(yōu)先級,提高歸檔性能及速度。另一方面,當(dāng)系統(tǒng)發(fā)生故障重啟時需要重新執(zhí)行歸檔任務(wù),因此還存在故障恢復(fù)單一的問題。
針對相關(guān)技術(shù)中多策略執(zhí)行歸檔效率低、故障恢復(fù)單一的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
針對相關(guān)技術(shù)中多策略執(zhí)行歸檔效率低、故障恢復(fù)單一的問題,本發(fā)明提出一種策略控制方法及策略控制系統(tǒng),能夠提高多策略并發(fā)執(zhí)行的效率;當(dāng)發(fā)生故障時,能夠恢復(fù)故障前的策略狀態(tài)而不需要重新歸檔。
本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
根據(jù)本發(fā)明的一個方面,提供了一種策略控制方法,包括:生成策略并根據(jù)策略的執(zhí)行時間開始執(zhí)行策略;在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài);以及在策略的執(zhí)行過程發(fā)生異常的情況下,獲取發(fā)生異常時的執(zhí)行階段對應(yīng)的斷點策略狀態(tài),并根據(jù)斷點策略狀態(tài)恢復(fù)至對應(yīng)的執(zhí)行階段。
在一個實施例中,執(zhí)行階段包括第一執(zhí)行階段進入和第二執(zhí)行階段;策略狀態(tài)包括與第一執(zhí)行階段對應(yīng)的第一策略狀態(tài)及與第二執(zhí)行階段對應(yīng)的第二策略狀態(tài);以及在策略的執(zhí)行過程中,當(dāng)由第一執(zhí)行階段進入到第二執(zhí)行階段時,將對應(yīng)的第一策略狀態(tài)轉(zhuǎn)換至第二策略狀態(tài)。
在一個實施例中,在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài),包括:當(dāng)符合策略執(zhí)行條件時將策略狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備狀態(tài);當(dāng)開始?xì)w檔文件的執(zhí)行階段時,將策略狀態(tài)由策略準(zhǔn)備狀態(tài)轉(zhuǎn)換至策略運行狀態(tài);當(dāng)開始同步元數(shù)據(jù)的執(zhí)行階段時,將策略狀態(tài)由策略運行狀態(tài)轉(zhuǎn)換至策略同步狀態(tài);以及當(dāng)同步元數(shù)據(jù)的執(zhí)行階段完成時,將策略狀態(tài)由策略同步狀態(tài)轉(zhuǎn)換至策略完成狀態(tài);其中,策略為歸檔策略。
在一個實施例中,當(dāng)符合策略執(zhí)行條件時將策略狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備狀態(tài),包括:當(dāng)執(zhí)行優(yōu)先事件需要暫停策略的執(zhí)行過程時,將策略狀態(tài)由策略準(zhǔn)備狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備暫停狀態(tài);當(dāng)執(zhí)行優(yōu)先事件完成時,將策略狀態(tài)由策略準(zhǔn)備暫停狀態(tài)重新轉(zhuǎn)換至策略準(zhǔn)備狀態(tài)。
在一個實施例中,當(dāng)開始?xì)w檔文件的執(zhí)行階段時,將策略狀態(tài)由策略準(zhǔn)備狀態(tài)轉(zhuǎn)換至策略運行狀態(tài),包括:當(dāng)執(zhí)行優(yōu)先事件需要暫停策略的執(zhí)行過程時,將策略狀態(tài)由策略運行狀態(tài)轉(zhuǎn)換至策略運行暫停狀態(tài);當(dāng)執(zhí)行優(yōu)先事件完成時,將策略狀態(tài)由策略運行暫停狀態(tài)重新轉(zhuǎn)換至策略運行狀態(tài)。
在一個實施例中,還包括:當(dāng)不符合策略執(zhí)行條件時,將策略狀態(tài)轉(zhuǎn)換至策略等待狀態(tài)。
在一個實施例中,當(dāng)策略為周期性策略或間隔性策略的情況下,返回至當(dāng)符合策略執(zhí)行條件時將策略狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備狀態(tài)的步驟。
在一個實施例中,生成策略并根據(jù)策略的執(zhí)行時間開始執(zhí)行策略,包括:生成策略;在到達執(zhí)行時間的情況下,將策略狀態(tài)設(shè)置為策略初始化狀態(tài)。
根據(jù)本發(fā)明的另一方面,提供了一種策略控制系統(tǒng),包括:策略執(zhí)行模塊,用于根據(jù)策略的執(zhí)行時間開始執(zhí)行策略;策略狀態(tài)控制模塊,用于在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài);以及故障恢復(fù)模塊,用于在策略的執(zhí)行過程發(fā)生異常的情況下,獲取發(fā)生異常時的執(zhí)行階段對應(yīng)的斷點策略狀態(tài),并根據(jù)斷點策略狀態(tài)恢復(fù)至對應(yīng)的執(zhí)行階段。
在一個實施例中,執(zhí)行階段包括第一執(zhí)行階段進入和第二執(zhí)行階段;策略狀態(tài)包括與第一執(zhí)行階段對應(yīng)的第一策略狀態(tài)及與第二執(zhí)行階段對應(yīng)的第二策略狀態(tài);以及在策略的執(zhí)行過程中,當(dāng)由第一執(zhí)行階段進入到第二執(zhí)行階段時,策略狀態(tài)控制模塊將對應(yīng)的第一策略狀態(tài)轉(zhuǎn)換至第二策略狀態(tài)。
本發(fā)明通過在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài)來控制策略的執(zhí)行,能夠提高多策略并發(fā)執(zhí)行的效率,提高歸檔速度;當(dāng)發(fā)生故障時,能夠恢復(fù)故障前的策略狀態(tài)而不需要重新歸檔,提高了歸檔效率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是根據(jù)本發(fā)明實施例的策略控制方法的流程圖;
圖2是根據(jù)本發(fā)明具體實施例的策略控制方法的策略執(zhí)行過程的流程示意圖;
圖3是根據(jù)本發(fā)明實施例的策略控制方法的故障恢復(fù)時的策略狀態(tài)的示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,根據(jù)本發(fā)明實施例的策略控制方法包括以下步驟:
步驟S101,生成策略并根據(jù)策略的執(zhí)行時間開始執(zhí)行策略;
步驟S103,在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài);以及
步驟S105,在策略的執(zhí)行過程發(fā)生異常的情況下,獲取發(fā)生異常時的執(zhí)行階段對應(yīng)的斷點策略狀態(tài),并根據(jù)斷點策略狀態(tài)恢復(fù)至對應(yīng)的執(zhí)行階段。
本發(fā)明通過上述技術(shù)方案,在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài)來控制策略的執(zhí)行,能夠提高多策略并發(fā)執(zhí)行的效率,提高歸檔速度;當(dāng)發(fā)生故障時,能夠恢復(fù)故障前的策略狀態(tài)而不需要重新歸檔,提高了歸檔效率。
在一個實施例中,執(zhí)行階段包括第一執(zhí)行階段進入和第二執(zhí)行階段;策略狀態(tài)包括與第一執(zhí)行階段對應(yīng)的第一策略狀態(tài)及與第二執(zhí)行階段對應(yīng)的第二策略狀態(tài);以及在策略的執(zhí)行過程中,當(dāng)由第一執(zhí)行階段進入到第二執(zhí)行階段時,將對應(yīng)的第一策略狀態(tài)轉(zhuǎn)換至第二策略狀態(tài)。
在一個實施例中,步驟S101包括:生成策略;在到達執(zhí)行時間的情況下,將策略狀態(tài)設(shè)置為策略初始化狀態(tài)。
在一個實施例中,策略為歸檔策略;具體地,步驟S103包括:當(dāng)符合策略執(zhí)行條件時將策略狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備狀態(tài);當(dāng)開始?xì)w檔文件的執(zhí)行階段時,將策略狀態(tài)由策略準(zhǔn)備狀態(tài)轉(zhuǎn)換至策略運行狀態(tài);當(dāng)開始同步元數(shù)據(jù)的執(zhí)行階段時,將策略狀態(tài)由策略運行狀態(tài)轉(zhuǎn)換至策略同步狀態(tài);以及當(dāng)同步元數(shù)據(jù)的執(zhí)行階段完成時,將策略狀態(tài)由策略同步狀態(tài)轉(zhuǎn)換至策略完成狀態(tài)。
進一步地,當(dāng)符合策略執(zhí)行條件時將策略狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備狀態(tài),包括:當(dāng)執(zhí)行優(yōu)先事件需要暫停策略的執(zhí)行過程時,將策略狀態(tài)由策略準(zhǔn)備狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備暫停狀態(tài);當(dāng)執(zhí)行優(yōu)先事件完成時,將策略狀態(tài)由策略準(zhǔn)備暫停狀態(tài)重新轉(zhuǎn)換至策略準(zhǔn)備狀態(tài)。
進一步地,當(dāng)開始?xì)w檔文件的執(zhí)行階段時,將策略狀態(tài)由策略準(zhǔn)備狀態(tài)轉(zhuǎn)換至策略運行狀態(tài),包括:當(dāng)執(zhí)行優(yōu)先事件需要暫停策略的執(zhí)行過程時,將策略狀態(tài)由策略運行狀態(tài)轉(zhuǎn)換至策略運行暫停狀態(tài);當(dāng)執(zhí)行優(yōu)先事件完成時,將策略狀態(tài)由策略運行暫停狀態(tài)重新轉(zhuǎn)換至策略運行狀態(tài)。
在一個實施例中,還包括:當(dāng)不符合策略執(zhí)行條件時,將策略狀態(tài)轉(zhuǎn)換至策略等待狀態(tài)。
在一個實施例中,當(dāng)策略為周期性策略或間隔性策略的情況下,返回至當(dāng)符合策略執(zhí)行條件時將策略狀態(tài)轉(zhuǎn)換至策略準(zhǔn)備狀態(tài)的步驟。
下面結(jié)合圖2所示對上述實施例進行具體說明。在本實施例中,通過歸檔系統(tǒng)來進行文件歸檔,上述策略為歸檔策略。其中需要進一步說明的,歸檔系統(tǒng)包括:文件復(fù)制控制器oBke、文件復(fù)制服務(wù)器oBks、和文件掃描控制器oScan。在文件歸檔的過程中,oBke可用于管理策略運行隊列POLICY_RUNNING_LIST和觸發(fā)同步元數(shù)據(jù);oBks可用于執(zhí)行歸檔任務(wù),具體的包括執(zhí)行同步元數(shù)據(jù)和執(zhí)行同步文件,還可用于暫行正在執(zhí)行的歸檔任務(wù);oScan可用于掃描待歸檔的文件和目錄、按規(guī)則生成歸檔任務(wù)、并將歸檔任務(wù)投遞給oBks。
在開始執(zhí)行策略之前,首先用戶可通過界面設(shè)置文件歸檔策略,并設(shè)置策略狀態(tài)為策略初始化狀態(tài)INIT;然后當(dāng)檢測到策略執(zhí)行時間到來時,將該策略投遞到設(shè)置于oBke中的策略運行隊列POLICY_RUNNING_LIST中,以進行后續(xù)的策略執(zhí)行過程。
如圖2所示,根據(jù)本發(fā)明具體實施例的策略控制方法的策略執(zhí)行過程包括以下步驟:
步驟1、當(dāng)oBke中策略運行隊列正在運行的策略個數(shù)小于5個時,則將策略狀態(tài)由INIT轉(zhuǎn)換至策略準(zhǔn)備狀態(tài)PREARE;在本實施例中,策略執(zhí)行條件包括:oBke中策略運行隊列正在運行的策略個數(shù)小于5個;具體的,策略準(zhǔn)備狀態(tài)PREARE可以包括策略準(zhǔn)備子狀態(tài)POLICY_PREARE、策略準(zhǔn)備暫停子狀態(tài)POLICY_PAUSEPREING、和策略準(zhǔn)備暫停完成子狀態(tài)POLICY_PAUSEPREFIN;
步驟2當(dāng)oBke中策略運行隊列正在運行的策略個數(shù)大于5個時,則將策略狀態(tài)由INIT轉(zhuǎn)換至策略等待狀態(tài)WAIT;其中,策略等待狀態(tài)WAIT狀態(tài)包括策略等待子狀態(tài)POLICY_WAIT和策略等待完成子狀態(tài)POLICY_WAITFIN;
步驟3、當(dāng)oScan完成對待歸檔的文件及目錄的掃描、并按規(guī)則生成歸檔任務(wù)投遞給oBks時,即當(dāng)開始?xì)w檔文件時,則將策略狀態(tài)由PREPARE轉(zhuǎn)換至策略運行狀態(tài)RUNNING;具體的,策略運行狀態(tài)RUNNING可以包括策略運行子狀態(tài)POLICY_RUNNING、策略運行暫停子狀態(tài)POLICY_PAUSEDOING、和策略運行暫停完成子狀態(tài)POLICY_PAUSEDOFIN;
步驟4、當(dāng)oBke中策略運行隊列正在運行的策略個數(shù)小于5個、且oScan完成文件掃描并將生成的歸檔任務(wù)投遞給oBks時,則將策略狀態(tài)由WAIT轉(zhuǎn)換至RUNNING;
步驟5、當(dāng)oBke中策略運行隊列正在運行的策略個數(shù)小于5個、且oScan未完成文件掃描時,則將策略狀態(tài)由WAIT轉(zhuǎn)換至PREPARE;
步驟6、當(dāng)oBks文件同步完成后、oBke將觸發(fā)同步元數(shù)據(jù)任務(wù),也就是當(dāng)開始同步元數(shù)據(jù)的執(zhí)行階段時,此時將策略狀態(tài)由RUNNING轉(zhuǎn)換至策略同步狀態(tài)DIRMETA;
步驟7、oBke按照由最大目錄層深開始并逐層遞減的順序通知oBks同步該最大層深目錄下的文件元數(shù)據(jù),當(dāng)該最大層深目錄下的各層目錄下的文件元數(shù)據(jù)均同步完成時,即當(dāng)同步元數(shù)據(jù)的執(zhí)行階段完成時,此時將策略狀態(tài)由DIRMETA變?yōu)椴呗酝瓿蔂顟B(tài)FIN;
步驟8、若策略為周期性策略或間隔性策略,則當(dāng)策略的執(zhí)行時間到來時,策略將進入下一個周期的文件歸檔;此時若oBke中策略運行隊列正在運行的策略個數(shù)小于5個,則將策略狀態(tài)由FIN重新轉(zhuǎn)換至PREARE;
步驟9、若策略為周期性策略或間隔性策略,則當(dāng)策略的執(zhí)行時間到來時,策略將進入下一個周期的文件歸檔;此時若oBke中策略運行隊列正在運行的策略個數(shù)大于5個,則將策略狀態(tài)由FIN轉(zhuǎn)換至WAIT;
步驟10、策略等待狀態(tài)WAIT狀態(tài)包括策略等待子狀態(tài)POLICY_WAIT和策略等待完成子狀態(tài)POLICY_WAITFIN;當(dāng)oScan完成文件掃描并生成歸檔任務(wù)時,策略狀態(tài)由POLICY_WAIT變?yōu)镻OLICY_WAITFIN;當(dāng)策略運行隊列正在運行的策略個數(shù)小于5個,則執(zhí)行步驟4;
步驟11、當(dāng)新添加策略的優(yōu)先級高于策略運行隊列中策略狀態(tài)為POOLICY_PREPARE的準(zhǔn)備策略的優(yōu)先級時,則將該準(zhǔn)備策略的策略狀態(tài)由POOLICY_PREPARE轉(zhuǎn)換至POLICY_PAUSEPREING,然后等待oBks暫停該準(zhǔn)備策略的任務(wù);
步驟12、當(dāng)oBks返回暫停上述準(zhǔn)備策略的任務(wù)的成功消息時,將該準(zhǔn)備策略的策略狀態(tài)由POLICY_PAUSEPREING轉(zhuǎn)換至POLICY_PAUSEFIN;
步驟13、若當(dāng)前oBke中策略運行隊列正在運行的策略個數(shù)小于5個、且策略狀態(tài)為WAIT的策略數(shù)量為0或策略狀態(tài)為WAIT的策略的優(yōu)先級均低于上述準(zhǔn)備策略,則將該準(zhǔn)備策略的策略狀態(tài)由POLICY_PAUSEFIN轉(zhuǎn)換至POLICY_PREPARE;
步驟14、當(dāng)新添加策略的優(yōu)先級高于策略運行隊列中策略狀態(tài)為POOLICY_RUNNING的運行策略的優(yōu)先級時,則將該運行策略的策略狀態(tài)由POOLICY_RUNNING轉(zhuǎn)換至POLICY_PAUSEDOING;然后等待oBks暫停該運行策略的任務(wù);
步驟15、若oBks返回暫停上述運行策略的任務(wù)的成功消息時,將該運行策略的策略狀態(tài)由POLICY_PAUSEDOING轉(zhuǎn)換至POLICY_PAUSEDOFIN;
步驟16、若當(dāng)前oBke中策略運行隊列正在運行的策略個數(shù)小于5個、策略狀態(tài)為WAIT的策略數(shù)量為0或策略狀態(tài)為WAIT的策略的優(yōu)先級均低于上述運行策略,則將該運行策略的策略狀態(tài)由POLICY_PAUSEDOFIN轉(zhuǎn)換至POLICY_RUNNING。
如圖3所示是故障恢復(fù)時的策略狀態(tài)的示意圖。通過上述的技術(shù)方案能夠?qū)崿F(xiàn)將oBke的策略運轉(zhuǎn)劃分為不同的策略狀態(tài),因此當(dāng)系統(tǒng)發(fā)生故障(FAIL)重啟時,可以通過讀取故障發(fā)生時的策略狀態(tài)(包括WAIT、PREPARE、RUNNING、DIRMETA、FIN)及目錄任務(wù)、文件任務(wù)、元數(shù)據(jù)任務(wù)等相關(guān)信息,恢復(fù)至故障前的歸檔執(zhí)行階段。因此當(dāng)系統(tǒng)發(fā)生故障重啟時不再需要重新執(zhí)行歸檔任務(wù),降低了故障恢復(fù)的成本,提高了歸檔效率。
根據(jù)本發(fā)明的實施例,還提供了一種策略控制系統(tǒng),包括:
策略執(zhí)行模塊,用于根據(jù)策略的執(zhí)行時間開始執(zhí)行策略;
策略狀態(tài)控制模塊,用于在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài);以及
故障恢復(fù)模塊,用于在策略的執(zhí)行過程發(fā)生異常的情況下,獲取發(fā)生異常時的執(zhí)行階段對應(yīng)的斷點策略狀態(tài),并根據(jù)斷點策略狀態(tài)恢復(fù)至對應(yīng)的執(zhí)行階段。
在一個實施例中,執(zhí)行階段包括第一執(zhí)行階段進入和第二執(zhí)行階段;策略狀態(tài)包括與第一執(zhí)行階段對應(yīng)的第一策略狀態(tài)及與第二執(zhí)行階段對應(yīng)的第二策略狀態(tài);以及在策略的執(zhí)行過程中,當(dāng)由第一執(zhí)行階段進入到第二執(zhí)行階段時,策略狀態(tài)控制模塊將對應(yīng)的第一策略狀態(tài)轉(zhuǎn)換至第二策略狀態(tài)。
綜上所述,借助于本發(fā)明的上述技術(shù)方案,通過在策略的執(zhí)行過程中確定策略在不同的執(zhí)行階段對應(yīng)的策略狀態(tài)來控制策略的執(zhí)行,能夠提高多策略并發(fā)執(zhí)行的效率,提高歸檔速度;當(dāng)發(fā)生故障時,能夠恢復(fù)故障前的策略狀態(tài)而不需要重新歸檔,提高了歸檔效率。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。