(57)【特許請求の範囲】
【請求項１】
重複排除データシステムから非参照データセグメントを除去するためのコンピュータによって実施される方法であって、前記方法の少なくとも一部は少なくとも１個のプロセッサを含むコンピューティングデバイスによって実行される、方法であり、
複数のデータオブジェクトを含む重複排除データシステムを特定するステップであって、前記重複排除データシステムは、前記データオブジェクトによって参照される各データセグメントのインスタンスを１つだけ記憶することによって冗長データを減らす、重複排除データシステムを特定するステップと、
前記重複排除データシステム内の前記データオブジェクトを複数のデータオブジェクトグループに分割するステップと、
前記重複排除データシステム内のデータオブジェクトによって参照されていなかったデータセグメントを除去した前のガーベッジコレクション操作の後に変更された、少なくとも１つのデータオブジェクトグループを前記データオブジェクトグループ内で特定するステップと、
前記変更されたデータオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含む、前記重複排除データシステム内の少なくとも１つのコンテナを特定するステップと、
特定したコンテナごとに、前記重複排除データシステム内のデータオブジェクトによって参照されていないデータセグメントを前記特定したコンテナから除去するステップと
を含む、コンピュータによって実施される方法。
【請求項２】
前記変更されたデータオブジェクトグループを特定するために前記データオブジェクトグループをモニタするステップが、
追加されたデータオブジェクト、
除去されたデータオブジェクト、
変更されたデータオブジェクト
のうちの少なくとも１つを有するデータオブジェクトグループを特定するステップを含む、請求項１に記載のコンピュータによって実施される方法。
【請求項３】
前記データオブジェクトを前記複数のデータオブジェクトグループに分割するステップが、
前記複数のデータオブジェクトを含む複数のバックアップを特定するステップと、
前記複数のバックアップからの少なくとも１つのバックアップを各データオブジェクトグループに追加するステップと
を含む、請求項１に記載のコンピュータによって実施される方法。
【請求項４】
前記特定したコンテナから非参照データセグメントを除去するステップが、
変更されたデータオブジェクトグループごとに、前記特定したコンテナ内の各参照データセグメントを印付けするステップと、
前記特定したコンテナから印付けされていないデータセグメントを除去するステップと
を含む、請求項１に記載のコンピュータによって実施される方法。
【請求項５】
前記特定したコンテナ内の各参照データセグメントを印付けするステップが、変更されたデータオブジェクトグループごとに、前記特定したコンテナ内の参照データセグメントのマップを作成するステップを含む、請求項４に記載のコンピュータによって実施される方法。
【請求項６】
前記特定したコンテナ内の参照データセグメントの各マップを、前記特定したコンテナに関する包括的なマップにマージするステップをさらに含む、請求項５に記載のコンピュータによって実施される方法。
【請求項７】
前記特定したコンテナから前記印付けされていないデータセグメントを除去するステップは、少なくとも１つの変更されたデータオブジェクトグループが、前記特定したコンテナ内の影響を受けるデータセグメントを潜在的に非参照化する変更を経験したと判定するステップを含む、請求項４に記載のコンピュータによって実施される方法。
【請求項８】
前記特定したコンテナ内の前記影響を受けるデータセグメントを潜在的に非参照化する前記変更が、
前記影響を受けるデータセグメントを潜在的に非参照化する、前記変更されるデータオブジェクトグループからデータオブジェクトが削除されること、
前記影響を受けるデータセグメントを潜在的に非参照化する、前記変更されるデータオブジェクトグループ内のデータオブジェクトが修正されること
のうちの少なくとも１つを含む、請求項７に記載のコンピュータによって実施される方法。
【請求項９】
前記重複排除データシステム内の前記データオブジェクトによって参照されていないデータセグメントを前記特定したコンテナから除去するステップが、非参照データセグメントがないかどうか、各特定したコンテナだけを検査するステップを含む、請求項１に記載のコンピュータによって実施される方法。
【請求項１０】
非参照データセグメントがないかどうか、各特定したコンテナだけを検査するステップが、少なくとも１つのデータセグメントを潜在的に非参照化した少なくとも１回の変更がないかどうか、各特定したコンテナだけを検査するステップを含む、請求項９に記載のコンピュータによって実施される方法。
【請求項１１】
前記データオブジェクトを前記複数のデータオブジェクトグループに分割するステップが、関係するデータオブジェクトを少なくとも１つのデータオブジェクトグループにまとめるステップを含み、前記関係するデータオブジェクトは提携して変更される可能性が高い、請求項１に記載のコンピュータによって実施される方法。
【請求項１２】
重複排除データシステムから非参照データセグメントを除去するためのシステムであって、
複数のデータオブジェクトを含む重複排除データシステムを特定するようにプログラムされる特定モジュールであって、前記重複排除データシステムは、前記データオブジェクトによって参照される各データセグメントのインスタンスを１つだけ記憶することによって冗長データを減らす、特定モジュールと、
前記重複排除データシステム内の前記データオブジェクトを複数のデータオブジェクトグループに分割するようにプログラムされるグループ化モジュールと、
前記重複排除データシステム内のデータオブジェクトによって参照されていなかったデータセグメントを除去した前のガーベッジコレクション操作の後に変更された、少なくとも１つのデータオブジェクトグループを前記データオブジェクトグループ内で特定するようにプログラムされるモニタリングモジュールと、
前記変更されたデータオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含む、前記重複排除データシステム内の少なくとも１つのコンテナを特定するようにプログラムされるターゲティングモジュールと、
特定したコンテナごとに、前記重複排除データシステム内のデータオブジェクトによって参照されていないデータセグメントを前記特定したコンテナから除去するようにプログラムされるマークアンドスイープモジュールと、
前記特定モジュール、前記グループ化モジュール、前記モニタリングモジュール、前記ターゲティングモジュール、および前記マークアンドスイープモジュールを実行するように構成される少なくとも１個のプロセッサと
を含む、システム。
【請求項１３】
前記モニタリングモジュールが、
追加されたデータオブジェクト、
除去されたデータオブジェクト、
変更されたデータオブジェクト
のうちの少なくとも１つを有するデータオブジェクトグループを特定することにより、前記変更されたデータオブジェクトグループを特定するために前記データオブジェクトグループをモニタするようにプログラムされる、請求項１２に記載のシステム。
【請求項１４】
前記グループ化モジュールが、
前記複数のデータオブジェクトを含む複数のバックアップを特定し、
前記複数のバックアップからの少なくとも１つのバックアップを各データオブジェクトグループに追加する
ことにより、前記データオブジェクトを前記複数のデータオブジェクトグループに分割するようにプログラムされる、請求項１２に記載のシステム。
【請求項１５】
前記マークアンドスイープモジュールが、
変更されたデータオブジェクトグループごとに、前記特定したコンテナ内の各参照データセグメントを印付けし、
前記特定したコンテナから印付けされていないデータセグメントを除去する
ことにより、前記特定したコンテナから非参照データセグメントを除去するようにプログラムされる、請求項１２に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
重複排除データシステムは、冗長なデータパターンを認識することにより、ファイルを記憶するために必要な空き容量をしばしば減らすことができる。例えば重複排除データシステムは、ファイルをデータセグメントに分割し、固有のデータセグメントだけを記憶することにより、類似ファイルを記憶するために必要な空き容量を減らすことができる。この例では、それぞれの重複排除ファイルは、単純にそのファイルを構成するデータセグメントの一覧からなることができる。
【０００２】
従来の重複排除データシステムはファイルを記憶するために必要な空き容量を減らすことができるが、重複排除データを管理するためにそのような従来型システムが使用するメカニズムは、不所望の制限を示す場合がある。例えば、２つ以上のファイルが任意の所与のデータセグメントを参照する場合があるので、あるファイルを削除するとき、そのファイルを構成するデータセグメントを単純に全て除去することはできない。データセグメントを安全に削除するために、重複排除データシステムは参照データセグメントと非参照データセグメントとを区別しなければならない。
【０００３】
一部の例では従来の重複排除データシステムは、データセグメントを早まって除去しないことを確実にするために相互参照システムを使用することができる。例えば、従来の重複排除データシステム内の各ファイルは、そのファイルを構成するデータセグメントの一覧を含むことができる。同様に、重複排除データシステム内の各データセグメントは、そのデータセグメントを参照するシステム内の各ファイルを特定するリストを保持することができる。この例では、重複排除データシステムは、ファイルおよびデータセグメントの両方が保持するリストを使用して、システムから除去することができる非参照データセグメント（すなわち重複排除データシステム内のファイルのどれもがもはや参照しないデータセグメント）を特定することができる。
【０００４】
不都合なことに、多くの従来型の重複排除データシステムが使用する相互参照システムは、いくつかの不具合を抱える。例えば、従来の重複排除データシステム内のファイルが更新されるとき、システムはそのファイルが保持する参照リストと、そのファイルが参照する各データセグメントが保持する参照リストとの両方を更新しなければならないことがある。２つの参照リストを作成して更新するプロセスは、時間がかかるだけでなく、リソースを集約的に用いる可能性がある。
【０００５】
他の例では、従来の重複排除データシステムは、データセグメントを早まって除去しないことを確実にするためにマークアンドスイープシステムを使用することができる。例えば重複排除データシステムは、各データセグメントを検査してデータセグメントが重複排除データシステム内の任意のファイルによって参照されているかどうかを調べることができる。この例では、マークアンドスイープシステムがそのデータセグメントを含むファイルを見つけると、マークアンドスイープシステムは、そのデータセグメントを参照されているものとして印付けすることができる。次いで、マークアンドスイープシステムは印付けされていないデータセグメントについて重複排除データシステムをスイープし、印付けされていないデータセグメントを削除することができる。不都合なことに、各データセグメントを検査する力ずくのアプローチは、やはり時間がかかり、リソースを集約的に用いる可能性がある。したがって本開示は、重複排除データシステム内の非参照データセグメントを効率的に印付けし、スイープする必要性を確認する。
【発明の概要】
【課題を解決するための手段】
【０００６】
以下でより詳細に説明するように、本開示は一般に、データをグループに分割し、変更され、その結果非参照データセグメントを含み得るグループにマークアンドスイープ操作を集中させることにより、重複排除データシステムから非参照データセグメントを効率的に除去するためのシステムおよび方法に関する。一例では、本明細書に記載する様々なシステムのうちの１つまたは複数は、１）複数のデータオブジェクトを含む重複排除データシステムを特定し、２）その重複排除データシステム内のデータオブジェクトを複数のデータオブジェクトグループに分割し、３）重複排除データシステム内のデータオブジェクトによって参照されていなかったデータセグメントを除去した前のガーベッジコレクション操作の後に変更された、少なくとも１つのデータオブジェクトグループをそれらのデータオブジェクトグループ内で特定し、４）変更されたデータオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含む、重複排除データシステム内の少なくとも１つのコンテナを特定し、特定したコンテナごとに、５）重複排除データシステム内のデータオブジェクトによって参照されていないデータセグメントを特定したコンテナから除去することによりこの作業を達成することができる。
【０００７】
重複排除データシステム内のデータオブジェクトをデータオブジェクトグループに分割することは、任意の適切な方法または基準を含むことができる。一部の例では、データオブジェクトをデータオブジェクトグループに分割することは、そのデータオブジェクトを含む複数のバックアップを特定し、それらのバックアップの１つまたは複数を各データグループに追加することを含むことができる。
【０００８】
前のガーベッジコレクション操作の後に変更された１つまたは複数のデータオブジェクトグループを特定することは、データオブジェクトグループに追加されるデータオブジェクト、データオブジェクトグループから除去されるデータオブジェクト、および／またはデータオブジェクトグループ内で変更されたデータオブジェクトを含む、様々な変更を特定することを含むことができる。変更されたデータオブジェクトグループを特定することは、変更がないかどうか複数のデータオブジェクトグループをモニタすることなど、様々なステップを含むことができる。
【０００９】
一部の例では、特定したコンテナから非参照データセグメントを除去することは、非参照データセグメントがないかどうか、特定したコンテナだけを検査することを含むことができる。これらの例では、非参照データセグメントがないかどうか特定したコンテナだけを検査することは、少なくとも１つのデータセグメントを潜在的に非参照化した変更がないかどうか、特定したコンテナだけを検査することを伴うことができる。
【００１０】
特定したコンテナから非参照データセグメントを除去することは、任意の適切な方法で行うことができる。例えば、特定したコンテナから非参照データセグメントを除去することは、変更されたデータオブジェクトグループごとに、特定したコンテナ内の各非参照データセグメントを印付けし、特定したコンテナから印付けされていないデータセグメントを除去することを含むことができる。
【００１１】
一部の例では、変更されたデータグループごとに、特定したコンテナ内の各参照データセグメントを印付けすることは、変更されたデータオブジェクトグループごとに、特定したコンテナ内の参照データセグメントのマップを作成することを含むことができる。ある例では、変更されたデータグループごとに、特定したコンテナ内の各参照データセグメントを印付けすることは、特定したコンテナ内の参照データセグメントの各マップを、特定したコンテナに関する包括的なマップにマージすることをさらに含むことができる。
【００１２】
一部の実施形態では、特定したコンテナから印付けされていないデータセグメントを除去することは、少なくとも１つの変更されたデータオブジェクトグループが、特定したコンテナ内の影響を受けるデータセグメントを潜在的に非参照化する変更を経験したと判定することを含むことができる。影響を受けるデータセグメントを潜在的に非参照化する変更には、変更されるデータオブジェクトグループからデータオブジェクトが削除されること、および／または変更されるデータオブジェクトグループ内のデータオブジェクトが修正されることなど、様々な変更が含まれ得る。
【００１３】
以下に説明するように、非参照データセグメントをもたらし得る変更を経たデータオブジェクトグループからのデータセグメントを含むコンテナにマークアンドスイープ手続きを集中させることにより、本明細書に記載するシステムおよび方法は、非参照データセグメントを捜し出し、削除するために必要なコンピューティングリソースの量を効果的に減らすことができる。
【００１４】
本明細書に記載する全般的な原理に従い、上述の実施形態のうちの任意の実施形態の諸特徴を互いに組み合わせて使用することができる。以下の詳細な説明を添付図面および特許請求の範囲と併せて読むとき、これらのおよび他の実施形態、特徴、および利点がより完全に理解される。
【００１５】
添付図面はいくつかの例示的実施形態を示し、本明細書の一部である。以下の説明とともに、これらの図面は本開示の様々な原理を例証し説明する。
【００１６】
図面全体を通して、同一の参照文字および説明は、必ずしも全く同じとは限らないが同様の要素を示す。本明細書に記載する例示的実施形態は様々な修正および代替形態を許すが、特定の実施形態を例として図面に示し、本明細書で詳しく説明する。ただし、本明細書に記載する例示的実施形態が、開示する特定の形態に限定されることは意図しない。むしろ、本開示は特許請求の範囲に含まれるあらゆる修正形態、等価物、および代替物を範囲に含む。
【図面の簡単な説明】
【００１７】
【図１】重複排除データシステムから非参照データセグメントを除去するための例示的システムのブロック図を示す。
【図２】重複排除データシステムから非参照データセグメントを除去するための例示的システムのブロック図を示す。
【図３】重複排除データシステムから非参照データセグメントを除去するための例示的方法の流れ図を示す。
【図４】例示的な重複排除データシステムのブロック図を示す。
【図５】例示的な重複排除データシステムのブロック図を示す。
【図６】例示的な重複排除データシステムのブロック図を示す。
【図７】本明細書に記載しかつ／または図示する実施形態の１つもしくは複数を実装することができる、例示的コンピューティングシステムのブロック図を示す。
【図８】本明細書に記載しかつ／または図示する実施形態の１つもしくは複数を実装することができる、例示的コンピューティングネットワークのブロック図を示す。
【発明を実施するための形態】
【００１８】
以下でより詳細に説明するように、本開示は一般に、重複排除データシステムから非参照データセグメントを除去するためのシステムおよび方法に関する。本明細書で使用するとき、表現「重複排除データシステム」は、各データインスタンスをことによると複数回参照する、データのインスタンス（例えばデータセグメント）を１つだけ記憶することによって冗長データを減らす記憶システムを一般に指す。重複排除データシステムの例には、ＳＹＭＡＮＴＥＣのＮＥＴＢＡＣＫＵＰ  ＰＵＲＥＤＩＳＫが含まれ得る。以下でより詳細に説明するように、単一のデータインスタンスは、重複排除データシステム内の単一のデータオブジェクト（例えばファイル）、または複数のデータオブジェクトによって参照され得る。
【００１９】
図１〜図２を参照して、以下の内容は、重複排除データシステムから非参照データセグメントを除去するための例示的システムの詳細な説明を提供する。図３〜図６に関連して、コンピュータによって実施される対応する方法についての詳細な説明も行う。さらに、図７および図８のそれぞれに関連して、本明細書に記載する実施形態の１つまたは複数を実装することができる例示的コンピューティングシステムおよびネットワークアーキテクチャについての詳細な説明を行う。
【００２０】
図１は、重複排除データシステムから非参照データセグメントを除去するための例示的システム１００のブロック図である。この図に示すように、例示的システム１００は、１つまたは複数のタスクを実行するための１つもしくは複数のモジュール１０２を含むことができる。例えば、および以下でより詳細に説明するように、例示的システム１００は、複数のデータオブジェクトを含む重複排除データシステムを特定するようにプログラムされる特定モジュール１０４を含むことができる。例示的システム１００は、重複排除データシステム内のデータオブジェクトを複数のデータオブジェクトグループに分割するようにプログラムされるグループ化モジュール１０６も含むことができる。
【００２１】
さらに、および以下でより詳細に説明するように、例示的システム１００は、重複排除データシステム内のデータオブジェクトによって参照されていなかったデータセグメントを除去した前のガーベッジコレクション操作の後に変更された、少なくとも１つのデータオブジェクトグループをデータオブジェクトグループ内で特定するようにプログラムされるモニタリングモジュール１０８を含むことができる。例示的システム１００は、変更されたデータオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含む、重複排除データシステム内の少なくとも１つのコンテナを特定するようにプログラムされるターゲティングモジュール１１０も含むことができる。例示的システム１００は、重複排除データシステム内のデータオブジェクトによって参照されていないデータセグメントを、特定した各コンテナから除去するようにプログラムされるマークアンドスイープモジュール１１２をさらに含むことができる。別々の要素として図示したが、図１のモジュール１０２の１つまたは複数は、単一のモジュールまたはアプリケーションの一部を表すことができる。
【００２２】
特定の実施形態では、図１のモジュール１０２の１つまたは複数は、コンピューティングデバイスによって実行されるとき、そのコンピューティングデバイスに１つまたは複数のタスクを実行させることができる、１つまたは複数のソフトウェアアプリケーションもしくはプログラムを表し得る。例えば、以下でより詳細に説明するように、モジュール１０２の１つまたは複数は、図２のコンピューティングシステム２０２、図７のコンピューティングシステム７１０、および／または図８の例示的ネットワークアーキテクチャ８００の一部など、１台または複数台のコンピューティングデバイス上に記憶され、実行されるように構成されるソフトウェアモジュールを表すことができる。図１のモジュール１０２の１つまたは複数は、１つまたは複数のタスクを実行するように構成される１台または複数台の専用コンピュータの全てもしくは一部を表すこともできる。
【００２３】
図１に示すように、例示的システム１００は、重複排除データシステム１２０も含むことができる。重複排除データシステム１２０は、単一の記憶システムもしくはコンピューティングデバイスまたは複数の記憶システムもしくはコンピューティングデバイスの一部を表すことができる。例えば、重複排除データシステム１２０は、図２のコンピューティングシステム２０２の一部、図７のコンピューティングシステム７１０、および／または図８の例示的ネットワークアーキテクチャ８００の一部を表すことができる。あるいは、図１の重複排除データシステム１２０は、図７のコンピューティングシステム７１０、および／または図８の例示的ネットワークアーキテクチャ８００の一部などのコンピューティングデバイスによってアクセスできる、１つまたは複数の物理的に別個の装置を表すことができる。
【００２４】
図１の例示的システム１００は、様々な方法で導入することができる。例えば、例示的システム１００の全てまたは一部が、図２の例示的システム２００の一部を表すことができる。図２に示すように、システム２００は、図１の重複排除データシステム１２０を含むコンピューティングシステム２０２を含むことができる。一実施形態では、および以下でより詳細に説明するように、図１のモジュール１０２は、１）複数のデータオブジェクト（データオブジェクト２２２など）を含む重複排除データシステム（重複排除システム１２０など）を特定し、２）その重複排除データシステム内のデータオブジェクトを複数のデータオブジェクトグループに分割し、３）重複排除データシステム内のデータオブジェクトによって参照されていなかったデータセグメントを除去した前のガーベッジコレクション操作の後に変更された、少なくとも１つのデータオブジェクトグループをそれらのデータオブジェクトグループ内で特定し、４）変更されたデータオブジェクトグループ内のデータオブジェクトによって参照される（例えばデータセグメント２２４からの）データセグメントを含む、重複排除データシステム内の（例えばコンテナ２２６からの）少なくとも１つのコンテナを特定し、特定したコンテナごとに、５）（例えば特定したコンテナ内の非参照データセグメントを除去することにより）重複排除データシステム内のデータオブジェクトによって参照されていないデータセグメントを特定したコンテナから除去するように、コンピューティングシステム２０２をプログラムすることができる。
【００２５】
コンピューティングシステム２０２は、コンピュータ実行可能命令を読み取ることができる、任意の種類または形式のコンピューティングデバイスを概して表す。コンピューティングシステム２０２の例には、ラップトップ、デスクトップ、サーバ、携帯電話、携帯情報端末（ＰＤＡ）、マルチメディアプレイヤ、埋め込みシステム、それらの１つまたは複数の組合せ、図７の例示的コンピューティングシステム７１０、または他の任意の適切なコンピューティングデバイスが制限なく含まれる。
【００２６】
図３は、重複排除データシステムから非参照データセグメントを除去するための、コンピュータによって実施される例示的方法３００の流れ図である。図３に示すステップは、任意の適切なコンピュータ実行可能コードおよび／またはコンピューティングシステムによって実行することができる。一部の実施形態では、図３に示すステップは、図１のシステム１００、図２のシステム２００、および／または図７のシステム７００のコンポーネントの１つもしくは複数によって実行することができる。
【００２７】
図３に示すように、ステップ３０２で、本明細書に記載するシステムの１つまたは複数が、複数のデータオブジェクトを含む重複排除データシステムを特定することができる。例えば、ステップ３０２で、図１の特定モジュール１０４が図２のコンピューティングシステム２０２の一部として、データオブジェクト２２２を含む重複排除システム１２０を特定することができる。本明細書で使用するとき、用語「データオブジェクト」は、ファイルなど、重複排除に適した任意のデータ集合を指すことができる。
【００２８】
特定モジュール１０４は、ステップ３０２を任意の適切な方法で実行することができる。一例では、特定モジュール１０４は、重複排除データシステムに関連する構成ファイルを読み取ることにより重複排除データシステムを特定することができる。それに加えて、またあるいは、特定モジュール１０４は、重複排除データシステムから非参照データセグメントを除去する要求を特定する（例えば傍受、受信、または取得する）ことにより重複排除データシステムを特定することができる。一部の状況では、特定モジュール１０４は重複排除データシステムの拡張機能および／またはコンポーネントとすることができ、単に特定モジュール１０４が実行される状況により重複排除データシステムを暗に特定することができる。
【００２９】
ステップ３０４で、本明細書に記載する１つまたは複数のシステムが、重複排除データシステム内のデータオブジェクトを複数のデータオブジェクトグループに分割する（例えばデータオブジェクトをグループに割り振る）ことができる。例えば、ステップ３０４で、図１のグループ化モジュール１０６が図２のコンピューティングシステム２０２の一部として、データオブジェクト２２２を複数のデータオブジェクトグループに分割することができる。
【００３０】
グループ化モジュール１０６は、様々な異なる方法を使用してデータオブジェクトをデータオブジェクトグループに分割することができる。一例では、グループ化モジュール１０６は、データオブジェクトをデータオブジェクトグループ間で無作為に割り振ることができる。別の例では、グループ化モジュール１０６は、関係するデータオブジェクト（例えば提携して変更される可能性が高いデータオブジェクト）をまとめることができる。同時にまたはほぼ同時に変更される可能性が高いデータオブジェクトをまとめる場合、本明細書に記載する方法およびシステムは、マークアンドスイープ操作中に分析するより少ないコンテナを有し、その結果コンピューティングリソースを潜在的に節約することができる。一部の例では、グループ化モジュール１０６は、データオブジェクトが同じアプリケーションによって管理されることを突き止めることにより、特定のデータオブジェクトが関係していると判断することができる。他の例では、グループ化モジュール１０６は、データオブジェクトのディレクトリ構造内での元の配置から、データオブジェクトが関係していると判断することができる。
【００３１】
一部の状況では、重複排除データシステムは、バックアップされたデータに対して操作を行うことができる。これらの状況では、グループ化モジュール１０６は、データオブジェクトを含む複数のバックアップを特定し、それらのバックアップを様々なデータオブジェクトグループに割り当てることにより、データオブジェクトをデータオブジェクトグループ間で分けることができる。バックアップごとにデータオブジェクトをグループ化することは、所与のグループ内のデータオブジェクトが同時にまたはほぼ同時に変更される可能性がより高いという尤度を高め得る。
【００３２】
図３に戻り、ステップ３０６で、本明細書に記載するシステムの１つまたは複数が、重複排除データシステム内のデータオブジェクトによって参照されていなかったデータセグメントを除去した前のガーベッジコレクション操作の後に変更された、少なくとも１つのデータオブジェクトグループをデータオブジェクトグループ内で特定することができる。例えば、ステップ３０６で、図１のモニタリングモジュール１０８が図２のコンピューティングシステム２０２の一部として、重複排除データシステム内のデータオブジェクト２２２によって参照されていなかったデータセグメント２２４の一部を除去した前のガーベッジコレクション操作の後に変更された、各データオブジェクトグループを特定することができる。本明細書で使用するとき、用語「データセグメント」は、データのセグメント、データのブロック、またはデータの重複排除に使用される他の任意の適切なデータ単位を指すことができる。本明細書で使用するとき、用語「ガーベッジコレクション操作」は、非参照データセグメントを削除するための任意の操作、および／または非参照データセグメントを除去しかつ／または除去するのを助けることにより記憶空間を回復するための任意の操作を指すことができる。
【００３３】
例として、および図３のステップの説明をさらに例示するために、図４は例示的な重複排除データシステム４００を示す。図４に示すように、例示的な重複排除データシステム４００は、データオブジェクト４０２〜４１２を含むことができる。これらのデータオブジェクトのそれぞれは、データセグメント（例えばデータセグメント４２２〜４５８の一部）への参照を含むことができる。例えばデータオブジェクト４０２は、データセグメント４２２、４２４、４２６、および４２８への参照を含むことができる。データセグメント４２２〜４５８は、コンテナ（例えばコンテナ４６０および４７０）内にまとめ、記憶し、または割り当てることができる。例えば、データセグメント４２２〜４３８をコンテナ４６０内に記憶することができ、データセグメント４４２〜４５８をコンテナ４７０内に記憶することができる。
【００３４】
一部のデータセグメントは、１つのデータオブジェクトによってのみ参照され得る（データオブジェクト４０２によってのみ参照されるデータセグメント４２４など）。他のデータセグメントは、２つ以上のデータオブジェクトによって参照され得る（データオブジェクト４０２、４０４、および４０６によって参照されるデータセグメント４２８など）。例えば、（別の状態にある例示的な重複排除データシステム４００の説明図である）図５に示す例では、データオブジェクト４０２および４０４が削除されている可能性がある。この操作は、データオブジェクト４０２および４０４によって含まれるデータセグメントの全てではないが一部を非参照状態のままにしておく可能性がある。例えば、データオブジェクト４０２は、当初データセグメント４２２、４２４、４２６、および４２８を参照していた可能性がある。データオブジェクト４０２を除去した後、データセグメント４２２、４２６、および４２８は少なくとも１つのデータオブジェクト（この場合データオブジェクト４０６）によって引き続き参照され得る一方で、データセグメント４２４はいかなるデータオブジェクトによっても参照されない可能性があり、したがって、削除して重複排除データシステム上の記憶空間を回復すべきである。
【００３５】
モニタリングモジュール１０８は、様々な方法で図３のステップ３０６を実行することができる。一例では、モニタリングモジュール１０８は、データオブジェクトがデータオブジェクトグループに追加された場合（例えばデータオブジェクトが重複排除データシステムに追加され、データオブジェクトグループ内に配置される場合）、データオブジェクトがデータオブジェクトグループから除去された場合（例えばデータオブジェクトが重複排除データシステムから削除された場合）、および／またはデータオブジェクトグループ内のデータオブジェクトが変更された場合（例えば別のデータセグメントを参照するようにデータオブジェクトが変更される場合）、そのデータオブジェクトグループを変更されたものとして特定することができる。上記に記載し、図４〜図５に示した例を使用し、データオブジェクト４０２および４０４を削除することは、それらのデータオブジェクトが属するデータオブジェクトグループ（またはそれらのデータオブジェクトが異なるデータオブジェクトグループに属する場合、その各々のデータオブジェクトグループ）に対する変更を引き起こすことができる。したがって、データオブジェクト４０２および４０４のデータオブジェクトグループは、変更されたデータオブジェクトグループに相当し得る。
【００３６】
モニタリングモジュール１０８は、様々な方法で前のガーベッジコレクション操作の後に変更されたデータオブジェクトグループを特定することができる。例えば、モニタリングモジュール１０８は、（例えば重複排除データシステムへの変更を傍受し、影響を受けたデータオブジェクトグループを特定することにより）変更がないかどうか複数のデータオブジェクトグループをモニタすることができる。さらに、またあるいは、モニタリングモジュール１０８は、重複排除データシステム内のデータオブジェクトおよび／またはデータオブジェクトグループへの変更を明らかにするログファイルを読み取ることができる。
【００３７】
図３に戻り、ステップ３０８で、本明細書に記載するシステムの１つまたは複数が、変更されたデータオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含む、少なくとも１つのコンテナを重複排除データシステム内で特定することができる。例えば、ステップ３０８で、図１のターゲティングモジュール１１０が図２のコンピューティングシステム２０２の一部として、変更されたデータオブジェクトグループ内のデータオブジェクトによって参照される１つまたは複数のデータセグメント２２４を含むコンテナを、コンテナ２２６内で特定することができる。本明細書で使用するとき、用語「コンテナ」は、データセグメントのサブセットを記憶し、包含し、含み、かつ／または指し示す、任意のデータ構造、記憶システム、および／または位置を指すことができる。
【００３８】
ターゲティングモジュール１１０は、ステップ３０８を任意の適切な方法で実行することができる。例えば、ターゲティングモジュール１１０は、データオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含むコンテナのリストをデータオブジェクトグループごとに保持することにより、変更されたデータオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含むコンテナを特定することができる。ターゲティングモジュール１１０は、変更されたデータオブジェクトグループを求めてコンテナのリストを参照することができる。以下でより詳細に説明するように、変更された各データオブジェクトグループ内のデータオブジェクトによって参照されるデータセグメントを含むコンテナを特定することにより、ターゲティングモジュール１１０は、様々なマークアンドスイープ操作にかけるべきコンテナを特定することができる。
【００３９】
ステップ３１０で、本明細書に記載するシステムの１つまたは複数が、重複排除データシステム内のデータオブジェクトによって参照されていないデータセグメントを特定したコンテナから（例えば特定したコンテナごとに）除去することができる。例えば、ステップ３１０で、図１のマークアンドスイープモジュール１１２が図２のコンピューティングシステム２０２の一部として、データオブジェクト２２２のどれもが参照しないデータセグメントを特定したコンテナから除去することができる。
【００４０】
マークアンドスイープモジュール１１２は、ステップ３１０を任意の適切な方法で実行することができる。一例では、マークアンドスイープモジュール１１２は、コンテナに対してマークアンドスイープ操作を行うことにより、特定したコンテナから非参照データセグメントを除去することができる。例えばマークアンドスイープモジュール１１２は、データオブジェクトグループごとに、特定したコンテナ内の各参照データセグメントに印付けし、特定したコンテナから印付けされていないデータセグメントを除去することができる。
【００４１】
マークアンドスイープモジュール１１２は、いくつかの方法で、データオブジェクトグループごとに、特定したコンテナ内の各非参照データセグメントに印付けすることができる。例えば、マークアンドスイープモジュール１１２は、データオブジェクトグループごとに、特定したコンテナ内の参照データセグメントのマップを作成することができる。
【００４２】
例として、および図３のステップの説明をさらに例示するために、図６は例示的な重複排除データシステム６００を示す。図６に示すように、例示的な重複排除データシステム６００は、バックアップ６０２〜６１０を含むことができる。各バックアップは、バックアップされ、重複排除されているデータオブジェクトを含むことができる。これらのデータオブジェクトのデータセグメントは、コンテナ６２０〜６２８内に記憶することができる。バックアップ６０２〜６１０は、（ステップ３０４に関して上述したように）データオブジェクトグループに分割することができる。この図に示すように、バックアップ６０２および６０４をグループ６３０内に配置することができ、バックアップ６０６および６０８をグループ６３２内に配置することができ、バックアップ６１０をグループ６３４内に配置することができる。
【００４３】
マップセット６４０〜６４８は、データオブジェクトのそれぞれのコンテナ内に含まれるデータセグメントを参照するデータオブジェクトを含むデータオブジェクトグループごとに、参照データセグメントのマップを含むことができる。例えばコンテナ６２０は、グループ６３０および６３２内に含まれるデータオブジェクトによって参照されるデータセグメントを含むことができる。したがってマップセット６４０は、グループ６３０および６３２内のデータオブジェクトによって参照される、コンテナ６２０内のデータセグメントのマップ（例えば各グループにつき１つのマップ）を含むことができる。
【００４４】
上記に記載したマークアンドスイープモジュール１１２の例示的動作に戻り、マークアンドスイープモジュール１１２は、特定したコンテナ内の参照データセグメントの各マップを、特定したコンテナに関する包括的なマップにマージすることもできる。例えば、コンテナのマップセット内の任意のマップがデータセグメントを参照されているものとして印付けした場合、マークアンドスイープモジュール１１２は、コンテナに関する包括的なマップ内でそのデータセグメントを参照されているものとして印付けすることができる。図６に示す例を使用し、マークアンドスイープモジュール１１２は、マップセット６４０内に２つのマップ、つまりグループ６３０内のデータオブジェクトによって参照されるコンテナ６２０のデータセグメントについてのマップと、グループ６３２内のデータオブジェクトによって参照されるコンテナ６２０のデータセグメントについてのマップとを作成することができる。マークアンドスイープモジュール１１２は、グループ６３０についてのマップとグループ６３２についてのマップとを、データオブジェクトによって参照されるコンテナ６２０のデータセグメントに関する包括的なマップにマージすることができる。
【００４５】
ステップ３１０に戻り、先に述べたように、マークアンドスイープモジュール１１２は、特定したコンテナから印付けされていないデータセグメントを除去することができる。一部の例では、マークアンドスイープモジュール１１２は、少なくとも１つの変更されたデータオブジェクトグループが、特定したコンテナ内の影響を受けるデータセグメントを潜在的に非参照化する変更を経験したと判定するときにのみ、そのようなスイープ操作を実行することができる。コンテナ内のデータセグメントを潜在的に非参照化し得る変更の種類には様々な変更が含まれ得る。例えばそのような変更には、変更されるデータオブジェクトグループからデータオブジェクトが削除されること、および／または変更されるデータオブジェクトグループ内のデータオブジェクトが修正されることが含まれ得る。
【００４６】
マークアンドスイープモジュール１１２は、変更されたデータオブジェクトグループが、特定したコンテナ内の影響を受けるデータセグメントを潜在的に非参照化する変更を経験したと判定するために、任意の適切な方法を使用することができる。例えばマークアンドスイープモジュール１１２は、変更されたデータオブジェクトグループに関するインジケータを参考にして、そのデータオブジェクトグループが経験した変更の種類を突き止めることができる。図６に示す例を使用し、バックアップ６０２内のデータオブジェクトが除去されたことをモニタリングモジュール１０８が観察している可能性がある。その結果、モニタリングモジュール１０８は、グループ６３０に削除インジケータ６５０を追加している可能性がある。この例では、マークアンドスイープモジュール１１２が削除インジケータ６５０を特定し、その結果、グループ６３０に関するマップを有する各コンテナ（例えばコンテナ６２０および６２２）に対して（例えば非参照データセグメントを除去することにより）スイープ操作を実行することができる。グループ６３４は、グループ６３４に対する非削除変更（例えば６３４へのデータオブジェクトの追加）を示し得る、変更インジケータ６５２に関連することができる。したがってグループ６３４は、グループ６３４内に含まれるデータオブジェクトによって参照されるデータセグメントをたまたま含むコンテナに対し、マークアンドスイープモジュール１１２にスイープ操作を行わせることはできない。
【００４７】
ステップ３１０に戻り、一部の実施形態では、マークアンドスイープモジュール１１２は、非参照データセグメントがないかどうか、特定したコンテナだけを検査することができる。上記の例を使用し、特定したコンテナにはコンテナ６２０、６２２、および６２８が含まれる可能性があり、その理由はこれらのコンテナが、変更されたデータオブジェクトグループ（すなわちグループ６３０および６３４）内のデータオブジェクトによって参照されるデータセグメントを含み得るからである。非参照データセグメントがないかどうか、（例えば特定したコンテナのデータセグメントに対してのみ印付け操作を行うことにより）特定したコンテナだけを検査することにより、マークアンドスイープモジュール１１２はコンピューティングリソースを節約することができる。上記に記載したように、マークアンドスイープモジュール１１２は、少なくとも１つのデータセグメントを潜在的に非参照化した少なくとも１回の変更を経験したデータオブジェクトグループのデータセグメントを有するコンテナに、自らのスイープ操作を制限することができる。一部の実施形態によれば、特定したコンテナには潜在的な変更を伴うあらゆるコンテナが含まれ得るので、一部の実施形態では、マークアンドスイープモジュール１１２は、少なくとも１つのデータセグメントを潜在的に非参照化した少なくとも１回の変更がないかどうか、特定したコンテナだけを検査することができる（例えばマークアンドスイープモジュール１１２は、何らかの変更を伴うコンテナにおいて、潜在的に非参照化を行う変更に関してのみ検査することができる）。
【００４８】
本明細書に記載するシステムおよび方法がどのように動作し得るのかについてのさらなる例として、図６のマップセット６４０〜６４８は、各コンテナ内のグループごとに印付け結果（例えばデータセグメントについての印付けマップ）を含むことができる。印付け結果は、所与のグループ内のデータオブジェクトによって使用される、所与のコンテナ内のデータセグメントを特定するビットマップを含むことができる。単一のマークアンドスイープサイクルでは、本明細書に記載するシステムは、変更されたグループ（例えばグループ６３０および６３４）ごとにデータセグメントに印付けすることができる。グループ６３０および６３４が変更されている可能性があるので、これらのシステムはグループ６３０および６３４の前の印付け結果（例えばコンテナごとのグループ６３０および６３４についてのマップ）を消去することができる。次いでこれらのシステムは、グループ６３０および６３４内のデータオブジェクトによって使用されるデータセグメントを有する全てのコンテナ（例えばグループ６３０ではコンテナ６２０および６２２、ならびにグループ６３４ではコンテナ６２２および６２８）について、グループ６３０および６３４のための新たな印付け結果を生成することができる。
【００４９】
この印付け操作中、本明細書に記載するシステムは、データオブジェクトを削除されたグループから印付けされる全てのコンテナ（例えばグループ６３０から印付けされるコンテナ６２０および６２２）を追跡することができる。次いでこれらのシステムは、これらのコンテナをスイープリストに入れることができる。この例では、スイープリスト内のコンテナだけがデータオブジェクトを削除されたグループによって使用され得るので、スイープリスト内のコンテナだけがデータセグメントを除去されている可能性がある。次いで、本明細書に記載するシステムは、スイープリスト内のコンテナをスイープすることができる。コンテナをスイープするために、これらのシステムはコンテナ内の全てのグループについての印付け結果をマージすることができる。マージ済みの印付け結果内であるデータセグメントが参照されているものとして印付けされていない場合、本明細書に記載するシステムはそのデータセグメントを除去することができる。
【００５０】
上記に詳述したように、非参照データセグメントをもたらし得る変更を経たデータオブジェクトグループからのデータセグメントを含むコンテナにマークアンドスイープ手続きを集中させることにより、本明細書に記載するシステムおよび方法は、非参照データセグメントを捜し出し、削除するために必要なコンピューティングリソースの量を効果的に減らすことができる。さらに、非参照データセグメントを削除するタスクを重複排除データシステム上で実行するのに必要なリソースは、重複排除データシステムの規模にほぼ比例し得るので、これらのシステムおよび方法は、非参照データセグメントを削除するための拡張可能な解決策を提供することができる。その一方で、これらのシステムおよび方法は、従来のマークアンドスイープアプローチが相互参照アプローチを上回って有する利点を保つことができる。
【００５１】
図７は、本明細書に記載しかつ／または図示する実施形態の１つもしくは複数を実装することができる、例示的コンピューティングシステム７１０のブロック図である。コンピューティングシステム７１０は、コンピュータ可読命令を実行することができる、任意のシングルプロセッサのもしくはマルチプロセッサのコンピューティングデバイスまたはシステムを広く表す。コンピューティングシステム７１０の例には、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散コンピューティングシステム、携帯端末、または他の任意のコンピューティングシステムもしくはデバイスが制限なく含まれる。その最も基本的な構成では、コンピューティングシステム７１０は、少なくとも１個のプロセッサ７１４およびシステムメモリ７１６を含むことができる。
【００５２】
プロセッサ７１４は、データを処理し、または命令を解釈して実行することができる任意の種類もしくは形式の処理装置を概して表す。特定の実施形態では、プロセッサ７１４はソフトウェアアプリケーションまたはモジュールから命令を受け取ることができる。これらの命令は、本明細書に記載しかつ／または図示する例示的実施形態の１つもしくは複数の機能をプロセッサ７１４に実行させることができる。例えばプロセッサ７１４は、本明細書に記載の特定するステップ、分割するステップ、追加するステップ、モニタするステップ、印付けするステップ、除去するステップ、作成するステップ、マージするステップ、判定するステップ、および／または検査するステップのうちの１つもしくは複数を、単独でまたは他の要素とともに実行することができ、かつ／または実行するための手段となることができる。プロセッサ７１４は、本明細書に記載しかつ／または図示する他の任意のステップ、方法、もしくはプロセスも実行することができ、かつ／または実行するための手段となることができる。
【００５３】
システムメモリ７１６は、データおよび／または他のコンピュータ可読命令を記憶することができる、任意の種類または形式の揮発性／不揮発性記憶装置または記憶媒体を概して表す。システムメモリ７１６の例には、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、フラッシュメモリ、または他の任意の適切なメモリ装置が制限なく含まれる。必須ではないが、特定の実施形態ではコンピューティングシステム７１０は、揮発性メモリ装置（例えばシステムメモリ７１６など）および不揮発性記憶装置（例えば以下に詳しく説明する一次記憶装置７３２など）の両方を含むことができる。一例では、図１のモジュール１０２の１つまたは複数をシステムメモリ７１６内にロードすることができる。
【００５４】
特定の実施形態では、例示的コンピューティングシステム７１０は、プロセッサ７１４およびシステムメモリ７１６に加えて、１つまたは複数のコンポーネントもしくは要素も含むことができる。例えば図７に示すように、コンピューティングシステム７１０は、メモリコントローラ７１８、入出力（Ｉ／Ｏ）コントローラ７２０、および通信インターフェイス７２２を含むことができ、そのそれぞれは通信インフラ７１２を介して相互接続することができる。通信インフラ７１２は、コンピューティングデバイスの１つまたは複数のコンポーネントとの間の通信を助けることができる、任意の種類または形式のインフラを概して表す。通信インフラ７１２の例には、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅ、同様のバスなど）やネットワークが制限なく含まれる。
【００５５】
メモリコントローラ７１８は、メモリもしくはデータを処理することができ、またはコンピューティングシステム７１０の１つまたは複数のコンポーネント間の通信を制御することができる、任意の種類または形式の装置を概して表す。例えば特定の実施形態では、メモリコントローラ７１８は、通信インフラ７１２を介してプロセッサ７１４、システムメモリ７１６、およびＩ／Ｏコントローラ７２０間の通信を制御することができる。特定の実施形態では、メモリコントローラ７１８は、特定すること、分割すること、追加すること、モニタすること、印付けすること、除去すること、作成すること、マージすること、判定すること、および／または検査することなど、本明細書に記載しかつ／または図示するステップもしくは機能の１つまたは複数を、単独でまたは他の要素とともに実行することができ、かつ／または実行するための手段となることができる。
【００５６】
Ｉ／Ｏコントローラ７２０は、コンピューティングデバイスの入出力機能を調整しかつ／または制御することができる、任意の種類または形式のモジュールを概して表す。例えば特定の実施形態では、Ｉ／Ｏコントローラ７２０は、プロセッサ７１４、システムメモリ７１６、通信インターフェイス７２２、ディスプレイアダプタ７２６、入力インターフェイス７３０、記憶インターフェイス７３４など、コンピューティングシステム７１０の１つまたは複数の要素間のデータ転送を制御し、もしくは助けることができる。Ｉ／Ｏコントローラ７２０は、例えば本明細書に記載の特定するステップ、分割するステップ、追加するステップ、モニタするステップ、印付けするステップ、除去するステップ、作成するステップ、マージするステップ、判定するステップ、および／または検査するステップのうちの１つもしくは複数を、単独でまたは他の要素とともに実行するために使用することができ、かつ／または実行するための手段となることができる。Ｉ／Ｏコントローラ７２０は、本開示に記載の他のステップおよび機能を実行するために使用することもでき、かつ／または実行するための手段となることもできる。
【００５７】
通信インターフェイス７２２は、例示的コンピューティングシステム７１０と１つまたは複数のその他の装置との間の通信を助けることができる、任意の種類または形式の通信装置もしくはアダプタを広く表す。例えば特定の実施形態では、通信インターフェイス７２２は、コンピューティングシステム７１０と、その他のコンピューティングシステムを含む私設ネットワークまたは公衆ネットワークとの間の通信を助けることができる。通信インターフェイス７２２の例には、有線ネットワークインターフェイス（ネットワークインターフェイスカードなど）、無線ネットワークインターフェイス（無線ネットワークインターフェイスカードなど）、モデム、および他の任意の適切なインターフェイスが制限なく含まれる。少なくとも１つの実施形態では、通信インターフェイス７２２は、インターネットなどのネットワークへの直接リンクを介して、リモートサーバへの直接接続を提供することができる。通信インターフェイス７２２は、例えばローカルエリアネットワーク（イーサネット〔登録商標〕ネットワークなど）、パーソナルエリアネットワーク、電話またはケーブルネットワーク、携帯電話接続、衛星データ接続、または他の任意の適切な接続を介して間接的にそのような接続を提供することもできる。
【００５８】
特定の実施形態では、通信インターフェイス７２２は、外部バスまたは通信チャネルを介して、コンピューティングシステム７１０と１つまたは複数のその他のネットワーク装置または記憶装置との間の通信を助けるように構成される、ホストアダプタを表すこともできる。ホストアダプタの例には、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ１３９４ホストアダプタ、ＳＡＴＡおよびｅＳＡＴＡホストアダプタ、ＡＴＡおよびＰＡＴＡホストアダプタ、ファイバチャネルインターフェイスアダプタ、イーサネットアダプタなどが制限なく含まれる。通信インターフェイス７２２は、コンピューティングシステム７１０が分散コンピューティングまたはリモートコンピューティングに携わることも可能にすることができる。例えば通信インターフェイス７２２は、実行するための命令を遠隔装置から受け取り、または遠隔装置に送ることができる。特定の実施形態では、通信インターフェイス７２２は、本明細書に開示する特定するステップ、分割するステップ、追加するステップ、モニタするステップ、印付けするステップ、除去するステップ、作成するステップ、マージするステップ、判定するステップ、および／または検査するステップのうちの１つもしくは複数を、単独でまたは他の要素とともに実行することができ、かつ／または実行するための手段となることができる。通信インターフェイス７２２は、本開示に記載の他のステップおよび機能を実行するために使用することもでき、かつ／または実行するための手段となることもできる。
【００５９】
図７に示すように、コンピューティングシステム７１０は、ディスプレイアダプタ７２６を介して通信インフラ７１２に結合される少なくとも１つのディスプレイ装置７２４も含むことができる。ディスプレイ装置７２４は、ディスプレイアダプタ７２６によって転送される情報を視覚的に表示することができる、任意の種類または形式の装置を概して表す。同様に、ディスプレイアダプタ７２６は、ディスプレイ装置７２４上で表示するために、通信インフラ７１２からの（または当技術分野で知られているフレームバッファからの）グラフィックス、テキスト、および他のデータを転送するように構成される、任意の種類または形式の装置を概して表す。
【００６０】
図７に示すように、例示的コンピューティングシステム７１０は、入力インターフェイス７３０を介して通信インフラ７１２に結合される少なくとも１つの入力装置７２８も含むことができる。入力装置７２８は、コンピュータまたは人間が発生させた入力を例示的コンピューティングシステム７１０に提供することができる、任意の種類または形式の入力装置を概して表す。入力装置７２８の例には、キーボード、ポインティングデバイス、音声認識装置、または他の任意の入力装置が制限なく含まれる。少なくとも１つの実施形態では、入力装置７２８は、本明細書に開示する特定するステップ、分割するステップ、追加するステップ、モニタするステップ、印付けするステップ、除去するステップ、作成するステップ、マージするステップ、判定するステップ、および／または検査するステップのうちの１つもしくは複数を、単独でまたは他の要素とともに実行することができ、かつ／または実行するための手段となることができる。入力装置７２８は、本開示に記載の他のステップおよび機能を実行するために使用することもでき、かつ／または実行するための手段となることもできる。
【００６１】
図７に示すように、例示的コンピューティングシステム７１０は、記憶インターフェイス７３４を介して通信インフラ７１２に結合される、一次記憶装置７３２およびバックアップ記憶装置７３３も含むことができる。記憶装置７３２および７３３は、データおよび／または他のコンピュータ可読命令を記憶することができる、任意の種類または形式の記憶装置もしくは記憶媒体を概して表す。例えば、記憶装置７３２および７３３は、磁気ディスクドライブ（例えば所謂ハードドライブ）、フロッピディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどとすることができる。記憶インターフェイス７３４は、記憶装置７３２および７３３とコンピューティングシステム７１０の他のコンポーネントとの間でデータを転送するための、任意の種類または形式のインターフェイスもしくは装置を概して表す。一例では、一次記憶装置７３２内に図２のデータオブジェクト２２２を記憶することができる。
【００６２】
特定の実施形態では、記憶装置７３２および７３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されるリムーバブル記憶装置との間で読取および／または書込みを行うように構成することができる。適切なリムーバブル記憶装置の例には、フロッピディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが制限なく含まれる。記憶装置７３２および７３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令をコンピューティングシステム７１０内にロードできるようにするための他の同様の構造または装置も含むことができる。例えば記憶装置７３２および７３３は、ソフトウェア、データ、または他のコンピュータ可読情報を読み書きするように構成することができる。記憶装置７３２および７３３は、コンピューティングシステム７１０の一部とすることもでき、または他のインターフェイスシステムを介してアクセスされる別個の装置とすることもできる。
【００６３】
特定の実施形態では、記憶装置７３２および７３３は、例えば本明細書に開示する特定するステップ、分割するステップ、追加するステップ、モニタするステップ、印付けするステップ、除去するステップ、作成するステップ、マージするステップ、判定するステップ、および／または検査するステップのうちの１つもしくは複数を、単独でまたは他の要素とともに実行するために使用することができ、かつ／または実行するための手段となることができる。記憶装置７３２および７３３は、本開示に記載の他のステップおよび機能を実行するために使用することもでき、かつ／または実行するための手段となることもできる。
【００６４】
コンピューティングシステム７１０には、他の多くの装置またはサブシステムを接続することができる。逆に、本明細書に記載しかつ／または図示する実施形態を実施するために、図７に示すコンポーネントおよび装置の全てがある必要はない。上記で言及した装置およびサブシステムは、図７に示す方法とは別の方法で相互接続することもできる。コンピューティングシステム７１０は、任意の数のソフトウェア、ファームウェア、および／またはハードウェア構成を使用してもよい。例えば本明細書に開示する例示的実施形態の１つまたは複数を、コンピュータ可読媒体上にコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御ロジックとも呼ばれる）として符号化することができる。表現「コンピュータ可読媒体」は、一般にコンピュータ可読命令を記憶しまたは運ぶことができる、任意の形式の装置、キャリア、または媒体を指す。コンピュータ可読媒体の例には、搬送波などの伝送型媒体や磁気記憶媒体（例えばハードディスクドライブやフロッピディスク）などの物理媒体、光学的記憶媒体（例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば半導体ドライブやフラッシュ媒体）、および他の分配システムが制限なく含まれる。
【００６５】
コンピュータプログラムを含むコンピュータ可読媒体をコンピューティングシステム７１０内にロードすることができる。コンピュータ可読媒体上に記憶されるコンピュータプログラムの全てまたは一部を、システムメモリ７１６内にならびに／または記憶装置７３２および７３３の様々な部分に記憶することができる。プロセッサ７１４によって実行されるとき、コンピューティングシステム７１０内にロードされたコンピュータプログラムは、本明細書に記載しかつ／または図示する例示的実施形態の１つもしくは複数の機能をプロセッサ７１４に実行させることができ、かつ／またはプロセッサ７１４をそれらの機能を実行するための手段にすることができる。さらに、またあるいは、本明細書に記載しかつ／または図示する例示的実施形態の１つもしくは複数を、ファームウェアおよび／またはハードウェアによって実装することができる。例えば、コンピューティングシステム７１０は、本明細書に開示する例示的実施形態の１つまたは複数を実装するようになされる特定用途向け集積回路（ＡＳＩＣ）として構成することができる。
【００６６】
図８は、クライアントシステム８１０、８２０および８３０、ならびにサーバ８４０および８４５がネットワーク８５０に結合され得る例示的ネットワークアーキテクチャ８００のブロック図である。クライアントシステム８１０、８２０および８３０は、図７の例示的コンピューティングシステム７１０など、任意の種類または形式のコンピューティングデバイスもしくはシステムを概して表す。一例では、クライアントシステム８１０は、図１のシステム１００を含むことができる。
【００６７】
同様に、サーバ８４０および８４５は、様々なデータベースサービスを提供しかつ／または特定のソフトウェアアプリケーションを実行するように構成される、アプリケーションサーバやデータベースサーバなどのコンピューティングデバイスまたはシステムを概して表す。ネットワーク８５０は、例えばイントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、またはインターネットが含まれる、任意の電気通信網またはコンピュータネットワークを概して表す。
【００６８】
図８に示すように、１つまたは複数の記憶装置８６０（１）〜（Ｎ）をサーバ８４０に直接付加することができる。同様に、１つまたは複数の記憶装置８７０（１）〜（Ｎ）をサーバ８４５に直接付加することができる。記憶装置８６０（１）〜（Ｎ）および記憶装置８７０（１）〜（Ｎ）は、データおよび／または他のコンピュータ可読命令を記憶することができる、任意の種類または形式の記憶装置もしくは記憶媒体を概して表す。特定の実施形態では、記憶装置８６０（１）〜（Ｎ）および記憶装置８７０（１）〜（Ｎ）は、ＮＦＳ、ＳＭＢ、ＣＩＦＳなどの様々なプロトコルを使用してサーバ８４０および８４５と通信するように構成されるネットワーク接続ストレージ（ＮＡＳ）デバイスを表すことができる。
【００６９】
サーバ８４０および８４５は、ストレージエリアネットワーク（ＳＡＮ）ファブリック８８０にも接続され得る。ＳＡＮファブリック８８０は、複数の記憶装置間の通信を助けることができる任意の種類または形式のコンピュータネットワークもしくはアーキテクチャを概して表す。ＳＡＮファブリック８８０は、サーバ８４０および８４５と、複数の記憶装置８９０（１）〜（Ｎ）および／またはインテリジェントストレージアレイ８９５との間の通信を助けることができる。ＳＡＮファブリック８８０は、クライアントシステム８１０、８２０、および８３０にとって、装置８９０（１）〜（Ｎ）およびアレイ８９５がローカルに付加された装置のように見える方法で、クライアントシステム８１０、８２０、および８３０と、記憶装置８９０（１）〜（Ｎ）および／またはインテリジェントストレージアレイ８９５との間の通信を、ネットワーク８５０ならびにサーバ８４０および８４５を介して助けることもできる。記憶装置８６０（１）〜（Ｎ）および記憶装置８７０（１）〜（Ｎ）と同じように、記憶装置８９０（１）〜（Ｎ）およびインテリジェントストレージアレイ８９５は、データおよび／または他のコンピュータ可読命令を記憶することができる、任意の種類または形式の記憶装置もしくは記憶媒体を概して表す。
【００７０】
特定の実施形態では、および図７の例示的コンピューティングシステム７１０に関して、各クライアントシステム８１０、８２０、および８３０とネットワーク８５０との間の接続性を提供するために、図７の通信インターフェイス７２２などの通信インターフェイスを使用することができる。クライアントシステム８１０、８２０、および８３０は、例えばウェブブラウザや他のクライアントソフトウェアを使用してサーバ８４０または８４５上の情報にアクセスでき得る。そのようなソフトウェアは、クライアントシステム８１０、８２０、および８３０が、サーバ８４０、サーバ８４５、記憶装置８６０（１）〜（Ｎ）、記憶装置８７０（１）〜（Ｎ）、記憶装置８９０（１）〜（Ｎ）、またはインテリジェントストレージアレイ８９５によってホストされるデータにアクセスすることを可能にすることができる。図８ではデータをやり取りするためにネットワーク（インターネットなど）を使用することを示すが、本明細書に記載しかつ／または図示する実施形態はインターネットもしくはどんな特定のネットワークベース環境にも限定されない。
【００７１】
少なくとも１つの実施形態では、本明細書に開示する例示的実施形態の１つまたは複数の全てもしくは一部をコンピュータプログラムとして符号化し、サーバ８４０、サーバ８４５、記憶装置８６０（１）〜（Ｎ）、記憶装置８７０（１）〜（Ｎ）、記憶装置８９０（１）〜（Ｎ）、インテリジェントストレージアレイ８９５またはそれらの任意の組合せにロードし、実行することができる。本明細書に開示する例示的実施形態の１つまたは複数の全てもしくは一部をコンピュータプログラムとして符号化し、サーバ８４０内に記憶し、サーバ８４５によって実行し、ネットワーク８５０を介してクライアントシステム８１０、８２０、および８３０に配信することもできる。したがって、ネットワークアーキテクチャ８００は、本明細書に開示する特定するステップ、分割するステップ、追加するステップ、モニタするステップ、印付けするステップ、除去するステップ、作成するステップ、マージするステップ、判定するステップ、および／または検査するステップのうちの１つもしくは複数を、単独でまたは他の要素とともに実行することができ、かつ／または実行するための手段となることができる。ネットワークアーキテクチャ８００は、本開示に記載の他のステップおよび機能を実行するために使用することもでき、かつ／または実行するための手段となることもできる。
【００７２】
上記に詳述したように、コンピューティングシステム７１０および／またはネットワークアーキテクチャ８００の１つもしくは複数のコンポーネントは、重複排除データシステムから非参照データセグメントを除去するための例示的方法の１つまたは複数のステップを、単独でまたは他の要素とともに実行することができ、かつ／または実行するための手段となることができる。
【００７３】
上述の開示は特定のブロック図、流れ図、および例を使用して様々な実施形態を示したが、本明細書に記載しかつ／または図示したそれぞれのブロック図のコンポーネント、流れ図のステップ、操作、および／またはコンポーネントは、広範囲にわたるハードウェア、ソフトウェア、またはファームウェア（あるいはそれらの任意の組合せ）の構成を使用して個別におよび／または集合的に実施することができる。さらに、他のコンポーネント内に含まれるコンポーネントについてのいかなる開示も、他の多くのアーキテクチャを実装して同じ機能を達成することができるので実際は例示的とみなすべきである。
【００７４】
一部の例では、図１の例示的システム１００の全てまたは一部が、図２に示す例示的システム２００などの、クラウドコンピューティング環境またはネットワークベース環境の一部に相当することができる。クラウドコンピューティング環境は、インターネットを介して様々なサービスおよびアプリケーションを提供することができる。これらのクラウドベースサービス（例えばサービス型ソフトウェア、サービス型プラットフォーム、サービス型インフラ等）は、ウェブブラウザまたは他のリモートインターフェイスによってアクセス可能であり得る。リモートデスクトップ環境または他の任意のクラウドベースコンピューティング環境により、本明細書に記載した様々な機能を提供することができる。
【００７５】
本明細書に記載しかつ／または図示したステップのプロセスパラメータおよび順序は、専ら例として示し、所望に応じて変えることができる。例えば、本明細書に図示しかつ／または記載したステップは特定の順序で図示しまたは解説したが、これらのステップは必ずしも図示しまたは解説した順序で実行する必要はない。本明細書に記載しかつ／または図示した様々な例示的方法は、本明細書に記載しまたは図示したステップの１つもしくは複数を省略してもよく、または開示したステップに加えて追加のステップを含むことができる。
【００７６】
完全に機能的なコンピューティングシステムとの関連で本明細書に様々な実施形態を記載しかつ／または図示してきたが、これらの例示的実施形態の１つまたは複数は、実際に配布するために用いられる特定の種類のコンピュータ可読媒体に関係なく、様々な形式のプログラム製品として配布することができる。本明細書に開示した実施形態は、特定のタスクを実行するソフトウェアモジュールを使用して実施することもできる。これらのソフトウェアモジュールには、コンピュータ可読記憶媒体またはコンピューティングシステム内に記憶することができるスクリプト、バッチ、または他の実行可能ファイルが含まれ得る。一部の実施形態では、これらのソフトウェアモジュールは、本明細書に開示した例示的実施形態の１つまたは複数を実行するためのコンピューティングシステムを構成することができる。
【００７７】
さらに、本明細書に記載したモジュールの１つまたは複数は、データ、物理装置、および／または物理装置の表現をある形態から別の形態に変えることができる。例えば本明細書に記載したモジュールの１つまたは複数は、重複排除データシステムから非参照データセグメントを除去するために必要なコンピューティングリソースの量を減らすことにより、重複排除データシステムを効率的な重複排除データシステムに変えることができる。別の例では、本明細書に記載したモジュールの１つまたは複数は、重複排除データシステムから非参照データセグメントを除去することによって重複排除データシステムを変えることができる。
【００７８】
前述の説明は、本明細書に開示した例示的実施形態の様々な側面を当業者が最大限に利用できるようにするために示した。この例示的説明は、網羅的であること、または開示した任意の厳密な形態に限定されることを意図しない。本開示の趣旨および範囲から逸脱することなく、多くの修正および改変が可能である。本明細書に開示した実施形態はあらゆる点で例示的であり、制限的ではないとみなすべきである。本開示の範囲を決定する際には、特許請求の範囲およびその等価物を参照すべきである。
【００７９】
特に断りのない限り、本明細書および特許請求の範囲で用いる語「ａ」または「ａｎ」は、「少なくとも１つの」を意味するものとして解釈すべきである。さらに、使いやすさのために、本明細書および特許請求の範囲で用いる「〜を含む」および「〜を有する」という語は、「〜を備える」という語と置き換えることができ、同じ意味を有する。
【図１】
0005642198.tif 000002
【図２】
0005642198.tif 000003
【図３】
0005642198.tif 000004
【図４】
0005642198.tif 000005
【図５】
0005642198.tif 000006
【図６】
0005642198.tif 000007
【図７】
0005642198.tif 000008
【図８】
0005642198.tif 000009