一種數(shù)據(jù)鏡像時保證業(yè)務有效性的方法和裝置的制造方法
【技術(shù)領域】
[0001]本發(fā)明涉及存儲技術(shù)領域,尤其涉及數(shù)據(jù)鏡像時保證業(yè)務有效性的方法和裝置。
【背景技術(shù)】
[0002]存儲中的一種鏡像技術(shù)建立在多個物理資源之上的卷資源中,一個資源(鏡像資源)作為另外一個資源(主資源)精確、完整的副本,并在主盤故障時將業(yè)務無縫切換至鏡像盤(鏡像頂替),確保將物理磁盤發(fā)生故障所引起的停機時間降到最少,從而為存儲網(wǎng)絡提供高可用性。新創(chuàng)建的基于卷資源的鏡像在鏡像關(guān)系建立后,需要進行一次主資源到鏡像資源的所有數(shù)據(jù)完全同步,以保證兩資源的數(shù)據(jù)一致。只有在鏡像資源和主資源完全一致時(稱為已同步狀態(tài)),鏡像資源才能在主資源失效時,頂替主資源提供服務(鏡像頂替)。
[0003]當主資源跟鏡像資源已完成同步時,如果上層業(yè)務讀寫主資源失敗,會觸發(fā)鏡像頂替,轉(zhuǎn)由鏡像資源提供業(yè)務讀寫;當主資源和鏡像資源還未完成同步時,則不滿足鏡像頂替條件,主資源讀寫失敗時業(yè)務會直接報錯。具體地,鏡像未達到已同步狀態(tài)時,主資源寫失敗則業(yè)務直接返回失敗,不管鏡像資源是否寫成功,數(shù)據(jù)是否可用。后續(xù)在同步未完成時,業(yè)務讀取前述寫失敗的數(shù)據(jù),由于無法讀鏡像資源,主資源會直接返錯;后續(xù)即使在同步完成之后,業(yè)務讀該部分數(shù)據(jù)時,因為之前寫失敗了,不論讀主資源或者鏡像資源都會返回錯誤。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種數(shù)據(jù)鏡像時保證業(yè)務有效性的方法和裝置。
[0005]該數(shù)據(jù)鏡像時保證業(yè)務有效性的方法包括:設置記錄鏡像資源數(shù)據(jù)有效性標識的表項;初始時,每一條表項均記錄鏡像資源數(shù)據(jù)無效的無效標識;在鏡像資源和主資源同步過程中,上層業(yè)務下發(fā)第一寫10,如果該第一寫1在寫主資源失敗且寫鏡像資源成功時,將該第一寫1在鏡像資源的對應數(shù)據(jù)區(qū)中寫入的數(shù)據(jù)的標識置為有效標識,且向上層業(yè)務返回成功;在鏡像資源和主資源同步過程中,當上層業(yè)務下發(fā)讀1時,判斷該讀1對應的鏡像資源中的數(shù)據(jù)的標識是否為有效標識,如果是,則讀取鏡像資源中的該數(shù)據(jù),否則,讀取主資源中的對應數(shù)據(jù)。
[0006]優(yōu)選地,在鏡像資源和主資源同步過程中,上層業(yè)務下發(fā)第二寫10,如果該第二寫1待寫的數(shù)據(jù)區(qū)與第一寫1待寫的數(shù)據(jù)區(qū)相同時,若該第二寫1寫主資源成功,則清除第一寫1在鏡像資源中寫入的數(shù)據(jù)的有效標識。
[0007]優(yōu)選地,主資源中的某一數(shù)據(jù)在同步到鏡像資源對應數(shù)據(jù)區(qū)時,如果所述鏡像資源對應數(shù)據(jù)區(qū)中的數(shù)據(jù)的標識為有效標識,則禁止將主資源中的該數(shù)據(jù)同步到鏡像資源中。
[0008]優(yōu)選地,在鏡像資源和主資源同步完成時,若之前同步過程中上層業(yè)務下發(fā)的每一個寫1寫鏡像資源均成功,則判斷所述表項是否存在有效標識,如果存在,則觸發(fā)鏡像頂替。
[0009]優(yōu)選地,鏡像頂替完成后,將新的鏡像資源標記為未同步狀態(tài),或者將新的鏡像資源之前寫失敗的數(shù)據(jù)區(qū)中的數(shù)據(jù)標記為無效。
[0010]該數(shù)據(jù)鏡像時保證業(yè)務有效性的裝置包括:表項設置單元,用于設置記錄鏡像資源數(shù)據(jù)有效性標識的表項;初始時,每一條表項均記錄鏡像資源數(shù)據(jù)無效的無效標識;標識記錄單元,用于在鏡像資源和主資源同步過程中,上層業(yè)務下發(fā)第一寫10,如果該第一寫1在寫主資源失敗且寫鏡像資源成功時,將該第一寫1在鏡像資源的對應數(shù)據(jù)區(qū)中寫入的數(shù)據(jù)的標識置為有效標識,且向上層業(yè)務返回成功;數(shù)據(jù)讀取單元,用于在鏡像資源和主資源同步過程中,當上層業(yè)務下發(fā)讀1時,判斷該讀1對應的鏡像資源中的數(shù)據(jù)的標識是否為有效標識,如果是,則讀取鏡像資源中的該數(shù)據(jù),否則,讀取主資源中的對應數(shù)據(jù)。
[0011]優(yōu)選地,該標識記錄單元,還用于在鏡像資源和主資源同步過程中,上層業(yè)務下發(fā)第二寫10,如果該第二寫1待寫的數(shù)據(jù)區(qū)與第一寫1待寫的數(shù)據(jù)區(qū)相同時,若該第二寫1寫主資源成功,則清除第一寫1在鏡像資源中寫入的數(shù)據(jù)的有效標識。
[0012]優(yōu)選地,所述裝置還包括:數(shù)據(jù)同步單元,用于主資源中的某一數(shù)據(jù)在同步到鏡像資源對應數(shù)據(jù)區(qū)時,如果所述鏡像資源對應數(shù)據(jù)區(qū)中的數(shù)據(jù)的標識為有效標識,則禁止將主資源中的該數(shù)據(jù)同步到鏡像資源中。
[0013]優(yōu)選地,所述裝置還包括:鏡像頂替單元,用于在鏡像資源和主資源同步完成時,若之前同步過程中上層業(yè)務下發(fā)的每一個寫1寫鏡像資源均成功,則判斷所述表項是否存在有效標識,如果存在,則觸發(fā)鏡像頂替。
[0014]優(yōu)選地,所述標識記錄單元,還用于鏡像頂替完成后,將新的鏡像資源標記為未同步狀態(tài),或者將新的鏡像資源之前寫失敗的數(shù)據(jù)區(qū)中的數(shù)據(jù)標記為無效。
[0015]相較于現(xiàn)有技術(shù),本發(fā)明的方案實現(xiàn)了同步過程中,上層業(yè)務寫主資源失敗寫鏡像資源成功情況下,上層業(yè)務成功讀取任何數(shù)據(jù)的可能性。這樣就能保證業(yè)務的持續(xù)性和有效性,避免了鏡像資源備份數(shù)據(jù)的功能盲區(qū)。
【附圖說明】
[0016]圖1是本發(fā)明一種存儲設備的基礎硬件架構(gòu)圖。
[0017]圖2是本發(fā)明實施例裝置的邏輯結(jié)構(gòu)圖。
[0018]圖3是本發(fā)明實施例一種記錄鏡像資源數(shù)據(jù)有效性標識的表項圖。
[0019]圖4是本發(fā)明實施例有效性標識表項內(nèi)容變換圖。
【具體實施方式】
[0020]針對【背景技術(shù)】中提到的技術(shù)問題,本發(fā)明提供一種數(shù)據(jù)鏡像過程中保證業(yè)務有效性的方案。以下通過具體實施例詳細說明。
[0021]圖1所示為本發(fā)明一種存儲設備的基礎硬件架構(gòu)。本發(fā)明實施例在此硬件架構(gòu)的基礎上可以通過計算機程序來實現(xiàn)。請參圖2,在計算機程序?qū)崿F(xiàn)的實施例中,本發(fā)明的數(shù)據(jù)鏡像過程中保證業(yè)務有效性裝置邏輯上包括以下單元:表項設置單元、標識記錄單元和數(shù)據(jù)讀取單元。其中,表項設置單元,用于設置記錄鏡像資源數(shù)據(jù)有效性標識的表項;初始時,每一條表項均記錄鏡像資源數(shù)據(jù)無效的無效標識。標識記錄單元,用于在鏡像資源和主資源同步過程中,上層業(yè)務下發(fā)第一寫10,如果該第一寫1在寫主資源失敗且寫鏡像資源成功時,將該第一寫1在鏡像資源的對應數(shù)據(jù)區(qū)中寫入的數(shù)據(jù)的標識置為有效標識,且向上層業(yè)務返回成功。數(shù)據(jù)讀取單元,用于在鏡像資源和主資源同步過程中,當上層業(yè)務下發(fā)讀1時,判斷該讀1對應的鏡像資源中的數(shù)據(jù)的標識是否為有效標識,如果是,則讀取鏡像資源中的該數(shù)據(jù),否則,讀取主資源中的對應數(shù)據(jù)。進一步地,本發(fā)明實施例的裝置還包括數(shù)據(jù)同步單元和鏡像頂替單元。這兩個單元在本發(fā)明實施例中的功能請參下文詳細描述。
[0022]記錄鏡像資源數(shù)據(jù)有效性標識的每一條表項指向鏡像資源的某一數(shù)據(jù)區(qū)(數(shù)據(jù)區(qū)為存儲數(shù)據(jù)的空間),如果表項中記錄的標識為有效,則表示對應的數(shù)據(jù)區(qū)中的數(shù)據(jù)有效。每條表項所指向的數(shù)據(jù)區(qū)的大小可以自行設置,比如說可以設置為16(MB)。如果鏡像資源總的大小為N(MB),則需要的表項數(shù)目M = N/16。初始時,每個表項中填入的都是無效標識。請參圖3給出的記錄鏡像資源數(shù)據(jù)有效性標識的表項。其中,填入I的表項表示其指向的鏡像資源數(shù)據(jù)區(qū)中的數(shù)據(jù)有效,填入O的表項表示其指向的鏡像資源數(shù)據(jù)區(qū)中的數(shù)據(jù)無效。當然,這里的O和I僅是一種舉例。
[0023]在鏡像同步開始后,主資源中的數(shù)據(jù)將依次被同步到鏡像資源中。在該同步過程中,上層業(yè)務會存在讀寫數(shù)據(jù)的需求。對于寫10,需要在主資源和鏡像資源中對應的數(shù)據(jù)區(qū)都寫入數(shù)據(jù)。對于讀10,通常都是讀主資源對應數(shù)據(jù)區(qū)的數(shù)據(jù)。在主資源和鏡像資源數(shù)據(jù)同步過程中,上層業(yè)務下發(fā)一個寫10,該寫1在寫入主資源數(shù)據(jù)區(qū)和鏡像資源數(shù)據(jù)區(qū)時,出現(xiàn)了寫主資源失敗,但是寫鏡像資源成功的情況,此時可以將標識鏡像資源數(shù)據(jù)有效的表項置為1,并向上層業(yè)務返回成功。請參圖4的一個例子,初始時