本申請涉及計算機(jī)通信領(lǐng)域,尤其涉及一種數(shù)據(jù)復(fù)制方法及裝置。
背景技術(shù):
復(fù)制技術(shù)是網(wǎng)絡(luò)存儲中的一種數(shù)據(jù)保護(hù)技術(shù)。通常,可通過ip網(wǎng)絡(luò),實現(xiàn)復(fù)制源設(shè)備和復(fù)制目的設(shè)備的lun(logicalunitnumber,邏輯單元號)存儲單元的數(shù)據(jù)同步,建立并維護(hù)lun存儲單元的副本數(shù)據(jù)。當(dāng)復(fù)制源設(shè)備因設(shè)備故障等原因?qū)е略撛O(shè)備上的數(shù)據(jù)丟失時,可使用遠(yuǎn)程的復(fù)制目的設(shè)備上的數(shù)據(jù)副本恢復(fù)出復(fù)制源設(shè)備中的數(shù)據(jù)。
然而,用于復(fù)制源設(shè)備和復(fù)制目的設(shè)備之間數(shù)據(jù)傳輸?shù)膇p網(wǎng)絡(luò)很難是專有的物理網(wǎng)絡(luò),大多是租用的公共網(wǎng)絡(luò),使得該ip網(wǎng)絡(luò)的帶寬較小、響應(yīng)延時大。當(dāng)進(jìn)行復(fù)制源設(shè)備和復(fù)制目的設(shè)備之間的數(shù)據(jù)同步時,由于受到該ip網(wǎng)絡(luò)的帶寬的限制,很難進(jìn)行大量數(shù)據(jù)的復(fù)制,從而大大降低了數(shù)據(jù)復(fù)制的效率。
技術(shù)實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N數(shù)據(jù)復(fù)制方法及裝置,在進(jìn)行大量的數(shù)據(jù)復(fù)制時,通過減少復(fù)制雙方的數(shù)據(jù)傳輸量,提高數(shù)據(jù)復(fù)制的效率。
具體地,本申請是通過如下技術(shù)方案實現(xiàn)的:
根據(jù)本申請的第一方面,提供一種數(shù)據(jù)復(fù)制方法,所述方法應(yīng)用于存儲設(shè)備,所述方法包括:
響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
確定所述本地lun存儲單元與所述目標(biāo)lun存儲單元是否為重刪lun存儲單元;
如果所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方為重刪lun存儲單元,并且所述待復(fù)制數(shù)據(jù)在所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方完成數(shù)據(jù)重刪處理時,將讀取到的所述待復(fù)制數(shù)據(jù)的邏輯地址以及與所述待復(fù)制數(shù)據(jù)對應(yīng)的索引信息,發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備基于所述索引信息在所述目標(biāo)lun存儲單元中查詢與所述待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立該目標(biāo)數(shù)據(jù)與所述待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,并向本設(shè)備返回復(fù)制成功的通知消息;其中,所述索引信息為與針對所述待復(fù)制數(shù)據(jù)的重刪處理相關(guān)的信息。
根據(jù)本申請的第二方面,提供一種數(shù)據(jù)復(fù)制裝置,所述裝置應(yīng)用于存儲設(shè)備,所述裝置包括:
讀取單元,用于響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
確定單元,用于確定所述本地lun存儲單元與所述目標(biāo)lun存儲單元是否為重刪lun存儲單元;
復(fù)制單元,用于如果所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方為重刪lun存儲單元,并且所述待復(fù)制數(shù)據(jù)在所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方完成數(shù)據(jù)重刪處理時,將讀取到的所述待復(fù)制數(shù)據(jù)的邏輯地址以及與所述待復(fù)制數(shù)據(jù)對應(yīng)的索引信息,發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備基于所述索引信息在所述目標(biāo)lun存儲單元中查詢與所述待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立該目標(biāo)數(shù)據(jù)與所述待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,并向本設(shè)備返回復(fù)制成功的通知消息;其中,所述索引信息為與針對所述待復(fù)制數(shù)據(jù)的重刪處理相關(guān)的信息。
本申請?zhí)岢鲆环N數(shù)據(jù)復(fù)制方法,通過利用重刪技術(shù),使作為復(fù)制目的設(shè)備的對端存儲設(shè)備上保存有與本端存儲設(shè)備上的待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),使得在數(shù)據(jù)復(fù)制時,作為復(fù)制源設(shè)備的本端存儲設(shè)備可不再將待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備,而是將待復(fù)制數(shù)據(jù)的邏輯地址與其對應(yīng)的索引信息發(fā)送至對端存儲設(shè)備。對端存儲設(shè)備可基于索引信息查找與該待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立與該目標(biāo)數(shù)據(jù)與該待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,從而完成待復(fù)制數(shù)據(jù)的復(fù)制。
一方面,由于作為復(fù)制源設(shè)備的本端存儲設(shè)備不再將待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備,而僅僅將待復(fù)制數(shù)據(jù)的邏輯地址和索引信息發(fā)送至對端存儲設(shè)備,使得在復(fù)制時可有效地減少了向?qū)Χ舜鎯Πl(fā)送數(shù)據(jù)的數(shù)據(jù)量,因此可大大降低復(fù)制的開銷,提高數(shù)據(jù)復(fù)制的效率。
另一方面,由于本端存儲設(shè)備僅僅向?qū)Χ舜鎯υO(shè)備發(fā)送待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,由于大大減小了向?qū)Χ舜鎯υO(shè)備發(fā)送的數(shù)據(jù)量,所以可一次傳輸多個待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,實現(xiàn)多個待復(fù)制數(shù)據(jù)的復(fù)制,因此可大大提高數(shù)據(jù)復(fù)制的效率。
附圖說明
圖1是本申請一示例性實施例示出的一種相關(guān)復(fù)制技術(shù)的數(shù)據(jù)復(fù)制示意圖;
圖2是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制的流程圖;
圖3是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制場景的示意圖;
圖4是本申請一示例性實施例示出的與圖3所示數(shù)據(jù)復(fù)制場景對應(yīng)的數(shù)據(jù)復(fù)制方法的流程圖;
圖5是本申請一示例性實施例示出的另一種數(shù)據(jù)復(fù)制場景的示意圖;
圖6是本申請一示例性實施例示出的與圖5所示數(shù)據(jù)復(fù)制場景對應(yīng)的數(shù)據(jù)復(fù)制方法的流程圖;
圖7是本申請一示例性實施例示出的另一種數(shù)據(jù)復(fù)制場景的示意圖;
圖8是本申請一示例性實施例示出的與圖7所示數(shù)據(jù)復(fù)制場景對應(yīng)的數(shù)據(jù)復(fù)制方法的流程圖;
圖9是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制裝置所在設(shè)備的硬件結(jié)構(gòu)圖;
圖10是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制裝置的框圖。
具體實施方式
這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。
復(fù)制技術(shù)是網(wǎng)絡(luò)存儲中的一種數(shù)據(jù)保護(hù)技術(shù)。通常,可通過ip網(wǎng)絡(luò),實現(xiàn)復(fù)制源設(shè)備和復(fù)制目的設(shè)備的lun存儲單元的數(shù)據(jù)同步,建立并維護(hù)lun存儲單元的副本數(shù)據(jù)。當(dāng)復(fù)制源設(shè)備因設(shè)備故障等原因?qū)е略撛O(shè)備上的數(shù)據(jù)丟失時,可使用遠(yuǎn)程的復(fù)制目的設(shè)備上的數(shù)據(jù)副本恢復(fù)出復(fù)制源設(shè)備中的數(shù)據(jù)。
通常,復(fù)制源設(shè)備和復(fù)制目的設(shè)備上所儲存的數(shù)據(jù)的邏輯地址是完全相同的,進(jìn)一步來說,通過數(shù)據(jù)的邏輯地址,在復(fù)制源設(shè)備和復(fù)制目的設(shè)備上所讀取到的數(shù)據(jù)是完全相同的,當(dāng)然復(fù)制源設(shè)備和復(fù)制目的設(shè)備上所存儲的數(shù)據(jù)的物理地址可以不同。
數(shù)據(jù)復(fù)制的目的,就是將復(fù)制源設(shè)備上的待復(fù)制數(shù)據(jù)同步至復(fù)制目的設(shè)備上的與該待復(fù)制數(shù)據(jù)的邏輯地址對應(yīng)的存儲空間。
參見圖1,圖1是本申請一示例性實施例示出的一種相關(guān)復(fù)制技術(shù)的數(shù)據(jù)復(fù)制示意圖。
在相關(guān)復(fù)制技術(shù)中,復(fù)制源設(shè)備接收到將本地lun存儲單元中的存儲的已寫入數(shù)據(jù)復(fù)制到復(fù)制目的設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令時,可基于復(fù)制差異位圖,在本地lun存儲單元中讀取待復(fù)制數(shù)據(jù)(如圖1所示的復(fù)制差異位圖上陰影處所對應(yīng)的數(shù)據(jù)),然后將該待復(fù)制數(shù)據(jù)的邏輯地址和該待復(fù)制數(shù)據(jù)發(fā)送至復(fù)制目的設(shè)備。
復(fù)制目的設(shè)備在接收到上述待復(fù)制數(shù)據(jù)的邏輯地址和該待復(fù)制數(shù)據(jù)后,可在目標(biāo)lun存儲單元中為該待復(fù)制數(shù)據(jù)分配新的存儲空間,并可寫入該待復(fù)制數(shù)據(jù)。復(fù)制目的設(shè)備可建立該待復(fù)制數(shù)據(jù)的邏輯地址與為該待復(fù)制數(shù)據(jù)分配的存儲空間的物理地址的映射關(guān)系。
然而,在相關(guān)的數(shù)據(jù)復(fù)制技術(shù)中,復(fù)制源設(shè)備需要將待復(fù)制數(shù)據(jù)及其該待復(fù)制數(shù)據(jù)的邏輯地址發(fā)送至復(fù)制目的設(shè)備才能完成數(shù)據(jù)的復(fù)制。當(dāng)有大量的數(shù)據(jù)需要進(jìn)行復(fù)制時,一方面,將大量數(shù)據(jù)發(fā)送至復(fù)制目的設(shè)備,大大增加了復(fù)制的開銷,降低了復(fù)制的效率,同時影響前端業(yè)務(wù)的正常進(jìn)行。
另一方面,當(dāng)有大量的待復(fù)制數(shù)據(jù)時,可大大增加網(wǎng)絡(luò)帶寬的占用率,降低網(wǎng)絡(luò)傳輸待復(fù)制數(shù)據(jù)的傳輸速率,當(dāng)待復(fù)制數(shù)據(jù)的產(chǎn)生速率大于網(wǎng)絡(luò)傳輸該待復(fù)制數(shù)據(jù)的傳輸速率時,可導(dǎo)致復(fù)制不及時的現(xiàn)象的發(fā)生,使得復(fù)制源設(shè)備和復(fù)制目的設(shè)備之間的數(shù)據(jù)差異越來越大,很難達(dá)到復(fù)制備份的目的。
本申請?zhí)岢鲆环N數(shù)據(jù)復(fù)制方法,通過利用重刪技術(shù),使復(fù)制目的設(shè)備上保存有與復(fù)制源設(shè)備上的待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),使得在數(shù)據(jù)復(fù)制時,復(fù)制源設(shè)備可不再將待復(fù)制數(shù)據(jù)發(fā)送至復(fù)制目的設(shè)備,而是將待復(fù)制數(shù)據(jù)的邏輯地址與其對應(yīng)的索引信息發(fā)送至復(fù)制目的設(shè)備。復(fù)制目的設(shè)備可基于索引信息查找與該待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立與該目標(biāo)數(shù)據(jù)與該待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系。
一方面,由于復(fù)制源設(shè)備不再將待復(fù)制數(shù)據(jù)發(fā)送至復(fù)制目的設(shè)備,而僅僅將待復(fù)制數(shù)據(jù)的邏輯地址和索引信息發(fā)送至復(fù)制目的設(shè)備,使得在復(fù)制時可有效地減少了向復(fù)制目的設(shè)備發(fā)送數(shù)據(jù)的數(shù)據(jù)量,因此可大大降低復(fù)制的開銷,提高數(shù)據(jù)復(fù)制的效率。
另一方面,由于復(fù)制源設(shè)備僅僅向復(fù)制目的設(shè)備發(fā)送待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,由于大大減小了向復(fù)制目的設(shè)備發(fā)送的數(shù)據(jù)量,所以可一次傳輸多個待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,實現(xiàn)多個待復(fù)制數(shù)據(jù)的復(fù)制,因此可大大提高數(shù)據(jù)復(fù)制的效率。
下面以本端存儲設(shè)備為復(fù)制源設(shè)備,對端存儲設(shè)備為復(fù)制目的設(shè)備為例,對本申請?zhí)岢龅臄?shù)據(jù)復(fù)制方法進(jìn)行詳細(xì)地說明,當(dāng)然,本端存儲設(shè)備也可作為復(fù)制目的設(shè)備,對端存儲設(shè)備也可作為復(fù)制源設(shè)備,這里不進(jìn)行具體地限定。
參見圖2,圖2是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制的流程圖。該數(shù)據(jù)復(fù)制的方法可包括步驟201至步驟204。
步驟201:本端存儲設(shè)備響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
步驟202:本端存儲設(shè)備確定所述本地lun存儲單元與所述目標(biāo)lun存儲單元是否為重刪lun存儲單元;
步驟203:如果所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方為重刪lun存儲單元,并且所述待復(fù)制數(shù)據(jù)在所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方完成數(shù)據(jù)重刪處理時,本端存儲設(shè)備將讀取到的所述待復(fù)制數(shù)據(jù)的邏輯地址以及與所述待復(fù)制數(shù)據(jù)對應(yīng)的索引信息,發(fā)送至所述對端存儲設(shè)備;
步驟204:對端存儲設(shè)備基于所述索引信息在所述目標(biāo)lun存儲單元中查詢與所述待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立該目標(biāo)數(shù)據(jù)與所述待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,并向本設(shè)備返回復(fù)制成功的通知消息。
其中,上述索引信息,主要是為了使復(fù)制目的設(shè)備基于該索引信息在目標(biāo)lun存儲單元中可查找與待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù)。上述索引信息可包括針對上述待復(fù)制數(shù)據(jù)的重刪處理相關(guān)的信息。
例如,當(dāng)對端存儲設(shè)備上的目標(biāo)lun存儲單元為重刪lun存儲單元時,上述索引信息可以為待復(fù)制數(shù)據(jù)的散列值。
再例如,當(dāng)本端存儲設(shè)備上的本地lun存儲單元為重刪lun存儲單元,對端存儲設(shè)備上的目標(biāo)lun存儲單元為標(biāo)準(zhǔn)lun存儲單元時,上述索引信息可以為基于待復(fù)制數(shù)據(jù)的散列值查找到的已復(fù)制數(shù)據(jù)的邏輯地址。該已復(fù)制數(shù)據(jù)為本端存儲設(shè)備保存的已經(jīng)過重刪處理的數(shù)據(jù),該已復(fù)制數(shù)據(jù)與該待復(fù)制數(shù)據(jù)相同。
上述目標(biāo)數(shù)據(jù),是指與復(fù)制目的設(shè)備上儲存的,與該待復(fù)制數(shù)據(jù)相同的數(shù)據(jù)。例如,當(dāng)對端存儲設(shè)備上的目標(biāo)lun存儲單元為重刪lun存儲單元時,該目標(biāo)數(shù)據(jù)為與該待復(fù)制數(shù)據(jù)相同的已完成重刪處理的數(shù)據(jù)。
再例如,當(dāng)本端存儲設(shè)備上的本地lun存儲單元為重刪lun存儲單元,對端存儲設(shè)備上的目標(biāo)lun存儲單元為標(biāo)準(zhǔn)lun存儲單元時,上述目標(biāo)數(shù)據(jù)可為與待復(fù)制數(shù)據(jù)相同的已復(fù)制到對端存儲設(shè)備上的已復(fù)制數(shù)據(jù)。
需要說明的是,本端存儲設(shè)備讀取的待復(fù)制數(shù)據(jù)可以為一個待復(fù)制數(shù)據(jù),也可為多個待復(fù)制數(shù)據(jù),這里不對待復(fù)制數(shù)據(jù)的數(shù)量進(jìn)行具體地限定。
本申請實施例利用重刪技術(shù)來進(jìn)行數(shù)據(jù)復(fù)制,通過重刪技術(shù)使得對端存儲設(shè)備上可保存有與本端存儲設(shè)備上的待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),使得在數(shù)據(jù)復(fù)制時,可不再將待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備,而是將待復(fù)制數(shù)據(jù)的邏輯地址以及與其對應(yīng)的索引信息發(fā)送至對端存儲設(shè)備。對端存儲設(shè)備可基于索引信息找到與該待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立與該目標(biāo)數(shù)據(jù)與該待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,從而完成本端存儲設(shè)備和對端存儲設(shè)備之間的數(shù)據(jù)復(fù)制。
在基于重刪技術(shù),將本地lun存儲單元中的待復(fù)制數(shù)據(jù)復(fù)制到目標(biāo)lun存儲單元時,通??砂ㄈN不同的數(shù)據(jù)復(fù)制場景,分別為將待復(fù)制數(shù)據(jù)從本端存儲設(shè)備的重刪lun存儲單元復(fù)制到對端存儲設(shè)備的重刪lun存儲單元、將待復(fù)制數(shù)據(jù)從本端存儲設(shè)備的標(biāo)準(zhǔn)lun存儲單元復(fù)制到對端存儲設(shè)備的重刪lun存儲單元、以及將待復(fù)制數(shù)據(jù)從本端存儲設(shè)備的重刪lun存儲單元復(fù)制到對端存儲設(shè)備的標(biāo)準(zhǔn)lun存儲單元。
在復(fù)制初始化階段,本端存儲設(shè)備與對端存儲設(shè)備可互相通告雙方lun存儲單元的屬性信息,通過雙方lun存儲單元的屬性信息,確定本地lun存儲單元和目標(biāo)lun存儲單元的lun類型。本端存儲設(shè)備和對端存儲設(shè)備可分別通過確定出的本地lun存儲單元和目標(biāo)lun存儲單元的類型,在與上述三種場景對應(yīng)的三種流程中,選擇出與該本地lun存儲單元和目標(biāo)lun存儲單元的類型適配的一種流程,并執(zhí)行該流程所對應(yīng)的程序來完成數(shù)據(jù)的復(fù)制。
另外,在提到重刪技術(shù)時,為了更好地介紹本申請所提出的數(shù)據(jù)復(fù)制方法,下面對重刪lun存儲單元所儲存的重刪元數(shù)據(jù)進(jìn)行詳細(xì)地說明。
本端存儲設(shè)備或者對端存儲設(shè)備上的重刪lun存儲單元可儲存重刪元數(shù)據(jù)。該重刪元數(shù)據(jù)可以通過已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的直接映射關(guān)系進(jìn)行表示,也可以通過已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的間接映射關(guān)系進(jìn)行表示。
當(dāng)重刪元數(shù)據(jù)通過已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的直接映射關(guān)系進(jìn)行表示時,上述重刪元數(shù)據(jù)可包括邏輯地址映射表和重刪映射表。該邏輯地址映射表中記錄有已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的映射關(guān)系。該重刪映射表記錄有已完成重刪處理的數(shù)據(jù)的散列值和物理地址的映射關(guān)系。
當(dāng)重刪元數(shù)據(jù)通過已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的間接映射關(guān)系進(jìn)行表示時,上述重刪元數(shù)據(jù)可包括邏輯地址映射表和重刪映射表。其中,該邏輯地址映射表記錄有已完成重刪處理的數(shù)據(jù)的邏輯地址與散列值的映射關(guān)系。該重刪映射表中記錄有該已完成重刪處理的數(shù)據(jù)的散列值和物理地址的映射關(guān)系。
這里只是對重刪元數(shù)據(jù)中的已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的映射方法進(jìn)行示例性地說明,不對其進(jìn)行具體地限定。
下面以重刪元數(shù)據(jù)中的已完成重刪處理的數(shù)據(jù)的邏輯地址和物理地址的映射關(guān)系為間接映射為例,并結(jié)合上述三種數(shù)據(jù)復(fù)制場景,對上述數(shù)據(jù)復(fù)制的方法進(jìn)行詳細(xì)地說明。
1)將待復(fù)制數(shù)據(jù)從本端存儲設(shè)備的重刪lun存儲單元復(fù)制到對端存儲設(shè)備的重刪lun存儲單元。
參見圖3,圖3是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制的示意圖。圖3(a)表示作為復(fù)制源設(shè)備的本端存儲設(shè)備,圖3(b)表示作為復(fù)制目的設(shè)備的對端存儲設(shè)備。本端存儲設(shè)備上的本地lun存儲單元為圖3(a1)所示的重刪lun存儲單元。該圖3(a1)所示的重刪lun存儲單元對應(yīng)有如圖3(a2)所示的重刪副本庫。對端存儲設(shè)備上的目標(biāo)lun存儲單元為圖3(b1)所示的重刪lun存儲單元,該圖3(b1)重刪lun存儲單元對應(yīng)有如圖3(b2)所示的重刪副本庫。
其中,上述重刪lun存儲單元用以存儲重刪元數(shù)據(jù)。重刪元數(shù)據(jù)一般可包括邏輯地址映射表和重刪映射表。其中,邏輯地址表記錄有已完成重刪處理的數(shù)據(jù)的邏輯地址與散列值的映射關(guān)系。重刪映射表中記錄有該已完成重刪處理的數(shù)據(jù)的散列值和物理地址的映射關(guān)系。
上述重刪副本庫,主要存儲有已完成重刪處理的數(shù)據(jù)。該重刪副本庫可對應(yīng)一個重刪lun存儲單元,也可對應(yīng)多個重刪lun存儲單元。進(jìn)一步說,該重刪副本庫可由一個重刪lun存儲單元獨(dú)享,也可由多個重刪lun存儲單元共享。這里不對其進(jìn)行具體地限定。
參見圖4,圖4是本申請一示例性實施例示出的與圖3所示數(shù)據(jù)復(fù)制場景對應(yīng)的數(shù)據(jù)復(fù)制方法的流程圖。在該場景中,該數(shù)據(jù)復(fù)制方法具體包括步驟401至步驟408。
步驟401:本端存儲設(shè)備從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
在實現(xiàn)時,響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,本端存儲設(shè)備可通過復(fù)制差異位圖上標(biāo)識信息,讀取需要復(fù)制到對端存儲設(shè)備的待復(fù)制數(shù)據(jù)。
其中,上述標(biāo)識信息主要用于標(biāo)識數(shù)據(jù)是否已經(jīng)復(fù)制到對端存儲設(shè)備。例如,當(dāng)標(biāo)識信息為1時,表示本端存儲設(shè)備上的數(shù)據(jù)已復(fù)制到對端存儲設(shè)備。當(dāng)標(biāo)識信息為0時,表示本端存儲設(shè)備上的數(shù)據(jù)未復(fù)制到對端存儲設(shè)備。
步驟402:本端存儲設(shè)備獲取該待復(fù)制數(shù)據(jù)的邏輯地址和散列值;
在實現(xiàn)時,本端存儲設(shè)備通過該待復(fù)制數(shù)據(jù)對應(yīng)的標(biāo)識信息所在復(fù)制差異位圖的位置,確定該待復(fù)制數(shù)據(jù)的邏輯地址。
在獲取到待復(fù)制數(shù)據(jù)的邏輯地址后,本端存儲設(shè)備可基于本地lun存儲單元中所儲存的邏輯地址映射表,確定與該待復(fù)制數(shù)據(jù)的邏輯地址對應(yīng)的散列值,并讀取該散列值。
步驟403:本端存儲設(shè)備將該待復(fù)制數(shù)據(jù)的邏輯地址和散列值發(fā)送至對端存儲設(shè)備。
步驟404:對端存儲設(shè)備判斷在目標(biāo)lun存儲單元存儲的重刪映射表中,是否查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù)。
如果對端存儲設(shè)備查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),則執(zhí)行步驟405。
如果對端存儲設(shè)備未查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),則可執(zhí)行步驟406。
步驟405:對端存儲設(shè)備可通過在目標(biāo)lun存儲單元上的邏輯地址映射表中增加該待復(fù)制數(shù)據(jù)的邏輯地址與散列值的映射關(guān)系。
在本申請實施例中,如果查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),這可表明對端存儲設(shè)備上存在與該待復(fù)制數(shù)據(jù)相同的已完成重刪處理的數(shù)據(jù)(即目標(biāo)數(shù)據(jù)),此時,無需本端設(shè)備再將待復(fù)制數(shù)據(jù)傳輸?shù)綄Χ舜鎯υO(shè)備,而是直接在對端存儲設(shè)備上建立該待復(fù)制數(shù)據(jù)的邏輯地址和該已完成重刪處理的數(shù)據(jù)的映射關(guān)系即可完成該待復(fù)制數(shù)據(jù)的復(fù)制。
在實現(xiàn)時,對端存儲設(shè)備可通過在目標(biāo)lun存儲單元上的邏輯地址映射表中增加該待復(fù)制數(shù)據(jù)的邏輯地址與該待復(fù)制數(shù)據(jù)的散列值的映射關(guān)系。
通過該待復(fù)制數(shù)據(jù)的邏輯地址和散列值的映射關(guān)系,再結(jié)合目標(biāo)lun存儲單元的重刪映射表中已有的該散列值和已完成重刪處理的數(shù)據(jù)的物理地址的映射關(guān)系,實現(xiàn)該待復(fù)制數(shù)據(jù)的邏輯地址與該已完成重刪處理的數(shù)據(jù)的映射關(guān)系的建立。
步驟406:對端存儲設(shè)備向本端存儲設(shè)備返回針對已完成重刪處理的數(shù)據(jù)不存在的消息。
如果未查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),可表明對端存儲設(shè)備上不存在與該待復(fù)制數(shù)據(jù)相同的已完成重刪處理的數(shù)據(jù)。此時,本端存儲設(shè)備可將待復(fù)制數(shù)據(jù)及其邏輯地址發(fā)送至對端存儲設(shè)備,以完成數(shù)據(jù)的復(fù)制。
步驟407:本端存儲設(shè)備將該待復(fù)制數(shù)據(jù)的邏輯地址、散列值和該待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備。
步驟408:對端存儲設(shè)備可寫入該待復(fù)制數(shù)據(jù),并基于該待復(fù)制數(shù)據(jù)的邏輯地址和該散列值,建立該邏輯地址與該待復(fù)制數(shù)據(jù)的映射關(guān)系。
在實現(xiàn)時,對端存儲設(shè)備可在與目標(biāo)lun存儲單元對應(yīng)的重刪副本庫中,為該待復(fù)制數(shù)據(jù)分配新的存儲空間,并在目標(biāo)lun存儲單元的邏輯地址映射表中建立該待復(fù)制數(shù)據(jù)的邏輯地址與散列值的映射關(guān)系,同時在重刪映射表中建立該待復(fù)制數(shù)據(jù)的散列值和為其分配的新的存儲空間的物理地址的映射關(guān)系。
例如,參見圖3,假設(shè)本端存儲設(shè)備通過復(fù)制差異位圖,確定待復(fù)制數(shù)據(jù)為data_0。
本端存儲設(shè)備可基于復(fù)制差異位圖中表示data_0的標(biāo)識信息所在復(fù)制差異位圖的位置,計算出data_0的邏輯地址,假設(shè)計算出的邏輯地址為add_5。本端存儲設(shè)備可在如圖3所示的邏輯地址映射表中查找data_0的邏輯地址add_5對應(yīng)的散列值。
假設(shè)本端存儲設(shè)備查找到的散列值為h_x。本端存儲設(shè)備可將data_0的邏輯地址add_5和散列值h_x發(fā)送至對端存儲設(shè)備。
對端存儲設(shè)備可在如圖3所示的目標(biāo)lun存儲單元儲存查找與data_0的散列值h_x相同的已完成重刪處理的數(shù)據(jù)。從圖3中可知,對端存儲設(shè)備可查找到與data_0的散列值h_x相同的已完成重刪處理的數(shù)據(jù),如圖3(b2)所示的data_0,此時對端存儲設(shè)備可在邏輯地址映射表中添加data_0的邏輯地址add_5和已完成重刪處理的數(shù)據(jù)的散列值h_x的映射關(guān)系。
假設(shè),如果對端存儲設(shè)備未查找到與data_0的散列值h_x相同的已完成重刪處理的數(shù)據(jù),則可向本端存儲設(shè)備返回已完成重刪處理的數(shù)據(jù)不存在的消息。
本端存儲設(shè)備可將data_0、data_0的邏輯地址add_5和data_0的散列值h_x發(fā)送至對端存儲設(shè)備。
對端存儲設(shè)備可為data_0分配新的存儲空間,并可寫入data_0。對端存儲設(shè)備可在目標(biāo)lun存儲設(shè)備的邏輯地址映射表中添加data_0的邏輯地址add_5和散列值h_x的映射關(guān)系,在重刪映射表中添加data_0的散列值h_x與新分配的存儲空間的物理地址的映射關(guān)系。
2)將待復(fù)制數(shù)據(jù)從本端存儲設(shè)備的標(biāo)準(zhǔn)lun存儲單元復(fù)制到對端存儲設(shè)備的重刪lun存儲單元。
參見圖5,圖5是本申請一示例性實施例示出的另一種數(shù)據(jù)復(fù)制的示意圖。圖5(a)表示作為復(fù)制源設(shè)備的本端存儲設(shè)備,圖5(b)表示作為復(fù)制目的設(shè)備的對端存儲設(shè)備。本端存儲設(shè)備上的本地lun存儲單元為圖5(a1)所示的標(biāo)準(zhǔn)lun存儲單元。對端存儲設(shè)備上的目標(biāo)lun存儲單元為圖5(b1)所示的重刪lun存儲單元,該重刪lun存儲單元對應(yīng)有如圖5(b2)所示的重刪副本庫。
其中,上述重刪lun存儲單元所儲存的重刪元數(shù)據(jù)和重刪副本庫在上文中已進(jìn)行介紹,在這里不再贅述。
上述標(biāo)準(zhǔn)lun存儲單元,主要用于儲存數(shù)據(jù),包括儲存待復(fù)制數(shù)據(jù)。與重刪lun存儲單元不同的是,標(biāo)準(zhǔn)lun存儲單元主要用于存儲數(shù)據(jù),而重刪lun存儲單元主要用于存儲重刪元數(shù)據(jù)。
參見圖6,圖6是本申請一示例性實施例示出的與圖5所示數(shù)據(jù)復(fù)制場景對應(yīng)的數(shù)據(jù)復(fù)制方法的流程圖。在該場景中,該數(shù)據(jù)復(fù)制方法具體包括步驟601至步驟608。
步驟601:本端存儲設(shè)備從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
在實現(xiàn)時,響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,本端存儲設(shè)備可通過復(fù)制差異位圖上標(biāo)識信息,讀取需要復(fù)制到對端存儲設(shè)備的待復(fù)制數(shù)據(jù)。
步驟602:本端存儲設(shè)備獲取該待復(fù)制數(shù)據(jù)的邏輯地址和散列值;
在實現(xiàn)時,本端存儲設(shè)備通過該待復(fù)制數(shù)據(jù)對應(yīng)的標(biāo)識信息所在復(fù)制差異位圖的位置,確定該待復(fù)制數(shù)據(jù)的邏輯地址。
同時,本端存儲設(shè)備可基于哈希散列算法等,計算該待復(fù)制數(shù)據(jù)的散列值。
當(dāng)然,計算該待復(fù)制數(shù)據(jù)散列值的算法可以為哈希散列算法,也可為其他算法,這里不對該散列值計算的算法進(jìn)行特別地限定。
步驟603:本端存儲設(shè)備將該待復(fù)制數(shù)據(jù)的邏輯地址和散列值發(fā)送至對端存儲設(shè)備。
步驟604:對端存儲設(shè)備判斷在目標(biāo)lun存儲單元存儲的重刪映射表中,是否可查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù)。
如果對端存儲設(shè)備查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),則可執(zhí)行步驟605。
如果對端存儲設(shè)備未查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),則可執(zhí)行步驟606。
步驟605:對端存儲設(shè)備可通過在目標(biāo)lun存儲單元上的邏輯地址映射表中增加該待復(fù)制數(shù)據(jù)的邏輯地址與散列值的映射關(guān)系。
在本申請實施例中,如果查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),這可表明對端存儲設(shè)備上存在與該待復(fù)制數(shù)據(jù)相同的已完成重刪處理的數(shù)據(jù)(即目標(biāo)數(shù)據(jù))。此時,本端設(shè)備無需再將待復(fù)制數(shù)據(jù)傳輸?shù)綄Χ舜鎯υO(shè)備,而是直接在對端存儲設(shè)備上建立該待復(fù)制數(shù)據(jù)的邏輯地址和該已完成重刪處理的數(shù)據(jù)的映射關(guān)系即可完成該待復(fù)制數(shù)據(jù)復(fù)制。
在實現(xiàn)時,對端存儲設(shè)備可通過在目標(biāo)lun存儲單元上的邏輯地址映射表中增加該待復(fù)制數(shù)據(jù)的邏輯地址與該待復(fù)制數(shù)據(jù)的散列值的映射關(guān)系。
通過該待復(fù)制數(shù)據(jù)的邏輯地址和散列值的映射關(guān)系,再結(jié)合目標(biāo)lun存儲單元的重刪映射表中已有的該散列值和已完成重刪處理的數(shù)據(jù)的物理地址的映射關(guān)系,實現(xiàn)該待復(fù)制數(shù)據(jù)的邏輯地址與該已完成重刪處理的數(shù)據(jù)的映射關(guān)系的建立。
步驟606:對端存儲設(shè)備向本端存儲設(shè)備返回針對已完成重刪處理的數(shù)據(jù)不存在的消息。
如果未查找到與該待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù),可表明對端存儲設(shè)備上不存在與該待復(fù)制數(shù)據(jù)相同的已完成重刪處理的數(shù)據(jù)(即目標(biāo)數(shù)據(jù))。此時,本端存儲設(shè)備可將待復(fù)制數(shù)據(jù)及其邏輯地址發(fā)送至對端存儲設(shè)備,以完成數(shù)據(jù)的復(fù)制。
步驟607:本端存儲設(shè)備將該待復(fù)制數(shù)據(jù)的邏輯地址、散列值和該待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備。
步驟608:對端存儲設(shè)備可寫入該待復(fù)制數(shù)據(jù),并基于該待復(fù)制數(shù)據(jù)的邏輯地址和該散列值,建立該邏輯地址與該待復(fù)制數(shù)據(jù)的映射關(guān)系。
在實現(xiàn)時,對端存儲設(shè)備可在與目標(biāo)lun存儲單元對應(yīng)的重刪副本庫中,為該待復(fù)制數(shù)據(jù)分配新的存儲空間,并在目標(biāo)lun存儲單元的邏輯地址映射表中建立該待復(fù)制數(shù)據(jù)的邏輯地址與散列值的映射關(guān)系,同時在重刪映射表中建立該待復(fù)制數(shù)據(jù)的散列值和為其分配的新的存儲空間的物理地址的映射關(guān)系。
例如,參見圖5,假設(shè)本端存儲設(shè)備通過復(fù)制差異位圖,確定待復(fù)制數(shù)據(jù)為data_0,本端存儲設(shè)備可基于復(fù)制差異位圖中表示data_0的標(biāo)識信息所在復(fù)制差異位圖的位置,計算出data_0的邏輯地址,假設(shè)計算出的邏輯地址為add_5。本端存儲設(shè)備可計算該待復(fù)制數(shù)據(jù)data_0的散列值。假設(shè)本端存儲設(shè)備計算得到的散列值為h_x。本端存儲設(shè)備可將data_0的邏輯地址add_5和散列值h_x發(fā)送至對端存儲設(shè)備。
對端存儲設(shè)備可在如圖5所示的目標(biāo)lun存儲單元查找與data_0的散列值h_x相同的已完成重刪處理的數(shù)據(jù)。從圖5中可知,對端存儲設(shè)備可查找到與該data_0的散列值h_x相同的已完成重刪處理的數(shù)據(jù),如圖5(b2)所示的data_0。此時對端存儲設(shè)備可在邏輯地址映射表中建立data_0的邏輯地址add_5和已完成重刪處理的數(shù)據(jù)的散列值h_x的映射關(guān)系。
假設(shè),如果對端存儲設(shè)備未查找到與data_0的散列值h_x相同的已完成重刪處理的數(shù)據(jù),則可向本端存儲設(shè)備返回已完成重刪處理的數(shù)據(jù)不存在的消息。
本端存儲設(shè)備可將data_0、data_0的邏輯地址add_5和data_0的散列值h_x發(fā)送至對端存儲設(shè)備。
對端存儲設(shè)備可為data_0分配新的存儲空間,并可寫入data_0。對端存儲設(shè)備可在目標(biāo)lun存儲設(shè)備的邏輯地址映射表中添加data_0的邏輯地址add_5和散列值h_x的映射關(guān)系,在重刪映射表中添加data_0的散列值h_x與新分配的存儲空間的物理地址的映射關(guān)系。
3)將待復(fù)制數(shù)據(jù)從本端存儲設(shè)備的重刪lun存儲單元復(fù)制到對端存儲設(shè)備的標(biāo)準(zhǔn)lun存儲單元。
圖7是本申請一示例性實施例示出的另一種數(shù)據(jù)復(fù)制場景的示意圖。圖7(a)表示作為復(fù)制源設(shè)備的本端存儲設(shè)備,圖7(b)表示作為復(fù)制目的設(shè)備的對端存儲設(shè)備。本端存儲設(shè)備上的本地lun存儲單元為圖7(a1)所示的重刪lun存儲單元。該圖7(a1)所示的重刪lun存儲單元對應(yīng)有如圖7(a2)所示的重刪副本庫。對端存儲設(shè)備上的目標(biāo)lun存儲單元為圖7(b1)所示的標(biāo)準(zhǔn)lun存儲單元。
參見圖8,圖8是本申請一示例性實施例示出的與圖7所示數(shù)據(jù)復(fù)制場景對應(yīng)的數(shù)據(jù)復(fù)制方法的流程圖。在該場景中,該數(shù)據(jù)復(fù)制方法具體包括步驟801至步驟808。
步驟801:本端存儲設(shè)備從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
在實現(xiàn)時,響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,本端存儲設(shè)備可通過復(fù)制差異位圖上標(biāo)識信息,讀取需要復(fù)制到對端存儲設(shè)備的待復(fù)制數(shù)據(jù)。
步驟802:本端存儲設(shè)備獲取該待復(fù)制數(shù)據(jù)的邏輯地址和散列值;
在實現(xiàn)時,本端存儲設(shè)備通過該待復(fù)制數(shù)據(jù)對應(yīng)的標(biāo)識信息所在復(fù)制差異位圖的位置,確定該待復(fù)制數(shù)據(jù)的邏輯地址。
在獲取到待復(fù)制數(shù)據(jù)的邏輯地址后,本端存儲設(shè)備可基于本地lun存儲單元中所儲存的邏輯地址映射表,確定與該待復(fù)制數(shù)據(jù)的邏輯地址對應(yīng)的散列值,并讀取該散列值。
步驟803:本端存儲設(shè)備判斷是否查找到已經(jīng)過重刪處理的與所述待復(fù)制數(shù)據(jù)相同的已復(fù)制數(shù)據(jù)。
在實現(xiàn)時,本端存儲設(shè)備可通過復(fù)制差異位圖,確定已復(fù)制到對端存儲設(shè)備的一個或者多個已復(fù)制數(shù)據(jù),并通過復(fù)制差異位圖中的表示已復(fù)制數(shù)據(jù)的標(biāo)識信息在該復(fù)制差異位圖中的位置,確定該一個或者多個已復(fù)制數(shù)據(jù)的邏輯地址。
本端存儲設(shè)備可通過本地lun存儲單元儲存的邏輯地址映射表,查找與該一個或者多個已復(fù)制數(shù)據(jù)的邏輯地址對應(yīng)的一個或者多個已復(fù)制數(shù)據(jù)的散列值。
本端存儲設(shè)備可將該待復(fù)制數(shù)據(jù)的散列值與該一個或者多個已復(fù)制數(shù)據(jù)的散列值進(jìn)行比較。
如果該任一一個已復(fù)制數(shù)據(jù)的散列值與該待復(fù)制數(shù)據(jù)的散列值相同,則表明本端存儲設(shè)備查找到已經(jīng)過重刪處理的與所述待復(fù)制數(shù)據(jù)相同的已復(fù)制數(shù)據(jù),此時可執(zhí)行步驟804。
需要說明的是,如果已復(fù)制數(shù)據(jù)的散列值與該待復(fù)制數(shù)據(jù)的散列值相同,則表明該已復(fù)制數(shù)據(jù)與該待復(fù)制數(shù)據(jù)相同,并且該已復(fù)制數(shù)據(jù)已經(jīng)通過復(fù)制保存在對端存儲設(shè)備上。此時,本端存儲設(shè)備可不再向?qū)Χ舜鎯υO(shè)備發(fā)送待復(fù)制數(shù)據(jù)以進(jìn)行同步,而是將該待復(fù)制數(shù)據(jù)的邏輯地址和已復(fù)制數(shù)據(jù)的邏輯地址發(fā)送至對端存儲設(shè)備。對端存儲設(shè)備可基于已復(fù)制數(shù)據(jù)的邏輯地址讀取該已復(fù)制數(shù)據(jù),并建立該待復(fù)制數(shù)據(jù)的邏輯地址和已復(fù)制數(shù)據(jù)的映射關(guān)系。
如果任何已復(fù)制數(shù)據(jù)的散列值與該待復(fù)制數(shù)據(jù)的散列值不同,則表明本端存儲設(shè)備未查找到與該已經(jīng)過重刪處理的待復(fù)制數(shù)據(jù)相同的已復(fù)制數(shù)據(jù),此時可執(zhí)行步驟807。
步驟804:本端存儲設(shè)備將該待復(fù)制數(shù)據(jù)的邏輯地址和已復(fù)制數(shù)據(jù)的邏輯地址發(fā)送至對端存儲設(shè)備。
步驟805:對端存儲設(shè)備基于該已復(fù)制數(shù)據(jù)的邏輯地址,讀取該已復(fù)制數(shù)據(jù)。
步驟806:對端存儲設(shè)備建立所述已復(fù)制數(shù)據(jù)與該待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系。
在實現(xiàn)時,對端存儲設(shè)備可在目標(biāo)lun存儲單元中,將該已復(fù)制數(shù)據(jù)寫入至與該待復(fù)制數(shù)據(jù)的邏輯地址對應(yīng)存儲空間,從而建立該已復(fù)制數(shù)據(jù)和該待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系。
步驟807:本端存儲設(shè)備將該待復(fù)制數(shù)據(jù)及其邏輯地址發(fā)送至對端存儲設(shè)備。
步驟808:對端存儲設(shè)備寫入該待復(fù)制數(shù)據(jù),并建立該待復(fù)制數(shù)據(jù)的邏輯地址與該待復(fù)制數(shù)據(jù)的映射關(guān)系。
在實現(xiàn)時,對端存儲設(shè)備可為該待復(fù)制數(shù)據(jù)在該目標(biāo)lun存儲單元中分配新的存儲空間,并將該待復(fù)制數(shù)據(jù)寫入至該新的存儲空間,同時建立該待復(fù)制數(shù)據(jù)的邏輯地址與該新的存儲空間的物理地址的映射關(guān)系。
例如,參見圖7,假設(shè)本端存儲設(shè)備通過復(fù)制差異位圖,確定待復(fù)制數(shù)據(jù)為data_0,本端存儲設(shè)備可基于復(fù)制差異位圖中表示data_0的標(biāo)識信息所在復(fù)制差異位圖的位置,計算出data_0的邏輯地址,假設(shè)計算出的邏輯地址為add_5。本端存儲設(shè)備可在如圖7所示的本地lun存儲單元的邏輯地址映射表中查找data_0的邏輯地址add_5對應(yīng)的散列值,如h_x。
然后,本端存儲設(shè)備可通過復(fù)制差異位圖,確定已復(fù)制到對端存儲設(shè)備的一個或者多個已復(fù)制數(shù)據(jù),并通過復(fù)制差異位圖中的表示已復(fù)制數(shù)據(jù)的標(biāo)識信息在該復(fù)制差異位圖中的位置,確定該一個或者多個已復(fù)制數(shù)據(jù)的邏輯地址,例如確定出的一個或者多個已復(fù)制數(shù)據(jù)的邏輯地址為add_0至add_4。
本端存儲設(shè)備可通過本地lun存儲單元儲存的邏輯地址映射表,查找與該一個或者多個已復(fù)制數(shù)據(jù)的邏輯地址對應(yīng)的一個或者多個已復(fù)制數(shù)據(jù)的散列值。
如圖7所示,本端存儲設(shè)備確定邏輯地址add_0對應(yīng)的已復(fù)制數(shù)據(jù)的散列值為h_x,與該邏輯地址add_5對應(yīng)的散列值相同。本端存儲設(shè)備可將待復(fù)制數(shù)據(jù)的邏輯地址add_5和已復(fù)制數(shù)據(jù)的邏輯地址add_0發(fā)送至對端存儲設(shè)備。
對端存儲設(shè)備可將邏輯地址add_0對應(yīng)的已復(fù)制數(shù)據(jù)寫入至邏輯地址add_5對應(yīng)的存儲空間。
假設(shè),如果上述一個或者多個已復(fù)制數(shù)據(jù)的散列值都與待復(fù)制數(shù)據(jù)的散列值不同,本端存儲設(shè)備可將該待復(fù)制數(shù)據(jù)data_0和該待復(fù)制數(shù)據(jù)的邏輯地址add_5發(fā)送至對端存儲設(shè)備。
對端存儲設(shè)備可為該待復(fù)制數(shù)據(jù)在該目標(biāo)lun存儲單元中分配新的存儲空間,并將該待復(fù)制數(shù)據(jù)寫入至該新的存儲空間,同時建立該待復(fù)制數(shù)據(jù)的邏輯地址與該新的存儲空間的物理地址的映射關(guān)系。
在本申請實施例中,為了提高數(shù)據(jù)復(fù)制的復(fù)制效率,應(yīng)用本申請實施例的數(shù)據(jù)復(fù)制方法,本端存儲設(shè)備可向?qū)Χ舜鎯υO(shè)備傳輸一個或者多個待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,實現(xiàn)數(shù)據(jù)的高效復(fù)制。
本申請?zhí)岢鲆环N數(shù)據(jù)復(fù)制方法,通過利用重刪技術(shù),使作為復(fù)制目的設(shè)備的對端存儲設(shè)備上保存有與本端存儲設(shè)備上的待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),使得在數(shù)據(jù)復(fù)制時,作為復(fù)制源設(shè)備的本端存儲設(shè)備可不再將待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備,而是將待復(fù)制數(shù)據(jù)的邏輯地址與其對應(yīng)的索引信息發(fā)送至對端存儲設(shè)備。對端存儲設(shè)備可基于索引信息查找與該待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立與該目標(biāo)數(shù)據(jù)與該待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,從而完成待復(fù)制數(shù)據(jù)的復(fù)制。
一方面,由于作為復(fù)制源設(shè)備的本端存儲設(shè)備不再將待復(fù)制數(shù)據(jù)發(fā)送至對端存儲設(shè)備,而僅僅將待復(fù)制數(shù)據(jù)的邏輯地址和索引信息發(fā)送至對端存儲設(shè)備,使得在復(fù)制時可有效地減少了向?qū)Χ舜鎯Πl(fā)送數(shù)據(jù)的數(shù)據(jù)量,因此可大大降低復(fù)制的開銷,提高數(shù)據(jù)復(fù)制的效率。
另一方面,由于本端存儲設(shè)備僅僅向?qū)Χ舜鎯υO(shè)備發(fā)送待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,由于大大減小了向?qū)Χ舜鎯υO(shè)備發(fā)送的數(shù)據(jù)量,所以可一次傳輸多個待復(fù)制數(shù)據(jù)的邏輯地址和索引信息,實現(xiàn)多個待復(fù)制數(shù)據(jù)的復(fù)制,因此可大大提高數(shù)據(jù)復(fù)制的效率。
與前述數(shù)據(jù)復(fù)制方法的實施例相對應(yīng),本申請還提供了數(shù)據(jù)復(fù)制裝置的實施例。
本申請數(shù)據(jù)復(fù)制裝置的實施例可以應(yīng)用在存儲設(shè)備上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在存儲設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖9所示,為本申請數(shù)據(jù)復(fù)制裝置所在存儲設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖9所示的處理器、內(nèi)存、網(wǎng)絡(luò)出接口、以及非易失性存儲器之外,實施例中裝置所在的存儲設(shè)備通常根據(jù)該存儲設(shè)備的實際功能,還可以包括其他硬件,對此不再贅述。
請參考圖10,圖10是本申請一示例性實施例示出的一種數(shù)據(jù)復(fù)制裝置的框圖。所述裝置應(yīng)用于存儲設(shè)備,該裝置可包括:讀取單元1010、確定單元1020和復(fù)制單元1030。
讀取單元1010,用于響應(yīng)于將本地lun存儲單元中存儲的已寫入數(shù)據(jù),復(fù)制到對端存儲設(shè)備的目標(biāo)lun存儲單元的復(fù)制指令,從本地lun存儲單元中讀取待復(fù)制數(shù)據(jù);
確定單元1020,用于確定所述本地lun存儲單元與所述目標(biāo)lun存儲單元是否為重刪lun存儲單元;
復(fù)制單元1030,用于如果所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方為重刪lun存儲單元,并且所述待復(fù)制數(shù)據(jù)在所述本地lun存儲單元和所述目標(biāo)lun存儲單元中的任意一方完成數(shù)據(jù)重刪處理時,將讀取到的所述待復(fù)制數(shù)據(jù)的邏輯地址以及與所述待復(fù)制數(shù)據(jù)對應(yīng)的索引信息,發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備基于所述索引信息在所述目標(biāo)lun存儲單元中查詢與所述待復(fù)制數(shù)據(jù)相同的目標(biāo)數(shù)據(jù),并建立該目標(biāo)數(shù)據(jù)與所述待復(fù)制數(shù)據(jù)的邏輯地址的映射關(guān)系,并向本設(shè)備返回復(fù)制成功的通知消息;其中,所述索引信息為與針對所述待復(fù)制數(shù)據(jù)的重刪處理相關(guān)的信息。
在一種可選的實現(xiàn)方式中,所述索引信息為所述待復(fù)制數(shù)據(jù)的散列值;
所述復(fù)制單元1030,具體用于如果所述目標(biāo)lun存儲單元為重刪lun存儲單元,將讀取到的所述待復(fù)制數(shù)據(jù)的邏輯地址以及散列值發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備在所述目標(biāo)lun存儲單元中查找到與所述待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù)后,建立所述待復(fù)制數(shù)據(jù)的邏輯地址與該已完成重刪處理的數(shù)據(jù)的映射關(guān)系。
在另一種可選的實現(xiàn)方式中,所述索引信息為已經(jīng)過重刪處理的與所述待復(fù)制數(shù)據(jù)相同的已復(fù)制數(shù)據(jù)的邏輯地址;
所述復(fù)制單元1030,具體用于如果所述本地lun存儲單元為重刪lun存儲單元,所述目標(biāo)lun存儲單元為標(biāo)準(zhǔn)lun存儲單元,則基于所述待復(fù)制數(shù)據(jù)的散列值,在本地lun存儲單元中查找與該散列值匹配的已復(fù)制數(shù)據(jù);如果在本地lun存儲單元中查找到與所述散列值匹配的已復(fù)制數(shù)據(jù),則獲取所述已復(fù)制數(shù)據(jù)的邏輯地址;將所述待復(fù)制數(shù)據(jù)的邏輯地址和所述已復(fù)制數(shù)據(jù)的邏輯地址發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備基于所述已復(fù)制數(shù)據(jù)的邏輯地址,在所述目標(biāo)lun存儲單元中查找所述已復(fù)制數(shù)據(jù),并建立所述待復(fù)制數(shù)據(jù)的邏輯地址和查找到的所述已復(fù)制數(shù)據(jù)映射關(guān)系。
在另一種可選的實現(xiàn)方式中,所述復(fù)制單元1030,還具體用于在所述對端存儲設(shè)備在所述目標(biāo)lun存儲單元中未查找到與所述待復(fù)制數(shù)據(jù)的散列值對應(yīng)的已完成重刪處理的數(shù)據(jù)后,接收所述復(fù)制目的設(shè)備返回的針對所述已完成重刪處理的數(shù)據(jù)不存在的消息;將所述待復(fù)制數(shù)據(jù)的邏輯地址、所述待復(fù)制數(shù)據(jù)的散列值以及所述待復(fù)制數(shù)據(jù)發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備寫入該待復(fù)制數(shù)據(jù),并基于所述邏輯地址和所述散列值,建立所述邏輯地址與所述待復(fù)制數(shù)據(jù)的映射關(guān)系。
在另一種可選的實現(xiàn)方式中,所述復(fù)制單元1030,還具體用于如果未在本地lun存儲單元中查找到與所述散列值匹配的已復(fù)制數(shù)據(jù),則將所述待復(fù)制數(shù)據(jù)和所述待復(fù)制數(shù)據(jù)的邏輯地址發(fā)送至所述對端存儲設(shè)備,以使所述對端存儲設(shè)備寫入該待復(fù)制數(shù)據(jù),并建立所述待復(fù)制數(shù)據(jù)的邏輯地址與該待復(fù)制數(shù)據(jù)的映射關(guān)系。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。