(58)【調査した分野】(Int.Cl.,DB名)
前記破損データセグメントではなく前記追加データセグメントを提供することが、同一のデジタル指紋を有する複数のデータセグメント間で、前記コンテナ内の最大のオフセットを有する前記データセグメントを選択するように構成された読み取り動作に従って実施される、請求項4に記載のコンピュータ実装方法。
重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、前記データセグメントの前記デジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加することを更に含む、請求項1に記載のコンピュータ実装方法。
前記データセグメントが、前記指紋破損リスト内の前記破損データセグメントのための前記コンテナの前記識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、前記破損データセグメントをすでに含有する前記コンテナに追加される、請求項7に記載のコンピュータ実装方法。
前記重複排除ストレージ内に記憶された前記データセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有する前記データセグメントをマーキングすることを更に含む、請求項1に記載のコンピュータ実装方法。
【発明の概要】
【0003】
以下でより詳細に説明するように、本開示は、重複排除ストレージ内の
イメージを修復するための様々なシステム及び方法を記載する。一実施例において、重複排除ストレージ内の
イメージを修復するための本開示のコンピュータ実装方法は、(i)重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、(ii)バックアップ動作中、バックアップされている
イメージのデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、(iii)バックアップされている
イメージのデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている
イメージからのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加することと、を含み得る。
【0004】
一実施形態において、アルゴリズムは、(i)チェックサムアルゴリズム、(ii)ハッシュアルゴリズム、及び/又は(iii)デジタル指紋アルゴリズムを含み得る。いくつかの実施例において、バックアップされている
イメージからのデータセグメントをコンテナに追加することが、破損データセグメントを参照する少なくとも1つの
イメージを効果的に修復する。
【0005】
一実施形態において、コンピュータ実装方法は、破損データセグメントを参照する
イメージを復元するための復元動作中、より大きなオフセットを有する追加データセグメントに基づいて、破損データセグメントではなく追加データセグメントを提供することを更に含み得る。いくつかの実施例において、破損データセグメントではなく追加データセグメントを提供することが、同一のデジタル指紋を有する複数のデータセグメント間で、コンテナ内の最大のオフセットを有するデータセグメントを選択するように構成された読み取り動作に従って実施される。
【0006】
一実施形態において、コンピュータ実装方法は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、データセグメントのデジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加することを更に含み得る。いくつかの実施例において、コンピュータ実装方法は、データセグメントのデジタル指紋と共に、コンテナの識別子を指紋破損リストに追加することを更に含み得る。
【0007】
一実施形態において、コンピュータ実装方法は、バックアップ動作中、指紋破損リストをチェックして、バックアップされている
イメージのデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致することを判定することを更に含み得る。一実施形態において、データセグメントは、指紋破損リスト内の破損データセグメントのためのコンテナの識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、破損データセグメントをすでに含有するコンテナに追加される。一実施形態において、コンピュータ実施方法は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有するデータセグメントをマーキングすることを更に含み得る。
【0008】
一実施形態において、上記方法を実装するためのシステムは、(i)メモリ内に記憶された検出モジュールであって、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出する、検出モジュールと、(ii)メモリ内に記憶されたチェックモジュールであって、バックアップ動作中、バックアップされている
イメージのデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックする、チェックモジュールと、(iii)メモリ内に記憶された追加モジュールであって、バックアップされている
イメージのデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている
イメージからのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加する、追加モジュールと、(iv)検出モジュール、チェックモジュール、及び追加モジュールを実行するように構成された少なくとも1つの物理的プロセッサと、を含み得る。
【0009】
いくつかの例では、上記の方法は、
非一時的コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、少なくとも1つのコンピューティングデバイスのプロセッサによって実行されるとき、コンピューティングデバイスに、(i)重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出することと、(ii)バックアップ動作中、バックアップされている
イメージのデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックすることと、(iii)バックアップされている
イメージのデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている
イメージからのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加することと、をさせ得る、1つ以上のコンピュータ実行可能な命令を含み得る。
【0010】
上記で述べた実施形態のうちのいずれかからの機能は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【発明を実施するための形態】
【0013】
本開示は、概して、重複排除ストレージ内の
イメージを修復するためのシステム及び方法を対象とする。これらのシステム及び方法は、他の関連するシステムに優る様々な利点を得ることができる。例えば、システム及び方法は、破損した際データセグメントを単にマーキングするのではなく、重複排除システム内で
イメージを自動的又は自律的に修復し、更に
イメージが破損したデータセグメントを参照することを防止することができる。システム及び方法は、重複排除システム又はサーバと連動するクライアントデバイス上で依然として入手可能なデータセグメントの非破損のデータセグメントのコピーを活用することによってこれらの利点を実現し得る。換言すると、データセグメントが重複排除システム又はサーバで破損された後でも、1つ以上のクライアント又は顧客が、データセグメントの非破損インスタンスを依然として保有し得る。付加的に、クライアント又は顧客は、データセグメントの非破損インスタンスを重複排除システム又はサーバにアップロードしてもよい。例えば、クライアント又は顧客は、データセグメントの非破損インスタンスを、重複排除システムに新たにディスク
イメージを新たにバックアップするためのバックアップ動作の一部としてアップロードし得る。
【0014】
付加的に、開示されたシステム及び方法は、コンテナ内の破損データセグメントのコンテンツを非破損コンテンツと置換するのではなく、かつ非破損データセグメントを新しい又は異なるコンテナに書き込むのではなく、破損データセグメントが記憶されている同一のコンテナに非破損データセグメントを追加し得る。開示されたシステム及び方法は、それによって、これらの代替的な方法と関連付けられた多数の問題を回避する。例えば、破損データセグメントのコンテンツを非破損データセグメントのコンテンツに単に置換することは、非破損データセグメントがストレージデバイスの不良又は故障した部分に単に書き込まれ、それによってデータセグメントの破損を繰り返す問題をもたらし得る。付加的に、重複排除システムは、最初のデータが同じサイズであっても必ずしも同じサイズの圧縮データを生成しない圧縮スキームを使用する場合があり、したがって、圧縮された非破損データセグメントが、破損データセグメントによって占有されたストレージ空間内に合わない場合がある。その上、非破損データセグメントを、同一コンテナではなく、新たなコンテナに単に書き込むことは、破損データセグメントを参照する
イメージのメタデータの大幅な修正をもたらし、法外な費用がかかり得る。
【0015】
下記において、
図1〜
図2を参照すると、重複排除ストレージ内の
イメージを修復するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明もまた、
図3〜
図5に関連して提供される。
【0016】
図1は、重複排除ストレージ内の
イメージを修復するための例示的なシステム100のブロック図である。この図に例解されるように、例示的なシステム100は、1つ以上のタスクを実施するための1つ以上のモジュール102を含んでもよい。例えば、以下でより詳細に説明するように、例示的なシステム100は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出する、検出モジュール104を含み得る。例示的なシステム100は、バックアップ動作中、バックアップされている
イメージのデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックする、チェックモジュール106を付加的に含み得る。例示的なシステム100はまた、バックアップされている
イメージのデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている
イメージからのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加する、追加モジュール108を含み得る。付加的に、例示的なシステム100は、更に下記で考察されるように、種々の更なる機能を実施する提供モジュール110を更に含み得る。別個の要素として例解されるが、
図1のモジュール102のうちの1つ以上は、単一のモジュール又はアプリケーションの一部分を表し得る。
【0017】
特定の実施形態では、
図1のモジュール102のうちの1つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、1つ以上のタスクを実施させてもよい1つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、以下でより詳細に説明するように、1つ以上のモジュール102は、
図2内に例解されたデバイス(例えば、コンピューティングデバイス202及び/又はサーバ206)等の、1つ以上のコンピューティングデバイス上で記憶され、動作するように構成されたモジュールを表現し得る。
図1のモジュール102のうちの1つ以上はまた、1つ以上のタスクを実施するように構成された1つ以上の特殊目的のコンピュータの全て又は一部分を表してもよい。
【0018】
図1に例解されるように、例示的なシステム100はまた、メモリ140等の1つ以上のメモリデバイスを含み得る。メモリ140は、概して、データ及び/又はコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性ストレージデバイス若しくは媒体を表す。一実施例において、メモリ140は、1つ以上のモジュール102を記憶、搭載、及び/又は維持し得る。メモリ140の例としては、ランダムアクセスメモリ(Random Access Memory、RAM)、読出し専用メモリ(Read Only Memory、ROM)、フラッシュメモリ、ハードディスクドライブ、(Hard Disk Drive、HDD)、ソリッドステートドライブ(Solid-State Drive、SSD)、光学ディスクドライブ、キャッシュ、上記のうちの1つ以上の変形若しくは組み合わせ、又は任意の他の好適なストレージメモリが挙げられるが、これらに限定されない。
【0019】
図1に例解されるように、例示的なシステム100はまた、物理的プロセッサ130等の、1つ以上の物理的プロセッサを含み得る。物理的プロセッサ130は、概して、コンピュータ可読命令を解釈及び/又は実行することが可能な任意のタイプ又は形式のハードウェア実装処理ユニットを表す。一実施例において、物理的プロセッサ130は、メモリ140内に記憶された1つ以上のモジュール102にアクセスし及び/又は修正してもよい。付加的に又は代替的に、物理的プロセッサ130は、重複排除ストレージ内の
イメージの修復を容易にするために1つ以上のモジュール102を実行し得る。物理的プロセッサ130の例としては、マイクロプロセッサ、マイクロコントローラ、中央処理装置(Central Processing Unit、CPU)、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)、特定用途向け集積回路(Application-Specific Integrated Circuit、ASIC)、1つ以上の上記の部分、上記のうちの1つ以上の変形若しくは組み合わせ、又は任意の他の好適な物理的プロセッサが挙げられるが、これらに限定されない。
【0020】
図1において例解されるように、例示的なシステム100はまた、データセグメント122、データセグメント124、及びデジタル指紋126等の1つ以上の付加的要素120を含むことができる。データセグメント122は、更に下記で考察されるように、破損データセグメントに対応してもよく、データセグメント124は、同一のデータセグメントの非破損インスタンスに対応してもよい。付加的に、デジタル指紋126は、データセグメント122の破損の前に取得されたデータセグメント122のデジタル指紋に対応してもよい。一般に、付加的な要素120は、メモリ140等の対応するストレージデバイス内のデータ構造又は要素として記憶され得る。
【0021】
図1内の例示的なシステム100は、様々な方法で実装され得る。例えば、例示的なシステム100の全て又は一部分は、
図2の例示的なシステム200の部分を表してもよい。
図2に示されるように、システム200は、ネットワーク204を介してサーバ206と通信するコンピューティングデバイス202を含み得る。一実施例において、モジュール102の機能の全て又は一部分は、コンピューティングデバイス202、サーバ206、及び/又は任意の他の適切なコンピューティングシステムによって実施されてもよい。下記でより詳細に説明するように、
図1の1つ以上のモジュール102は、コンピューティングデバイス202及び/又はサーバ206のうちの少なくとも1つのプロセッサによって実行されるとき、コンピューティングデバイス202及び/又はサーバ206が重複排除ストレージ内の
イメージを修復することを可能にし得る。
【0022】
例えば、検出モジュール104は、(サーバ206に対応し得る)重複排除ストレージ内に記憶されたデータセグメント122が、破損されていることを、データセグメント122上でアルゴリズムを実行してデータセグメント122用の数値識別子を生成し、数値識別子がデータセグメント122用に以前に記憶された数値識別子と一致しないことを判定することによって検出し得る。同様に、チェックモジュール106は、バックアップ動作中、バックアップされている(例えば、コンピューティングデバイス202に対応するクライアント又は顧客からバックアップされている)
イメージの別のデータセグメント124の(コンピューティングデバイス202の付加的な要素220内の)デジタル指紋226が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメント122のデジタル指紋126と一致するかどうかチェックし得る。最後に、追加モジュール108は、バックアップされている
イメージのデータセグメント124のデジタル指紋226が破損データセグメント122のデジタル指紋126と一致すると判断するチェックモジュール106に応じて、破損データセグメント122を置換するのではなく、バックアップされている
イメージからのデータセグメント124を、破損データセグメント122をすでに含有するコンテナに追加し得る。この場合において、コンテナ内の追加データセグメント124のオフセットは、同一コンテナ内の破損データセグメント122のオフセットよりも大きくなり得る。
【0023】
コンピューティングデバイス202は、コンピュータ実行可能命令を読み出すことができる任意のタイプ又は形式のコンピューティングデバイスを概して表す。いくつかの実施形態において、コンピューティングデバイス202は、重複排除ストレージシステムに対応するサーバ206を通じて、バックアップ及び/又は復元動作を実施するクライアント又は顧客のデバイスに対応し得る。コンピューティングデバイス202の付加的な例は、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末(Personal Digital Assistant、PDA)、マルチメディアプレイヤー、組込み式システム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラスなど)、ゲーム機、上記のうちの1つ以上の変形若しくは組み合わせ、又は任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【0024】
サーバ206は、概して、更に下記で考察されるように、重複排除を通じてデータストレージを容易にすることが可能な任意のタイプ又は形式のコンピューティングデバイスを表す。サーバ206の付加的な例としては、ストレージサーバ、データベースサーバ、アプリケーションサーバ、並びに/又はあるソフトウェアアプリケーションを動作させ、かつ/又は様々なストレージ、データベース、及び/若しくはウェブサービスを提供するように構成されたウェブサーバが挙げられるが、これらに限定されない。
図2において単一体として例解されるが、サーバ206は、互いに連動して働き及び/又は動作する複数のサーバを含み及び/又は表してもよい。
【0025】
ネットワーク204は、通信又はデータ転送を容易にすることができる任意の媒体又はアーキテクチャを概して表す。一実施例において、ネットワーク204は、コンピューティングデバイス202とサーバ206との間の通信を容易にし得る。この実施例において、ネットワーク204は、無線及び/又は有線接続を使用して、通信又はデータ転送を容易にし得る。ネットワーク204の例としては、限定するものではないが、イントラネット、ワイドエリアネットワーク(Wide Area Network、WAN)、ローカルエリアネットワーク(Local Area Network、LAN)、パーソナルエリアネットワーク(Personal Area Network、PAN)、インターネット、電力線通信(Power Line Communication、PLC)、セルラネットワーク(例えば、汎欧州デジタル移動電話方式(Global System for Mobile Communications、GSM(登録商標))ネットワーク)、1つ以上の上記の部分、上記のうちの1つ以上の変形若しくは組み合わせ、又は任意の他の好適なネットワークを含む。
【0026】
多数の他のデバイス又はサブシステムが、
図1のコンピューティングシステム100及び/又は
図2のコンピューティングシステム200に接続され得る。逆に、
図1及び
図2に例解された構成要素及びデバイスの全てが、本明細書において説明及び/又は例解される実施形態を実践するために存在する必要があるわけではない。上記で参照されたデバイス及びサブシステムはまた、
図2に示すものとは異なる方法で相互接続されてもよい。コンピューティングシステム100及び200はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの1つ以上は、コンピュータ可読媒体上に、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び/又はコンピュータ制御論理とも称される)としてコード化され得る。
【0027】
「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波などの伝送タイプ媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光記憶媒体(例えば、コンパクトディスク(Compact Disk、CD)、デジタルビデオディスク(Digital Video Disk、DVD)、及びBLU−RAY(登録商標)ディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュ媒体)などの非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【0028】
図3は、重複排除ストレージ内の
イメージを修復するための例示的なコンピュータ実装方法300のフロー図である。
図3に示されるステップは、
図1のシステム100、
図2のシステム200、及び/又は上記のうちの1つ以上の変形又は組み合わせを含む、いずれの好適なコンピュータ実行可能なコード及び/又はコンピューティングシステムによって実施され得る。一実施例において、
図3に示される各ステップは、構造が複数のサブステップを含み、及び/又は複数のサブステップによって表されるアルゴリズムを表すことができ、その実施例が下記でより詳細に提供される。
【0029】
図3に例解されるように、ステップ302において、本明細書で記載された1つ以上のシステムは、重複排除ストレージ内に記憶されたデータセグメントが破損されていることを、データセグメント上でアルゴリズムを実行してデータセグメント用の数値識別子を生成し、数値識別子がデータセグメント用に以前に記憶された数値識別子と一致しないことを判定することによって検出し得る。例えば、
図2のサーバ206の一部として、検出モジュール104は、サーバ206内に記憶されたデータセグメント122が破損されていることを、データセグメント122上でアルゴリズムを実行してデータセグメント122用の数値識別子を生成し、数値識別子がデータセグメント122用に以前に記憶された数値識別子と一致しないことを判定することによって検出し得る。
【0030】
本明細書において使用される際、「データセグメント」という用語は、概して、重複排除システムが対応するデータの複数のコピーを記憶する代わりに、複数回参照し、それにより重複排除を達成し得るデータのセグメントを指す。いくつかの実施形態において、重複排除システムは、重複排除システム内で固有であり得る単一インスタンスのデータセグメントを記憶するのみであってもよく、それによって、単一インスタンスのデータセグメントを参照することによってデータセグメントの任意の更なるインスタンスが効果的に記憶されることを可能にする。加えて、本明細書において使用される際、「破損」というフレーズは、概して、重複排除システムが対応するデータセグメントにアクセスすることを防止する、任意の問題、故障、及び/又はエラーを指す。いくつかの実施例において、データセグメントは、物理的なストレージデバイス上の特定の場所に対応するハードウェア及び/又はソフトウェア障害を通じて破損され得る。
【0031】
検出モジュール104は、データセグメントが破損されていることを様々な方法で検出し得る。いくつかの実施例において、検出モジュール104は、データセグメントが破損していることを、以下の(i)チェックサムアルゴリズム、(ii)ハッシュアルゴリズム、及び/又は(iii)デジタル指紋アルゴリズムのうちの少なくとも1つをデータセグメント上で実行することによって検出し得る。これらのアルゴリズムのうちの1つ以上は、アルゴリズムが特定のデータセグメント用にその出力を生成するが、統計的な測定によれば異なるデータセグメント用に同一の出力を生成することはないという意味で、データセグメントを識別する出力を生成し得る。一実施例において、アルゴリズムからもたらされる数値識別子は、デジタル指紋126等のデータセグメントのデジタル指紋に対応し得、更に下記で考察されるように、ステップ304においてチェックモジュール106によって更に参照される。
【0032】
一実施形態において、検出モジュール104は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、データセグメントのデジタル指紋を、破損したデータセグメントを識別する指紋破損リストに追加し得る。データセグメントのデジタル指紋は、データセグメント内のいずれの変更も、統計的測定によれば同一のデジタル指紋を生成することはないという意味で、データセグメントを個別に識別し得る。より一般的には、検出モジュール104は、方法300を実施する目的で破損データセグメントのリストを維持してもよい。検出モジュール104は、リスト内に破損として検出されたデータセグメントの識別子を記憶することにより、リストを部分的に維持し得、これらの識別子は、デジタル指紋を含み得る。指紋破損リストは、更に下記で考察されるように、破損データセグメントを含有するコンテナの識別子を付加的に記憶してもよい。
【0033】
本明細書において使用される際、「コンテナ」という用語は、概して、対応するオフセットにおいて、重複排除ストレージの文脈において更に定義されたように、ハードウェア、ソフトウェア、仮想、及び/又は論理ストレージデバイス、フォルダ、ファイル、及び/又は重複排除用のデータセグメントを記憶する他のストレージコンテナを指す。いくつかの実施例において、コンテナは、下記で更に考察されるように、後に記憶されるデータセグメントが増加した、又はより大きなオフセットで記憶されるように、回転又は時系列的様式でデータセグメントを記憶し得る。更なる実施例において、重複排除システムは、
イメージが任意の他のコンテナ内に以前に記憶されていなかったデータセグメントを含有するとき、それぞれの
イメージ用のコンテナを作り出してもよい(すなわち、任意の他のコンテナ内にデータセグメントが欠如すると、新たなコンテナを生成する必要性が出てくる)。特定の実施例において、コンテナは、データセグメントを記憶するために重複排除ストレージシステムによって確立されたファイルに対応する。付加的に、いくつかの実施例において、検出モジュール104は、重複排除ストレージ内に記憶されたデータセグメントが破損されていることの検出に応じて、真として設定された破損フラグを有するデータセグメントをマーキングしてもよい。本明細書において使用される際、「フラグ」という用語は、概して、対応するデータセグメントが破損しているかどうかをマーキングする目的で、真又は偽の区別をする任意のビット又はビットシーケンスを指す。
【0034】
ステップ304において、本明細書に記載の1つ以上のシステムは、バックアップ動作中、バックアップされている
イメージのデータセグメントのデジタル指紋が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶されている破損データセグメントのデジタル指紋と一致するかどうかチェックし得る。例えば、チェックモジュール106は、
図2のサーバ206の一部として、バックアップ動作中、バックアップされている
イメージのデータセグメント124のデジタル指紋226が、破損の前に取得され、かつサーバ206内にすでに記憶されている破損データセグメント122のデジタル指紋126と一致するかどうかチェックし得る。
【0035】
チェックモジュール106は、2つのデジタル指紋が一致するかどうか様々な方法でチェックし得る。いくつかの実施例において、チェックモジュール106は、任意のビットが2つのデジタル指紋間で異なるかどうか識別するために、ビット比較を実施してもよい。付加的に、更なる実施例において、チェックモジュール106は、重複排除ストレージ内に以前に記憶されたデジタル指紋126を読み出してもよい。デジタル指紋126は、データセグメント122の破損の前の時点で生成又はコンピューティングされてもよい。したがって、デジタル指紋126は、データセグメント122の非破損コンテンツを識別し得る。バックアップ動作の一部としてアップロードされているプロセスにおいて、デジタル指紋126がデータセグメント124のデジタル指紋226と一致するかどうかチェックすることによって、チェックモジュール106は、コンピューティングデバイス202等の1つ以上のクライアントデバイスがデータセグメント122の非破損バージョン又はインスタンスを付加的に含有するかどうか効果的に判定し得る。
【0036】
より具体的な実施例において、チェックモジュール106は、指紋破損リストをチェックして、バックアップされている
イメージのデータセグメント124のデジタル指紋226が、破損の前に取得され、かつ重複排除ストレージ内にすでに記憶される破損データセグメント122のデジタル指紋126と一致することを判定し得る(すなわち、デジタル指紋226が指紋破損リスト内に記憶されたデジタル指紋126のインスタンスと一致するかどうかチェックし得る)。換言すると、チェックモジュール106は、バックアップ動作中、バックアップされている
イメージが重複排除サーバで破損として以前に検出され、かつ指紋破損リスト上で識別された任意の1つ以上のデータセグメントの非破損バージョンを含有するかどうかチェックし得る。換言すると、バックアップ動作において入来
イメージによって参照される1つの、いくつかの、又は全てのデータセグメントに関して、チェックモジュール106は、データセグメントがデジタル指紋と一致するかどうかチェックして、重複排除ストレージ内に以前に記憶され、かつ破損したデータセグメントを識別し得る。下記で更に考察されるように、これらのデータセグメントの非破損バージョンに関して、バックアップ手順の一部として、又はバックアップ手順に応じて、入来
イメージを自動的に、規定どおりに、又は周期的に走査若しくは検索することによって、モジュール102は、データセグメントの非破損バージョンを利用して、重複排除ストレージ内の対応する
イメージを自動的に修復し得る。
【0037】
ステップ306において、本明細書に記載の1つ以上のシステムは、バックアップされている
イメージのデータセグメントのデジタル指紋が破損データセグメントのデジタル指紋と一致するという判定に応じて、破損データセグメントを置換するのではなく、バックアップされている
イメージからのデータセグメントを、コンテナ内の追加データセグメントのオフセットが同一コンテナ内の破損データセグメントのオフセットよりも大きくなるように、破損データセグメントをすでに含有するコンテナに追加する。例えば、
図2のサーバ206の一部として、追加モジュール108は、バックアップされている
イメージのデータセグメント124のデジタル指紋226が破損データセグメント122のデジタル指紋126と一致すると判断するチェックモジュール106に応じて、破損データセグメント122を置換するのではなく、バックアップされている
イメージからのデータセグメント124を、破損データセグメント122をすでに含有するコンテナに追加し得る。
【0038】
本明細書において使用される際、「追加する」というフレーズは、概して、コンテナ内に以前に記憶されたデータセグメントの破損バージョンを置換又は上書きするのではなく、端部又は現在のコンテナ内のオフセットで、データセグメントをコンテナに追加することを指す。一般に、コンテナは、後のデータセグメントの書き込みが、コンテナ内のより大きなオフセットでデータセグメントが記憶されることをもたらす回転的又は時系列的様式で、データセグメントをそれぞれのオフセットで重複排除システム内に記憶し得る。その上、一般に、本明細書において使用される際、「コンテナ」という用語は、概して、上記で考察されるように、それぞれのオフセットで重複排除システム内にデータセグメントを記憶するように構成された物理的、論理的、及び/又は他のストレージデバイス若しくは場所を指す。
【0039】
追加モジュール108は、データセグメントの非破損インスタンスを様々な方法で追加し得る。いくつかの実施例において、追加モジュール108は、破損データセグメントを参照する少なくとも1つの
イメージを効果的に修復する様式で、バックアップされている
イメージからのデータセグメントをコンテナに追加してもよい。本明細書において使用される際、「効果的に修復する」というフレーズは、概して、(例えば、データセグメントを参照するディスク
イメージを復元するための復元プロセスの一部などの)データセグメントにアクセスしようとする試行に応じて、以前に記憶された破損バージョンのデータセグメントではなく、非破損バージョンのデータセグメントを提供するように構成された重複排除システム内のデータセグメントを追加し、それによってデータセグメントの破損に関連付けられた問題を克服することを指す。例えば、提供モジュール110は、破損データセグメントを参照する
イメージを復元するための復元動作中、より大きなオフセットを有する追加データセグメントに基づいて、破損データセグメントではなく追加データセグメントを提供してもよい。
【0040】
より具体的な実施例において、提供モジュール110は、同一のデジタル指紋を有する複数のデータセグメント間で、コンテナ内の最大のオフセットを有するデータセグメントを選択するように構成された読み取り動作に従って、破損データセグメント122ではなくデータセグメント124を提供し得る。提供モジュール110は、コンテナ内のオフセットによってコンテナ内のデータセグメントをソートし得、それによって、ソートに基づきより大きなオフセットを有するデータセグメントを提供し得る。より一般的には、提供モジュール110は、上記の概略のように、破損の前のデータセグメントのデジタル指紋と一致するデジタル指紋を有するコンテナ内のデータセグメントを検索するように構成され得る。いくつかの実施例において、提供モジュール110は、適合デジタル指紋を有する複数のデータセグメントを識別し得る。これらの実施例において、提供モジュール110は、コンテナ内で最大のオフセットを有するデータセグメントを選択するように構成してもよい。付加的に、又は代替的に、提供モジュール110は、下記で更に考察されるように、データセグメントに関して対応する破損フラグを参照することによる等、破損として検出されないデータセグメントを単に選択するように構成され得る。他の実施例において、提供モジュール110は、適合デジタル指紋を有する最初に見出されたデータセグメントがコンテナ内で最大のオフセットを有することを確実とする方法で、適合デジタル指紋を有するデータセグメント用のコンテナを単に検索してもよい。換言すると、提供モジュール110は、より高いオフセットからより低いオフセットの方向で適合デジタル指紋を有するデータセグメント用のコンテナを検索し得る。
【0041】
図4は、データセグメントのうちの1つがすでに破損した後、コンテナ402及びコンテナ404が
イメージ406によって参照された様々なデータセグメントを記憶する方法についての例解
図400を示す。具体的には、コンテナ402は、2つのデータセグメント、データセグメント2内のデータセグメント1を含有する。この図の実施例において、これらコンテナはまた、データセグメントが破損しているかどうか特定する各データセグメント用のフラグを記憶する。この実施例においては、データセグメント毎にフラグが記憶されているが、上記の概略のように、他の実施例では、検出されたデータセグメントが破損している場合にのみ、フラグがデータセグメント用に挿入されてもよい。
図4に更に示されるように、この実施例において、重複排除ストレージは、
イメージ406と、コンテナ1内に記憶されたデータセグメント1と、コンテナ1内に記憶されたデータセグメント2と、コンテナ2内に記憶されたデータセグメント3と、を形成する3つのデータセグメントを参照することによって
イメージ406の復元を可能にする。とりわけ、上記で考察されたように、破損し、したがって真として設定された対応する破損フラグを有するコンテナ402内に記憶されたデータセグメント1を除いて、コンテナ402及び404内に記憶された全てのデータセグメントは、非破損である。
【0042】
図5は、下記で更に考察されるように、破損データセグメントを修復した後、コンテナ402及びコンテナ404が
イメージ406によって参照されたデータセグメントを記憶する方法を更に例解する例解
図500を示す。具体的には、
図5は、データセグメント1の非破損バージョンがコンテナ402に追加されること(例えば、端部で又はコンテナ402用の現在の書き込み場所で)を更に示す。新たに追加された非破損バージョンのデータセグメント1は破損されていないので、対応する破損フラグは、真として設定されていない。したがって、
イメージ406を復元するための復元動作中、提供モジュール110は、破損し、かつ以前に記憶されたデータセグメント1ではなく、追加データセグメント1を提供することにより破損されていないコンテナ402からのデータセグメント1のバージョンを提供してもよい。提供モジュール110は、上記の概略のような任意の方法で、データセグメントの非破損バージョンを提供し得る。例えば、提供モジュール110は、より高いオフセットからより低いオフセットの方向で、コンテナ402内の適合データセグメントを検索し得、それによって、検索内で非破損バージョンのデータセグメントに最初に遭遇する。提供モジュール110はまた、真と設定された破損フラグを有していないコンテナ402内の第1の適合データセグメントを(例えば、より高いオフセットからより低いオフセットの方向において)検索し得る。他の例において、上記で更に考察されたように、提供モジュール110は、コンテナ402内の全ての適合データセグメントを識別し得、次いで最も高いオフセットを有する、及び/又は偽として設定された破損フラグを有するデータセグメントを選択し得る。
【0043】
付加的に、いくつかの実施例において、追加モジュール108は、指紋破損リスト内の破損データセグメントのためのコンテナの識別子を少なくとも部分的に参照することによって、異なるコンテナではなく、破損データセグメントをすでに含有するコンテナにデータセグメントを追加してもよい。換言すると、検出モジュール104は、破損データセグメントのデジタル指紋及び/又は破損データセグメントが記憶されているコンテナの識別子のうちの一方又は両方を指紋破損リストに追加してもよい。追加モジュール108は、破損データセグメントがすでに記憶されている場所を識別する、指紋破損リスト内に記憶されるコンテナの識別子を単に参照することによって、非破損データセグメントをどのコンテナに追加するかを判断し得、それによって追加モジュール108が非破損データセグメントを同一のコンテナに追加することを可能にする。
【0044】
上記の考察は、
図3の方法300を参照して開示されたシステム及び方法の実施形態の概観を提供する。付加的に、下記の考察は、開示されたシステム及び方法の具体的な実施形態の詳細のより具体的な概観を提供する。開示されたシステム及び方法は、重複排除システムにおいて、新規のバックアップからの良好なデータセグメントにより
イメージ破損を自動的に修正するための機構を提示する。重複排除システムにおいて、1つの破損セグメントが、多くのデータ
イメージの破損につながる可能性があり、そのためVERITAS MEDIA SERVER DEDUPLICATION POOL等のストレージシステムにおいて、オンラインチェック機構が、破損データセグメントが将来のバックアップによって参照されることを防止するために導入されてもよい。それにも拘らず、これらの実施例において、重複排除システムは、新たなバックアップからのデータセグメントで破損した
イメージを自動的に修正するための機構を欠くことがある。ほどんどの場合、良好なデータセグメントは、クライアント側に依然として存在し、新たなバックアップで重複排除サーバに来る。開示されたシステム及び方法は、入来する良好なデータセグメントで破損した
イメージを自動的に修正し得る。
【0045】
自己修復機構は、下記の3つの動作のうちの1つ以上を含み得る。巡回冗長性チェック等のオンライン又は破損検出プロセスは、記憶されたデータセグメントのチェックサムを計算し、以前に記憶されたチェックサム(すなわち、データセグメントの破損の前に計算された以前に記憶されたチェックサム)と比較してもよい。不一致がある場合、データセグメントは、真として設定された破損フラグでマーキングされる。破損指紋は、そのコンテナ識別子と共に指紋破損リストに追加することができる。バックアップ動作中、クエリが実施されて、アップロードされている
イメージによって参照される非破損データセグメントのための1つ以上のデジタル指紋が、指紋破損リスト内に記憶された1つ以上のデジタル指紋と一致するかどうかチェックする。指紋破損リスト内に一致が見出された場合、非破損データセグメントが、アップロードされ、同一コンテナに追加される。付加的に、データセグメントの指紋は、指紋破損リストから除去されてもよい。指紋が指紋破損リスト内に見出されない場合、デジタル指紋は、通常の重複排除指紋インデックス(例えば、以前に確立されたコンテナ)に対してチェックされ、一致しない場合、次いで新たなコンテナが生成され、データセグメントは新たなコンテナ内に記憶されてもよい。
イメージ復元動作中、同一のデジタル指紋を有するコンテナ内に1つ以上のデータセグメントがある場合、次いで復元動作は、コンテナ内に最大のオフセットを有するデータセグメントを使用して、復元を実施し得る。
【0046】
破損データセグメントのコンテンツを置換するのではなく非破損データセグメントを同一のコンテナに追加すること、及び/又は非破損データセグメントを異なるコンテナに書き込むことで、これらの代替的な解決策に関連付けられた問題を回避する。具体的には、破損データセグメントのコンテンツを置換する場合、データセグメントは、静音ハードディスクセクタ等の物理的ストレージの一部の故障に起因して破損する可能性がある。したがって、データセグメントは、非破損データセグメントを同じ場所にコピーした後に、再度破損し得る。付加的に、破損データセグメントのコンテンツを置換することが、同一のオリジナルデータセグメントのコンテンツを使用しているにもかかわらず、同一サイズの圧縮データを必ずしも生成することがない、Lempel−Ziv−Oberhumer圧縮等の、圧縮方式に起因して不可能となる可能性がある。更に、同一のコンテナではなく異なるコンテナに非破損データセグメントを書き込むことは、破損データセグメントを参照する
イメージのうちのいくつか又は全ての修正をもたらし得る。同様に、非破損データセグメントを異なるコンテナに書き込むことは、対応する
イメージ参照を異なる(例えば、新たな)コンテナに追加することをもたらし得る。対応する費用は、法外なものとなり得る。
【0047】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び/又は例解される各ブロック図の構成要素、フローチャートのステップ、動作、及び/又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア(又はこれらの任意の組み合わせ)構成を使用して、個々に、及び/又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例示的であると見なされるべきである。
【0048】
いくつかの実施例において、
図1の例示的なシステム100の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【0049】
種々の実施形態において、
図1の例示的なシステム100の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナント機能を容易にし得る。換言すると、本明細書において説明されるモジュールは、本明細書において説明される機能のうちの1つ以上に対するマルチテナト機能を容易にするように、コンピューティングシステム(例えば、サーバ)を構成し得る。例えば、本明細書において説明されるモジュールのうちの1つ以上は、2つ以上のクライアント(例えば、顧客)が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客(即ち、テナント)間でアプリケーション、オペレーティングシステム、処理システム、及び/又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの1つ以上はまた、ある顧客が別の顧客のデータ及び/又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び/又は構成情報を分割し得る。
【0050】
種々の実施形態によれば、
図1の例示的なシステム100の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び/又はデータは、仮想マシン内に存在し得る、及び/又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ(例えば、ハイパーバイザ)によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。
【0051】
いくつかの実施例において、
図1の例示的なシステム100の全て又は一部分は、モバイルコンピューティング環境の一部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス(例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス)、上記のうちの1つ以上の変形又は組み合わせ、若しくは任意の他の好適なモバイルコンピューティングデバイスを含む、広範なモバイルコンピューティングデバイスによって実装され得る。いくつかの実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に1つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する(例えば、承認されたアプリケーションストアのみから得る)能力などを制限する、制限されたプラットフォームを含む、1つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
【0052】
本明細書において説明及び/又は例解されるステップのプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び/又は説明されるステップは、特定の順序で図示又は考察されるが、これらのステップは、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び/又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解されるステップのうちの1つ以上を省略し得るか、又は開示されるものに加えて追加のステップを含み得る。
【0053】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び/又は例解されているが、これらの例示的な実施形態のうちの1つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するモジュールを使用して、実装され得る。これらのモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。いくつかの実施形態において、これらのモジュールは、本明細書において開示される例示的な実施形態のうちの1つ以上を実施するように、コンピューティングシステムを構成し得る。
【0054】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、包括的であること、又は開示されるいかなる正確な形態にも限定されることを意図されない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【0055】
別途記載されない限り、「〜に接続される(connected to)」及び「〜に連結される(coupled to)」という用語(及びそれらの派生語)は、本明細書及び請求項において使用される際、直接的及び間接的(即ち、他の要素又は構成要素を介した)接続の両方を許容するとして解釈されるものとする。加えて、「a」又は「an」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも1つ(at least one of)」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む(including)」及び「有する(having)」という用語(及びそれらの派生語)は、本明細書及び請求項において使用される際、「備える(comprising)」という語と同義的であり、かつ同じ意味を有する。