專利名稱:生成快照的方法、利用快照進行數(shù)據(jù)恢復的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及快照生成技術(shù),特別涉及一種生成快照的方法、一種生成快照的裝置、一種利用生成的快照進行數(shù)據(jù)恢復的方法、及一種利用生成的快照進行數(shù)據(jù)恢復的裝置。
背景技術(shù):
隨著計算機及網(wǎng)絡的發(fā)展,社會進入了一個信息爆炸的時代;在網(wǎng)絡環(huán)境下,一個月內(nèi)產(chǎn)生的數(shù)據(jù)量可能是過去幾個月產(chǎn)生的數(shù)據(jù)量的總和。企業(yè)的生產(chǎn)以及個人的生活都越來越依賴于計算機以及存放在裝置上的數(shù)據(jù)。因此,數(shù)據(jù)的丟失與損壞將會給人們的生產(chǎn)生活帶來不可估量的損失。隨著存儲技術(shù)的進步,為了預防數(shù)據(jù)丟失,通常采用備份、歸檔、遠程復制等技術(shù)對數(shù)據(jù)進行保護,而備份、歸檔、遠程復制都屬于實現(xiàn)數(shù)據(jù)備份的方法。為了避免對系統(tǒng)的 性能影響,需要在裝置空閑時進行數(shù)據(jù)備份,這就導致兩次備份間隔的時間較長,在需要根據(jù)備份的數(shù)據(jù)對已損壞的數(shù)據(jù)進行恢復的過程中,處于兩次備份間隔的時間內(nèi)的數(shù)據(jù)不可恢復;而提高數(shù)據(jù)備份頻率就會影響系統(tǒng)的正常工作。為了實現(xiàn)數(shù)據(jù)的持續(xù)性保護及數(shù)據(jù)可恢復性,快照(Snapshot)技術(shù)產(chǎn)生了。快照方法就是對某一數(shù)據(jù)集進行即時拷貝產(chǎn)生對于數(shù)據(jù)集的一個完整副本的方法;其中,數(shù)據(jù)集為源數(shù)據(jù),數(shù)據(jù)集的副本為快照數(shù)據(jù)?,F(xiàn)有的快照方法生成的是一個數(shù)據(jù)集的完整副本,每生成一次快照數(shù)據(jù),就需要根據(jù)數(shù)據(jù)集生成一完整副本,需要占用較大的存儲空間,耗費較多的時間生成快照。為了減少占用的存儲空間,基于I/o重定向的快照生成方法只針對變化的數(shù)據(jù)進行保存。圖I為現(xiàn)有的生成快照的裝置的結(jié)構(gòu)示意圖?,F(xiàn)結(jié)合圖1,對現(xiàn)有的生成快照的裝置進行說明,具體如下圖I所示的裝置采用的是基于I/O重定向的快照生成方法?,F(xiàn)有的生成快照的裝置包含存儲控制器10和存儲器11 ;其中,存儲器11中包含用以保存源數(shù)據(jù)的源介質(zhì)111和用以保存快照數(shù)據(jù)的快照介質(zhì)112。存儲控制器10在生成快照的相鄰兩次間隔時間內(nèi),將對于源介質(zhì)111中的源數(shù)據(jù)的修改數(shù)據(jù)重定向至快照介質(zhì)112中,寫入與源地址對應的重定向地址中。源數(shù)據(jù)的修改數(shù)據(jù)為重定向數(shù)據(jù);重定向地址為用以保存重定向數(shù)據(jù)的地址。存儲控制器10根據(jù)快照生成指令,中斷對存儲器11的源介質(zhì)111的所有讀寫操作;根據(jù)源地址從源介質(zhì)111中讀取源數(shù)據(jù),對源數(shù)據(jù)即時拷貝生成快照數(shù)據(jù);將快照數(shù)據(jù)寫入快照介質(zhì)112中的快照地址上;讀取重定向地址中的數(shù)據(jù);將從快照介質(zhì)112的重定向地址中讀取的數(shù)據(jù)寫入源介質(zhì)111的源地址,以完成本次生成快照的操作。現(xiàn)有的基于快照的裝置能夠為用戶提供特定時刻產(chǎn)生的快照數(shù)據(jù),但在快照生成期間,每完成一次快照需要執(zhí)行一次從源介質(zhì)讀源數(shù)據(jù)、執(zhí)行一次向快照介質(zhì)寫快照數(shù)據(jù)、執(zhí)行一次快照介質(zhì)中讀重定向數(shù)據(jù)、及執(zhí)行一次向源介質(zhì)寫重定向數(shù)據(jù)的操作,且在將源介質(zhì)中的數(shù)據(jù)發(fā)生改變時,都需要將改變的數(shù)據(jù)作為重定向數(shù)據(jù)寫入快照介質(zhì)中的重定向地址中,這樣,頻繁地對存儲介質(zhì)的讀寫操作會降低存儲介質(zhì)的IO性能,提高了生成快照所耗費的時間,降低了生成快照的裝置的系統(tǒng)性能。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種生成快照的方法,該方法能夠減少對存儲介質(zhì)的IO讀寫次數(shù),降低生成快照所耗費的時間,提高系統(tǒng)性能。本發(fā)明的目的在于提供一種生成快照的裝置,該裝置能夠減少對存儲介質(zhì)的IO讀寫次數(shù),降低生成快照所耗費的時間,提高系統(tǒng)性能。本發(fā)明的目的在于提供一種利用生成的快照進行數(shù)據(jù)恢復的方法,該方法能夠減少對存儲介質(zhì)的IO讀寫次數(shù),提高系統(tǒng)性能。本發(fā)明的目的在于提供一種利用生成的快照進行數(shù)據(jù)恢復的方法,該方法能夠減少對存儲介質(zhì)的IO讀寫次數(shù),提高系統(tǒng)性能。
一種生成快照的方法,該方法包括A、監(jiān)控對源介質(zhì)的寫操作,判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否貝U,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的映射表及暫存的影射表;B、判斷是否滿足生成快照的觸發(fā)條件,如果是,執(zhí)行步驟C,否則執(zhí)行步驟A ;C、更新快照介質(zhì)包含的元數(shù)據(jù)區(qū)中保存的元數(shù)據(jù),清空暫存的影射表。較佳地,所述步驟A之前進一步包括判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果存在,則確定當前快照子數(shù)據(jù)區(qū),否貝1J,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,對快照介質(zhì)進行初始化。上述方法中,所述快照介質(zhì)包含元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū);所述元數(shù)據(jù)區(qū)用以保存元數(shù)據(jù);所述元數(shù)據(jù)至少包含快照數(shù)量、預設的影射頁數(shù)量的最大值、當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息、快照數(shù)據(jù)區(qū)的起止地址及當前快照子數(shù)據(jù)區(qū)的起止地址;所述快照數(shù)據(jù)區(qū)包含多個快照子數(shù)據(jù)區(qū);所述快照子數(shù)據(jù)區(qū)用以保存影射表及影射頁;所述影射表為源介質(zhì)的影射頁與快照子數(shù)據(jù)區(qū)的影射頁之間的映射關(guān)系;所述快照子數(shù)據(jù)區(qū)的影射頁用以保存與其有映射關(guān)系的源介質(zhì)的影射頁中的數(shù)據(jù)的快照數(shù)據(jù)。上述方法中,步驟A所述判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁包括根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)的影射頁;判斷暫存的影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果存在,則確定快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中存在與源介質(zhì)的寫操作攜帶的寫地址匹配的影射頁,如果不存在,則確定快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中不存在與源介質(zhì)的寫操作攜帶的寫地址匹配的影射頁。上述方法中,步驟A所述在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的影射表及暫存的影射表包括對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空影射頁中,將寫入拷貝后的數(shù)據(jù)的影射頁作為生成的新的影射頁;將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及暫存的影射表。上述方法中,所述生成快照的觸發(fā)條件為當前快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量達到預設的影射頁數(shù)量的最大值,或者接收到由快照生成周期觸發(fā)生成的快照生成指令。上述方法中,所述步驟C包括將元數(shù)據(jù)包含的快照數(shù)量增 1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成。上述方法中,所述確定當前快照子數(shù)據(jù)區(qū)包括讀取快照介質(zhì)的元數(shù)據(jù)區(qū)中包含的元數(shù)據(jù),在元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息為已完成時,根據(jù)元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的起止地址確定下一個快照子數(shù)據(jù)區(qū)的起止地址,在下一個快照子數(shù)據(jù)區(qū)中建立一個空的影射表,并更新元數(shù)據(jù)區(qū)保存的元數(shù)據(jù);在元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息為未完成時,保持當前快照子數(shù)據(jù)區(qū)不變。上述方法中,所述對快照介質(zhì)進行初始化包括將快照介質(zhì)劃分為元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū);根據(jù)快照數(shù)據(jù)區(qū)的起止地址及預設的快照子數(shù)據(jù)區(qū)的大小,確定當前快照子數(shù)據(jù)區(qū)的起止地址,將當前快照子數(shù)據(jù)區(qū)的狀態(tài)標注為未完成;將快照數(shù)量、預設的影射頁數(shù)量的最大值、快照數(shù)據(jù)區(qū)的起止地址、當前快照子數(shù)據(jù)區(qū)的狀態(tài)及當前快照子數(shù)據(jù)區(qū)的起止地址的作為元數(shù)據(jù)寫入元數(shù)據(jù)區(qū);根據(jù)當前快照子數(shù)據(jù)區(qū)的起止地址,在快照數(shù)據(jù)區(qū)包含的當前快照子數(shù)據(jù)區(qū)建立一個空的影射表,并暫存一個空的影射表;根據(jù)預設的影射頁數(shù)量的最大值及預設的影射頁大小,將當前快照子數(shù)據(jù)區(qū)中除保存影射表之外的存儲空間劃分為多個空的影射頁。一種生成快照的裝置,該裝置包含源介質(zhì),用以保存源數(shù)據(jù);快照介質(zhì),用以保存由源數(shù)據(jù)生成的快照數(shù)據(jù);所述快照介質(zhì)包含用以保存元數(shù)據(jù)的元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū);所述快照數(shù)據(jù)區(qū)包含多個用以保存影射表及影射頁的快照子數(shù)據(jù)區(qū);存儲控制器,監(jiān)控對源介質(zhì)的寫操作,判斷當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否則,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的影射表及其暫存的影射表;所述存儲控制器判斷是否滿足生成快照的觸發(fā)條件,如果是,更新元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),否則繼續(xù)監(jiān)控對源介質(zhì)的寫操作。較佳地,所述存儲控制器還判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果存在,則確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,對快照介質(zhì)進行初始化。上述裝置中,所述元數(shù)據(jù)至少包含快照數(shù)量、預設的影射頁數(shù)量的最大值、當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息、快照數(shù)據(jù)區(qū)的起止地址及當前快照子數(shù)據(jù)區(qū)的起止地址;所述影射表為源介質(zhì)的影射頁與快照子數(shù)據(jù)區(qū)的影射頁之間的映射關(guān)系;所述快照子數(shù)據(jù)區(qū)的影射頁用以保存與其有映射關(guān)系的源介質(zhì)的影射頁中的數(shù)據(jù)的快照數(shù)據(jù)。上述裝置中,所述存儲控制器包含操作監(jiān)控模塊,監(jiān)控對源介質(zhì)的操作,如果判定為讀操作,則將讀操作發(fā)送至源介質(zhì),如果判定為寫操作,則將寫操作攜帶的寫數(shù)據(jù)地址發(fā)送給快照生成模塊,根據(jù)快照生成模塊的第一觸發(fā),將寫操作發(fā)送至源介質(zhì),根據(jù)快照生成模塊的第二觸發(fā),繼續(xù)監(jiān)控對源介質(zhì)的操作;快照生成模塊,根據(jù)寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)的影射頁,判斷其暫存 的影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果存在,則輸出第一觸發(fā)至操作監(jiān)控模塊,否則,對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空的影射頁中,生成新的影射頁;所述快照生成模塊將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及其暫存的影射表中;所述快照生成模塊判斷當前快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量是否達到預設的影射頁數(shù)量的最大值,或者判斷是否接收到由快照生成周期觸發(fā)生成的快照生成指令,如果是,將元數(shù)據(jù)包含的快照數(shù)量增1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成,清空其暫存的影射表,否則輸出第二觸發(fā)至操作監(jiān)控模塊。上述裝置中,所述存儲控制器包含初始化模塊,啟動后判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果存在,則根據(jù)元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息,確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,將快照介質(zhì)劃分為元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū),將元數(shù)據(jù)寫入元數(shù)據(jù)區(qū),將快照數(shù)據(jù)區(qū)劃分為多個包含空的影射頁及空的影射表的快照子數(shù)據(jù)區(qū);操作監(jiān)控模塊,監(jiān)控對源介質(zhì)的操作,如果判定為讀操作,則將讀操作發(fā)送至源介質(zhì),如果判定為寫操作,則將寫操作攜帶的寫數(shù)據(jù)地址發(fā)送給快照生成模塊,根據(jù)快照生成模塊的第一觸發(fā),將寫操作發(fā)送至源介質(zhì),根據(jù)快照生成模塊的第二觸發(fā),繼續(xù)監(jiān)控對源介質(zhì)的操作;快照生成模塊,根據(jù)寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)的影射頁,判斷其暫存的影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果存在,則輸出第一觸發(fā)至操作監(jiān)控模塊,否則,對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空的影射頁中,生成新的影射頁;所述快照生成模塊將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及其暫存的影射表中;所述快照生成模塊判斷當前快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量是否達到預設的影射頁數(shù)量的最大值,或者判斷是否接收到由快照生成周期觸發(fā)生成的快照生成指令,如果是,將元數(shù)據(jù)包含的快照數(shù)量增1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成,清空其暫存的影射表,否則輸出第二觸發(fā)至操作監(jiān)控模塊。一種利用生成的快照進行數(shù)據(jù)恢復的方法,該方法包括根據(jù)數(shù)據(jù)恢復指令及生成快照的時間點,確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū);生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中;根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表;利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前 快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中;清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表及影射頁,刪除恢復影射表,更新元數(shù)據(jù)區(qū)。上述方法中,所述確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)包括根據(jù)接收到的數(shù)據(jù)恢復指令,結(jié)束生成快照;根據(jù)快照的時間點、快照生成周期及元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),由生成快照時的當前快照子數(shù)據(jù)區(qū),確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)。上述方法中,所述根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表包括比較包含了相同源介質(zhì)的影射頁的映射關(guān)系所屬的快照子數(shù)據(jù)區(qū)對應的時間點,保留所屬的快照子數(shù)據(jù)區(qū)所對應的生成快照的時間點最早的一條映射關(guān)系,刪除其余的包含了相同源介質(zhì)的影射頁的映射關(guān)系,獲得更新后的恢復映射表。上述方法中,所述更新元數(shù)據(jù)區(qū)包含將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的快照數(shù)量更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)生成之前的快照數(shù)量;將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為已完成;將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)之前生成的一個快照子數(shù)據(jù)區(qū)的起止地址?!N利用生成的快照進行數(shù)據(jù)恢復的裝置,該裝置包含前述任一所述的生成快照的裝置及恢復控制器;所述恢復控制器根據(jù)數(shù)據(jù)恢復指令及生成快照的時間點,確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū),生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中,根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表;所述恢復控制器利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中;所述恢復控制器清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表及影射頁,刪除恢復影射表,更新元數(shù)據(jù)區(qū)。上述裝置中,所述恢復控制器包含快照恢復模塊,根據(jù)接收到的數(shù)據(jù)恢復指令,結(jié)束生成快照,根據(jù)快照的時間點、快照生成周期及元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),由生成快照時的當前快照子數(shù)據(jù)區(qū),確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū);所述快照恢復模塊生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中;所述快照恢復模塊比較包含了相同源介質(zhì)的影射頁的映射關(guān)系所屬的快照子數(shù)據(jù)區(qū)對應的時間點,保留所屬的快照子數(shù)據(jù)區(qū)所對應的生成快照的時間點最早的一條映射關(guān)系,刪除其余的包含了相同源介質(zhì)的影射頁的映射關(guān)系,獲得更新后的恢復映射表,輸出更新后的恢復影射表至更新模塊,并刪除更新后的恢復映射表;更新模塊,利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中;所述更新模塊清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快 照子數(shù)據(jù)區(qū)中保存的影射表及影射頁,刪除恢復影射表,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的快照數(shù)量更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)生成之前的快照數(shù)量,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為已完成,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)之前生成的一個快照子數(shù)據(jù)區(qū)的起止地址。由上述的技術(shù)方案可見,本發(fā)明提供了一種生成快照的方法及裝置,在該方法中,監(jiān)控對源介質(zhì)的寫操作,判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否則,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的映射表及暫存的影射表,判斷是否滿足生成快照的觸發(fā)條件,如果是,則更新快照介質(zhì)包含的元數(shù)據(jù)區(qū)中保存的元數(shù)據(jù),清空暫存的影射表,否則繼續(xù)監(jiān)控對源介質(zhì)的寫操作。本發(fā)明還提供了一種利用生成的快照進行數(shù)據(jù)恢復的方法及裝置,在該方法中,根據(jù)快照子數(shù)據(jù)區(qū)中保存的影射表對源介質(zhì)進行數(shù)據(jù)恢復,相較于現(xiàn)有的利用快照進行數(shù)據(jù)恢復的方法,本發(fā)明利用生成的快照進行數(shù)據(jù)恢復時,減少了對存儲介質(zhì)的IO讀寫次數(shù)。采用本發(fā)明的方法及裝置,能夠極大地減少了對存儲介質(zhì)的IO讀寫次數(shù),降低生成快照所耗費的時間,提高系統(tǒng)性能。
圖I為現(xiàn)有的生成快照的裝置的結(jié)構(gòu)示意圖。圖2為本發(fā)明生成快照的方法流程圖。圖3為本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的方法流程圖。圖4為本發(fā)明生成快照的裝置的結(jié)構(gòu)示意圖。圖5為本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的裝置的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。本發(fā)明提供了一種生成快照的方法及裝置,在該方法中,監(jiān)控對源介質(zhì)的寫操作,判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否則,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)中的影射表;根據(jù)生成快照的觸發(fā)條件,更新快照介質(zhì)包含的元數(shù)據(jù)區(qū)中保存的元數(shù)據(jù),清空暫存的影射表。其中,本發(fā)明提及的暫存的影射表是暫存于生成快照的裝置所裝設的系統(tǒng)的內(nèi)存中的影射表,其保持與當前快照子數(shù)據(jù)區(qū)的影射表同步,作用是為了加快影射頁的查找效率。本發(fā)明還提供了一種利用生成的快照進行數(shù)據(jù)恢復的方法及裝置,該方法中,利用生成快照期間保存于快照子數(shù)據(jù)區(qū)中的影射表,對需要進行數(shù)據(jù)恢復的源介質(zhì)中的影射頁進行定位,將快照子數(shù)據(jù)區(qū)中的影射頁中保存的快照數(shù)據(jù)寫入源介質(zhì)中與其有映射關(guān)系 的影射頁中,節(jié)省了查找定位源介質(zhì)中需要進行數(shù)據(jù)恢復的存儲空間所耗費的時間,提高了系統(tǒng)性能,由于在生成快照的過程中減少了對存儲介質(zhì)的IO讀寫次數(shù),相較于現(xiàn)有的利用生成快照進行數(shù)據(jù)恢復的方法,減少了對存儲介質(zhì)的IO讀寫次數(shù)。當配置的影射頁越大,則減少的IO讀寫次數(shù)則越多,效率的提升也就越大。為了表述清楚,現(xiàn)對本發(fā)明提及的一些名詞進行說明,具體如下本發(fā)明的快照介質(zhì)為用以保存源介質(zhì)中的源數(shù)據(jù)的快照數(shù)據(jù)的存儲介質(zhì);快照介質(zhì)可被劃分為元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū);元數(shù)據(jù)區(qū)用以保存與生成快照相關(guān)的元數(shù)據(jù);快照數(shù)據(jù)區(qū)用以保存源介質(zhì)中的源數(shù)據(jù)的快照數(shù)據(jù)。其中,元數(shù)據(jù)至少包含快照數(shù)量、預設的影射頁數(shù)量的最大值、當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息、快照數(shù)據(jù)區(qū)的起止位置及當前快照子數(shù)據(jù)區(qū)的起止位置;快照數(shù)據(jù)區(qū)可被劃分為多個快照子數(shù)據(jù)區(qū),每一個快照子數(shù)據(jù)區(qū)用以保存一個快照生成周期內(nèi)生成的源數(shù)據(jù)的快照數(shù)據(jù);每一個快照子數(shù)據(jù)區(qū)可被劃分為用以保存影射表的影射表區(qū)和用以保存多個影射頁的影射數(shù)據(jù)區(qū)。本發(fā)明提及的影射頁即為依據(jù)生成快照時對系統(tǒng)性能的要求,在源介質(zhì)上和快照介質(zhì)的快照子數(shù)據(jù)區(qū)中劃分的一定大小的存儲空間,影射頁的大小可為2的冪次方,最小為16KB,最大可達到2048KB ;源介質(zhì)的影射頁的大小與綁定的快照介質(zhì)包含的快照子數(shù)據(jù)區(qū)中的影射頁的大小相同。本發(fā)明的源介質(zhì)根據(jù)其大小及設置的影射頁的大小,能夠確定源介質(zhì)包含的影射頁的數(shù)量,源介質(zhì)中的影射頁可以為依次編碼;本發(fā)明的快照介質(zhì)中的每一個快照子數(shù)據(jù)區(qū)根據(jù)其大小及設置的影射頁的大小,能夠確定每一個快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量,每一個快照子數(shù)據(jù)區(qū)中影射頁是獨立編碼的,且在一個快照子數(shù)據(jù)區(qū)中影射頁按照其地址依次編碼。本發(fā)明提及的源介質(zhì)的影射頁與快照介質(zhì)的影射頁之間的映射關(guān)系為一種指向關(guān)系,即源介質(zhì)的影射頁中保存的源數(shù)據(jù)的拷貝數(shù)據(jù)被寫入到一個快照子數(shù)據(jù)區(qū)中的某一個影射頁中,則由源介質(zhì)的影射頁指向該快照子數(shù)據(jù)區(qū)的該影射頁的指向關(guān)系,就代表了一個映射關(guān)系,在影射表中可以用一個影射項進行表示。比如比如一個源介質(zhì)有128個數(shù)據(jù)塊,編號為塊O到塊127,每個數(shù)據(jù)塊的大小為16KB,預設的影射頁的大小為32KB,則這個源介質(zhì)在邏輯上被分成64個影射頁,影射頁依次編號為影射頁O到影射頁63 ;若對源介質(zhì)的一個寫操作中攜帶的寫數(shù)據(jù)地址包含于塊3的存儲空間內(nèi),則這個寫操作會落入到影射頁I中;若影射頁I保存的源數(shù)據(jù)的快照數(shù)據(jù)被寫入到當前快照子數(shù)據(jù)區(qū)中的影射頁8中,則在影射表中會生成一條由源介質(zhì)的影射頁I指向當前快照子數(shù)據(jù)區(qū)的影射頁8的映身寸關(guān)系。圖2為本發(fā)明生成快照的方法流程圖。現(xiàn)結(jié)合圖2,對本發(fā)明生成快照的方法進行說明,具體如下步驟201 :監(jiān)控對源介質(zhì)的操作的類型,如果是寫操作,則執(zhí)行步驟203,如果是讀操作,執(zhí)行步驟202 ;該步驟可通過攔截對源介質(zhì)的所有操作,通過對操作的類型的識別,對源介質(zhì)的操作的類型進行監(jiān)控。其中,可通過標識符,對操作的類型進行識別,比如讀操作的標識符為READ,寫操作的標識符為WRITE。步驟202 :允許對源介質(zhì)的讀操作,之后執(zhí)行步驟201 ;
該步驟可通過放行對源介質(zhì)的讀操作來實現(xiàn)。步驟203 :判斷當前快照子數(shù)據(jù)區(qū)中是否存在與寫操作的寫數(shù)據(jù)地址匹配的影射頁,如果是,執(zhí)行步驟204,否則執(zhí)行步驟205 ;該步驟包括步驟2031,凍結(jié)對源介質(zhì)的所有讀操作或?qū)懖僮?;步驟2032,根據(jù)源介質(zhì)的寫操作中攜帶的寫數(shù)據(jù)地址,確定進行本次寫操作的源介質(zhì)的影射頁;步驟2033,根據(jù)暫存的影射表,判斷影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果是,執(zhí)行步驟204,否則執(zhí)行步驟205。步驟2032,可根據(jù)影射頁的大小、源介質(zhì)的起止地址及寫數(shù)據(jù)地址,確定寫數(shù)據(jù)地址所屬的影射頁的存儲空間,進而確定進行本次寫操作的影射頁。由于本發(fā)明的快照生成方法中,每當當前快照子數(shù)據(jù)區(qū)中生成了一個新的影射頁時,就會對暫存的影射表及當前快照子數(shù)據(jù)區(qū)保存的影射表進行更新,因此,暫存的影射表能夠與當前快照子數(shù)據(jù)區(qū)保存的影射表保持同步。其中,快照子數(shù)據(jù)區(qū)中保存的影射表可在利用生成的快照進行數(shù)據(jù)恢復時定位源介質(zhì)中的影射頁,而暫存的影射頁是為了避免頻繁地對快照子數(shù)據(jù)區(qū)中的影射表進行讀取和查找,這樣可以提高系統(tǒng)的性能。步驟204 :允許對源介質(zhì)的寫操作,之后執(zhí)行步驟201 ;該步驟可通過放行對源介質(zhì)的寫操作來實現(xiàn)。步驟205 :在當前快照子數(shù)據(jù)區(qū)中生成新的影射頁,更新當前快照子數(shù)據(jù)區(qū)保存的影射表及暫存的影射表;該步驟包括步驟2051,對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝;步驟2052,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空影射頁中,將寫入拷貝后的數(shù)據(jù)的影射頁作為生成的新的影射頁;步驟2053,將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及暫存的影射表中。步驟2052中提及的拷貝后的數(shù)據(jù)即為此刻生成的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)的快照數(shù)據(jù);步驟2052中提及的當前快照子數(shù)據(jù)區(qū)中的影射頁可為按照預設的影射頁大小劃分的存儲空間,在寫入拷貝后的數(shù)據(jù)時,可根據(jù)預設的影射頁大小及當前快照子數(shù)據(jù)區(qū)的起止地址,將拷貝后的數(shù)據(jù)寫入已保存了快照數(shù)據(jù)的影射頁的下一個空的影射頁的存儲空間中。
步驟206 :判斷是否滿足生成快照的觸發(fā)條件,如果是,執(zhí)行步驟207,否則執(zhí)行步驟 201 ;該步驟中判斷是否滿足生成快照的觸發(fā)條件可為判斷當前快照子數(shù)據(jù)區(qū)中的影射頁的數(shù)量是否達到元數(shù)據(jù)中包含的預設的影射頁數(shù)量的最大值,或者為判斷是否接收到由快照生成周期觸發(fā)生成的快照生成指令,如果是,執(zhí)行步驟207,否則執(zhí)行步驟201,仍然執(zhí)行本次快照生成周期。可根據(jù)影射表中的映射關(guān)系的數(shù)量確定當前快照子數(shù)據(jù)區(qū)中的影射頁的數(shù)量。步驟207 :更新元數(shù)據(jù)區(qū)中保存的元數(shù)據(jù),清空暫存的影射表,之后結(jié)束操作;該步驟包括步驟2071,將元數(shù)據(jù)包含的快照數(shù)量增I ;步驟2072,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成;步驟2073,清空暫存的影射表。由步驟201執(zhí)行至步驟207完成了一個快照數(shù)據(jù)的生成過程,步驟207之后可結(jié) 束該快照生成周期,進入下一個快照生成周期,或者結(jié)束快照生成流程。若進入下一個快照生成周期,可執(zhí)行步驟201。優(yōu)選地,在步驟201之前進一步包括步驟200 :判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果是,則確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,對快照介質(zhì)進行初始化。步驟200中,可根據(jù)一個用以記載源介質(zhì)與快照介質(zhì)的綁定關(guān)系的配置文件,來判斷是否存在與源介質(zhì)綁定的快照介質(zhì)。步驟200中確定當前快照子數(shù)據(jù)區(qū)的方法包括讀取快照介質(zhì)的元數(shù)據(jù)區(qū)中的元數(shù)據(jù),在元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息為已完成時,根據(jù)元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址,確定下一個快照子數(shù)據(jù)區(qū)的起止地址,在下一個快照子數(shù)據(jù)區(qū)中建立一個空的影射表,并更新元數(shù)據(jù)區(qū)保存的元數(shù)據(jù);在元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息為未完成時,保持當前快照子數(shù)據(jù)區(qū)不變。其中,上述方法中提及的更新元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)包括將下一個快照子數(shù)據(jù)區(qū)的起止地址作為元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址,將當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為未完成。步驟200中對快照介質(zhì)進行初始化包括將快照介質(zhì)劃分為元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū);根據(jù)快照數(shù)據(jù)區(qū)的起止地址及預設的快照子數(shù)據(jù)區(qū)的大小,確定當前快照子數(shù)據(jù)區(qū)的起止地址,將當前快照子數(shù)據(jù)區(qū)的狀態(tài)標注為未完成;將快照數(shù)量、預設的影射頁數(shù)量的最大值、快照數(shù)據(jù)區(qū)的起止地址、當前快照子數(shù)據(jù)區(qū)的狀態(tài)及當前快照子數(shù)據(jù)區(qū)的起止地址的作為元數(shù)據(jù)寫入元數(shù)據(jù)區(qū);根據(jù)當前快照子數(shù)據(jù)區(qū)的起止地址,在快照數(shù)據(jù)區(qū)包含的當前快照子數(shù)據(jù)區(qū)建立一個空的影射表,并暫存一個空的影射表;根據(jù)預設的影射頁數(shù)量的最大值及預設的影射頁大小,將當前快照子數(shù)據(jù)區(qū)中除保存影射表之外的存儲空間劃分為多個空的影射頁。圖3為本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的方法流程圖?,F(xiàn)結(jié)合圖3,對本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的方法進行說明,具體如下本發(fā)明的數(shù)據(jù)恢復方法是利用圖2的方法所生成的快照數(shù)據(jù)來進行數(shù)據(jù)保護和恢復。
步驟301 :根據(jù)數(shù)據(jù)恢復指令及生成快照的時間點,確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū);該步驟包括步驟3011,根據(jù)接收到的數(shù)據(jù)恢復指令,結(jié)束生成快照;步驟3012,根據(jù)快照的時間點、快照生成周期及元數(shù)據(jù),由生成快照時的當前快照子數(shù)據(jù)區(qū),確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)。步驟3012中提及的進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)可為當前快照子數(shù)據(jù)區(qū),或當前快照子數(shù)據(jù)區(qū)之前已經(jīng)保存了快照數(shù)據(jù)的快照子數(shù)據(jù)區(qū),可根據(jù)快照的時間點及快照的生成周期,推算所要進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)與當前快照子數(shù)據(jù)區(qū) 間生成的快照的個數(shù),進而確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)。步驟302 :生成一個恢復影射表;該步驟包括步驟3021,凍結(jié)對源介質(zhì)的讀操作及寫操作;步驟3022,生成一個空的恢復影射表;步驟3023,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中。比如進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)為快照子數(shù)據(jù)區(qū)3,當前的快照子數(shù)據(jù)區(qū)為快照子數(shù)據(jù)區(qū)6,則快照子數(shù)據(jù)區(qū)3、快照子數(shù)據(jù)區(qū)4、快照子數(shù)據(jù)區(qū)5及快照子數(shù)據(jù)區(qū)6中保存的影射表中的映射關(guān)系被與入生成的恢復影射表中。步驟303 :更新恢復影射表;該步驟包括比較包含了相同源介質(zhì)的影射頁的映射關(guān)系所屬的快照子數(shù)據(jù)區(qū)對應的時間點,保留所屬的快照子數(shù)據(jù)區(qū)所對應的生成快照的時間點最早的一條映射關(guān)系,刪除其余的包含了相同源介質(zhì)的影射頁的映射關(guān)系,獲得更新后的恢復映射表。比如快照子數(shù)據(jù)區(qū)3中包含了由源介質(zhì)的影射頁I至快照子數(shù)據(jù)區(qū)3中影射頁4的映射關(guān)系,快照子數(shù)據(jù)區(qū)5中包含了由源介質(zhì)的影射頁I至快照子數(shù)據(jù)區(qū)5中影射頁9的映射關(guān)系,則在更新恢復影射表時,由于快照子數(shù)據(jù)區(qū)3的生成時間點早于快照子數(shù)據(jù)區(qū)5的生成時間點,則保留快照子數(shù)據(jù)區(qū)3中有關(guān)源介質(zhì)的影射頁I的映射關(guān)系,而刪除快照子數(shù)據(jù)區(qū)5中有關(guān)源介質(zhì)的影射頁I的映射關(guān)系。步驟304 :利用更新后的恢復影射表對源介質(zhì)進行數(shù)據(jù)恢復;該步驟包括利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中。步驟305 :清空多個快照子數(shù)據(jù)區(qū),并更新元數(shù)據(jù)區(qū);該步驟包括步驟3051,清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表及影射頁;步驟3052,刪除恢復影射表;步驟3053,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的快照數(shù)量更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)生成之前的快照數(shù)量,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為已完成,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)之前生成的一個快照子數(shù)據(jù)區(qū)的起止地址。步驟306 :結(jié)束數(shù)據(jù)恢復。經(jīng)該步驟后,可跳回至步驟201執(zhí)行生成快照流程,也可結(jié)束對快照介質(zhì)的所有流程。
圖4為本發(fā)明生成快照的裝置的結(jié)構(gòu)示意圖?,F(xiàn)結(jié)合圖4,對本發(fā)明生成快照的裝置的結(jié)構(gòu)進行說明,具體如下本發(fā)明生成快照的裝置包含源介質(zhì)40、快照介質(zhì)41及存儲控制器42。源介質(zhì)40用以保存源數(shù)據(jù)。快照介質(zhì)41用以保存由源數(shù)據(jù)生成的快照數(shù)據(jù)。其中,快照介質(zhì)41包含用以保存元數(shù)據(jù)的元數(shù)據(jù)區(qū)411及快照數(shù)據(jù)區(qū);快照數(shù)據(jù)區(qū)包含多個用以保存影射表及影射頁的快照子數(shù)據(jù)區(qū)412 ;快照子數(shù)據(jù)區(qū)412可進一步包含用以保存影射表的影射表區(qū)及用以保存多個影射頁的影射數(shù)據(jù)區(qū)。其中,元數(shù)據(jù)至少包含快照數(shù)量、預設的影射頁數(shù)量的最大值、當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息、快照數(shù)據(jù)區(qū)的起止地址及當前快照子數(shù)據(jù)區(qū)的起止地址;影射表為源介質(zhì)的影射頁與快照子數(shù)據(jù)區(qū)的影射頁之間的映射關(guān)系;快照子數(shù)據(jù)區(qū)的影射頁用以保存與其有 映射關(guān)系的源介質(zhì)的影射頁中的數(shù)據(jù)的快照數(shù)據(jù)。存儲控制器42監(jiān)控對源介質(zhì)40的寫操作,判斷當前快照子數(shù)據(jù)區(qū)412中是否存在與源介質(zhì)40的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì)40,否則,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)412中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)412保存的影射表及其暫存的影射表。存儲控制器42判斷是否滿足生成快照的觸發(fā)條件,如果是,更新元數(shù)據(jù)區(qū)411保存的元數(shù)據(jù),否則繼續(xù)監(jiān)控對源介質(zhì)40的寫操作。另外,存儲控制器42還可在啟動之初,對源介質(zhì)40及快照介質(zhì)41進行初始化,具體地,存儲控制器42判斷是否存在與源介質(zhì)40綁定的快照介質(zhì)41,如果存在,則確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)41的存儲介質(zhì)與源介質(zhì)40進行綁定,對快照介質(zhì)41進行初始化。其中,存儲控制器42包含操作監(jiān)控模塊421及快照生成模塊422。操作監(jiān)控模塊421監(jiān)控對源介質(zhì)40的操作,如果判定為讀操作,則將讀操作發(fā)送至源介質(zhì)40,如果判定為寫操作,則將寫操作攜帶的寫數(shù)據(jù)地址發(fā)送給快照生成模塊422,根據(jù)快照生成模塊422的第一觸發(fā),將寫操作發(fā)送至源介質(zhì)40,根據(jù)快照生成模塊422的第二觸發(fā),繼續(xù)監(jiān)控對源介質(zhì)40的操作??煺丈赡K422根據(jù)寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)40的影射頁,判斷其暫存的影射表中是否存在包含源介質(zhì)40的影射頁的映射關(guān)系,如果存在,則輸出第一觸發(fā)至操作監(jiān)控模塊421,否則,對源介質(zhì)40的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)412中的一個空的影射頁中,生成新的影射頁??煺丈赡K422將源介質(zhì)40的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)40的影射頁,與當前快照子數(shù)據(jù)區(qū)412中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)412保存的影射表及其暫存的影射表。快照生成模塊422判斷當前快照子數(shù)據(jù)區(qū)412包含的影射頁的數(shù)量是否達到預設的影射頁數(shù)量的最大值,或者判斷是否接收到由快照生成周期觸發(fā)生成的快照生成指令,如果是,將元數(shù)據(jù)包含的快照數(shù)量增1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成,清空其暫存的影射表,否則輸出第二觸發(fā)至操作監(jiān)控模塊421。在存儲控制器42能夠進一步對源介質(zhì)40及快照介質(zhì)41進行初始化時,存儲控制器42進一步包含初始化模塊420。其中,初始化模塊420在啟動后,判斷是否存在與源介質(zhì)40綁定的快照介質(zhì)41,如果存在,則根據(jù)元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息,確定當前快照子數(shù)據(jù)區(qū)412,否則,選擇一個作為快照介質(zhì)41的存儲介質(zhì)與源介質(zhì)40進行綁定,將快照介質(zhì)41劃分為元數(shù)據(jù)區(qū)411及快照數(shù)據(jù)區(qū),將元數(shù)據(jù)寫入元數(shù)據(jù)區(qū)411,將快照數(shù)據(jù)區(qū)劃分為多個包含空的影射頁及空的影射表的快照子數(shù)據(jù)區(qū)412。圖5為本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的裝置的結(jié)構(gòu)示意圖?,F(xiàn)結(jié)合圖5,對本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的裝置的結(jié)構(gòu)進行說明,具體如下本發(fā)明利用生成的快照進行數(shù)據(jù)恢復的裝置除了包含圖4所示的生成快照的裝置之外,還包含一恢復控制器53?;謴涂刂破?3根據(jù)數(shù)據(jù)恢復指令及生成快照的時間點,確定進行數(shù)據(jù)恢復的快 照子數(shù)據(jù)區(qū)412,生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412至當前快照子數(shù)據(jù)區(qū)412的多個快照子數(shù)據(jù)區(qū)412中保存的影射表包含的映射關(guān)系寫入恢復影射表中,根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表?;謴涂刂破?3利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412至當前快照子數(shù)據(jù)區(qū)412的多個快照子數(shù)據(jù)區(qū)412中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)40的影射頁中?;謴涂刂破?3清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)412中保存的影射表及影射頁,刪除恢復影射表,更新元數(shù)據(jù)區(qū)。其中,恢復控制器53包含快照恢復模塊531及更新模塊532??煺栈謴湍K531根據(jù)接收到的數(shù)據(jù)恢復指令,結(jié)束生成快照,根據(jù)快照的時間點、快照生成周期及元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),由生成快照時的當前快照子數(shù)據(jù)區(qū)412,確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412。快照恢復模塊531生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412至當前快照子數(shù)據(jù)區(qū)412的多個快照子數(shù)據(jù)區(qū)412中保存的影射表包含的映射關(guān)系寫入恢復影射表中。快照恢復模塊531比較包含了相同源介質(zhì)40的影射頁的映射關(guān)系所屬的快照子數(shù)據(jù)區(qū)412對應的時間點,保留所屬的快照子數(shù)據(jù)區(qū)412所對應的生成快照的時間點最早的一條映射關(guān)系,刪除其余的包含了相同源介質(zhì)的影射頁的映射關(guān)系,獲得更新后的恢復映射表,輸出更新后的恢復影射表至更新模塊532,并刪除更新后的恢復映射表。更新模塊532利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412至當前快照子數(shù)據(jù)區(qū)412的多個快照子數(shù)據(jù)區(qū)412中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)40的影射頁中。更新模塊532清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)412至當前快照子數(shù)據(jù)區(qū)412的多個快照子數(shù)據(jù)區(qū)412中保存的影射表及影射頁,刪除恢復影射表,將元數(shù)據(jù)區(qū)411保存的元數(shù)據(jù)中的快照數(shù)量更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)生成之前的快照數(shù)量,將元數(shù)據(jù)區(qū)411保存的元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為已完成,將元數(shù)據(jù)區(qū)411保存的元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)之前生成的一個快照子數(shù)據(jù)區(qū)的起止地址。本發(fā)明的上述較佳實施例中,在向快照子數(shù)據(jù)區(qū)中寫入影射表及拷貝的數(shù)據(jù)時,如果當前快照子數(shù)據(jù)區(qū)為快照數(shù)據(jù)區(qū)中的最后一個快照子數(shù)據(jù)區(qū),則當前快照子數(shù)據(jù)區(qū)的下一個快照子數(shù)據(jù)區(qū)為快照數(shù)據(jù)區(qū)的起始位置處的快照子數(shù)據(jù)區(qū),以此類推,快照數(shù)據(jù)區(qū)包含的多個快照子數(shù)據(jù)區(qū)可在生成快照的過程中被循環(huán)利用,以對生成的影射表及生成的影射頁進行保存。
本發(fā)明的上述較佳實施例中,在生成快照的方法中,采用了 COFW方式生成快照;在邏輯上將需要快照保護的源介質(zhì)分成相同等份的存儲空間,即多個影射頁,在源介質(zhì)中的源數(shù)據(jù)第一次被改變時,就將這個寫操作所落入源介質(zhì)的影射頁的數(shù)據(jù)整個讀取并寫入到相應的快照子數(shù)據(jù)區(qū)中的影射頁中,當下一個寫操作的位置仍落入這個源介質(zhì)的影射頁時,就無需再次讀取這個源介質(zhì)的源數(shù)據(jù)并寫入到快照子數(shù)據(jù)區(qū)中的影射頁中,減少了 IO操作的次數(shù);由于數(shù)據(jù)局部性原理的存在,本發(fā)明的生成快照的方法通過這種方式可以極大地減少利用COFW方式產(chǎn)生的IO次數(shù);另外,通過配置影射頁的大小,能夠降低生成快照所耗費的時間,提高系統(tǒng)的性能,使系統(tǒng)的快照性能達到最優(yōu)。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。
權(quán)利要求
1.一種生成快照的方法,其特征在于,該方法包括 A、監(jiān)控對源介質(zhì)的寫操作,判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否則,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的映射表及暫存的影射表; B、判斷是否滿足生成快照的觸發(fā)條件,如果是,執(zhí)行步驟C,否則執(zhí)行步驟A; C、更新快照介質(zhì)包含的元數(shù)據(jù)區(qū)中保存的元數(shù)據(jù),清空暫存的影射表。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述步驟A之前進一步包括 判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果存在,則確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,對快照介質(zhì)進行初始化。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述快照介質(zhì)包含元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū); 所述元數(shù)據(jù)區(qū)用以保存元數(shù)據(jù);所述元數(shù)據(jù)至少包含快照數(shù)量、預設的影射頁數(shù)量的最大值、當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息、快照數(shù)據(jù)區(qū)的起止地址及當前快照子數(shù)據(jù)區(qū)的起止地址; 所述快照數(shù)據(jù)區(qū)包含多個快照子數(shù)據(jù)區(qū);所述快照子數(shù)據(jù)區(qū)用以保存影射表及影射頁;所述影射表為源介質(zhì)的影射頁與快照子數(shù)據(jù)區(qū)的影射頁之間的映射關(guān)系;所述快照子數(shù)據(jù)區(qū)的影射頁用以保存與其有映射關(guān)系的源介質(zhì)的影射頁中的數(shù)據(jù)的快照數(shù)據(jù)。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,步驟A所述判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁包括 根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)的影射頁; 判斷暫存的影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果存在,則確定快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中存在與源介質(zhì)的寫操作攜帶的寫地址匹配的影射頁,如果不存在,則確定快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中不存在與源介質(zhì)的寫操作攜帶的寫地址匹配的影射頁。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,步驟A所述在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的影射表及暫存的影射表包括 對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空影射頁中,將寫入拷貝后的數(shù)據(jù)的影射頁作為生成的新的影射頁; 將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及暫存的影射表。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述生成快照的觸發(fā)條件為當前快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量達到預設的影射頁數(shù)量的最大值,或者接收到由快照生成周期觸發(fā)生成的快照生成指令。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述步驟C包括 將元數(shù)據(jù)包含的快照數(shù)量增1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成。
8.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述確定當前快照子數(shù)據(jù)區(qū)包括 讀取快照介質(zhì)的元數(shù)據(jù)區(qū)中包含的元數(shù)據(jù),在元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息為已完成時,根據(jù)元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的起止地址確定下一個快照子數(shù)據(jù)區(qū)的起止地址,在下一個快照子數(shù)據(jù)區(qū)中建立一個空的影射表,并更新元數(shù)據(jù)區(qū)保存的元數(shù)據(jù); 在元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息為未完成時,保持當前快照子數(shù)據(jù)區(qū)不變。
9.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述對快照介質(zhì)進行初始化包括 將快照介質(zhì)劃分為元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū); 根據(jù)快照數(shù)據(jù)區(qū)的起止地址及預設的快照子數(shù)據(jù)區(qū)的大小,確定當前快照子數(shù)據(jù)區(qū)的起止地址,將當前快照子數(shù)據(jù)區(qū)的狀態(tài)標注為未完成; 將快照數(shù)量、預設的影射頁數(shù)量的最大值、快照數(shù)據(jù)區(qū)的起止地址、當前快照子數(shù)據(jù)區(qū)的狀態(tài)及當前快照子數(shù)據(jù)區(qū)的起止地址的作為元數(shù)據(jù)寫入元數(shù)據(jù)區(qū); 根據(jù)當前快照子數(shù)據(jù)區(qū)的起止地址,在快照數(shù)據(jù)區(qū)包含的當前快照子數(shù)據(jù)區(qū)建立一個空的影射表,并暫存一個空的影射表; 根據(jù)預設的影射頁數(shù)量的最大值及預設的影射頁大小,將當前快照子數(shù)據(jù)區(qū)中除保存影射表之外的存儲空間劃分為多個空的影射頁。
10.一種生成快照的裝置,其特征在于,該裝置包含 源介質(zhì),用以保存源數(shù)據(jù); 快照介質(zhì),用以保存由源數(shù)據(jù)生成的快照數(shù)據(jù);所述快照介質(zhì)包含用以保存元數(shù)據(jù)的元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū);所述快照數(shù)據(jù)區(qū)包含多個用以保存影射表及影射頁的快照子數(shù)據(jù)區(qū); 存儲控制器,監(jiān)控對源介質(zhì)的寫操作,判斷當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否則,根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的影射表及其暫存的影射表; 所述存儲控制器判斷是否滿足生成快照的觸發(fā)條件,如果是,更新元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),否則繼續(xù)監(jiān)控對源介質(zhì)的寫操作。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述存儲控制器還判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果存在,則確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,對快照介質(zhì)進行初始化。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述元數(shù)據(jù)至少包含快照數(shù)量、預設的影射頁數(shù)量的最大值、當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息、快照數(shù)據(jù)區(qū)的起止地址及當前快照子數(shù)據(jù)區(qū)的起止地址; 所述影射表為源介質(zhì)的影射頁與快照子數(shù)據(jù)區(qū)的影射頁之間的映射關(guān)系;所述快照子數(shù)據(jù)區(qū)的影射頁用以保存與其有映射關(guān)系的源介質(zhì)的影射頁中的數(shù)據(jù)的快照數(shù)據(jù)。
13.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述存儲控制器包含 操作監(jiān)控模塊,監(jiān)控對源介質(zhì)的操作,如果判定為讀操作,則將讀操作發(fā)送至源介質(zhì),如果判定為寫操作,則將寫操作攜帶的寫數(shù)據(jù)地址發(fā)送給快照生成模塊,根據(jù)快照生成模塊的第一觸發(fā),將寫操作發(fā)送至源介質(zhì),根據(jù)快照生成模塊的第二觸發(fā),繼續(xù)監(jiān)控對源介質(zhì)的操作; 快照生成模塊,根據(jù)寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)的影射頁,判斷其暫存的影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果存在,則輸出第一觸發(fā)至操作監(jiān)控模塊,否則,對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空的影射頁中,生成新的影射頁; 所述快照生成模塊將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及其暫存的影射表中; 所述快照生成模塊判斷當前快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量是否達到預設的影射頁數(shù)量的最大值,或者判斷是否接收到由快照生成周期觸發(fā)生成的快照生成指令,如果是,將元數(shù)據(jù)包含的快照數(shù)量增1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成,清空其暫存的影射表,否則輸出第二觸發(fā)至操作監(jiān)控模塊。
14.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述存儲控制器包含 初始化模塊,啟動后判斷是否存在與源介質(zhì)綁定的快照介質(zhì),如果存在,則根據(jù)元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息,確定當前快照子數(shù)據(jù)區(qū),否則,選擇一個作為快照介質(zhì)的存儲介質(zhì)與源介質(zhì)進行綁定,將快照介質(zhì)劃分為元數(shù)據(jù)區(qū)及快照數(shù)據(jù)區(qū),將元數(shù)據(jù)寫入元數(shù)據(jù)區(qū),將快照數(shù)據(jù)區(qū)劃分為多個包含空的影射頁及空的影射表的快照子數(shù)據(jù)區(qū); 操作監(jiān)控模塊,監(jiān)控對源介質(zhì)的操作,如果判定為讀操作,則將讀操作發(fā)送至源介質(zhì),如果判定為寫操作,則將寫操作攜帶的寫數(shù)據(jù)地址發(fā)送給快照生成模塊,根據(jù)快照生成模塊的第一觸發(fā),將寫操作發(fā)送至源介質(zhì),根據(jù)快照生成模塊的第二觸發(fā),繼續(xù)監(jiān)控對源介質(zhì)的操作; 快照生成模塊,根據(jù)寫操作攜帶的寫數(shù)據(jù)地址,確定源介質(zhì)的影射頁,判斷其暫存的影射表中是否存在包含源介質(zhì)的影射頁的映射關(guān)系,如果存在,則輸出第一觸發(fā)至操作監(jiān)控模塊,否則,對源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù)進行拷貝,將拷貝后的數(shù)據(jù)寫入當前快照子數(shù)據(jù)區(qū)中的一個空的影射頁中,生成新的影射頁; 所述快照生成模塊將源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址對應的源介質(zhì)的影射頁,與當前快照子數(shù)據(jù)區(qū)中寫入拷貝后的數(shù)據(jù)的影射頁之間的映射關(guān)系,寫入當前快照子數(shù)據(jù)區(qū)保存的影射表及其暫存的影射表中; 所述快照生成模塊判斷當前快照子數(shù)據(jù)區(qū)包含的影射頁的數(shù)量是否達到預設的影射頁數(shù)量的最大值,或者判斷是否接收到由快照生成周期觸發(fā)生成的快照生成指令,如果是,將元數(shù)據(jù)包含的快照數(shù)量增1,將元數(shù)據(jù)包含的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息標注為已完成,清空其暫存的影射表,否則輸出第二觸發(fā)至操作監(jiān)控模塊。
15.一種利用生成的快照進行數(shù)據(jù)恢復的方法,其特征在于,該方法包括 根據(jù)數(shù)據(jù)恢復指令及生成快照的時間點,確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū); 生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中; 根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表; 利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中; 清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表及影射頁,刪除恢復影射表,更新元數(shù)據(jù)區(qū)。
16.根據(jù)權(quán)利要求15所述的方法,其特征在于,所述確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)包括 根據(jù)接收到的數(shù)據(jù)恢復指令,結(jié)束生成快照; 根據(jù)快照的時間點、快照生成周期及元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),由生成快照時的當前快照子數(shù)據(jù)區(qū),確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)。
17.根據(jù)權(quán)利要求15所述的方法,其特征在于,所述根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表包括 比較包含了相同源介質(zhì)的影射頁的映射關(guān)系所屬的快照子數(shù)據(jù)區(qū)對應的時間點,保留所屬的快照子數(shù)據(jù)區(qū)所對應的生成快照的時間點最早的一條映射關(guān)系,刪除其余的包含了相同源介質(zhì)的影射頁的映射關(guān)系,獲得更新后的恢復映射表。
18.根據(jù)權(quán)利要求15所述的方法,其特征在于,所述更新元數(shù)據(jù)區(qū)包含 將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的快照數(shù)量更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)生成之前的快照數(shù)量; 將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為已完成; 將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)之前生成的一個快照子數(shù)據(jù)區(qū)的起止地址。
19.一種利用生成的快照進行數(shù)據(jù)恢復的裝置,其特征在于,該裝置包含前述權(quán)利要求10至權(quán)利要求14任一所述的生成快照的裝置及恢復控制器; 所述恢復控制器根據(jù)數(shù)據(jù)恢復指令及生成快照的時間點,確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū),生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中,根據(jù)快照子數(shù)據(jù)區(qū)對應的時間點,更新恢復影射表; 所述恢復控制器利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中; 所述恢復控制器清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表及影射頁,刪除恢復影射表,更新元數(shù)據(jù)區(qū)。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述恢復控制器包含 快照恢復模塊,根據(jù)接收到的數(shù)據(jù)恢復指令,結(jié)束生成快照,根據(jù)快照的時間點、快照生成周期及元數(shù)據(jù)區(qū)保存的元數(shù)據(jù),由生成快照時的當前快照子數(shù)據(jù)區(qū),確定進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū); 所述快照恢復模塊生成一個空的恢復影射表,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中保存的影射表包含的映射關(guān)系寫入恢復影射表中; 所述快照恢復模塊比較包含了相同源介質(zhì)的影射頁的映射關(guān)系所屬的快照子數(shù)據(jù)區(qū)對應的時間點,保留所屬的快照子數(shù)據(jù)區(qū)所對應的生成快照的時間點最早的一條映射關(guān)系,刪除其余的包含了相同源介質(zhì)的影射頁的映射關(guān)系,獲得更新后的恢復映射表,輸出更新后的恢復影射表至更新模塊,并刪除更新后的恢復映射表; 更新模塊,利用更新后的恢復映射表中的映射關(guān)系,將進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子數(shù)據(jù)區(qū)中包含的影射頁所保存的數(shù)據(jù),寫入與其有映射關(guān)系的源介質(zhì)的影射頁中; 所述更新模塊清空進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)至當前快照子數(shù)據(jù)區(qū)的多個快照子 數(shù)據(jù)區(qū)中保存的影射表及影射頁,刪除恢復影射表,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的快照數(shù)量更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)生成之前的快照數(shù)量,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中的當前快照子數(shù)據(jù)區(qū)的狀態(tài)信息更新為已完成,將元數(shù)據(jù)區(qū)保存的元數(shù)據(jù)中當前快照子數(shù)據(jù)區(qū)的起止地址更新為進行數(shù)據(jù)恢復的快照子數(shù)據(jù)區(qū)之前生成的一個快照子數(shù)據(jù)區(qū)的起止地址。
全文摘要
本發(fā)明提供了一種生成快照的方法,包括A、監(jiān)控對源介質(zhì)的寫操作,判斷快照介質(zhì)包含的當前快照子數(shù)據(jù)區(qū)中是否存在與源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址匹配的影射頁,如果存在,則將寫操作發(fā)送至源介質(zhì),否則根據(jù)源介質(zhì)的寫操作攜帶的寫數(shù)據(jù)地址中記載的源數(shù)據(jù),在當前快照子數(shù)據(jù)區(qū)中生成一個新的影射頁,并更新當前快照子數(shù)據(jù)區(qū)保存的映射表及暫存的影射表;B、判斷是否滿足生成快照的觸發(fā)條件,如果是,執(zhí)行步驟C,否則執(zhí)行步驟A;C、更新快照介質(zhì)包含的元數(shù)據(jù)區(qū)中保存的元數(shù)據(jù),清空暫存的影射表。本發(fā)明還提供了一種生成快照的裝置。采用本發(fā)明的方法及裝置,能夠減少對存儲介質(zhì)的IO讀寫次數(shù),降低生成快照所耗費的時間,提高系統(tǒng)性能。
文檔編號G06F11/14GK102779080SQ20121020034
公開日2012年11月14日 申請日期2012年6月18日 優(yōu)先權(quán)日2012年6月18日
發(fā)明者葉佑群 申請人:上海愛數(shù)軟件有限公司