JP6308446B2 - 記憶システム内のデータ・バックアップのための方法および装置 - Google Patents

記憶システム内のデータ・バックアップのための方法および装置 Download PDF

Info

Publication number
JP6308446B2
JP6308446B2 JP2016564331A JP2016564331A JP6308446B2 JP 6308446 B2 JP6308446 B2 JP 6308446B2 JP 2016564331 A JP2016564331 A JP 2016564331A JP 2016564331 A JP2016564331 A JP 2016564331A JP 6308446 B2 JP6308446 B2 JP 6308446B2
Authority
JP
Japan
Prior art keywords
data block
data
snapshot
block
source device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016564331A
Other languages
English (en)
Other versions
JP2017538982A (ja
Inventor
程▲偉▼ ▲張▼
程▲偉▼ ▲張▼
▲傳▼▲帥▼ 于
▲傳▼▲帥▼ 于
宗全 ▲張▼
宗全 ▲張▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017538982A publication Critical patent/JP2017538982A/ja
Application granted granted Critical
Publication of JP6308446B2 publication Critical patent/JP6308446B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は情報技術の分野に関し、特に、記憶システム内のデータ・バックアップのための方法および装置に関する。
ユーザ・データの信頼性を確保するために、記憶システムは一般に、当該ユーザ・データを当該記憶システムのソース・デバイスからバックアップ側デバイスにコピーするためにデータコピー機能を提供する。ソース・デバイスに障害が発生すると、バックアップ側デバイス内のデータはソース・デバイスに復元され、それにより災害復旧の目的を達成する。
先行技術では、一般に漸進的複製技術を用いることによって、ソース・デバイスにおいて変化するデータが圧縮され次いでバックアップ側デバイスにバックアップされる。しかし、先行技術では、変化するデータ・ブロックをバックアップ側にコピーすることは、依然として大量の帯域幅を消費する。
第1の態様によれば、本発明の1実施形態では、記憶システム内のデータ・バックアップのための解決策を提供する。当該記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータはソース・デバイスとバックアップ側デバイスの両方に格納される。ソース・デバイスは、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスに従って、同一の論理ブロック・アドレス内にありソース・デバイスに格納されたn番目のスナップショットSに記録された第2のデータ・ブロックを決定する。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、nはスナップショット操作を示す。ソース・デバイスは、論理演算を第1のデータ・ブロックと第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得する。ソース・デバイスは、バックアップ側デバイスに、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信する。当該論理演算は排他NOR操作または排他OR操作を含む。第3のデータ・ブロックは当該論理演算を用いることによって取得され、大部分のデータは第1のデータ・ブロックと第2のデータ・ブロックの間で同一である。したがって、第3のデータ・ブロックは、大量の0(例えば、排他OR操作を使用)または1(例えば、排他NOR操作を使用)を含む。第3のデータ・ブロックの圧縮率は、第1のデータ・ブロックの圧縮率より大きい。第1のデータ・ブロックを直接圧縮し、圧縮されたデータ・ブロックをバックアップ側デバイスに送信するのと比べて、バックアップ側に送信されるデータの量が削減され、送信帯域幅が節約される。
バックアップ側デバイスは、ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号を取得し、バックアップ側デバイスは、第1のデータ・ブロックの論理ブロック・アドレスとn番目のスナップショットSのバージョン番号に従って、バックアップ側デバイスに格納されたスナップショットSに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、論理演算を第3のデータ・ブロックと第2のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込む。
任意選択で、ソース・デバイスにより、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第1のデータ・ブロックを決定するステップを含む。当該実装方式では、第1のデータ・ブロックを、スナップショット操作をソース・デバイスに再度実施する必要なしに決定することができる。
任意選択で、ソース・デバイスにより、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、x番目のスナップショットS操作を実施し、スナップショットSをスナップショットSと比較して、第1のデータ・ブロックを決定するステップを含む。nおよびxは整数であり、n<xである。
本発明の第1の態様の当該実施形態で提供する解決策をまたデータ復元に適用してもよい。n番目のスナップショットSのデータはソース・デバイスに格納され、ソース・デバイス内のn番目のスナップショットSのデータとx番目のスナップショットSのデータはバックアップ側デバイスに格納される。nおよびxは整数であり、n<xであり、ソース・デバイスはデータ復元要求をバックアップ側デバイスに送信し、当該データ復元要求はスナップショットSのバージョン番号を運搬する。バックアップ側デバイスは、ソース・デバイスにより送信されたデータ復元要求を受信し解析して、スナップショットSのバージョン番号を取得し、スナップショットSのバージョン番号およびスナップショットSのバージョン番号に従って第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスとスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定し、論理演算を第1のデータ・ブロックと第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得し、ソース・デバイスに、第4のデータ・ブロックと第1のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信する。第1のデータ・ブロックは、バックアップ側デバイスによりバックアップされたスナップショットSに記録されソース・デバイスによりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。データ復元プロセスにおいて、論理演算および圧縮動作が実施され、これが同様に圧縮率を高め、送信帯域幅を節約する。
ソース・デバイスは、バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックと第1のデータ・ブロックの論理ブロック・アドレスを取得し、第1のデータ・ブロックの論理ブロック・アドレスに従って、スナップショットSに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、論理演算を第3のデータ・ブロックと第2のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込み、その結果、ソース・デバイスはバックアップ側デバイスの状態と同じ状態に復元される。
第1の態様および第1の態様が適用されるデータ・シナリオに対応して、本発明の当該実施形態ではさらに、本発明の当該実施形態における第1の態様で提供した解決策を実装するための、第1の態様の当該実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスとしての役割を果たすように別々に構成された記憶装置を提供する。当該記憶装置は、第1の態様の発明の当該実施形態および第1の態様が適用されるデータ・シナリオにおける解決策を実装する構造ユニットを備えるか、または当該記憶装置は、第1の態様の実施形態および第1の態様が適用されるデータ・シナリオにおける解決策を実装するためのインタフェースおよびプロセッサを備える。
したがって、本発明の当該実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体および当該コンピュータ・プログラム製品に含まれるコンピュータ命令が本発明の当該実施形態で提供する記憶装置のメモリにロードされ、当該記憶装置の中央演算装置(Central Processing Unit、CPU)が当該コンピュータ命令を実行すると、当該記憶装置は、本発明の当該実施形態における第1の態様で提供する解決策を実装するための、第1の態様の実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスの役割を果たす。
第2の態様によれば、本発明の1実施形態ではさらに記憶システム内のデータ・バックアップのための別の解決策を提供する。当該記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータはソース・デバイスとバックアップ側デバイスの両方に格納される。ソース・デバイスは、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスに従って、n番目のスナップショットSに記録された第2のデータ・ブロックを決定する。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。ソース・デバイスは、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得する。第3のデータ・ブロックは当該循環シフトを実施することによって取得され、その結果、同一の位置で、多くのデータが第3のデータ・ブロックと第2のデータ・ブロックの間で同一である。ソース・デバイスは論理演算を第3のデータ・ブロックと第2のデータ・ブロックに実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得する。当該論理演算は排他OR操作または排他NOR操作であり、当該論理演算の後、第4のデータ・ブロックは、大量の0(例えば、排他OR操作を使用)または1(例えば、排他NOR操作を使用)を含む。第4のデータ・ブロックの圧縮率は、第1のデータ・ブロックの圧縮率より大きい。第1のデータ・ブロックを直接圧縮し、圧縮されたデータ・ブロックをバックアップ側デバイスに送信するのと比べて、バックアップ側に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイスは、バックアップ側デバイスに、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびn番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信する。当該シフト情報は循環シフト方向とシフト量を含む。
バックアップ側デバイスは、データ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびn番目のスナップショットSのバージョン番号を取得し、第1のデータ・ブロックの論理ブロック・アドレスおよびn番目のスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、論理演算を第4のデータ・ブロックと第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込む。
任意選択で、以下の計算規則がソース・デバイスに対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。ソース・デバイスは、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施する。ソース・デバイスは、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択する。Mは正の整数でありNより大きくない。ソース・デバイスは第1のデータ・ブロックの第1のM個のハッシュ値と同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定する。
任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。
任意選択で、ハッシュ値が設定されそれに従ってソース・デバイスが選択を行う順序が、特に昇順または降順であってもよい。
任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
任意選択で、ソース・デバイスにより、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って、第1のデータ・ブロックを決定するステップを含む。当該実装方式では、第1のデータ・ブロックを、スナップショット操作をソース・デバイスに再度実施する必要なしに決定することができる。
任意選択で、ソース・デバイスにより、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、x番目のスナップショットS操作を実施し、スナップショットSをスナップショットSと比較し、第1のデータ・ブロックを決定するステップを含む。nおよびxは整数であり、n<xである。
本発明の第2の態様の当該実施形態で提供する解決策をまた、データ復元に適用してもよい。記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータはソース・デバイスに格納され、ソース・デバイス内のn番目のスナップショットSのデータおよびx番目のスナップショットSのデータはバックアップ側デバイスに格納され、nおよびxは整数であり、n<xである。ソース・デバイスは、データ復元要求をバックアップ側デバイスに送信する。当該データ復元要求はスナップショットSのバージョン番号を運搬する。バックアップ側デバイスは、当該データ復元要求を受信し解析してスナップショットSのバージョン番号を取得し、スナップショットSのバージョン番号およびスナップショットSのバージョン番号に従って第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスおよびスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、論理演算を第3のデータ・ブロックおよび第2のデータ・ブロックに実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得する。当該論理演算は排他OR操作または排他NOR操作であり、当該論理演算の後、第4のデータ・ブロックは、大量の0(例えば、排他OR操作を使用)または1(例えば、排他NOR操作を使用)を含む。第4のデータ・ブロックの圧縮率は、第1のデータ・ブロックの圧縮率より大きい。直接第1のデータ・ブロックを圧縮し圧縮されたデータ・ブロックをソース・デバイスに送信することと比べて、ソース・デバイスに送信されるデータ量が削減され、送信帯域幅が節約される。バックアップ側デバイスは、ソース・デバイスに、第5のデータ・ブロック、シフト情報、および第1のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信する。第1のデータ・ブロックは、バックアップ側デバイスによりバックアップされたスナップショットSに記録されソース・デバイスによりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作であり、当該シフト情報は循環シフト方向とシフト量を含む。
ソース・デバイスは、当該データ・パケットを受信し解析して第5のデータ・ブロック、シフト情報、および第1のデータ・ブロックの論理ブロック・アドレスを取得し、第1のデータ・ブロックの論理ブロック・アドレスに従って、スナップショットSに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、当該論理演算を第4のデータ・ブロックおよび第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込み、その結果、ソース・デバイスはバックアップ側デバイスの状態と同じ状態に復元される。
任意選択で、以下の計算規則がバックアップ側デバイスに対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。バックアップ側デバイスは当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施する。バックアップ側デバイスは、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、Mは正の整数でありNより大きくない。バックアップ側デバイスは、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定する。
任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。
任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。
任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
第2の態様および第2の態様が適用されるデータ・シナリオに対応して、本発明の当該実施形態ではさらに、本発明の当該実施形態における第2の態様で提供した解決策を実装するための、第2の態様の当該実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスとしての役割を果たすように別々に構成された記憶装置を提供する。当該記憶装置は、第2の態様の発明の実施形態および第2の態様が適用されるデータ・シナリオの解決策を実装する構造ユニットを備えるか、または当該記憶装置は、第2の態様の実施形態および第2の態様が適用されるデータ・シナリオの解決策を実装するための、インタフェースおよびプロセッサを備える。
したがって、本発明の当該実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体および当該コンピュータ・プログラム製品に含まれるコンピュータ命令が本発明の当該実施形態で提供する記憶装置のメモリにロードされ、当該記憶装置の中央演算装置(Central Processing Unit、CPU)が当該コンピュータ命令を実行すると、当該記憶装置は、本発明の当該実施形態における第2の態様で提供する解決策を実装するための、第2の態様の実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスの役割を果たす。
本発明の1実施形態に従う記憶システムの略図である。 本発明の1実施形態に従うシフト量を決定するための方法の略図である。 本発明の1実施形態に従うシフト量を決定するための方法の略図である。 本発明の1実施形態に従う循環シフトの略図である。 本発明の1実施形態に従う排他OR操作の略図である。 本発明の1実施形態に従う圧縮動作の略図である 本発明の1実施形態に従うデータ・パケットの略図である。 本発明の1実施形態に従う排他ORシフト操作の略図である。 本発明の1実施形態に従う逆サイクルの略図である。 本発明の1実施形態に従うデータ・バックアップの後の記憶システムの略図である。 本発明の1実施形態に従う適用シナリオの略図である。 本発明の1実施形態に従う適用シナリオの略図である。 本発明の1実施形態に従う記憶装置の略構造図である。 本発明の1実施形態に従う記憶装置の略構造図である。 本発明の1実施形態に従う記憶装置の略構造図である。 本発明の1実施形態に従う記憶装置の略構造図である。 本発明の1実施形態に従う記憶装置の略構造図である。
図1に示すように、記憶システムはソース・デバイス101およびバックアップ側デバイス102を備える。n番目のスナップショットSの時点では、データ・ブロック1、データ・ブロック2、データ・ブロック3、およびデータ・ブロック4はソース・デバイス101に格納される。バックアップ側デバイス102では、ソース・デバイス101内のn番目のスナップショットSのバックアップが格納される。即ち、データ・ブロック1、データ・ブロック2、データ・ブロック3、およびデータ・ブロック4が格納される。n番目のスナップショットSの後、ソース・デバイス101内のデータ・ブロック2がデータ・ブロック2’に修正される。スナップショット実装機構に従って、データ・ブロック2は、スナップショットSに格納され、さらにデータ・ブロック2’が記録される。データ・ブロック2’はデータ・ブロック2が修正された後に取得されたデータ・ブロックである(即ち、データ・ブロック2’はデータ・ブロック2の修正されたブロックである)。スナップショットSの時点にあるソース・デバイス101内のデータは、バックアップ側デバイス102において既にバックアップされており、バックアップ側デバイス102はスナップショットS操作を実施している。即ち、スナップショットSの時点での状態も、スナップショットS操作を用いることによってバックアップ側デバイス102に記録される。したがって、ソース・デバイス101内のデータがバックアップ側に再度バックアップされるとき、データ・ブロック2’のみをバックアップする必要がある。一般に、バックアップ側デバイス102にバックアップされているプロセスにおいてデータ・ブロック2’が修正されないことを保証するために、一般にスナップショット操作をソース・デバイス101で実施する必要がある。スナップショット操作がSであってもよい。nおよびxは整数であり、n<xである。図1に示すように、ソース・デバイス101に格納されたデータ・ブロック1、データ・ブロック2’、データ・ブロック3、およびデータ・ブロック4はスナップショットSに記録される。スナップショットSに記録されたデータ・ブロック2の論理ブロック・アドレスは、スナップショットSに記録されたデータ・ブロック2’の論理ブロック・アドレスと同じである。即ち、データ・ブロック2およびデータ・ブロック2’は、同一の論理ブロック・アドレスの異なる時点での状態を示す。本発明の当該実施形態では、スナップショットに記録されたデータ、スナップショットの格納されたデータ、またはスナップショットのデータは、装置に格納されスナップショットの時点で記録されたデータを示す。スナップショット(Snapshot)は指定されたデータ・セットに関する完全に利用可能なコピーであり、当該コピーは時間点(当該コピーが開始する時間点)であるデータのイメージを含む。具体的な意味については、ストレージ・ネットワーキング業界団体(Storage Networking Industry Association、SNIA)における定義を参照することができる。一般に、スナップショットは、2つの実装方式、即ち、コピー・オン・ライト(Copy On Write、COW)およびリダイレクト・オン・ライト(Redirect On Write、ROW)を有する。詳細はここでは説明しない。任意選択で、当該修正の後に取得されたデータ・ブロック2’を、スナップショットSをスナップショットSと比較することによって決定してもよい。任意選択で、修正の後に取得されたデータ・ブロックをさらに、データ変更ログ(Data Change Log、DCL)を用いることによって決定してもよい。DCL方式では、ソース・デバイス101がn番目のスナップショットSを記録した後、ソース・デバイス101がデータ書込み要求を受信し、当該データ書込み要求を解析して当該データ書込み要求で運搬される論理ブロック・アドレスを取得する。当該受信されたデータ書込み要求で運搬されるアドレスがn番目のスナップショットSに記録されたデータ・ブロックの論理ブロック・アドレスであるとき、当該データ・ブロックが修正される。図1を1例として用いると、ソース・デバイス101がDCLを用いることによってn番目のスナップショットSを記録した後、ソース・デバイス101により受信されたデータ書込み要求がデータ・ブロック2の論理ブロック・アドレスを運搬する場合、データ・ブロック2が修正されると判定される。
ステップ1:ソース・デバイス101は、データ・ブロック2’がn番目のスナップショットSの後に取得されたデータ・ブロック2の修正されたブロックであると判定する。
本発明の当該実施形態では、データ・ブロック2’が0011 1110 0000 1010 0010 0011である例(読む都合のため、データ・ブロック2’の内容が4つのビットの単位で示されている)を使用する。
ステップ2:ソース・デバイスが、データ・ブロック2’の論理ブロック・アドレスに従って、n番目のスナップショットSに記録されたデータ・ブロック2を決定する。
本発明の当該実施形態では、データ・ブロック2は1110 0001 1010 0010 0011 0100である。
ステップ3:データ・ブロック2’の循環シフトのシフト量を決定し、当該シフト量に従って循環シフトをデータ・ブロック2’に実施する。
任意選択で、図2aに示すように、以下の計算規則がソース・デバイス101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。
上述の計算規則に従って、例えば、21個のウィンドウ(例えば、ウィンドウのサイズは4ビットである)が設定され、隣接するウィンドウの開始位置は互いから1ビット離れており(即ち、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から1ビット離れている)、ソース・デバイス101は、各ウィンドウ内にあるデータ・ブロック2の少なくとも部分的なデータにハッシュ計算を実施し、各ウィンドウ内にあるデータ・ブロック2’の少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値の降順で、それぞれA、B、C、およびDである第1の4つのハッシュ値をデータ・ブロック2の当該21個のウィンドウから選択する。当該4つのハッシュ値に対応するウィンドウはそれぞれウィンドウ1、ウィンドウ3、ウィンドウ9、およびウィンドウ11であり、ウィンドウ1、ウィンドウ3、ウィンドウ9、およびウィンドウ11に対応するオフセットはそれぞれ0、2、8、および10である。ウィンドウに対応するオフセットとは、当該ウィンドウの開始位置がデータ・ブロックの開始位置から離れているビットの量を指す。例えば、データ・ブロック2において、ウィンドウ1の開始位置はデータ・ブロック2の開始位置から零ビット離れており、ウィンドウ3の開始位置はデータ・ブロック2の開始位置から2ビット離れている。同様に、ハッシュ値の降順で、それぞれA、E、C、およびDである第1の4つのハッシュ値はデータ・ブロック2’の21個のウィンドウから選択される。当該4つのハッシュ値に対応するウィンドウはそれぞれウィンドウ5’、ウィンドウ17’、ウィンドウ13’、およびウィンドウ15’であり、ウィンドウ5’、ウィンドウ17’、ウィンドウ13’、およびウィンドウ15’に対応するオフセットはそれぞれ4、16、12、および14である。ソース・デバイス101は、当該2つのグループ内の同一のハッシュ値、即ち、ハッシュ値A、C、およびDを検索する。ソース・デバイス101は、同一のハッシュ値に対応するウィンドウのオフセットの間の差異がシフト量として使用されると判定する。ハッシュ値がAであるウィンドウ1およびウィンドウ5’のオフセットの間の差異が4であり、ハッシュ値がCであるウィンドウ9およびウィンドウ13’のオフセットの間の差異が4である場合、これは、内容が当該2つのデータ・ブロックの間で同一である可能性があるが、ジグザグ配置現象があり、左への4ビットの循環シフトを用いることによって、当該2つのデータ・ブロックの同一内容が互いに整列することを保証できることを示す。上述の方法を用いることによって取得されたオフセットの差異が−4である場合、右への4ビットの循環シフトが実施される。当該2つのグループ内の全てのハッシュ値が同一であり、同一のハッシュ値に対応するオフセットも同一であるとき、これは、シフトは必要でないこと、即ち、零ビットの循環シフトが実施されることを示す。本発明の当該実施形態では、4つのハッシュ値がハッシュ値の降順で選択されることは例示的なものにすぎない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長がまた複数ビットであってもよい。任意選択で、選択をハッシュ値の昇順で実施してもよい。図3に示すように、本発明の当該実施形態では、データ・ブロック2’はデータ・ブロック2から4ビット離れていると判定された場合、左への4ビットの循環シフトをデータ・ブロック2’に実施して、(シフトされたデータ・ブロックと称される)シフト後のデータ・ブロック、即ち、1110 0000 1010 0010 0011 0011を取得する。所謂循環シフトは、コンピュータ用語であり、端へのシフトが実施されたとき、当該シフト前の元の範囲内のビットは失われないが、他の端のシフトイン・ビットとして使用されることを指す。例えば、左への4ビットの循環シフトが実施され、0011が右側のシフトイン・ビットとして使用される。
任意選択で、図2bに示すように、先ず、排他OR操作をデータ・ブロック2’およびデータ・ブロック2に実施して、排他ORデータ・ブロックa1を取得し、排他ORデータ・ブロックa1に含まれる0の数が10であることが得られ、次いで、左への1ビットの循環シフトがデータ・ブロック2’に実施され、左への1ビットの循環シフトを実施することによって取得されたデータ・ブロックとデータ・ブロック2に排他OR操作を実施して、排他ORデータ・ブロックa2を取得し、排他ORデータ・ブロックa2に含まれる0の数が10であることが得られる。左への23ビットの循環シフトがデータ・ブロック2’に実施され、左への23ビットの循環シフトを実施することによって取得されたデータ・ブロックおよびデータ・ブロック2に排他OR操作が実施され、排他ORデータ・ブロックa23が取得され排他ORデータ・ブロックa23に含まれる0の数が決定されるまで、以上の規則に従って左への循環シフトが実施される。0の最大数を含む排他ORデータ・ブロックが、排他ORデータ・ブロックa1からa23まで決定され、本発明の当該実施形態では、排他ORデータ・ブロックa5であり、次いで、左への4ビットの循環シフトがデータ・ブロック2’に実施されると判定される。排他ORデータ・ブロックa1が全て0のデータである場合、循環シフトを実施する必要はない。排他OR操作により得られたデータ内の多数の0は、2つのデータ・ブロックの間で同一である多数のデータを示すことが上述の説明から分かる。
循環シフトを用いることによって、データ・ブロック2およびデータ・ブロック2’をシフトすることで取得されたシフトされたデータ・ブロックの間で多くのデータが同一であり、その結果、後続の排他OR操作により得られたデータ・ブロックは0である多くのビットを含む。循環シフトが必要でないとき、即ち、各ビットがデータ・ブロック2’およびデータ・ブロック2の間で同一であるとき、零ビットの循環シフトが実施される。
ステップ4:特に図4に示すように、シフトされたデータ・ブロックおよびデータ・ブロック2に排他OR操作を実施して、0000 0001 0000 0000 0000 0111のデータ・ブロック(即ち、排他ORデータ・ブロック)を取得する。
ステップ5:ソース・デバイス101が、取得された排他ORデータ・ブロックに圧縮動作を実施する。
ソース・デバイス101が、特に、LZ4圧縮アルゴリズム、ZLIB圧縮アルゴリズム、ランレングス符号化(Run−length encoding、RLE)圧縮アルゴリズム等を用いることによって圧縮動作を排他ORデータ・ブロックに実施してもよく、本発明の当該実施形態では限定されない。
ソース・デバイス101がRLE圧縮アルゴリズムを用いることによって排他ORデータ・ブロックを圧縮する例を使用する。図5に示す実施形態の方式では、当該RLEアルゴリズムは左から右へ当該排他ORデータ・ブロックを訪問し、連続的に反復されたデータを出現回数の量で置き換え、次いで、圧縮された排他ORデータ・ブロックが0(7)1(1)0(13)1(3)のように示される。0(7)は0が連続的に7回出現したことを示し、1(1)は1が連続的に1回出現したことを示し、0(13)は0が連続的に13回出現したことを示し、1(3)は1が連続的に3回出現したことを示す。上述の指示方式は理解および区別の都合のためであり、実際の実装に対しては、RLE圧縮アルゴリズムの説明を参照することができる(https://en.wikipedia.org/wiki/Run-length_encodingを参照)。
修正されたデータ・ブロックを直接圧縮することと比較すると、上述のステップを用いることにより、ソース・デバイス101によりバックアップ側デバイス102に送信されるデータの量が減り、それにより送信帯域幅が節約される。
ステップ6:ソース・デバイス101は、圧縮されたデータ・ブロックをデータ・パケットにカプセル化して、当該データ・パケットをバックアップ側デバイス102に送信する。当該データ・パケットは、データ・ブロック2’の論理ブロック・アドレス、データ・ブロック2’のシフト情報、当該圧縮されたデータ・ブロック、およびスナップショットSのバージョン番号を運搬する。当該シフト情報は循環シフト方向とシフト量を含む。
本発明の当該実施形態では、バックアップ・データのデータ・パケットを送信するためのプロトコルは制限されない。1実装方式では、図6に示すように、4つのフィールド601、602、603、および604が元のデータ・パケットに加えられる。601はデータ・ブロック2’の論理ブロック・アドレスを示すために使用され、また、データ・ブロック2の論理ブロック・アドレスであり、602はn番目のスナップショットSのバージョン番号を示し、603はデータ・ブロック2’のシフト情報を示すために使用され(本発明の当該実施形態では、シフト量は4ビットであり、それだけ左への循環シフトが実施される)、604は圧縮されたデータ・ブロックを運搬するために使用される。具体的な実装では、フィールドの順序は限定されない。フィールド603において、循環シフト方式を、第1のビットを用いて示してもよい。例えば、0は左への循環シフトを示し、1は右への循環シフトを示す。第1のビット以外のビットは循環シフトのシフト量、または、デフォルトの方向への循環シフトを示す。スナップショットのバージョン番号はスナップショットの識別子である。1つの実装は、スナップショットが増大するにつれバージョン番号が線形に増大するものである。
ステップ7:バックアップ側デバイス102は、データ・パケットを受信し解析して、当該データ・パケットで運搬されるデータ・ブロック2’の論理ブロック・アドレス、データ・ブロック2’のシフト情報、圧縮されたデータ・ブロック、およびスナップショットSのバージョン番号を取得する。
特に、図6に示すデータ・パケットを1例として使用するとき、バックアップ側デバイス102はデータ・パケットを解析してフィールド601、602、603、および604内の情報を取得する。バックアップ側デバイス102はフィールド604で運搬される圧縮されたデータ・ブロックを解凍する。フィールド604で運搬される圧縮されたデータ・ブロックはRLE圧縮アルゴリズムを用いることによって取得され、したがって0(7)10(13)1(3)は0000 0001 0000 0000 0000 0111、即ち、ソース・デバイス101の端にある排他ORデータ・ブロックを取得するために解凍される。フィールド601で運搬される修正されたデータ・ブロック2’の論理ブロック・アドレスおよびフィールド602で運搬されるn番目のスナップショットSのバージョン番号に従って、バックアップ側デバイス102は、バックアップ側デバイス102内のn番目のスナップショットSに記録されたデータ・ブロック2を決定して、1110 0001 1010 0010 0011 0100のデータ・ブロック2を取得する。図7に示すように、バックアップ側デバイス102は、データ・ブロック2および排他ORデータ・ブロックに排他OR操作を実施して、ソース・デバイス101内の1110 0000 1010 0010 0011 0011のシフトされたデータ・ブロック、即ち、データ・ブロック2’がシフトされた後に取得されたデータ・ブロックを取得する。バックアップ側デバイス102は、フィールド603で運搬されるシフト情報に従って逆循環シフトを実施する。図8に示すように、本発明の当該実施形態では、当該逆循環シフトは、ソース・デバイス101内のデータ・ブロック2’を取得するための右への4ビットの循環シフトである。
ステップ8:バックアップ側デバイス102が、ソース・デバイス101から受信されたデータ・パケットで運搬される、データ・ブロック2’の論理ブロック・アドレスにデータ・ブロック2’を書き込む。
具体的な実装では、バックアップ側デバイス102とソース・デバイス101は同一の論理ブロック・アドレスを有し、したがってデータ・ブロック2’の論理ブロック・アドレスはバックアップ側デバイス102に格納され、データ・ブロック2’の論理ブロック・アドレスはソース・デバイス101に格納される。上述の解決策では、バックアップ側デバイス102が、データ・ブロック2’の論理ブロック・アドレスに従って、バックアップ側デバイス102に格納されたデータ・ブロックのデータ・ブロック2を修正してデータ・ブロック2’を取得し、その結果、データ・ブロック1、データ・ブロック2’、データ・ブロック3、およびデータ・ブロック4がバックアップ側デバイス102に格納される。
バックアップ側デバイス102は既に、スナップショット操作をデータ・ブロック1、データ・ブロック2、データ・ブロック3、およびデータ・ブロック4に実施して、バックアップ側デバイス102内のスナップショットSを取得している。したがって、バックアップ側デバイス102が格納されたデータ・ブロック2を修正してデータ・ブロック2’を取得するとき、データ・ブロック2が同時に維持される。
ステップ8の後、バックアップ側デバイス102はx番目のスナップショット操作をバックアップ側に実施して、スナップショットSを取得する。特に図9に示すように、スナップショットSの時点でバックアップ側デバイス102に格納されたデータがデータ・ブロック1、データ・ブロック2’、データ・ブロック3、およびデータ・ブロック4を含む例を使用する。スナップショットSに記録されたデータ・ブロック2の論理ブロック・アドレスは、スナップショットSに記録されたデータ・ブロック2’の論理ブロック・アドレスと同一である。即ち、データ・ブロック2およびデータ・ブロック2’は、異なる時点の同一の論理ブロック・アドレスの状態を示す。
ソース・デバイス101内に故障が発生してデータ損失が生ずると、バックアップ側デバイス102内のスナップショット・データを用いることによって復元を実施してもよい。本発明の当該実施形態では、ソース・デバイス101を、バックアップ側デバイス102を用いることによってx番目のスナップショットSの時点の状態に復元してもよい。例えば、ソース・デバイス101が、故障のために、スナップショットSに記録されたデータ・ブロック2’(即ち、データ・ブロック2が修正された後に取得されたデータ・ブロック)を失い、スナップショットSの時点でのデータのみを有する(またはスナップショットSの時点での状態と称される)場合、ソース・デバイス101はデータ復元要求をバックアップ側デバイス102に送信する。当該データ復元要求は、ソース・デバイス101内の現在のスナップショットSのバージョン番号を運搬する。したがって、バックアップ側デバイス102は、当該データ復元要求で運搬されるソース・デバイス101内の現在のスナップショットSのバージョン番号に従って、ソース・デバイス101がスナップショットSの時点でのデータしか有さないと判定する。第1の実装方式では、バックアップ側デバイス102は、ソース・デバイス101内の現在のスナップショットSのバージョン番号に従って、復元される必要があるデータがデータ・ブロック2’であると判定し、データ・ブロック2’の論理ブロック・アドレスおよびデータ・ブロック2’をソース・デバイス101に送信する。ソース・デバイス101は、データ・ブロック2’の論理ブロック・アドレスおよびデータ・ブロック2’を受信し、データ・ブロック2’をソース・デバイス101内のデータ・ブロック2’の論理ブロック・アドレスに書き込み、それによりソース・デバイス101をx番目のスナップショットSの時点の状態に復元する。特に、スナップショットに基づいてソース・デバイス内のデータを復元するための既存の解決策を参照することができる。詳細はここでは説明しない。
別の実装方式では、バックアップ側デバイス102は、ソース・デバイス101により送信されたデータ復元要求に従って、復元される必要があるデータがデータ・ブロック2’であると判定し、バックアップ側デバイス102は、データ・ブロック2’の論理ブロック・アドレスに従って、スナップショットSに記録したデータ・ブロック2を決定する。バックアップ側デバイス102は、データ・ブロック2’の循環シフトのシフト量を決定し、当該シフト量に従って循環シフトをデータ・ブロック2’に実施して、シフトされたデータ・ブロックを取得し、排他OR操作を当該シフトされたデータ・ブロックとデータ・ブロックに実施して、圧縮されたデータ・ブロックを取得し、当該圧縮されたデータ・ブロック、データ・ブロック2’の論理ブロック・アドレス、n番目のスナップショットSのバージョン番号、およびデータ・ブロック2’のシフト情報をデータ・パケットにカプセル化し、当該データ・パケットをソース・デバイス101に送信する。具体的な実装については、ステップ2乃至7を参照することができる。データ・パケットの具体的なフォーマットについては、図6を参照することができる。第1の実装方式と比較して、データ復元プロセスにおいてバックアップ側デバイス102によりソース・デバイス101に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイス101は、バックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、排他OR操作、逆循環シフト操作、およびデータ書込み動作を当該受信されたパケットに従って実施して、データ・ブロック2’を取得する。具体的な実装については、ステップ7およびステップ8を参照することができる。データ・ブロック2’はデータ・ブロック2’の論理ブロック・アドレスに書き込まれ、それによりソース・デバイス101をスナップショットSの時点の状態に復元する。
本発明の別の実施形態では、ソース・デバイス101がデータ・ブロック2’をバックアップ側デバイス102にバックアップする別の実装方式を提供する。ステップ1’とステップ2’はそれぞれステップ1および2と同様である。詳細はここでは説明しない。
ステップ3’:排他OR操作をデータ・ブロック2’およびデータ・ブロック2に実施して、1101 1111 1010 1000 0001 0111の排他ORデータ・ブロックを取得する。具体的な排他OR操作については図4を参照することができる。
ステップ4’:1101 1111 1010 1000 0001 0111の排他ORデータ・ブロックを圧縮する。具体的な実装については、ステップ5の説明を参照することができる。詳細はここでは説明しない。
ステップ5’:ソース・デバイス101は、圧縮されたデータ・ブロックをデータ・パケットにカプセル化して、当該データ・パケットをバックアップ側デバイス102に送信する。当該データ・パケットはデータ・ブロック2’の論理ブロック・アドレス、圧縮されたデータ・ブロック、およびスナップショットSのバージョン番号を運搬する。
具体的な実装については図6を参照することができる。データ・パケットは、フィールド601、602、および604を含む(循環シフト操作は必要でなく、したがってフィールド603は必要でない)。601は、データ・ブロック2の論理ブロック・アドレスでもあるデータ・ブロック2’の論理ブロック・アドレスを示すために使用され、602はn番目のスナップショットSのバージョン番号を示し、604は圧縮されたデータ・ブロックを運搬するために使用される。具体的な実装では、当該フィールドの順序は限定されない。
ステップ6’:バックエンド側デバイス102は、データ・パケットを受信し解析して、フィールド601、602、および604内の情報を取得する。バックエンド側デバイス102はフィールド604で運搬される圧縮されたデータ・ブロックを解凍する。フィールド601で運搬される修正されたデータ・ブロック2’の論理ブロック・アドレスおよびフィールド602で運搬されるn番目のスナップショットSのバージョン番号に従って、バックアップ側デバイス102はバックアップ側デバイス102内のn番目のスナップショットSに記録されたデータ・ブロック2を決定し、バックアップ側デバイス102は、データ・ブロック2および1101 1111 1010 1000 0001 0111の排他ORデータ・ブロックに排他OR操作を実施してデータ・ブロック2’を取得する。
ステップ7’はステップ8と同様である。詳細はここでは説明しない。
バックアップ側デバイス102がデータ復元をソース・デバイス101に実施する別の実装方式では、バックアップ側デバイス102は、ソース・デバイス101により送信されたデータ復元要求に従って、復元される必要があるデータがデータ・ブロック2’であると判定し、バックアップ側デバイス102は、データ・ブロック2’の論理ブロック・アドレスに従って、スナップショットSに記録したデータ・ブロック2を発見する。バックアップ側デバイス102は、ソース・デバイス101がステップ3’および4’を実施する以前の方式を別々に使用することによって、圧縮されたデータ・ブロックを取得する。バックアップ側デバイス102は、当該圧縮されたデータ・ブロック、データ・ブロック2’の論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号をデータ・パケットにカプセル化して、当該データ・パケットをソース・デバイス101に送信する。当該データ・パケットの具体的なフォーマットについては、ステップ5’を参照することができる。したがって、データ復元プロセスにおいてバックアップ側デバイス102によりソース・デバイス101に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイス101は、バックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、バックアップ側デバイス102により実施されるステップ6’およびステップ7’の方式でデータ・ブロック2’を取得し、データ・ブロック2’をデータ・ブロック2’の論理ブロック・アドレスに書き込み、それによりソース・デバイス101をスナップショットSの時点の状態に復元する。
本発明の当該実施形態における排他OR操作をまた排他NOR操作で置き換えてもよく、同一の効果を実現することができる。特に、シフト量を決定するための1実装方式では、排他NOR操作が使用される場合、当該排他NOR操作をデータ・ブロック2’およびデータ・ブロック2に実施して、排他NORデータ・ブロックa1を取得し、排他NORデータ・ブロックa1に含まれる1の数を取得し、次いで、左への1ビットの循環シフトをデータ・ブロック2’に実施し、排他NOR操作をデータ・ブロック2と左への1ビットの循環シフトを実施することによって取得されたデータ・ブロックとに実施して、排他NORデータ・ブロックa2を取得し、排他NORデータ・ブロックa2に含まれる1の数を取得する。左への23ビットの循環シフトがデータ・ブロック2’に実施され、排他NORがデータ・ブロック2と左への23ビットの循環シフトを実施することによって取得されたデータ・ブロックとに実施されて、排他NORデータ・ブロックa23を取得し排他NORデータ・ブロックa23に含まれる1の数を決定するまで、以上の規則に従って左への循環シフトが実施される。最大量の1を含む排他NORデータ・ブロックが、排他NORデータ・ブロックa1からa23まで決定され、本発明の当該実施形態では、排他NORデータ・ブロックa5であり、次いで、左への4ビットの循環シフトがデータ・ブロック2’に実施されると判定される。排他NORデータ・ブロックa1が全て1のデータである場合、循環シフトを実施する必要はない。
本発明の実施形態で説明したデータ・バックアップ方法と本発明の実施形態におけるデータ復元方法を組み合わせて使用してもよく、または、独立に使用してもよい。
本発明の当該実施形態におけるソース・デバイス101およびバックアップ側デバイス102が、記憶アレイであってもよい。即ち、ソース・デバイス101はソース記憶アレイであり、バックアップ側デバイス102はバックアップ側記憶アレイである。記憶アレイの構造が図10に示されており、記憶コントローラおよび複数のハード・ディスクを含む。当該記憶コントローラは、中央演算装置(Central Processing Unit、CPU)およびメモリを備える。当該CPUと当該メモリはバスを用いることによって互いと通信し、当該記憶コントローラはさらに、ホストおよびハード・ディスクと通信するインタフェースを備える。当該記憶コントローラは論理結合を当該ハード・ディスクに実施し、必要に応じて当該ハード・ディスクを異なるRAIDグループに分割する。当該記憶コントローラはRAIDグループの利用可能な容量を、論理ユニット(Logical Unit)と呼ばれる相対的に小さなユニットに分割する。一意な識別子が各論理ユニットに割り当てられ、論理ユニット番号(Logical Unit Number、LUN)と呼ばれる。当該記憶コントローラは論理ユニットを利用のためにホストに割り当て、即ち、当該論理ユニットのLUNを当該ホストに公開する。具体的な実装については、記憶技術の分野における論理ユニット割当て技術を参照することができる。本発明の当該実施形態では、ソース記憶アレイをバックアップすることが、データ・ブロックを当該記憶アレイ内の論理ユニットにバックアップすることであってもよく、または、複数の論理ユニットをバックアップすることであってもよい。記憶アレイのシナリオにおいて、DCL技術を用いることによって修正されたデータ・ブロックを決定することは特に、記憶コントローラがデータ書込み要求で運搬されるデータ・ブロックのアドレスを解析することによって当該修正されたデータ・ブロックの論理ブロック・アドレスを記録すること、即ち、運搬されるデータ・ブロックの論理ブロック・アドレス(Logical Block Address、LBA)および長さを記録することである。図6に示すフィールド601は修正されたデータ・ブロック2’のLBAおよび長さを運搬する。
本発明の当該実施形態におけるソース・デバイス101およびバックアップ側デバイス102がネットワーク・アタッチト・ストレージ(Network Attached Storage、NAS)であってもよく、図11に示すようにNASヘッダおよび記憶アレイ(図9を参照)を備える。当該NASヘッダはCPUおよびメモリを備え、当該NASヘッダはさらに記憶業界における標準記憶プロトコルおよびポートを備え、これらは物理磁気ディスク・リソースに接続しこれを管理するために使用される。当該NASヘッダ内のCPUはファイル共有プロトコルを実行して、ファイル・アクセスを実装する。特に、当該ファイル共有プロトコルはネットワーク・ファイル・システム(Network File System、NFS)、共通インターネット・ファイル・システム(Common Internet File System、CIFS)等を含む。本発明の当該実施形態では、ソースNASをバックアップすることが、ファイル・システムを当該NASにバックアップすることであってもよい。NASのシナリオでは、DCL技術を用いることによって修正されたデータ・ブロックが決定されることは特に、NASヘッダが、データ書込み要求で運搬されるデータ・ブロックのアドレスを解析することによって決定された修正されたデータ・ブロックのアドレスを記録すること、即ち、運搬されるファイル識別子、オフセット(Offset)、および長さを記録することである。図6に示すフィールド601は、ファイル識別子、オフセット(Offset)、および長さを運搬する。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、インタフェース1201およびプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。プロセッサ1202は、n番目のスナップショットSの後に記憶装置101に書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスに従って、n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。インタフェース1201は、バックアップ側デバイス102に、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成される。任意選択で、プロセッサ1202は特に、n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第1のデータ・ブロックを決定するように構成される。任意選択で、プロセッサ1202は特に、x番目のスナップショットS操作を実施し、スナップショットSをスナップショットSと比較し、第1のデータ・ブロックを決定するように構成され、nおよびxは整数であり、n<xである。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、インタフェース1201およびプロセッサ1202を備える。インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号を取得するように構成される。プロセッサ1202は、第1のデータ・ブロックの論理ブロック・アドレスおよびn番目のスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して、第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは、ソース・デバイスによりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、インタフェース1201およびプロセッサ1202を備える。インタフェース1201は、ソース・デバイス101により送信されたデータ復元要求を受信し解析して、スナップショットSのバージョン番号を取得するように構成される。プロセッサ1202は、スナップショットSのバージョン番号およびスナップショットSのバージョン番号に従って、スナップショットSに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスおよびスナップショットSのバージョン番号に従って、スナップショットSに記録され当該論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。第1のデータ・ブロックは、記憶装置102によりバックアップされたスナップショットSに記録されソース・デバイス101によりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。インタフェース1201はさらに、ソース・デバイス101に、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、データ復元要求をバックアップ側デバイス102に送信し、当該データ復元要求に従ってバックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するように構成される。当該データ復元要求はスナップショットSのバージョン番号を運搬し、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットSに記録され記憶装置101によりn番目のスナップショットSの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。プロセッサ1202は、第1のデータ・ブロックの論理ブロック・アドレスに従って、ソース・デバイスに格納されたスナップショットSに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たし、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、ソース・デバイス101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。プロセッサ1202は、n番目のスナップショットSの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスに従って、n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。インタフェース1201は、バックアップ側デバイス102に、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびn番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。プロセッサ1202は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。任意選択で、プロセッサ1202は特に、n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第1のデータ・ブロックを決定するように構成される。任意選択で、プロセッサ1202は特に、x番目のスナップショットS操作をソース・デバイス101に実施し、スナップショットSをスナップショットSと比較し、第1のデータ・ブロックを決定するように構成され、nおよびxは整数であり、n<xである。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、ソース・デバイス101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置102は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびn番目のスナップショットSのバージョン番号を取得するように構成される。プロセッサ1202は、第1のデータ・ブロックの論理ブロック・アドレスおよびn番目のスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは、ソース・デバイスによりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作であり、当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにソース・デバイス101により必要とされるシフト量および循環シフト方向を含む。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータはソース・デバイス101に格納され、ソース・デバイス内のn番目のスナップショットSのデータおよびx番目のスナップショットSのデータはバックアップ側デバイス102に格納され、nおよびxは整数であり、n<xである。記憶装置102は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、ソース・デバイス101により送信されたデータ復元要求を受信するように構成される。当該データ復元要求はスナップショットSのバージョン番号を運搬する。プロセッサ1202は、スナップショットSのバージョン番号およびスナップショットSのバージョン番号に従って、スナップショットSに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスおよびスナップショットSのバージョン番号に従って、スナップショットSに記録され当該論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成される。第1のデータ・ブロックはバックアップ側デバイス102によりバックアップされたスナップショットSに記録されソース・デバイス101によりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、当該論理演算は排他OR操作または排他NOR操作である。当該インタフェースは、ソース・デバイス101に、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成される。当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。プロセッサ1202は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たし、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101に格納され、記憶装置101内のn番目のスナップショットSのデータおよびx番目のスナップショットSのデータはバックアップ側デバイス102に格納され、nおよびxは整数であり、n<xである。ソース・デバイス101は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、データ復元要求をバックアップ側デバイス102に送信し、当該データ復元要求に従ってバックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成される。当該データ復元要求はスナップショットSのバージョン番号を運搬し、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットSに記録され記憶装置101によりn番目のスナップショットSの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。プロセッサ1202は、第1のデータ・ブロックの論理ブロック・アドレスに従って、記憶装置101に格納されたスナップショットSに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作であり、当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにバックアップ側デバイス102により必要とされるシフト量および循環シフト方向を含む。
本発明の上述の実施形態における記憶装置内のインタフェース1201およびプロセッサ1202が物理構造であってもよく、または、論理的に分割されてもよい。具体的な実装では、インタフェース1201の幾つかの機能をまた、プロセッサ1202により実装してもよく、または、当該プロセッサに統合してもよい(即ち、当該インタフェースは当該プロセッサの一部である)。当該記憶装置の具体的な機能については、上述の実施形態におけるソース・デバイス101とバックアップ側デバイス102の機能を参照することができる。詳細はここでは説明しない。
図13に示すように、本発明の1実施形態では、記憶システム内のソース・デバイス101の役割を果たすように構成された記憶装置を提供する。当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、決定ユニット1301、論理演算ユニット1302、圧縮ユニット1303、および送信ユニット1304を備える。決定ユニット1301は、n番目のスナップショットSの後に記憶装置101に書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスに従って、n番目のスナップショットSに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。論理演算ユニット1302は、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。圧縮ユニット1303は、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。送信ユニット1304は、バックアップ側デバイス102に、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成される。任意選択で、決定ユニット1301は特に、n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第1のデータ・ブロックを決定するように構成される。任意選択で、決定ユニット1301は特に、x番目のスナップショットS操作を実施し、スナップショットSをスナップショットSと比較し、第1のデータ・ブロックを決定するように構成され、nおよびxは整数であり、n<xである。
図14に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、受信解析ユニット1401、決定ユニット1402、解凍ユニット1403、論理演算ユニット1404、および書込みユニット1405を備える。受信解析ユニット1401は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびn番目のスナップショットSのバージョン番号を取得するように構成される。決定ユニット1402は、第1のデータ・ブロックの論理ブロック・アドレスおよびn番目のスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックはソース・デバイス101によりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1403は、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1404は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して、第1のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。書込みユニット1405は、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
図15に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、受信解析ユニット1501、決定ユニット1502、論理演算ユニット1503、圧縮ユニット1504、および送信ユニット1505を備える。受信解析ユニット1501は、ソース・デバイス101により送信されたデータ復元要求を受信し解析して、スナップショットSのバージョン番号を取得するように構成される。決定ユニット1502は、スナップショットSのバージョン番号およびスナップショットSのバージョン番号に従って、スナップショットSに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスおよびスナップショットSのバージョン番号に従って、スナップショットSに記録され当該論理ブロック・アドレスに格納された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは、記憶装置102によりバックアップされたスナップショットSに記録されソース・デバイス101によりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。論理演算ユニット1503は、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。圧縮ユニット1504は、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。送信ユニット1505は、ソース・デバイス101に、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される。
図16に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。当該記憶装置は、送信ユニット1601、受信解析ユニット1602、決定ユニット1603、解凍ユニット1604、論理演算ユニット1605、および書込みユニット1606を備える。送信ユニット1601は、データ復元要求をバックアップ側デバイス102に送信するように構成され、当該データ復元要求はスナップショットSのバージョン番号を運搬する。受信解析ユニット1602は、当該データ復元要求に従ってバックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するように構成され、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットSに記録され記憶装置101によりn番目のスナップショットSの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。決定ユニット1603は、第1のデータ・ブロックの論理ブロック・アドレスに従って、記憶装置101に格納されたスナップショットSに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1604は、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1605は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第1のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。書込みユニット1606は、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
図13に示すように、本発明の別の実施形態では、記憶システム内のソース・デバイス101の役割を果たすように構成された記憶装置を提供する。当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101はさらにシフト・ユニット1305を備える。決定ユニット1301は、n番目のスナップショットSの後に記憶装置101に書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスに従って、n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。シフト・ユニット1305は、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1302は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。圧縮ユニット1303は、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成される。送信ユニット1304は、バックアップ側デバイス102に、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびn番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。決定ユニット1301は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
図14に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図1に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102はさらにシフト・ユニット1406を備える。受信解析ユニット1401は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびn番目のスナップショットSのバージョン番号を取得するように構成される。決定ユニット1402は、第1のデータ・ブロックの論理ブロック・アドレスおよびn番目のスナップショットSのバージョン番号に従って、スナップショットSに記録された第2のデータ・ブロックを決定するように構成される。第1のデータ・ブロックはソース・デバイス101によりn番目のスナップショットSの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1403は、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成される。論理演算ユニット1404は、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成される。当該論理演算は排他OR操作または排他NOR操作である。シフト・ユニット1406は、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得するように構成される。当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにソース・デバイス101により必要とされるシフト量および循環シフト方向を含む。書込みユニット1405は、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
図15に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102はさらにシフト・ユニット1506を備える。受信ユニット1501は、ソース・デバイス101により送信されたデータ復元要求を受信するように構成される。当該データ復元要求はスナップショットSのバージョン番号を運搬する。決定ユニット1502は、スナップショットSのバージョン番号およびスナップショットSのバージョン番号に従って、スナップショットSに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理ブロック・アドレスおよびスナップショットSのバージョン番号に従って、スナップショットSに記録され当該論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成される。第1のデータ・ブロックは、記憶装置102によりバックアップされたスナップショットSに記録されソース・デバイス101によりn番目のスナップショットSの後に書き込まれたデータ・ブロックである。シフト・ユニット1506は、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1503は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成される。圧縮ユニット1504は、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。送信ユニット1505は、ソース・デバイス101に、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置102に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。決定ユニット1502は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
図16に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。図9に示す記憶システムを参照することができる。n番目のスナップショットSのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101はさらにシフト・ユニット1607を備える。送信ユニット1601は、データ復元要求をバックアップ側デバイスに送信するように構成され、当該データ復元要求はスナップショットSのバージョン番号を運搬する。受信解析ユニット1602は、当該データ復元要求に従ってバックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成され、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットSに記録され記憶装置101によりn番目のスナップショットSの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。決定ユニット1603は、第1のデータ・ブロックの論理ブロック・アドレスに従って、記憶装置101に格納されたスナップショットSに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1604は、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成される。論理演算ユニット1605は、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。シフト・ユニット1607は、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得するように構成される。当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにバックアップ側デバイス102により必要とされるシフト量および循環シフト方向を含む。書込みユニット1606は、第1のデータ・ブロックを第1のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
本発明の実施形態の図13乃至図16に示す記憶装置に関して、図13を1例として使用する。当該記憶装置は、決定ユニット1301、論理演算ユニット1302、圧縮ユニット1303、および送信ユニット1304を備える。実装方式は、上述のユニットが当該記憶装置にインストールされ、上述のユニットを当該記憶装置のメモリにロードしてもよく、当該記憶装置の中央演算装置が当該メモリ内の命令を実行して、本発明に対応する実施形態における機能を実装するというものである。別の実装方式は、当該記憶装置に含まれるユニットを、ハードウェアを用いることによって実装してもよく、または、ソフトウェアおよびハードウェアの組合せを用いることによって実装してもよいというものである。上述のユニットは構造ユニットとも呼ばれる。
本発明の当該実施形態では、記憶装置が記憶システム内のソース・デバイスまたはバックアップ側デバイスの役割を果たすとは、当該記憶装置が当該記憶システム内のソース・デバイスまたはバックアップ側デバイスの機能を実施してもよく、ソース・デバイスまたは当該バックアップ側デバイスと同じ構造を有してもよいことをいう。換言すれば、当該記憶システム内のソース・デバイスまたはバックアップ側デバイスを記憶装置と称してもよい。
本発明の1実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体と当該コンピュータ・プログラム製品に含まれるコンピュータ命令が図1、図9、図10、図11、および図12に示す装置のメモリにロードされると、CPUは当該メモリにロードされたコンピュータ命令を実行して、本発明の当該実施形態における対応する機能を実装する。
本発明で提供する幾つかの実施形態では、開示した装置および方法を他の方式で実装してもよいことは理解されるべきである。例えば、説明した装置の実施形態におけるユニット分割は論理的な機能分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニットまたはコンポーネントを組み合わせるかもしくは別のシステムに統合してもよく、または、幾つかの特徴を無視するかまたは実施しなくてもよい。さらに、図示または説明した相互結合または直接結合または通信接続を、幾つかのインタフェースを用いることによって実装してもよい。当該装置またはユニットの間の間接結合または通信接続を電気的、機械的、または他の形態で実装してもよい。
別々の部分として説明したユニットが、物理的に別々であってもなくてもよく、ユニットとして示した部分が物理ユニットであってもなくてもよく、1つの位置に配置されてもよく、または、複数のネットワーク・ユニットに分散されてもよい。当該ユニットの一部または全部を、諸実施形態の解決策の目的を実現するための実際のニーズに従って選択してもよい。
さらに、本発明の当該実施形態における機能的ユニットを1つの処理ユニットに統合してもよく、または、当該ユニットの各々が物理的に単体で存在してもよく、または、2つまたは複数のユニットが1つのユニットに統合される。
101 ソース・デバイス
102 バックエンド・デバイス
1201 インタフェース
1202 プロセッサ
1301 決定ユニット
1302 論理動作ユニット
1303 圧縮ユニット
1304 送信ユニット
1401 受信解析ユニット
1402 決定ユニット
1403 解凍ユニット
1404 論理動作ユニット
1405 書込みユニット
1501 受信解析ユニット
1502 決定ユニット
1503 論理動作ユニット
1504 圧縮ユニット
1505 送信ユニット
1601 送信ユニット
1602 受信解析ユニット
1603 決定ユニット
1604 解凍ユニット
1605 論理動作ユニット
1606 書込みユニット

Claims (48)

  1. 記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、nは整数であり、
    前記ソース・デバイスは、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得し、前記バックアップ側デバイスに、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、
    前記バックアップ側デバイスは、前記データ・パケットを受信し解析して、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSの前記バージョン番号を取得するように構成され、前記論理演算は排他OR操作または排他NOR操作であり、
    前記バックアップ側デバイスはさらに、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された前記第2のデータ・ブロックを決定し、前記第4のデータ・ブロックを解凍して前記第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに前記論理演算を実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
    記憶システム。
  2. 記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、nは整数であり、前記方法は、
    前記ソース・デバイスにより、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、前記ソース・デバイスにより、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するステップであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記ソース・デバイスにより、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するステップと、
    前記ソース・デバイスにより、前記バックアップ側デバイスに、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するステップと、
    を含む、方法。
  3. 前記ソース・デバイスにより、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、前記n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って、前記第1のデータ・ブロックを決定するステップを含む、請求項2に記載の方法。
  4. 前記ソース・デバイスにより、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、x番目のスナップショットS操作を実施し、前記スナップショットSをスナップショットSと比較し、前記第1のデータ・ブロックを決定するステップであって、xは整数であり、n<xである、ステップを含む、請求項2に記載の方法。
  5. 記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、nは整数であり、前記方法は、
    前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を取得するステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは、前記n番目のスナップショットSの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、ステップと、
    前記バックアップ側デバイスにより、前記第4のデータ・ブロックを解凍して、第3のデータ・ブロックを取得するステップと、
    前記バックアップ側デバイスにより、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して、前記第1のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
    を含む、方法。
  6. 記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、
    前記ソース・デバイスは、データ復元要求を前記バックアップ側デバイスに送信するように構成され、前記データ復元要求は前記スナップショットSのバージョン番号を運搬し、
    前記バックアップ側デバイスは、前記データ復元要求を受信し解析して前記スナップショットSの前記バージョン番号を取得し、前記スナップショットSの前記バージョン番号および前記スナップショットSのバージョン番号に従って第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得し、前記ソース・デバイスに、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成され、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされ前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれた前記スナップショットSに記録されたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
    前記ソース・デバイスはさらに、前記データ・パケットを受信し解析して、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを取得し、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記スナップショットSに記録された前記第2のデータ・ブロックを決定し、前記第4のデータ・ブロックを解凍して前記第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに前記論理演算を実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
    記憶システム。
  7. 記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記方法は、
    前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットSのバージョン番号を取得するステップと、
    前記バックアップ側デバイスにより、前記スナップショットSの前記バージョン番号および前記スナップショットSのバージョン番号に従って、前記スナップショットSに記録された第1のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである、ステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録され前記論理ブロック・アドレスに格納された前記第2のデータ・ブロックを決定するステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して、第3のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記バックアップ側デバイスにより、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するステップと、
    前記バックアップ側デバイスにより、前記ソース・デバイスに、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するステップであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、ステップと、
    を含む、方法。
  8. 記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記方法は、
    前記ソース・デバイスにより、データ復元要求を前記バックアップ側デバイスに送信するステップであって、前記データ復元要求は前記スナップショットSのバージョン番号を運搬する、ステップと、
    前記ソース・デバイスにより、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するステップであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記ソース・デバイスに格納された前記スナップショットSに記録された第2のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、ステップと、
    前記ソース・デバイスにより、前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するステップと、
    前記ソース・デバイスにより、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して前記第1のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
    を含む、方法。
  9. 記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらにバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置は、
    前記n番目のスナップショットSの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成された圧縮ユニットと、
    前記バックアップ側デバイスに、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成された送信ユニットと、
    を備える、記憶装置。
  10. 前記決定ユニットは特に、前記n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第1のデータ・ブロックを決定するように構成される、請求項9に記載の記憶装置。
  11. 前記決定ユニットは特に、x番目のスナップショットS操作を実施し、前記スナップショットSをスナップショットSと比較し、前記第1のデータ・ブロックを決定するように構成され、xは整数であり、n<xである、請求項9に記載の記憶装置。
  12. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらにソース・デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、nは整数であり、前記記憶装置は、
    前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を取得するように構成された受信解析ユニットと、
    前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは、前記n番目のスナップショットSの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成された解凍ユニットと、
    前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して前記第1のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
    を備える、記憶装置。
  13. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、nは整数であり、前記記憶装置は、
    前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットSのバージョン番号を取得するように構成された受信解析ユニットと、
    前記スナップショットSの前記バージョン番号およびスナップショットSのバージョン番号に従って、前記スナップショットSに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成された圧縮ユニットと、
    前記ソース・デバイスに、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成された送信ユニットと、
    備える、記憶装置。
  14. 記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置は、
    データ復元要求を前記バックアップ側デバイスに送信するように構成された送信ユニットであって、前記データ復元要求は前記スナップショットSのバージョン番号を運搬する、送信ユニットと、
    前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するように構成された受信解析ユニットであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされたスナップショットSに記録され前記記憶装置により前記n番目のスナップショットSの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、受信解析ユニットと、
    前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成された解凍ユニットと、
    前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して、前記第1のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
    を備える、記憶装置。
  15. 記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記プロセッサは、前記n番目のスナップショットSの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
    前記インタフェースは、前記バックアップ側デバイスに、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成される、
    記憶装置。
  16. 前記プロセッサは特に、前記n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第1のデータ・ブロックを決定するように構成される、請求項15に記載の記憶装置。
  17. 前記プロセッサは特に、x番目のスナップショットS操作を実施し、前記スナップショットSをスナップショットSと比較して前記第1のデータ・ブロックを決定するように構成され、xは整数であり、n<xである、請求項15に記載の記憶装置。
  18. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、および前記n番目のスナップショットSのバージョン番号を取得するように構成され、
    前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定し、前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して、前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは、前記n番目のスナップショットSの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作である、
    記憶装置。
  19. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットSのバージョン番号を取得するように構成され、
    前記プロセッサは、前記スナップショットSの前記バージョン番号およびスナップショットSのバージョン番号に従って、前記スナップショットSに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックであり、xおよびnは整数であり、x>nであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
    前記インタフェースはさらに、前記ソース・デバイスに、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される、
    記憶装置。
  20. 記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、データ復元要求を前記バックアップ側デバイスに送信し、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するように構成され、前記データ復元要求は前記スナップショットSのバージョン番号を運搬し、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされたスナップショットSに記録され前記記憶装置により前記n番目のスナップショットSの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックであり、
    前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSに記録された第2のデータ・ブロックを決定し、前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作である、
    記憶装置。
  21. 記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、nは整数であり、
    前記ソース・デバイスは、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定するように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、
    前記ソース・デバイスはさらに、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得し、前記バックアップ側デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記論理演算は排他OR操作または排他NOR操作であり、前記シフト情報は循環シフト方向および前記シフト量を含み、
    前記バックアップ側デバイスは、前記データ・パケットを受信し解析して、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、前記シフト情報、および前記n番目のスナップショットSの前記バージョン番号を取得するように構成され、
    前記バックアップ側デバイスはさらに、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された前記第2のデータ・ブロックを決定し、前記第5のデータ・ブロックを解凍して前記第4のデータ・ブロックを取得し、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに前記論理演算を実施して前記第3のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
    記憶システム。
  22. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記ソース・デバイスに対して構成され、
    前記ソース・デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
    前記計算規則に従って、前記ソース・デバイスにより、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、
    前記ソース・デバイスにより、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択するステップであって、Mは正の整数でありNより大きくない、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップと、
    を含む、請求項21に記載の記憶システム。
  23. 記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、nは整数であり、前記方法は、
    前記ソース・デバイスにより、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するステップと、
    前記ソース・デバイスにより、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記ソース・デバイスにより、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するステップと、
    前記ソース・デバイスにより、前記バックアップ側デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するステップであって、前記シフト情報は循環シフト方向と前記シフト量を含む、ステップと、
    を含む、方法。
  24. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記ソース・デバイスに対して構成され、前記ソース・デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
    前記計算規則に従って、前記ソース・デバイスにより、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、
    前記ソース・デバイスにより、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択するステップであって、Mは正の整数でありNより大きくない、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索して、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップと、
    を含む、請求項23に記載の方法。
  25. 前記ソース・デバイスにより、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、前記n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って、前記第1のデータ・ブロックを決定するステップを含む、請求項23に記載の方法。
  26. 前記ソース・デバイスにより、前記n番目のスナップショットSの後に前記ソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、x番目のスナップショットS操作を実施し、前記スナップショットSをスナップショットSと比較して、前記第1のデータ・ブロックを決定するステップであって、xは整数であり、n<xである、ステップを含む、請求項23に記載の方法。
  27. 記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、nは整数であり、前記方法は、
    前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を取得するステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは、前記n番目のスナップショットSの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、ステップと、
    前記バックアップ側デバイスにより、前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するステップと、
    前記バックアップ側デバイスにより、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記シフト情報に従って前記バックアップ側デバイスにより、逆循環シフトを前記第3のデータ・ブロックに実施して、前記第1のデータ・ブロックを取得するステップであって、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、ステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
    を含む、方法。
  28. 記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、
    前記ソース・デバイスは、データ復元要求を前記バックアップ側デバイスに送信するように構成され、前記データ復元要求は前記スナップショットSのバージョン番号を運搬し、
    前記バックアップ側デバイスは、前記データ復元要求を受信し解析して前記スナップショットSの前記バージョン番号を取得し、前記スナップショットSの前記バージョン番号および前記スナップショットSのバージョン番号に従って第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得し、前記ソース・デバイスに、前記第5のデータ・ブロック、シフト情報、および前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成され、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、前記シフト情報は循環シフト方向および前記シフト量を含み、
    前記ソース・デバイスはさらに、前記データ・パケットを受信し解析して、前記第5のデータ・ブロック、前記シフト情報、および前記第1のデータ・ブロックの前記論理ブロック・アドレスを取得し、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記スナップショットSに記録された前記第2のデータ・ブロックを決定し、前記第5のデータ・ブロックを解凍して前記第4のデータ・ブロックを取得し、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに前記論理演算を実施して前記第3のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
    記憶システム。
  29. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記バックアップ側デバイスに対して構成され、
    前記バックアップ側デバイスは特に、前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
    請求項28に記載の記憶システム。
  30. 記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記方法は、
    前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ復元要求を受信するステップであって、前記データ復元要求は前記スナップショットSのバージョン番号を運搬する、ステップと、
    前記バックアップ側デバイスにより、前記スナップショットSの前記バージョン番号および前記スナップショットSのバージョン番号に従って、前記スナップショットSに記録された第1のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックである、ステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定するステップと、
    前記バックアップ側デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記バックアップ側デバイスにより、前記ソース・デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するステップであって、前記シフト情報は循環シフト方向および前記シフト量を含む、ステップと、
    を含む、方法。
  31. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記バックアップ側デバイスに対して構成され、前記バックアップ側デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
    前記計算規則に従って、前記バックアップ側デバイスにより、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択するステップと、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップとを含み、Mは正の整数でありNより大きくない、
    請求項30に記載の方法。
  32. 記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記方法は、
    前記ソース・デバイスにより、データ復元要求を前記バックアップ側デバイスに送信するステップであって、前記データ復元要求は前記スナップショットSのバージョン番号を運搬する、ステップと、
    前記ソース・デバイスにより、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するステップであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記ソース・デバイスに格納された前記スナップショットSに記録された第2のデータ・ブロックを決定するステップであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、ステップと、
    前記ソース・デバイスにより、前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するステップと、
    前記ソース・デバイスにより、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するステップであって、前記論理演算は排他OR操作または排他NOR操作である、ステップと、
    前記シフト情報に従って、前記ソース・デバイスにより、前記第3のデータ・ブロックに逆循環シフトを実施して前記第1のデータ・ブロックを取得するステップであって、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、ステップと、
    前記ソース・デバイスにより、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
    を含む、方法。
  33. 記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置は、
    前記n番目のスナップショットSの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成されたシフト・ユニットと、
    前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成された圧縮ユニットと、
    前記バックアップ側デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成された送信ユニットであって、前記シフト情報は循環シフト方向および前記シフト量を含む、送信ユニットと、
    を備える、記憶装置。
  34. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記決定ユニットは特に、
    前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
    請求項33に記載の記憶装置。
  35. 前記決定ユニットは特に、前記n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第1のデータ・ブロックを決定するように構成される、請求項33に記載の記憶装置。
  36. 前記決定ユニットは特に、x番目のスナップショットS操作を前記記憶装置に実施し、前記スナップショットSをスナップショットSと比較し、前記第1のデータ・ブロックを決定するように構成され、xは整数であり、n<xである、請求項33に記載の記憶装置。
  37. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記記憶装置の両方に格納され、nは整数であり、前記記憶装置は、
    前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を取得するように構成された受信解析ユニットと、
    前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは、前記n番目のスナップショットSの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成された解凍ユニットと、
    前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得するように構成されたシフト・ユニットであって、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、シフト・ユニットと、
    前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
    を備える、記憶装置。
  38. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記記憶装置に格納され、nおよびxは整数であり、n<xであり、前記記憶装置は、
    前記ソース・デバイスにより送信されたデータ復元要求を受信するように構成された受信ユニットであって、前記データ復元要求は前記スナップショットSのバージョン番号を運搬する、受信ユニットと、
    前記スナップショットSの前記バージョン番号および前記スナップショットSのバージョン番号に従って、前記スナップショットSに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックである、決定ユニットと、
    前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成されたシフト・ユニットと、
    前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成された論理演算ユニットと、
    前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成された圧縮ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、圧縮ユニットと、
    前記ソース・デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成された送信ユニットであって、前記シフト情報は循環シフト方向および前記シフト量を含む、送信ユニットと、
    を備える、記憶装置。
  39. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記決定ユニットは特に、
    前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
    請求項38に記載の記憶装置。
  40. 記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置に格納され、前記記憶装置内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記ソース・デバイスは、
    データ復元要求を前記バックアップ側デバイスに送信するように構成された送信ユニットであって、前記データ復元要求は前記スナップショットSのバージョン番号を運搬する、送信ユニットと、
    前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成された受信解析ユニットであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記記憶装置により前記n番目のスナップショットSの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、受信解析ユニットと、
    前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
    前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成された解凍ユニットと、
    前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
    前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得するように構成されたシフト・ユニットであって、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、シフト・ユニットと、
    前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
    を備える、記憶装置。
  41. 記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
    前記プロセッサは、前記n番目のスナップショットSの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
    前記インタフェースは、前記バックアップ側デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記シフト情報は循環シフト方向および前記シフト量を含む、
    記憶装置。
  42. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記プロセッサは特に、
    前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
    請求項41に記載の記憶装置。
  43. 前記プロセッサは特に、前記n番目のスナップショットSの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第1のデータ・ブロックを決定するように構成される、請求項41に記載の記憶装置。
  44. 前記プロセッサは特に、x番目のスナップショットS操作を前記記憶装置に実施し、前記スナップショットSをスナップショットSと比較し、前記第1のデータ・ブロックを決定するように構成され、xは整数であり、n<xである、請求項41に記載の記憶装置。
  45. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスと前記記憶装置の両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
    前記インタフェースは、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSのバージョン番号を取得するように構成され、
    前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSの前記バージョン番号に従って、前記スナップショットSに記録された第2のデータ・ブロックを決定し、前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは、前記n番目のスナップショットSの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、
    記憶装置。
  46. 記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記記憶装置に格納され、nおよびxは整数であり、n<xであり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
    前記インタフェースは、前記ソース・デバイスにより送信されたデータ復元要求を受信するように構成され、前記データ復元要求は前記スナップショットSのバージョン番号を運搬し、
    前記プロセッサは、前記スナップショットSの前記バージョン番号および前記スナップショットSのバージョン番号に従って、前記スナップショットSに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSの前記バージョン番号に従って、前記スナップショットSに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記ソース・デバイスにより前記n番目のスナップショットSの後に書き込まれたデータ・ブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
    前記インタフェースは、前記ソース・デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成され、前記シフト情報は循環シフト方向および前記シフト量を含む、
    記憶装置。
  47. 以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記プロセッサは特に、
    前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、 前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
    請求項46に記載の記憶装置。
  48. 記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSのデータは前記記憶装置に格納され、前記記憶装置内の前記n番目のスナップショットSの前記データおよびx番目のスナップショットSのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記ソース・デバイスはインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
    前記インタフェースは、データ復元要求を前記バックアップ側デバイスに送信し、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成され、前記データ復元要求は前記スナップショットSのバージョン番号を運搬し、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSに記録され前記記憶装置により前記n番目のスナップショットSの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックであり、
    前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSに記録された第2のデータ・ブロックを決定し、前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、
    記憶装置。
JP2016564331A 2015-11-25 2015-11-25 記憶システム内のデータ・バックアップのための方法および装置 Active JP6308446B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/095562 WO2017088129A1 (zh) 2015-11-25 2015-11-25 存储系统中数据备份的方法及装置

Publications (2)

Publication Number Publication Date
JP2017538982A JP2017538982A (ja) 2017-12-28
JP6308446B2 true JP6308446B2 (ja) 2018-04-11

Family

ID=58762836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016564331A Active JP6308446B2 (ja) 2015-11-25 2015-11-25 記憶システム内のデータ・バックアップのための方法および装置

Country Status (6)

Country Link
US (2) US10176058B2 (ja)
EP (1) EP3229138B1 (ja)
JP (1) JP6308446B2 (ja)
CN (1) CN107027326B (ja)
SG (1) SG11201703156UA (ja)
WO (1) WO2017088129A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI615710B (zh) * 2016-12-14 2018-02-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN109213433A (zh) * 2017-07-07 2019-01-15 华为技术有限公司 闪存设备中数据写入的方法及设备
CN111406282B (zh) * 2018-04-23 2022-06-07 华为技术有限公司 一种用于存储设备的存储器控制电路
CN109756231B (zh) * 2018-12-27 2023-01-31 北京思朗科技有限责任公司 循环移位处理装置及方法
TWI791966B (zh) * 2020-03-27 2023-02-11 瑞昱半導體股份有限公司 記憶體控制器與資料處理方法
US11461018B2 (en) * 2020-09-29 2022-10-04 EMC IP Holding Company LLC Direct snapshot to external storage
US20240053984A1 (en) * 2022-08-11 2024-02-15 International Business Machines Corporation Operator mirroring

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW313643B (ja) 1994-12-14 1997-08-21 At & T Corp
CA2546304A1 (en) * 2003-11-13 2005-05-26 Commvault Systems, Inc. System and method for performing an image level snapshot and for restoring partial volume data
US7200603B1 (en) * 2004-01-08 2007-04-03 Network Appliance, Inc. In a data storage server, for each subsets which does not contain compressed data after the compression, a predetermined value is stored in the corresponding entry of the corresponding compression group to indicate that corresponding data is compressed
US8380686B2 (en) * 2005-03-14 2013-02-19 International Business Machines Corporation Transferring data from a primary data replication appliance in a primary data facility to a secondary data replication appliance in a secondary data facility
CN1949761B (zh) * 2005-10-13 2010-09-15 腾讯科技(深圳)有限公司 一种数据同步方法及其差分编码方法
US7651593B2 (en) * 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US9244779B2 (en) * 2010-09-30 2016-01-26 Commvault Systems, Inc. Data recovery operations, such as recovery from modified network data management protocol data
CN102014152A (zh) * 2010-10-18 2011-04-13 浪潮(北京)电子信息产业有限公司 一种远程复制系统及其方法
US8788769B2 (en) * 2010-11-16 2014-07-22 Actifio, Inc. System and method for performing backup or restore operations utilizing difference information and timeline state information
US9417999B2 (en) * 2012-12-17 2016-08-16 International Business Machines Corporation Write peformance in solid state storage by recognizing copy source to target operations and only storing updates instead of entire block
US9015122B2 (en) * 2012-12-21 2015-04-21 Zetta, Inc. Systems and methods for minimizing network bandwidth for replication/back up
CN103095843B (zh) 2013-01-28 2018-01-30 刘海峰 一种基于版本矢量的数据备份方法及客户端
CN103744751B (zh) * 2014-02-08 2017-04-26 安徽瀚科信息科技有限公司 存储设备配置信息连续优化备份系统及其使用方法
US9535799B2 (en) * 2015-01-06 2017-01-03 HGST Netherlands B.V. Apparatus, systems, and methods for data recovery
US10210048B2 (en) * 2016-10-25 2019-02-19 Commvault Systems, Inc. Selective snapshot and backup copy operations for individual virtual machines in a shared storage

Also Published As

Publication number Publication date
US10176058B2 (en) 2019-01-08
US10540240B2 (en) 2020-01-21
US20190108102A1 (en) 2019-04-11
CN107027326A (zh) 2017-08-08
SG11201703156UA (en) 2017-07-28
EP3229138A1 (en) 2017-10-11
CN107027326B (zh) 2018-12-07
JP2017538982A (ja) 2017-12-28
EP3229138A4 (en) 2018-07-25
WO2017088129A1 (zh) 2017-06-01
EP3229138B1 (en) 2019-05-29
US20180189151A1 (en) 2018-07-05

Similar Documents

Publication Publication Date Title
JP6308446B2 (ja) 記憶システム内のデータ・バックアップのための方法および装置
US9977746B2 (en) Processing of incoming blocks in deduplicating storage system
US8321384B2 (en) Storage device, and program and method for controlling storage device
US20180285014A1 (en) Data storage method and apparatus
US20120011101A1 (en) Integrating client and server deduplication systems
TWI706315B (zh) 儲存元件
US7657533B2 (en) Data management systems, data management system storage devices, articles of manufacture, and data management methods
US10956382B2 (en) Application aware export to object storage of low-reference data in deduplication repositories
US10606499B2 (en) Computer system, storage apparatus, and method of managing data
US20160124683A1 (en) In-memory data compression complementary to host data compression
US9843802B1 (en) Method and system for dynamic compression module selection
EP3432131A1 (en) Storage system of distributed deduplication for internet of things backup in data center and method for achieving the same
CN112286714A (zh) 在基于nand的读取源存储中提高大数据分析吞吐量的方法和系统
US10503426B2 (en) Efficient space allocation in gathered-write backend change volumes
WO2017147794A1 (zh) 差异数据备份的方法和设备
US10956273B2 (en) Application aware export to object storage of low-reference data in deduplication repositories
JP7075077B2 (ja) バックアップサーバ、バックアップ方法、プログラム、ストレージシステム
US20230199064A1 (en) Data transmission method and system, apparatus, device, and medium
US12074962B2 (en) Systems, methods, and apparatus for dividing and encrypting data
US20150269086A1 (en) Storage System and Storage Method
CN115705150A (zh) 用于划分和压缩数据的系统、方法和装置
US11977525B2 (en) Method to optimize ingest in dedupe systems by using compressibility hints
US10101945B1 (en) Method and apparatus for enhancing command burst tolerance
US11144206B2 (en) Method and system for sharing data reduction metadata with storage systems
US9716611B1 (en) Method and apparatus for enhancing link anomaly tolerance in a SCSI system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180301

R150 Certificate of patent or registration of utility model

Ref document number: 6308446

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250