(57)【要約】【課題】分散ロケーション・ベースのデータ・ストレージのための機構を提供する。【解決手段】メモリ領域のセットの中の参照者メモリ領域にデータ・ファイルを書き込む要求が受け取られる。データ・ファイルの各データ・チャンクに関して、そのデータ・チャンクに関するハッシュ値の、参照者メモリ領域において参照される記憶された他のデータ・チャンクに関するハッシュ値に対する比較が、そのデータ・チャンクが参照者メモリ領域に存在しないことを示すことに応答して、そのデータ・チャンクが、メモリ領域のセットの中の別のメモリ領域に存在することに応答して、そのメモリ領域が、参照者メモリ領域に関連付けられた所定の数Ｎの所有者メモリ領域のうちの１つではないことに応答して、および所定の数Ｎの所有者メモリ領域に達していないことに応答して、データ・チャンクに対するリファレンスが、参照者メモリ領域に記憶される。【選択図】図６
2021500643.tif 000002
【特許請求の範囲】
【請求項１】
分散ロケーション・ベースのデータ・ストレージのための、データ処理システムにおける方法であって、
ストレージ機構によって、ホスト・システムから、メモリ領域のセットの中の参照者メモリ領域にデータ・ファイルを書き込む要求を受け取ること、ならびに
前記データ・ファイルの各データ・チャンクに関して、
前記データ・チャンクに関するハッシュ値の、前記参照者メモリ領域において参照される記憶された他のデータ・チャンクに関する他のハッシュ値に対する比較が、前記データ・チャンクが前記参照者メモリ領域に存在しないことを示すことに応答して、前記ストレージ機構によって、前記データがメモリ領域の前記セットの中の別のメモリ領域に存在するかどうかを判定すること、
前記データ・チャンクがメモリ領域の前記セットの中の別のメモリ領域に存在することに応答して、前記ストレージ機構によって、前記メモリ領域が、前記参照者メモリ領域に関連付けられた所定の数Ｎの所有者メモリ領域のうちの１つであるかどうかを判定すること、
前記メモリ領域が、前記参照者メモリ領域に関連付けられた前記所定の数Ｎの所有者メモリ領域のうちの１つではないことに応答して、前記ストレージ機構によって、前記所定の数Ｎの所有者メモリ領域の中の所有者メモリ領域の数に達しているかどうかを判定すること、および
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記ストレージ機構によって、前記参照者メモリ領域に前記データ・チャンクに対するリファレンスを記憶すること
を含む、方法。
【請求項２】
前記所定の数Ｎの所有者メモリ領域に達したことに応答して、前記ストレージ機構によって、前記参照者メモリ領域に前記データ・チャンクを記憶することをさらに含む、請求項１に記載の方法。
【請求項３】
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記ストレージ機構によって、前記データ・チャンクが記憶された前記メモリ領域が人気度閾値を満たしているかどうかを判定すること、および
前記データ・チャンクが記憶されている前記メモリ領域が前記人気度閾値を満たすことに応答して、前記ストレージ機構によって、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域を追加すること
をさらに含む、請求項１に記載の方法。
【請求項４】
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記ストレージ機構によって、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域を追加することをさらに含む、請求項１に記載の方法。
【請求項５】
前記所定の数Ｎの所有者メモリ領域内の前記所有者メモリ領域が、先着順ポリシーまたは人気度ポリシーのいずれかに基づいて決定される、請求項１に記載の方法。
【請求項６】
前記先着順ポリシーの下で、データが前記メモリ領域に記憶されるにつれ、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域が追加される、請求項５に記載の方法。
【請求項７】
前記人気度ポリシーの下で、前記メモリ領域の前記人気度が所定の閾値を満たすとき、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域が追加され、前記所定の閾値を満たすのが、前記メモリ領域に対する読取りもしくは書込み、またはその両方の回数が、前記閾値に達するとき、または前記閾値を超えるときである、請求項５に記載の方法。
【請求項８】
前記人気度ポリシーの下で、前記所定の数Ｎの所有者メモリ領域が一杯である場合に、別のメモリ領域の人気度が、前記所定の数Ｎの所有者メモリ領域に既に入っている人気度の最も低い所有者メモリ領域の人気度を超えたとき、前記所定の数Ｎの所有者メモリ領域から所有者メモリ領域が除去される、請求項７に記載の方法。
【請求項９】
コンピュータ可読プログラムを記憶しているコンピュータ可読記憶媒体を備えるコンピュータ・プログラム製品であって、
前記コンピュータ可読プログラムが、コンピューティング・デバイス上で実行されたとき、前記コンピューティング・デバイスに、
ホスト・システムから、メモリ領域のセットの中の参照者メモリ領域にデータ・ファイルを書き込む要求を受け取ること、ならびに
前記データ・ファイルの各データ・チャンクに関して、
前記データ・チャンクに関するハッシュ値の、前記参照者メモリ領域において参照される記憶された他のデータ・チャンクに関する他のハッシュ値に対する比較が、前記データ・チャンクが前記参照者メモリ領域に存在しないことを示すことに応答して、前記データがメモリ領域の前記セットの中の別のメモリ領域に存在するかどうかを判定すること、
前記データ・チャンクがメモリ領域の前記セットの中の別のメモリ領域に存在することに応答して、前記メモリ領域が、前記参照者メモリ領域に関連付けられた所定の数Ｎの所有者メモリ領域のうちの１つであるかどうかを判定すること、
前記メモリ領域が、前記参照者メモリ領域に関連付けられた前記所定の数Ｎの所有者メモリ領域のうちの１つではないことに応答して、前記所定の数Ｎの所有者メモリ領域の中の所有者メモリ領域の数に達しているかどうかを判定すること、および
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記参照者メモリ領域に前記データ・チャンクに対するリファレンスを記憶すること
を行わせる、コンピュータ・プログラム製品。
【請求項１０】
前記コンピュータ可読プログラムが、前記コンピューティング・デバイスに、前記所定の数Ｎの所有者メモリ領域に達したことに応答して、前記参照者メモリ領域に前記データ・チャンクを記憶することをさらに行わせる、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
前記コンピュータ可読プログラムが、前記コンピューティング・デバイスに、
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記データ・チャンクが記憶された前記メモリ領域が人気度閾値を満たしているかどうかを判定すること、および
前記データ・チャンクが記憶されている前記メモリ領域が前記人気度閾値を満たすことに応答して、前記所定の数Ｎの所有者メモリ領域に前記所有者メモリ領域を追加すること
をさらに行わせる、請求項９に記載のコンピュータ・プログラム製品。
【請求項１２】
前記コンピュータ可読プログラムが、前記コンピューティング・デバイスに、前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域を追加することをさらに行わせる、請求項９に記載のコンピュータ・プログラム製品。
【請求項１３】
前記所定の数Ｎの所有者メモリ領域内の前記所有者メモリ領域が、先着順ポリシーまたは人気度ポリシーのいずれかに基づいて決定される、請求項９に記載のコンピュータ・プログラム製品。
【請求項１４】
前記先着順ポリシーの下で、データが前記メモリ領域に記憶されるにつれ、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域が追加され、
前記人気度ポリシーの下で、前記メモリ領域の前記人気度が所定の閾値を満たすとき、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域が追加され、前記所定の閾値を満たすのが、前記メモリ領域に対する読取りもしくは書込み、またはその両方の回数が、前記閾値に達するとき、または前記閾値を超えるときである、あるいは
前記人気度ポリシーの下で、前記所定の数Ｎの所有者メモリ領域が一杯である場合に、別のメモリ領域の人気度が、前記所定の数Ｎの所有者メモリ領域に既に入っている人気度の最も低い所有者メモリ領域の人気度を超えたとき、前記所定の数Ｎの所有者メモリ領域から所有者メモリ領域が除去される、請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
装置であって、
プロセッサと、
前記プロセッサに結合されたメモリと
を備え、
前記メモリが、前記プロセッサによって実行されたとき、前記プロセッサに、
ホスト・システムから、メモリ領域のセットの中の参照者メモリ領域にデータ・ファイルを書き込む要求を受け取ること、ならびに
前記データ・ファイルの各データ・チャンクに関して、
前記データ・チャンクに関するハッシュ値の、前記参照者メモリ領域において参照される記憶された他のデータ・チャンクに関する他のハッシュ値に対する比較が、前記データ・チャンクが前記参照者メモリ領域に存在しないことを示すことに応答して、前記データがメモリ領域の前記セットの中の別のメモリ領域に存在するかどうかを判定すること、
前記データ・チャンクがメモリ領域の前記セットの中の別のメモリ領域に存在することに応答して、前記メモリ領域が、前記参照者メモリ領域に関連付けられた所定の数Ｎの所有者メモリ領域のうちの１つであるかどうかを判定すること、
前記メモリ領域が、前記参照者メモリ領域に関連付けられた前記所定の数Ｎの所有者メモリ領域のうちの１つではないことに応答して、前記所定の数Ｎの所有者メモリ領域の中の所有者メモリ領域の数に達しているかどうかを判定すること、および
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記参照者メモリ領域に前記データ・チャンクに対するリファレンスを記憶すること
を行わせる命令を備える、装置。
【請求項１６】
前記命令が、前記プロセッサに、前記所定の数Ｎの所有者メモリ領域に達したことに応答して、前記参照者メモリ領域に前記データ・チャンクを記憶することをさらに行わせる、請求項１５に記載の装置。
【請求項１７】
前記命令が、前記プロセッサに、
前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記データ・チャンクが記憶された前記メモリ領域が人気度閾値を満たしているかどうかを判定すること、および
前記データ・チャンクが記憶されている前記メモリ領域が前記人気度閾値を満たすことに応答して、前記所定の数Ｎの所有者メモリ領域に前記所有者メモリ領域を追加すること
をさらに行わせる、請求項１５に記載の装置。
【請求項１８】
前記命令が、前記プロセッサに、前記所定の数Ｎの所有者メモリ領域に達していないことに応答して、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域を追加することをさらに行わせる、請求項１５に記載の装置。
【請求項１９】
前記所定の数Ｎの所有者メモリ領域内の前記所有者メモリ領域が、先着順ポリシーまたは人気度ポリシーのいずれかに基づいて決定される、請求項１５に記載の装置。
【請求項２０】
前記先着順ポリシーの下で、データが前記メモリ領域に記憶されるにつれ、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域が追加され、
前記人気度ポリシーの下で、前記メモリ領域の前記人気度が所定の閾値を満たすとき、前記所定の数Ｎの所有者メモリ領域に前記メモリ領域が追加され、前記所定の閾値を満たすのが、前記メモリ領域に対する読取りもしくは書込み、またはその両方の回数が、前記閾値に達するとき、または前記閾値を超えるときである、あるいは
前記人気度ポリシーの下で、前記所定の数Ｎの所有者メモリ領域が一杯である場合に、別のメモリ領域の人気度が、前記所定の数Ｎの所有者メモリ領域に既に入っている人気度の最も低い所有者メモリ領域の人気度を超えたとき、前記所定の数Ｎの所有者メモリ領域から所有者メモリ領域が除去される、請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、改良されたデータ処理装置および方法に関し、より詳細には、分散ロケーション・ベースの重複排除のパフォーマンスを向上させるための機構に関する。
【背景技術】
【０００２】
ストレージ・システムにおいて、重複排除は、システムにわたる重複データを、そのデータの単一のインスタンスに対するポインタ、リファレンス、またはそれに類するもので置き換え、それ故、全体的なストレージ要件を低減するプロセスである。通常、重複排除リファレンスは、データ自体、またはデータを代表するメタデータである所有者をポイントするメタデータ・エントリである。データを記憶するための主要な２つのスキーム、すなわち、コンテンツ・ベースの重複排除、およびロケーション・ベースの重複排除が存在する。コンテンツ・ベースの重複排除において、ストレージ内に配置されたデータは、データのフィンガプリント（fingerprint）、ハッシュ値、またはそれに類するものによって特定される。ロケーション・ベースの重複排除において、ストレージ内に配置されたデータは、データのユーザ空間ロケーション（ボリューム・オフセット（volume-offset））によって特定される。
【０００３】
ロケーション・ベースの重複排除の重要な１つの利点は、多くの読取り、または順次の読取りを実行する際のデータの局所性である。ロケーション・ベースの重複排除は、より少ない回数のディスク入出力（Ｉ／Ｏ）しか要求しない。他方、コンテンツ・ベースの重複排除は、システムにおけるＩ／Ｏが少ない場合、リソースのより良好な平衡化を得る。重複排除は、相当な量のランダム・アクセス・メモリ（ＲＡＭ）を要求するので、一部の実施例は、管理またはスワップ、あるいはその両方の簡略化のために、メタデータを、所有者領域および参照者領域（referrer region）などの領域（空間の分割）に分割する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
分散ロケーション・ベースの重複排除のパフォーマンスを向上させるための方法、コンピュータ・プログラム、および装置を提供する。
【課題を解決するための手段】
【０００５】
この概要は、本明細書の詳細な説明においてさらに説明される選定された概念を簡略化された形態で概説すべく与えられる。この概要は、主張される主題の重要な要素もしくは不可欠な特徴を特定することは意図しておらず、主張される主題の範囲を限定するのに使用されることも意図していない。
【０００６】
１つの例示的な実施形態において、分散ロケーション・ベースのデータ・ストレージのための、データ処理システムにおける方法が提供される。例示的な実施形態は、ホスト・システムから、メモリ領域のセットの中の参照者メモリ領域にデータ・ファイルを書き込む要求を受け取る。データ・ファイルの各データ・チャンクに関して、例示的な実施形態は、データ・チャンクに関するハッシュ値の、参照者メモリ領域において参照される記憶された他のデータ・チャンクに関する他のハッシュ値に対する比較が、そのデータ・チャンクが参照者メモリ領域に存在しないことを示すことに応答して、データがメモリ領域のセットの中の別のメモリ領域に存在するかどうかを判定する。例示的な実施形態は、データ・チャンクがメモリ領域のセットの中の別のメモリ領域に存在することに応答して、メモリ領域が、参照者メモリ領域に関連付けられた所定の数Ｎの所有者メモリ領域のうちの１つであるかどうかを判定する。例示的な実施形態は、メモリ領域が、参照者メモリ領域に関連付けられた所定の数Ｎの所有者メモリ領域のうちの１つではないことに応答して、所定の数Ｎの所有者メモリ領域の中の所有者メモリ領域の数に達しているかどうかを判定する。例示的な実施形態は、所定の数Ｎの所有者メモリ領域に達していないことに応答して、参照者メモリ領域にデータ・チャンクに対するリファレンスを記憶する。
【０００７】
他の例示的な実施形態において、コンピュータ可読プログラムを有するコンピュータ使用可能媒体またはコンピュータ可読媒体を備えるコンピュータ・プログラム製品が、提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されたとき、コンピューティング・デバイスに、方法を例示する実施形態に関して前段で概略が述べられる動作のうちの様々な動作、およびその組合せを実行させる。
【０００８】
さらに別の例示的な実施形態において、システム／装置が提供される。システム／装置は、１つまたは複数のプロセッサと、その１つまたは複数のプロセッサに結合されたメモリとを備えてよい。メモリは、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、方法を例示する実施形態に関して前段で概略が述べられる動作のうちの様々な動作、およびその組合せを実行させる命令を備えてもよい。
【０００９】
本発明のこれら、およびその他の特徴および利点が、本発明の例示的な実施形態の後段の詳細な説明に記載され、それに鑑みて、当業者には明白となろう。
【００１０】
本発明とともに、本発明の使用の好ましい様態、ならびにさらなる目的および利点は、添付の図面と併せて読まれるとき、例示的な実施形態の後段の詳細な説明を参照して理解されるのが最良である。
【図面の簡単な説明】
【００１１】
【図１】例示的な実施形態による、４０ＫＢファイルを、多くのタイプのオーバヘッドにつながる異なる８つの所有者領域における５つの８ＫＢチャンクとして書き込むことを示す図である。
【図２】例示的な実施形態の態様が実施されてよい分散データ処理システムを例示する図である。
【図３】例示的な実施形態の態様が実施されてよいコンピューティング・デバイスを例示するブロック図である。
【図４】例示的な実施形態による、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるストレージ機構を示す機能ブロック図である。
【図５】例示的な実施形態による、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるストレージ機構によって実行される動作を示すフローチャートである。
【図６】例示的な実施形態による、重複排除が、メモリ領域のサブセット、すなわち、参照者メモリ領域、および関連付けられた１つまたは複数の所有者メモリ領域の間で実施されることになる場合、ストレージ機構によって実行される動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
前述したとおり、データを記憶するための主要な２つのスキーム、すなわち、コンテンツ・ベースの重複排除、およびロケーション・ベースの重複排除が存在する。コンテンツ・ベースの重複排除において、ストレージ内に配置されたデータは、データのフィンガプリント、ハッシュ値、またはそれに類するものによって特定される。ロケーション・ベースの重複排除において、ストレージ内に配置されたデータは、データのユーザ空間ロケーション（ボリューム・オフセット）によって特定される。メタデータ領域に基づくシステムにおけるロケーション・ベースの重複排除を一例として利用すると、局所性のいずれの利点も、データ（または所有側のメタデータ（owning metadata））がストレージ全体にわたって分散される多数の重複排除が行われる場合、問題を抱える可能性がある。例えば、６４ＫＢファイルが８つの８ＫＢチャンクとして記憶される場合、６４ＫＢファイルの読取りは、異なる８つの所有者領域にアクセスすることを要求する可能性があり、このことが、例示的な実施形態による図１に示されるとおり、多くのタイプのオーバヘッドにつながる可能性がある。
【００１３】
すなわち、図１に示されるとおり、ホスト・システム１０２が、メモリ領域１０８からのファイルに関する読取りを実行する。メモリ領域１０８において、そのファイルに関連付けられたメタデータが、読み取られ、異なる５つの所有者メモリ領域、メモリ領域１０４、１０６、１１０、１１２、および１１４が、そのファイルの少なくとも一部分を備えるものとして識別される。このため、メモリ領域１０８が、メモリ領域１０４上に存在するそのファイルの部分に関する読取りを実行し、メモリ領域１０８が、メモリ領域１０６上に存在するそのファイルの部分に関する読取りを実行し、メモリ領域１０８が、メモリ領域１１０上に存在するそのファイルの部分に関する読取りを実行し、メモリ領域１０８が、メモリ領域１１２上に存在するそのファイルの部分に関する読取りを実行し、かつメモリ領域１０８が、メモリ領域１１４上に存在するそのファイルの部分に関する読取りを実行する。それらの読取りに基づいて、メモリ領域１０８が、メモリ領域１０４から、メモリ領域１０４上に存在するそのファイルの部分に関する応答Ｈ１を受信し、メモリ領域１０８が、メモリ領域１０６から、メモリ領域１０６上に存在するそのファイルの部分に関する応答Ｈ２を受信し、メモリ領域１０８が、メモリ領域１１０から、メモリ領域１１０上に存在するそのファイルの部分に関する応答Ｈ３を受信し、メモリ領域１０８が、メモリ領域１１２から、メモリ領域１１２上に存在するそのファイルの部分に関する応答Ｈ４を受信し、かつメモリ領域１０８が、メモリ領域１１４から、メモリ領域１１４上に存在するそのファイルの部分に関する応答Ｈ５を受信する。応答Ｈ１、Ｈ２、Ｈ３、Ｈ４、およびＨ５を受信すると、メモリ領域１０８は、Ｈ１、Ｈ２、Ｈ３、Ｈ４、およびＨ５を含む応答でホスト・システム１０２に応答する。したがって、異なる５つの所有者メモリ領域にわたってファイルのチャンクが記憶されているため、１つのメモリ領域（メモリ領域１０８）に対する１回の読取りが、他の所有者メモリ領域からのより多くの読取り、クラスタ・メモリ領域の間のより多くの通信、ならびにすべてのメタデータが最初に読み取られるメモリ領域に包含されているわけではない場合、メモリ領域の間のメタデータのスワップインを含んでいた。これらのさらなる読取りにまで及ぶこのオーバヘッドが、システムの深刻なパフォーマンス低下につながる。
【００１４】
したがって、例示的な実施形態は、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させる機構を提供する。例示的な実施形態は、参照者メモリ領域内の所有者メモリ領域選択に対して動的管理ロジックを適用することによって、異なる参照者メモリ領域および所有者メモリ領域の間で重複リンクをインテリジェントに作成する。このことは、２つの基本的な機構によって実現される。第１の機構は、以下の方法のうちの１つにおいて所与の参照者に結び付けられてよい所有者メモリ領域の数を（最大で所定の数Ｎの所有者メモリ領域に）制限する。すなわち、
−  データが所定の数Ｎの所有者メモリ領域上に記憶されることを可能にする「先着順」ポリシーを利用すること。
−  データが、参照者メモリ領域における所有者メモリ領域の人気度に基づいて記憶されることを可能にする「人気度」ポリシーを利用すること。
所有者メモリ領域の人気度は、単一の書込み内で決定されてよい。
所有者メモリ領域の人気度は、複数の書込みにわたって決定されてよい。
−  最初、データが、Ｍ＜Ｎである第２の所定の数Ｍの所有者メモリ領域上に記憶される「先着順」で記憶されることを可能にし、次に、データが、最大で所定の数Ｎの所有者メモリ領域までに限って、参照者メモリ領域における所有者メモリ領域の人気度に基づいて記憶されることを可能にするハイブリッド・ポリシーを利用すること。
第２の機構は、人気度のより低い所有者メモリ領域を、人気度のより高い所有者メモリ領域で置き換えて、より有益な所有者メモリ領域が識別されたとき、人気度のより低い所有者メモリ領域の使用を中止して、好ましい所有者メモリ領域とするようにする。
【００１５】
例示的な実施形態の様々な態様の説明を始める前に、この説明全体にわたって、「機構」という用語は、様々な動作、機能、およびそれに類するものを実行する本発明の要素を指すように使用されることを認識されたい。本明細書において使用される「機構」という用語は、装置、手続き、またはコンピュータ・プログラム製品の形態における例示的な実施形態の機能または態様の実施例であることが可能である。手続きである場合、その手続きは、１つまたは複数のデバイス、装置、コンピュータ、データ処理システム、またはそれに類するものによって実装される。コンピュータ・プログラム製品である場合、コンピュータ・プログラム製品として、またはコンピュータ・プログラム製品上に実現されたコンピュータ・コードまたはコンピュータ命令によって表される論理が、その機能を実施すべく、または特定の「機構」に関連付けられた動作を実行すべく１つまたは複数のハードウェア・デバイスによって実行される。このため、本明細書において説明される機構は、専用ハードウェアとして、汎用ハードウェア上で実行されるソフトウェアとして、それらの命令が専用ハードウェアもしくは汎用ハードウェアによって直ちに実行可能であるように媒体上に記憶されたソフトウェア命令として、機能を実行するための手続きもしくは方法として、または以上のいずれかの組合せとして実装されてよい。
【００１６】
本説明および特許請求の範囲は、例示的な実施形態の特定の特徴および要素に関して、「１つの」、「のうちの少なくとも１つの」および「のうちの１つまたは複数の」という用語を利用する可能性がある。これらの用語および句は、その特定の例示的な実施形態に存在する特定の特徴または要素のうちの少なくとも１つが存在するが、複数が存在することも可能であることを述べることを意図していることを認識されたい。すなわち、これらの用語／句は、本説明もしくは特許請求の範囲を単一の特徴／要素が存在することに限定することも、複数のそのような特徴／要素が存在することを要求することも意図していない。それどころか、これらの用語／句は、複数のそのような特徴／要素が本説明および特許請求の範囲に含まれる可能性を伴って、少なくとも単一の特徴／要素を要求することしかしない。
【００１７】
さらに、「エンジン」という用語の使用は、本発明の実施形態および特徴について説明することに関して本明細書において使用される場合、そのエンジンに帰せられる、またはそのエンジンによって実行される、あるいはその両方である、アクション、ステップ、プロセス、その他を実現するため、または実行するため、あるいはその両方のためのいずれの特定の実装形態に限定することも意図してはいないことを認識されたい。エンジンは、汎用プロセッサまたは専用プロセッサ、あるいはその両方を、マシン可読メモリにロードされ、もしくは記憶されて、そのプロセッサによって実行される適切なソフトウェアと組み合わせて使用することを含めた、ただし、それには限定されない、指定された機能を実行するソフトウェア、ハードウェア、またはファームウェア、あるいはその任意の組合せであってよいが、それには限定されない。さらに、特定のエンジンに関連付けられたいずれの名前も、特に明記しない限り、参照の便宜のためであり、特定の実装形態に限定することは意図していない。さらに、１つのエンジンに帰せられるいずれの機能も、複数のエンジンによって同様に実行されることが可能であり、同一のタイプもしくは異なるタイプの別のエンジンの機能に組み込まれること、またはそのような機能と組み合わされること、あるいはその両方が可能であり、あるいは様々な構成の１つまたは複数のエンジンにわたって分散されることが可能である。
【００１８】
さらに、後段の説明は、例示的な実施形態の例示的な実装形態をさらに例示して、例示的な実施形態の機構の理解を助けるべく、例示的な実施形態の様々な要素に関する複数の様々な実施例を使用することを認識されたい。これらの実施例は、非限定的であり、例示的な実施形態の機構を実装するための様々な可能性を網羅するものではないことが意図される。本説明に鑑みて、本発明の思想および範囲を逸脱することなく、本明細書において提供される実施例に加えて、またはそれらの代わりに利用されてよい、これらの様々な要素に関する他の多くの代替の実装形態が存在することが、当業者には明白であろう。
【００１９】
このため、例示的な実施形態は、異なる多くのタイプのデータ処理環境において利用されることが可能である。例示的な実施形態の特定の要素および機能の説明に関する脈絡を提供するために、図２および図３が、例示的な実施形態の態様が実施されてよい例示的な環境として以下に与えられる。図２および図３は、実施例に過ぎず、本発明の実施形態の態様が実施されてよい環境に関する限定を主張することも、暗示することも意図していないことを認識されたい。本発明の思想および範囲を逸脱することなく、説明される環境に多くの変形が加えられてよい。
【００２０】
図２は、例示的な実施形態の態様が実施されてよい例示的な分散データ処理システムの図的表現を示す。分散データ処理システム２００は、例示的な実施形態の態様が実施されてよいコンピュータのネットワークを含んでよい。分散データ処理システム２００は、分散データ処理システム２００と一緒に接続された様々なデバイスおよびコンピュータの間で通信リンクをもたらすのに使用される媒体である、少なくとも１つのネットワーク２０２を含む。ネットワーク２０２は、有線通信リンク、無線通信リンク、または光ファイバ・ケーブルなどの接続を含んでよい。
【００２１】
図示される実施例において、サーバ２０４およびサーバ２０６が、ストレージ・ユニット２０８とともにネットワーク２０２に接続される。さらに、クライアント２１０、２１２、および２１４もネットワーク２０２に接続される。これらのクライアント２１０、２１２、および２１４は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータ、またはそれに類するものであってよい。図示される実施例において、サーバ２０４は、クライアント２１０、２１２、および２１４に起動ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータを提供する。クライアント２１０、２１２、および２１４は、図示される実施例においてサーバ２０４に対するクライアントである。分散データ処理システム２００は、図示されないさらなるサーバ、クライアント、およびその他のデバイスを含んでよい。
【００２２】
図示される実施例において、分散データ処理システム２００は、互いに通信すべく伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）プロトコル・スイートを使用するネットワークおよびゲートウェイの世界的な集まりを表すネットワーク２０２を有するインターネットである。インターネットの中核には、データおよびメッセージをルーティングする数千の民間、政府、教育、およびその他のコンピュータ・システムから成る、主要なノードまたはホスト・コンピュータの間の高速データ通信線のバックボーンがある。無論、分散データ処理システム２００は、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、またはそれに類するものなどの、いくつもの異なるタイプのネットワークを含むように実施されてもよい。前述したとおり、図２は、本発明の様々な実施形態に関するアーキテクチャ上の限定ではなく、実施例であることが意図されており、したがって、図２に示される特定の要素は、本発明の例示的な実施形態が実施されてよい環境に関して限定するものと見なされるべきではない。
【００２３】
図２に示されるとおり、コンピューティング・デバイスのうちの１つまたは複数、例えば、サーバ２０４が、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるための機構を実装するように特別に構成されてよい。コンピューティング・デバイスの構成は、例示的な実施形態に関して本明細書において説明される動作の実行、および出力の生成を容易化すべく特定用途向けハードウェア、ファームウェア、またはそれに類するものを提供することを含んでよい。コンピューティング・デバイスの構成は、コンピューティング・デバイスの１つまたは複数のハードウェア・プロセッサに、例示的な実施形態に関して本明細書において説明される動作を実行するように、かつ出力を生成するようにプロセッサを構成するソフトウェア・アプリケーションを実行させるために、１つまたは複数のストレージ・デバイスに記憶され、サーバ２０４などのコンピューティング・デバイスのメモリにロードされるソフトウェア・アプリケーションを提供することをさらに、または代替として、含んでよい。さらに、ハードウェア上で実行される特定用途向けハードウェア、ファームウェア、ソフトウェア・アプリケーション、またはそれに類するものの任意の組合せが、例示的な実施形態の思想および範囲を逸脱することなく使用されてよい。
【００２４】
コンピューティング・デバイスが、これらの様態のうちの１つにおいて構成されると、コンピューティング・デバイスは、例示的な実施形態の機構を実装するように特別に構成された専用コンピューティング・デバイスとなり、汎用コンピューティング・デバイスではないことを認識されたい。さらに、後段で説明されるとおり、例示的な実施形態の機構の実装形態は、コンピューティング・デバイスの機能を向上させ、かつ重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させることを容易化する有用で具体的な結果をもたらす。
【００２５】
前述したとおり、例示的な実施形態の機構は、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるための動作を実行すべく、特別に構成されたコンピューティング・デバイス、またはデータ処理システムを利用する。これらのコンピューティング・デバイス、またはデータ処理システムは、本明細書において説明されるシステム／サブシステムのうちの１つまたは複数を実装すべく、ハードウェア構成、ソフトウェア構成、またはハードウェア構成とソフトウェア構成の組合せを通じて特別に構成された様々なハードウェア要素を備えてよい。図３は、例示的な実施形態の態様が実施されてよい単に１つの例示的なデータ処理システムのブロック図である。データ処理システム３００は、本明細書において説明される例示的な実施形態の動作、出力、および外部効果を実現するように、本発明の例示的な実施形態のプロセスおよび態様を実施するコンピュータ使用可能コードまたはコンピュータ使用可能命令が配置されること、または実行されること、あるいはその両方が可能である、図２におけるサーバ２０４などのコンピュータの実施例である。
【００２６】
図示される実施例において、データ処理システム３００は、ノースブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）３０２と、サウスブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）３０４とを含むハブ・アーキテクチャを使用する。処理ユニット３０６、メイン・メモリ３０８、およびグラフィックス・プロセッサ３１０が、ＮＢ／ＭＣＨ３０２に接続される。グラフィックス・プロセッサ３１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を通じてＮＢ／ＭＣＨ３０２に接続されてよい。
【００２７】
図示される実施例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ３１２がＳＢ／ＩＣＨ３０４に接続される。オーディオ・アダプタ３１６、キーボードおよびマウス・アダプタ３２０、モデム３２２、読取り専用メモリ（ＲＯＭ）３２４、ハードディスク・ドライブ（ＨＤＤ）３２６、ＣＤ−ＲＯＭドライブ３３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよびその他の通信ポート３３２、ならびにＰＣＩ／ＰＣＩｅデバイス３３４が、バス３３８およびバス３４０を通じてＳＢ／ＩＣＨ３０４に接続される。ＰＣＩ／ＰＣＩｅデバイスは、例えば、ノートブック・コンピュータのためのイーサネット（Ｒ）・アダプタ、アドイン・カード、およびＰＣカードを含んでよい。ＰＣＩは、カード・バス・コントローラを使用する一方で、ＰＣＩｅは、それを使用しない。ＲＯＭ３２４は、例えば、フラッシュ基本入出力システム（ＢＩＯＳ）であってよい。
【００２８】
ＨＤＤ３２６およびＣＤ−ＲＯＭドライブ３３０は、バス３４０を通じてＳＢ／ＩＣＨ３０４に接続される。ＨＤＤ３２６およびＣＤ−ＲＯＭドライブ３３０は、例えば、インテグレーティド・ドライブ・エレクトロニクス（ＩＤＥ）またはシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）インターフェースを使用してよい。スーパ入出力（ＳＩＯ）デバイス３３６が、ＳＢ／ＩＣＨ３０４に接続されてよい。
【００２９】
オペレーティング・システムが、処理ユニット３０６上で実行される。オペレーティング・システムは、図３におけるデータ処理システム３００内の様々な構成要素を調整し、それらの構成要素の制御を提供する。クライアントとして、オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）  ７（Ｒ）などの市販のオペレーティング・システムであってよい。Ｊａｖａ（Ｒ）（ＴＭ）プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムと連携して実行されてよく、データ処理システム３００上で実行されるＪａｖａ（Ｒ）（ＴＭ）プログラムまたはＪａｖａ（Ｒ）（ＴＭ）アプリケーションからのオペレーティング・システムに対する呼出しをもたらす。
【００３０】
サーバとして、データ処理システム３００は、アドバンスト・インタラクティブ・エグゼクティブ（ＡＩＸ（Ｒ））オペレーティング・システムまたはＬｉｎｕｘ（Ｒ）オペレーティング・システムを実行する、例えば、ＩＢＭ（Ｒ）ｅＳｅｒｖｅｒ（ＴＭ）システム  ｐ（Ｒ）コンピュータ・システム、Ｐｏｗｅｒ（ＴＭ）プロセッサ・ベースのコンピュータ・システム、またはそれに類するものであってよい。データ処理システム３００は、処理ユニット３０６における複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ）システムであってよい。代替として、シングル・プロセッサ・システムが使用されてもよい。
【００３１】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションもしくはプログラムのための命令は、ＨＤＤ３２６などのストレージ・デバイス上に配置され、処理ユニット３０６によって実行されるようにメイン・メモリ３０８にロードされてよい。本発明の例示的な実施形態のためのプロセスは、例えば、メイン・メモリ３０８、ＲＯＭ３２４などのメモリに、または、例えば、１つもしくは複数の周辺デバイス３２６および３３０に配置されてよい、コンピュータ使用可能プログラム・コードを使用して処理ユニット３０６によって実行されてよい。
【００３２】
図３に示されるバス３３８またはバス３４０などのバス・システムは、１つまたは複数のバスから成ってよい。無論、バス・システムは、そのファブリックまたはアーキテクチャに付加された様々な構成要素またはデバイスの間でデータの転送を可能にする任意のタイプの通信ファブリックまたは通信アーキテクチャを使用して実装されてよい。図３のモデム３２２またはネットワーク・アダプタ３１２などの通信ユニットは、データを送受信するのに使用される１つまたは複数のデバイスを含んでよい。メモリは、例えば、図３におけるＮＢ／ＭＣＨ３０２に見られるようなメイン・メモリ３０８、ＲＯＭ３２４、またはキャッシュであってよい。
【００３３】
前述したとおり、一部の例示的な実施形態において、例示的な実施形態の機構は、特定用途向けハードウェア、ファームウェア、もしくはそれに類するもの、ＨＤＤ３２６などのストレージ・デバイスに記憶され、処理ユニット３０６などの１つまたは複数のハードウェア・プロセッサによって実行されるように、メイン・メモリ３０８などのメモリにロードされるアプリケーション・ソフトウェア、またはそれに類するものとして実装されてよい。このため、図３に示されるコンピューティング・デバイスは、例示的な実施形態の機構を実装するように特別に構成され、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるための機構に関して後段で説明される動作を実行するように、かつ出力を生成するように特別に構成される。
【００３４】
図２および図３におけるハードウェアは、実装形態に依存して異なってよいことが当業者には認識されよう。フラッシュ・メモリ、均等の不揮発性メモリ、または光ディスク・ドライブ、およびそれに類するものなどの他の内部ハードウェアまたは周辺デバイスが、図２および図３に示されるハードウェアに加えて、またはその代わりに使用されてよい。また、例示的な実施形態のプロセスは、本発明の思想および範囲を逸脱することなく、前述したＳＭＰシステム以外のマルチプロセッサ・データ処理システムに適用されてもよい。
【００３５】
さらに、データ処理システム３００は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話機もしくは他の通信デバイス、携帯情報端末（ＰＤＡ）、またはそれに類するものを含む、いくつもの異なるデータ処理システムのいずれかの形態をとってよい。一部の説明的な例において、データ処理システム３００は、例えば、オペレーティング・システム・ファイルまたはユーザによって生成されたデータ、あるいはその両方を記憶するための不揮発性メモリを提供すべく、フラッシュ・メモリを備えて構成されたポータブル・コンピューティング・デバイスであってよい。基本的に、データ処理システム３００は、アーキテクチャ上の限定なしに任意の知られている、または今後、開発されるデータ処理システムであってよい。
【００３６】
図４は、例示的な実施形態による、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるストレージ機構の機能ブロック図を示す。前述したとおり、ストレージ機構は、参照者メモリ領域内の所有者メモリ領域選択に対して動的管理ロジックを適用することによって、異なる参照者メモリ領域および所有者メモリ領域の間で重複リンクをインテリジェントに作成する。例示的な実施形態によれば、参照者領域は、データが最初に書き込まれ、かつデータを記憶する他のメモリ領域（すなわち、所有者領域）に対するリファレンスを有する、または、参照者メモリ領域がデータを記憶することも可能であるので、参照者領域自体に対するリファレンスを有するメモリ領域である。第１の実施形態において、ストレージ機構４０６は、データが所定の数Ｎの所有者メモリ領域上に記憶されることを可能にする「先着順」ポリシーを利用して、所与の参照者メモリ領域（最大で所定の数Ｎの所有者メモリ領域まで）に結び付けられてよい所有者メモリ領域の数を制限する。
【００３７】
この第１の実施形態において、データ処理システム４００におけるホスト・システム４０２が、メモリ領域にデータを書き込むとき、ストレージ機構４０６が、そのデータを、例えば、８ＫＢデータ・チャンク単位で書き込む／記憶する。このため、ホスト・システム４０２が、メモリ領域、例えば、メモリ領域４０４ａ〜４０４ｍａｘにおけるメモリ領域４０４ａに１６ＫＢデータ・ファイルを書き込むとき、書き込まれるメモリが、破線のボックスで示される参照者メモリ領域４０８となる。ストレージ機構４０６が、１６ＫＢデータ・ファイルの２つの８ＫＢデータ・チャンクのそれぞれに関してハッシュ値を生成し、各８ＫＢデータ・チャンクに関するハッシュ値を、参照されるメモリ領域４０４ａ〜４０４ｍａｘにおける記憶された他のデータ・チャンクに関するハッシュ値と比較する。ストレージ機構４０６は、ホスト４０２に、メモリ領域４０４ａ〜４０４ｍａｘのうちの１つまたは複数に、またはスタンドアロンの機構として存在することが可能なデバイスである。参照者メモリ領域４０８が、一方、または両方の合致するデータ・チャンクが参照者メモリ領域４０８、または所有者メモリ領域４１０ａ〜４１０ｎのうちの１つもしくは複数に既に存在することを示す場合、８ＫＢデータ・チャンクを記憶するのではなく、ストレージ機構４０６は、それらのデータ・チャンクに対する後のリファレンスが、参照者メモリ領域４０８、または所有者メモリ４１０ａ〜４１０ｎのうちの１つもしくは複数に対するハッシュ値比較によって識別されることを認識する。しかし、メモリ領域４０４ａ〜４０４ｍａｘに対する比較が、データ・チャンクのうちの一方が、またはいずれもが参照者メモリ領域４０８にも、関連付けられた所有者メモリ４１０ａ〜４１０ｎにも既に存在するのではないことを示す場合、ストレージ機構４０６は、その存在しないデータ・チャンクを参照者メモリ領域４０８に記憶する。
【００３８】
「先着順」ポリシーにおいて、前に記憶されてはいないデータ・チャンクが、参照者メモリ領域４０８に書き込まれる。しかし、参照者メモリ領域４０８の上で、または参照者メモリ領域４０８に関連付けられた所有者メモリ領域４１０ａ〜４１０ｎのうちの関連する１つまたは複数の上で、あるいはその組合せの上でデータがアクセスされるたびに、ストレージ機構４０６は、データが存在するメモリ領域をロードする。このため、６４ＫＢデータ・ファイルが、異なる８つの所有者メモリ領域上に記憶された８つの８ＫＢデータ・チャンクを有する場合、ストレージ機構４０６は、６４ＫＢデータ・ファイルの８ＫＢチャンクを備える異なる８つすべてのメモリ領域をロードする。問題は、８ＫＢデータ・チャンクが異なる３２の所有者メモリ領域にわたって記憶されている２５６ＫＢデータ・ファイルの場合、より重大である。このため、例示的な実施形態によれば、ストレージ機構４０６は、所定の数Ｎだけの所有者メモリ領域の上に８ＫＢデータ・チャンクを記憶する。このため、データが分散された様態で記憶されるにつれ、ストレージ機構４０６は、データ構造、データ・リスト、データ・テーブル、またはそれに類するものなどの追跡機構を使用して、データ・チャンクがどこに記憶されるかを常に把握している。したがって、参照者メモリ領域４０８および関連する所有者メモリ領域４１０ａ〜４１０ｎのグループの中の特定の所有者メモリ領域の上にデータが記憶されるにつれ、その特定のメモリ領域が、所定の数Ｎの所有者メモリ領域に追加される。数Ｎの所有者メモリ領域に達すると、ストレージ機構４０６は、データ・ブロックの将来の記憶のためにその所定の数Ｎの所有者メモリ領域における所有者メモリ領域だけを利用する。
【００３９】
ストレージ機構４０６が、参照者メモリ領域４０８または所定の数Ｎの所有者メモリ領域における所有者メモリ領域４１０ａ〜４１０ｎ、あるいはその両方とは異なる所有者メモリ領域上に存在する８ＫＢデータ・チャンクを書き込む、または読み取る場合、ストレージ機構４０６は、その所有者メモリ領域が、所定の数Ｎの所有者メモリ領域における所有者メモリ領域のうちの１つではないことを認識する。このことが生じた場合、ストレージ機構４０６は、８ＫＢデータ・チャンクを参照者メモリ領域４０８に書き込む。このことは、参照者メモリ領域４０８内、および関連付けられた所有者メモリ領域４１０ａ〜４１０ｎ内で重複する８ＫＢチャンクを生成する可能性がある一方で、重複する８ＫＢチャンクを生成することは、所定の数Ｎを超える所有者メモリ領域をロードしないことによってストレージ機構４０６によって経験されるオーバヘッドを低減する。このため、「先着順」ポリシーを使用して、ストレージ機構４０６は、メモリまたは処理におけるオーバヘッドを低減し、ユーザ入力／出力サイズに依存しない。
【００４０】
第２の実施形態において、ストレージ機構４０６は、参照者メモリ領域４０８、および参照者メモリ領域４０８によって識別される関連付けられた所有者メモリ領域４１０ａ〜４１０ｎの人気度に基づいて重複排除が作成されることを可能にする「人気度」ポリシーを利用する。この場合も、データ処理システム４００におけるホスト・システム４０２が、参照者メモリ領域４０８、および関連付けられた所有者メモリ領域４１０ａ〜４１０ｎのうちの１つまたは複数にデータを記憶するとき、データは、例えば、８ＫＢデータ・チャンク単位で記憶される。このため、ホスト・システム４０２が、参照者メモリ領域４０８に１６ＫＢデータ・ファイルを書き込む場合、ストレージ機構４０６は、１６ＫＢデータ・ファイルの２つの８ＫＢデータ・チャンクのそれぞれに関してハッシュ値を生成し、各８ＫＢデータ・チャンクに関するハッシュ値を、メモリ領域４０４ａ〜４０４ｍａｘにおいて参照される記憶された他のデータ・チャンクに関するハッシュ値と比較する。参照者メモリ領域４０８が、一方、または両方の合致するデータ・チャンクが参照者メモリ領域４０８、または所有者メモリ領域４１０ａ〜４１０ｎのうちの１つもしくは複数に既に存在することを示す場合、８ＫＢデータ・チャンクを記憶するのではなく、ストレージ機構４０６は、それらのデータ・チャンクに対する後のリファレンスが、参照者メモリ領域４０８、または所有者メモリ領域４１０ａ〜４１０ｎのうちの１つもしくは複数に対するハッシュ値比較によって識別されることを認識する。しかし、メモリ領域４０４ａ〜４０４ｍａｘに対する比較が、データ・チャンクのうちの一方が、またはいずれもが参照者メモリ領域４０８にも、関連付けられた所有者メモリ領域４１０ａ〜４１０ｎにも既に存在するのではないことを示す場合、ストレージ機構４０６は、その存在しないデータ・チャンクを参照者メモリ領域４０８に記憶する。
【００４１】
「人気度」ポリシーにおいて、データ・チャンクが、メモリ領域４０４ａ〜４０４ｍａｘに書き込まれるのにつれても、メモリ領域４０４ａ〜４０４ｍａｘから読み取られるのにつれても、ストレージ機構４０６が、カウンタ、データ構造、またはそれに類するものを介して、各所有者メモリ領域の人気度を追跡する。追跡の値が、特定の所有者メモリ領域が閾値を超えていることを示すとき、その特定の所有者メモリ領域が、所定の数Ｎの所有者メモリ領域に追加される。このため、所定の数Ｎの所有者メモリ領域における所有者メモリ領域に対する読取りおよび書込みの頻度は、これらの所有者領域が、新たな書込みが向けられる所有者領域であることを示す。この場合も、参照者メモリ領域４０８の上で、または関連付けられた所有者メモリ領域４１０ａ〜４１０ｎの上で、あるいはその両方の上でデータがアクセスされるたびに、ストレージ機構４０６は、データが存在する所有者メモリ領域をロードする。このため、例示的な実施形態によれば、ストレージ機構４０６は、人気度が最も高い所有者メモリ領域を識別し、それらの所有者メモリ領域を所定の数Ｎの所有者メモリ領域に追加し、データ・ブロックの将来の記憶のために所定の数Ｎの所有者メモリ領域におけるそれらの所有者メモリ領域を利用する。
【００４２】
ストレージ機構４０６が、参照者メモリ領域４０８または所定の数Ｎの所有者メモリ領域における所有者メモリ領域４１０ａ〜４１０ｎ、あるいはその両方とは異なる所有者メモリ領域上に存在する８ＫＢデータ・チャンクを書き込む、または読み取る場合、ストレージ機構４０６は、その所有者メモリ領域が、所定の数Ｎの所有者メモリ領域における所有者メモリ領域のうちの１つではないことを認識する。このことが生じた場合、ストレージ機構４０６は、８ＫＢデータ・チャンクを参照者メモリ領域４０８に書き込む。このことは、参照者メモリ領域４０８内、および関連付けられた所有者メモリ領域４１０ａ〜４１０ｎ内で重複する８ＫＢチャンクを生成する可能性がある一方で、重複する８ＫＢチャンクを生成することは、所定の数Ｎを超える所有者メモリ領域をロードしないことによってストレージ機構４０６によって経験されるオーバヘッドを低減する。このため、「先着順」ポリシーを使用して、ストレージ機構４０６は、メモリまたは処理におけるオーバヘッドを低減し、ユーザ入力／出力サイズに依存しない。
【００４３】
さらに第３の実施形態において、ストレージ機構４０６は、「先着順」ポリシーと「人気度」ポリシーの両方の組合せを利用する。例えば、ストレージ機構４０６は、「先着順」ポリシーの下で所有者メモリ領域が所定の数Ｎの所有者メモリ領域に追加されることを可能にする。次に、「人気度」ポリシーに関連付けられた閾値を使用して、所定の数Ｎ＋Ｍの所有者メモリ領域が存在するまで、他の所有者メモリ領域Ｍが、所有者領域の人気度に基づいて追加されてよい。しかし、ストレージ機構４０６は、所定の数Ｎの所有者メモリ領域だけを使用するように構成される場合、「先着順」ポリシーの下で所定の数Ｎの所有者メモリ領域に達すると、ストレージ機構４０６は、（新たな）潜在的所有者メモリ領域が、所定の数Ｎの所有者メモリ領域に既にある既存の所有者メモリ領域の置換として追加されるのに十分なだけの利益をもたらすかどうかを判定すべく、「人気度」ポリシーに関連付けられた閾値を使用してよい。
【００４４】
すなわち、人気度のより低い所有者が、人気度のより高い所有者によって置き換えられることを可能にすべく、ストレージ機構４０６は、人気度がより高い、またはより有益な所有者メモリ領域のためのスペースを空けるように人気度のより低い所有者メモリ領域の結び付きを解くことをもたらす。このことは、所有者の数が所定の数Ｎの所有者メモリ領域に近づいているとき、または既に達しているとき、特に価値がある。この場合も、ストレージ機構４０６は、所有者メモリ領域が所定の数Ｎの所有者メモリ領域の一部であるか否かにかかわらず、各所有者メモリ領域の人気度の追跡値を、カウンタ、データ構造、またはそれに類するものを介して保持する。
【００４５】
この情報に基づいて、所定の数Ｎの所有者メモリ領域の一部ではないが、所定の数Ｎの所有者メモリ領域の一部である所有者メモリ領域より高い人気度値を有することが見出される場合。人気度のより高い所有者メモリ領域が識別された場合、所定の数Ｎの所有者メモリ領域における人気度の最も低い所有者領域が除去され、所定の数Ｎの所有者メモリ領域に現在、入っていない人気度のより高い所有者領域が追加される。除去された所有者メモリ領域上のデータ・ブロックは、所定の数Ｎの所有者メモリ領域における所有者メモリ領域のうちの１つに書き込まれなければならない場合もあることに留意されたい。すなわち、ストレージ機構４０６は、所定の数Ｎの所有者メモリ領域に現在、入っている所有者メモリ領域のうちの１つに、除去された所有者メモリ領域上に存在した８ＫＢデータ・チャンクの重複するコピーを書き込むことになる可能性がある。このことは、参照者メモリ領域４０８内、および関連付けられた所有者メモリ領域４１０ａ〜４１０ｎ内で重複する８ＫＢチャンクを生成する可能性がある一方で、重複する８ＫＢチャンクを生成することは、所定の数Ｎを超える所有者メモリ領域をロードしないことによってストレージ機構４０６によって経験されるオーバヘッドを低減する。このため、「先着順」ポリシーと「人気度」ポリシーの組合せを使用して、ストレージ機構４０６は、メモリまたは処理におけるオーバヘッドをさらに低減し、ユーザ入力／出力サイズに依存しない。
【００４６】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つ（または複数の）コンピュータ可読記憶媒体を含んでよい。
【００４７】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであることが可能である。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピ・ディスク、命令が記録されているパンチカードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝達媒体を介して伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または配線を介して伝送される電気信号などの一過性の信号そのものであると解釈されるべきではない。
【００４８】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、伝送光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【００４９】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＪａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくはそれに類するものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくはそれに類似したプログラミング言語などの従来の手続き型プログラミング言語を含め、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェア・パッケージとして実行されても、一部がユーザのコンピュータ上で、かつ一部が遠隔コンピュータ上で実行されても、全体が遠隔コンピュータもしくは遠隔サーバの上で実行されてもよい。全体が遠隔コンピュータもしくは遠隔サーバの上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。一部の実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することが可能である。
【００５０】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施されることが可能であることが理解されよう。
【００５１】
これらのコンピュータ可読プログラム命令は、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるそれらの命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含む製造品を備えるべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。
【００５２】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００５３】
図５は、例示的な実施形態による、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるストレージ機構によって実行される動作のフローチャートを示す。動作が始まると、ストレージ機構が、メモリ領域のセット内のメモリ領域にデータ・ファイルを書き込む要求を受け取る（ステップ５０２）。データ・ファイルの各データ・チャンクに関して、ストレージ機構が、データ・チャンクに関するハッシュ値を生成し（ステップ５０４）、そのハッシュ値を、メモリ領域のセットにおいて参照される記憶された他のデータ・チャンクに関するハッシュ値と比較する（ステップ５０６）。ステップ５０６において、比較が、参照者メモリ領域、または参照者メモリ領域に関連付けられた所有者メモリ領域のうちの１つにそのデータ・チャンクが既に存在することを示す場合、ストレージ機構は、そのデータ・チャンクに対するポインタを記憶して（ステップ５０８）、動作は、その後、終了する。ステップ５０６において、比較が、書き込まれるメモリ領域、すなわち、参照者メモリ領域にも、関連付けられた１つまたは複数の所有者メモリ領域にもそのデータ・チャンクが存在しないことを示す場合、ストレージ機構は、そのデータ・チャンクを参照者メモリ領域に記憶して（ステップ５１０）、動作は、その後、終了する。
【００５４】
図６は、例示的な実施形態による、重複排除が、メモリ領域のサブセット、すなわち、参照者メモリ領域、および関連付けられた１つまたは複数の所有者メモリ領域の間で実施されることになる場合にストレージ機構によって実行される動作のフローチャートを示す。データ・ファイルのデータ・チャンクを、ホスト・システムによってデータが書き込まれる１つの参照者領域に記憶する前に、ストレージ機構は、メモリ領域のセットの中の別のメモリ領域にそのデータが存在するかどうかを判定する（ステップ６０２）。ステップ６０２において、メモリ領域のセットの中の別のメモリ領域にそのデータが存在しない場合、ストレージ機構は、参照者メモリ領域にそのデータを記憶して（ステップ６０４）、動作は、その後、終了する。
【００５５】
ステップ６０２において、メモリ領域のセットの中の別のメモリ領域にそのデータが存在する場合、ストレージ・コントローラは、所定の数Ｎの所有者メモリ領域に達しているどうかを判定する（ステップ６０６）。ステップ６０６において、所定の数Ｎの所有者メモリ領域に達している場合、ストレージ機構は、所定の数Ｎの所有者メモリ領域における参照者メモリ領域にそのデータ・チャンクを記憶して（ステップ６０８）、動作は、その後、終了する。ステップ６０６において、所定の数Ｎの所有者メモリ領域に達していない場合、ストレージ機構は、参照者メモリ領域にそのデータ・チャンクに対するリファレンスを記憶する（ステップ６１０）。次に、ストレージ機構は、ストレージ機構がいずれのポリシーの下で現在、動作しているかに依存して、所定の数Ｎの所有者メモリ領域にそのメモリ領域を追加してよく（ステップ６１２）、動作は、その後、終了する。
【００５６】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を例示する。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表すことが可能である。一部の代替の実装形態において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、ときとして、関与する機能に依存して、逆の順序で実行されてよい。また、ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実施されることが可能であることにも留意されたい。
【００５７】
このように、例示的な実施形態は、重複排除効率に最小限の影響しか及ぼさずに分散ロケーション・ベースの重複排除のパフォーマンスを向上させるための機構を提供する。異なる参照者メモリ領域および所有者メモリ領域の間で重複リンクをインテリジェントに作成することによって、重複排除比（dedupe ratio）に最小限の影響しか及ぼさずに参照されるすべてのデータを読み取るためのメモリ要件が最小限に抑えられ、重複排除比に最小限の影響しか及ぼさずにスワップするためのメタデータ領域の量が最小限に抑えられ、重複排除比に最小限の影響しか及ぼさずにストレージ機構と所有者メモリ領域の間の通信の量が最小限に抑えられ、またはシステムのメタデータ領域にわたる重複排除リンクの分散に対する粒度の細かい制御が提供され、あるいはその組合せがもたらされる。
【００５８】
前述したとおり、例示的な実施形態は、完全にハードウェアの実施形態の形態をとっても、完全にソフトウェアの実施形態の形態をとっても、またはハードウェア要素とソフトウェア要素をともに包含する実施形態の形態をとってもよいことを認識されたい。１つの例示的な実施形態において、例示的な実施形態の機構は、ファームウェア、常駐ソフトウェア、マイクロコード、その他を含むが、以上には限定されないソフトウェア・コードまたはプログラム・コードとして実装される。
【００５９】
プログラム・コードを記憶するのに、または実行するのに、あるいはその両方を行うのに適したデータ処理システムが、例えば、システム・バスなどの通信バスを通じてメモリ要素に直接に、または間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量ストレージと、実行中にコードが大容量ストレージから取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリとを含むことが可能である。メモリは、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ・メモリ、ソリッドステート・メモリ、およびそれに類するものを含むが、以上には限定されない様々なタイプであってよい。
【００６０】
入出力デバイス、またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、その他を含むが、以上には限定されない）が、システムに直接に、または介在する有線もしくは無線のＩ／ＯインターフェースもしくはＩ／Ｏコントローラ、またはその両方、あるいはそれに類するものを介して結合されることが可能である。Ｉ／Ｏデバイスは、例えば、スマートフォン、タブレット・コンピュータ、タッチスクリーン・デバイス、音声認識デバイス、およびそれに類するものを含むが、以上には限定されない有線接続または無線接続を通じて結合された通信デバイスなどの、従来のキーボード、ディスプレイ、ポインティング・デバイス、およびそれに類するもの以外の、異なる多くの形態をとってよい。任意の知られている、または今後、開発されるＩ／Ｏデバイスが、例示的な実施形態の範囲に含まれることが意図される。
【００６１】
また、ネットワーク・アダプタが、データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて他のデータ処理システムまたは遠隔プリンタまたはストレージ・デバイスに結合されるようになることを可能にすべくシステムに結合されてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、有線通信のための現在、利用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。また、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ無線通信アダプタ、Ｂｌｕｅｔｏｏｔｈ（Ｒ）無線アダプタ、およびそれに類するものを含むが、以上には限定されない無線通信ベースのネットワーク・アダプタが利用されてもよい。任意の知られている、または今後、開発されるネットワーク・アダプタが、本発明の思想および範囲に含まれることが意図される。
【００６２】
本発明の説明は、例示および説明の目的で提示されており、網羅的であることも、本発明を開示される形態に限定することも意図していない。説明される実施形態の範囲および思想を逸脱することなく、多くの変形形態および変更形態が、当業者には明白となろう。実施形態は、本発明の原理、実際的な応用を最もよく説明するように、かつ企図される特定の用途に適する様々な変形を伴って様々な実施形態に関して本発明を当業者が理解することを可能にするように選択され、説明されている。本明細書において使用される用語は、実施形態の原理、実際的な応用、または市場において見られる技術に優る技術的改良を最もよく説明するように、あるいは本明細書において開示される実施形態を当業者が理解することを可能にするように選択されている。
【図１】
2021500643.tif 000003
【図２】
2021500643.tif 000004
【図３】
2021500643.tif 000005
【図４】
2021500643.tif 000006
【図５】
2021500643.tif 000007
【図６】
2021500643.tif 000008
【国際調査報告】
2021500643.tif 000009
2021500643.tif 000010