(57)【特許請求の範囲】
【請求項１】
分散型記憶管理システム中のソースおよびターゲット場所の各々でデータ・ファイルの重複排除ができるようにする方法であって、前記記憶管理システムは、ターゲット・コンピューティング・システムに接続されたソース・コンピューティング・システムと、前記ターゲット・コンピューティング・システム内に配置されたターゲット・データ・ストアとを包含し、前記方法は、
前記ターゲット・データ・ストア内に保管された重複排除されたデータ・チャンクを追跡するための共有インデックスを維持するステップと、
重複排除された形で前記ターゲット・データ・ストア内に保管されることになるデータ・チャンクの重複排除のための、重複排除プロセスを提供するステップと、
前記ターゲット・コンピューティング・システムによる重複排除命令の実行、および前記ソース・コンピューティング・システムによる重複排除命令の実行を可能にするステップと、
前記重複排除プロセスを使って、データ・ファイルを重複排除されたデータ・チャンクのセットに重複排除するステップであって、前記重複排除プロセスは、前記ソース・コンピューティング・システムまたは前記ターゲット・コンピューティング・システムのいずれかによって実行される重複排除命令のセットを含む、前記重複排除するステップと、
前記重複排除されたデータ・チャンクのセットを前記ターゲット・データ・ストアに保管するステップと、
前記共有インデックス内の、前記重複排除されたデータ・チャンクのセットについての重複排除情報を更新するステップと、
を含む、前記方法。
【請求項２】
前記重複排除命令は、前記ソース・コンピューティング・システムおよび前記ターゲット・コンピューティング・システムの各々において重複排除のために使われる、可変サイズ・ブロックのハッシュ処理アルゴリズムを含む、請求項１に記載の方法。
【請求項３】
前記重複排除命令は、前記ソース・コンピューティング・システム上で実行される重複排除アクティビティのために使われる、フィンガープリント処理およびハッシュ処理アルゴリズムの第一セットと、前記ターゲット・コンピューティング・システム上で実行される重複排除アクティビティのために使われる、フィンガープリント処理およびハッシュ処理アルゴリズムの第二セットとを含む、請求項１または２のいずれかに記載の方法。
【請求項４】
前記重複排除されたデータ・チャンクのセットを前記ソースに向けて復元するステップをさらに含む、先行いずれかの請求項に記載の方法。
【請求項５】
フィンガープリント処理およびハッシュ識別の後でデータ変換を実施するステップをさらに含み、前記フィンガープリント処理およびハッシュ識別は前記重複排除プロセスの中で行われる、先行いずれかの請求項に記載の方法。
【請求項６】
前記データ変換は、圧縮および暗号化の一つ以上を包含する、請求項５に記載の方法。
【請求項７】
前記ソース・コンピューティング・システムに前記重複排除されたデータ・チャンクのセットを復元するのに応じて、各チャンクに対し、前記ソース・コンピューティング・システムによって前記データ変換を元に戻すステップをさらに含む、請求項５または６のいずれかに記載の方法。
【請求項８】
前記ソース・コンピューティング・システムに向け前記重複排除されたデータ・チャンクのセットを復元するのに先立って、前記ターゲット・コンピューティング・システムによって前記変換を元に戻すステップをさらに含む、請求項５〜７のいずれかに記載の方法。
【請求項９】
前記共有インデックスは、前記ソース・コンピューティング・システムおよび前記ターゲット・コンピューティング・システムの各々がアクセス可能な、前記記憶管理システム内のデータベースとして共有される、先行いずれかの請求項に記載の方法。
【請求項１０】
前記共有インデックスは、前記ソースとターゲットとの間でデータ・チャンク情報の通信を可能にするクライアント−サーバ・プロトコルを介して、アクセスが可能である、先行いずれかの請求項に記載の方法。
【請求項１１】
分散型記憶管理システム中の選択されたソースもしくはターゲット場所でデータ・ファイルの重複排除ができるようにする方法であって、前記記憶管理システムは、ターゲット・コンピューティング・システムに接続されたソース・コンピューティング・システムと、前記ターゲット・コンピューティング・システム内に配置されたターゲット・データ・ストアとを包含し、前記方法は、
前記ターゲット・データ・ストア内に保管された重複排除済みのデータ・チャンクに対する重複排除情報を追跡するステップと、
前記ターゲット・データ・ストア内に保管されることになるデータ・ファイルの重複排除のための重複排除プロセスを提供するステップと、
前記ソース・コンピューティング・システムまたは前記ターゲット・コンピューティング・システムのどちらかに前記重複排除プロセスの実行のための場所を決定するため、複数の定義されたポリシーから選択されたポリシーを適用するステップと、
前記決定された場所において、前記重複排除プロセスを実行して前記データ・ファイルを重複排除するステップと、
前記データ・ファイルに対する前記追跡された重複排除情報を更新するステップと、
を含む、前記方法。
【請求項１２】
前記選択されるポリシーは、時間、システム負荷、ファイル特性、クライアント・ノード、およびポリシー・ドメインの一つ以上に基づいて選択される、請求項１１に記載の方法。
【請求項１３】
ソース・コンピューティング・システムと、
前記ソース・コンピューティング・システムに接続されたターゲット・コンピューティング・システムと、
前記ターゲット・コンピューティング・システム内に配置されたターゲット・データ・ストアと、
記憶管理システム内の少なくとも一つのプロセッサと、
前記記憶管理システム内の少なくとも一つメモリと、
を含む前記記憶管理システムであって、
前記メモリは、前記少なくとも一つのプロセッサを使って作動可能な、前記記憶管理システム中のソースおよびターゲット場所の各々においてデータ・ファイルの重複排除ができるようにするための命令を格納し、前記命令は、
前記ターゲット・データ・ストア内に保管された重複排除済みのデータ・チャンクを追跡するための共有インデックスを維持するステップと、
重複排除された形で前記ターゲット・データ・ストア内に保管されることになるデータ・チャンクの重複排除のための、重複排除プロセスを提供するステップと、
前記ターゲット・コンピューティング・システムによる重複排除命令の実行、および前記ソース・コンピューティング・システムによる重複排除命令の実行を可能にするステップと、
前記重複排除プロセスを使って、データ・ファイルを重複排除されたデータ・チャンクのセットに重複排除するステップであって、前記重複排除プロセスは、前記ソース・コンピューティング・システムまたは前記ターゲット・コンピューティング・システムのいずれかによって実行される重複排除命令のセットを含む、前記重複排除するステップと、
前記重複排除されたデータ・チャンクのセットを前記ターゲット・データ・ストアに保管するステップと、
前記共有インデックス内の、前記重複排除されたデータ・チャンクのセットについての重複排除情報を更新するステップと、
のために実行される、前記記憶管理システム。
【請求項１４】
前記重複排除命令は、前記ソース・コンピューティング・システムおよび前記ターゲット・コンピューティング・システムの各々において重複排除のために使われる、可変サイズ・ブロックのハッシュ処理アルゴリズムを含む、請求項１３に記載の記憶管理システム。
【請求項１５】
前記重複排除命令は、前記ソース・コンピューティング・システム上で実行される重複排除アクティビティのため使われる、フィンガープリント処理およびハッシュ処理アルゴリズムの第一セットと、前記ターゲット・コンピューティング・システム上で実行される重複排除アクティビティのため使われる、フィンガープリント処理およびハッシュ処理アルゴリズムの第二セットとを含む、請求項１３または１４のいずれかに記載の記憶管理システム。
【請求項１６】
前記重複排除されたデータ・チャンクのセットを前記ソースに向けて復元するステップのため実行される命令をさらに含む、請求項１３〜１５のいずれかに記載の記憶管理システム。
【請求項１７】
フィンガープリント処理およびハッシュ識別の後でデータ変換を実施するステップのため実行される命令をさらに含み、前記フィンガープリント処理およびハッシュ識別は前記重複排除プロセスの中で行われ、前記データ変換は圧縮および暗号化の一つ以上を包含する、請求項１３〜１６のいずれかに記載の記憶管理システム。
【請求項１８】
前記共有インデックスは、前記ソース・コンピューティング・システムおよび前記ターゲット・コンピューティング・システムの各々がアクセス可能な、前記記憶管理システム内のデータベースとして共有される、請求項１３〜１７のいずれかに記載の記憶管理システム。
【請求項１９】
ソース・コンピューティング・システムと、
前記ソース・コンピューティング・システムに接続されたターゲット・コンピューティング・システムと、
前記ターゲット・コンピューティング・システム内に配置されたターゲット・データ・ストアと、
記憶管理システム内の少なくとも一つのプロセッサと、
前記記憶管理システム内の少なくとも一つメモリと、
を含む前記記憶管理システムであって、
前記メモリは、前記少なくとも一つのプロセッサを使って作動可能な、前記記憶管理システム中の選択されたソースもしくはターゲット場所においてデータ・ファイルの重複排除ができるようにするための命令を格納し、前記命令は、
前記ターゲット・データ・ストア内に保管された重複排除済みのデータ・チャンクに対する重複排除情報を追跡するステップと、
前記ターゲット・データ・ストア内に保管されることになるデータ・ファイルの重複排除のための、重複排除プロセスを提供するステップと、
前記ソース・コンピューティング・システムまたは前記ターゲット・コンピューティング・システムのどちらかに前記重複排除プロセスの実行のための場所を決定するため、複数の定義されたポリシーから選択されたポリシーを適用するステップと、
前記決定された場所において、前記重複排除プロセスを実行して前記データ・ファイルを重複排除するステップと、
前記データ・ファイルに対する前記追跡された重複排除情報を更新するステップと、
のために実行される、前記記憶管理システム。
【請求項２０】
前記選択されるポリシーは、時間、システム負荷、ファイル特性、クライアント・ノード、およびポリシー・ドメインの一つ以上に基づいて選択される、請求項１９に記載の記憶管理システム。
【請求項２１】
請求項１〜１２のいずれかに記載のステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ記憶システム内で遂行されるデータの保存および維持オペレーションに関する。さらに具体的には、本発明は、データのソースおよびターゲットの両方で重複排除アクティビティを実施することによって記憶管理システム中のデータの重複を効率的に排除するための統合的アプローチに関する。
【背景技術】
【０００２】
冗長データ排除のプロセスであるデータ重複排除は、記憶システムにおいて展開される重要な技術になりつつある。重複排除は、各々一意的なデータ部分だけが保管されるので必要記憶容量の低減を可能にする。典型的な構成では、記憶管理サーバまたはＶＴＬ（ｖｉｒｔｕａｌ  ｔａｐｅ  ｌｉｂｒａｒｙ：バーチャル・テープ・ライブラリ）などのディスク・ベース記憶システムは、冗長データの「エクステント」（「チャンク」としても知られる）を検出し、かかるエクステント（extents）の冗長な保存を回避することによって、重複を低減する能力を有する。例えば、重複排除記憶システムは、ファイルＡをチャンクａ〜ｈに分割し、チャンクｂとｅとが重複していることを検出し、この重複するチャンクを一回だけ保管することができよう。この冗長性は、ファイルＡ内でも、記憶システムに保管された他のファイルとの間でも起こり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
データ・オブジェクトを重複排除するための周知の技法が存在する。しかしながら、既存の重複排除対処法では、ソースまたはターゲットのいずれかで実行された重複排除オペレーションで生成されたデータ・チャンクを共用することができない。顧客は、非効率的で不完全な重複排除アプライアンスを展開するか、もしくは重複排除されたデータを共用できない２つの製品での重複排除を展開することを強いられている。
【課題を解決するための手段】
【０００４】
本発明の一つの態様は、重複排除を実施するための統合されたアプローチを使って前述の問題を処理する対処法を含む。一つの実施形態において、システム構成は、ソース（クライアント）とターゲット（サーバ）との間で、重複排除アクティビティのシームレスな切り換えを可能にする。（本明細書では置き換え可能に使う用語として、クライアントはソースであり、サーバはターゲットである。）この切り換えは、ファイル・レベルまたはノード・レベル（ノードはターゲット記憶サーバ内から見た、あるソース・クライアントからの全データの表現）で実施可能である。従って、クライアント・ノードＡはソース側重複排除を遂行するよう構成し、一方、クライアント・ノードＢは、ターゲット側重複排除を遂行するよう構成することができる。さらに、ターゲットもしくはソースのいずれかで遂行された重複排除アクティビティにより生成されたチャンクは、複数のノードの間、および異なるファイルの間で再使用することができる。
【０００５】
本発明の一つの実装において、この統合的重複排除機能は、ソースとターゲットと両方の間で同一の重複排除プロセスを展開し、重複排除インデックスを共用することによって達成される。圧縮、暗号化など一切のデータ変換は、記憶管理システムのあらゆる部分を通して保管されたデータ・チャンクが相互に同一であることを確実にするため、データ・チャンクのフィンガープリント処理およびハッシュ識別の後に実施される。さらなる実装において、クライアント対サーバの環境において実施される重複排除の範囲の、自動的で粒度の細かい定義を可能にするため、重複排除の場所を決定するポリシーが定められる。
【０００６】
本開示では、クライアントおよびサーバに関連させて、本発明の各種態様を説明するが、本発明はクライアント−サーバ実装には限定はされない。それどころか、本開示のオペレーションは、ソースとターゲットとの間での重複排除されたデータの保存および読み出しを伴う一切の対処法に適用することができる。
【０００７】
本発明の一つの実施形態は、分散型記憶管理システム中のソースまたはターゲット場所のいずれでもデータ・ファイルの重複排除ができるようにする。記憶管理システムは、ターゲット・コンピューティング・システムに接続されたソース・コンピューティング・システムと、ターゲット・コンピューティング・システム内に配置されたターゲット・データ・ストアとを有する。記憶管理システムは、ターゲット・データ・ストア中に保管された重複排除済みのデータ・チャンクを追跡するための共有インデックスをさらに維持する。
【０００８】
一つの実施形態において、共有インデックスは、データベースとして共有され、ソース・コンピューティング・マシンおよびターゲット・コンピューティング・マシンの各々からアクセスが可能である。上記に換えて、ソースとターゲットとの間でデータ・チャンクの情報を通信可能にするクライアント−サーバ・プロトコルを介して、この共有インデックスへのアクセスを可能にすることもできる。
【０００９】
ターゲット・データ・ストア内に保管されることになるデータ・チャンクの重複排除のための重複排除プロセスが提供される。重複排除は、ターゲット・コンピューティング・システムもしくはソース・コンピューティング・システムのいずれかにおける、重複排除命令の実行を介して実施される。しかして、データ・ファイルは、重複排除プロセスを用いて重複排除されたデータ・チャンクのセットに変換される。重複排除の後、重複排除されたデータ・チャンクのセットは、ターゲット・データ・ストア内に保管され、共有インデックス中の、この重複排除されたデータ・チャンクのセットに対する重複排除情報が更新される。この重複排除されたデータ・チャンクのセットは、後にソースに向け復元することができる。
【００１０】
さらなる実施形態は、フィンガープリント処理アルゴリズムを用いてチャンクを定義する。ただし、ソースおよびターゲット双方が同じメカニズムを使う限りにおいて、チャンクを定義するための任意のメカニズムを選択して機能させることができる。一つの実施形態において、重複排除プロセスは、ソース・コンピューティング・システムおよびターゲット・コンピューティング・システムの各々において、データを可変サイズのチャンクに分割するためのフィンガープリント処理アルゴリズムと、重複したチャンクを識別するため用いるハッシュ処理アルゴリズムとを含む。上記に換えて、重複排除プロセスには、ソース・コンピューティング・システム上で重複排除アクティビティを実行するために使われる、フィンガープリント処理およびハッシュ処理アルゴリズムの第一セットと、ターゲット・コンピューティング・システム上で重複排除アクティビティを実行するために使われる、フィンガープリント処理およびハッシュ処理アルゴリズムの第二セットとを含めることもできる。
【００１１】
また、さらなる実施形態において、フィンガープリント処理およびハッシュ識別の後でデータ変換が実施される。このようなデータ変換には、圧縮および暗号化の一つまたは両方を含めることができる。このデータ変換は、重複排除されたデータ・チャンクのセットをソース・コンピューティング・マシンに向けて復元するのに応じ、ソース・コンピューティング・マシンによって各チャンクに対して逆処理を行うことができる。上記に換えて、ソース・コンピューティング・マシンに向け重複排除されたデータ・チャンクのセットを復元する前に、ターゲット・コンピューティング・マシンによってこの変換の逆処理をすることもできる。
【００１２】
本発明の別の実施形態は、選択されたポリシーの使用に従って、分散型記憶管理システム中のソースもしくはターゲット場所のいずれかでデータ・ファイルの重複排除ができるようにする。また、この記憶管理システムは、ターゲット・コンピューティング・システムに接続されたソース・コンピューティング・システムと、ターゲット・コンピューティング・システム内に配置されたターゲット・データ・ストアと、共用インデックスによって管理される、ターゲット・データ・ストア内に保管されたデータの重複排除情報とをサポートするように構成される。この実施形態では、ターゲット・データ・ストア内に保管されることになるデータ・ファイルの重複排除のため、ハッシュ処理アルゴリズムが選択される。
【００１３】
この実施形態では、複数の定義されたポリシーから選択されたポリシーが適用され、ソース・コンピューティング・マシンまたはターゲット・コンピューティング・マシンのいずれかに、重複排除アクティビティの場所が決定される。決定された場所において、選択された重複排除プロセスを使ってデータ・ファイルが重複排除され、共有インデックス内の、該データ・ファイルに対する重複排除情報が更新される。さらなる実施形態において、選択するポリシーは、いくつかのファクタの中でも特に、時間、システム負荷、ファイル・タイプ、ファイル特性、クライアント・ノード、またはポリシー・ドメインに基づいて選択することができる。
【００１４】
単なる例示として、添付の図面に示される好適な実施形態を参照しながら、以下に本発明を説明する。
【図面の簡単な説明】
【００１５】
【図１】従来技術で周知の、ソースにおいて重複排除アクティビティを実施する記憶管理システムの例示的構成を示す。
【図２】従来技術で周知の、ターゲットにおいて重複排除アクティビティを実施する記憶管理システムの例示的構成を示す。
【図３】従来技術で周知の、アプライアンスにおいて重複排除アクティビティを実施する記憶管理システムの例示的構成を示す。
【図４】本発明の一つの実施形態による、ソースにおいて統合的重複排除アクティビティを実施する記憶管理システムの例示的構成を示す。
【図５】本発明の一つの実施形態による、ターゲットにおいて統合的重複排除アクティビティを実施する記憶管理システムの例示的構成を示す。
【図６】本発明の一つの実施形態による、ソースでデータ重複排除アクティビティがどのように行われるかを表すフローチャートを示す。
【図７】本発明の一つの実施形態による、記憶システム内のソースおよびターゲットにおいて重複排除を実施する例示的オペレーションを表すフローチャートを示す。
【発明を実施するための形態】
【００１６】
本発明の各種の実施形態は、記憶管理システム内で行われる重複排除アクティビティの最適化された制御を可能にする。既存の記憶システムは、単一場所でだけ重複排除アクティビティを実施する。これに対し、本明細書で開示する構成は、データ・ソースおよびターゲット場所のどちらでもまたは双方で実施できる、統合的且つ最適化された重複排除プロセスを可能にする。
【００１７】
既存の記憶管理構成では、ソース、ターゲット、または外部記憶アプライアンスで、排他的に重複排除アクティビティ実施することにより、いくつかのトレードオフが生じる。本発明の各種実施形態は、ソースまたはターゲットとのいずれでも重複排除処理を実行できるようにすることによって、こういった制限に対処する。これは、クライアント側もしくはサーバ側のいずれかの重複排除によって記憶システム中に生成された、整合チャンクをうまく保管し、見出し、用いる能力を提供する。
【００１８】
本発明の各種実施形態は、いくつかのファクタに対応する、重複排除アクティビティの改良された制御をさらに提供する。記憶管理システム全体を通して実施される重複排除アクティビティの場所は、特定のポリシー、ファイル・タイプ、条件または他の定義設定に従って、細かい粒度レベルで制御することができる。
【００１９】
データ・オブジェクトの重複を排除するため使われる典型的重複排除プロセスでは、オブジェクトは、まず、ラビン・フィンガープリント処理などの方法を使ってチャンクに分割される。ＭＤ５またはＳＨＡ−１などのハッシュ関数を使い、各チャンクに対するハッシュ値が生成され、次いで、その値がシステム中に既に保管されているチャンクに対する値と対比されて、冗長なチャンクが検出される。これら保管されたチャンクに対するハッシュ値はインデックス中に維持される。冗長チャンクが識別されたならば、そのチャンクは、整合チャンクへのポインタで置き換えることができる。
【００２０】
クライアント−サーバ型記憶管理システムにおいて、重複排除アクティビティの場所（すなわち、冗長データ・チャンクが識別され除去される場所）は、特定のシステムの構成の如何による。既存の構成では、重複排除は、データ・ソース（クライアント）において、ターゲット（記憶サーバ）において、もしくは記憶サーバに接続された重複排除アプライアンス上で実施することができる。下記のように、重複排除オペレーションの各々の配置には関連するいくつかの利点および不利点がある。
【００２１】
データ・ソースでの重複排除の実施
データをターゲットに転送する前にデータのソースで重複排除アクティビティを実施する利点の一部には、ネットワークの省力、データ・ストレージの省力、ターゲットよりむしろソースのハードウェア上でＣＰＵサイクルを消費することが含まれる。不利点の一部には、修復不能なデータをもたらすハッシュ衝突の可能性、ソース・ハードウェアが他の用途に使われている場合またはターゲットが利用可能なサイクルを有する場合であってもソースでＣＰＵサイクルを消費する必要があること、および、ターゲット記憶サーバに既に保管されているレガシー・データを重複排除に使用できないことが含まれる。
【００２２】
図１は、従来技術で周知の、ソースの場所において重複排除アクティビティを実施する記憶管理システム１００の例示的構成を示す。この記憶システムは、クライアント（データのソース）１２０、およびネットワーク１３０を介して接続されたサーバ（データのターゲット）１４０を含む。記憶システムの通常のオペレーション過程で、クライアント１２０などのさまざまなクライアント・ノードから、データが、バックアップ、保存、移動、または別途の管理のためにサーバ１４０内のデータ・リポジトリ１４５に転送される。
【００２３】
図示のように、ファイル１０５がクライアント１２０によって取り込まれる。ファイル１０５が読み込まれると、ファイルは、チャンク「Ａ」１１０、「Ｂ」１１１、「Ｂ」１１２、「Ａ」１１３、「Ｃ」１１４として示されているいくつかのブロックまたはチャンクに分割される。この例では、チャンクＡ１１０は、チャンクＡ１１３の重複であり、チャンクＢ１１１はチャンクＢ１１２の重複である。
【００２４】
このオペレーションでは、クライアント１２０は、（クライアントの構成によっては、一つまたは数個だけのチャンクしか生じない特に小さなファイルを例外として）、通常、ファイル全体が取り込まれるのを待たないでチャンクをサーバ１４０に送信する。クライアント１２０は、ファイル所在地から、または、ｅメールまたはデータベース・サーバなどサードパーティアプリケーションによってメモリ・バッファ中に提供されるデータとしてデータを読み取る。クライアント１２０がファイル１０５のデータを読み込むと、重複排除プロセス１２２は、フィンガープリント処理、ハッシュ処理、重複チャンクの識別、および一意的なチャンクのサーバへの送信を実施する。しかして、一切の関連する重複排除されたデータが最終的に記憶リポジトリ・サーバ１４０に送信される前に、クライアント１２０によって、ファイル１０５のデータ重複排除が遂行されることになる。
【００２５】
図１には、ファイル１０５に対するバンド内重複排除（ファイルがクライアントのデータ・ストアに取り込まれている間に行われる重複排除）の実施が描かれているが、当業者は、ファイル１０５に対し、バンド外重複排除（ファイルがクライアントに取り込まれた後で行われる重複排除）も、同様なクライアント側重複排除オペレーションを用いて実施できる可能性を認識していよう。
【００２６】
データ・チャンク１５１、１５２、１５３のセットは、どのデータ・チャンクが、クライアントからネットワーク１３０を介して記憶サーバに転送されるかを示す。ファイル１０５のチャンクは、クライアント・システム１２０上で重複排除されたので、元のファイル１０５の５つのデータ・チャンクではなく、３つの重複排除されたチャンクだけが、記憶サーバ１４０に送信されることになる。しかしながら、図示のように、チャンクＡ’１６１およびＣ’１６２が、記憶サーバのデータ・ストア１４５に既に存在する。この例において、チャンクＡ’１６１とＡ１５１、およびＣ’１６２とＣ１５３とは、それぞれ同じ内容を包含する重複したチャンクである。サーバでは重複排除は実施されないので、このデータ・ストアに新しく追加されたＡ１６３、Ｂ１６４、およびＣ１６５のチャンクに加えて、Ａ’１６１およびＣ’１６２のチャンクが存在することになる。
【００２７】
データ・ターゲットでの重複排除の実施
データのターゲットで（すなわち、記憶サーバで）重複排除アクティビティを実施する利点の一部には、記憶サーバでのデータ・ストレージの省力、および、ソースよりむしろターゲット・ハードウェア上でＣＰＵサイクルを消費することが含まれる。不利点の一部には、データをターゲットに送信する際に、冗長で重複したデータをネットワークを介して送らなければならないこと、および、ソース上でＣＰＵサイクルの利用が可能な場合であっても、ターゲット上でＣＰＵサイクルが消費されることが含まれる。
【００２８】
図２は、従来技術で周知の、ターゲット記憶の場所において重複排除アクティビティを実施する記憶管理システム１００の例示的構成を示す。クライアント１２０、ターゲット１４０、およびネットワーク接続１３０の構成は、図１に示されたものと類似である。前図同様に、ファイル１０５がクライアント１２０に入力される。ターゲット側の重複排除が使われる場合、クライアント内ではファイルが単なるビットのストリーム１２５として取り扱われ得るので、クライアント１２０は、ファイル１０５がチャンクから成ることに気付かないことさえある。
【００２９】
クライアント１２０は、ターゲット１４０に送信されるファイル中にいかなる種類のチャンク・デリミタも挿入しない。ファイルのコピー１５０が、重複排除されていない形で、ネットワーク１３０を介してターゲット記憶サーバ・リポジトリ１４０に送信される。これはクライアントに始めに入力されたファイル全体（１０５）が送信されることを意味する。しかして、送信されたファイル１５０の一部は、相互に重複するチャンクを包含している可能性が高い。
【００３０】
送信されたファイルは、ターゲット上の重複排除コンポーネント１４２のオペレーションによって重複排除されることになる。このバンド外の重複排除の例では、全体ファイル１５０がターゲット１４０に到着したときに、ファイル１５０を構成するさまざまなチャンク、チャンクＡ１５１、Ｂ１５２、Ｂ１５３、Ａ１５４、Ｃ１５５が、データ・ストア１４５に既に存在するデータに照らして重複排除されることになる。チャンクＡ’１６１およびＣ’１６２は、それぞれ、チャンクＡ１５１およびＡ１５４と、Ｃ１５５と重複している。チャンク「Ｂ」と重複するものはない。しかして、チャンクＡ１５１、Ｂ１５３、Ａ１５４、およびＣ１５５はデータ・ストアから除去され、重複排除の後、これらの新規追加のチャンクのうちＢ１５２だけが、データ・ストア１４５中に残ることになる（Ｂ１６３として示す）。さらに、重複排除オペレーションの実施後は、あらゆる一意的チャンクのただ一つのコピーだけが、ターゲット・データ・ストア１４５に存在することになる。
【００３１】
アプライアンスでの重複排除の実施
ターゲット記憶サーバで、ＷＡＮ重複排除または記憶装置ベースの重複排除を実施できるアプライアンスが存在する。本明細書での使用において、アプライアンスとは、一般に、記憶ネットワークに亘ってデータ管理オペレーションを実施するためのソフトウェアを運用する、特殊化されたスタンドアロン型システムをいう。通常、アプライアンスは、そのアプライアンスが記憶ネットワークに加えられた後、ターゲット記憶サーバに保管されたデータの重複排除を開始するよう構成される。例えば、アプライアンスは、一組のバーチャル・テープ上でデータを重複排除するバーチャル・テープ・ライブラリを維持することができる。
【００３２】
アプライアンスで重複排除アクティビティを実施する利点の一部には、記憶システムのバックアップ・ソフトウェアまたはバックアップ・オペレーションに依存しない別個のコンポーネントを展開すること、および、ターゲットまたはソース・ハードウェアよりむしろ別個のアプライアンス・ハードウェア上でＣＰＵサイクルを消費することが含まれる。不利点の一部には、記憶装置ベースの重複排除アプライアンスの使用に伴い冗長なデータがネットワークを介してターゲットに送信されること、ＷＡＮベースの重複排除アプライアンスの使用に伴い記憶装置中に冗長データが存在するようになること、記憶装置ベースおよびＷＡＮベースの重複排除アプライアンスを一緒に使う場合、どのデータを重複排除するかを選定するためのいかなる細かな粒度を提供することも非常に困難となり得ること、ターゲット・ハードウェアでもＣＰＵサイクルが消費されること、アプライアンスがデータ不問（）でその重複排除オペレーションを実施すること、および、アプライアンスがしばしば、例えば、ヘッダ、圧縮または暗号化されたデータなど、重複排除すべきでないデータを重複排除しようとすること、が含まれる。
【００３３】
図３は、従来技術で周知の、重複排除アプライアンス１７０の使用を介した重複排除アクティビティを実施する記憶管理システム１００の例示的構成を示す。これもまた、ソース１２０、ネットワーク１３０、およびターゲット１４０の構成は、図１および図２に示されたのと同じのままである。アプライアンス１７０も、ネットワーク１３０を介してターゲット１４０に接続されている。アプライアンス１７０は、その独自の内蔵式処理パワーおよびリソースを使って、ターゲット１４０上で、重複排除オペレーションを実施するように動作する。しかして、アプライアンス１７０は、アプライアンスの重複排除能力およびプロセスに従って、そのデータ・ストア内に保管されている冗長データを除去することによって重複排除されたデータ・リポジトリを維持するよう動作する。
【００３４】
図示のように、ファイル１０５はクライアント１２０に入力され、次いでその全体がサーバ１４０に送信される。次に、チャンク「Ａ」１５１および１５４と、「Ｂ」１５２および１５３と、「Ｃ」１５５とから成るファイルは、次いでその全体がアプライアンス１７０に送信される。データ・ストア１７５に示されているように、重複排除の前にデータが最初にアプライアンスのデータ・ストアに加えられたとき、（「Ａ」１６１、１６３、および１６６、「Ｂ」１６４および１６５、「Ｃ」１６２および１６７など）データ・ストア内に所在するデータ・チャンクの多くは相互に重複することになる。
【００３５】
図３は、バンド外重複排除プロセスを使った、アプライアンスのデータ・ストアに対する重複排除オペレーションの重複排除前のデータ・ストア１７５と、重複排除後のデータ・ストア１７５’とをさらに示す。データ・ストア１７５’は、アプライアンス１７０内の重複排除機能１７２を使って重複排除がサーバ上で実施された後に、サーバ内に保管されるデータ・チャンクを示している。アプライアンスは、アプライアンス上の冗長なデータ・チャンクの全てを除去するよう作動し、各データ・チャンク、Ａ’１８１、Ｃ’１８２、およびＢ１８３の一つの一意的コピーだけを残す。重複排除処理１７２は、アプライアンス１７０上で実行されるプロセスを介し、重複排除アクティビティの結果がサーバ１４０からは見えないように行われる。次いで、重複排除アプライアンス１７０は、データを、あたかもそれが重複排除されなかったようにしてサーバに返送提示することができる。
【００３６】
これら既存の対処法の各々は、表面上、好結果のデータ重複排除をもたらすが、既存技術で知られるように、重複排除アクティビティを、クライアント、ターゲット、または記憶アプライアンスのいずれかで実施することに起因する数多くのトレードオフおよび厄介な問題がある。ターゲット側とソース側との重複排除の組み合わせによって、特に重複排除アクティビティの場所が動的に管理されたとき、これらの問題を減少または全面的に軽減する対処法を導入することができる。
【００３７】
以下の開示では、重複排除の過程で一般的に遭遇する利点およびリスクを述べ、本発明の各種実施形態がこれらのリスクをいかに動的に軽減できるかを説明する。
【００３８】
ハッシュ衝突
ターゲット側での重複排除は、重複排除またはバイト単位の比較を実施する前にデータのコピーを作るなどの技法を介して、検出されないハッシュ衝突に起因するデータ喪失のリスクを軽減することができる。これに対し、ソース側での重複排除は、データがクライアントによって取り込まれるときの検出されないハッシュ衝突に起因するデータ喪失の影響を受けやすくなる可能性がある。このリスクが容認できなければ、リスクを軽減するための適切な方法（例えば、重複排除に先立ってデータをコピー記憶プールにコピーするなど）を使って、サーバ側で重複排除をするのが望ましいことになる。例としては、企業の方針で、機密ｅメールはサーバで重複排除することが指示されているなどのケースがあろう。
【００３９】
作業負荷のバランス保持
作業負荷のバランス保持に対する基本的アプローチは、ネットワークおよびＣＰＵの利用をバランスさせるために、どこで重複排除を実施するかについて最適化された決定をできるようにすることである。ネットワークがボトルネックである場合、クライアントの重複排除が最適に実施され、そうでない場合は、サーバで重複排除を実施すべきである。これはランタイム決定とすることもでき、またはスケジュールすることもできる。例えば、ネットワークのトラフィックが多くない週末には、サーバ側重複排除を利用すべきである。平日の間は、ネットワークがパフォーマンス上のボトルネックになる可能性があり、クライアントが最適に重複排除を実施できよう。過去のデータを使って、重複排除を何時クライアントで、何時サーバで展開するかを決めることができる。他の関連するルールには、例えば、ファイル・サイズが５ＧＢより大きい場合などは、クライアントでの重複排除はバックアップ速度を低下させバックアップ・ウィンドウを失うおそれがあるので、大きなファイルはサーバだけで重複排除することを含めることができる。
【００４０】
統合的重複排除アクティビティ
最適には、重複排除ではデータのフォーマットを因子分解する（factor）ことになる。本発明の各種実施形態において、このメカニズムは、外部による対処法と対照的に、クライアント−サーバのバックアップ製品の一部となる。バックアップ製品との統合によって、データ重複排除を最適化するためその製品の情報（すなわち、データ・フォーマット）を使う能力が得られる。データ・フォーマットの情報は、ファイル・タイプに基づく最適化を可能にし、特定のファイル・タイプに対し最適化された各種の重複排除アルゴリズムを用いることができる。例えば、ラビン−カープ・アルゴリズムをベース・アルゴリズムとして使用することができ、特定のファイル・タイプに対して他のフィンガープリント処理アルゴリズムがより良好に機能する場合は、それを使うことができる。別の例に、ＭＰ３およびＰＤＦファイルのような圧縮データの重複排除があり、これらは、サーバだけで重複排除すると規定することができる。
【００４１】
レガシー・データの再使用
サーバに既に保管されているレガシー・データは、サーバ側重複排除を用いて最適に重複排除することができ、新規のバックアップは、サーバもしくはクライアント側重複排除のどちらかの利点を取ることができる。こういったことは既存のシステムでは可能でなく、既存システムでは、クライアント側重複排除は、進行中のものに展開する能力だけを有し、従って、クライアント側のレガシー・データには重複排除を適用することができない。本発明の各種実施形態は、クライアント側重複排除が、サーバで重複排除されたレガシー・データとの共通のチャンクを共用することを可能にする。これは、レガシー・データがその場所に関わらず重複排除できるので、クライアント単独の対処法にない利点である。
【００４２】
ソース（クライアント）およびターゲット（サーバ）の両方で重複排除オペレーションをうまく実施するためのキーとして、両方の場所で、同一の重複排除プロセス・アルゴリズムおよび重複排除インデックスを使うことが必要である。さらに、圧縮および暗号化など一切のデータ変換アクティビティは、さまざまな場所に亘って正確な重複排除結果を確実にするために、フィンガープリント処理の後およびハッシュ識別の後で実施される。
【００４３】
一つの実施形態によって実施される重複排除構成の一つの例として、重複排除オペレーションは、ソース側およびターゲット側重複排除の両方に対し、同一の、可変サイズ・ブロックのハッシュ処理アルゴリズムを用いる。上記に換えて、ソース側およびターゲット側重複排除に対して同一のアルゴリズム選択ルールが適用されるという条件で、一部のファイルには可変サイズ・ブロックのハッシュ処理を、他に対しては単一インスタンス・ストアを使うなど、複数のアルゴリズムを混用することもできよう。
【００４４】
重複排除がソースまたはターゲットのどちらで実施されるかに関わらず、既存のチャンクを追跡し重複排除されたオブジェクトを再集合するために、記憶システム内では同じ重複排除インデックスが使われ、これにより、ソースおよびターゲット側重複排除が共通のデータを共有することが可能になる。このインデックスは、共有データベースを使って実装することができ、または、ソースとターゲットとの間でチャンク情報の通信を可能にするクライアント−サーバ・プロトコルの使用を介して（すなわち、ターゲットからソースへの適切なチャンク情報のリレーを介して）実装することもできる。
【００４５】
重複するチャンクが識別された後においてだけデータ変換が実施されれば、これにより、変換が重複するチャンクの認識を妨害する可能性が防止される。データが復元されるときは、変換は、クライアント（ソース）によってチャンク・レベルで元に戻される。これにより、クライアントが、混合された（圧縮された、非圧縮の、および暗号化された）チャンクのストリームを受信することが可能になる。上記に換えて、変換を、復元の前にサーバ（ターゲット）によって元に戻すこともできる。
【００４６】
図４は、本発明の一つの実施形態による、クライアント・ソースにおいて統合的重複排除アクティビティを実施する記憶管理システム２００の例示的構成のオペレーションを示す。図示のように、クライアント２２０（データのソース）はネットワーク２３０を介してサーバ２４０（データのターゲット）に接続されている。前図と同様に、記憶システムの通常のオペレーション過程で、バックアップ、保存、移動、または他の管理のためサーバ２４０のデータ・リポジトリ２４５に送信されることになるデータが、クライアント２２０によって取り込まれる。
【００４７】
クライアント２２０によって取り込まれると、ファイルは、サーバ２４０へのファイル・チャンクの最終送信の前に、重複排除コンポーネント２２２を使って重複排除される。この重複排除ステップは、どのチャンクがサーバ２４０上に既に存在するものでないかをチェックすることによって実施される。しかして、この重複排除プロセスは、クライアント上に存在するチャンクに基づいてファイルを重複排除するよりは、むしろ、どのチャンクがターゲットに保管されているかを検証することになる。一つの実施形態において、これは、ターゲット２４０内に配置されたインデックス２４１に問い合わせることによって実施され、インデックスは、サーバのデータ・ストア２４５内にどのようなチャンクが保管されているかを追跡する。
【００４８】
図４に示された例において、重複排除オペレーションがクライアント上で実施されるので、クライアントは、「Ａ」、「Ｂ」、および「Ｃ」チャンクだけが一意的であると判定することになる。さらに、記憶システムのインデックス２４１が問い合わせを受けると、このインデックス内の重複排除情報２４２がクライアントに送信され、クライアントに対し、チャンクＡ’２６１およびＣ’２６２（「Ａ」および「Ｃ」データ・チャンクのコピー）が現在サーバのデータ・ストア２４５に存在していることがさらに連絡される。従って、インデックス２４１からの情報の結果として、クライアントは、サーバのデータ・ストア２４５に保管されていない一意的チャンクは「Ｂ」チャンクのコピーだけであるのを見出すことになる。保管のためサーバに送信されるチャンクはＢ２５１だけとなり、チャンク２６３としてデータ・ストア２４５に保管されることになる。
【００４９】
図６は、本発明の一つの実施形態による、クライアントでデータ重複排除がどのように実行されるかをさらに説明するフローチャートを示す。このフローチャートは、図７のステップ４３１〜４３４に参照されているクライアント側の重複排除アクティビティの一つの実装の例を提示している。図６に示されるように、この重複排除プロセスは、ファイル／オブジェクト「Ｆ」を記憶リポジトリ・サーバにバックアップしてもらう際に、ステップ３１０でクライアントによって開始される。
【００５０】
ステップ３２０において、データの重複排除をクライアントで行うことができる場合、クライアントでの重複排除プロセスの過程でいくつかのステップが実施される。データの重複排除をクライアント上で実施できない場合、ステップ３３０において、重複排除のない通常の処理がクライアントで行われ、この場合、サーバでのファイルの重複排除が必要なことになろう。
【００５１】
重複排除アクティビティがクライアントで実施される場合、ファイル／オブジェクト「Ｆ」は、ステップ３４１でフィンガープリント処理されることになる。これは、ファイル／オブジェクト「Ｆ」に対するいくつかのチャンクの生成をもたらすことになる。ステップ３４２で、ファイルの次のチャンク（または最初のチャンク）Ｄｊが読み出され、ステップ３４３でこのチャンクに対するハッシュｈｊ（Ｄｊ）、長さｌｊ（Ｄｊ）が生成される。図６に示されていない一つの実施形態の別の実装では、フィンガープリント処理はこのループの一部として行われる。しかして、ファイル全体にフィンガープリント処理を行ってその後各々のチャンクを処理する代わりに、各チャンクは、それがフィンガープリント処理の過程で識別されるごとに処理される。
【００５２】
次に、ステップ３５０において、重複排除プロセスは、値［ｈｊ，ｌｊ］で識別されるチャンクが、サーバに所在するかどうかを判定することになる。当該チャンクが既にサーバに保管されている場合、ステップ３７０で、サーバ内でのチャンク［ｈｊ，ｌｊ］への参照だけが生成され、従って、チャンク参照だけがサーバに送信されることになる。当該チャンクがサーバに所在しない場合、そのときは、チャンク・データのサーバへの送信が必要なことになる。
【００５３】
ステップ３６０でのチャンクを圧縮するかどうかの判断に応じて、チャンクはサーバに送信するための準備がされる。チャンク内のデータを圧縮しない場合には、ステップ３８０において、チャンクＤｊ、ハッシュｈｊ、および長さｌｊがサーバに送信されることになる。チャンクＤｊはサーバのデータ・ストアに保管され、ハッシュｈｊ、および長さｌｊは、重複排除インデックス中に格納されることになる。チャンク内のデータが圧縮される場合、ステップ３６１で、チャンクＤｊは、チャンクｃ（Ｄｊ）に圧縮されることになる。ステップ３６２において、圧縮されたチャンクｃ（Ｄｊ）が、ハッシュｈｊ、および長さｌｊとともにサーバに送信され、チャンクはサーバのデータ・リポジトリに保管され、ハッシュおよび長さは、重複排除インデックス中に格納されることになる。
【００５４】
ステップ３８５において、ファイル／オブジェクト「Ｆ」中のさらなる各々のチャンクに対して、サーバ内のチャンクの所在探索プロセスが繰り返される。全てのチャンクが完了したならば、ステップ３９５で、ファイル全体に対して生成されたＭＤ５署名であるＭＤ５（Ｆ）がサーバに送信される。データの完全性を検証するために、ファイル復元オペレーションの過程で随意的にＭＤ５ダイジェストを使用することができる。
【００５５】
当業者は、本開示全体を通して説明するクライアント側の重複排除技法が、クライアントのデータ・ストアでのバンド内重複排除、バンド外重複排除による実施、または、さまざまな時間における重複排除の実施など、いろいろな置き換え(permutations)を使って修正しつつも、クライアントに実施させることが可能なのを認識していよう。どのような置き換えにおいても、本技法は、本発明による重複排除インデックスの使用を介し、ファイルを、重複排除の行われるデータ・ストアに効率的に通信しその中に格納しながら、ソースもしくはターゲットのいずれかにおいてどのように重複排除できるかを実証する。
【００５６】
図５は、本発明の一つの実施形態による、統合的重複排除アクティビティをターゲット・サーバで実施する記憶管理システム２００の例示的構成を示す。図４と同様に、クライアント２２０（データのソース）はネットワーク２３０を介してサーバ２４０（データのターゲット）に接続されている。前述と同様に、ターゲット側の重複排除が使われる場合、クライアント内ではファイルが単なるビットのストリーム２２５として取り扱われ得るので、クライアント２２０は、ファイル２０５がチャンクから成ることに気付かないことさえある。
【００５７】
この実施形態においては、重複排除はターゲット２４０で行われるので、ファイル２５０（これはサーバでチャンクＡ２５１、Ｂ２５２、Ｂ２５３、Ａ２５４、およびＣ２５５に分割されることになる）の各部分は、ネットワーク２３０を介してサーバ２４０に送信される。ターゲット２４０がファイルの各チャンクを取り込み次第、重複排除コンポーネント２４３はターゲットにおいて重複排除を実施するため作動する。このコンポーネントは、重複排除インデックス２４１にアクセスし、どのチャンクがサーバのデータ・ストア２４５に既に保管されているかを判断する。
【００５８】
図５の例において、重複排除プロセス２４３は、重複排除情報２４２を使って、インデックス２４１が「Ａ」および「Ｃ」のデータ・チャンクに対するエントリを既に包含している（ターゲット・データ・ストア２４５にＡ’２６１およびＣ’２６２として格納されている）と判定することになろう。重複排除の後、ターゲットに加えられることになるデータ・チャンクはチャンク「Ｂ」のコピーだけであり、従って、「Ｂ」のデータ・チャンクの一意的コピーがデータ・ストアに２６３として配置される。当業者は、図５が、バンド内重複排除の一実施形態を示したものであることを認識するであろう。従って、上記に換えて、ターゲットでバンド外重複排除が使われる場合は、データ・ストア内で重複チャンクが識別された後、それら重複チャンクがデータ・ストアから除去されることになる。
【００５９】
これも同様に、当業者は、本開示全体に亘って説明したサーバ側の重複排除技法が、サーバのデータ・ストア上でのバンド内重複排除、バンド外重複排除による実施、または、さまざまな時間における重複排除の実施など、いろいろな置き換えを使って修正しつつも、サーバに実施させることが可能なのを認識していよう。どのような置き換えにおいても、本技法は、本発明による重複排除インデックスの使用を介し、ファイルを、重複排除の行われるデータ・ストア内で効率的に管理されるようにしながら、ソース・クライアントもしくはターゲット・サーバのいずれかにおいてどのように重複排除され得るかを実証する。
【００６０】
（前述の構成を用いたものなど）ソースおよびターゲット側重複排除アクティビティによって生成された共通のデータの共有を可能にする記憶システム・インフラストラクチャを前提として、さまざまな技法を用い、特定のクライアント・マシンで何時どの程度ソースによる重複排除を実施するか、およびターゲットによる重複排除を何時使うかを決定することができる。一つの実施形態において、ルール・ベースのポリシーが定義され、記憶管理システムが、ルールのセットまたはシステム状態に応じて重複排除を実施すべき場合を判定することを可能にする。以下は、かかるポリシーの限定されない一組の例である。
【００６１】
このポリシーは、当該クライアント・ノード、すなわち、そのデータを重複排除する当該マシンに基づくものとすることができる。上記に換えて、このポリシーを、同一のポリシー要求事項を有するクライアント・ノードの一群を定義するポリシー・ドメインに基づくものとすることもできる。一例として、一組のマシンが、高度に機密なデータを包含するとして指定されている場合、ソースでの重複排除は実施されないことになる。これは、ファイルがサーバに転送され、必要に応じバックアップされることを可能にし、その後でだけ、データの冗長チャンクを除去するための重複排除が実施されることになる。
【００６２】
このポリシーは、ファイルが保管されているファイル・システム、ファイルへのパス、ファイル名、ファイル・タイプまたはファイル・サイズなど、ファイル（オブジェクト）の特性に基づくものとすることができる。このポリシーは、ファイル自体の特性に基づき、重複排除をどこで最適に実施できるかを判定する選択ルールを使って実行することができる。
【００６３】
また、このポリシーは、時間に基づくものとすることもできる。時間に関連する測定値に従って、前述のポリシー群を変更するためのスケジュールを実行することができる。例えば、週末には平日と異なるポリシーを適用するなどが考えられよう。
【００６４】
このポリシーをシステム負荷に基づくものとすることも可能である。保護対象のクライアント・マシン、サーバ・システム、およびネットワーク上の負荷をモニタリングすることによって、利用可能な最良のリソースを保存するもしくは使用するまたはその両方のための決定を行うことができる。例えば、過度のネットワーク・トラフィックの時間の間は、ターゲットへの不必要なデータ転送を防止するため、ソース側重複排除を用いることができよう。
【００６５】
このポリシーは、特定のノードまたはソース・システム、あるいはソース・システム内の特定のファイル、データ・タイプ、デバイス、またはサブシステムに対し、細かい粒度レベルで個別に定義することができる。当業者なら認識するであろうように、本明細書で説明したさまざまなポリシー技法を組み合わせ統合して、ソースとターゲットとの間で重複排除のロバストな切り換えを可能にしながら、しかも特定環境の場所における重複排除の実施だけに対する対応性およびカスタム化性を有する高度なシステムを生成することができよう。さらに、当業者は、本明細書で説明したポリシーが、手動で、または自動的に、ネットワークの一部または全体に亘って実装可能なことを認識していよう。
【００６６】
図７は、本発明の一つの実施形態による、データの統合的重複排除を実施するオペレーションのフローチャートを示す。このオペレーションは、ステップ４１０において、データ・オブジェクトに対し重複排除が実施されようとするときに開始される。それに続くアクティビティは、重複排除アクティビティがソースで実施されるか、またはターゲットで実施されるかによって決まる。上記に沿って、この実施場所は、ステップ４２０でポリシーに従い、いくつかのポリシー判断項目（時間、システム負荷、ファイル特性、クライアント・ノード、またはポリシー・ドメインなど）に整合して選択される。
【００６７】
クライアント側で重複排除が行われる場合、ステップ４３１において、フィンガープリント処理、およびハッシュ処理アルゴリズムなど、重複排除プロセスの各種アルゴリズムが適用され、データ・オブジェクトを構成するデータ・チャンクの特性が識別される。ここでは、重複排除プロセスは、ターゲットに現在保管されているデータ・チャンクに基づいて実施されるので、ステップ４３２において、ターゲットにより維持されている重複排除インデックスへのアクセスが行われその情報が見定められることになる。ある特定のデータ・チャンクのハッシュ処理および識別は、通常、その特定のデータ・チャンクに対するインデックス情報に全面的にアクセスできる前に行わなければならない。次いで、ステップ４３３で、データ・チャンクに対し（暗号化などの）任意のデータ変換が実施されることになる。次いで、ステップ４３４において、データ・オブジェクトの重複排除されたチャンクが、保管のためクライアントからサーバに転送されることになる。
【００６８】
サーバ側の重複排除で取られるステップも同様である。最初のステップは、ステップ４４１で、クライアントからのデータ・オブジェクトを受信することを含む。データ・チャンクが受信されたならば、ステップ４４２で、データ・オブジェクトおよびそのチャンクに対し、フィンガープリント処理およびハッシュ処理アルゴリズムを適用することを含め、サーバでの重複排除アルゴリズムが実行され、ステップ４４３において、データ・オブジェクト・チャンクの重複排除インデックス情報へのアクセスが行われ、ステップ４４４で、最終的に任意のデータ変換が実施されることになる。
【００６９】
ステップ４５０で、サーバからデータ・オブジェクトを読み出す必要が生じたとき、以下のステップが実施されることになる。ステップ４６１において、重複排除されたデータ・オブジェクトのチャンクがサーバから読み出される。一つの実施形態において、ステップ４６２で、クライアントへのデータ送信の前に、チャンクの解読または解凍などデータ変換の逆処理（reversal）を実施することができる。クライアントへのこのデータ送信は、ステップ４６３で、データ・チャンクのストリームを使って行われる。サーバからのデータ・チャンクのストリームは、４７１においてクライアントで受信されることになり、このストリームには、圧縮されたチャンク、非圧縮のチャンク、および暗号化されたチャンクなど、混合された変換タイプのチャンクを含めることができる。別の実施形態では、サーバでデータ変換がまだ逆処理されていない場合、データ全体が受信され次第、ステップ４７２において、クライアントでそれらを逆処理することができる。最後に、ステップ４７３で、データ・チャンクは、それらが対応するデータ・オブジェクトに再構成される。
【００７０】
当業者ならよく理解するであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれる、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体（群）中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
【００７１】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
【００７２】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現されたコンピュータ可読のプログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の組み合わせを含め、さまざまな形態の任意の形を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【００７３】
コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合せで記述することができる。このプログラム・コードは、全体をユーザのコンピュータで、一部をユーザのコンピュータで、スタンドアロン・ソフトウェア・パッケージとして実行することができ、一部をユーザのコンピュータで他の部分を遠隔コンピュータで、または全体を遠隔のコンピュータまたはサーバで実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことができる。
【００７４】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート説明図もしくはブロック図またはその両方を参照しながら本発明の態様を上記で説明してきた。フローチャート説明図もしくはブロック図またはその両方の各ブロック、および、フローチャート説明図もしくはブロック図またはその両方中のブロックの組み合せは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施するための手段を生成するようにすることができる。
【００７５】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令できるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能／処理を実施する命令群を包含する製品を形成するようにすることができる。
【００７６】
同様に、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ、他のプログラム可能装置、または他のデバイス上で一連のオペレーション・ステップを実施させてコンピュータ実装のプロセスを生成し、これらコンピュータまたは他のプログラム可能装置で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施するためのプロセスを提供するようにすることもできる。
【００７７】
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、所定の論理機能（群）を実行するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることに留意すべきである。例えば、連続して示された２つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によっては、時には、これらブロックが逆の順序で実行されることもあり得る。また、ブロック図もしくはフローチャート説明図またはその両方の各ブロック、およびブロック図もしくはフローチャート説明図またはその両方中のブロックの組み合わせは、特定の機能または処置を実施する、特殊用途のハードウェア・ベースのシステム、または特殊用途のハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【００７８】
上記で、本発明のさまざまな代表的実施形態を、ある程度の特殊性を持たせて説明してきたが、当業者は、本明細書および請求項の中で述べられた本発明の主題の精神および範囲を逸脱することなく、開示した実施形態に数多くの変形を加えることができよう。
【図１】
0005571786.tif 000002
【図２】
0005571786.tif 000003
【図３】
0005571786.tif 000004
【図４】
0005571786.tif 000005
【図５】
0005571786.tif 000006
【図６】
0005571786.tif 000007
【図７】
0005571786.tif 000008