国产精品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>

      重復(fù)數(shù)據(jù)刪除方法及裝置制造方法

      文檔序號(hào):6637328閱讀:242來源:國知局
      重復(fù)數(shù)據(jù)刪除方法及裝置制造方法
      【專利摘要】本發(fā)明實(shí)施例公開了一種重復(fù)數(shù)據(jù)刪除方法及裝置。其中,重復(fù)數(shù)據(jù)刪除方法,包括:將接收到的初始數(shù)據(jù)進(jìn)行分塊;獲得每個(gè)數(shù)據(jù)分塊的指紋;根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值;查找所述初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除所述重復(fù)數(shù)據(jù)分塊;存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊;根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值;比較所述第一校驗(yàn)值和所述第二校驗(yàn)值,當(dāng)所述第一校驗(yàn)值和所述第二校驗(yàn)值一致時(shí),確定所述初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。通過本發(fā)明實(shí)施例,能夠?yàn)橹貜?fù)數(shù)據(jù)刪除過程中數(shù)據(jù)的準(zhǔn)確性提供保證。
      【專利說明】重復(fù)數(shù)據(jù)刪除方法及裝置

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及一種重復(fù)數(shù)據(jù)刪除方法及裝置。

      【背景技術(shù)】
      [0002]重復(fù)數(shù)據(jù)刪除技術(shù)是應(yīng)用于存儲(chǔ)系統(tǒng)的一種數(shù)據(jù)縮減技術(shù),尤其常見于基于磁盤的備份系統(tǒng)中。該技術(shù)的工作方式是將備份系統(tǒng)中的數(shù)據(jù)進(jìn)行等長或變長分成若干數(shù)據(jù)塊,重復(fù)的數(shù)據(jù)塊只保留其中一份,其它用指示符取代,從而消除冗余數(shù)據(jù)。
      [0003]現(xiàn)有技術(shù),為了保證重復(fù)數(shù)據(jù)刪除后存儲(chǔ)數(shù)據(jù)的正確性,可以在底層存儲(chǔ)采用RAID6防止雙盤失效;或者,通過遠(yuǎn)程復(fù)制將當(dāng)前數(shù)據(jù)再復(fù)制一份;另外,通過后臺(tái)巡檢定期檢查重復(fù)數(shù)據(jù)刪除后所存儲(chǔ)數(shù)據(jù)的正確性。
      [0004]然而,在重復(fù)數(shù)據(jù)刪除過程中,如果由于程序出現(xiàn)錯(cuò)誤問題,或者程序受到外部攻擊,可能導(dǎo)致重復(fù)數(shù)據(jù)刪除過程中錯(cuò)誤引用了分塊,從而導(dǎo)致數(shù)據(jù)錯(cuò)誤的擴(kuò)大化,而重復(fù)數(shù)據(jù)刪除的準(zhǔn)確性只能通過后續(xù)的巡檢操作進(jìn)行確認(rèn)。
      [0005]可見,上述現(xiàn)有技術(shù)中即使通過后臺(tái)巡檢也無法保證重復(fù)數(shù)據(jù)刪除過程中數(shù)據(jù)處理的準(zhǔn)確性。


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

      [0006]本發(fā)明實(shí)施例中提供了一種重復(fù)數(shù)據(jù)刪除方法及裝置,能夠?yàn)橹貜?fù)數(shù)據(jù)刪除過程中數(shù)據(jù)的準(zhǔn)確性提供保證。
      [0007]為了解決上述技術(shù)問題,本發(fā)明實(shí)施例公開了如下技術(shù)方案:
      [0008]一方面,提供一種重復(fù)數(shù)據(jù)刪除方法,包括:
      [0009]將接收到的初始數(shù)據(jù)進(jìn)行分塊;
      [0010]獲得每個(gè)數(shù)據(jù)分塊的指紋;
      [0011]根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值;
      [0012]查找所述初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除所述重復(fù)數(shù)據(jù)分塊;
      [0013]存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊;
      [0014]根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值;
      [0015]比較所述第一校驗(yàn)值和所述第二校驗(yàn)值,當(dāng)所述第一校驗(yàn)值和所述第二校驗(yàn)值一致時(shí),確定所述初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。
      [0016]結(jié)合上述一方面,在第一種可能的實(shí)現(xiàn)方式中,所述將接收到的初始數(shù)據(jù)進(jìn)行分塊,包括:
      [0017]將接收到的等容量的數(shù)據(jù)處理單元中的所述初始數(shù)據(jù)進(jìn)行定長或變長分塊,其中,所述初始數(shù)據(jù)在進(jìn)行分塊之前,首先劃分為多個(gè)等容量的所述數(shù)據(jù)處理單元。
      [0018]結(jié)合上述一方面,和第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值,包括:
      [0019]根據(jù)各個(gè)所述數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的第一子校驗(yàn)值;
      [0020]將所有所述第一子校驗(yàn)值按照相同的迭代方式,生成所述初始數(shù)據(jù)的第一校驗(yàn)值。
      [0021]結(jié)合上述一方面,和第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊,包括:
      [0022]將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊存儲(chǔ)于對(duì)應(yīng)的容器中,并在所述容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      [0023]結(jié)合上述一方面,和第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊,包括:
      [0024]將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊進(jìn)行壓縮處理;
      [0025]將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的容器中,并在所述容器中存儲(chǔ)其中各個(gè)所述完成壓縮的唯一塊的指紋。
      [0026]結(jié)合上述一方面,和第三種或第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值,包括:
      [0027]根據(jù)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述容器的第二子校驗(yàn)值;
      [0028]將所有所述第二子校驗(yàn)值按照相同的迭代方式,生成所述當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      [0029]結(jié)合上述一方面,和第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,還包括:
      [0030]當(dāng)進(jìn)行容器級(jí)巡檢時(shí),根據(jù)巡檢時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第三子校驗(yàn)值;
      [0031]比較各個(gè)所述容器對(duì)應(yīng)的所述第二子校驗(yàn)值和所述第三子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第三子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器中數(shù)據(jù)破壞。
      [0032]結(jié)合上述一方面,和第五種或第六種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,還包括:
      [0033]當(dāng)進(jìn)行空間回收檢驗(yàn)時(shí),根據(jù)檢驗(yàn)時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第四子校驗(yàn)值;
      [0034]比較各個(gè)所述容器對(duì)應(yīng)的所述第子二校驗(yàn)值和所述第四子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第四子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器空間中的數(shù)據(jù)分塊被錯(cuò)誤回收。
      [0035]結(jié)合上述一方面,和第二種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述根據(jù)各個(gè)所述數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的第一子校驗(yàn)值,包括:
      [0036]假設(shè)所述數(shù)據(jù)單元中按照初始數(shù)據(jù)組裝順序,包含N(N > 2)個(gè)數(shù)據(jù)分塊,根據(jù)第一數(shù)據(jù)分塊的第一指紋和第二分塊的第二指紋,迭代生成第一子校驗(yàn)和;
      [0037]根據(jù)第三數(shù)據(jù)分塊的第三指紋和所述第一子校驗(yàn)和,迭代生成第二子校驗(yàn)和;
      [0038]以此類推,直至根據(jù)第N數(shù)據(jù)分塊的第N指紋和第(N-1)子校驗(yàn)和,迭代生成所述第一子校驗(yàn)值。
      [0039]結(jié)合上述一方面,和第八種可能的實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,所述根據(jù)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述容器的第二子校驗(yàn)值,包括:
      [0040]假設(shè)所述容器中按照初始數(shù)據(jù)分塊順序,包含M(N >M^2)個(gè)數(shù)據(jù)分塊,根據(jù)第一數(shù)據(jù)分塊的第一指紋和第二分塊的第二指紋,迭代生成第一子校驗(yàn)和;
      [0041]根據(jù)第三數(shù)據(jù)分塊的第三指紋和所述第一子校驗(yàn)和,迭代生成第二子校驗(yàn)和;
      [0042]以此類推,直至根據(jù)第M數(shù)據(jù)分塊的第M指紋和第(M-1)子校驗(yàn)和,迭代生成所述第二子校驗(yàn)值。
      [0043]另一方面,提供一種重復(fù)數(shù)據(jù)刪除裝置,包括:
      [0044]數(shù)據(jù)分塊模塊,用于將接收到的初始數(shù)據(jù)進(jìn)行分塊;
      [0045]指紋獲取模塊,用于獲得每個(gè)數(shù)據(jù)分塊的指紋;
      [0046]第一校驗(yàn)值生成模塊,用于根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值;
      [0047]重刪模塊,用于查找所述初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除所述重復(fù)數(shù)據(jù)分塊;
      [0048]唯一塊存儲(chǔ)模塊,用于存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊;
      [0049]第二校驗(yàn)值生成模塊,用于根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值;
      [0050]校驗(yàn)值比較模塊,用于比較所述第一校驗(yàn)值和所述第二校驗(yàn)值,當(dāng)所述第一校驗(yàn)值和所述第二校驗(yàn)值一致時(shí),確定所述初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。
      [0051]結(jié)合上述另一方面,在第一種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)分塊模塊,具體將接收到的等容量的數(shù)據(jù)處理單元中的所述初始數(shù)據(jù)進(jìn)行定長或變長分塊,其中,所述初始數(shù)據(jù)在進(jìn)行分塊之前,首先劃分為多個(gè)等容量的所述數(shù)據(jù)處理單元。
      [0052]結(jié)合上述一方面,和第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述第一校驗(yàn)值生成模塊,包括:
      [0053]第一子校驗(yàn)值生成單元,用于根據(jù)各個(gè)所述數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的第一子校驗(yàn)值;
      [0054]第一校驗(yàn)值確定單元,用于將所有所述第一子校驗(yàn)值按照相同的迭代方式,生成所述初始數(shù)據(jù)的第一校驗(yàn)值。
      [0055]結(jié)合上述一方面,和第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述唯一塊存儲(chǔ)模塊,包括:
      [0056]第一容器存儲(chǔ)單元,用于將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊存儲(chǔ)于容器中;
      [0057]第一指紋存儲(chǔ)單元,用于在所述容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      [0058]結(jié)合上述一方面,和第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述唯一塊存儲(chǔ)模塊,包括:
      [0059]壓縮單元,用于將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊進(jìn)行壓縮處理;
      [0060]第二容器存儲(chǔ)單元,用于將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的容器中;
      [0061]第二指紋存儲(chǔ)單元,用于在所述容器中存儲(chǔ)其中各個(gè)所述完成壓縮的唯一塊的指紋。
      [0062]結(jié)合上述一方面,和第三種或第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述第二校驗(yàn)值生成模塊,包括:
      [0063]第二子校驗(yàn)值生成單元,用于根據(jù)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述容器的第二子校驗(yàn)值;
      [0064]第二校驗(yàn)值確定單元,用于將所有所述第二子校驗(yàn)值按照相同的迭代方式,生成所述當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      [0065]結(jié)合上述一方面,和第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,還包括:
      [0066]巡檢模塊,用于當(dāng)進(jìn)行容器級(jí)巡檢時(shí),根據(jù)巡檢時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第三子校驗(yàn)值;比較各個(gè)所述容器對(duì)應(yīng)的所述第二子校驗(yàn)值和所述第三子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第三子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器中數(shù)據(jù)破壞。
      [0067]結(jié)合上述一方面,和第五種或第六種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,還包括:
      [0068]空間回收檢驗(yàn)?zāi)K,用于當(dāng)進(jìn)行空間回收檢驗(yàn)時(shí),根據(jù)檢驗(yàn)時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第四子校驗(yàn)值;比較各個(gè)所述容器對(duì)應(yīng)的所述第二子校驗(yàn)值和所述第四子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第四子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器空間中的數(shù)據(jù)分塊被錯(cuò)誤回收。
      [0069]本發(fā)明實(shí)施例中,在重復(fù)數(shù)據(jù)刪除過程中,當(dāng)對(duì)初始數(shù)據(jù)完成分塊時(shí),即根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值;當(dāng)刪除重復(fù)數(shù)據(jù)分塊之后,可根據(jù)當(dāng)前的唯一塊的指紋,生成數(shù)據(jù)文件當(dāng)前的第二校驗(yàn)值,通過將第二校驗(yàn)值和第一校驗(yàn)值進(jìn)行比較,如果前后兩個(gè)校驗(yàn)值一致,則表示初始數(shù)據(jù)的重復(fù)數(shù)據(jù)刪除過程是可靠的。通過比較數(shù)據(jù)文件在刪除重復(fù)數(shù)據(jù)前后的校驗(yàn)值,可以大大提高重復(fù)數(shù)據(jù)刪除流程可靠性驗(yàn)證的效率,為重復(fù)數(shù)據(jù)刪除過程中數(shù)據(jù)的準(zhǔn)確性提供保證。

      【專利附圖】

      【附圖說明】
      [0070]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0071]圖1為本發(fā)明提供的一種重復(fù)數(shù)據(jù)刪除方法實(shí)施例的流程圖;
      [0072]圖2為圖1中步驟103的實(shí)現(xiàn)流程圖;
      [0073]圖3為本發(fā)明提供的根據(jù)數(shù)據(jù)分塊指紋生成第一校驗(yàn)值的示意圖;
      [0074]圖4為本發(fā)明實(shí)施例中第二校驗(yàn)值的生成方式示意圖;
      [0075]圖5為本發(fā)明實(shí)施例中一種在容器中存儲(chǔ)唯一塊的示意圖;
      [0076]圖6為本發(fā)明實(shí)施例中迭代生成校驗(yàn)值的示意圖;
      [0077]圖7為本發(fā)明提供的一種重復(fù)數(shù)據(jù)刪除裝置實(shí)施例的結(jié)構(gòu)示意圖;
      [0078]圖8為本發(fā)明圖7中第一校驗(yàn)值生成模塊的結(jié)構(gòu)示意圖;
      [0079]圖9為本發(fā)明圖7中唯一塊存儲(chǔ)模塊的結(jié)構(gòu)示意圖;
      [0080]圖10為本發(fā)明圖7中唯一塊存儲(chǔ)|旲塊的另一種結(jié)構(gòu)不意圖;
      [0081]圖11為本發(fā)明圖7中第二校驗(yàn)值生成模塊的結(jié)構(gòu)示意圖:
      [0082]圖12為本發(fā)明提供的又一種重復(fù)數(shù)據(jù)刪除裝置實(shí)施例的結(jié)構(gòu)示意圖:
      [0083]圖13為本發(fā)明提供的另一種重復(fù)數(shù)據(jù)刪除裝置實(shí)施例的結(jié)構(gòu)示意圖:
      [0084]圖14為本發(fā)明提供的再一種重復(fù)數(shù)據(jù)刪除裝置實(shí)施例的結(jié)構(gòu)示意圖。

      【具體實(shí)施方式】
      [0085]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例中技術(shù)方案作進(jìn)一步詳細(xì)的說明。
      [0086]參見圖1,為本發(fā)明提供的一種重復(fù)數(shù)據(jù)刪除方法實(shí)施例的流程,具體可以包括:
      [0087]步驟101、將接收到的初始數(shù)據(jù)進(jìn)行分塊。
      [0088]該步驟中,當(dāng)接收到初始數(shù)據(jù)之后,需要對(duì)初始數(shù)據(jù)進(jìn)行分塊。
      [0089]在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,可以首先將初始數(shù)據(jù)劃分為多個(gè)等容量的數(shù)據(jù)處理單元(Buffer)。當(dāng)接收到以Buffer的形式下發(fā)的初始數(shù)據(jù)后,可以將各個(gè)Buffer中的初始數(shù)據(jù)進(jìn)行分塊處理。分塊方式可以為定長分塊或者變長分塊。
      [0090]當(dāng)將初始數(shù)據(jù)劃分為統(tǒng)一大小的Buffer進(jìn)行重復(fù)數(shù)據(jù)刪除時(shí),空間申請(qǐng)統(tǒng)一,每個(gè)Buffer的數(shù)據(jù)分塊數(shù)目相對(duì)固定,不會(huì)因?yàn)槌跏嘉募?shù)據(jù)大小而造成數(shù)據(jù)分塊數(shù)目變化太大;此外,劃分成Buffer進(jìn)行重復(fù)數(shù)據(jù)刪除相對(duì)文件級(jí)重復(fù)數(shù)據(jù)刪除,重刪粒度縮小,可以節(jié)約存儲(chǔ)空間。
      [0091]步驟102、獲得每個(gè)數(shù)據(jù)分塊的指紋。
      [0092]該步驟中,當(dāng)各個(gè)Buffer完成數(shù)據(jù)分塊之后,可以通過哈希算法計(jì)算得到每個(gè)分塊的指紋,用于后續(xù)數(shù)據(jù)特征的比對(duì)。
      [0093]步驟103、根據(jù)所有數(shù)據(jù)分塊的指紋,生成初始數(shù)據(jù)的第一校驗(yàn)值。
      [0094]該步驟中,根據(jù)所有數(shù)據(jù)分塊的指紋,最終生成整個(gè)初始數(shù)據(jù)的校驗(yàn)值,為了與后面出現(xiàn)的其他校驗(yàn)值相區(qū)分,此處,將進(jìn)行重復(fù)數(shù)據(jù)刪除之前生成的校驗(yàn)值稱為“第一校驗(yàn)值”。
      [0095]本發(fā)明實(shí)施例中,使用指紋作為唯一塊的判斷依據(jù),指紋相當(dāng)于分塊的摘要,較分塊本身體積很小,使用指紋計(jì)算檢驗(yàn)值,使得空間開銷小,對(duì)CPU等資源占用少,效率高,對(duì)整個(gè)重刪系統(tǒng)性能影響較小,不影響業(yè)務(wù)的運(yùn)行。
      [0096]步驟104、查找初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除重復(fù)數(shù)據(jù)分塊。
      [0097]該步驟中,執(zhí)行重復(fù)數(shù)據(jù)刪除的操作。具體地,通過相似性分析,查找初始數(shù)據(jù)中是否存在重復(fù)數(shù)據(jù)分塊,當(dāng)存在重復(fù)數(shù)據(jù)分塊時(shí),刪除重復(fù)數(shù)據(jù)分塊,只保留重復(fù)數(shù)據(jù)分塊中的一份,其他刪除的重復(fù)數(shù)據(jù)分塊用指示符進(jìn)行取代。
      [0098]步驟105、存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊。
      [0099]該步驟中,將刪除重復(fù)數(shù)據(jù)分塊之后的所有唯一塊進(jìn)行存儲(chǔ)。
      [0100]步驟106、根據(jù)所有唯一塊的指紋,采用與第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      [0101]該步驟中,當(dāng)完成唯一塊的存儲(chǔ)之后,根據(jù)唯一塊的指紋,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的校驗(yàn)值,稱為“第二校驗(yàn)值”。其中,第二校驗(yàn)值與第一校驗(yàn)值的生成方式相同。
      [0102]步驟107、比較第一校驗(yàn)值和第二校驗(yàn)值,當(dāng)?shù)谝恍r?yàn)值和第二校驗(yàn)值一致時(shí),確定初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。
      [0103]該步驟中,當(dāng)完成重復(fù)數(shù)據(jù)刪除之后,即可將初始數(shù)據(jù)對(duì)應(yīng)的第一校驗(yàn)值和第二校驗(yàn)值進(jìn)行比較,當(dāng)?shù)谝恍r?yàn)值和第二校驗(yàn)值一致時(shí),則表示當(dāng)前的重復(fù)數(shù)據(jù)刪除流程是可靠的;否則,說明當(dāng)前的重復(fù)數(shù)據(jù)刪除流程不正確,存在數(shù)據(jù)不一致的問題。
      [0104]本發(fā)明實(shí)施例中,在重復(fù)數(shù)據(jù)刪除過程中,當(dāng)對(duì)初始數(shù)據(jù)完成分塊時(shí),即根據(jù)所有數(shù)據(jù)分塊的指紋,生成初始數(shù)據(jù)的第一校驗(yàn)值;當(dāng)刪除重復(fù)數(shù)據(jù)分塊之后,可根據(jù)當(dāng)前的唯一塊的指紋,生成數(shù)據(jù)文件當(dāng)前的第二校驗(yàn)值,通過將第二校驗(yàn)值和第一校驗(yàn)值進(jìn)行比較,如果前后兩個(gè)校驗(yàn)值一致,則表示初始數(shù)據(jù)的重復(fù)數(shù)據(jù)刪除過程是可靠的。通過比較數(shù)據(jù)文件在刪除重復(fù)數(shù)據(jù)前后的校驗(yàn)值,可以大大提高重復(fù)數(shù)據(jù)刪除流程可靠性驗(yàn)證的效率,為重復(fù)數(shù)據(jù)刪除過程中數(shù)據(jù)的準(zhǔn)確性提供保證。
      [0105]為了便于對(duì)本發(fā)明技術(shù)方案的理解,下面結(jié)合【具體實(shí)施方式】進(jìn)行詳細(xì)說明。
      [0106]圖2所示為前述步驟103的一種具體實(shí)現(xiàn)方式,可以包括:
      [0107]步驟201、根據(jù)各個(gè)數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)數(shù)據(jù)處理單元的第一子校驗(yàn)值;
      [0108]步驟202、獲得所有第一子校驗(yàn)值組成的第一校驗(yàn)值集合,將第一校驗(yàn)值集合確定為初始數(shù)據(jù)的第一校驗(yàn)值。
      [0109]圖3所示為根據(jù)數(shù)據(jù)分塊指紋生成第一校驗(yàn)值的示意圖。待處理的文件數(shù)據(jù)首先被劃分為多個(gè)Buffer,如圖中的Bufferl?BufferN,將各個(gè)Buffer中的初始數(shù)據(jù)進(jìn)行分塊處理。分塊方式可以為定長分塊或者變長分塊。其中,以Bufferl和BufferN為例,Bufferl劃分為i個(gè)數(shù)據(jù)分塊,包括:分塊I?分塊i,BufferN的數(shù)據(jù)分塊包括:分塊j?分塊k。,當(dāng)各個(gè)Buffer完成數(shù)據(jù)分塊之后,通過哈希算法計(jì)算得到每個(gè)分塊的指紋,如圖3所示,假設(shè)分塊I?分塊i分別對(duì)應(yīng)的指紋為指紋I?指紋i,根據(jù)指紋I?指紋i,可以迭代出Bufferl對(duì)應(yīng)的子校驗(yàn)值,即:校驗(yàn)和I ;同理,根據(jù)指紋j?指紋k,可以迭代出BufferN對(duì)應(yīng)的子校驗(yàn)值,即:校驗(yàn)和N。當(dāng)分別生成對(duì)應(yīng)N個(gè)Buffer的子校驗(yàn)值(校驗(yàn)和I?校驗(yàn)和N)之后,可以進(jìn)一步獲得N個(gè)Buffer的子校驗(yàn)值構(gòu)成的校驗(yàn)值集合,即校驗(yàn)和C。此時(shí),校驗(yàn)和C即為初始文件數(shù)據(jù)對(duì)應(yīng)的校驗(yàn)值,用于后續(xù)對(duì)重復(fù)數(shù)據(jù)刪除流程的可靠性進(jìn)行校驗(yàn)。
      [0110]通常,刪除重復(fù)數(shù)據(jù)之后的唯一塊將會(huì)被寫入容器中進(jìn)行存儲(chǔ)。本發(fā)明實(shí)施例中,存儲(chǔ)唯一塊的具體方式可以包括以下兩種形式:
      [0111]一種是,將各個(gè)數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊存儲(chǔ)于對(duì)應(yīng)的容器中,并在容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      [0112]另一種是,將各個(gè)數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊進(jìn)行壓縮處理;之后,將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)數(shù)據(jù)處理單元的容器中,并在容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      [0113]當(dāng)完成唯一塊存儲(chǔ)時(shí),需要根據(jù)所有唯一塊的指紋,采用與第一校驗(yàn)值相同的生成方式,當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。具體地,第二校驗(yàn)值的生成方式如圖4所示,包括:
      [0114]步驟401、根據(jù)各個(gè)容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)容器的第二子校驗(yàn)值;
      [0115]步驟402、獲得所有第二子校驗(yàn)值組成的第二校驗(yàn)值集合,將第二校驗(yàn)值集合確定為當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      [0116]在前述第一種存儲(chǔ)唯一塊的實(shí)現(xiàn)方式中,如圖5所示,假設(shè)Buffer I的數(shù)據(jù)分塊I?數(shù)據(jù)分塊i在經(jīng)過重復(fù)數(shù)據(jù)刪除后的唯一塊存儲(chǔ)于容器I和容器2中,對(duì)應(yīng)各個(gè)唯一塊的指紋(fp)也同時(shí)存放在容器中數(shù)據(jù)分塊的元數(shù)據(jù)空間,被刪除的重復(fù)數(shù)據(jù)分塊通過引用方式記錄下來。根據(jù)容器I和容器2中的唯一塊的指紋,迭代生成對(duì)應(yīng)這兩個(gè)容器的第二子校驗(yàn)值,即:校驗(yàn)和P。進(jìn)一步,獲取存放對(duì)應(yīng)初始數(shù)據(jù)文件的所有唯一塊的各個(gè)容器對(duì)應(yīng)的第二子校驗(yàn)值的集合,即:校驗(yàn)和C'。需要說明的是,第二子校驗(yàn)值與第一子校驗(yàn)值的生成方式相同。通過比較校驗(yàn)和C'和圖3中的校驗(yàn)和C,可以判斷初始文件數(shù)據(jù)是否經(jīng)過正確的重復(fù)數(shù)據(jù)刪除流程。當(dāng)校驗(yàn)和C'=校驗(yàn)和C時(shí),表示當(dāng)前的重復(fù)數(shù)據(jù)刪除流程可靠。
      [0117]此外,由于容器中存儲(chǔ)的唯一塊與單個(gè)Buffer相對(duì)應(yīng),通過單獨(dú)比較校驗(yàn)和n'=校驗(yàn)和N,可以判斷對(duì)應(yīng)的Buffer中是否經(jīng)過正確的重復(fù)數(shù)據(jù)刪除流程。
      [0118]在前述第二種存儲(chǔ)唯一塊的實(shí)現(xiàn)方式中,與第一種存儲(chǔ)唯一塊的實(shí)現(xiàn)方式的不同之處在于,當(dāng)Buffer中的數(shù)據(jù)分塊經(jīng)過重復(fù)數(shù)據(jù)刪除之后,在將唯一塊寫入對(duì)應(yīng)容器之前,可以首先將唯一塊進(jìn)行壓縮處理,然后,將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)數(shù)據(jù)處理單元的容器中。這種處理方式適用于較大數(shù)據(jù)量的情形,通過數(shù)據(jù)壓縮,可以大大降低容器的占用率。與第一種存儲(chǔ)唯一塊的實(shí)現(xiàn)方式相同的是,在容器中存儲(chǔ)唯一塊的同時(shí),需要在容器中存儲(chǔ)處于其中的唯一塊的指紋。進(jìn)一步,根據(jù)容器中的唯一塊的指紋,迭代生成對(duì)應(yīng)容器的第二子校驗(yàn)值,繼而獲取存放對(duì)應(yīng)初始數(shù)據(jù)文件的所有唯一塊的各個(gè)容器對(duì)應(yīng)的第二子校驗(yàn)值的集合,即:校驗(yàn)和Ci。通過比較校驗(yàn)和Ci和圖3中的校驗(yàn)和C,可以判斷初始文件數(shù)據(jù)是否經(jīng)過正確的重復(fù)數(shù)據(jù)刪除流程。當(dāng)校驗(yàn)和C'=校驗(yàn)和C時(shí),表示當(dāng)前的重復(fù)數(shù)據(jù)刪除流程可靠。
      [0119]需要說明的是,為了保證文件數(shù)據(jù)分塊的順序性,校驗(yàn)值的生成過程可以按照數(shù)據(jù)分塊的順序逐步合成。
      [0120]以Bufferl中迭代生成校驗(yàn)和I為例,如圖6所示,Bufferl中的數(shù)據(jù)分塊按照原始組裝順序,劃分為i個(gè)數(shù)據(jù)分塊,根據(jù)第一數(shù)據(jù)分塊的第一指紋和第二分塊的第二指紋,迭代生成第一子校驗(yàn)和;根據(jù)第三數(shù)據(jù)分塊的第三指紋和第一子校驗(yàn)和,迭代生成第二子校驗(yàn)和;以此類推,直至根據(jù)第i數(shù)據(jù)分塊的第i指紋和第(1-1)子校驗(yàn)和,迭代生成第一子校驗(yàn)值,即:圖3中的校驗(yàn)和I。其他各個(gè)Buffer均按照相同的迭代方式,生成各自的第一子校驗(yàn)值。此外,當(dāng)各個(gè)Buffer對(duì)應(yīng)的第一子校驗(yàn)值生成之后,需要按照相同的迭代方式,由所有第一子校驗(yàn)值迭代生成初始文件數(shù)據(jù)的第一校驗(yàn)值。
      [0121]由于采用了分步迭代合成校驗(yàn)值的方法,因此,可以支持校驗(yàn)值的分步驗(yàn)證,發(fā)現(xiàn)出錯(cuò)的數(shù)據(jù)分塊點(diǎn),從而提升驗(yàn)證強(qiáng)度。
      [0122]本方面實(shí)施例中,用于迭代生成校驗(yàn)值的算法可以選用如下算法:4-Byte X0R、CRC、Adler32以及Rabin等。不同的算法計(jì)算復(fù)雜度和實(shí)用場景存在差異,相關(guān)研究比較完整,此處不再進(jìn)行贅述。
      [0123]簡單而言,如果需要盡量降低校驗(yàn)的復(fù)雜度,只需要校驗(yàn)分塊信息在重刪流程中的完整性,加快檢驗(yàn)流程及減小校驗(yàn)復(fù)雜度,則不需按照文件數(shù)據(jù)分塊的順序迭代生成校驗(yàn)值,即:可以采用無順序的計(jì)算方法生成校驗(yàn)值,如=1-Byte XOR0
      [0124]通常,在完成重復(fù)數(shù)據(jù)刪除之后,為了驗(yàn)證存儲(chǔ)在容器中的唯一塊數(shù)據(jù)是否受到破壞,可以后續(xù)增加巡檢流程加以實(shí)現(xiàn)。實(shí)際應(yīng)用場景中,巡檢流程可以定時(shí)發(fā)起,例如:預(yù)置相鄰兩次巡檢之間的時(shí)間間隔閾值,當(dāng)?shù)竭_(dá)該時(shí)間間隔閾值時(shí),即發(fā)起巡檢流程。具體地,巡檢可以分為:單文件巡檢方式和容器級(jí)巡檢方式。
      [0125]在單文件巡檢方式中,將根據(jù)所有容器中的唯一塊的指紋,采用與初始文件數(shù)據(jù)對(duì)應(yīng)的第一校驗(yàn)值相同的生成方式,生成當(dāng)前文件數(shù)據(jù)在容器中的第二校驗(yàn)值,將第二校驗(yàn)值和第一校驗(yàn)值進(jìn)行比較,當(dāng)?shù)诙r?yàn)值和第一校驗(yàn)值一致時(shí),確定初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除,保證整個(gè)文件數(shù)據(jù)在重復(fù)數(shù)據(jù)刪除過程中的一致性。
      [0126]在容器級(jí)巡檢方式中,由于容器在初始進(jìn)行唯一塊填充時(shí),各個(gè)容器存儲(chǔ)有其中各個(gè)唯一塊的指紋以及容器中唯一塊對(duì)應(yīng)的第二子校驗(yàn)值,因此,在巡檢時(shí),可以按照此時(shí)各個(gè)容器中存儲(chǔ)的唯一塊的指紋合成當(dāng)前各個(gè)容器對(duì)應(yīng)的子校驗(yàn)值,即:第三子校驗(yàn)值。通過第三子校驗(yàn)值對(duì)當(dāng)前容器中的唯一塊進(jìn)行標(biāo)識(shí),將第三子校驗(yàn)值與第二子校驗(yàn)值進(jìn)行比較,當(dāng)?shù)诙有r?yàn)值和第三子校驗(yàn)值不一致時(shí),則確定相應(yīng)容器中數(shù)據(jù)與初始填充數(shù)據(jù)不一致,可能發(fā)生物理存儲(chǔ)由于外來攻擊、介質(zhì)損壞等原因?qū)е碌撵o默數(shù)據(jù)破壞問題。
      [0127]還需說明的是,容器中填充唯一塊之后,可能出現(xiàn)數(shù)據(jù)塊長時(shí)間不用的情形,因此,需要根據(jù)空間回收機(jī)制對(duì)容器進(jìn)行管理,即:整理存儲(chǔ)空間利用率低于一定閾值的容器,將容器中有用的數(shù)據(jù)分塊遷移后再釋放容器資源。實(shí)際中,容器中進(jìn)行數(shù)據(jù)刪除、數(shù)據(jù)改寫均會(huì)改變?nèi)萜髦袛?shù)據(jù)分塊的引用次數(shù),當(dāng)某個(gè)數(shù)據(jù)分塊長時(shí)間不被引用時(shí),表示該數(shù)據(jù)可以為遺棄數(shù)據(jù),因此,該數(shù)據(jù)分塊將會(huì)被移除,可以給該數(shù)據(jù)分塊設(shè)置“待回收”的標(biāo)識(shí),或者將其釋放在資源池中。當(dāng)數(shù)據(jù)分塊被誤回收時(shí),根據(jù)容器中剩余數(shù)據(jù)分塊指紋生成的子校驗(yàn)值將會(huì)發(fā)生變化,與初始子校驗(yàn)值不一致。從而,可以通過校驗(yàn)值比較,對(duì)空間回收時(shí)是否發(fā)生數(shù)據(jù)分塊錯(cuò)誤回收進(jìn)行校驗(yàn)。
      [0128]具體地,當(dāng)進(jìn)行空間回收檢驗(yàn)時(shí),可以根據(jù)檢驗(yàn)時(shí)各個(gè)容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)容器的校驗(yàn)值,稱為“第四子校驗(yàn)值”;將第四校驗(yàn)值與容器在初始進(jìn)行唯一塊填充時(shí)對(duì)應(yīng)的第二子校驗(yàn)值相比較,當(dāng)?shù)诙有r?yàn)值和第四子校驗(yàn)值不一致時(shí),確定相應(yīng)容器空間中發(fā)生數(shù)據(jù)分塊被錯(cuò)誤回收的情形。
      [0129]與本發(fā)明提供的重復(fù)數(shù)據(jù)刪除方法實(shí)施例相對(duì)應(yīng),本發(fā)明還提供了一種重復(fù)數(shù)據(jù)刪除裝置。
      [0130]如圖7所示,為本發(fā)明提供的一種重復(fù)數(shù)據(jù)刪除裝置的實(shí)施例,該裝置具體可以包括:
      [0131]數(shù)據(jù)分塊模塊701,用于將接收到的初始數(shù)據(jù)進(jìn)行分塊;
      [0132]指紋獲取模塊702,用于獲得每個(gè)數(shù)據(jù)分塊的指紋;
      [0133]第一校驗(yàn)值生成模塊703,用于根據(jù)所有數(shù)據(jù)分塊的指紋,生成初始數(shù)據(jù)的第一校驗(yàn)值;
      [0134]重刪模塊704,用于查找初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除重復(fù)數(shù)據(jù)分塊;
      [0135]唯一塊存儲(chǔ)模塊705,用于存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊;
      [0136]第二校驗(yàn)值生成模塊706,用于根據(jù)所有唯一塊的指紋,采用與第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值;
      [0137]校驗(yàn)值比較模塊707,用于比較第一校驗(yàn)值和第二校驗(yàn)值,當(dāng)?shù)谝恍r?yàn)值和第二校驗(yàn)值一致時(shí),確定初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。
      [0138]本發(fā)明實(shí)施例中,在重復(fù)數(shù)據(jù)刪除過程中,當(dāng)對(duì)初始數(shù)據(jù)完成分塊時(shí),即根據(jù)所有數(shù)據(jù)分塊的指紋,生成初始數(shù)據(jù)的第一校驗(yàn)值;當(dāng)刪除重復(fù)數(shù)據(jù)分塊之后,可根據(jù)當(dāng)前的唯一塊的指紋,生成數(shù)據(jù)文件當(dāng)前的第二校驗(yàn)值,通過將第二校驗(yàn)值和第一校驗(yàn)值進(jìn)行比較,如果前后兩個(gè)校驗(yàn)值一致,則表示初始數(shù)據(jù)的重復(fù)數(shù)據(jù)刪除過程是可靠的。通過比較數(shù)據(jù)文件在刪除重復(fù)數(shù)據(jù)前后的校驗(yàn)值,可以大大提高重復(fù)數(shù)據(jù)刪除流程可靠性驗(yàn)證的效率,為重復(fù)數(shù)據(jù)刪除過程中數(shù)據(jù)的準(zhǔn)確性提供保證。
      [0139]具體應(yīng)用場景中,上述數(shù)據(jù)分塊模塊,具體將接收到的等容量的數(shù)據(jù)處理單元中的初始數(shù)據(jù)進(jìn)行定長或變長分塊,其中,初始數(shù)據(jù)在進(jìn)行分塊之前,首先劃分為多個(gè)等容量的數(shù)據(jù)處理單元。
      [0140]在圖8所示的實(shí)施例中,上述第一校驗(yàn)值生成模塊703,具體可以包括:
      [0141]第一子校驗(yàn)值生成單元801,用于根據(jù)各個(gè)數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)數(shù)據(jù)處理單元的第一子校驗(yàn)值;
      [0142]第一校驗(yàn)值確定單元802,用于將所有第一子校驗(yàn)值按照相同的迭代方式,生成初始數(shù)據(jù)的第一校驗(yàn)值。
      [0143]在圖9所示的實(shí)施例中,上述唯一塊存儲(chǔ)模塊705,具體可以包括:
      [0144]第一容器存儲(chǔ)單元901,用于將各個(gè)數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊存儲(chǔ)于容器中;
      [0145]第一指紋存儲(chǔ)單元902,用于在容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      [0146]圖10所不的實(shí)施例,為唯一塊存儲(chǔ)模塊705的另一種實(shí)現(xiàn)方式,其中,唯一塊存儲(chǔ)模塊705,具體可以包括:
      [0147]壓縮單元1001,用于將各個(gè)數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊進(jìn)行壓縮處理;
      [0148]第二容器存儲(chǔ)單元1002,用于將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)數(shù)據(jù)處理單元的容器中;
      [0149]第二指紋存儲(chǔ)單元1003,用于在容器中存儲(chǔ)其中各個(gè)完成壓縮的唯一塊的指紋。
      [0150]在圖11所示的實(shí)施例中,上述第二校驗(yàn)值生成模塊706,具體可以包括:
      [0151]第二子校驗(yàn)值生成單元1101,用于根據(jù)各個(gè)容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)容器的第二子校驗(yàn)值;
      [0152]第二校驗(yàn)值確定單元1102,用于將所有第二子校驗(yàn)值按照相同的迭代方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      [0153]在圖12所示的實(shí)施例中,重復(fù)數(shù)據(jù)刪除裝置還可以包括:
      [0154]巡檢模塊708,用于當(dāng)進(jìn)行容器級(jí)巡檢時(shí),根據(jù)巡檢時(shí)各個(gè)容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)容器的第三子校驗(yàn)值;比較各個(gè)容器對(duì)應(yīng)的第二子校驗(yàn)值和第三子校驗(yàn)值,當(dāng)?shù)诙有r?yàn)值和第三子校驗(yàn)值不一致時(shí),確定相應(yīng)容器中數(shù)據(jù)破壞。
      [0155]除此之外,在圖7或圖12的基礎(chǔ)之上,如圖13及圖14所示,上述重復(fù)數(shù)據(jù)刪除裝置還可以包括:
      [0156]空間回收檢驗(yàn)?zāi)K709,用于當(dāng)進(jìn)行空間回收檢驗(yàn)時(shí),根據(jù)檢驗(yàn)時(shí)各個(gè)容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)容器的第四子校驗(yàn)值;比較各個(gè)容器對(duì)應(yīng)的第二子校驗(yàn)值和第四子校驗(yàn)值,當(dāng)?shù)诙有r?yàn)值和第四子校驗(yàn)值不一致時(shí),確定相應(yīng)容器空間中的數(shù)據(jù)分塊被錯(cuò)誤回收。
      [0157]本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
      [0158]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
      [0159]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
      [0160]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
      [0161]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
      [0162]所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并確定為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(R0M,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
      [0163]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
      【權(quán)利要求】
      1.一種重復(fù)數(shù)據(jù)刪除方法,其特征在于,包括: 將接收到的初始數(shù)據(jù)進(jìn)行分塊; 獲得每個(gè)數(shù)據(jù)分塊的指紋; 根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值; 查找所述初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除所述重復(fù)數(shù)據(jù)分塊; 存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊; 根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值; 比較所述第一校驗(yàn)值和所述第二校驗(yàn)值,當(dāng)所述第一校驗(yàn)值和所述第二校驗(yàn)值一致時(shí),確定所述初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將接收到的初始數(shù)據(jù)進(jìn)行分塊,包括: 將接收到的等容量的數(shù)據(jù)處理單元中的所述初始數(shù)據(jù)進(jìn)行定長或變長分塊,其中,所述初始數(shù)據(jù)在進(jìn)行分塊之前,首先劃分為多個(gè)等容量的所述數(shù)據(jù)處理單元。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值,包括: 根據(jù)各個(gè)所述數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的第一子校驗(yàn)值; 將所有所述第一子校驗(yàn)值按照相同的迭代方式,生成所述初始數(shù)據(jù)的第一校驗(yàn)值。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊,包括: 將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊存儲(chǔ)于對(duì)應(yīng)的容器中,并在所述容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊,包括: 將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊進(jìn)行壓縮處理; 將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的容器中,并在所述容器中存儲(chǔ)其中各個(gè)所述完成壓縮的唯一塊的指紋。
      6.根據(jù)權(quán)利要求4或5所述的方法,其特征在于,所述根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值,包括: 根據(jù)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述容器的第二子校驗(yàn)值; 將所有所述第二子校驗(yàn)值按照相同的迭代方式,生成所述當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      7.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括: 當(dāng)進(jìn)行容器級(jí)巡檢時(shí),根據(jù)巡檢時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第三子校驗(yàn)值; 比較各個(gè)所述容器對(duì)應(yīng)的所述第二子校驗(yàn)值和所述第三子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第三子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器中數(shù)據(jù)破壞。
      8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,還包括: 當(dāng)進(jìn)行空間回收檢驗(yàn)時(shí),根據(jù)檢驗(yàn)時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第四子校驗(yàn)值; 比較各個(gè)所述容器對(duì)應(yīng)的所述第子二校驗(yàn)值和所述第四子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第四子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器空間中的數(shù)據(jù)分塊被錯(cuò)誤回收。
      9.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)各個(gè)所述數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的第一子校驗(yàn)值,包括: 假設(shè)所述數(shù)據(jù)單元中按照初始數(shù)據(jù)組裝順序,包含N(N ^ 2)個(gè)數(shù)據(jù)分塊,根據(jù)第一數(shù)據(jù)分塊的第一指紋和第二分塊的第二指紋,迭代生成第一子校驗(yàn)和; 根據(jù)第三數(shù)據(jù)分塊的第三指紋和所述第一子校驗(yàn)和,迭代生成第二子校驗(yàn)和; 以此類推,直至根據(jù)第N數(shù)據(jù)分塊的第N指紋和第(N-1)子校驗(yàn)和,迭代生成所述第一子校驗(yàn)值。
      10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述根據(jù)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述容器的第二子校驗(yàn)值,包括: 假設(shè)所述容器中按照初始數(shù)據(jù)分塊順序,包含M(N >M^2)個(gè)數(shù)據(jù)分塊,根據(jù)第一數(shù)據(jù)分塊的第一指紋和第二分塊的第二指紋,迭代生成第一子校驗(yàn)和; 根據(jù)第三數(shù)據(jù)分塊的第三指紋和所述第一子校驗(yàn)和,迭代生成第二子校驗(yàn)和; 以此類推,直至根據(jù)第M數(shù)據(jù)分塊的第M指紋和第(M-1)子校驗(yàn)和,迭代生成所述第二子校驗(yàn)值。
      11.一種重復(fù)數(shù)據(jù)刪除裝置,其特征在于,包括: 數(shù)據(jù)分塊模塊,用于將接收到的初始數(shù)據(jù)進(jìn)行分塊; 指紋獲取模塊,用于獲得每個(gè)數(shù)據(jù)分塊的指紋; 第一校驗(yàn)值生成模塊,用于根據(jù)所有所述數(shù)據(jù)分塊的指紋,生成所述初始數(shù)據(jù)的第一校驗(yàn)值; 重刪模塊,用于查找所述初始數(shù)據(jù)中的重復(fù)數(shù)據(jù)分塊,刪除所述重復(fù)數(shù)據(jù)分塊; 唯一塊存儲(chǔ)模塊,用于存儲(chǔ)刪除重復(fù)數(shù)據(jù)分塊后的唯一塊; 第二校驗(yàn)值生成模塊,用于根據(jù)所有所述唯一塊的指紋,采用與所述第一校驗(yàn)值相同的生成方式,生成當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值; 校驗(yàn)值比較模塊,用于比較所述第一校驗(yàn)值和所述第二校驗(yàn)值,當(dāng)所述第一校驗(yàn)值和所述第二校驗(yàn)值一致時(shí),確定所述初始數(shù)據(jù)經(jīng)過正確重復(fù)數(shù)據(jù)刪除。
      12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述數(shù)據(jù)分塊模塊,具體將接收到的等容量的數(shù)據(jù)處理單元中的所述初始數(shù)據(jù)進(jìn)行定長或變長分塊,其中,所述初始數(shù)據(jù)在進(jìn)行分塊之前,首先劃分為多個(gè)等容量的所述數(shù)據(jù)處理單元。
      13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一校驗(yàn)值生成模塊,包括: 第一子校驗(yàn)值生成單元,用于根據(jù)各個(gè)所述數(shù)據(jù)處理單元中的所有數(shù)據(jù)分塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的第一子校驗(yàn)值; 第一校驗(yàn)值確定單元,用于將所有所述第一子校驗(yàn)值按照相同的迭代方式,生成所述初始數(shù)據(jù)的第一校驗(yàn)值。
      14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述唯一塊存儲(chǔ)模塊,包括: 第一容器存儲(chǔ)單元,用于將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊存儲(chǔ)于容器中; 第一指紋存儲(chǔ)單元,用于在所述容器中存儲(chǔ)其中各個(gè)唯一塊的指紋。
      15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述唯一塊存儲(chǔ)模塊,包括: 壓縮單元,用于將各個(gè)所述數(shù)據(jù)處理單元對(duì)應(yīng)的刪除重復(fù)數(shù)據(jù)分塊后的唯一塊進(jìn)行壓縮處理; 第二容器存儲(chǔ)單元,用于將完成壓縮的唯一塊存儲(chǔ)于對(duì)應(yīng)各個(gè)所述數(shù)據(jù)處理單元的容器中; 第二指紋存儲(chǔ)單元,用于在所述容器中存儲(chǔ)其中各個(gè)所述完成壓縮的唯一塊的指紋。
      16.根據(jù)權(quán)利要求14或15所述的裝置,其特征在于,所述第二校驗(yàn)值生成模塊,包括: 第二子校驗(yàn)值生成單元,用于根據(jù)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)各個(gè)所述容器的第二子校驗(yàn)值; 第二校驗(yàn)值確定單元,用于將所有所述第二子校驗(yàn)值按照相同的迭代方式,生成所述當(dāng)前完成重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的第二校驗(yàn)值。
      17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,還包括: 巡檢模塊,用于當(dāng)進(jìn)行容器級(jí)巡檢時(shí),根據(jù)巡檢時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第三子校驗(yàn)值;比較各個(gè)所述容器對(duì)應(yīng)的所述第二子校驗(yàn)值和所述第三子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第三子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器中數(shù)據(jù)破壞。
      18.根據(jù)權(quán)利要求16或17所述的裝置,其特征在于,還包括: 空間回收檢驗(yàn)?zāi)K,用于當(dāng)進(jìn)行空間回收檢驗(yàn)時(shí),根據(jù)檢驗(yàn)時(shí)各個(gè)所述容器中的所有唯一塊的指紋,迭代生成對(duì)應(yīng)當(dāng)前各個(gè)所述容器的第四子校驗(yàn)值;比較各個(gè)所述容器對(duì)應(yīng)的所述第二子校驗(yàn)值和所述第四子校驗(yàn)值,當(dāng)所述第二子校驗(yàn)值和所述第四子校驗(yàn)值不一致時(shí),確定相應(yīng)所述容器空間中的數(shù)據(jù)分塊被錯(cuò)誤回收。
      【文檔編號(hào)】G06F3/06GK104408154SQ201410729944
      【公開日】2015年3月11日 申請(qǐng)日期:2014年12月4日 優(yōu)先權(quán)日:2014年12月4日
      【發(fā)明者】余健, 鐘延輝 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1