相一致,以表示在下一備份時刻,第一數(shù)據(jù)塊需要備份至備份端;或者,
[0063]如果M大于K,且,若第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽為上一備份周期的備份周期標識(如Tl),則說明第一數(shù)據(jù)塊在上一備份時刻之后、本次備份時刻之前發(fā)生過更新,因而,可將第一數(shù)據(jù)塊備份至備份端,并且,在備份完畢之后,更新源數(shù)據(jù)中的第一數(shù)據(jù)塊并將第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽設置為與該備份過程對應的備份周期的備份周期標識相一致,以表示在下一備份時刻,第一數(shù)據(jù)塊需要備份至備份端;或者,
[0064]如果M大于K,且,若第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽為本次備份過程對應的備份周期的備份周期標識(如T2),則說明第一數(shù)據(jù)塊在本次備份時刻之后已經(jīng)發(fā)生過更新,S卩,第一數(shù)據(jù)塊在本次備份過程中已不是首次更新,因而,可直接更新源數(shù)據(jù)中的第一數(shù)據(jù)塊,并保持第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽與該備份過程對應的備份周期的備份周期標識相一致,即,不對第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽進行更改。
[0065]需要說明的是,若寫請求針對的數(shù)據(jù)塊為多個,則針對每一數(shù)據(jù)塊,均可按照圖3所示的流程對其進行寫入處理,且,對該多個數(shù)據(jù)塊進行的寫入處理操作可串行或并行進行,此處不再贅述。
[0066]也就是說,在本發(fā)明所述實施例中,在源數(shù)據(jù)的備份過程中,當存在數(shù)據(jù)塊的寫請求時,可通過查詢當前的備份進度,將本次需要備份但尚未備份完畢的數(shù)據(jù)直接備份至備份端,并在備份完畢后再更新本地源數(shù)據(jù);將已備份完的數(shù)據(jù)或本次無需備份的數(shù)據(jù)直接更新本地源數(shù)據(jù),從而摒棄了快照,本地存儲從始至終都不需要有額外的存儲空間,從而節(jié)省了大量的存儲資源。
[0067]另外,需要說明的是,在源數(shù)據(jù)的備份過程中,若確定存在針對數(shù)據(jù)塊的寫請求時,整個源數(shù)據(jù)的備份操作可不中斷,即,對數(shù)據(jù)塊的更新操作以及對源數(shù)據(jù)的備份操作可并行運行,從而進一步降低對源數(shù)據(jù)業(yè)務的影響。例如,當前正在備份的數(shù)據(jù)塊為K數(shù)據(jù)塊,當前存在寫請求的數(shù)據(jù)塊為M數(shù)據(jù)塊,且,當前正在備份的數(shù)據(jù)塊的序列號K大于當前存在寫請求的數(shù)據(jù)塊的序列號M等時,則可同時執(zhí)行對數(shù)據(jù)塊K的備份以及對數(shù)據(jù)塊M的更新,對此不再贅述。
[0068]進一步地,所述方法還可包括:
[0069]在源數(shù)據(jù)的非備份過程中,若確定存在針對數(shù)據(jù)塊的寫請求,則更新該寫請求所針對的數(shù)據(jù)塊,并設置(或保持)該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽與該非備份過程對應的備份周期的備份周期標識相一致。
[0070]其中,源數(shù)據(jù)的非備份過程是指各備份周期內的、除了備份過程之外的時間段(具體可如圖2中所示),此處不再贅述。
[0071 ]例如,在源數(shù)據(jù)初始化完畢之后,當有數(shù)據(jù)寫入時,可將寫請求針對的數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽由設定的數(shù)據(jù)塊時間標簽初始值(如T-start)更改為與首次備份周期的備份周期標識(如T0)相一致的數(shù)值。另外,需要說明的是,如果在同一備份過程中,出現(xiàn)對該數(shù)據(jù)塊的再次寫入,則直接更新該數(shù)據(jù)塊即可,不需要再次更新該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽(即,可保持該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽為T0)。
[0072]進一步地,在源數(shù)據(jù)的非備份過程中,若確定存在針對數(shù)據(jù)塊的讀請求,則可直接讀取該讀請求所針對的數(shù)據(jù)塊,此處不再贅述。
[0073]例如,在第二備份時刻T2、第三備份時刻T3所限定的第三備份周期的非備份過程中,若存在針對源數(shù)據(jù)中的數(shù)據(jù)塊的讀寫請求,則可首先判斷其為讀請求還是寫請求,若為讀請求,則直接讀取該讀請求所針對的數(shù)據(jù)塊即可,若為寫請求,則可直接更新該數(shù)據(jù)塊,并將該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽設置為或保持為第三備份周期的備份周期標識(如T2等),以使得在下一備份時刻(如T3等)到來時,將該數(shù)據(jù)塊備份至備份端,具體可參見圖4所示的內容。
[0074]也就是說,在源數(shù)據(jù)的非備份過程中,本地源數(shù)據(jù)可實現(xiàn)正常的讀寫,若存在針對源數(shù)據(jù)中某一數(shù)據(jù)塊的寫請求,只需將該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽設置為與該非備份過程所對應的備份周期的備份周期標識相一致即可,且如果存在針對該數(shù)據(jù)塊的多次寫請求,也僅需在第一次寫請求時更新該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽即可,對此也不作贅述。
[0075]下面,將以一具體實例為例,對本發(fā)明實施例一中所述的增量備份方法進行詳細說明。
[0076]第一步:建立本地端與備份端的數(shù)據(jù)備份關系。
[0077]S卩,建立本地端的本地存儲設備與備份端的備份存儲設備之間的連接,以使得可將本地存儲設備中的源數(shù)據(jù)按照一定的周期備份至備份存儲設備中。其中,在實際使用中,可根據(jù)實際的需求來靈活設置備份的周期,即備份間隔。
[0078]其中,需要說明的是,本地存儲設備中存儲的數(shù)據(jù)可來自于業(yè)務服務器等根據(jù)實際需求生成的數(shù)據(jù)內容,這些數(shù)據(jù)內容可通過遠程備份系統(tǒng)備份至遠端的備份存儲設備中。當本地存儲設備發(fā)生故障、或自然災害等導致本地數(shù)據(jù)丟失時,如果沒有遠端的備份存儲設備,業(yè)務數(shù)據(jù)將會丟失,可能會對企業(yè)等產(chǎn)生不可估量的損失。如果存在遠端的備份存儲設備,可在本地重新部署后,通過備份存儲設備,將業(yè)務數(shù)據(jù)重新恢復至本地,從而能夠保證業(yè)務處理的不中斷以及業(yè)務數(shù)據(jù)不丟失。
[0079]進一步地,需要說明的是,所述本地存儲設備以及備份存儲設備均可為磁盤陣列,或者普通服務器等。另外,本地存儲設備和備份存儲設備可通過備份鏈路連接,且可相互訪問存儲的數(shù)據(jù),其中,備份鏈路可為專有、且獨立的鏈路,如IB( Inf iniband,無限帶寬技術)、FC(Fibre Channel,光纖通道)網(wǎng)絡等,也可為公有鏈路,如IP(Internet Protocol,網(wǎng)絡之間互連的協(xié)議)網(wǎng)絡等。
[0080]再有,需要說明的是,本地存儲設備與備份存儲設備之間的物理空間位置可根據(jù)實際情況靈活設置,即,可以相距很近,也可以相距很遠。
[0081]第二步,將本地存儲設備中的源數(shù)據(jù)劃分為多個數(shù)據(jù)塊。
[0082]可選地,可按照固定處理單元將本地源數(shù)據(jù)劃分為多個數(shù)據(jù)塊,以便后續(xù)可按順序處理這多個數(shù)據(jù)塊。
[0083]第三步,數(shù)據(jù)備份。
[0084]首先,在TO時刻(即首次備份時刻),初始化系統(tǒng),即,將本地源數(shù)據(jù)全盤備份至備份端,并在備份完畢之后,將所有數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽設置為T-start。
[0085]在TO時刻之后、且Tl時刻之前,若存在針對某一數(shù)據(jù)塊的寫請求,則設置該數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽為T0,以表示在Tl時刻到來時,需要將該數(shù)據(jù)塊備份至備份端。
[0086]在Tl時刻,按照順序處理源數(shù)據(jù)中的各個數(shù)據(jù)塊,并根據(jù)各數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽,判斷是否需要將其備份至備份端。如,針對任一數(shù)據(jù)塊,若確定其數(shù)據(jù)塊時間標簽為T0,則將該數(shù)據(jù)塊備份至備份端,若確定其數(shù)據(jù)塊時間標簽為T-start,則說明該數(shù)據(jù)塊在TO時刻之后、Tl時刻之前未發(fā)生過更新,因而,不需要備份至備份端。
[0087]另外,在Tl時刻所對應的備份過程中,S卩Tl時刻、T2時刻所限定的備份周期(即第二備份周期)的備份過程中,若存在針對某一數(shù)據(jù)塊的寫請求,則判斷該寫請求所針對的第一數(shù)據(jù)塊在源數(shù)據(jù)中的處理序號M與當前正在備份的第二數(shù)據(jù)塊在源數(shù)據(jù)中的處理序號K的大小:
[0088]若確定M小于K,則直接更新第一數(shù)據(jù)塊,并將第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽設置為Tl;
[0089]若確定M等于K,則在第一數(shù)據(jù)塊備份完畢之后,更新第一數(shù)據(jù)塊,并設置第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽為Tl;
[0090]若確定M大于K,則可根據(jù)第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽的取值來執(zhí)行相應的操作,若確定第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽的取值為T-start,則直接更新第一數(shù)據(jù)塊,并設置第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽為Tl;若確定第一數(shù)據(jù)塊的數(shù)據(jù)塊時間標簽的取值為T0,則將第一數(shù)據(jù)塊備份至備份端,并在備份完