(57)【要約】チャンクベースデータ重複排除のシステム及び方法。受信データチャンクは、フィンガープリンティング、及びそれぞれの先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブル及び末尾ＳＨＡテーブルへのマッピングのために先頭部分及び末尾部分に分割される。先頭フィンガープリントまたは末尾フィンガープリントは、受信データチャンクとほぼ同一の先行操作データチャンクの場所を突き止め、データバーストを決定して受信データチャンクを重複排除するために使用される。【選択図】図２
2021527291.tif 000002
【特許請求の範囲】
【請求項１】
重複排除方法であって、
格納のために複数の受信データチャンクを受け取ることと、
前記複数の受信データチャンクのうちの１つを少なくとも1つの先頭部分及び1つの末尾部分に分割することと、
前記先頭部分のフィンガープリントを生成することであって、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別する、前記生成することと、
前記末尾部分のフィンガープリントを生成することであって、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別する、前記生成することと、
先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブル内で、それぞれのデータチャンクごとに先頭フィンガープリントをフルフィンガープリントにマッピングすることと、
末尾ＳＨＡ（セキュアハッシュアルゴリズム）テーブル内で、それぞれのデータチャンクごとに末尾フィンガープリントをフルフィンガープリントにマッピングすることと、
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内にあるかどうか、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にあるかどうかを判断することと、
そのような場合、１）前記受信データチャンクの前記先頭フィンガープリントまたは前記受信データチャンクの前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクを識別することであって、前記受信データチャンクが前記先行データチャンク内の前記データに加えてデータのバーストを含む点を除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ同一である、前記識別することと、
２）前記受信データチャンクと前記先行操作データチャンクとの間の前記データのバーストを決定することと、
３）ＰＢＡ（物理ブロックアドレス）ｐ〜で前記データのバーストをストレージに書き込むことと
を含む、前記方法。
【請求項２】
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にない場合、次いで前記受信データチャンクを利用可能なＰＢＡｐに格納のために書き込み、上記１）、２）、及び３）を省略する、請求項1に記載の方法。
【請求項３】
論理ブロックアドレスを、前記先行操作データチャンクのフルフィンガープリントに、及び前記データのバーストを格納する前記ＰＢＡｐ〜にマッピングするエントリを有する基準ＬＢＡ（論理ブロックアドレス）テーブルを提供すること
をさらに含む、請求項1に記載の方法。
【請求項４】
前記先頭ＳＨＡテーブル内でエントリを作成することであって、前記先頭ＳＨＡテーブル内の前記エントリは、前記先頭フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングする、前記作成することと、
前記末尾ＳＨＡテーブル内でエントリを作成することであって、前記末尾ＳＨＡテーブル内の前記エントリは、前記末尾フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングする、前記作成することと
をさらに含む、請求項２に記載の方法。
【請求項５】
ＬＢＡテーブル内で新規エントリを作成することであって、前記新規ＬＢＡ
エントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと
をさらに含む、請求項４に記載の方法。
【請求項６】
ＳＨＡテーブル内でエントリを作成することであって、前記ＳＨＡテーブル内の前記エントリは、前記論理ブロックアドレスを前記受信データチャンクが格納されている前記ＰＢＡｐにマッピングすること
をさらに含む、請求項５に記載の方法。
【請求項７】
前記受信データチャンクのフルフィンガープリントを生成することであって、前記フルフィンガープリントは、前記受信データチャンクの全体を一意に識別すること
をさらに含む、請求項1に記載の方法。
【請求項８】
フルフィンガープリントをＰＢＡにマッピングするＳＨＡを調べて、前記受信データチャンクの前記フルフィンガープリントが、格納されている先行操作データチャンクに一致するかどうかを判断し、一致する場合、ＬＢＡテーブル内で新規エントリを作成することであって、前記ＬＢＡテーブル内の前記新規エントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングすること
をさらに含む、請求項７に記載の方法。
【請求項９】
前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されているデータチャンクを識別することは、
前記先頭ＳＨＡテーブル内で、前記先行操作データチャンクの前記先頭フィンガープリントを、前記受信データチャンクの前記先頭フィンガープリントと同じであるとして識別することと、
前記先行操作データチャンクの前記フルフィンガープリントを、前記先行操作データチャンクが格納されているＰＢＡにマッピングするエントリを有するＳＨＡテーブルを提供することと、
前記先行操作データチャンクの前記フルフィンガープリントを使用して、前記ＰＢＡストレージから前記先行操作データチャンクを取り出すこと
による、請求項1に記載の方法。
【請求項１０】
前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されているデータチャンクを識別することは、
前記末尾ＳＨＡテーブル内で、前記先行操作データチャンクの前記末尾フィンガープリントを、前記受信データチャンクの前記末尾フィンガープリントと同じであるとして識別することと、
前記先行操作データチャンクの前記フルフィンガープリントを、前記先行操作データチャンクを格納するＰＢＡにマッピングするエントリを有するＳＨＡテーブルを提供することと、
前記先行操作データチャンクの前記フルフィンガープリントを使用して、前記ＰＢＡ格納場所から前記先行操作データチャンクを取り出すことと
による、請求項1に記載の方法。
【請求項１１】
前記先行データチャンクの前記フルフィンガープリントが前記ＳＨＡテーブル内にない場合、
前記先頭ＳＨＡテーブル内で新規エントリを作成することであって、前記新規エントリは前記先頭フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、ＬＢＡテーブル内で新規エントリを作成することであって、前記新規ＬＢＡエントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、前記受信データチャンクをＰＢＡに格納することと、前記ＳＨＡテーブル内で新規エントリを作成することであって、前記新規ＳＨＡテーブルエントリは前記論理ブロックアドレスを前記ＰＢＡにマッピングする、前記作成すること
請求項９に記載の方法。
【請求項１２】
前記先行操作データチャンクの前記フルフィンガープリントが前記ＳＨＡテーブル内にない場合、次いで
前記末尾ＳＨＡテーブル内で新規エントリを作成することであって、前記新規エントリは前記末尾フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、ＬＢＡテーブル内で新規エントリを作成することであって、前記新規ＬＢＡエントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、前記受信データチャンクをＰＢＡに格納することと、前記ＳＨＡテーブル内で新規エントリを作成することであって、前記新規ＳＨＡテーブルエントリは前記論理ブロックアドレスを前記ＰＢＡにマッピングする、前記作成すること
請求項１０に記載の方法。
【請求項１３】
前記ＰＢＡｐ〜から前記データのバーストを読み取ることによってストレージから前記受信データチャンクを読み取ることと、
ストレージから前記先行操作データチャンクを読み取ることと、
前記先行操作データチャンクについて前記データのバーストを適用して、前記受信データチャンクを生じさせることと
をさらに含む、請求項３に記載の方法。
【請求項１４】
前記データのバーストを削除し、前記論理ブロックアドレスを前記先行操作データチャンクの前記フルフィンガープリントに、及び前記ＰＢＡｐ〜にマッピングする前記基準ＬＢＡテーブル内の前記エントリを削除することによって前記受信データチャンクを削除すること
をさらに含む、請求項３に記載の方法。
【請求項１５】
重複排除方法であって、
格納のために複数の受信データチャンクを受け取ることと、
前記複数の受信データチャンクのうちの１つを少なくとも１つの先頭部分及び１つの末尾部分に分割することと、
前記先頭部分のフィンガープリントを生成することであって、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別する、前記生成することと、
前記末尾部分のフィンガープリントを生成することであって、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別する、前記生成することと、
前記受信データチャンクのフルフィンガープリントを生成することであって、前記フルフィンガープリントは、前記受信データチャンクの全体を一意に識別する、前記生成することと、
先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブル内で、前記先頭フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングすることと、
末尾ＳＨＡ（セキュアハッシュアルゴリズム）テーブル内で、前記先行操作データチャンクの前記末尾フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングすることと、
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にない場合に限るが、前記受信データチャンクを格納のためにＰＢＡ（物理ブロックアドレス）に書き込むことと
を含む、前記方法。
【請求項１６】
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内にある、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にある場合、
前記受信データチャンクの前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクの場所を突き止めることであって、前記受信データチャンクが前記先行操作データチャンクに含まれないデータのバーストを含むことを除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ一致する、前記場所を突き止めることと、
前記受信データチャンクをストレージに書き込む代わりに、ＰＢＡ（物理ブロックアドレス）ｐ〜ストレージに前記データのバーストを格納すること、
請求項１５に記載の方法。
【請求項１７】
論理ブロックアドレスを前記先行操作データチャンクのフルフィンガープリントに、及び前記データのバーストを格納する前記ＰＢＡｐ〜にマッピングするエントリを有する基準ＬＢＡ（論理ブロックアドレス）テーブルを提供することをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記先頭ＳＨＡテーブル内でエントリを作成することであって、前記先頭ＳＨＡテーブル内の前記エントリは、前記先頭フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、
前記末尾ＳＨＡテーブル内でエントリを作成することであって、前記末尾ＳＨＡテーブル内の前記エントリは、前記末尾フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、
をさらに含む、請求項１６に記載の方法。
【請求項１９】
非一過性機械可読記憶媒体であって、コンピューティングデバイスに、
格納のために複数の受信データチャンクを受け取らせ、
前記複数の受信データチャンクのうちの１つを少なくとも1つの先頭部分及び1つの末尾部分に分割させ、
前記先頭部分のフィンガープリントを生成させ、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別し、
前記末尾部分のフィンガープリントを生成させ、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別し、
データチャンクごとに、先頭フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブルを提供させ、
データチャンクごとに、末尾フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブルを提供させ、
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内にあるかどうか、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にあるかどうかを判断させ、
そのような場合、１）前記受信データチャンクの前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクを識別させ、前記受信データチャンクが前記先行データチャンク内の前記データに加えてデータのバーストを含む点を除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ同一であり、
２）前記受信データチャンクと前記先行操作データチャンクとの間の前記データのバーストを決定させ、
３）ＰＢＡ（物理ブロックアドレス）ｐ〜で前記データのバーストをストレージに書き込ませる
方法を実行するための命令を有する、前記非一過性機械可読記憶媒体。
【請求項２０】
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡ内にない場合、次いで
前記受信データチャンクを利用可能なＰＢＡｐに格納のために書き込み、上記１）、２）、及び３）を省略する、請求項1９に記載の方法。
【請求項２１】
論理ブロックアドレスを、前記先行操作データチャンクのフルフィンガープリントに、及び前記データのバーストを格納するＰＢＡｐ〜にマッピングするエントリを有する基準ＬＢＡ（論理ブロックアドレス）テーブルをさらに備える、請求項１９に記載の非一過性機械可読記憶媒体。
【請求項２２】
前記受信データチャンクを格納のために利用可能なＰＢＡ（物理ブロックアドレス）ｐに書き込むことは、前記コンピューティングデバイスに、
前記先頭ＳＨＡテーブル内でエントリを作成させ、前記先頭ＳＨＡテーブル内の前記エントリは、前記先頭フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングし、
前記末尾ＳＨＡテーブル内でエントリを作成させ、前記末尾ＳＨＡテーブル内の前記エントリは、前記末尾フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングする
請求項２０に記載の非一過性機械可読記憶媒体。
【請求項２３】
前記コンピューティングデバイスに、
前記受信データチャンクのフルフィンガープリントを生成させ、前記フルフィンガープリントは前記受信データチャンクの全体を一意に識別する
ことをさらに含む、請求項１９に記載の非一過性機械可読記憶媒体。
【請求項２４】
方法を実行するための命令を格納している機械可読記憶媒体を含むメモリと、前記メモリに結合されるプロセッサとを備えるコンピューティングデバイスであって、前記プロセッサは、前記プロセッサに、
格納のために複数の受信データチャンクを受け取らせ、
前記複数の受信データチャンクのうちの１つを少なくとも1つの先頭部分及び1つの末尾部分に分割させ、
前記先頭部分のフィンガープリントを生成させ、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別し、
前記末尾部分のフィンガープリントを生成させ、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別し、
データチャンクごとに、先頭フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブルを提供させ、
データチャンクごとに、末尾フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする末尾ＳＨＡ（セキュアハッシュアルゴリズム）テーブルを提供させ、
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内にあるかどうか、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にあるかどうかを判断させ、
そのような場合、１）前記受信データチャンクの前記先頭フィンガープリントまたは前記受信データチャンクの前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクを識別させ、前記受信データチャンクが前記先行データチャンク内の前記データに加えてデータのバーストを含む点を除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ同一であり、
２）前記受信データチャンクと前記先行操作データチャンクとの間の前記データのバーストを決定させ、
３）ＰＢＡ（物理ブロックアドレス）ｐ〜で前記データのバーストをストレージに書き込ませる
命令を実行するように構成された、前記コンピューティングデバイス。
【請求項２５】
前記受信データチャンクの前記先頭フィンガープリントが前記先頭ＳＨＡテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾ＳＨＡテーブル内にない場合、次いで前記受信データチャンクを利用可能なＰＢＡｐに格納のために書き込み、上記１）、２）、及び３）を省略する、請求項２４に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルデータストレージシステムは、データを格納するために必要とされるストレージの量を最小限に抑えるために多様な技術を利用できる。そのようなストレージ最小化技術は、より高速なデータ処理という点で時間を節約するだけではなく、冗長性を低減し、ストレージのコストを最小限に抑えることもできる。
【０００２】
１つのそのようなストレージ最適化技術がデータ重複排除である。データ重複排除は、データの同じブロック（または単一のセグメント）を、メタデータの異なるセットの中の複数のポインタによって同時に参照する方式を用いる。このようにして、全データセットに共通であるデータのブロックは、一度だけ格納され、反復するデータの二重のコピーは排除される。
【０００３】
チャンクレベルデータ重複排除システムは、受信データセットまたは入力データストリームを複数のデータチャンクにセグメント化するシステムである。受信データセットは、例えばバックアップ環境におけるバックアップファイルである可能性がある。別の例として、受信データセットは、データベーススナップショット、バーチャルマシン画像などである可能性もある。データ重複排除は、二重データを排除することによって記憶領域を削減するだけではなく、ネットワーク環境における冗長なデータの伝送も最小限に抑える。
【０００４】
各受信データチャンクは、そのようなデータチャンクごとに、例えばＳＨＡ−１、ＳＨＡ−２などの暗号論的に安全なハッシュシグネチャまたはフィンガープリントを作成することによって識別できる。また、それぞれのフィンガープリントが対応するデータチャンクを指すフィンガープリントのすべてのインデックスも作成される。このインデックスは、次いでどのデータチャンクが以前に格納されたのかを決定するための参照リストを提供する。
【０００５】
固定長ブロック重複排除では、複数のデータチャンクのサイズは固定である。つまり、データチャンクは固定ブロックにセグメント化される。ブロックの長さは、例えば４Ｋバイトである場合がある。別の例として、長さは１６Ｋバイトである場合がある。可変長重複排除では、複数のデータチャンクは、可変サイズのブロック単位にセグメント化される。ここでは、各可変サイズ単位の長さは、コンテンツ自体に依存している。
【０００６】
一般的な方法では、受信データチャンク及び先行データチャンクは、単一バースト分、変わる場合がある。バックアップシステムでは、例えば、単一ファイルは、多数の構成要素ファイルから作られるバックアップ画像である。これらのファイルは、それらが同じファイルシステムの連続したバックアップであるときにもめったに全く同一であることはない。任意の構成要素ファイルをただ１回追加、削除、または変更するだけで、残りの画像コンテントは容易にシフトしてしまう場合がある。たとえ他のファイルは変化していないとしても、このシフトによって、それぞれの固定サイズセグメントは、ある近傍からのいくつかのバイトを含み、その他の近傍にいくつかのバイトを渡し、前回のセグメントとは異なってしまうであろう。
【０００７】
一般に、既存のデータ重複排除のシステム及び方法は、計算コストが高く非効率である場合があり、多くの場合、特に上述の状況では冗長なまたは二重のデータの格納につながる場合がある。従来のシステム及び方法の１つ以上の不利な点に対処する必要が生じるのは、この状況においてである。
【発明の概要】
【０００８】
チャンクベースデータ重複排除のシステム及び方法の多様な例示的な実施形態が、本開示に記載されている。
【０００９】
一実施形態では、重複排除方法は、格納のために受け取られる複数の受信データのうちの１つを少なくとも１つの先頭部分及び１つの末尾部分に分割する。先頭部分を一意に識別する先頭フィンガープリントは、やはり受信データチャンクの末尾部分を一意に識別する末尾フィンガープリントとともに生成される。
【００１０】
重複排除方法は、先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブル及び末尾ＳＨＡテーブルを提供することを含む。データチャンクごとに、先頭ＳＨＡテーブルは、先頭フィンガープリントのフルフィンガープリントへのマッピングを含む。末尾ＳＨＡテーブルは、データチャンクごとに末尾フィンガープリントのフルフィンガープリントへのマッピングを含む。重複排除方法は、受信データチャンクの先頭フィンガープリントが先頭ＳＨＡテーブル内にあるかどうか、または受信データチャンクの末尾フィンガープリントが末尾ＳＨＡテーブル内にあるかどうかを判断する。
【００１１】
先頭フィンガープリントが先頭ＳＨＡテーブル内にある、または末尾フィンガープリントが末尾ＳＨＡテーブル内にある場合、重複排除方法は、（受信データチャンクの）先頭フィンガープリントまたは末尾フィンガープリントを使用して、格納されている先行操作（ｐｒｅｄｅｃｅｓｓｏｒ）データチャンクを識別する。ここで、先行操作データチャンク及び受信データチャンクはほぼ同一である。しかしながら、受信データチャンクは、先行操作データチャンク内のデータに加えてデータのバーストを含む。その後、データのバーストは識別され、利用可能なＰＢＡ（物理ブロックアドレス）に書き込まれる。
【００１２】
一態様では、（受信データチャンクの）先頭フィンガープリント及び末尾フィンガープリントが、先頭ＳＨＡテーブルまたは末尾ＳＨＡテーブル内で場所を確認できない場合、次いで受信データチャンクは、先行操作データチャンクを識別し、上記のデータのバーストを利用可能なＰＢＡに書き込む代わりに、利用可能なＰＢＡに格納のために書き込まれる。
【００１３】
別の実施形態では、基準ＬＢＡ（論理ブロックアドレス）テーブルは、論理ブロックアドレスを、先行操作データチャンクのフィンガープリントに、及びデータのバーストを記憶するＰＢＡにマッピングするエントリを有する基準ＬＢＡを提供される。
【００１４】
別の態様では、重複排除方法は、ＬＢＡテーブル内で新規エントリを作成し、新規エントリは論理ブロックアドレスを受信データチャンクのフルフィンガープリントにマッピングする。別の実施形態では、ＳＨＡテーブル内のエントリが作成され、ＳＨＡテーブル内のエントリは、論理ブロックアドレスを受信データチャンクが格納されるＰＢＡにマッピングする。
【００１５】
別の態様では、重複排除方法は、受信データチャンクのフルフィンガープリントを生成する。ここでフルフィンガープリントは、受信データチャンクの全体を一意に識別する。重複排除方法は、フルフィンガープリントをＰＢＡにマッピングするＳＨＡテーブルを調べて、受信データチャンクのフルフィンガープリントが、格納されている先行操作データチャンクと一致するかを判断する。一致する場合、重複排除方法は、ＬＢＡテーブル内で新規エントリを作成し、新規エントリは論理ブロックアドレスを受信データチャンクのフルフィンガープリントにマッピングする。
【００１６】
別の実施形態では、先頭フィンガープリントまたは該末尾フィンガープリントを使用して、格納されているデータチャンクを識別する重複排除方法は、先頭ＳＨＡテーブル内で、先行操作データチャンクの先頭フィンガープリント及び受信データチャンクの先頭フィンガープリントが同じであるかどうかを識別することと、先行操作データチャンクのフルフィンガープリントを、先行操作データチャンクが格納されるＰＢＡにマッピングするエントリを有するＳＨＡテーブルを提供することと、先行操作データチャンクのフルフィンガープリントを使用して、ＰＢＡストレージから先行操作データチャンクを取り出すことによる。さらに別の態様では、該先頭フィンガープリントまたは該末尾フィンガープリントを使用して格納されているデータチャンクを識別する重複排除方法は、末尾ＳＨＡテーブル内で、先行操作データチャンクの末尾フィンガープリントを、末尾フィンガープリントと同じであるとして識別することによる。
【００１７】
別の実施形態では、受信データチャンクの先頭フィンガープリントが先頭ＳＨＡテーブル内になく、受信データチャンクの末尾フィンガープリントが末尾ＳＨＡテーブル内にない場合に限り、データのバーストではなく、受信データチャンクが格納のためにＰＢＡ（物理ブロックアドレス）に書き込まれる。しかしながら、受信データチャンクの先頭フィンガープリントが先頭ＳＨＡテーブル内にある、または受信データチャンクの末尾フィンガープリントが末尾ＳＨＡテーブル内にある場合、先頭フィンガープリントまたは該末尾フィンガープリントは、格納されている先行操作データチャンクの場所を突き止めるために使用される。先行操作データチャンク及び受信データチャンクは、受信データチャンクが先行操作データチャンクに含まれないデータのバーストを含む場合を除き、ほぼ一致する。受信データチャンクをストレージに書き込む代わりに、バーストは、次いでＰＢＡ（物理ブロックアドレス）に格納される。
【００１８】
本明細書での本開示の性質及び優位点のさらなる理解は、明細書の残りの部分及び添付図面を参照することによって理解し得る。本開示のさらなる特徴及び優位点、ならびに本開示の多様な実施形態の構造及び作用は、添付図面に関して以下に詳細に説明される。図面中、同じ参照番号は、同一のまたは機能上類似した要素を示す。
【図面の簡単な説明】
【００１９】
【図１】本開示の例示的な実施形態と使用可能なストレージクラスタシステム例を示す。
【図２】本開示の例示的な実施形態に係るチャンクベースデータ重複排除システムの簡略な概要を示す。
【図３】本開示の例示的な実施形態に係るチャンクベースデータ重複排除方法を示す。
【図４】先行データチャンクに比してデータバーストを有する新規データチャンクを示す。
【図５】本開示の例示的な実施形態に係るチャンクベースデータ重複排除をバースト符号化するためのコンピューティングデバイス例の一般的な構成要素の論理セットの１つの組み合わせを示す。
【図６】本開示の例示的な実施形態に係るチャンクベース重複排除をバースト符号化するための分散システムの１つの組み合わせを示す。
【発明を実施するための形態】
【００２０】
ここで、その例を添付図面に示す本開示の実施形態を詳細に参照する。本開示は、実施形態と併せて説明されるが、それらが本開示をこれらの実施形態に限定することを意図しないことを理解されたい。むしろ、本開示は、添付の特許請求の範囲によって定義される本開示の精神及び範囲に含まれ得る代替物、修正、及び均等物を含めることを意図する。さらに、以下の本開示の詳細な説明では、本開示の完全な理解を提供するために、多数の具体的な詳細が説明される。しかしながら、これらの具体的な詳細がなくても本開示を実施し得ることが当業者に明らかになる。他の例では、本開示の態様を不必要に分かりづらくしないように、周知の方法、手順、構成要素、及び回路は、詳細に説明していない。
【００２１】
図１は、本開示の例示的な実施形態と使用可能なストレージクラスタシステム１００の例を示す。
【００２２】
図１では、ストレージクラスタシステム１００は、複数のスロット１０４を有する筐体１０２を含む。各スロット１０４は、各ストレージノード１０６内に内部不揮発性ソリッドステートメモリ１０８を有するストレージノード１０６を受け入れるサイズに作られている。このストレージの配置は、本開示の実施形態に従って、局所化されたストレージまたはストレージエリアネットワークを提供する可能性がある。
【００２３】
したがって、そのようなストレージエリアネットワークは、特定のシステムのストレージメモリ要件に依存する柔軟な構成を提供するために、複数のストレージノード１０６と、複数のストレージクラスタシステム１００とを含む可能性がある。特定の筐体の中のスロット１０４の数に応じて、適切に通信可能に結合された１つ以上のストレージクラスタシステム１００で十分である可能性がある。一例として、ここには４つのスロット１０４しか示していないが、筐体１０２は、１６のそのようなスロット１０４を含む可能性もある。
【００２４】
当業者は、ストレージメモリ要件を満たすために、１６スロットの２つのクラスタが必要に応じて結合され得ることを理解する。さらに、その数未満のスロット１０４を用いる可能性もある。図１では、４つのスロット１０４が示される。４つのスロットのうちの２つにはストレージノード１０６が存在する。一方、他の２つのスロット１０４Ａ及び１０４Ｂは空である。
【００２５】
図１で、ストレージクラスタシステム１００の筐体１０２は、スイッチファブリックモジュール１１０と、冷却システム１１２とをさらに含む。スイッチファブリックモジュール１１０は、１つ以上のネットワークスイッチを介してストレージノード１０６を相互接続する。複数のノード全体にデータを拡散することによって、より高い総合的なスループットを達成し得る。図示していないが、スイッチファブリックモジュール１１０は、冗長性を提供するための追加のファブリックモジュール、及びネットワーク全体でデータを送るためのルーティングエンジンも含む可能性がある。冷却システム１１２は、単一のファントレイ、または各ファントレイが２つ以上のファンを含み、各ファントレイがファントレイコントローラによって制御される複数のファントレイを含む可能性がある。
【００２６】
当業者は、ストレージノードの配置が順番になっている必要はなく、不連続である場合があることを理解する。ストレージノード１０６はホットプラグできることに留意されたい。したがって、各ストレージノード１０６は、システムの電源を切らずに、またはシステムの動作に対する重大な中断なしにスロット１０４の中に差し込む、またはスロット１０４から取り外すことができる。ストレージノード１０６の差し込みまたは取り外しが検出されると、システムは自動的に再構成される。
【００２７】
図１に示すように、ストレージノード１０６は、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）及びフラッシュメモリ（図示せず）などの比較的に高速の不揮発性ソリッドステートメモリを含む可能性がある内部ソリッドステートメモリ１０８を含む。また、ストレージノード１０６は、プロセッサ１１４と、メモリ１１６とを含む。ここで、プロセッサ１１４による実行のための１行以上のコードを含む場合がある命令は、本開示の例示的な実施形態に従ってメモリ１１６に格納できる。
【００２８】
図１のストレージクラスタシステム１００は、例えば一次ストレージに利用される可能性がある。別の例として、ストレージクラスタシステム１００は、バックアップシステムであってよい。どちらの場合も、ストレージメモリの容量はスケーラブルであり、システム要件に基づいて増加または削減することができる。例えば、ストレージクラスタシステム１００は、１ペタバイト（２５０バイト）のストレージ容量を有するように構成される可能性がある。以下の図に関して説明するように、そのようなシステムは、本開示の実施形態に従って上昇した重複排除率を有する場合がある。
【００２９】
チャンクベース重複排除システム
従来のチャンクベース重複排除システムは、重複排除のためにコンテンツベースのアドレス指定を活用する。そのようなシステムでは、各データファイルは最初に固定長チャンクまたは可変長チャンクのどちらかにセグメント化される。セグメント化されると、チャンクは一意の論理ブロックアドレス（ＬＢＡ）を割り当てられる。暗号論的セキュアハッシュアルゴリズム（ＳＨＡ）は、各データチャンクの一意なフィンガープリントとして使用され得る。ＳＨＡアルゴリズムの例は、ＳＨＡ−１、ＳＨＡ−２などを含む可能性がある。ここで、ｆ（Ｄ）は、データチャンクＤのフィンガープリントを示すために使用される可能性がある。簡潔にするために、ｆ（Ｄ）は単にｆで示される場合がある。
【００３０】
チャンクベース重複排除システムは、２つのマッピングテーブル、ＬＢＡテーブル及びＳＨＡテーブルのマップを維持する可能性がある。ＬＢＡテーブルは（Ｉで示す）ＬＢＡを（ｆで示す）対応するフィンガープリントにマッピングする。この関係は、［Ｉ：ｆ］で表される。ＳＨＡテーブルは、記憶媒体の中に、基準カウントとともにフィンガープリントｆから物理ブロックアドレス（ＰＢＡ）へのマッピングを格納する。この関係は、［ｆ：ｐ，ｃ］で表され、ここではｆはフィンガープリントであり、ｐはＰＢＡであり、ｃは基準カウントである。
【００３１】
重複排除書き込み
入力：［ＬＢＡ：Ｉ、データチャンク：Ｄ］
１．フィンガープリントを計算するｆ＝ｆ（Ｄ）。
２．新規エントリ［Ｉ：ｆ］をＬＢＡテーブルに加える。
３．ｆがＳＨＡテーブルに存在する場合、次いでその基準カウントｃを１、増加させる。
４．それ以外の場合、Ｄを圧縮し、利用可能なＰＢＡｐに書き込み、ＳＨＡテーブル内で新規エントリ［ｆ：ｐ，ｃ＝１］を作成する。
【００３２】
重複排除読み取り
入力：ＬＢＡ：Ｉ
１．ＬＢＡテーブルから［Ｉ：ｆ］を取り出す。
２．ＳＨＡテーブルから［ｆ：．ｐ，ｃ］を取り出す。
３．ＰＢＡｐでデータチャンクＤを読み取る（及び展開する）。Ｄを返す。
【００３３】
重複排除削除
入力：ＬＢＡ：Ｉ
１．ＬＢＡテーブルから［Ｉ：ｆ］を取り出す。
２．ＳＨＡテーブルから［ｆ：ｐ，ｃ］を取り出し、ｃ←ｃ−１を設定する。
３．ｃ＝０の場合、次いで削除のために［ｆ：．ｐ，ｃ］とｐの両方にマークを付ける。
４．削除のために［Ｉ：ｆ］にマークを付ける。
【００３４】
高性能システムストレージでは、用い得る圧縮アルゴリズムは、ＬＺ７７と、ＬＺＯなどのその異形と、任意選択でハフマンコーディングとを含む。ＬＢＡ読み取り問い合わせを受け取ると、オペレーティングシステムは、ＬＢＡテーブルからフィンガープリのｆを取り出し、次いでＳＨＡテーブルからＰＢＡｐを取り出し、媒体ＰＢＡｐで（圧縮された）データチャンクを読み出し、データを元の形式に展開する。
【００３５】
ＬＢＡ削除要求を受け取ると、オペレーティングシステムは、第１にＬＢＡテーブルからフィンガープリントｆを検索し、第２にＳＨＡテーブル上で１、対応する基準カウントｃを削減し、最後にＬＢＡテーブル内の対応するエントリを削除する。使われなくなったデータチャンクを除去するために、ガベージコレクションが周期的に実施される。特に、基準カウントｃがゼロであるとき、対応するデータチャンクは媒体から消去され、そのＳＨＡエントリは削除される。
【００３６】
以下は、各パラメータのバイト長を示すための固定長４Ｋの重複排除例である。平均重複排除率が３であり、平均圧縮率が２である、容量が１ペタバイト（２５０バイト）のストレージシステムを考える。一般に、システムは２５０／（４０９６／２）＝２３９ブロックの一意の４Ｋバイトデータ、及び３ｘ２３９ブロックの未処理の４Ｋバイトデータを格納できる。その結果、ＬＢＡは６バイトで表され、一方ＰＢＡは５バイトで十分である。ＳＨＡ−１フィンガープリントは、２０バイトをとる。基準カウントｃは（人気のあるブロックが２５５回を超えて参照され、第２の同一のＳＨＡエントリが１にカウンタがリセットされて作成される、カウンタオーバフローのまれな可能性を回避するために）１バイトをとる。
【００３７】
図２の例では、重複排除システム２００は、重複排除２０８のために、ファイルシステム２０４に（新規データチャンク２０３として表される）１つ以上のファイルを作成するように命令するアプリケーション２０２を含む可能性がある。本開示の実施形態に従って、重複排除２０８は、冗長なまたは二重のデータを削減または排除し、データ作成及び格納の間にまたはストレージクラスタシステム１００（図１）によるデータバックアップの間にインラインで冗長なまたは二重のデータを削減または排除し得る。
【００３８】
一例では、重複排除２０８は、データチャンクがストレージクラスタシステム１００での格納のために作成または送信されるとき、インラインで起こる場合がある。また、重複排除２０８は、データ場格納またはバックアップされた後に後処理で起こる場合もある。冗長データの排除能力を制限してきた従来の重複排除システムとは異なり、特に受信データチャンク及び先行データチャンクがただ１回のバーストで変わるときに、格納のための冗長なまたは二重のデータの量を認識し、制限することによって、本開示はデータへの迅速なアクセスを容易にし、コンピュータ技術が改善されるようにストレージメモリ能力を高める。
【００３９】
ここで、新規データチャンクＤが作成された後、データチャンクＤは分割のために分割モジュール２０６に送信される。ここで使用するように、新規データチャンクＤは、先行データチャンクＤＰ及びバーストＢから成り立ち、つまりＤ＝ＤＰ＋Ｂであることに留意されたい。具体的には、新規データチャンクＤは、先行データチャンクＤＰから、単一のデータのバーストＢ分、変わる場合がある。これは、データの作成が意図的であるため、ファイルの修正を、ランダムなバイトよりむしろ複数のバーストとして特徴付けることができるためである。さらに、ファイルは通常、４〜８Ｋバイトの平均長の小さいチャンクにセグメント化される。したがって、チャンク単位の修正は、単一バーストであると仮定される場合がある。特に、バーストＢは４つの要素によって定義され、
Ｂ＝｛開始位置、終了位置、バースト長、バーストデータ｝
ここで、終了位置データバイトはカウントされない。上記の定義を明確にするために、ここでいくつかの例が提供される。Ｂ＝｛８、１０、０、φ｝は、受信チャンクが基準チャンク場所８及び９から２つのバイトを削除することを示し、Ｂ＝｛８、８、１、ａ｝は、受信チャンクが、基準チャンク場所８で1つのバイトを挿入することを示し、Ｂ＝｛８、１０、３、ａｂｃ｝は、位置８及び９の２つのバイトを（基準チャンク場所８の）３つのバイトａｂｃに置換することを示す。このバースト符号化のシステム及び方法の優位点は、それが、２つの類似するチャンクが等しい長さであることを要求しない点である。当業者は、類似度が変わる可能性があることを理解する。
【００４０】
図２の例では、分割モジュール２０６は新規データチャンクＤ２０３を受け取り、それを少なくとも１つの先頭部分及び１つの末尾部分に分割する。図示しないが、複数のデータチャンクが分割モジュール２０６によって受け取られる場合がある。受け取られると、各データチャンクは、少なくとも１つの先頭部分及び１つの末尾部分に同様に分割される。以下に説明するように、先頭部分はデータチャンクの最も左側の部分を表す。一方、末尾部分はデータチャンクの最も右側の部分を表す。例えば、新規データチャンクＤ２０３が１１０１１１００である場合、先頭部分は１１０である場合があり、一方末尾部分は１００である可能性がある。
【００４１】
新規データチャンク２０３が分割された後、重複排除２０８はハッシュ関数２１０を使用して、先頭部分のフィンガープリントを生成する。この先頭部分のフィンガープリントは、受信データチャンクの先頭部分を一意に識別する。また、先頭部分と同様に、重複排除２０８はハッシュ関数２１０を使用して、末尾部分のフィンガープリントが新規データチャンクＤ２０３を一意に識別するように末尾部分のフィンガープリントを生成する。さらに、新規データチャンク２０３の全体のフルフィンガープリントも生成される。
【００４２】
末尾部分の及び先頭部分のフィンガープリントが生成された後、重複排除２０８は、先頭ＳＨＡ（セキュアハッシュアルゴリズム）テーブル２１４及び末尾ＳＨＡ（セキュアハッシュアルゴリズム）テーブル２１６を使用して、新規データチャンクＤ２０３の先頭フィンガープリントが先頭ＳＨＡテーブル２１４内にあるかどうか、または新規データチャンクＤ２０３の末尾フィンガープリントが末尾ＳＨＡテーブル２１６内にあるかどうかを判断する。先頭ＳＨＡテーブル２１４は、データチャンクの先頭部分のフィンガープリントの同じデータチャンクのフルフィンガープリントへのマッピングを含む。例えば、ストレージクラスタシステム１００に以前に格納された先行データチャンクＤＰの場合、先頭ＳＨＡテーブル２１４は、フルフィンガープリントがデータチャンクＤＰの全体のフィンガープリントであるフルフィンガープリントＤＰにマッピングされたデータチャンクＤＰの先頭部分のフィンガープリントを含むであろう。
【００４３】
ここで、末尾ＳＨＡテーブル２１６は、データチャンクの末尾部分のフィンガープリントを、同じデータチャンクのフルフィンガープリントにマッピングすることを含む。例えば、ストレージクラスタシステム１００に以前に格納された先行データチャンクＤＰの場合、末尾ＳＨＡテーブル２１６は、フルフィンガープリントＤＰにマッピングされたデータチャンクＤＰの末尾部分のフィンガープリントを含むであろう。
【００４４】
対応するｈＳＨＡテーブル２１４またはｔＳＨＡテーブル２１６の先頭フィンガープリントまたは末尾フィンガープリントの場合、重複排除２０８は先頭フィンガープリントまたは末尾フィンガープリントを利用して、格納されている先行データチャンクＤＰを識別する。上述のように、新規データチャンク２０３は、先行データチャンクＤＰ内のデータについてデータバーストＢを含む。それ以外の場合、新規データチャンク２０３及び先行データチャンクＤＰは同じである。重複排除２０８は、次いでこのバーストＢがなんであるのかを判断し、ＰＢＡ（物理ブロックアドレス）に書き込む（または読み取るまたは削除する）。この時点で、重複排除２０８は次いで基準ＬＢＡ（ｒＬＢＡ）２１８を用いて、論理アドレスを先行データチャンクＤＰのフィンガープリント、及びバーストデータＢが格納される物理ブロックアドレスにマッピングする。
【００４５】
新規データチャンクＤ２０３が以前に格納されたデータチャンクＤＰに類似しているかどうかを判断する従来の及びきわめて実行が困難な方法は、すべての既存のデータチャンクを用いた徹底的な比較による。新規データチャンクは格納されている先行データチャンクのすべてに比較されなければならないので、そのようなシステムは多大な時間を要する。データチャンクに単一のフィンガープリントを作成する従来のシステムとは異なり、本実施形態は、書き込まれるデータチャンクごとに先頭フィンガープリント及び末尾フィンガープリントを作成する。
【００４６】
新規（データバーストによってわずかに修正された）データチャンクが到着すると、わずかに修正された新規データチャンクの先頭フィンガープリントまたは末尾フィンガープリントのどちらかが、先行操作チャンクの先頭フィンガープリントまたは末尾フィンガープリントと照合される。このようにして、先行操作チャンクは識別され、新規データチャンクの全体を格納するよりむしろ、先行操作のチャンク及び新規データチャンクと先行操作との違い（つまり、データバースト）が格納される。これは、２つのデータチャンクがほぼ同一であるのか、それともその一方が他方のわずかに修正されたバージョンであるのかを判断することができず、したがって別のほぼ同一のデータチャンクの格納を生じさせる従来の重複排除システムと異なる。
【００４７】
この種の可変長セグメント化手法に対する１つの従来の手法は、データバイトのスライディングウィンドウごとにラビンフィンガープリントを計算し、関連するラビンフィンガープリントが、例えばいくつかの最下位ビットがすべてゼロであるなどの特定の基準を満たすとチャンク境界を設定することによる。しかしながら、計算されるフィンガープリントの数がデータ長と同程度に大きいため、ラビンフィンガープリントセグメント化は計算コストが高い。実際には、すべての既存可変長セグメント化方法は、各バイトと関連する連続する数のバイトについて特定の指標を計算する。
【００４８】
バースト符号化された重複排除書き込み
図３は、本開示の例示的な実施形態に係るチャンクベースデータ重複排除方法３００を示す。
【００４９】
図３では、ブロック３０１で、重複排除方法３００は、格納のために複数のデータチャンクを受け取ることによって開始する。データチャンクは、受信データセット、またはバックアップ環境におけるバックアップファイルなどの入力データストリームからである場合がある。
【００５０】
ブロック３０２で、受信データチャンクは、１つ以上の実施態様に従って分割モジュール２０６（図２）によって分割される。１つのそのような実施態様では、第１のステップとして、長さＩの新規データチャンクＤが、分割モジュール２０６によって受け取られる。第２のステップで、新規データチャンクＤは少なくとも３つの部分［Ｄ０、Ｄ１、Ｄ２］に分割される。Ｄ０は、データチャンクＤの先頭、つまり最も左側の部分を表す。Ｄ１は中央の部分を表し、Ｄ２は、データチャンクＤの末尾、つまり最も右側の部分を表す。この特定の実施態様では、Ｄ０及びＤ２の長さが等しくＩｍｉｎ／２となるように分割され、ここでＩｍｉｎは、事前に定義された最小チャンク長を示す。
【００５１】
ブロック３０４で、フィンガープリント２１２（図２）は、ハッシュ関数２１０（図２）と協調して、新規データチャンクのフィンガープリントを生成し、末尾部分Ｄ０及び先頭部分Ｄ２が計算される。つまり、フィンガープリントｆ＝ｆ（Ｄ）、ｆ０＝ｆ（Ｄ０）、及びｆ２＝ｆ（Ｄ２）が決定される。
【００５２】
決定ブロック３０６で、方法３００は、データチャンクのフィンガープリントｆがＳＨＡテーブルに存在するかどうかを判断する。
【００５３】
ブロック３０８で、ｆがＳＨＡテーブルに存在する場合、次いでそのカウンタは１、増加する。結果として、ブロック３１０で、新規エントリ［Ｉ：ｆ］がＬＢＡテーブル内で作成され、プロセスは終了ブロック３１２で終了する。
【００５４】
決定ブロック３０６を参照し直すと、ｆがＳＨＡテーブル内にない場合、チャンクベースデータ重複排除方法３００は決定ブロック３１４に進む。この決定ブロック３１４で、先頭フィンガープリントｆ０がヘッドＳＨＡテーブル２１４内にあり、その対応するカウンタがｃ０＝０であるかどうかが判断される。ここで、２つのテーブルしか用いない従来のシステムとは異なり、本開示の一実施形態は、３つの追加のテーブル、先頭ＳＨＡ（ｈＳＨＡ）テーブル２１４、末尾ＳＨＡ（ｔＳＨＡ）、及び基準ＬＢＡ（ｒＬＢＡ）テーブル２１８（図２）を用いる。当業者は、２つのテーブル（ＳＨＡ及びＬＢＡ）は、格納されているデータチャンクのフルフィンガープリントにしか関連しないため、レガシーシステムはデータ重複排除を厳しく制限する場合があることを認識する。受信データチャンクをほぼ二重のデータチャンクとして認識できない場合、受信データチャンクの全体が格納されることになる。図４にこの状態を示す。
【００５５】
図４では、以前に格納された先行データチャンク４０２を示す。また、先行データチャンク４０２のフィンガープリント４０４も示す。４０６に示すように、単一データバーストＢが先行データチャンク４０２に加えられると、先行データチャンク４０２の全体的なフィンガープリントが変更され、それから新規データチャンクフィンガープリント４０８になる。したがって、新規データチャンクフィンガープリント４０８を使用する検索は先行データチャンク４０２を明らかにせず、新規データチャンク４０６と先行データチャンク４０２の両方が、たとえ単一バーストＢ分しか変化しないとしても、新規データチャンク４０６全体を格納させる。
【００５６】
レガシーシステムとは異なり、本開示の実施形態は、先行データチャンク４０２及び新規データチャンク４０６がほぼ同一であり、単に単一のバーストＢ分異なるにすぎないことを認識する。次いで、新規データチャンクの全体を格納するのではなく、その単一のバーストが格納される。また、当業者は、３つの追加のテーブル、基準ＬＢＡ（ｒＬＢＡ）テーブル、先頭ＳＨＡ（ｈＳＨＡ）テーブル、及び末尾ＳＨＡ（ｔＳＨＡ）テーブルを使用することによって、レガシーシステムの上述の不利な点が克服されることも認識する。
【００５７】
ここで、基準ＬＢＡ（ｒＬＢＡ）テーブルは、［Ｉ：ｆ’，ｐ~］の形を取り、ここではＰＢＡｐ~は、フィンガープリントｆ’を有する基準データＤ’についてＬＢＡデータＤの差を反映するバーストデータＢを含む。先頭ＳＨＡ（ｈＳＨＡ）テーブルは形［ｆ０：ｆ，ｃ０］をとり、ここではｆ０＝ｆ（Ｄ０）、ｆ＝ｆ（Ｄ）、であり、ｃ０はその基準カウントを示す。末尾ＳＨＡ（ｔＳＨＡ）テーブルは［ｆ２：ｆ，ｃ２］の形をとり、ここではｆ２＝ｆ（Ｄ２）、ｆ＝ｆ（Ｄ）であり、ｃ２はその基準カウントを示す。
【００５８】
図３で、決定ブロック３１４を参照し直すと、ｆ０が先頭ＳＨＡテーブル内にある場合、次いで方法３００はブロック３１６に進む。
【００５９】
ブロック３１６で、方法３００は、ｈＳＨＡテーブルから先頭フィンガープリント／先行データチャンクのフィンガープリントエントリ［ｆ０：ｆ‘、ｃ０］を取り出し、ブロック３１８で、カウンタｃ０＝１を設定し、その後方法３００は決定ブロック３２０に進む。
【００６０】
決定ブロック３１４を参照し直すと、先頭フィンガープリントｆ０がｈＳＨＡテーブル内にない場合、方法３００は、末尾フィンガープリントｆ２が末尾ＳＨＡテーブル内にあるかどうかが判断される決定ブロック３２２に進む。末尾ＳＨＡテーブル内にある場合、方法３００はブロック３２４に進む。
【００６１】
ブロック３２４で、方法３００は、ｔＳＨＡテーブルから末尾フィンガープリント／先行データチャンクのフィンガープリントエントリ［ｆ２：ｆ‘，ｃ０］を取り出し、ブロック３２６で、カウンタｃ２＝１を設定し、その後方法３００は決定ブロック３２０に戻る。
【００６２】
決定ブロック３２０で、ｆ’がＳＨＡテーブル内にある場合、次いでブロック３３０で、先行データチャンクのフィンガープリント／物理ブロックアドレスエントリ［ｆ’：ｐ’，ｃ’］がＳＨＡテーブルから取り出され、ブロック３２２でｃ’←ｃ’＋１を設定する。
【００６３】
ブロック３３４で、方法３００はＰＢＡ（物理ブロックアドレス）ｐ’から先行データチャンクＤ’を読み取る（及び展開する）。
【００６４】
ブロック３３６で、方法３００は、新規データチャンクＤ２０３（図２）と先行データチャンクＤ’との間のバーストＢを決定し、そのバーストＢを次に利用可能なＰＢＡｐ〜に書き込む。
【００６５】
ブロック３３８で、方法３００は、ｒＬＢＡテーブル内で新しい論理ブロックアドレス／以前のデータフィンガープリント／バースト物理ブロックアドレスエントリ［Ｉ：ｆ‘，ｐ〜］を作成する。
【００６６】
決定ブロック３２０を参照し直すと、先行データチャンクのフィンガープリントｆ’がＳＨＡテーブル内にない場合、処理はブロック３２８に進む。同様に、決定ブロック３２２で、末尾フィンガープリントｆ２が末尾ＳＨＡテーブル内にない場合、処理はブロック３２８にも進む。
【００６７】
ブロック３２８で、方法３００は、先頭フィンガープリント／新規データチャンクのフルフィンガープリントｈＳＨＡエントリ［ｆ０：ｆ，ｃ０＝０］、及び末尾フィンガープリント／新規データチャンクのフルフィンガープリントｔＳＨＡエントリ［ｆ２：ｆ，ｃ２＝０］を作成する。
【００６８】
ブロック３４０で、方法３００は、新規データチャンクＤ２０３（図２）の論理ブロックアドレス／フルフィンガープリントＬＢＡエントリ［Ｉ：ｆ］を作成する。
【００６９】
ブロック３４２で、方法３００は新規データチャンクＤを圧縮し、利用可能なＰＢＡｐに書き込み、ブロック３４４で、新規データチャンクＤの新規ＳＨＡエントリ［Ｉ：ｐ，ｃ＝１］を作成する。
【００７０】
ブロック３１６及び３２４、ならびに関連ブロックで、ｆ−がｃＳＨＡテーブル内にあり、対応するｃ−＝１であるとき、新規の受信データチャンクＤ及び既存のチャンクＤ＊はともに以前のチャンクＤ’を参照している。Ｄ＝Ｄ＊であり、Ｄのより多くの複製がまもなく到着する可能性が高い。この目的を達成するために、Ｄの将来の複製が従来のＬＢＡテーブル及びＳＨＡテーブルを通して直接的に重複排除できるように、Ｄの新規フィンガープリントを作成する方がより効率的である。
【００７１】
また、ＬＢＡは２つのテーブル、つまりＬＢＡテーブル及びｒＬＢＡテーブルに分割されることにも留意されたい。決定ブロック３２０で［ｆ‘：ｐ’，ｃ’］が存在しない可能性ｂは、非同期削除プロセスに起因する。対照される読み取り動作及び削除動作は、以下で一目瞭然である。バースト符号化重複排除書き込みアルゴリズムを説明してきたが、他の適切なバースト符号化重複排除書き込みアルゴリズムも利用し得る。
【００７２】
バースト符号化重複排除読み取り
バースト符号化重複排除読み取りの１つの例示的な実施形態及びアルゴリズムは以下のとおりである。入力：ＬＢＡ：Ｉ
１．ＩがＬＢＡテーブル内にある場合、次いで
（ａ）ＬＢＡテーブルから［Ｉ：ｆ］を取り出す。
（ｂ）ＳＨＡテーブルから［ｆ：ｐ，ｃ］を取り出す。
（ｃ）ＰＢＡｐでデータチャンクＤを読み取る（及び展開する）。Ｄを返す。
２．さもなければ、
（ａ）ｒＬＢＡテーブルから［Ｉ：ｆ’、ｐ〜］を取り出す。
（ｂ）ＰＢＡｐ〜からＢを読み取る。
（ｃ）ＳＨＡテーブルから［ｆ‘：ｐ’，ｃ’］を取り出す。
（ｄ）ＰＢＡｐ’で基準データチャンクＤ’を読み取る（及び展開する）。
（ｅ）Ｄ’についてのバーストＢを適用し、Ｄを生じさせる。Ｄを返す。
【００７３】
バースト符号化重複排除削除
バースト符号化重複排除削除の１つの例示的な実施形態及びアルゴリズムは以下のとおりである入力：ＬＢＡ：Ｉ
１．ＩがＬＢＡテーブル内にある場合、次いで
（ａ）ＬＢＡテーブルから［Ｉ：ｆ］を取り出す。
（ｂ）ＳＨＡテーブルから［ｆ：ｐ，ｃ］を取り出し、ｃ←ｃ−１を設定する。
（ｃ）ｃ＝０の場合、次いで削除のために［ｆ：ｐ，ｃ］とｐの両方にマークを付ける。
（ｄ）削除のために［Ｉ：ｆ］にマークを付ける。
２．さもなければ、
（ａ）ｒＬＢＡテーブルから［Ｉ：ｆ，ｐ〜］を取り出す。
（ｂ）ＳＨＡテーブルから［ｆ：ｐ，ｃ］を取り出し、ｃ←ｃ−１を設定する。
（ｃ）削除のためにｐ〜にマークを付ける。
（ｄ）削除のために［Ｉ：ｆ’、ｐ〜］にマークを付ける。
【００７４】
バースト符号化重複排除書き込み、読み取り、及び削除のアルゴリズムを説明してきたが、他の適切なバースト符号化重複排除書き込み、削除、及び読み取りのアルゴリズムを用い得る。上記に開示した実施形態では、上記の削除プロセスは使われなくなったｈＳＨＡエントリまたはｔＳＨＡエントリの削除を説明していないことに留意されたい。代わりに、ｈＳＨＡテーブル及びｔＳＨＡテーブルは、ｆがＳＨＡテーブル内で存在しなくなるようにエントリ［ｆｉ：ｆ，ｃｉ］（ｉ＝０，２）を削除するために、周期的に走査される場合がある。
【００７５】
この理由から、ｈＳＨＡエントリ［ｆ０：ｆ，ｃ０］及びｔＳＨＡエントリ［ｆ２：ｆ，ｃ２］エントリからＳＨＡエントリ［ｆ，ｐ，ｃ］の削除動作に対する非同期更新のため、ステップ３．ｂは書き込みプロセス中に失敗する場合がある。そのような場合、基準書き込みは無効と見なされ、新規書き込みがその後実行される。本開示の別の優位点は、本開示のバースト符号化重複排除方式がレガシー重複排除方式と両立し得る点である。つまり、レガシー方式の任意の重複排除チャンクは、新しい方式でも重複排除される。
【００７６】
図５は、本開示の例示的な実施形態に従ってバースト符号化チャンクベースデータ重複排除を実装するために利用し得る例のコンピューティングデバイス５００の一般的な構成要素の論理セットの１つの組み合わせを示す。この例示的な実施形態では、デバイスは、メモリデバイス５０４に格納できる命令を実行するためのプロセッサ５０２を含む。デバイスは、プロセッサ１０２による実行のためのプログラム命令用の第１のデータストレージ、画像またはデータ用の別個のストレージ、他の構成要素と情報を共用するための着脱式メモリなど、多様なメモリタイプ、データストレージ、または非一過性のコンピュータ可読記憶媒体を含む可能性がある。ポータブルメディアプレーヤなどのデバイスは、音声スピーカを通してなどの他の手段を介して情報を伝達する可能性はあるが、デバイスは、例えばＬＣＤ（液晶ディスプレイ）またはタッチスクリーンなど、ディスプレイ要素（５０６）を含む場合もある。
【００７７】
多くの実施形態のデバイスは、ユーザーから入力信号を受信する少なくとも１つの入力装置５１２を含む可能性がある。この入力要素は、プッシュボタン、タッチパッド、タッチスクリーン、ホイール、ジョイスティック、キーボード、マウス、キーパッド、またはユーザーがそれを通して対話するまたはデバイスにコマンドを発行することができる任意の他のそのようなデバイスまたは要素である可能性がある。いくつかの態様では、デバイスはボタンを除外する可能性があり、視覚コマンド及び音声コマンドを通してだけ制御される可能性があり、その結果ユーザーは入力装置と接触することなくデバイスを制御できる。他の実施形態では、コンピューティングデバイスは、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ、ＲＦ、有線または無線通信システムを含む多様なネットワークを介して通信するための１つ以上のネットワークインタフェース要素５０８を含む場合がある。多くの実施形態でのデバイスは、インターネットなどのネットワークと通信することができ、他のそのようなデバイスと通信できる場合がある。例のデバイスは、音声出力を生成するための１つ以上のスピーカ、及び／またはユーザーからの音声コマンドなど、音声入力を受け取るための１つ以上のマイクを含む場合もあるなど、１つ以上の音声要素５１０を含む場合がある。
【００７８】
図６は、多様な実施形態を実装できる環境６００の例を示す。多様な実施形態に従って態様を実装するための本明細書に説明する例の環境は、おもにウェブサービス及びクラウドコンピューティングに関するウェブベースであるが、ウェブベースの環境は説明のために使用されているが、多様な実施形態を実装するためには異なる環境も必要に応じて使用し得ることを理解されたい。多様な実施形態とともに用いるクライアントデバイス６０２は、少なくとも１つの適切なネットワーク６０４を介して要求、メッセージ、または情報を送信及び受信し、デバイスのユーザーに情報を伝え直すよう作動する任意の適切なデバイスを含む場合がある。
【００７９】
そのようなクライアントデバイスの例は、パーソナルコンピュータ、スマートフォン、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子ブックリーダー等を含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワーク、またはその組み合わせを含む任意の適切なネットワークを含む場合がある。そのようなシステムに使用する構成要素は、少なくとも部分的に選択されたネットワーク及び／または環境のタイプに依存する場合がある。ネットワークを介した通信は、有線接続または無線接続、及びその組み合わせによって有効にできる。少なくともいくつかの実施形態では、クライアントデバイスからの要求は、要求の宛先アドレスに関連するインタフェース層６０６で受け取ることができ、インタフェース層は、ルータ、負荷分散装置、アプリケーションプログラミングインタフェースなどの構成要素を含む場合がある。インタフェース層は、要求を受け取り、要求のための直接的情報を、１つ以上のウェブサーバ６０８及び／または１つ以上のアプリケーションサーバ６１０などの１つ以上のコンピューティングリソースに向けることができ、コンピューティングリソースは、少なくともいくつかの実施形態で１つ以上のデータストアまたはデータベース６１２のデータを使用し、要求を処理できる。つなぐまたはそれ以外の場合構成し得、本明細書に説明し、示唆するようなタスクを実行するために対話できる、いくつかのアプリケーションサーバ、層、または他の要素、プロセス、もしくは構成要素がある場合があることを理解されたい。
【００８０】
本明細書で使用するように、データストアは、任意の標準的な分散環境またはクラスタ環境における任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス、及びデータ記憶媒体を含む場合がある、データを格納する、データにアクセスする、及びデータを取り出すことができる任意のデバイスまたはデバイスの組み合わせを指す。データストアは、本開示の実施態様を実装し、したがってそのような実装を非ジェネリックにするように特にプログラムされ得る。サーバは、クライアントデバイスのために１つ以上のアプリケーションの態様を実行し、アプリケーションのためにデータアクセス及びビジネスロジックの大半を処理するために必要に応じてデータストアと統合するための任意の適切なハードウェア及びソフトウェアを含む場合がある。アプリケーションサーバは、データストアと協力してアクセス制御サービスを提供し、例ではＨＴＭＬ、ＤＨＴＭＬ、ＸＭＬ、または別の適切な構造化言語の形でウェブサーバによってユーザーに提供され得る、ユーザーに転送されるテキスト、グラフィック、音声、及び／またはビデオなどのコンテンツを生成できる。すべての要求及び応答の処理、ならびにクライアントデバイスとリソースとの間でのコンテンツの配信は、ウェブサーバによって処理できる。本明細書に説明する構造化コードは、本明細書の他の箇所に説明するように、任意の適切なデバイスまたはホストマシンで実行できるので、ウェブサーバ及びアプリケーションサーバは必須ではなく、例の構成要素にすぎないことを理解されたい。各サーバは、通常、そのサーバの一般的な管理及び動作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、サーバのプロセッサによる実行時に、サーバがその意図した機能を実行することを可能にする命令を格納する非一過性のコンピュータ可読媒体を含む。
【００８１】
本開示の実施形態は、それらを非ジェネリックにするように特にプログラム及び実装し得る。実施形態は、ＡＳＩＣ（特定用途向け集積回路）を使用し得る、及び／または複合プログラマブルロジックデバイス（ＣＰＬＤ）及びフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含むプログラマブルロジックデバイス（ＰＬＤ）を使用し、特別にプログラムされ得る。一実施形態では、環境は、１つ以上のコンピュータネットワークまたは直接接続を使用し、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を使用する分散コンピューティング環境である。したがって、本明細書の多様なシステム及びサービスの表現は、限定的ではなく、例示的と解釈されるべきである。
【００８２】
上記は、本開示の例示的な具体的な実施形態の完全な説明であるが、追加の実施形態も考え得る。したがって、上記説明は、添付の特許請求の範囲及び均等物のその完全な範囲によって定義される、本開示の範囲を限定すると解釈されるべきではない。
【図１】
2021527291.tif 000003
【図２】
2021527291.tif 000004
【図３】
2021527291.tif 000005
【図４】
2021527291.tif 000006
【図５】
2021527291.tif 000007
【図６】
2021527291.tif 000008
【国際調査報告】
2021527291.tif 000009