(57)【要約】  重複排除ストレージ内の画像を修復するための本開示のコンピュータ実装方法は、（１）重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、（２）バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、（３）破損データセグメントを置換するのではなく、バックアップされている画像からのデータセグメントを、破損データセグメントをすでに含有するコンテナに追加することと、を含み得る。様々な別の方法、システム、及びコンピュータ可読媒体もまた開示される。
2019530085.tif 000002
【特許請求の範囲】
【請求項１】
重複排除ストレージ内の画像を修復するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法が、
重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、前記データセグメント上でアルゴリズムを実行して、前記データセグメント用の数値識別子を生成し、前記数値識別子が前記データセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、
バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、
前記バックアップされている画像の前記データセグメントの前記デジタル指紋が前記破損データセグメントの前記デジタル指紋と一致するという判定に応じて、前記破損データセグメントを置換するのではなく、前記バックアップされている画像からの前記データセグメントを、前記コンテナ内の前記追加データセグメントのオフセットが前記同一コンテナ内の前記破損データセグメントのオフセットよりも大きくなるように、前記破損データセグメントをすでに含有するコンテナに追加することと、を含む、方法。
【請求項２】
前記アルゴリズムが、
チェックサムアルゴリズムと、
ハッシュアルゴリズムと、
デジタル指紋アルゴリズムと、のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記バックアップされている画像からの前記データセグメントを前記コンテナに追加することが、前記破損データセグメントを参照する少なくとも１つの画像を効果的に修復する、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記破損データセグメントを参照する画像を復元するための復元動作中、前記より大きなオフセットを有する前記追加データセグメントに基づいて、前記破損データセグメントではなく前記追加データセグメントを提供することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記破損データセグメントではなく前記追加データセグメントを提供することが、同一のデジタル指紋を有する複数のデータセグメント間で、前記コンテナ内の最大のオフセットを有する前記データセグメントを選択するように構成された読み取り動作に従って実施される、請求項４に記載のコンピュータ実装方法。
【請求項６】
重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、前記データセグメントの前記デジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記データセグメントの前記デジタル指紋と共に、前記コンテナの識別子を前記指紋破損リストに追加することを更に含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記データセグメントが、前記指紋破損リスト内の前記破損データセグメントのための前記コンテナの前記識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、前記破損データセグメントをすでに含有する前記コンテナに追加される、請求項７に記載のコンピュータ実装方法。
【請求項９】
前記バックアップ動作中、前記指紋破損リストをチェックして、前記バックアップされている画像の前記データセグメントの前記デジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントの前記デジタル指紋と一致することを判定することを更に含む、請求項６に記載のコンピュータ実装方法。
【請求項１０】
前記重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有する前記データセグメントをマーキングすることを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項１１】
重複排除ストレージ内の画像を修復するためのシステムであって、
メモリ内に記憶された検出モジュールであって、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、前記データセグメント上でアルゴリズムを実行して前記データセグメント用の数値識別子を生成し、前記数値識別子が前記データセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出する、検出モジュールと、
メモリ内に記憶されたチェックモジュールであって、バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントのデジタル指紋と一致するかどうかをチェックする、チェックモジュールと、
メモリ内に記憶された追加モジュールであって、前記バックアップされている画像の前記データセグメントの前記デジタル指紋が前記破損データセグメントの前記デジタル指紋と一致するという判定に応じて、前記破損データセグメントを置換するのではなく、前記バックアップされている画像からの前記データセグメントを、前記コンテナ内の前記追加データセグメントのオフセットが前記同一コンテナ内の前記破損データセグメントのオフセットよりも大きくなるように、前記破損データセグメントをすでに含有するコンテナに追加する、追加モジュールと、
前記検出モジュール、前記チェックモジュール、及び前記追加モジュールを実行するように構成された少なくとも１つの物理的プロセッサと、を備える、システム。
【請求項１２】
前記アルゴリズムが、
チェックサムアルゴリズムと、
ハッシュアルゴリズムと、
デジタル指紋アルゴリズムと、のうちの少なくとも１つを含む、請求項１１に記載のシステム。
【請求項１３】
前記追加モジュールが、前記破損データセグメントを参照する少なくとも１つの画像を効果的に修復する様式において、前記バックアップされている画像からの前記データセグメントを前記コンテナに追加する、請求項１１に記載のシステム。
【請求項１４】
前記破損データセグメントを参照する画像を復元するための復元動作中、前記より大きなオフセットを有する前記追加データセグメントに基づいて、前記破損データセグメントではなく前記追加データセグメントを提供する、メモリ内に記憶された提供モジュールを更に備える、請求項１１に記載のシステム。
【請求項１５】
前記提供モジュールが、同一のデジタル指紋を有する複数のデータセグメント間で、前記コンテナ内の最大のオフセットを有する前記データセグメントを選択するように構成された読み取り動作に従って、前記破損データセグメントではなく前記追加データセグメントを提供する、請求項１４に記載のシステム。
【請求項１６】
前記検出モジュールが、重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、前記データセグメントの前記デジタル指紋を、破損データセグメントを識別する指紋破損リストに追加する、請求項１１に記載のシステム。
【請求項１７】
前記検出モジュールが、前記データセグメントの前記デジタル指紋と共に、前記コンテナの識別子を前記指紋破損リストに追加する、請求項１６に記載のシステム。
【請求項１８】
前記追加モジュールが、前記指紋破損リスト内の前記破損データセグメントのための前記コンテナの前記識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、前記破損データセグメントをすでに含有する前記コンテナに前記データセグメントを追加する、請求項１７に記載のシステム。
【請求項１９】
前記検出モジュールが、前記バックアップ動作中、前記指紋破損リストを更にチェックして、前記バックアップされている画像の前記データセグメントの前記デジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントの前記デジタル指紋と一致することを判定する、請求項１６に記載のシステム。
【請求項２０】
１つ以上のコンピュータ可読命令を含む非一過性コンピュータ可読媒体であって、前記命令が、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、前記データセグメント上でアルゴリズムを実行して前記データセグメント用の数値識別子を生成し、前記数値識別子が前記データセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、
バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、
前記バックアップされている画像の前記データセグメントの前記デジタル指紋が前記破損データセグメントの前記デジタル指紋と一致するという判定に応じて、前記破損データセグメントを置換するのではなく、前記バックアップされている画像からの前記データセグメントを、前記コンテナ内の前記追加データセグメントのオフセットが前記同一コンテナ内の前記破損データセグメントのオフセットよりも大きくなるように、前記破損データセグメントをすでに含有するコンテナに追加することと、をさせる、非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
個人及び組織は、大量のデータを記憶するためにシステムの定期的な改善を求める。例えば、企業組織は、データを圧縮するか、又は別様にデータストレージの効率を最適化するための改善されたシステム及び技術を求める場合がある。一具体例において、企業組織は、それらのデータを重複排除システム内で体系化してもよい。一般に、重複排除は、データセグメント又は部分がより大きなデータ集合内に複数回含まれるとき、同一データセグメント又は部分の冗長インスタンスを除去するプロセスを表す。重複排除プロセスは、データセグメントの単一のインスタンスを参照して、同一データセグメント又は部分の冗長インスタンスを置換し得る。それによって、重複排除は、データを記憶するために使用するストレージ空間の量を低減し得、また他の効率を得てもよい。
【０００２】
もちろん、従来の重複排除システムは、基礎となる物理的、仮想的、及び／又はソフトウェアベースのストレージソリューションに依存して、独自のデータセグメントの単一インスタンスを最終的に記憶する。これらの基礎となるストレージソリューションが不完全なため、重複排除システムは、時に機能せず、対応するデータセグメントが破損し得る。その上、複数のディスク画像が同一の独自のデータセグメントを参照し得るので、単一のデータセグメント破損が、広範囲の顧客及び／又はディスク画像に影響を与え、又は傷つけ得る。したがって、本開示は、重複排除ストレージ内の画像を修復するためのシステム及び方法に対する必要性を識別し、対処する。
【発明の概要】
【０００３】
以下でより詳細に説明するように、本開示は、重複排除ストレージ内の画像を修復するための様々なシステム及び方法を記載する。一実施例において、重複排除ストレージ内の画像を修復するための本開示のコンピュータ実装方法は、（ｉ）重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、（ｉｉ）バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、（ｉｉｉ）バックアップされている画像のデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている画像からのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加することと、を含み得る。
【０００４】
一実施形態において、アルゴリズムは、（ｉ）チェックサムアルゴリズム、（ｉｉ）ハッシュアルゴリズム、及び／又は（ｉｉｉ）デジタル指紋アルゴリズムを含み得る。いくつかの実施例において、バックアップされている画像からのデータセグメントをコンテナに追加することが、破損データセグメントを参照する少なくとも１つの画像を効果的に修復する。
【０００５】
一実施形態において、コンピュータ実装方法は、破損データセグメントを参照する画像を復元するための復元動作中、より大きなオフセットを有する追加データセグメントに基づいて、破損データセグメントではなく追加データセグメントを提供することを更に含み得る。いくつかの実施例において、破損データセグメントではなく追加データセグメントを提供することが、同一のデジタル指紋を有する複数のデータセグメント間で、コンテナ内の最大のオフセットを有するデータセグメントを選択するように構成された読み取り動作に従って実施される。
【０００６】
一実施形態において、コンピュータ実装方法は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、データセグメントのデジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加することを更に含み得る。いくつかの実施例において、コンピュータ実装方法は、データセグメントのデジタル指紋と共に、コンテナの識別子を指紋破損リストに追加することを更に含み得る。
【０００７】
一実施形態において、コンピュータ実装方法は、バックアップ動作中、指紋破損リストをチェックして、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致することを判定することを更に含み得る。一実施形態において、データセグメントは、指紋破損リスト内の破損データセグメントのためのコンテナの識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、破損データセグメントをすでに含有するコンテナに追加される。一実施形態において、コンピュータ実施方法は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有するデータセグメントをマーキングすることを更に含み得る。
【０００８】
一実施形態において、上記方法を実装するためのシステムは、（ｉ）メモリ内に記憶された検出モジュールであって、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出する、検出モジュールと、（ｉｉ）メモリ内に記憶されたチェックモジュールであって、バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックする、チェックモジュールと、（ｉｉｉ）メモリ内に記憶された追加モジュールであって、バックアップされている画像のデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている画像からのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加する、追加モジュールと、（ｉｖ）検出モジュール、チェックモジュール、及び追加モジュールを実行するように構成された少なくとも１つの物理的プロセッサと、を含み得る。
【０００９】
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、少なくとも１つのコンピューティングデバイスのプロセッサによって実行されるとき、コンピューティングデバイスに、（ｉ）重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、（ｉｉ）バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、（ｉｉｉ）バックアップされている画像のデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている画像からのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加することと、をさせ得る、１つ以上のコンピュータ実行可能な命令を含み得る。
【００１０】
上記で述べた実施形態のうちのいずれかからの機能は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１１】
添付の図面は、多くの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明と共に、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】重複排除ストレージ内の画像を修復するための例示的なシステムのブロック図である。
【図２】重複排除ストレージ内の画像を修復するための追加の例示的なシステムのブロック図である。
【図３】重複排除ストレージ内の画像を修復するための例示的な方法のフロー図である。
【図４】修復を実施する前に、例示的なコンピューティングシステムにより参照される例示的なコンテナのブロック図である。
【図５】修復が実施された後、例示的なコンピューティングシステムにより参照される例示的なコンテナのブロック図である。
【００１２】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【発明を実施するための形態】
【００１３】
本開示は、概して、重複排除ストレージ内の画像を修復するためのシステム及び方法を対象とする。これらのシステム及び方法は、他の関連するシステムに優る様々な利点を得ることができる。例えば、システム及び方法は、破損した際データセグメントを単にマーキングするのではなく、重複排除システム内で画像を自動的又は自律的に修復し、更に画像が破損したデータセグメントを参照することを防止することができる。システム及び方法は、重複排除システム又はサーバと連動するクライアントデバイス上で依然として入手可能なデータセグメントの非破損のデータセグメントのコピーを活用することによってこれらの利点を実現し得る。換言すると、データセグメントが重複排除システム又はサーバで破損された後でも、１つ以上のクライアント又は顧客が、データセグメントの非破損インスタンスを依然として保有し得る。付加的に、クライアント又は顧客は、データセグメントの非破損インスタンスを重複排除システム又はサーバにアップロードしてもよい。例えば、クライアント又は顧客は、データセグメントの非破損インスタンスを、重複排除システムに新たにディスク画像を新たにバックアップするためのバックアップ動作の一部としてアップロードし得る。
【００１４】
付加的に、開示されたシステム及び方法は、コンテナ内の破損データセグメントのコンテンツを非破損コンテンツと置換するのではなく、かつ非破損データセグメントを新しい又は異なるコンテナに書き込むのではなく、破損データセグメントが記憶されている同一のコンテナに非破損データセグメントを追加し得る。開示されたシステム及び方法は、それによって、これらの代替的な方法と関連付けられた多数の問題を回避する。例えば、破損データセグメントのコンテンツを非破損データセグメントのコンテンツに単に置換することは、非破損データセグメントがストレージデバイスの不良又は故障した部分に単に書き込まれ、それによってデータセグメントの破損を繰り返す問題をもたらし得る。付加的に、重複排除システムは、最初のデータが同じサイズであっても必ずしも同じサイズの圧縮データを生成しない圧縮スキームを使用する場合があり、したがって、圧縮された非破損データセグメントが、破損データセグメントによって占有されたストレージ空間内に合わない場合がある。その上、非破損データセグメントを、同一コンテナではなく、新たなコンテナに単に書き込むことは、破損データセグメントを参照する画像のメタデータの大幅な修正をもたらし、法外な費用がかかり得る。
【００１５】
下記において、図１〜図２を参照すると、重複排除ストレージ内の画像を修復するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明もまた、図３〜図５に関連して提供される。
【００１６】
図１は、重複排除ストレージ内の画像を修復するための例示的なシステム１００のブロック図である。この図に例解されるように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含んでもよい。例えば、以下でより詳細に説明するように、例示的なシステム１００は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出する、検出モジュール１０４を含み得る。例示的なシステム１００は、バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックする、チェックモジュール１０６を付加的に含み得る。例示的なシステム１００はまた、バックアップされている画像のデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている画像からのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加する、追加モジュール１０８を含み得る。付加的に、例示的なシステム１００は、更に下記で考察されるように、種々の更なる機能を実施する提供モジュール１１０を更に含み得る。別個の要素として例解されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの一部分を表し得る。
【００１７】
特定の実施形態では、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、１つ以上のタスクを実施させてもよい１つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、以下でより詳細に説明するように、１つ以上のモジュール１０２は、図２内に例解されたデバイス（例えば、コンピューティングデバイス２０２及び／又はサーバ２０６）等の、１つ以上のコンピューティングデバイス上で記憶され、動作するように構成されたモジュールを表現し得る。図１のモジュール１０２のうちの１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の特殊目的のコンピュータの全て又は一部分を表してもよい。
【００１８】
図１に例解されるように、例示的なシステム１００はまた、メモリ１４０等の１つ以上のメモリデバイスを含み得る。メモリ１４０は、概して、データ及び／又はコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性ストレージデバイス若しくは媒体を表す。一実施例において、メモリ１４０は、１つ以上のモジュール１０２を記憶、搭載、及び／又は維持し得る。メモリ１４０の例としては、ランダムアクセスメモリ（Random Access Memory、ＲＡＭ）、読出し専用メモリ（Read Only Memory、ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ、（Hard Disk Drive、ＨＤＤ）、ソリッドステートドライブ（Solid-State Drive、ＳＳＤ）、光学ディスクドライブ、キャッシュ、上記のうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なストレージメモリが挙げられるが、これらに限定されない。
【００１９】
図１に例解されるように、例示的なシステム１００はまた、物理的プロセッサ１３０等の、１つ以上の物理的プロセッサを含み得る。物理的プロセッサ１３０は、概して、コンピュータ可読命令を解釈及び／又は実行することが可能な任意のタイプ又は形式のハードウェア実装処理ユニットを表す。一実施例において、物理的プロセッサ１３０は、メモリ１４０内に記憶された１つ以上のモジュール１０２にアクセスし及び／又は修正してもよい。付加的に又は代替的に、物理的プロセッサ１３０は、重複排除ストレージ内の画像の修復を容易にするために１つ以上のモジュール１０２を実行し得る。物理的プロセッサ１３０の例としては、マイクロプロセッサ、マイクロコントローラ、中央処理装置（Central Processing Unit、ＣＰＵ）、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ（Field-Programmable Gate Array、ＦＰＧＡ）、特定用途向け集積回路（Application-Specific Integrated Circuit、ＡＳＩＣ）、１つ以上の上記の部分、上記のうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適な物理的プロセッサが挙げられるが、これらに限定されない。
【００２０】
図１において例解されるように、例示的なシステム１００はまた、データセグメント１２２、データセグメント１２４、及びデジタル指紋１２６等の１つ以上の付加的要素１２０を含むことができる。データセグメント１２２は、更に下記で考察されるように、破損データセグメントに対応してもよく、データセグメント１２４は、同一のデータセグメントの非破損インスタンスに対応してもよい。付加的に、デジタル指紋１２６は、データセグメント１２２の破損の前に取得されたデータセグメント１２２のデジタル指紋に対応してもよい。一般に、付加的な要素１２０は、メモリ１４０等の対応するストレージデバイス内のデータ構造又は要素として記憶され得る。
【００２１】
図１内の例示的なシステム１００は、様々な方法で実装され得る。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表してもよい。図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信するコンピューティングデバイス２０２を含み得る。一実施例において、モジュール１０２の機能の全て又は一部分は、コンピューティングデバイス２０２、サーバ２０６、及び／又は任意の他の適切なコンピューティングシステムによって実施されてもよい。下記でより詳細に説明するように、図１の１つ以上のモジュール１０２は、コンピューティングデバイス２０２及び／又はサーバ２０６のうちの少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイス２０２及び／又はサーバ２０６が重複排除ストレージ内の画像を修復することを可能にし得る。
【００２２】
例えば、検出モジュール１０４は、（サーバ２０６に対応し得る）重複排除ストレージ内に記憶されたデータセグメント１２２が、破損されていることを、データセグメント１２２上でアルゴリズムを実行してデータセグメント１２２用の数値識別子を生成し、数値識別子がデータセグメント１２２用に以前に記憶された数値識別子と一致しないことを判定することによって検出し得る。同様に、チェックモジュール１０６は、バックアップ動作中、バックアップされている（例えば、コンピューティングデバイス２０２に対応するクライアント又は顧客からバックアップされている）画像の別のデータセグメント１２４の（コンピューティングデバイス２０２の付加的な要素２２０内の）デジタル指紋２２６が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメント１２２のデジタル指紋１２６と一致するかどうかチェックし得る。最後に、追加モジュール１０８は、バックアップされている画像のデータセグメント１２４のデジタル指紋２２６が破損データセグメント１２２のデジタル指紋１２６と一致すると判断するチェックモジュール１０６に応じて、破損データセグメント１２２を置換するのではなく、バックアップされている画像からのデータセグメント１２４を、破損データセグメント１２２をすでに含有するコンテナに追加し得る。この場合において、コンテナ内の追加データセグメント１２４のオフセットは、同一コンテナ内の破損データセグメント１２２のオフセットよりも大きくなり得る。
【００２３】
コンピューティングデバイス２０２は、コンピュータ実行可能命令を読み出すことができる任意のタイプ又は形式のコンピューティングデバイスを概して表す。いくつかの実施形態において、コンピューティングデバイス２０２は、重複排除ストレージシステムに対応するサーバ２０６を通じて、バックアップ及び／又は復元動作を実施するクライアント又は顧客のデバイスに対応し得る。コンピューティングデバイス２０２の付加的な例は、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末（Personal Digital Assistant、ＰＤＡ）、マルチメディアプレイヤー、組込み式システム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラスなど）、ゲーム機、上記のうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００２４】
サーバ２０６は、概して、更に下記で考察されるように、重複排除を通じてデータストレージを容易にすることが可能な任意のタイプ又は形式のコンピューティングデバイスを表す。サーバ２０６の付加的な例としては、ストレージサーバ、データベースサーバ、アプリケーションサーバ、並びに／又はあるソフトウェアアプリケーションを動作させ、かつ／又は様々なストレージ、データベース、及び／若しくはウェブサービスを提供するように構成されたウェブサーバが挙げられるが、これらに限定されない。図２において単一体として例解されるが、サーバ２０６は、互いに連動して働き及び／又は動作する複数のサーバを含み及び／又は表してもよい。
【００２５】
ネットワーク２０４は、通信又はデータ転送を容易にすることができる任意の媒体又はアーキテクチャを概して表す。一実施例において、ネットワーク２０４は、コンピューティングデバイス２０２とサーバ２０６との間の通信を容易にし得る。この実施例において、ネットワーク２０４は、無線及び／又は有線接続を使用して、通信又はデータ転送を容易にし得る。ネットワーク２０４の例としては、限定するものではないが、イントラネット、ワイドエリアネットワーク（Wide Area Network、ＷＡＮ）、ローカルエリアネットワーク（Local Area Network、ＬＡＮ）、パーソナルエリアネットワーク（Personal Area Network、ＰＡＮ）、インターネット、電力線通信（Power Line Communication、ＰＬＣ）、セルラネットワーク（例えば、汎欧州デジタル移動電話方式（Global System for Mobile Communications、ＧＳＭ（登録商標））ネットワーク）、１つ以上の上記の部分、上記のうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なネットワークを含む。
【００２６】
多数の他のデバイス又はサブシステムが、図１のコンピューティングシステム１００及び／又は図２のコンピューティングシステム２００に接続され得る。逆に、図１及び図２に例解された構成要素及びデバイスの全てが、本明細書において説明及び／又は例解される実施形態を実践するために存在する必要があるわけではない。上記で参照されたデバイス及びサブシステムはまた、図２に示すものとは異なる方法で相互接続されてもよい。コンピューティングシステム１００及び２００はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの１つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び／又はコンピュータ制御論理とも称される）としてコード化され得る。
【００２７】
「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波などの伝送タイプ媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光記憶媒体（例えば、コンパクトディスク（Compact Disk、ＣＤ）、デジタルビデオディスク（Digital Video Disk、ＤＶＤ）、及びＢＬＵ−ＲＡＹ（登録商標）ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）などの非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【００２８】
図３は、重複排除ストレージ内の画像を修復するための例示的なコンピュータ実装方法３００のフロー図である。図３に示されるステップは、図１のシステム１００、図２のシステム２００、及び／又は上記のうちの１つ以上の変形又は組み合わせを含む、いずれの好適なコンピュータ実行可能なコード及び／又はコンピューティングシステムによって実施され得る。一実施例において、図３に示される各ステップは、構造が複数のサブステップを含み、及び／又は複数のサブステップによって表されるアルゴリズムを表すことができ、その実施例が下記でより詳細に提供される。
【００２９】
図３に例解されるように、ステップ３０２において、本明細書で記載された１つ以上のシステムは、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出し得る。例えば、図２のサーバ２０６の一部として、検出モジュール１０４は、サーバ２０６内に記憶されたデータセグメント１２２が破損されていることを、データセグメント１２２上でアルゴリズムを実行してデータセグメント１２２用の数値識別子を生成し、数値識別子がデータセグメント１２２用に以前に記憶された数値識別子と一致しないことを判定することによって検出し得る。
【００３０】
本明細書において使用される際、「データセグメント」という用語は、概して、重複排除システムが対応するデータの複数のコピーを記憶する代わりに、複数回参照し、それにより重複排除を達成し得るデータのセグメントを指す。いくつかの実施形態において、重複排除システムは、重複排除システム内で固有であり得る単一インスタンスのデータセグメントを記憶するのみであってもよく、それによって、単一インスタンスのデータセグメントを参照することによってデータセグメントの任意の更なるインスタンスが効果的に記憶されることを可能にする。加えて、本明細書において使用される際、「破損」というフレーズは、概して、重複排除システムが対応するデータセグメントにアクセスすることを防止する、任意の問題、故障、及び／又はエラーを指す。いくつかの実施例において、データセグメントは、物理的なストレージデバイス上の特定の場所に対応するハードウェア及び／又はソフトウェア障害を通じて破損され得る。
【００３１】
検出モジュール１０４は、データセグメントが破損されていることを様々な方法で検出し得る。いくつかの実施例において、検出モジュール１０４は、データセグメントが破損していることを、以下の（ｉ）チェックサムアルゴリズム、（ｉｉ）ハッシュアルゴリズム、及び／又は（ｉｉｉ）デジタル指紋アルゴリズムのうちの少なくとも１つをデータセグメント上で実行することによって検出し得る。これらのアルゴリズムのうちの１つ以上は、アルゴリズムが特定のデータセグメント用にその出力を生成するが、統計的な測定によれば異なるデータセグメント用に同一の出力を生成することはないという意味で、データセグメントを識別する出力を生成し得る。一実施例において、アルゴリズムからもたらされる数値識別子は、デジタル指紋１２６等のデータセグメントのデジタル指紋に対応し得、更に下記で考察されるように、ステップ３０４においてチェックモジュール１０６によって更に参照される。
【００３２】
一実施形態において、検出モジュール１０４は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、データセグメントのデジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加し得る。データセグメントのデジタル指紋は、データセグメント内のいずれの変更も、統計的測定によれば同一のデジタル指紋を生成することはないという意味で、データセグメントを個別に識別し得る。より一般的には、検出モジュール１０４は、方法３００を実施する目的で破損データセグメントのリストを維持してもよい。検出モジュール１０４は、リスト内に破損として検出されたデータセグメントの識別子を記憶することにより、リストを部分的に維持し得、これらの識別子は、デジタル指紋を含み得る。指紋破損リストは、更に下記で考察されるように、破損データセグメントを含有するコンテナの識別子を付加的に記憶してもよい。
【００３３】
本明細書において使用される際、「コンテナ」という用語は、概して、対応するオフセットにおいて、重複排除ストレージの文脈において更に定義されたように、ハードウェア、ソフトウェア、仮想、及び／又は論理ストレージデバイス、フォルダ、ファイル、及び／又は重複排除用のデータセグメントを記憶する他のストレージコンテナを指す。いくつかの実施例において、コンテナは、下記で更に考察されるように、後に記憶されるデータセグメントが増加した、又はより大きなオフセットで記憶されるように、回転又は時系列的様式でデータセグメントを記憶し得る。更なる実施例において、重複排除システムは、画像が任意の他のコンテナ内に以前に記憶されていなかったデータセグメントを含有するとき、それぞれの画像用のコンテナを作り出してもよい（すなわち、任意の他のコンテナ内にデータセグメントが欠如すると、新たなコンテナを生成する必要性が出てくる）。特定の実施例において、コンテナは、データセグメントを記憶するために重複排除ストレージシステムによって確立されたファイルに対応する。付加的に、いくつかの実施例において、検出モジュール１０４は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有するデータセグメントをマーキングしてもよい。本明細書において使用される際、「フラグ」という用語は、概して、対応するデータセグメントが破損しているかどうかをマーキングする目的で、真又は偽の区別をする任意のビット又はビットシーケンスを指す。
【００３４】
ステップ３０４において、本明細書に記載の１つ以上のシステムは、バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックし得る。例えば、チェックモジュール１０６は、図２のサーバ２０６の一部として、バックアップ動作中、バックアップされている画像のデータセグメント１２４のデジタル指紋２２６が、破損の前に取得され、かつサーバ２０６内にすでに記憶されている破損データセグメント１２２のデジタル指紋１２６と一致するかどうかチェックし得る。
【００３５】
チェックモジュール１０６は、２つのデジタル指紋が一致するかどうか様々な方法でチェックし得る。いくつかの実施例において、チェックモジュール１０６は、任意のビットが２つのデジタル指紋間で異なるかどうか識別するために、ビット比較を実施してもよい。付加的に、更なる実施例において、チェックモジュール１０６は、重複排除ストレージ内に以前に記憶されたデジタル指紋１２６を読み出してもよい。デジタル指紋１２６は、データセグメント１２２の破損の前の時点で生成又はコンピューティングされてもよい。したがって、デジタル指紋１２６は、データセグメント１２２の非破損コンテンツを識別し得る。バックアップ動作の一部としてアップロードされているプロセスにおいて、デジタル指紋１２６がデータセグメント１２４のデジタル指紋２２６と一致するかどうかチェックすることによって、チェックモジュール１０６は、コンピューティングデバイス２０２等の１つ以上のクライアントデバイスがデータセグメント１２２の非破損バージョン又はインスタンスを付加的に含有するかどうか効果的に判定し得る。
【００３６】
より具体的な実施例において、チェックモジュール１０６は、指紋破損リストをチェックして、バックアップされている画像のデータセグメント１２４のデジタル指紋２２６が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶される破損データセグメント１２２のデジタル指紋１２６と一致することを判定し得る（すなわち、デジタル指紋２２６が指紋破損リスト内に記憶されたデジタル指紋１２６のインスタンスと一致するかどうかチェックし得る）。換言すると、チェックモジュール１０６は、バックアップ動作中、バックアップされている画像が重複排除サーバで破損として以前に検出され、かつ指紋破損リスト上で識別された任意の１つ以上のデータセグメントの非破損バージョンを含有するかどうかチェックし得る。換言すると、バックアップ動作において入来画像によって参照される１つの、いくつかの、又は全てのデータセグメントに関して、チェックモジュール１０６は、データセグメントがデジタル指紋と一致するかどうかチェックして、重複排除ストレージ内に以前に記憶され、かつ破損したデータセグメントを識別し得る。下記で更に考察されるように、これらのデータセグメントの非破損バージョンに関して、バックアップ手順の一部として、又はバックアップ手順に応じて、入来画像を自動的に、規定どおりに、又は周期的に走査若しくは検索することによって、モジュール１０２は、データセグメントの非破損バージョンを利用して、重複排除ストレージ内の対応する画像を自動的に修復し得る。
【００３７】
ステップ３０６において、本明細書に記載の１つ以上のシステムは、バックアップされている画像のデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている画像からのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加する。例えば、図２のサーバ２０６の一部として、追加モジュール１０８は、バックアップされている画像のデータセグメント１２４のデジタル指紋２２６が破損データセグメント１２２のデジタル指紋１２６と一致すると判断するチェックモジュール１０６に応じて、破損データセグメント１２２を置換するのではなく、バックアップされている画像からのデータセグメント１２４を、破損データセグメント１２２をすでに含有するコンテナに追加し得る。
【００３８】
本明細書において使用される際、「追加する」というフレーズは、概して、コンテナ内に以前に記憶されたデータセグメントの破損バージョンを置換又は上書きするのではなく、端部又は現在のコンテナ内のオフセットで、データセグメントをコンテナに追加することを指す。一般に、コンテナは、後のデータセグメントの書き込みが、コンテナ内のより大きなオフセットでデータセグメントが記憶されることをもたらす回転的又は時系列的様式で、データセグメントをそれぞれのオフセットで重複排除システム内に記憶し得る。その上、一般に、本明細書において使用される際、「コンテナ」という用語は、概して、上記で考察されるように、それぞれのオフセットで重複排除システム内にデータセグメントを記憶するように構成された物理的、論理的、及び／又は他のストレージデバイス若しくは場所を指す。
【００３９】
追加モジュール１０８は、データセグメントの非破損インスタンスを様々な方法で追加し得る。いくつかの実施例において、追加モジュール１０８は、破損データセグメントを参照する少なくとも１つの画像を効果的に修復する様式で、バックアップされている画像からのデータセグメントをコンテナに追加してもよい。本明細書において使用される際、「効果的に修復する」というフレーズは、概して、（例えば、データセグメントを参照するディスク画像を復元するための復元プロセスの一部などの）データセグメントにアクセスしようとする試行に応じて、以前に記憶された破損バージョンのデータセグメントではなく、非破損バージョンのデータセグメントを提供するように構成された重複排除システム内のデータセグメントを追加し、それによってデータセグメントの破損に関連付けられた問題を克服することを指す。例えば、提供モジュール１１０は、破損データセグメントを参照する画像を復元するための復元動作中、より大きなオフセットを有する追加データセグメントに基づいて、破損データセグメントではなく追加データセグメントを提供してもよい。
【００４０】
より具体的な実施例において、提供モジュール１１０は、同一のデジタル指紋を有する複数のデータセグメント間で、コンテナ内の最大のオフセットを有するデータセグメントを選択するように構成された読み取り動作に従って、破損データセグメント１２２ではなくデータセグメント１２４を提供し得る。提供モジュール１１０は、コンテナ内のオフセットによってコンテナ内のデータセグメントをソートし得、それによって、ソートに基づきより大きなオフセットを有するデータセグメントを提供し得る。より一般的には、提供モジュール１１０は、上記の概略のように、破損の前のデータセグメントのデジタル指紋と一致するデジタル指紋を有するコンテナ内のデータセグメントを検索するように構成され得る。いくつかの実施例において、提供モジュール１１０は、適合デジタル指紋を有する複数のデータセグメントを識別し得る。これらの実施例において、提供モジュール１１０は、コンテナ内で最大のオフセットを有するデータセグメントを選択するように構成してもよい。付加的に、又は代替的に、提供モジュール１１０は、下記で更に考察されるように、データセグメントに関して対応する破損フラグを参照することによる等、破損として検出されないデータセグメントを単に選択するように構成され得る。他の実施例において、提供モジュール１１０は、適合デジタル指紋を有する最初に見出されたデータセグメントがコンテナ内で最大のオフセットを有することを確実とする方法で、適合デジタル指紋を有するデータセグメント用のコンテナを単に検索してもよい。換言すると、提供モジュール１１０は、より高いオフセットからより低いオフセットの方向で適合デジタル指紋を有するデータセグメント用のコンテナを検索し得る。
【００４１】
図４は、データセグメントのうちの１つがすでに破損した後、コンテナ４０２及びコンテナ４０４が画像４０６によって参照された様々なデータセグメントを記憶する方法についての例解図４００を示す。具体的には、コンテナ４０２は、２つのデータセグメント、データセグメント２内のデータセグメント１を含有する。この図の実施例において、これらコンテナはまた、データセグメントが破損しているかどうか特定する各データセグメント用のフラグを記憶する。この実施例においては、データセグメント毎にフラグが記憶されているが、上記の概略のように、他の実施例では、検出されたデータセグメントが破損している場合にのみ、フラグがデータセグメント用に挿入されてもよい。図４に更に示されるように、この実施例において、重複排除ストレージは、画像４０６と、コンテナ１内に記憶されたデータセグメント１と、コンテナ１内に記憶されたデータセグメント２と、コンテナ２内に記憶されたデータセグメント３と、を形成する３つのデータセグメントを参照することによって画像４０６の復元を可能にする。とりわけ、上記で考察されたように、破損し、したがって真として設定された対応する破損フラグを有するコンテナ４０２内に記憶されたデータセグメント１を除いて、コンテナ４０２及び４０４内に記憶された全てのデータセグメントは、非破損である。
【００４２】
図５は、下記で更に考察されるように、破損データセグメントを修復した後、コンテナ４０２及びコンテナ４０４が画像４０６によって参照されたデータセグメントを記憶する方法を更に例解する例解図５００を示す。具体的には、図５は、データセグメント１の非破損バージョンがコンテナ４０２に追加されること（例えば、端部で又はコンテナ４０２用の現在の書き込み場所で）を更に示す。新たに追加された非破損バージョンのデータセグメント１は破損されていないので、対応する破損フラグは、真として設定されていない。したがって、画像４０６を復元するための復元動作中、提供モジュール１１０は、破損し、かつ以前に記憶されたデータセグメント１ではなく、追加データセグメント１を提供することにより破損されていないコンテナ４０２からのデータセグメント１のバージョンを提供してもよい。提供モジュール１１０は、上記の概略のような任意の方法で、データセグメントの非破損バージョンを提供し得る。例えば、提供モジュール１１０は、より高いオフセットからより低いオフセットの方向で、コンテナ４０２内の適合データセグメントを検索し得、それによって、検索内で非破損バージョンのデータセグメントに最初に遭遇する。提供モジュール１１０はまた、真と設定された破損フラグを有していないコンテナ４０２内の第１の適合データセグメントを（例えば、より高いオフセットからより低いオフセットの方向において）検索し得る。他の例において、上記で更に考察されたように、提供モジュール１１０は、コンテナ４０２内の全ての適合データセグメントを識別し得、次いで最も高いオフセットを有する、及び／又は偽として設定された破損フラグを有するデータセグメントを選択し得る。
【００４３】
付加的に、いくつかの実施例において、追加モジュール１０８は、指紋破損リスト内の破損データセグメントのためのコンテナの識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、破損データセグメントをすでに含有するコンテナにデータセグメントを追加してもよい。換言すると、検出モジュール１０４は、破損データセグメントのデジタル指紋及び／又は破損データセグメントが記憶されているコンテナの識別子のうちの一方又は両方を指紋破損リストに追加してもよい。追加モジュール１０８は、破損データセグメントがすでに記憶されている場所を識別する、指紋破損リスト内に記憶されるコンテナの識別子を単に参照することによって、非破損データセグメントをどのコンテナに追加するかを判断し得、それによって追加モジュール１０８が非破損データセグメントを同一のコンテナに追加することを可能にする。
【００４４】
上記の考察は、図３の方法３００を参照して開示されたシステム及び方法の実施形態の概観を提供する。付加的に、下記の考察は、開示されたシステム及び方法の具体的な実施形態の詳細のより具体的な概観を提供する。開示されたシステム及び方法は、重複排除システムにおいて、新規のバックアップからの良好なデータセグメントにより画像破損を自動的に修正するための機構を提示する。重複排除システムにおいて、１つの破損セグメントが、多くのデータ画像の破損につながる可能性があり、そのためＶＥＲＩＴＡＳ  ＭＥＤＩＡ  ＳＥＲＶＥＲ  ＤＥＤＵＰＬＩＣＡＴＩＯＮ  ＰＯＯＬ等のストレージシステムにおいて、オンラインチェック機構が、破損データセグメントが将来のバックアップによって参照されることを防止するために導入されてもよい。それにも拘らず、これらの実施例において、重複排除システムは、新たなバックアップからのデータセグメントで破損した画像を自動的に修正するための機構を欠くことがある。ほどんどの場合、良好なデータセグメントは、クライアント側に依然として存在し、新たなバックアップで重複排除サーバに来る。開示されたシステム及び方法は、入来する良好なデータセグメントで破損した画像を自動的に修正し得る。
【００４５】
自己修復機構は、下記の３つの動作のうちの１つ以上を含み得る。巡回冗長性チェック等のオンライン又は破損検出プロセスは、記憶されたデータセグメントのチェックサムを計算し、以前に記憶されたチェックサム（すなわち、データセグメントの破損の前に計算された以前に記憶されたチェックサム）と比較してもよい。不一致がある場合、データセグメントは、真として設定された破損フラグでマーキングされる。破損指紋は、そのコンテナ識別子と共に指紋破損リストに追加することができる。バックアップ動作中、クエリが実施されて、アップロードされている画像によって参照される非破損データセグメントのための１つ以上のデジタル指紋が、指紋破損リスト内に記憶された１つ以上のデジタル指紋と一致するかどうかチェックする。指紋破損リスト内に一致が見出された場合、非破損データセグメントが、アップロードされ、同一コンテナに追加される。付加的に、データセグメントの指紋は、指紋破損リストから除去されてもよい。指紋が指紋破損リスト内に見出されない場合、デジタル指紋は、通常の重複排除指紋インデックス（例えば、以前に確立されたコンテナ）に対してチェックされ、一致しない場合、次いで新たなコンテナが生成され、データセグメントは新たなコンテナ内に記憶されてもよい。画像復元動作中、同一のデジタル指紋を有するコンテナ内に１つ以上のデータセグメントがある場合、次いで復元動作は、コンテナ内に最大のオフセットを有するデータセグメントを使用して、復元を実施し得る。
【００４６】
破損データセグメントのコンテンツを置換するのではなく非破損データセグメントを同一のコンテナに追加すること、及び／又は非破損データセグメントを異なるコンテナに書き込むことで、これらの代替的な解決策に関連付けられた問題を回避する。具体的には、破損データセグメントのコンテンツを置換する場合、データセグメントは、静音ハードディスクセクタ等の物理的ストレージの一部の故障に起因して破損する可能性がある。したがって、データセグメントは、非破損データセグメントを同じ場所にコピーした後に、再度破損し得る。付加的に、破損データセグメントのコンテンツを置換することが、同一のオリジナルデータセグメントのコンテンツを使用しているにもかかわらず、同一サイズの圧縮データを必ずしも生成することがない、Ｌｅｍｐｅｌ−Ｚｉｖ−Ｏｂｅｒｈｕｍｅｒ圧縮等の、圧縮方式に起因して不可能となる可能性がある。更に、同一のコンテナではなく異なるコンテナに非破損データセグメントを書き込むことは、破損データセグメントを参照する画像のうちのいくつか又は全ての修正をもたらし得る。同様に、非破損データセグメントを異なるコンテナに書き込むことは、対応する画像参照を異なる（例えば、新たな）コンテナに追加することをもたらし得る。対応する費用は、法外なものとなり得る。
【００４７】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートのステップ、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、及び／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例示的であると見なされるべきである。
【００４８】
いくつかの実施例において、図１の例示的なシステム１００の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００４９】
種々の実施形態において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナント機能を容易にし得る。換言すると、本明細書において説明されるモジュールは、本明細書において説明される機能のうちの１つ以上に対するマルチテナト機能を容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるモジュールのうちの１つ以上は、２つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【００５０】
種々の実施形態によれば、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。
【００５１】
いくつかの実施例において、図１の例示的なシステム１００の全て又は一部分は、モバイルコンピューティング環境の一部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）、上記のうちの１つ以上の変形又は組み合わせ、若しくは任意の他の好適なモバイルコンピューティングデバイスを含む、広範なモバイルコンピューティングデバイスによって実装され得る。いくつかの実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に１つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）能力などを制限する、制限されたプラットフォームを含む、１つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００５２】
本明細書において説明及び／又は例解されるステップのプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明されるステップは、特定の順序で図示又は考察されるが、これらのステップは、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解されるステップのうちの１つ以上を省略し得るか、又は開示されるものに加えて追加のステップを含み得る。
【００５３】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するモジュールを使用して、実装され得る。これらのモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。いくつかの実施形態において、これらのモジュールは、本明細書において開示される例示的な実施形態のうちの１つ以上を実施するように、コンピューティングシステムを構成し得る。
【００５４】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、包括的であること、又は開示されるいかなる正確な形態にも限定されることを意図されない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【００５５】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（即ち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「ａ」又は「ａｎ」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
2019530085.tif 000003
【図２】
2019530085.tif 000004
【図３】
2019530085.tif 000005
【図４】
2019530085.tif 000006
【図５】
2019530085.tif 000007
【手続補正書】
【提出日】平成31年3月15日(2019.3.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
重複排除ストレージ内の画像を修復するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法が、
重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、前記データセグメント上でアルゴリズムを実行して、前記データセグメント用の数値識別子を生成し、前記数値識別子が前記データセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、
バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、
前記バックアップされている画像の前記データセグメントの前記デジタル指紋が前記破損データセグメントの前記デジタル指紋と一致するという判定に応じて、前記破損データセグメントを置換するのではなく、前記バックアップされている画像からの前記データセグメントを、前記コンテナ内の前記追加データセグメントのオフセットが前記同一コンテナ内の前記破損データセグメントのオフセットよりも大きくなるように、前記破損データセグメントをすでに含有するコンテナに追加することと、を含む、方法。
【請求項２】
前記アルゴリズムが、
チェックサムアルゴリズムと、
ハッシュアルゴリズムと、
デジタル指紋アルゴリズムと、のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記バックアップされている画像からの前記データセグメントを前記コンテナに追加することが、前記破損データセグメントを参照する少なくとも１つの画像を効果的に修復する、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記破損データセグメントを参照する画像を復元するための復元動作中、前記より大きなオフセットを有する前記追加データセグメントに基づいて、前記破損データセグメントではなく前記追加データセグメントを提供することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記破損データセグメントではなく前記追加データセグメントを提供することが、同一のデジタル指紋を有する複数のデータセグメント間で、前記コンテナ内の最大のオフセットを有する前記データセグメントを選択するように構成された読み取り動作に従って実施される、請求項４に記載のコンピュータ実装方法。
【請求項６】
重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、前記データセグメントの前記デジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加することを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記データセグメントの前記デジタル指紋と共に、前記コンテナの識別子を前記指紋破損リストに追加すること、を更に含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記データセグメントが、前記指紋破損リスト内の前記破損データセグメントのための前記コンテナの前記識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、前記破損データセグメントをすでに含有する前記コンテナに追加される、請求項７に記載のコンピュータ実装方法。
【請求項９】
前記バックアップ動作中、前記指紋破損リストをチェックして、前記バックアップされている画像の前記データセグメントの前記デジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントの前記デジタル指紋と一致することを判定することを更に含む、請求項６に記載のコンピュータ実装方法。
【請求項１０】
前記重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有する前記データセグメントをマーキングすることを更に含む、請求項１に記載のコンピュータ実装方法。
【請求項１１】
重複排除ストレージ内の画像を修復するためのシステムであって、
メモリ内に記憶された検出手段もあって、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、前記データセグメント上でアルゴリズムを実行して前記データセグメント用の数値識別子を生成し、前記数値識別子が前記データセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出する、検出手段と、
メモリ内に記憶されたチェック手段であって、バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントのデジタル指紋と一致するかどうかをチェックする、チェック手段と、
メモリ内に記憶された追加手段であって、前記バックアップされている画像の前記データセグメントの前記デジタル指紋が前記破損データセグメントの前記デジタル指紋と一致するという判定に応じて、前記破損データセグメントを置換するのではなく、前記バックアップされている画像からの前記データセグメントを、前記コンテナ内の前記追加データセグメントのオフセットが前記同一コンテナ内の前記破損データセグメントのオフセットよりも大きくなるように、前記破損データセグメントをすでに含有するコンテナに追加する、追加手段と、
前記検出手段、前記チェック手段、及び前記追加手段、を実行するように構成された少なくとも１つの物理的プロセッサと、を備える、システム。
【請求項１２】
前記アルゴリズムが、
チェックサムアルゴリズムと、
ハッシュアルゴリズムと、
デジタル指紋アルゴリズムと、のうちの少なくとも１つを含む、請求項１１に記載のシステム。
【請求項１３】
前記追加手段が、前記破損データセグメントを参照する少なくとも１つの画像を効果的に修復する様式において、前記バックアップされている画像からの前記データセグメントを前記コンテナに追加する、請求項１１に記載のシステム。
【請求項１４】
前記破損データセグメントを参照する画像を復元するための復元動作中、前記より大きなオフセットを有する前記追加データセグメントに基づいて、前記破損データセグメントではなく前記追加データセグメントを提供する、メモリ内に記憶された提供手段を更に備える、請求項１１に記載のシステム。
【請求項１５】
１つ以上のコンピュータ可読命令を含む非一過性コンピュータ可読媒体であって、前記命令が、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、前記データセグメント上でアルゴリズムを実行して前記データセグメント用の数値識別子を生成し、前記数値識別子が前記データセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、
バックアップ動作中、バックアップされている画像のデータセグメントのデジタル指紋が、破損の前に取得され、かつ前記重複排除ストレージ内にすでに記憶されている前記破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、
前記バックアップされている画像の前記データセグメントの前記デジタル指紋が前記破損データセグメントの前記デジタル指紋と一致するという判定に応じて、前記破損データセグメントを置換するのではなく、前記バックアップされている画像からの前記データセグメントを、前記コンテナ内の前記追加データセグメントのオフセットが前記同一コンテナ内の前記破損データセグメントのオフセットよりも大きくなるように、前記破損データセグメントをすでに含有するコンテナに追加することと、をさせる、非一過性コンピュータ可読媒体。
【国際調査報告】
2019530085.tif 000008
2019530085.tif 000009