国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)恢復(fù)方法及設(shè)備的制作方法

      文檔序號(hào):6522589閱讀:276來(lái)源:國(guó)知局
      數(shù)據(jù)恢復(fù)方法及設(shè)備的制作方法
      【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)恢復(fù)方法及設(shè)備,屬于數(shù)據(jù)存儲(chǔ)領(lǐng)域。所述方法包括:第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù);獲得所述歷史數(shù)據(jù);將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備。本發(fā)明通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      【專(zhuān)利說(shuō)明】數(shù)據(jù)恢復(fù)方法及設(shè)備
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別涉及一種數(shù)據(jù)恢復(fù)方法及設(shè)備。
      【背景技術(shù)】
      [0002]ROW (Redirect On Write,重定向?qū)?是一種應(yīng)用非常廣泛的數(shù)據(jù)寫(xiě)入方法。在基于ROW的數(shù)據(jù)存儲(chǔ)系統(tǒng)中,當(dāng)需要對(duì)某一邏輯地址對(duì)應(yīng)的數(shù)據(jù)進(jìn)行修改時(shí),系統(tǒng)會(huì)保持該數(shù)據(jù)及其物理地址不變,為修改的數(shù)據(jù)分配新的物理地址并寫(xiě)入;管理人員定期為當(dāng)前存儲(chǔ)的數(shù)據(jù)建立快照,當(dāng)系統(tǒng)中數(shù)據(jù)出錯(cuò)時(shí),系統(tǒng)可以根據(jù)管理人員的指令進(jìn)行快照回滾,將各個(gè)邏輯地址對(duì)應(yīng)的數(shù)據(jù)更新為目標(biāo)快照建立時(shí)刻點(diǎn)時(shí)的數(shù)據(jù),從而將數(shù)據(jù)恢復(fù)至目標(biāo)快照建立時(shí)的狀態(tài)。
      [0003]同時(shí),為了避免因自然災(zāi)害等因素導(dǎo)致本地?cái)?shù)據(jù)無(wú)法恢復(fù)而造成損失的情況,數(shù)據(jù)存儲(chǔ)系統(tǒng)還對(duì)主存儲(chǔ)設(shè)備上的數(shù)據(jù)進(jìn)行遠(yuǎn)程復(fù)制,即將主存儲(chǔ)設(shè)備上的數(shù)據(jù)復(fù)制給處于遠(yuǎn)端的從存儲(chǔ)設(shè)備進(jìn)行存儲(chǔ),以建立遠(yuǎn)程備份。
      [0004]在基于ROW的數(shù)據(jù)存儲(chǔ)系統(tǒng)中,現(xiàn)有的數(shù)據(jù)恢復(fù)方法,當(dāng)系統(tǒng)中數(shù)據(jù)出錯(cuò)而進(jìn)行快照回滾時(shí),系統(tǒng)將主存儲(chǔ)設(shè)備上的所有數(shù)據(jù)全部復(fù)制并發(fā)送給從存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)恢復(fù)。
      [0005]在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問(wèn)題:
      [0006]現(xiàn)有的基于ROW的數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù)恢復(fù)方法,每當(dāng)系統(tǒng)中數(shù)據(jù)出錯(cuò)而進(jìn)行快照回滾時(shí),需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)復(fù)制給從存儲(chǔ)設(shè)備,復(fù)制時(shí)間長(zhǎng),且浪費(fèi)大量帶寬資源。

      【發(fā)明內(nèi)容】

      [0007]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)恢復(fù)方法及設(shè)備,以提高數(shù)據(jù)恢復(fù)的效率。所述技術(shù)方案如下:
      [0008]第一方面,提供了一種數(shù)據(jù)恢復(fù)方法,所述方法應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述方法包括:
      [0009]所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);
      [0010]根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0011]判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0012]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0013]將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。[0014]在第一方面的第一種可能實(shí)現(xiàn)方式中,所述方法還包括:
      [0015]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0016]在第一方面的第二種可能實(shí)現(xiàn)方式中,所述獲得所述歷史數(shù)據(jù),包括:
      [0017]獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0018]根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0019]結(jié)合第一方面、第一方面的第一種可能實(shí)現(xiàn)方式或者第一方面的第二種可能實(shí)現(xiàn)方式,在第一方面的第三種可能實(shí)現(xiàn)方式中,所述方法還包括:
      [0020]在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息生成所述操作標(biāo)記;
      [0021 ] 保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0022]第二方面,提供了第一存儲(chǔ)設(shè)備,所述第一存儲(chǔ)設(shè)備應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括所述第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述第一存儲(chǔ)設(shè)備包括:
      [0023]指令接收模塊,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0024]確定模塊,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0025]判斷模塊,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0026]獲得模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0027]第一發(fā)送模塊,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0028]在第二方面的第一種可能實(shí)現(xiàn)方式中,所述第一存儲(chǔ)設(shè)備還包括:
      [0029]第二發(fā)送模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0030]在第二方面的第二種可能實(shí)現(xiàn)方式中,所述獲得模塊,包括:
      [0031]地址獲取單元,獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0032]數(shù)據(jù)獲得單元,用于根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0033]結(jié)合第二方面、第二方面的第一種可能實(shí)現(xiàn)方式或者第二方面的第二種可能實(shí)現(xiàn)方式,在第二方面的第三種可能實(shí)現(xiàn)方式中,所述第一存儲(chǔ)設(shè)備還包括:[0034]標(biāo)記生成模塊,用于在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息生成所述操作標(biāo)記;
      [0035]保存模塊,用于保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0036]第三方面,提供了一種數(shù)據(jù)恢復(fù)方法,所述方法應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述方法包括:
      [0037]所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);
      [0038]根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除,所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0039]判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0040]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0041]將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0042]在第三方面的第一種可能實(shí)現(xiàn)方式中,所述方法還包括:
      [0043]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0044]在第三方面的第二種可能實(shí)現(xiàn)方式中,所述獲得所述歷史數(shù)據(jù),包括:
      [0045]獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0046]根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0047]結(jié)合第三方面、第三方面的第一種可能實(shí)現(xiàn)方式或者第三方面的第二種可能實(shí)現(xiàn)方式,所述方法還包括:
      [0048]在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成所述操作標(biāo)記;
      [0049]保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0050]第四方面,提供了第一存儲(chǔ)設(shè)備,所述第一存儲(chǔ)設(shè)備應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括所述第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述第一存儲(chǔ)設(shè)備包括:
      [0051]指令接收模塊,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0052]確定模塊,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除,所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0053]判斷模塊,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0054]獲得模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0055]第一發(fā)送模塊,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0056]在第四方面的第一種可能實(shí)現(xiàn)方式中,所述第一存儲(chǔ)設(shè)備還包括:
      [0057]第二發(fā)送模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0058]在第四方面的第二種可能實(shí)現(xiàn)方式中,所述獲得模塊,包括:
      [0059]地址獲取單元,獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0060]數(shù)據(jù)獲得單元,用于根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0061]結(jié)合第四方面、第四方面的第一種可能實(shí)現(xiàn)方式或者第四方面的第二種可能實(shí)現(xiàn)方式,在第四方面的第三種可能實(shí)現(xiàn)方式中,所述第一存儲(chǔ)設(shè)備還包括:
      [0062]標(biāo)記生成模塊,用于在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成所述操作標(biāo)記;
      [0063]保存模塊,用于保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0064]本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:
      [0065]通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)改動(dòng)的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      【專(zhuān)利附圖】

      【附圖說(shuō)明】
      [0066]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0067]圖1是本發(fā)明提供的存儲(chǔ)系統(tǒng)的系統(tǒng)構(gòu)成圖;
      [0068]圖2是本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖;
      [0069]圖3是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖;
      [0070]圖4是本發(fā)明另一實(shí)施例提供的邏輯地址、物理地址以及操作標(biāo)記之間的對(duì)應(yīng)關(guān)系不意圖;
      [0071]圖5是本發(fā)明一個(gè)實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;[0072]圖6是本發(fā)明另一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
      [0073]圖7是本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
      [0074]圖8是本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
      [0075]圖9是本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖;
      [0076]圖10是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖;
      [0077]圖11是本發(fā)明另一實(shí)施例提供的邏輯地址、物理地址以及操作標(biāo)記之間的對(duì)應(yīng)關(guān)系不意圖;
      [0078]圖12是本發(fā)明一個(gè)實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
      [0079]圖13是本發(fā)明另一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
      [0080]圖14是本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
      [0081]圖15是本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0082]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
      [0083]本發(fā)明提供的方案可以用于一種存儲(chǔ)系統(tǒng)中,如圖1所示,該存儲(chǔ)系統(tǒng)至少包括第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,第二存儲(chǔ)設(shè)備為第一存儲(chǔ)設(shè)備的備份,用戶每次在第一存儲(chǔ)設(shè)備中寫(xiě)入數(shù)據(jù)時(shí),第一存儲(chǔ)設(shè)備都將寫(xiě)入的數(shù)據(jù)發(fā)送給第二存儲(chǔ)設(shè)備進(jìn)行備份存儲(chǔ)。此外,第一存儲(chǔ)設(shè)備還周期性生成第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中的數(shù)據(jù)出錯(cuò)時(shí),第一存儲(chǔ)設(shè)備可以根據(jù)在目標(biāo)快照時(shí)間點(diǎn)建立的快照將數(shù)據(jù)恢復(fù)至該目標(biāo)快照時(shí)間點(diǎn)時(shí)的狀態(tài)。其中,在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),第一存儲(chǔ)設(shè)備通常需要對(duì)兩類(lèi)數(shù)據(jù)進(jìn)行恢復(fù):一類(lèi)是在該目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),另一類(lèi)是在該目標(biāo)快照時(shí)間點(diǎn)之后從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù)。本發(fā)明下述實(shí)施例分別對(duì)著兩類(lèi)數(shù)據(jù)的恢復(fù)過(guò)程進(jìn)行描述。
      [0084]請(qǐng)參見(jiàn)圖2,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖。該數(shù)據(jù)恢復(fù)方法可以用于如圖1所示的存儲(chǔ)系統(tǒng)中,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中的數(shù)據(jù)錯(cuò)處進(jìn)行數(shù)據(jù)恢復(fù)時(shí),對(duì)第二存儲(chǔ)設(shè)備中的數(shù)據(jù)進(jìn)行相應(yīng)的恢復(fù)。該數(shù)據(jù)恢復(fù)方法可以包括:
      [0085]步驟102,第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0086]步驟104,根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定該邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備或者從所述第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),該操作標(biāo)記用于指示該邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0087]步驟106,判斷該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0088]步驟108,若判斷結(jié)果為該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù),則獲得該歷史數(shù)據(jù);
      [0089]步驟110,將該歷史數(shù)據(jù)以及該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù)。
      [0090]綜上所述,本發(fā)明實(shí)施例提供的數(shù)據(jù)恢復(fù)方法,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)寫(xiě)入的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0091]為了對(duì)上述圖2所示的數(shù)據(jù)恢復(fù)方法做進(jìn)一步的描述,請(qǐng)參見(jiàn)圖3,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖。該數(shù)據(jù)恢復(fù)方法可以用于如圖1所示的存儲(chǔ)系統(tǒng)中,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中的數(shù)據(jù)錯(cuò)處進(jìn)行數(shù)據(jù)恢復(fù)時(shí),對(duì)第二存儲(chǔ)設(shè)備中的數(shù)據(jù)進(jìn)行相應(yīng)的恢復(fù)。以第一存儲(chǔ)設(shè)備基于ROW進(jìn)行數(shù)據(jù)存儲(chǔ)為例,該數(shù)據(jù)恢復(fù)方法可以包括:
      [0092]步驟202,第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0093]該數(shù)據(jù)恢復(fù)指令可以是管理人員在第一存儲(chǔ)設(shè)備上進(jìn)行快照回滾操作時(shí)發(fā)出的快照回滾指令。具體的,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中發(fā)生硬盤(pán)寫(xiě)錯(cuò)誤、文件損壞或程序故障時(shí),管理人員可以向第一存儲(chǔ)設(shè)備發(fā)出快照回滾指令,該快照回滾指令用于指示第一存儲(chǔ)設(shè)備將數(shù)據(jù)恢復(fù)至目標(biāo)快照時(shí)間點(diǎn)時(shí)的狀態(tài)。
      [0094]步驟204,根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定該邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù);
      [0095]其中,該操作標(biāo)記用于指示該邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入第一存儲(chǔ)設(shè)備的時(shí)間信息。在最近一次生成該第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),第一存儲(chǔ)設(shè)備根據(jù)該邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入該第一存儲(chǔ)設(shè)備的時(shí)間信息生成該操作標(biāo)記,并保存該邏輯地址與該操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。當(dāng)?shù)谝淮鎯?chǔ)設(shè)備接收到包含有目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令時(shí),可以根據(jù)存儲(chǔ)的該邏輯地址與該操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定該邏輯地址中的數(shù)據(jù)是否是在該目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù)。
      [0096]在基于ROW存儲(chǔ)數(shù)據(jù)時(shí),第一存儲(chǔ)設(shè)備中的寫(xiě)入數(shù)據(jù)的情形主要有兩種:新寫(xiě)入一個(gè)邏輯地址中的數(shù)據(jù)或者對(duì)已有邏輯地址中的數(shù)據(jù)進(jìn)行修改。每一次生成數(shù)據(jù)的快照時(shí),第一存儲(chǔ)設(shè)備對(duì)應(yīng)存儲(chǔ)各個(gè)數(shù)據(jù)的邏輯地址和物理地址之間的對(duì)應(yīng)關(guān)系,同時(shí),第一存儲(chǔ)設(shè)備還根據(jù)各個(gè)邏輯地址中的數(shù)據(jù)的寫(xiě)入時(shí)間為各個(gè)邏輯地址生成對(duì)應(yīng)的操作標(biāo)記,并存儲(chǔ)生成的操作標(biāo)記和各個(gè)邏輯地址之間的對(duì)應(yīng)關(guān)系。其中,該操作標(biāo)記具體可以是生成快照時(shí)的快照時(shí)間點(diǎn),也可以是各個(gè)快照的流水號(hào)或者事務(wù)號(hào)等。
      [0097]具體的,以操作標(biāo)記為快照時(shí)間點(diǎn)為例,假設(shè)第一存儲(chǔ)設(shè)備先后3次生成數(shù)據(jù)的快照,每次生成快照時(shí)存儲(chǔ)的各個(gè)邏輯地址與物理地址以及操作標(biāo)記之間的對(duì)應(yīng)關(guān)系如圖4所示。其中,在tl時(shí)刻之前,第一存儲(chǔ)設(shè)備中存儲(chǔ)有a、b、c和d四個(gè)數(shù)據(jù),該四個(gè)數(shù)據(jù)的邏輯地址分別為L(zhǎng)1、 L2、L3和L4,物理地址分別為P1、P2、P3和P4。在tl時(shí)刻時(shí),第一存儲(chǔ)設(shè)備首次生成數(shù)據(jù)的快照,同時(shí)生成各個(gè)邏輯地址對(duì)應(yīng)的操作標(biāo)記為tl,該操作標(biāo)記tl用于指示對(duì)應(yīng)的邏輯地址中的數(shù)據(jù)的寫(xiě)入時(shí)間在tl時(shí)刻之前。在tl時(shí)刻到t2時(shí)刻之間的時(shí)間段內(nèi),邏輯地址為L(zhǎng)I的數(shù)據(jù)被修改為a’,對(duì)應(yīng)的物理地址修改為Ρ1',其余邏輯地址對(duì)應(yīng)的數(shù)據(jù)和物理地址不變,在t2時(shí)刻時(shí),第一存儲(chǔ)設(shè)備第二次生成數(shù)據(jù)的快照,同時(shí)生成邏輯地址L1對(duì)應(yīng)的操作標(biāo)記為t2,生成其余邏輯地址對(duì)應(yīng)的操作標(biāo)記為tl,其中,該操作標(biāo)記t2用于指示邏輯地址LI中的數(shù)據(jù)的寫(xiě)入時(shí)間在tl時(shí)刻到t2時(shí)刻之間。在t2時(shí)刻到t3時(shí)刻之間的時(shí)間段內(nèi),邏輯地址為L(zhǎng)1、L2、L3和L4的數(shù)據(jù)保持不變,同時(shí)新增一個(gè)邏輯地址為L(zhǎng)5,對(duì)應(yīng)的數(shù)據(jù)為e,其物理地址為P5 ;在t3時(shí)刻時(shí),第一存儲(chǔ)設(shè)備第三次生成數(shù)據(jù)的快照,同時(shí)生成邏輯地址L5對(duì)應(yīng)的操作標(biāo)記為t3,生成邏輯地址LI對(duì)應(yīng)的操作標(biāo)記為t2,生成其余邏輯地址對(duì)應(yīng)的操作標(biāo)記為tl,其中,該操作標(biāo)記t3用于指示邏輯地址L5中的數(shù)據(jù)的寫(xiě)入時(shí)間在t2時(shí)刻到t3時(shí)刻之間。
      [0098]在t3時(shí)刻之后,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備接收到數(shù)據(jù)恢復(fù)指令時(shí),若該數(shù)據(jù)恢復(fù)指令中的目標(biāo)快照時(shí)間點(diǎn)為tl,此時(shí),第一存儲(chǔ)設(shè)備獲取t3時(shí)刻生成的各個(gè)邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系,并確定對(duì)應(yīng)的操作標(biāo)記大于tl的邏輯地址中的數(shù)據(jù)為tl時(shí)刻之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),即邏輯地址為L(zhǎng)I和L5中的數(shù)據(jù)為tl時(shí)刻之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù)。
      [0099]此外,第一存儲(chǔ)設(shè)備每次寫(xiě)入數(shù)據(jù)或者刪除數(shù)據(jù)時(shí),都會(huì)與第二存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)同步。比如,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備新寫(xiě)入一個(gè)邏輯地址對(duì)應(yīng)的數(shù)據(jù)或者對(duì)原有邏輯地址中的數(shù)據(jù)進(jìn)行修改時(shí),將寫(xiě)入的數(shù)據(jù)發(fā)送給第二存儲(chǔ)設(shè)備,由第二存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)更新;當(dāng)?shù)谝淮鎯?chǔ)設(shè)備將原有邏輯地址中的數(shù)據(jù)刪除時(shí),向第二存儲(chǔ)設(shè)備發(fā)送刪除通知,由第二存儲(chǔ)設(shè)備將對(duì)應(yīng)的邏輯地址中的數(shù)據(jù)刪除。
      [0100]步驟206,判斷該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);若是,進(jìn)入步驟208,否則,進(jìn)入步驟212 ;
      [0101]第一存儲(chǔ)設(shè)備確定某一邏輯地址中的數(shù)據(jù)為在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù)之后,可以獲取目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系,并根據(jù)目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系判斷該邏輯地址在該目標(biāo)快照時(shí)間點(diǎn)時(shí)是否對(duì)應(yīng)有物理地址,若目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系表明在目標(biāo)快照時(shí)間點(diǎn)時(shí)該邏輯地址對(duì)應(yīng)有物理地址,則判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù);若目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系表明在目標(biāo)快照時(shí)間點(diǎn)時(shí)該邏輯地址未對(duì)應(yīng)有物理地址或者在目標(biāo)快照時(shí)間點(diǎn)時(shí)不存在該邏輯地址,則判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)歷史數(shù)據(jù)。
      [0102]步驟208,獲得該歷史數(shù)據(jù);
      [0103]當(dāng)判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)存儲(chǔ)有歷史數(shù)據(jù)時(shí),第一存儲(chǔ)設(shè)備獲取該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址,并根據(jù)該物理地址獲得該歷史數(shù)據(jù)。
      [0104]以圖4為例,其中邏輯地址LI和L4在11時(shí)刻時(shí)對(duì)應(yīng)有物理地址,則判斷邏輯地址LI和L4在tl時(shí)刻存儲(chǔ)有歷史數(shù)據(jù),第一存儲(chǔ)設(shè)備將tl時(shí)刻時(shí)邏輯地址LI對(duì)應(yīng)的物理地址Pl中存儲(chǔ)的數(shù)據(jù)a獲得為邏輯地址LI的歷史數(shù)據(jù),并將tl時(shí)刻時(shí)邏輯地址L4對(duì)應(yīng)的物理地址P4中存儲(chǔ)的數(shù)據(jù)d獲得為邏輯地址L4的歷史數(shù)據(jù)。
      [0105]步驟210,將該歷史數(shù)據(jù)以及該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備;
      [0106]第一存儲(chǔ)設(shè)備將該歷史數(shù)據(jù)以及該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將自身存儲(chǔ)的該邏輯地址對(duì)應(yīng)的數(shù)據(jù)替換為該歷史數(shù)據(jù),已完成數(shù)據(jù)的恢復(fù)。
      [0107]以圖4為例,第一存儲(chǔ)設(shè)備將邏輯地址LI和數(shù)據(jù)a發(fā)送給第二存儲(chǔ)設(shè)備,并將邏輯地址L4和數(shù)據(jù)d發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中的邏輯地址LI和L4對(duì)應(yīng)的數(shù)據(jù)替換為a和d,從而完成數(shù)據(jù)的恢復(fù)。
      [0108]步驟212,將該邏輯地址以及與該邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給第二存儲(chǔ)設(shè)備;
      [0109]當(dāng)判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)存儲(chǔ)有歷史數(shù)據(jù)時(shí),第一存儲(chǔ)設(shè)備將該邏輯地址以及與該邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備在存儲(chǔ)有與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)該刪除指示將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。其中,該刪除指示可以是一個(gè)用于指示第二存儲(chǔ)設(shè)備刪除數(shù)據(jù)的刪除代碼,第二存儲(chǔ)設(shè)備接收到該刪除代碼后,檢測(cè)第二存儲(chǔ)設(shè)備中是否存儲(chǔ)有與該邏輯地址對(duì)應(yīng)的數(shù)據(jù),并在檢測(cè)出第二存儲(chǔ)設(shè)備中存儲(chǔ)有與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),將第二存儲(chǔ)設(shè)備中的該邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0110]依舊以圖4為例,其中,tl時(shí)刻時(shí)第一存儲(chǔ)設(shè)備中不存在邏輯地址L5,即表示邏輯地址L5在tl時(shí)刻時(shí)未存儲(chǔ)有歷史數(shù)據(jù),此時(shí),第一存儲(chǔ)設(shè)備向第二存儲(chǔ)設(shè)備發(fā)送邏輯地址L5和刪除代碼。由于在t3時(shí)刻到第一存儲(chǔ)設(shè)備接收到數(shù)據(jù)恢復(fù)指令的這一段時(shí)間內(nèi),該邏輯地址L5中的歷史數(shù)據(jù)可能被從第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備中刪除,因此,該第二存儲(chǔ)設(shè)備接收到該刪除代碼后,首先檢測(cè)本地是否存儲(chǔ)有邏輯地址L5對(duì)應(yīng)的數(shù)據(jù),若有,則將第二存儲(chǔ)設(shè)備中與邏輯地址L5對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0111]綜上所述,本發(fā)明實(shí)施例提供的數(shù)據(jù)恢復(fù)方法,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)寫(xiě)入的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0112]請(qǐng)參見(jiàn)圖5,其示出了本發(fā)明一個(gè)實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖,該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖2或圖3所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0113]指令接收模塊301,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0114]確定模塊302,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0115]判斷模塊303,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0116]獲得模塊304,用于若所述判斷模塊303的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0117]第一發(fā)送模塊305,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。[0118]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)寫(xiě)入的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0119]為了對(duì)上述圖5所示的第一存儲(chǔ)設(shè)備做進(jìn)一步的描述,請(qǐng)參見(jiàn)圖6,其示出了本發(fā)明另一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖2或圖3所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0120]指令接收模塊401,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0121]確定模塊402,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0122]判斷模塊403,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0123]獲得模塊404,用于若所述判斷模塊403的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0124]第一發(fā)送模塊405,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0125]所述第一存儲(chǔ)設(shè)備還包括:
      [0126]第二發(fā)送模塊406,用于若所述判斷模塊403的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0127]所述獲得模塊404,包括:
      [0128]地址獲取單元404a,獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0129]數(shù)據(jù)獲得單元404b,用于根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0130]所述第一存儲(chǔ)設(shè)備還包括:
      [0131]標(biāo)記生成模塊407,用于在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息生成所述操作標(biāo)記;
      [0132]保存模塊408,用于保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0133]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)寫(xiě)入的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0134]請(qǐng)參見(jiàn)圖7,其示出了本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖,該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖2或圖3所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0135]至少一個(gè)I/O接口 001、至少一個(gè)處理器002,比如CPU、存儲(chǔ)器003和顯示器004 ;
      存儲(chǔ)器003可能包含高速Ram存儲(chǔ)器,也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。存儲(chǔ)器003可選的可以包含至少一個(gè)位于遠(yuǎn)離前述處理器002的存儲(chǔ)裝置。在一些實(shí)施方式中,存儲(chǔ)器003存儲(chǔ)了如下的元素,模塊或者數(shù)據(jù)結(jié)構(gòu),或者他們的子集,或者他們的擴(kuò)展集:
      [0136]操作系統(tǒng)0031,包含各種程序,用于實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù);
      [0137]應(yīng)用模塊0032,包含一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)模塊被配置由所述一個(gè)或多個(gè)處理器002執(zhí)行,所述一個(gè)或多個(gè)模塊具有如下功能:
      [0138]所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);
      [0139]根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0140]判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0141]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0142]將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0143]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)寫(xiě)入的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0144]為了對(duì)上述圖7所示的第一存儲(chǔ)設(shè)備做進(jìn)一步的描述,請(qǐng)參見(jiàn)圖8,其示出了本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖2或圖3所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0145]至少一個(gè)I/O接口 005、至少一個(gè)處理器006,比如CPU、存儲(chǔ)器007和顯示器008 ;
      存儲(chǔ)器007可能包含高速Ram存儲(chǔ)器,也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。存儲(chǔ)器007可選的可以包含至少一個(gè)位于遠(yuǎn)離前述處理器006的存儲(chǔ)裝置。在一些實(shí)施方式中,存儲(chǔ)器007存儲(chǔ)了如下的元素,模塊或者數(shù)據(jù)結(jié)構(gòu),或者他們的子集,或者他們的擴(kuò)展集:
      [0146]操作系統(tǒng)0071,包含各種程序,用于實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù);
      [0147]應(yīng)用模塊0072,包含一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)模塊被配置由所述一個(gè)或多個(gè)處理器006執(zhí)行,所述一個(gè)或多個(gè)模塊具有如下功能:
      [0148]所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);
      [0149]根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息;
      [0150]判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0151]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0152]將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0153]所述功能還包括:
      [0154]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0155]所述獲得所述歷史數(shù)據(jù),包括:
      [0156]獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0157]根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0158]所述功能還包括:
      [0159]在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息生成所述操作標(biāo)記;
      [0160]保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0161]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入第一存儲(chǔ)設(shè)備的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)寫(xiě)入的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。[0162]請(qǐng)參見(jiàn)圖9,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖。該數(shù)據(jù)恢復(fù)方法可以用于如圖1所示的存儲(chǔ)系統(tǒng)中,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中的數(shù)據(jù)錯(cuò)處進(jìn)行數(shù)據(jù)恢復(fù)時(shí),對(duì)第二存儲(chǔ)設(shè)備中的數(shù)據(jù)進(jìn)行相應(yīng)的恢復(fù)。該數(shù)據(jù)恢復(fù)方法可以包括:
      [0163]步驟502,第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0164]步驟504,根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定該邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),該操作標(biāo)記用于指示該邏輯地址中存儲(chǔ)的數(shù)據(jù)被從第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0165]步驟506,判斷該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0166]步驟508,若判斷結(jié)果為該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù),則獲得該歷史數(shù)據(jù);
      [0167]步驟510,將該歷史數(shù)據(jù)以及該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù)。
      [0168]綜上所述,本發(fā)明實(shí)施例提供的數(shù)據(jù)恢復(fù)方法,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)刪除的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0169]為了對(duì)上述圖9所示的數(shù)據(jù)恢復(fù)方法做進(jìn)一步的描述,請(qǐng)參見(jiàn)圖10,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)恢復(fù)方法的方法流程圖。該數(shù)據(jù)恢復(fù)方法可以用于如圖1所示的存儲(chǔ)系統(tǒng)中,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中的數(shù)據(jù)錯(cuò)處進(jìn)行數(shù)據(jù)恢復(fù)時(shí),對(duì)第二存儲(chǔ)設(shè)備中的數(shù)據(jù)進(jìn)行相應(yīng)的恢復(fù)。以第一存儲(chǔ)設(shè)備基于ROW進(jìn)行數(shù)據(jù)存儲(chǔ)為例,該數(shù)據(jù)恢復(fù)方法可以包括:
      [0170]步驟602,第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0171]該數(shù)據(jù)恢復(fù)指令可以是管理人員在第一存儲(chǔ)設(shè)備上進(jìn)行快照回滾操作時(shí)發(fā)出的快照回滾指令。具體的,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備中發(fā)生硬盤(pán)寫(xiě)錯(cuò)誤、文件損壞或程序故障時(shí),管理人員可以向第一存儲(chǔ)設(shè)備發(fā)出快照回滾指令,該快照回滾指令用于指示第一存儲(chǔ)設(shè)備將數(shù)據(jù)恢復(fù)至目標(biāo)快照時(shí)間點(diǎn)時(shí)的狀態(tài)。
      [0172]步驟604,根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定該邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù);
      [0173]其中,該操作標(biāo)記用于指示該邏輯地址中存儲(chǔ)的數(shù)據(jù)被從第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息。在最近一次生成該第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),第一存儲(chǔ)設(shè)備根據(jù)該邏輯地址中存儲(chǔ)的數(shù)據(jù)被從該第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成該操作標(biāo)記,并保存該邏輯地址與該操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。當(dāng)?shù)谝淮鎯?chǔ)設(shè)備接收到包含有目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令時(shí),可以根據(jù)存儲(chǔ)的該邏輯地址與該操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定該邏輯地址中的數(shù)據(jù)是否是在該目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù)。[0174]在基于ROW存儲(chǔ)數(shù)據(jù)過(guò)程中,每一次生成數(shù)據(jù)的快照時(shí),第一存儲(chǔ)設(shè)備對(duì)應(yīng)存儲(chǔ)各個(gè)數(shù)據(jù)的邏輯地址和物理地址之間的對(duì)應(yīng)關(guān)系,同時(shí),第一存儲(chǔ)設(shè)備還根據(jù)各個(gè)邏輯地址中的數(shù)據(jù)的刪除時(shí)間為各個(gè)邏輯地址生成對(duì)應(yīng)的操作標(biāo)記,并存儲(chǔ)生成的操作標(biāo)記和各個(gè)邏輯地址之間的對(duì)應(yīng)關(guān)系。其中,該操作標(biāo)記具體可以是生成快照時(shí)的快照時(shí)間點(diǎn),也可以是各個(gè)快照的流水號(hào)或者事務(wù)號(hào)等。
      [0175]具體的,以操作標(biāo)記為快照時(shí)間點(diǎn)為例,假設(shè)第一存儲(chǔ)設(shè)備先后2次生成數(shù)據(jù)的快照,每次生成快照時(shí)存儲(chǔ)的各個(gè)邏輯地址與物理地址以及操作標(biāo)記之間的對(duì)應(yīng)關(guān)系如圖
      11所示。其中,在tl時(shí)刻之前,第一存儲(chǔ)設(shè)備中存儲(chǔ)有a、b、c和d四個(gè)數(shù)據(jù),該四個(gè)數(shù)據(jù)的邏輯地址分別為L(zhǎng)1、L2、L3和L4,物理地址分別為P1、P2、P3和P4。在tl時(shí)刻時(shí),第一存儲(chǔ)設(shè)備首次生成數(shù)據(jù)的快照,同時(shí)生成各個(gè)邏輯地址對(duì)應(yīng)的操作標(biāo)記為tl,該操作標(biāo)記tl用于指示對(duì)應(yīng)的邏輯地址中的數(shù)據(jù)的寫(xiě)入時(shí)間在tl時(shí)刻之前。在tl時(shí)刻到t2時(shí)刻之間的時(shí)間段內(nèi),邏輯地址為L(zhǎng)1、L2和L3的數(shù)據(jù)保持不變,邏輯地址為L(zhǎng)4對(duì)應(yīng)的數(shù)據(jù)d被刪除;在t2時(shí)刻時(shí),第一存儲(chǔ)設(shè)備第二次生成數(shù)據(jù)的快照,同時(shí)生成邏輯地址L4對(duì)應(yīng)的操作標(biāo)記為t2,生成其余邏輯地址對(duì)應(yīng)的操作標(biāo)記為tl,其中,該操作標(biāo)記t2用于指示邏輯地址L4中的數(shù)據(jù)的刪除時(shí)間在t2時(shí)刻到t3時(shí)刻之間。
      [0176]在t2時(shí)刻之后,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備接收到數(shù)據(jù)恢復(fù)指令時(shí),若該數(shù)據(jù)恢復(fù)指令中的目標(biāo)快照時(shí)間點(diǎn)為tl,此時(shí),第一存儲(chǔ)設(shè)備獲取t2時(shí)刻生成的各個(gè)邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系,并確定對(duì)應(yīng)的操作標(biāo)記大于tl的邏輯地址中的數(shù)據(jù)為tl時(shí)刻之后寫(xiě)入第一存儲(chǔ)設(shè)備或者從第一存儲(chǔ)設(shè)備刪除的數(shù)據(jù),即邏輯地址L4中的數(shù)據(jù)為tl時(shí)刻之后被從第一存儲(chǔ)設(shè)備刪除的數(shù)據(jù)。
      [0177]此外,第一存儲(chǔ)設(shè)備每次寫(xiě)入數(shù)據(jù)或者刪除數(shù)據(jù)時(shí),都會(huì)與第二存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)同步。比如,當(dāng)?shù)谝淮鎯?chǔ)設(shè)備新寫(xiě)入一個(gè)邏輯地址對(duì)應(yīng)的數(shù)據(jù)或者對(duì)原有邏輯地址中的數(shù)據(jù)進(jìn)行修改時(shí),將寫(xiě)入的數(shù)據(jù)發(fā)送給第二存儲(chǔ)設(shè)備,由第二存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)更新;當(dāng)?shù)谝淮鎯?chǔ)設(shè)備將原有邏輯地址中的數(shù)據(jù)刪除時(shí),向第二存儲(chǔ)設(shè)備發(fā)送刪除通知,由第二存儲(chǔ)設(shè)備將對(duì)應(yīng)的邏輯地址中的數(shù)據(jù)刪除。
      [0178]步驟606,判斷該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);若是,進(jìn)入步驟608,否則,進(jìn)入步驟612 ;
      [0179]第一存儲(chǔ)設(shè)備確定某一邏輯地址中的數(shù)據(jù)為在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù)之后,可以獲取目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系,并根據(jù)目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系判斷該邏輯地址在該目標(biāo)快照時(shí)間點(diǎn)時(shí)是否對(duì)應(yīng)有物理地址,若目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系表明在目標(biāo)快照時(shí)間點(diǎn)時(shí)該邏輯地址對(duì)應(yīng)有物理地址,則判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù);若目標(biāo)快照時(shí)間點(diǎn)時(shí)生成的各個(gè)邏輯地址與物理地址之間的對(duì)應(yīng)關(guān)系表明在目標(biāo)快照時(shí)間點(diǎn)時(shí)該邏輯地址未對(duì)應(yīng)有物理地址或者在目標(biāo)快照時(shí)間點(diǎn)時(shí)不存在該邏輯地址,則判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)歷史數(shù)據(jù)。
      [0180]步驟608,獲得該歷史數(shù)據(jù);
      [0181]當(dāng)判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)存儲(chǔ)有歷史數(shù)據(jù)時(shí),第一存儲(chǔ)設(shè)備獲取該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址,并根據(jù)該物理地址獲得該歷史數(shù)據(jù)。[0182]以圖11為例,其中邏輯地址L4在tl時(shí)刻時(shí)對(duì)應(yīng)有物理地址,則判斷邏輯地址L4在tl時(shí)刻存儲(chǔ)有歷史數(shù)據(jù),第一存儲(chǔ)設(shè)備將tl時(shí)刻時(shí)邏輯地址L4對(duì)應(yīng)的物理地址P4中存儲(chǔ)的數(shù)據(jù)d獲得為邏輯地址L4的歷史數(shù)據(jù)。
      [0183]步驟610,將該歷史數(shù)據(jù)以及該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備;
      [0184]第一存儲(chǔ)設(shè)備將該歷史數(shù)據(jù)以及該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將自身存儲(chǔ)的該邏輯地址對(duì)應(yīng)的數(shù)據(jù)替換為該歷史數(shù)據(jù),已完成數(shù)據(jù)的恢復(fù)。
      [0185]以圖4為例,第一存儲(chǔ)設(shè)備將邏輯地址L4和數(shù)據(jù)d發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中的邏輯地址L4對(duì)應(yīng)的數(shù)據(jù)替換為d,從而完成數(shù)據(jù)的恢復(fù)。
      [0186]步驟612,將該邏輯地址以及與該邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給第二存儲(chǔ)設(shè)備;
      [0187]當(dāng)判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)存儲(chǔ)有歷史數(shù)據(jù)時(shí),第一存儲(chǔ)設(shè)備將該邏輯地址以及與該邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備在存儲(chǔ)有與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)該刪除指示將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。其中,該刪除指示可以是一個(gè)用于指示第二存儲(chǔ)設(shè)備刪除數(shù)據(jù)的刪除代碼。
      [0188]由于在第一存儲(chǔ)設(shè)備最近一次生成數(shù)據(jù)的快照以及邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系時(shí)刻至第一存儲(chǔ)設(shè)備接收到數(shù)據(jù)恢復(fù)指令之間的一段時(shí)間內(nèi),第一存儲(chǔ)設(shè)備中可能重新寫(xiě)入該邏輯地址中的數(shù)據(jù)并備份至第二存儲(chǔ)設(shè)備,因此,第二存儲(chǔ)設(shè)備接收到該刪除代碼后,首先檢測(cè)第二存儲(chǔ)設(shè)備中是否存儲(chǔ)有與該邏輯地址對(duì)應(yīng)的數(shù)據(jù),并在檢測(cè)出第二存儲(chǔ)設(shè)備中存儲(chǔ)有與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),將第二存儲(chǔ)設(shè)備中的該邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0189]綜上所述,本發(fā)明實(shí)施例提供的數(shù)據(jù)恢復(fù)方法,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)刪除的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0190]請(qǐng)參見(jiàn)圖12,其示出了本發(fā)明一個(gè)實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖,該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖9或圖10所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0191]指令接收模塊701,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0192]確定模塊702,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0193]判斷模塊703,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0194]獲得模塊704,用于若所述判斷模塊703的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0195]第一發(fā)送模塊705,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0196]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)刪除的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0197]為了對(duì)上述圖12所示的第一存儲(chǔ)設(shè)備做進(jìn)一步的描述,請(qǐng)參見(jiàn)圖13,其示出了本發(fā)明另一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖9或圖10所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0198]指令接收模塊801,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間
      占.[0199]確定模塊802,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0200]判斷模塊803,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0201]獲得模塊804,用于若所述判斷模塊803的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0202]第一發(fā)送模塊805,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0203]所述第一存儲(chǔ)設(shè)備還包括:
      [0204]第二發(fā)送模塊806,用于若所述判斷模塊803的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0205]所述獲得模塊804,包括:
      [0206]地址獲取單元804a,獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0207]數(shù)據(jù)獲得單元804b,用于根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0208]所述第一存儲(chǔ)設(shè)備還包括:
      [0209]標(biāo)記生成模塊807,用于在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成所述操作標(biāo)記;
      [0210]保存模塊808,用于保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      [0211]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)刪除的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0212]請(qǐng)參見(jiàn)圖14,其示出了本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖,該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖9或圖10所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0213]至少一個(gè)I/O接口 009、至少一個(gè)處理器010,比如CPU、存儲(chǔ)器011和顯示器012 ;
      存儲(chǔ)器011可能包含高速Ram存儲(chǔ)器,也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。存儲(chǔ)器011可選的可以包含至少一個(gè)位于遠(yuǎn)離前述處理器010的存儲(chǔ)裝置。在一些實(shí)施方式中,存儲(chǔ)器011存儲(chǔ)了如下的元素,模塊或者數(shù)據(jù)結(jié)構(gòu),或者他們的子集,或者他們的擴(kuò)展集:
      [0214]操作系統(tǒng)0111,包含各種程序,用于實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù);
      [0215]應(yīng)用模塊0112,包含一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)模塊被配置由所述一個(gè)或多個(gè)處理器010執(zhí)行,所述一個(gè)或多個(gè)模塊具有如下功能:
      [0216]所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);
      [0217]根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入被從所述第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0218]判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0219]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0220]將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0221]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)刪除的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0222]為了對(duì)上述圖14所示的第一存儲(chǔ)設(shè)備做進(jìn)一步的描述,請(qǐng)參見(jiàn)圖15,其示出了本發(fā)明又一實(shí)施例提供的第一存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。該第一存儲(chǔ)設(shè)備用于如圖1所示的存儲(chǔ)系統(tǒng)中,且該第一存儲(chǔ)設(shè)備可以用于執(zhí)行圖9或圖10所示的數(shù)據(jù)恢復(fù)方法。該第一存儲(chǔ)設(shè)備可以包括:
      [0223]至少一個(gè)I/O接口 013、至少一個(gè)處理器014,比如CPU、存儲(chǔ)器015和顯示器016 ;存儲(chǔ)器015可能包含高速Ram存儲(chǔ)器,也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。存儲(chǔ)器015可選的可以包含至少一個(gè)位于遠(yuǎn)離前述處理器014的存儲(chǔ)裝置。在一些實(shí)施方式中,存儲(chǔ)器007存儲(chǔ)了如下的元素,模塊或者數(shù)據(jù)結(jié)構(gòu),或者他們的子集,或者他們的擴(kuò)展集:
      [0224]操作系統(tǒng)0151,包含各種程序,用于實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù);
      [0225]應(yīng)用模塊0152,包含一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)模塊被配置由所述一個(gè)或多個(gè)處理器014執(zhí)行,所述一個(gè)或多個(gè)模塊具有如下功能:
      [0226]所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);
      [0227]根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息;
      [0228]判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù);
      [0229]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù);
      [0230]將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      [0231]所述功能還包括:
      [0232]若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      [0233]所述獲得所述歷史數(shù)據(jù),包括:
      [0234]獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址;
      [0235]根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      [0236]所述功能還包括:
      [0237]在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成所述操作標(biāo)記;
      [0238]保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。[0239]綜上所述,本發(fā)明實(shí)施例提供的第一存儲(chǔ)設(shè)備,通過(guò)在第一存儲(chǔ)設(shè)備接收包括目標(biāo)快照時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)指令,確定邏輯地址中存儲(chǔ)的數(shù)據(jù)是在目標(biāo)快照時(shí)間點(diǎn)之后被從第一存儲(chǔ)設(shè)備中刪除的數(shù)據(jù),并判斷出該邏輯地址在目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有歷史數(shù)據(jù)后,將該歷史數(shù)據(jù)和該邏輯地址發(fā)送給第二存儲(chǔ)設(shè)備,使得第二存儲(chǔ)設(shè)備將第二存儲(chǔ)設(shè)備中存儲(chǔ)的與該邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成該歷史數(shù)據(jù),即第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),只需要向第二存儲(chǔ)設(shè)備發(fā)送在目標(biāo)快照時(shí)間點(diǎn)之后發(fā)生數(shù)據(jù)刪除的邏輯地址在目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的歷史數(shù)據(jù),解決了現(xiàn)有技術(shù)中需要將主存儲(chǔ)設(shè)備中所有數(shù)據(jù)全部復(fù)制給從存儲(chǔ)設(shè)備的問(wèn)題,達(dá)到減少?gòu)?fù)制時(shí)間,節(jié)約帶寬資源的目的。
      [0240]需要說(shuō)明的是:上述實(shí)施例提供的第一存儲(chǔ)設(shè)備在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的第一存儲(chǔ)設(shè)備與數(shù)據(jù)恢復(fù)的方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過(guò)程詳見(jiàn)方法實(shí)施例,這里不再贅述。
      [0241 ] 上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
      [0242]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
      [0243]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種數(shù)據(jù)恢復(fù)方法,其特征在于,所述方法應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述方法包括: 所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息; 判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù); 若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù); 將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲得所述歷史數(shù)據(jù),包括: 獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址; 根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      4.根據(jù)權(quán)利要求1至3任一所述的方法,其特征在于,所述方法還包括: 在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息生成所述操作標(biāo)記; 保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      5.第一存儲(chǔ)設(shè)備,其特征在于,所述第一存儲(chǔ)設(shè)備應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括所述第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述第一存儲(chǔ)設(shè)備包括: 指令接收模塊,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn); 確定模塊,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)是在所述目標(biāo)快照時(shí)間點(diǎn)之后寫(xiě)入所述第一存儲(chǔ)設(shè)備的數(shù)據(jù),所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息; 判斷模塊,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù); 獲得模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù); 第一發(fā)送模塊,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      6.根據(jù)權(quán)利要求5所述的第一存儲(chǔ)設(shè)備,其特征在于,所述第一存儲(chǔ)設(shè)備還包括:第二發(fā)送模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      7.根據(jù)權(quán)利要求5所述的第一存儲(chǔ)設(shè)備,其特征在于,所述獲得模塊,包括: 地址獲取單元,獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址; 數(shù)據(jù)獲得單元,用于根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      8.根據(jù)權(quán)利要求5至7任一所述的第一存儲(chǔ)設(shè)備,其特征在于,所述第一存儲(chǔ)設(shè)備還包括: 標(biāo)記生成模塊,用于在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)設(shè)備的時(shí)間信息生成所述操作標(biāo)記; 保存模塊,用于保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      9.一種數(shù)據(jù)恢復(fù)方法,其特征在于,所述方法應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述方法包括: 所述第一存儲(chǔ)設(shè)備接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn);根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除,所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息; 判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù); 若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù); 將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括: 若判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述獲得所述歷史數(shù)據(jù),包括: 獲取所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址; 根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      12.根據(jù)權(quán)利要求9至11任一所述的方法,其特征在于,所述方法還包括: 在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成所述操作標(biāo)記; 保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      13.第一存儲(chǔ)設(shè)備,其特征在于,所述第一存儲(chǔ)設(shè)備應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)至少包括所述第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備,其中,所述第一存儲(chǔ)設(shè)備周期性生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照,每次生成快照的時(shí)間點(diǎn)為一個(gè)快照時(shí)間點(diǎn),所述第一存儲(chǔ)設(shè)備包括: 指令接收模塊,用于接收數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令包括目標(biāo)快照時(shí)間點(diǎn); 確定模塊,用于根據(jù)事先保存的邏輯地址與操作標(biāo)記之間的對(duì)應(yīng)關(guān)系確定所述邏輯地址中存儲(chǔ)的數(shù)據(jù)在所述目標(biāo)快照時(shí)間點(diǎn)之后被從所述第一存儲(chǔ)設(shè)備中刪除,所述操作標(biāo)記用于指示所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息; 判斷模塊,用于判斷所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)是否存儲(chǔ)有歷史數(shù)據(jù); 獲得模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)存儲(chǔ)有所述歷史數(shù)據(jù),則獲得所述歷史數(shù)據(jù); 第一發(fā)送模塊,用于將所述歷史數(shù)據(jù)以及所述邏輯地址發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)恢復(fù)成所述歷史數(shù)據(jù)。
      14.根據(jù)權(quán)利要求13所述的第一存儲(chǔ)設(shè)備,其特征在于,所述第一存儲(chǔ)設(shè)備還包括: 第二發(fā)送模塊,用于若所述判斷模塊的判斷結(jié)果為所述邏輯地址在所述目標(biāo)快照時(shí)間點(diǎn)未存儲(chǔ)有所述歷史數(shù)據(jù),則將所述邏輯地址以及與所述邏輯地址對(duì)應(yīng)的刪除指示發(fā)送給所述第二存儲(chǔ)設(shè)備,使得所述第二存儲(chǔ)設(shè)備在所述第二存儲(chǔ)設(shè)備中存儲(chǔ)有與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)時(shí),根據(jù)所述刪除指示將所述第二存儲(chǔ)設(shè)備中存儲(chǔ)的與所述邏輯地址對(duì)應(yīng)的數(shù)據(jù)刪除。
      15.根據(jù)權(quán)利要求13所述的第一存儲(chǔ)設(shè)備,其特征在于,所述獲得模塊,包括: 地址獲取單元,獲取所述邏`輯地址在所述目標(biāo)快照時(shí)間點(diǎn)時(shí)對(duì)應(yīng)的物理地址; 數(shù)據(jù)獲得單元,用于根據(jù)所述物理地址獲得所述歷史數(shù)據(jù)。
      16.根據(jù)權(quán)利要求13至15任一所述的第一存儲(chǔ)設(shè)備,其特征在于,所述第一存儲(chǔ)設(shè)備還包括: 標(biāo)記生成模塊,用于在最近一次生成所述第一存儲(chǔ)設(shè)備中的數(shù)據(jù)的快照時(shí),根據(jù)所述邏輯地址中存儲(chǔ)的數(shù)據(jù)被從所述第一存儲(chǔ)設(shè)備中刪除的時(shí)間信息生成所述操作標(biāo)記; 保存模塊,用于保存所述邏輯地址與所述操作標(biāo)記之間的對(duì)應(yīng)關(guān)系。
      【文檔編號(hào)】G06F11/14GK103678039SQ201310655743
      【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2013年12月5日 優(yōu)先權(quán)日:2013年12月5日
      【發(fā)明者】李大權(quán), 歐陽(yáng)戟 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1