本發(fā)明涉及存儲災(zāi)備技術(shù)領(lǐng)域,特別涉及一種鏡像文件復(fù)制的方法裝置。
背景技術(shù):
超融合一體機是將虛擬化管理軟件、虛擬存儲、虛擬網(wǎng)絡(luò)等基礎(chǔ)部件融合到一起,采用標(biāo)準(zhǔn)X86服務(wù)器硬件承載虛擬化管理軟件、虛擬存儲、虛擬網(wǎng)絡(luò)等軟件的IT基礎(chǔ)設(shè)施部件。超融合一體機存儲采用分布式存儲構(gòu)架,使用前需要先組建集群,集群中所有一體機的物理磁盤被虛擬成存儲資源池,再向虛擬化管理軟件提供存儲服務(wù)。通過虛擬化管理軟件,可以讓虛擬機共享同一臺物理計算機,但對虛擬機來說,它運行在虛擬化管理軟件模擬出來的硬件系統(tǒng)里面,好像自己獨占了整個計算機一樣??偠灾诤弦惑w機幫助企業(yè)減少了IT基礎(chǔ)設(shè)施在部署過程中需要耗費大量時間和資源的“體力勞動”,也為云平臺、數(shù)據(jù)分析系統(tǒng)等創(chuàng)新應(yīng)用在企業(yè)中的部署提供了部署更簡便、擴展更平滑的解決方案。
對于IT領(lǐng)域而言,為了防止出現(xiàn)操作失誤、系統(tǒng)故障自然災(zāi)害導(dǎo)致數(shù)據(jù)丟失的情況,一般情況下,需要進行數(shù)據(jù)災(zāi)備,以最終達(dá)到系統(tǒng)高可靠,業(yè)務(wù)高連續(xù)性,數(shù)據(jù)高可用等目的。在超融合一體機中,鏡像文件復(fù)制是將生產(chǎn)中心的虛擬機鏡像文件復(fù)制到災(zāi)備中心的信息存儲過程,以達(dá)到數(shù)據(jù)容災(zāi)備份和提高數(shù)據(jù)可靠性的目的。
為了消除鏡像文件復(fù)制對超融合一體機業(yè)務(wù)的影響,在鏡像文件復(fù)制過程中,生產(chǎn)中心使用快照技術(shù)來保障其業(yè)務(wù)的持續(xù)運行,從而減小鏡像文件復(fù)制對超融合一體機系統(tǒng)業(yè)務(wù)正常運行的影響。這里快照的主要作用是為災(zāi)備中心提供了一個鏡像文件數(shù)據(jù)訪問通道,當(dāng)生產(chǎn)中心在I/O業(yè)務(wù)正常運行的同時,災(zāi)備中心可以訪問快照數(shù)據(jù)實現(xiàn)鏡像文件復(fù)制?,F(xiàn)有的快照主要有寫時拷貝(Copy On Write,COW)和I/O重定向(I/O Redirect)兩種。
現(xiàn)有這些基于快照技術(shù)的鏡像文件復(fù)制技術(shù)均存在問題與不足,例如,寫時拷貝技術(shù)影響了上層業(yè)務(wù)的寫操作運行,或者說針對寫密集型的業(yè)務(wù)影響非常大,為生產(chǎn)中心的每次寫操作增加了一次寫操作,這增加了系統(tǒng)的寫操作延遲,同時也為鏡像文件復(fù)制帶來了磁盤隨機訪問的開銷;而I/O重定向則對讀密集型的業(yè)務(wù)影響非常大,因為寫操作請求被寫到另外一片存儲空間,那么每次讀請求需要查找其數(shù)據(jù)是否被重定向,原本可能順序的讀請求操作變成了磁盤隨機訪問,這樣增加了系統(tǒng)上層業(yè)務(wù)的響應(yīng)時間,此外,鏡像文件復(fù)制結(jié)束后還需要額外合并I/O重定向的數(shù)據(jù),這也增加了對上層業(yè)務(wù)的影響。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種鏡像文件復(fù)制的方法裝置,避免了基于傳統(tǒng)快照的鏡像文件復(fù)制技術(shù)對上層業(yè)務(wù)的影響,增加寫操作延遲或者上層業(yè)務(wù)響應(yīng)時間的問題。
第一方面,本申請實施例提供一種鏡像文件復(fù)制的方法,所述方法應(yīng)用于災(zāi)備系統(tǒng)中的生產(chǎn)中心,所述災(zāi)備系統(tǒng)還包括災(zāi)備中心,所述生產(chǎn)中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位向災(zāi)備中心發(fā)送鏡像文件復(fù)制數(shù)據(jù),所述方法包括:
在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制時,獲取當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置信息;
若接收到對所述鏡像文件的寫請求,且所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則直接執(zhí)行所述寫請求,若所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,則執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中;
在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制完成時,將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心,并形成一個鏡像文件復(fù)制的有效快照。
可選的,所述方法還包括:
若所述寫請求開始的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,且所述寫請求結(jié)束的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則對大于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求;對小于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中。
可選的,在所述接收到對所述鏡像文件的寫請求之后,所述方法還包括:
加鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值時,直接執(zhí)行所述寫請求之后,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值時,執(zhí)行所述寫請求之前,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量。
可選的,所述方法還包括:
在所述將寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心時,繼續(xù)進行寫請求日志的記錄,在開始所述將寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心之前已保存的寫請求日志的數(shù)據(jù)傳輸完成時,發(fā)送開始寫請求日志的數(shù)據(jù)傳輸之后保存的寫請求日志數(shù)據(jù)。
第二方面,本申請?zhí)峁┮环N鏡像文件復(fù)制的方法,所述方法應(yīng)用于災(zāi)備系統(tǒng)中的災(zāi)備中心,所述災(zāi)備系統(tǒng)還包括生產(chǎn)中心,所述災(zāi)備中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位接收生產(chǎn)中心進行鏡像文件復(fù)制發(fā)送的數(shù)據(jù),所述方法包括:
接收所述生產(chǎn)中心發(fā)送的鏡像文件數(shù)據(jù)塊;
將所述鏡像文件數(shù)據(jù)塊寫入預(yù)先創(chuàng)建的鏡像文件中;
在所述鏡像文件復(fù)制完成時,接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù);
根據(jù)所述寫請求日志數(shù)據(jù),在所述鏡像文件中執(zhí)行寫請求操作,重放寫請求日志。
可選的,所述根據(jù)寫請求日志數(shù)據(jù),在所述鏡像文件中執(zhí)行寫請求操作,包括:
依次獲取所述寫請求日志數(shù)據(jù)中的每個寫請求操作數(shù)據(jù);
在所述鏡像文件中,執(zhí)行每個寫請求操作數(shù)據(jù)對應(yīng)的寫請求操作。
可選的,所述方法還包括:
在接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù)之后,繼續(xù)接收所述生產(chǎn)中心發(fā)送的迭代日志數(shù)據(jù)。
第三方面,本申請?zhí)峁┮环N鏡像文件復(fù)制的裝置,所述裝置應(yīng)用于災(zāi)備系統(tǒng)中的生產(chǎn)中心,所述災(zāi)備系統(tǒng)還包括災(zāi)備中心,所述生產(chǎn)中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位向災(zāi)備中心發(fā)送鏡像文件復(fù)制數(shù)據(jù),所述裝置包括:
獲取單元,用于在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制時,獲取當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置信息;
寫請求處理單元,用于若接收到對所述鏡像文件的寫請求,且所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則直接執(zhí)行所述寫請求,若所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,則執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中;
日志傳輸單元,用于在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制完成時,將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心,并形成一個鏡像文件復(fù)制的有效快照。
可選的,所述寫請求處理單元還用于:
若所述寫請求開始的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,且所述寫請求結(jié)束的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則對大于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求;對小于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中。
可選的,所述裝置還包括加鎖單元,所述加鎖單元用于:
在所述接收到對所述鏡像文件的寫請求之后,加鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值時,直接執(zhí)行所述寫請求之后,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值時,執(zhí)行所述寫請求之前,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量。
可選的,所述寫請求處理單元還用于在將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心時,繼續(xù)進行寫請求日志的記錄;
所述日志傳輸單元還用于在開始將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心之前已保存的寫請求日志的數(shù)據(jù)傳輸完成時,發(fā)送開始寫請求日志的數(shù)據(jù)傳輸之后保存的寫請求日志數(shù)據(jù)。
第四方面,本申請還提供一種鏡像文件復(fù)制的裝置,所述裝置應(yīng)用于災(zāi)備系統(tǒng)中的災(zāi)備中心,所述災(zāi)備系統(tǒng)還包括生產(chǎn)中心,所述災(zāi)備中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位接收生產(chǎn)中心進行鏡像文件復(fù)制發(fā)送的數(shù)據(jù),所述裝置包括:
鏡像文件接收單元,用于接收所述生產(chǎn)中心發(fā)送的鏡像文件數(shù)據(jù)塊;
寫入單元,用于將所述鏡像文件數(shù)據(jù)塊寫入預(yù)先創(chuàng)建的鏡像文件中;
日志接收單元,用于在所述鏡像文件復(fù)制完成時,接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù);
執(zhí)行單元,用于根據(jù)所述寫請求日志數(shù)據(jù),在所述鏡像文件中執(zhí)行寫請求操作,重放寫請求日志。
可選的,所述執(zhí)行單元具體用于:
依次獲取所述寫請求日志數(shù)據(jù)中的每個寫請求操作數(shù)據(jù);
在所述鏡像文件中,執(zhí)行每個寫請求操作數(shù)據(jù)對應(yīng)的寫請求操作。
可選的,所述日志接收單元還用于在接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù)之后,繼續(xù)接收所述生產(chǎn)中心發(fā)送的迭代日志數(shù)據(jù)。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
本發(fā)明實施例生產(chǎn)中心的讀寫請求正常運行,災(zāi)備中心也是正常順序讀取鏡像文件數(shù)據(jù),通過判斷獲取的寫請求的位置與當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置對應(yīng)的數(shù)值的關(guān)系,判斷是否需要記錄相應(yīng)的寫請求到寫請求日志中,鏡像文件的已經(jīng)復(fù)制過去的(含正在復(fù)制的)區(qū)域,將新來的寫請求記入寫請求日志;等鏡像文件復(fù)制完成,再進行寫請求日志復(fù)制到災(zāi)備中心,這樣才形成一次完整的鏡像文件復(fù)制。本發(fā)明實施例在鏡像文件復(fù)制過程中對上層I/O請求操作影響極低,僅僅對已經(jīng)復(fù)制的區(qū)域的寫請求,進行寫請求日志記錄;同時,由于僅對已經(jīng)復(fù)制的區(qū)域進行寫請求日志記錄,減少了最后操作接近一半的日志復(fù)制操作,提高了鏡像文件復(fù)制的效率,同時維持了一個鏡像文件復(fù)制的有效快照。
附圖說明
圖1是本發(fā)明實施例中災(zāi)備系統(tǒng)的一個架構(gòu)示意圖;
圖2是本發(fā)明實施例中鏡像文件復(fù)制的方法的一個實施例示意圖;
圖3是本發(fā)明實施例中目標(biāo)位置與寫請求位置比對實施例示意圖;
圖4是本發(fā)明實施例中同步復(fù)制時間軸實施例示意圖;
圖5是本發(fā)明實施例中異步復(fù)制時間軸實施例示意圖;
圖6是本發(fā)明實施例中鏡像文件復(fù)制的方法的另一個實施例示意圖;
圖7是本發(fā)明實施例中鏡像文件復(fù)制的裝置的一個實施例示意圖;
圖8是本發(fā)明實施例中鏡像文件復(fù)制的方法的另一個實施例示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的實施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
下面首先對本發(fā)明實施例中部分涉及到的技術(shù)進行簡單介紹。
超融合一體機:將虛擬化管理軟件、虛擬存儲、虛擬網(wǎng)絡(luò)等基礎(chǔ)部件融合到一起,采用標(biāo)準(zhǔn)X86服務(wù)器硬件承載虛擬化管理軟件、虛擬存儲、虛擬網(wǎng)絡(luò)等軟件的IT基礎(chǔ)設(shè)施部件。存儲采用分布式存儲構(gòu)架,使用前需要先組建集群,集群中所有一體機的物理磁盤被虛擬成存儲資源池,再向虛擬化管理軟件提供存儲服務(wù)。其中關(guān)鍵的技術(shù)有Hypervisor,即虛擬化管理程序,能夠?qū)⒁慌_物理的計算機模擬成多臺虛擬的計算機,并在虛擬化的環(huán)境里面運行操作系統(tǒng)的軟件。通過虛擬化管理軟件,可以讓虛擬機共享同一臺物理計算機,但對虛擬機來說,它運行在虛擬化管理軟件模擬出來的硬件系統(tǒng)里面,好像自己獨占了整個計算機一樣??偠灾?,超融合一體機幫助企業(yè)減少了IT基礎(chǔ)設(shè)施在部署過程中需要耗費大量時間和資源的“體力勞動”,也為云平臺、數(shù)據(jù)分析系統(tǒng)等創(chuàng)新應(yīng)用在企業(yè)中的部署提供了部署更簡便、擴展更平滑的解決方案。
數(shù)據(jù)災(zāi)備:數(shù)據(jù)災(zāi)備全稱為數(shù)據(jù)災(zāi)難備份,是指為防止出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全系統(tǒng)或部分?jǐn)?shù)據(jù)集合,從應(yīng)用主機的硬盤或陣列復(fù)制到其他存儲介質(zhì)的過程。現(xiàn)階段數(shù)據(jù)災(zāi)備主要采用兩地三中心災(zāi)備方案,兩地是指同城、異地,三中心是指生產(chǎn)中心、同城容災(zāi)中心、異地容災(zāi)中心。其中同城雙中心是指在同城或鄰近城市建立兩個可獨立承擔(dān)關(guān)鍵系統(tǒng)運行的數(shù)據(jù)中心,雙中心具備基本等同的業(yè)務(wù)處理能力并通過高速鏈路實時同步數(shù)據(jù),日常情況下可同時分擔(dān)業(yè)務(wù)及管理系統(tǒng)的運行,并可切換運行;災(zāi)難情況下可在基本不丟失數(shù)據(jù)的情況下進行災(zāi)備應(yīng)急切換,保持業(yè)務(wù)連續(xù)運行。與異地災(zāi)備模式相比較,同城雙中心具有投資成本低、建設(shè)速度快、運維管理相對簡單、可靠性更高等優(yōu)點。異地災(zāi)備中心是指在異地的城市建立一個備份的災(zāi)備中心,用于雙中心的數(shù)據(jù)備份,當(dāng)雙中心出現(xiàn)自然災(zāi)害等原因而發(fā)生故障時,異地災(zāi)備中心可以用備份數(shù)據(jù)進行業(yè)務(wù)的恢復(fù),以最終達(dá)到系統(tǒng)高可靠、業(yè)務(wù)高連續(xù)性、數(shù)據(jù)高可用等目的。
容災(zāi)系統(tǒng):對于IT而言,就是為計算機信息系統(tǒng)提供的一個能應(yīng)付各種災(zāi)難的環(huán)境。當(dāng)計算機系統(tǒng)在遭受如火災(zāi)、水災(zāi)、地震、戰(zhàn)爭等不可抗拒的自然災(zāi)難以及計算機犯罪、計算機病毒、掉電、網(wǎng)絡(luò)/通信失敗、硬件/軟件錯誤和人為操作錯誤等人為災(zāi)難時,容災(zāi)系統(tǒng)將保證用戶數(shù)據(jù)的安全性(數(shù)據(jù)容災(zāi)),甚至,一個更加完善的容災(zāi)系統(tǒng),還能提供不間斷的應(yīng)用服務(wù)(應(yīng)用容災(zāi))??梢哉f,容災(zāi)系統(tǒng)是數(shù)據(jù)災(zāi)備的最高層次。
存儲快照:關(guān)于指定數(shù)據(jù)集合的一個完全可用拷貝,該拷貝包括相應(yīng)數(shù)據(jù)在某個時間點(拷貝開始的時間點)的映像。快照可以是其所表示的數(shù)據(jù)的一個副本,也可以是數(shù)據(jù)的一個復(fù)制品??煺盏淖饔弥饕悄軌蜻M行在線數(shù)據(jù)備份與恢復(fù)。當(dāng)存儲設(shè)備發(fā)生應(yīng)用故障或者文件損壞時可以進行快速的數(shù)據(jù)恢復(fù),將數(shù)據(jù)恢復(fù)某個可用的時間點的狀態(tài)??煺盏牧硪粋€作用是為存儲用戶提供了另外一個數(shù)據(jù)訪問通道,當(dāng)原數(shù)據(jù)進行在線應(yīng)用處理時,用戶可以訪問快照數(shù)據(jù),還可以利用快照進行測試等工作?,F(xiàn)有的快照主要有寫時拷貝和IO重定向兩種。
鏡像文件復(fù)制:在超融合一體機中,鏡像文件復(fù)制是將生產(chǎn)中心的虛擬機鏡像文件復(fù)制到災(zāi)備中心的信息存儲過程,以達(dá)到數(shù)據(jù)容災(zāi)備份和提高數(shù)據(jù)可靠性的目的。為了消除鏡像文件復(fù)制對超融合一體機業(yè)務(wù)的影響,在鏡像文件復(fù)制過程中,生產(chǎn)中心使用快照技術(shù)來保障其業(yè)務(wù)的持續(xù)運行,從而減小鏡像文件復(fù)制對超融合一體機系統(tǒng)業(yè)務(wù)正常運行的影響。
下面介紹本發(fā)明實施例中具體內(nèi)容。
如圖1所示,本發(fā)明實施例應(yīng)用于災(zāi)備系統(tǒng),該災(zāi)備系統(tǒng)包括生產(chǎn)中心和至少一個災(zāi)備中心,生產(chǎn)中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位向災(zāi)備中心發(fā)送鏡像文件復(fù)制數(shù)據(jù),其中,鏡像文件復(fù)制的基本單元是數(shù)據(jù)塊,大小可以根據(jù)具體情況自行調(diào)整,例如為2MB,在帶寬資源滿足的情況下,還可以是5M、10M、50M等。
請參閱圖2,本發(fā)明實施例中鏡像文件復(fù)制的方法一個實施例包括:
201、在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制時,獲取當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置信息;
202、若接收到對所述鏡像文件的寫請求,且所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則直接執(zhí)行所述寫請求,若所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,則執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中;
203、在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制完成時,將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心,并形成一個鏡像文件復(fù)制的有效快照。
本發(fā)明實施例生產(chǎn)中心的讀寫請求正常運行,災(zāi)備中心也是正常順序讀取鏡像文件數(shù)據(jù),通過判斷獲取的寫請求的位置與當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置對應(yīng)的數(shù)值的關(guān)系,判斷是否需要記錄相應(yīng)的寫請求到寫請求日志中,鏡像文件的已經(jīng)復(fù)制過去的(含正在復(fù)制的)區(qū)域,將新來的寫請求記入寫請求日志;等鏡像文件復(fù)制完成,再進行寫請求日志復(fù)制到災(zāi)備中心,這樣才形成一次完整的鏡像文件復(fù)制。本發(fā)明實施例在鏡像文件復(fù)制過程中幾乎不對上層I/O請求操作造成影響,僅僅對已經(jīng)復(fù)制的區(qū)域的寫請求,進行一次寫請求日志記錄;同時,由于僅對已經(jīng)復(fù)制的區(qū)域進行寫請求日志記錄,減少了最后操作接近一半的日志復(fù)制操作。
并且本發(fā)明實施例中鏡像文件復(fù)制的快照點已經(jīng)延遲到了鏡像文件傳輸完畢的時間點,而傳統(tǒng)的鏡像文件復(fù)制的快照點是鏡像文件傳輸開始的時間點。保證了鏡像文件復(fù)制的及時性,提高了鏡像文件復(fù)制的效率。
可選的,所述方法還包括:
若所述寫請求開始的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,且所述寫請求結(jié)束的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則對大于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求;對小于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中。
如圖3所示,標(biāo)識數(shù)據(jù)塊的位置為當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置。若寫請求在該目標(biāo)位置的之前(本發(fā)明實施例通過數(shù)據(jù)塊位置進行判斷,例如寫請求開始的位置與目標(biāo)位置對應(yīng)的數(shù)值對比,該數(shù)值可以是數(shù)據(jù)塊的編號,如1、2、3、……,從小到大,數(shù)據(jù)塊1的位置在數(shù)據(jù)塊2的位置之前),直接執(zhí)行所述寫請求,若所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,則執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中。若所述寫請求開始的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,且所述寫請求結(jié)束的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則對大于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求;對小于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中。
可選的,在所述接收到對所述鏡像文件的寫請求之后,所述方法還包括:
加鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值時,直接執(zhí)行所述寫請求之后,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值時,執(zhí)行所述寫請求之前,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量。
具體的,將目標(biāo)位置設(shè)為變量CUR,生產(chǎn)中心的寫請求則按區(qū)域劃分進行,這個時候先加鎖變量CUR:
若寫請求的起始位置大于CUR,正常執(zhí)行寫請求,然后解鎖CUR。
若寫請求的結(jié)束位置小于CUR,解鎖CUR,執(zhí)行寫請求,將寫請求數(shù)據(jù)記入寫請求日志。
若寫請求范圍跨越CUR,將寫請求按照CUR位置拆分成兩部分,對于大于CUR區(qū)域的寫請求,執(zhí)行寫請求,解鎖CUR;對于小于CUR區(qū)域的寫請求,解鎖CUR,執(zhí)行寫請求,并將寫請求數(shù)據(jù)記入寫請求日志。
可選的,所述方法還包括:
在所述將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心時,繼續(xù)進行寫請求日志的記錄,在開始所述將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心之前已保存的寫請求日志的數(shù)據(jù)傳輸完成時,發(fā)送開始寫請求日志的數(shù)據(jù)傳輸之后保存的寫請求日志數(shù)據(jù)。
本發(fā)明實施例可以是災(zāi)備系統(tǒng)的同步復(fù)制模式,也可以是異步復(fù)制模式,如圖4、圖5所示,同步復(fù)制,是指每次生產(chǎn)中心的寫做請求操作完成后,還需等待災(zāi)備中心的遠(yuǎn)程復(fù)制完成后才予以釋放。圖4展示了基于該鏡像文件復(fù)制的數(shù)據(jù)同步復(fù)制容災(zāi)時間軸圖,其中時間點t2為該鏡像的實際快照時間點,t3為數(shù)據(jù)開始同步復(fù)制的時間點,待迭代日志復(fù)制結(jié)束,就可以開啟災(zāi)備系統(tǒng)的同步復(fù)制功能,即將生產(chǎn)中心的每一次寫請求操作都同步到災(zāi)備中心。
當(dāng)然,該鏡像文件復(fù)制也可以很容易轉(zhuǎn)向災(zāi)備系統(tǒng)的異步復(fù)制模式,異步復(fù)制是指將生產(chǎn)中心的寫請求操作,以后臺運行的方式復(fù)制到災(zāi)備中心,每次寫請求均正常釋放,無需等待遠(yuǎn)程復(fù)制的完成。如圖5所示,這里本專利僅需要將日志復(fù)制結(jié)束,即完成了一次完整的鏡像文件復(fù)制,然后循環(huán)進行日志記錄和復(fù)制,完成異步復(fù)制的災(zāi)備功能。
此外,注意本發(fā)明實施例中對特殊的寫請求,比如文件重命名、刪除、創(chuàng)建等操作不適用,僅僅使用傳統(tǒng)的文件讀寫數(shù)據(jù)塊操作。
下面介紹本發(fā)明實施例中另一側(cè)的鏡像文件復(fù)制的方法的實施例。
請參閱圖6,為本發(fā)明實施例中鏡像文件復(fù)制的另一個實施例示意圖,該方法應(yīng)用于災(zāi)備系統(tǒng)中的災(zāi)備中心,所述災(zāi)備系統(tǒng)還包括生產(chǎn)中心,所述災(zāi)備中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位接收生產(chǎn)中心進行鏡像文件復(fù)制發(fā)送的數(shù)據(jù),所述方法包括:
601、接收所述生產(chǎn)中心發(fā)送的鏡像文件數(shù)據(jù)塊;
602、將所述鏡像文件數(shù)據(jù)塊寫入預(yù)先創(chuàng)建的鏡像文件中;
603、在所述鏡像文件復(fù)制完成時,接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù);
604、根據(jù)所述寫請求日志數(shù)據(jù),在所述鏡像文件中執(zhí)行寫請求操作,重放寫請求日志。
可選的,根據(jù)所述寫請求日志數(shù)據(jù),在所述鏡像文件中執(zhí)行寫請求操作,包括:
依次獲取所述寫請求日志數(shù)據(jù)中的每個寫請求操作數(shù)據(jù);
在所述鏡像文件中,執(zhí)行每個寫請求操作數(shù)據(jù)對應(yīng)的寫請求操作。
可選的,所述方法還包括:
在接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù)之后,繼續(xù)接收所述生產(chǎn)中心發(fā)送的迭代日志數(shù)據(jù)。
下面介紹本發(fā)明實施例中鏡像文件復(fù)制的裝置的實施例。
請參閱圖7,為本發(fā)明實施例中鏡像文件復(fù)制的裝置的一個實施例示意圖,該裝置應(yīng)用于災(zāi)備系統(tǒng)中的生產(chǎn)中心,所述災(zāi)備系統(tǒng)還包括災(zāi)備中心,所述生產(chǎn)中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位向災(zāi)備中心發(fā)送鏡像文件復(fù)制數(shù)據(jù),所述裝置包括:
獲取單元701,用于在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制時,獲取當(dāng)前鏡像文件復(fù)制的數(shù)據(jù)塊的目標(biāo)位置信息;
寫請求處理單元702,用于若接收到對所述鏡像文件的寫請求,且所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則直接執(zhí)行所述寫請求,若所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,則執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中;
日志傳輸單元703,用于在所述生產(chǎn)中心的鏡像文件向災(zāi)備中心進行鏡像文件復(fù)制完成時,將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心,并形成一個鏡像文件復(fù)制的有效快照。
可選的,所述寫請求處理單元702還用于:
若所述寫請求開始的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值,且所述寫請求結(jié)束的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值,則對大于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求;對小于所述目標(biāo)位置對應(yīng)的數(shù)值的數(shù)據(jù)塊執(zhí)行所述寫請求,并將所述寫請求記錄在預(yù)先建立的寫請求日志中。
可選的,所述裝置還包括加鎖單元704,所述加鎖單元704用于:
在所述接收到對所述鏡像文件的寫請求之后,加鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求開始的位置對應(yīng)的數(shù)值大于所述目標(biāo)位置對應(yīng)的數(shù)值時,直接執(zhí)行所述寫請求之后,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量;
在所述寫請求結(jié)束的位置對應(yīng)的數(shù)值小于所述目標(biāo)位置對應(yīng)的數(shù)值時,執(zhí)行所述寫請求之前,解鎖所述目標(biāo)位置對應(yīng)的數(shù)值變量。
可選的,所述寫請求處理單元702還用于在將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心時,繼續(xù)進行寫請求日志的記錄;
所述日志傳輸單元703還用于在開始將所述寫請求日志的數(shù)據(jù)傳輸給所述災(zāi)備中心之前已保存的寫請求日志的數(shù)據(jù)傳輸完成時,發(fā)送開始寫請求日志的數(shù)據(jù)傳輸之后保存的寫請求日志數(shù)據(jù)。
請參閱圖8,為本發(fā)明實施例中鏡像文件復(fù)制的裝置的另一個實施例示意圖,該裝置應(yīng)用于災(zāi)備系統(tǒng)中的災(zāi)備中心,所述災(zāi)備系統(tǒng)還包括生產(chǎn)中心,所述災(zāi)備中心通過網(wǎng)絡(luò)以數(shù)據(jù)塊為單位接收生產(chǎn)中心進行鏡像文件復(fù)制發(fā)送的數(shù)據(jù),所述裝置包括:
鏡像文件接收單元801,用于接收所述生產(chǎn)中心發(fā)送的鏡像文件數(shù)據(jù)塊;
寫入單元802,用于將所述鏡像文件數(shù)據(jù)塊寫入預(yù)先創(chuàng)建的鏡像文件中;
日志接收單元803,用于在所述鏡像文件復(fù)制完成時,接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù);
執(zhí)行單元804,用于根據(jù)所述寫請求日志數(shù)據(jù),在所述鏡像文件中執(zhí)行寫請求操作,重放寫請求日志。
可選的,所述執(zhí)行單元804具體用于:
依次獲取所述寫請求日志數(shù)據(jù)中的每個寫請求操作數(shù)據(jù);
在所述鏡像文件中,執(zhí)行每個寫請求操作數(shù)據(jù)對應(yīng)的寫請求操作。
可選的,所述日志接收單元803還用于在接收所述生產(chǎn)中心發(fā)送的寫請求日志數(shù)據(jù)之后,繼續(xù)接收所述生產(chǎn)中心發(fā)送的迭代日志數(shù)據(jù)。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。