(57)【特許請求の範囲】
【請求項１】
バックアップシステムの性能を改善するための方法であって、
クライアントデバイスのデータについてのバックアップを実行することと、
少なくとも１つのコンピュータプロセッサを使用して、前記データについてのバックアップに関連付けられた記憶ユニットの外部に配置された以前に記憶されたデータセグメントへの参照を追跡することであって、前記参照は世代番号を監視しまた１つ以上のバックアップ世代と関連付けられたデータの量を判定することによって追跡される、追跡することと、
前記追跡された参照に基づき、前記バックアップに関連付けられた前記記憶ユニットの使用率を計算することと、
前記計算された使用率が指定されたパラメータを満たすかどうかを判定することと、
前記計算された使用率が前記指定されたパラメータを満たす場合に１つ以上の応答動作を判定することであって、前記応答動作は前記計算された記憶ユニットの使用率が指定された閾値を下回るという判定に基づいて後続のバックアップにて記憶ユニットの１つ以上の変更されていないデータセグメントを送信することを含み、記憶ユニットの前記１つ以上の変更されていないデータセグメントは第２の記憶ユニットのデータセグメントと組み合わされて新しい記憶ユニット内に記憶されることによってバックアップについてのデータ断片化を低減する、判定することと、を含む、方法。
【請求項２】
前記１つ以上の応答動作を実行することを更に含む、請求項１に記載の方法。
【請求項３】
前記１つ以上の応答動作は、計算された使用率の情報をユーザに提供することと、バックアップ動作をユーザに推奨することと、後続のバックアップにおいて送信する前記参照によって参照された１つ以上のセグメントを特定することと、のうちの少なくとも１つをさらに含み、前記応答動作は追加的には記憶ユニットの前記計算された使用率が指定された閾値を下回るという判定に基づいて後続のバックアップにて記憶ユニットの１つ以上の変更されていないデータセグメントを送信することを随意的に含む、請求項１に記載の方法。
【請求項４】
前記バックアップの外部にある以前に記憶されたデータセグメントへの参照を追跡することは、クライアントサイトにおいて実行される、請求項１に記載の方法。
【請求項５】
前記記憶ユニットの外部にある以前に記憶されたデータセグメントへの参照を追跡することは、前記記憶ユニットに関連付けられたデータセグメントを特定することによって実行される、請求項４に記載の方法。
【請求項６】
使用率を計算することは、前記記憶ユニットに関連付けられた、前記特定されたデータセグメントをカウントすることと、前記特定されたセグメントによって使用される前記記憶ユニットの部分を判定することと、を含む、請求項５に記載の方法。
【請求項７】
前記指定されたパラメータは記憶ユニットの許容可能な使用率の範囲を含む、請求項１に記載の方法。
【請求項８】
前記指定されたパラメータは記憶ユニットの許容不可能な使用率の範囲を含む、請求項１に記載の方法。
【請求項９】
前記応答動作は、記憶ユニットの前記計算された使用率が指定された閾値を下回るという判定に基づき、後続のバックアップにおいて、記憶ユニットの変更されていないデータの１つ以上のセグメントを送信することを含む、請求項１に記載の方法。
【請求項１０】
前記記憶ユニット内の変更されていないデータの１つ以上のセグメントは、バックアップに対するデータの断片化を低減するために、第２の記憶ユニット内のデータのセグメントと組み合わされ、新しい記憶ユニット内に記憶される、請求項９に記載の方法。
【請求項１１】
前記バックアップに関連付けられた前記記憶ユニットはコンテナを含む、請求項１に記載の方法。
【請求項１２】
前記記憶ユニットの使用率の閾値を指定するパラメータを設定するためのユーザインタフェースを提供することを更に含む、請求項１に記載の方法。
【請求項１３】
前記ユーザインタフェースは、前記記憶ユニットの使用率の指示、及び前記記憶ユニットのデータの断片化の推定値に少なくとも部分的に基づく推定バックアップ復元時間の指示を提供する、請求項１２に記載の方法。
【請求項１４】
前記ユーザインタフェースは、前記記憶ユニットのデータの重複排除のレベルに少なくとも部分的に基づく推定バックアップ時間の指示を提供する、請求項１３に記載の方法。
【請求項１５】
請求項１に記載の方法を実行するためのコンピュータ処理を実行するよう少なくとも１つのプロセッサに命令するために、前記少なくとも１つのプロセッサによって読み取り可能になるように構成される、命令のコンピュータプログラムを記憶する、少なくとも１つの非一時的プロセッサ可読記憶媒体。
【請求項１６】
バックアップシステムの性能を改善するための製品であって、
少なくとも１つの非一時的プロセッサ可読記憶媒体と、
前記少なくとも１つの媒体に記憶された命令と、を含み、
前記命令は、少なくとも１つのプロセッサによって前記少なくとも１つの媒体から読み取り可能になり、それによって少なくとも１つのプロセッサを、
クライアントデバイスのデータについてのバックアップを実行し、
前記データについてのバックアップに関連付けられた記憶ユニットの外部に配置された以前に記憶されたデータセグメントへの参照を追跡するのであって、前記参照は１つ以上のバックアップ世代と関連付けられたデータの量を監視することによって追跡され、
前記追跡された参照に基づき、前記バックアップに関連付けられた前記記憶ユニットの使用率を計算し、
前記計算された使用率が指定されたパラメータを満たすかどうかを判定し、
前記計算された使用率が前記指定されたパラメータを満たす場合に１つ以上の応答動作を判定するように動作させるように構成される、製品であって、前記応答動作は前記計算された記憶ユニットの使用率が指定された閾値を下回るという判定に基づいて後続のバックアップにて記憶ユニットの１つ以上の変更されていないデータセグメントを送信することを含み、記憶ユニットの前記１つ以上の変更されていないデータセグメントは第２の記憶ユニットのデータセグメントと組み合わされて新しい記憶ユニット内に記憶されることによってバックアップについてのデータ断片化を低減する、製品。
【請求項１７】
バックアップシステムの性能を改善するためのシステムであって、
ネットワークに通信可能に結合された１つ以上のプロセッサを備え、前記１つ以上のプロセッサは、
クライアントデバイスのデータについてのバックアップを実行し、
前記データについてのバックアップに関連付けられた記憶ユニットの外部に配置された以前に記憶されたデータセグメントへの参照を追跡するのであって、前記参照は世代番号を監視しまた１つ以上のバックアップ世代と関連付けられたデータの量を判定することによって追跡され、
前記追跡された参照に基づき、前記バックアップに関連付けられた前記記憶ユニットの使用率を計算し、
前記計算された使用率が指定されたパラメータを満たすかどうかを判定し、
前記計算された使用率が前記指定されたパラメータを満たす場合に１つ以上の応答動作を判定するように構成される、システムであって、前記応答動作は前記計算された記憶ユニットの使用率が指定された閾値を下回るという判定に基づいて後続のバックアップにて記憶ユニットの１つ以上の変更されていないデータセグメントを送信することを含み、記憶ユニットの前記１つ以上の変更されていないデータセグメントは第２の記憶ユニットのデータセグメントと組み合わされて新しい記憶ユニット内に記憶されることによってバックアップについてのデータ断片化を低減する、システム。
【請求項１８】
前記記憶ユニットの外部にある以前に記憶されたデータセグメントへの参照を追跡することは、前記クライアントデバイスにおいて実行される、請求項１７に記載のシステム。
【請求項１９】
前記記憶ユニットの外部にある以前に記憶されたデータセグメントへの参照を追跡することは、記憶ユニットに関連付けられたデータセグメントを特定することによって実行される、請求項１７に記載のシステム。
【請求項２０】
前記応答動作は、記憶ユニットの前記計算された使用率が指定された閾値を下回るという判定に基づき、後続のバックアップにおいて、記憶ユニットの変更されていないデータの１つ以上のセグメントを送信することを含む、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概してデータの重複排除に関し、より詳細には、バックアップシステムの性能を改善するための技術に関する。
【背景技術】
【０００２】
データ重複排除は、バックアップシステムが、以前にバックアップしたデータ（即ち、重複したデータ）のバックアップを低減することによって記憶領域を節約することを可能にする。バックアップシステムは、バックアップされるデータセグメント（例えば、ブロック）の指紋又はハッシュを生成する場合がある。ハッシュ又は指紋が、以前に記憶したデータセグメントと一致する場合、バックアップシステムは単純に、以前に記憶したデータセグメントへの参照又はポインタを記録する場合がある。例えば、バックアップから以前に記憶したセグメントのコピーへの参照が作成され得る場合、サーバボリュームの第２のバックアップは、データセグメントを（変更されている場合でも）バックアップしない場合がある。以前に記憶したセグメントへの参照は、バックアップに必要な記憶領域の量を、複数のバックアップにわたってセグメントを共有することによって低減し得る。重複排除されたバックアップからの復元は、バックアップによって参照されるデータだけでなく、データがバックアップから取得されることも必要とする場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
バックアップ内のデータセグメントへの参照は、結果的に、記憶領域全体に分散したセグメントへの参照（例えば、大きいボリューム全体に分散したセグメントを指す参照）となり得る。復元の性能は、入出力（Ｉ／Ｏ）要求がランダムになるにしたがって低下し得る。また、断片化を低減する作業は、バックアップサーバのオーバーヘッドを増加させ得る。
【０００４】
上記のことを考慮すると、現在のセキュリティ情報改善技術に関連する重大な問題及び欠点が存在する可能性があることが理解され得る。
【課題を解決するための手段】
【０００５】
バックアップシステムの性能を改善するための技術が開示される。特定の一例示的実施形態では、技術は、バックアップシステムの性能を改善するための方法として実現されてもよい。方法は、クライアントデバイスのバックアップを実行することと、少なくとも１つのコンピュータプロセッサを使用して、バックアップに関連付けられた記憶ユニットの外部に配置されたデータセグメントへの参照を追跡することと、追跡された参照に基づき、バックアップに関連付けられた記憶ユニットの使用率を計算することと、計算された使用率が指定されたパラメータを満たすかどうかを判定することと、計算された使用率が指定されたパラメータを満たす場合に１つ以上の応答動作を判定することと、を含んでもよい。
【０００６】
この特定の例示的実施形態の他の態様によれば、技術は、１つ以上の応答動作を実行することを更に含んでもよい。
【０００７】
この特定の例示的実施形態の更なる態様によれば、１つ以上の応答動作は、計算された使用率の情報をユーザに提供することと、バックアップ動作をユーザに推奨することと、後続のバックアップにおいて送信する１つ以上の参照セグメントを特定することと、のうちの少なくとも１つを含んでもよい。
【０００８】
この特定の例示的実施形態の追加の態様によれば、バックアップの外部にあるデータセグメントへの参照を追跡することは、クライアントサイトにおいて実行されてもよい。
【０００９】
この特定の例示的実施形態の追加の態様によれば、記憶ユニットの外部にあるデータセグメントへの参照を追跡することは、記憶ユニットに関連付けられたデータセグメントを特定することによって実行されてもよい。
【００１０】
この特定の例示的実施形態の追加の態様によれば、使用率を計算することは、記憶ユニットに関連付けられた、特定されたデータセグメントをカウントすることと、特定されたセグメントによって使用される記憶ユニットの部分を判定することと、を含んでもよい。
【００１１】
この特定の例示的実施形態の追加の態様によれば、指定されたパラメータは、記憶ユニットの許容可能な使用率の範囲を含んでもよい。
【００１２】
この特定の例示的実施形態の追加の態様によれば、指定されたパラメータは、記憶ユニットの許容不可能な使用率の範囲を含んでもよい。
【００１３】
この特定の例示的実施形態の追加の態様によれば、応答動作は、記憶ユニットの計算された使用率が指定された閾値を下回るという判定に基づき、後続のバックアップにおいて、記憶ユニットの変更されていないデータの１つ以上のセグメントを送信することを含んでもよい。
【００１４】
この特定の例示的実施形態の追加の態様によれば、記憶ユニット内の変更されていないデータの１つ以上のセグメントは、バックアップに対するデータの断片化を低減するために、第２の記憶ユニット内のデータのセグメントと組み合わされ、新しい記憶ユニット内に記憶されてもよい。
【００１５】
この特定の例示的実施形態の追加の態様によれば、バックアップに関連付けられた記憶ユニットは、コンテナを含んでもよい。
【００１６】
この特定の例示的実施形態の追加の態様によれば、技術は、記憶ユニットの使用率の閾値を指定するパラメータを設定するためのユーザインタフェースを提供することを更に含んでもよい。
【００１７】
この特定の例示的実施形態の追加の態様によれば、ユーザインタフェースは、記憶ユニットの使用率の指示、及び記憶ユニットのデータの断片化の推定値に少なくとも部分的に基づく推定復元時間の指示を提供してもよい。
【００１８】
この特定の例示的実施形態の追加の態様によれば、ユーザインタフェースは、記憶ユニットのデータの重複排除のレベルに少なくとも部分的に基づく推定バックアップ時間の指示を提供してもよい。
【００１９】
この特定の例示的実施形態の追加の態様によれば、技術は、命令のコンピュータプログラムを記憶する、少なくとも１つの非一時的プロセッサ可読記憶媒体として実現されてもよく、この命令は、方法を実行するためのコンピュータ処理を実行するよう少なくとも１つのプロセッサに命令するために、少なくとも１つのプロセッサによって読み取り可能になるように構成される。
【００２０】
別の特定の例示的実施形態では、技術（単数又は複数）は、バックアップシステムの性能を改善するための製品として実現されてもよい。製品は、少なくとも１つの非一時的プロセッサ可読記憶媒体、及び少なくとも１つの媒体に記憶された命令を含んでもよい。命令は、少なくとも１つの媒体から少なくとも１つのプロセッサによって読み取り可能になり、それによって、少なくとも１つのプロセッサを、クライアントデバイスのバックアップを実行するように動作させ、バックアップに関連付けられた記憶ユニットの外部に配置されたデータセグメントへの参照を追跡させ、追跡された参照に基づき、バックアップに関連付けられた記憶ユニットの使用率を計算させ、計算された使用率が指定されたパラメータを満たすかどうかを判定させ、計算された使用率が指定されたパラメータを満たす場合に１つ以上の応答動作を判定させるように構成されてもよい。
【００２１】
更に別の特定の例示的実施形態では、技術は、ネットワークに通信可能に結合された１つ以上のプロセッサを含むバックアップシステムの性能を改善するためのシステムとして実現されてもよい。１つ以上のプロセッサは、クライアントデバイスのバックアップを実行し、バックアップに関連付けられた記憶ユニットの外部に配置されたデータセグメントへの参照を追跡し、追跡された参照に基づき、バックアップに関連付けられた記憶ユニットの使用率を計算し、計算された使用率が指定されたパラメータを満たすかどうかを判定し、計算された使用率が指定されたパラメータを満たす場合に１つ以上の応答動作を判定するように構成されてもよい。
【００２２】
この特定の例示的実施形態の追加の態様によれば、記憶ユニットの外部にあるデータセグメントへの参照を追跡することは、クライアントデバイスにおいて実行されてもよい。
【００２３】
この特定の例示的実施形態の追加の態様によれば、記憶ユニットの外部にあるデータセグメントへの参照を追跡することは、記憶ユニットに関連付けられたデータセグメントを特定することによって実行されてもよい。
【００２４】
この特定の例示的実施形態の追加の態様によれば、応答動作は、記憶ユニットの計算された使用率が指定された閾値を下回るという判定に基づき、後続のバックアップにおいて、記憶ユニットの変更されていないデータの１つ以上のセグメントを送信することを含んでもよい。
【００２５】
ここで、本開示について、添付図面に示すようなその例示的実施形態を参照して、より詳細に説明する。本開示は、例示的実施形態を参照して以下で説明されるが、本開示はそれに限定されるものではないことを理解されたい。本明細書の教示を参照する当業者は、追加の実装、変更態様、及び実施形態、並びに、本明細書に記載されているような本開示の範囲内であり、かつ本開示がそれに関連して著しい有用性を有し得る他の使用分野を認識するであろう。
【図面の簡単な説明】
【００２６】
ここで、本開示のより完全な理解を促進するために添付図面が参照され、これらの図面では、類似の要素が類似の番号を使用して参照される。これらの図面は、本開示を制限するものとして解釈すべきではなく、例示のみを目的としている。
【図１】本開示の一実施形態に係るバックアップシステムの性能を改善するためのネットワークアーキテクチャを示すブロック図である。
【図２】本開示の一実施形態に係るコンピュータシステムのブロック図である。
【図３】本開示の一実施形態に係るバックアップシステムの性能を改善するためのモジュールを示す図である。
【図４】本開示の一実施形態に係るバックアップシステムの性能を改善するための方法を示す図である。
【図５】本開示の一実施形態に係るバックアップシステムにおける復元速度の比較を示す図である。
【図６】本開示の一実施形態に係るバックアップシステムにおけるバックアップ速度の比較を示す図である。
【図７】本開示の一実施形態に係る第１のバックアップ及び第２のバックアップにおけるコンテナの使用率を示す図である。
【図８】本開示の一実施形態に係る第２のバックアップ及び第３のバックアップにおけるコンテナの使用率を示す図である。
【図９】本開示の一実施形態に係る第３のバックアップ及び第４のバックアップにおけるコンテナの使用率を示す図である。
【発明を実施するための形態】
【００２７】
図１は、本開示の一実施形態に係るバックアップシステムの性能を改善するためのネットワークアーキテクチャ１００を示すブロック図である。図１はネットワークアーキテクチャ１００の簡略化された図であり、示されていない追加の要素を含み得る。ネットワークアーキテクチャ１００は、クライアントシステム１１０、１２０及び１３０、並びにサーバ１４０Ａ及び１４０Ｂ（これらのうちの１つ以上は、図２に示すコンピュータシステム２００を使用して実装されてもよい）を含んでもよい。クライアントシステム１１０、１２０及び１３０は、ネットワーク１５０に通信可能に結合されてもよい。サーバ１４０Ａは記憶装置１６０Ａ（１）〜（Ｎ）に通信可能に結合されてもよく、サーバ１４０Ｂは記憶装置１６０Ｂ（１）〜（Ｎ）に通信可能に結合されてもよい。サーバ１４０Ａ及び１４０Ｂは、管理モジュール（例えば、サーバ１４０Ａの重複排除実行モジュール１５４）を含んでもよい。サーバ１４０Ａ及び１４０Ｂは、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、ストレージエリアネットワーク）ファブリック１７０に通信可能に結合されてもよい。ＳＡＮファブリック１７０は、サーバ１４０Ａ及び１４０Ｂ、並びにクライアントシステム１１０、１２０及び１３０による、ネットワーク１５０を介した記憶装置１８０（１）〜（Ｎ）へのアクセスをサポートしてもよい。
【００２８】
図２のコンピュータシステム２００を参照すると、クライアントシステム１１０、１２０及び１３０のうちの１つ以上からネットワーク１５０への接続を提供するために、モデム２４７、ネットワークインタフェース２４８、又は何らかの他の方法が使用されてもよい。クライアントシステム１１０、１２０及び１３０は、サーバ１４０Ａ又は１４０Ｂ上の情報に、例えば、ウェブブラウザ又は他のクライアントソフトウェア（図示せず）を使用してアクセスすることができてもよい。そのようなクライアントは、クライアントシステム１１０、１２０及び１３０が、サーバ１４０Ａ若しくは１４０Ｂ、又は記憶装置１６０Ａ（１）〜（Ｎ）、１６０Ｂ（１）〜（Ｎ）、及び／若しくは１８０（１）〜（Ｎ）のうちの１つによってホストされるデータにアクセスすることを可能にしてもよい。
【００２９】
ネットワーク１５０及び１９０は、ローカルエリアネットワーク（local area network、ＬＡＮ）、ワイドエリアネットワーク（wide area network、ＷＡＮ）、インターネット、セルラーネットワーク、衛星ネットワーク、又はクライアント１１０、１２０、１３０、サーバ１４０、並びにネットワーク１５０及び１９０に通信可能に結合された他のデバイスの間の通信を可能にする他のネットワークであってもよい。ネットワーク１５０及び１９０は、スタンドアロンネットワークとして、又は互いと連携して動作する、上述の１つ又は任意の数の例示的な種類のネットワークを更に含んでもよい。ネットワーク１５０及び１９０は、それらが通信可能に結合される１つ以上のクライアント又はサーバの１つ以上のプロトコルを利用してもよい。ネットワーク１５０及び１９０は、他のプロトコルをネットワークデバイスの１つ以上のプロトコルへ、又はネットワークデバイスの１つ以上のプロトコルを他のプロトコルへと変換してもよい。ネットワーク１５０及び１９０はそれぞれ１つのネットワークとして示されているが、１つ以上の実施形態によれば、ネットワーク１５０及び１９０はそれぞれ、複数の相互接続されたネットワークを含んでもよいことを理解されたい。
【００３０】
記憶装置１６０Ａ（１）〜（Ｎ）、１６０Ｂ（１）〜（Ｎ）、及び／又は１８０（１）〜（Ｎ）は、ネットワークアクセス可能な記憶装置であってもよく、サーバ１４０Ａ又は１４０Ｂに対してローカル、リモート、又はこれらの組み合わせであってもよい。記憶装置１６０Ａ（１）〜（Ｎ）、１６０Ｂ（１）〜（Ｎ）、及び／又は１８０（１）〜（Ｎ）は、レイド（redundant array of inexpensive disks、「ＲＡＩＤ」）、磁気テープ、ディスク、ストレージエリアネットワーク（「ＳＡＮ」）、インターネット小型コンピュータシステムインタフェース（internet small computer systems interface、「ｉＳＣＳＩ」）ＳＡＮ、ファイバチャネルＳＡＮ、共通インターネットファイルシステム（common Internet File System、「ＣＩＦＳ」）、ネットワーク接続ストレージ（network attached storage、「ＮＡＳ」）、ネットワークファイルシステム（network file system、「ＮＦＳ」）、光ベースの記憶装置、又はコンピュータによってアクセス可能な他の記憶装置を利用してもよい。記憶装置１６０Ａ（１）〜（Ｎ）、１６０Ｂ（１）〜（Ｎ）、及び／又は１８０（１）〜（Ｎ）は、バックアップ又はアーカイブ目的で使用されてもよい。
【００３１】
いくつかの実施形態によれば、クライアント１１０、１２０、及び１３０は、スマートフォン、ＰＤＡ、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、他のコンピュータ、又は無線若しくは有線接続を介してネットワーク１５０に結合された他のデバイスであってもよい。クライアント１１０、１２０、及び１３０は、ユーザ入力、データベース、ファイル、Ｗｅｂサービス、及び／又はアプリケーションプログラミングインタフェースからデータを受け取ってもよい。
【００３２】
サーバ１４０Ａ及び１４０Ｂは、アプリケーションサーバ、アーカイブプラットフォーム、バックアップサーバ、ネットワーク記憶装置、メディアサーバ、電子メールサーバ、ドキュメント管理プラットフォーム、エンタープライズ検索サーバ、又はネットワーク１５０に通信可能に結合された他のデバイスであってもよい。サーバ１４０Ａ及び１４０Ｂは、アプリケーションデータ、バックアップデータ、又は他のデータの記憶のために、記憶装置１６０Ａ（１）〜（Ｎ）、１６０Ｂ（１）〜（Ｎ）、及び／又は１８０（１）〜（Ｎ）のうちの１つを利用してもよい。サーバ１４０Ａ及び１４０Ｂは、クライアント１１０、１２０、及び１３０とバックアッププラットフォーム、バックアップ処理、及び／又は記憶装置との間を移動するデータを処理し得る、アプリケーションサーバなどのホストであってもよい。いくつかの実施形態によれば、サーバ１４０Ａ及び１４０Ｂは、データのバックアップ及び／又はアーカイブに使用されるプラットフォームであってもよい。データの１つ以上の部分は、適用されるバックアップポリシー及び／若しくはアーカイブ、データソースに関連付けられた属性、バックアップのために利用可能な領域、データソースにおける利用可能な領域、又は他の要因に基づきバックアップ若しくはアーカイブされてもよい。
【００３３】
いくつかの実施形態によれば、クライアント１１０、１２０、及び／又は１３０は、例えば、重複排除実行モジュール１５４など、バックアップシステムの性能改善のための、ソフトウェアの１つ以上の部分を含んでもよい。図示されるように、重複排除実行モジュール１５４の１つ以上の部分は、ネットワークの中心位置に存在してもよい。例えば、サーバ１４０Ａは、サーバ、ファイアウォール、ゲートウェイ、又はバックアップシステムの性能を改善するための１つ以上の動作を実行し得る他のネットワーク要素であってもよい。いくつかの実施形態によれば、ネットワーク１９０は外部ネットワーク（例えば、インターネット）であってもよく、サーバ１４０Ａは１つ以上の内部構成要素及びクライアントと外部ネットワークとの間のゲートウェイ又はファイアウォールであってもよい。
【００３４】
一部の実施形態では、特定の記憶ユニット内のデータは、概してバックアップ内のデータの局所性と相互に関連するものと見なされてもよい。例えば、データが同じコンテナ内にある場合、そのデータは、データのうちのより多くを単一のＩ／Ｏ要求において読み取ることを可能にする様式で記憶されてもよい。データが変更されたときに、後続のバックアップは、第１のコンテナ内の元のデータが上書きされないように、別のコンテナ内に記憶された変更を含んでもよい。変更されていないデータは、新しい第２のコンテナ内で、第１のコンテナ内の対応するセグメントへの参照（例えば、ポインタ）によって表されてもよい。このデータの重複排除は、バックアップ中に、重複したブロックの書き込みを防止し、時間及び記憶領域を節約し得る。ただし、時間の経過と共に、データはより断片化し、データの局所性は低下し得る。そのようなデータの復元は、Ｉ／Ｏ要求が断片化した記憶領域にわたって（例えば、ボリューム内の複数のコンテナにわたって）分散するか又はランダムになり得るため、より困難になり、より長い時間が係る場合がある。重複排除実行モジュール１５４は、データの局所性が低いことの指示であり得る、使用率の低いコンテナを特定してもよい。以下でより詳細に説明するように、重複排除実行モジュール１５４は、バックアップの記憶領域及び性能と復元の性能との間のバランスを取るために、１つ以上のバックアップにおける重複排除を調節する能力をユーザに提供してもよい。
【００３５】
いくつかの実施形態によれば、重複排除実行モジュール１５４は、記憶ユニットの外部にあるデータセグメントへの参照を追跡してもよい。例えば、バックアップは、１つ以上の記憶ユニット（例えば、コンテナ）を使用して実行されてもよい。重複排除実行モジュール１５４は、特定の記憶ユニットに関連付けられた複数の個数のセグメントを追跡してもよい。例えば、初期バックアップは、その全てが新しい、１００メガバイト（ＭＢ）のデータを含んでもよい。このデータは、それぞれが４個の５ＭＢのセグメントを有する、５個の２０ＭＢのコンテナ内に記憶されてもよい。第２のバックアップは、第２のコンテナ内の５ＭＢのデータ及び第３のコンテナ内の１５ＭＢのデータに対する変更を含んでもよい。これらの変更は、新しい第６のコンテナ内に記憶されてもよい。このため、第２のバックアップを使用する復元では、元の第２のコンテナのうちの２５％又は５ＭＢのみが使用されてもよく、このデータの残りは、新しい第６のコンテナから取得されてもよい。重複排除実行モジュール１５４は、バックアップを監視してもよく、コンテナの特定の部分のみがバックアップ内で使用されること、及びそのコンテナに対するデータの残りが、１つ以上の他のコンテナへの参照によって取得されることを判定してもよい。いくつかの実施形態によれば、重複排除実行モジュール１５４は、コンテナに書き込まれるデータの量を追跡することによって、この判定を下してもよい。いくつかの実施形態では、重複排除実行モジュール１５４は、コンテナのサイズを認識及び受信してもよく、データによって使用されるコンテナの割合を判定することができてもよい。
【００３６】
いくつかの実施形態では、重複排除実行モジュール１５４は、コンテナへの書き込みを追跡してもよく、コンテナの使用率が低いことを、コンテナのサイズを認識することなく、そのコンテナへの書き込みを他のコンテナへの書き込みと比較することによって判定してもよい。例えば、バックアップが６個のコンテナへの書き込みを実行し、その書き込みの大部分が１個のコンテナあたり合計約２０ＭＢであるのに対し、第２のコンテナへの書き込みが合計約５ＭＢである場合、重複排除実行モジュール１５４は、第２のコンテナの使用率が低いと判定してもよい。１つ以上の実施形態では、使用率は、重複排除実行モジュール１５４によって、指定されたパラメータに対して測定されてもよい。
【００３７】
１つ以上の実施形態では、重複排除実行モジュール１５４は、データのセグメント又は部分が、セグメントと共に書き込まれる１つ以上の識別子ごとにコンテナに書き込まれることを判定してもよい。例えば、各バックアップイメージは、特定のバックアップに対応する世代番号を有してもよい（例えば、第１のバックアップは世代０、第２のバックアップは世代１などであってもよい）。バックアップイメージは、新しいデータ（例えば、上記の例では世代１を有するセグメント）、及び場合によっては、クライアントによって送信される必要がない、前のバックアップ内のデータセグメント（例えば、上記の例では世代０を有するセグメント）への参照から成ってもよい。重複排除実行モジュール１５４は、セグメントに関連付けられた世代番号を監視してもよく、バックアップ内の各世代に関連付けられたデータの量を判定してもよい。
【００３８】
データセグメントは、長さ、世代番号及びオフセットから成るメタデータを含んでもよい。全てのセグメントの長さの合計は、バックアップイメージのサイズと等しくてもよい。世代番号は、セグメントが関連付けられたバックアップを特定してもよい。オフセットは、同じ世代におけるデータの開始点からのデータのオフセットであってもよい。例えば、データセグメントは、以下のデータ構造に関連付けられてもよい。
【００３９】
ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ  ｉｈ＿ｓｅｇｍｅｎｔ＿ｓ｛
ｉｎｔ６４＿ｔ  ｌｅｎｇｔｈ；／＊データの長さ＊／
ｉｎｔ６４＿ｔ  ｇｅｎｅｒａｔｉｏｎ；／＊どのバックアップにおいて生成されたか＊／
ｉｎｔ６４＿ｔ  ｏｆｆｓｅｔ；／＊世代におけるオフセット＊／
ｓｔｒｕｃｔ  ｉｈ＿ｓｅｇｍｅｎｔ＿ｓ＊  ｎｅｘｔ；
｝ｉｈ＿ｓｅｇｍｅｎｔ＿ｔ；
【００４０】
バックアップを監視することによって、重複排除実行モジュール１５４は、書き込まれるデータの量がわずかしかないデータユニット（例えば、コンテナ）を（例えば、コンテナのサイズを認識することによって、又は特定の世代に書き込まれるセグメントを他の世代に対してカウントすることによって）特定することができてもよい。比較的小さい割合のデータのみが書き込まれるデータユニットを特定することによって、重複排除実行モジュール１５４は、そのようなデータユニットの使用率が低く、データの復元の性能を低下させ得ると推測してもよい。１つ以上のクライアント（例えば、クライアント１１０、１２０、及び１３０）におけるデータユニットの使用率を追跡することによって、重複排除実行モジュール１５４は、バックアップサーバ上に複数のクライアントからの負荷を集中するのではなく、計算負荷をバックアップクライアントに分散してもよい。
【００４１】
記憶ユニットの使用率を計算した後、重複排除実行モジュール１５４は、使用率を１つ以上の指定されたパラメータに対して比較してもよい。例えば、指定されたパラメータは、記憶ユニットの許容可能な使用率の範囲、記憶ユニットの許容不可能な使用率の範囲、及び／又は使用率の閾値を含んでもよい。重複排除実行モジュール１５４は、使用率のパラメータを設定するためのユーザインタフェースを提供してもよい。ユーザインタフェースは、１つ以上の記憶ユニットに対する使用率の指示を提供してもよい。ユーザインタフェースは、記憶ユニットのデータの断片化の推定値、復元時間の履歴データ、データの量、及び／又は他の要因に少なくとも部分的に基づく、推定される復元時間の指示を提供してもよい。ユーザインタフェースは、記憶ユニットに対するデータの重複排除のレベル、データの量、バックアップ時間の履歴データ、及び／又は他の要因に基づく、推定されるバックアップ時間の指示を提供してもよい。いくつかの実施形態によれば、ユーザインタフェースは、ユーザが、コンテナに対する使用率の許容可能なレベルを示す１つ以上のパラメータを指定することによって、復元速度及びバックアップ速度とバックアップ記憶領域のサイズとの間のバランスを選択することを可能にしてもよい。
【００４２】
いくつかの実施形態によれば、重複排除実行モジュール１５４は、記憶ユニット又はコンテナの使用率が低いと判定した場合に１つ以上の動作を実行してもよい。応答動作は、計算された使用率の情報をユーザに提供することと、バックアップ動作をユーザに推奨することと、後続のバックアップにおいて送信する１つ以上の参照セグメントを特定することと、のうちの１つを含んでもよい。応答動作は、記憶ユニットの計算された使用率が指定された閾値を下回るという判定に基づき、後続のバックアップにおいて、記憶ユニットの変更されていないデータの１つ以上のセグメントを送信することも含んでもよい。記憶ユニット内の変更されていないデータの１つ以上のセグメントは、バックアップに対するデータの断片化を低減するために、第２の記憶ユニット内のデータのセグメントと組み合わされ、新しい記憶ユニット内に記憶されてもよい。
【００４３】
図２は、本開示の一実施形態に係るコンピュータシステム２００のブロック図である。コンピュータシステム２００は、本開示に係る技術を実装するのに好適である。コンピュータシステム２００は、中央処理装置２１４、システムメモリ２１７（例えば、ＲＡＭ（Random Access Memory、ランダムアクセスメモリ）、ＲＯＭ（Read Only Memory、リードオンリーメモリ）、フラッシュＲＡＭなど）、入出力（Ｉ／Ｏ）コントローラ２１８などのコンピュータシステム２１０の主サブシステムを相互接続し得るバス２１２、オーディオ出力インタフェース２２２を介したスピーカーシステム２２０などの外部オーディオデバイス、ディスプレイアダプタ２２６を介したディスプレイスクリーン２２４、シリアルポート２２８及び２３０、（キーボードコントローラ２３３を介して接続される）キーボード２３２、記憶装置インタフェース２３４、フロッピーディスク２３８を収容するように動作するフロッピーディスクドライブ２３７、ファイバチャネルネットワーク２９０と接続するように動作するホストバスアダプタ（host bus adapter、ＨＢＡ）インタフェースカード２３５Ａ、ＳＣＳＩバス２３９と接続するように動作するホストバスアダプタ（ＨＢＡ）インタフェースカード２３５Ｂ、並びに光ディスク２４２を収容するように動作する光ディスクドライブ２４０などの外部デバイスを含んでもよい。また、マウス２４６（シリアルポート２２８を介してバス２１２に結合された他のポイントアンドクリックデバイス）、（シリアルポート２３０を介してバス２１２に結合された）モデム２４７、（バス２１２に直接結合された）ネットワークインタフェース２４８、電力マネージャ２５０、及びバッテリ２５２が含まれてもよい。
【００４４】
バス２１２は、中央処理装置２１４と、前に示したようなリードオンリーメモリ（ＲＯＭ）又はフラッシュメモリ（どちらも図示せず）及びランダムアクセスメモリ（ＲＡＭ）（図示せず）を含み得るシステムメモリ２１７との間のデータ通信を可能にする。ＲＡＭは、オペレーティングシステム及びアプリケーションプログラムが読み込まれるメインメモリであってもよい。ＲＯＭ又はフラッシュメモリは、他のコードの中で、周辺構成要素との相互作用などの基本的なハードウェア動作を制御する基本入出力システム（Basic Input-Output system、ＢＩＯＳ）を含んでもよい。コンピュータシステム２１０と共に常駐するアプリケーションは、ハードディスクドライブ（例えば、固定ディスク２４４）、光学ドライブ（例えば、光学ドライブ２４０）、フロッピーディスクユニット２３７、又は他の記憶媒体などのコンピュータ可読媒体を介して記憶及びアクセスされてもよい。例えば、重複排除実行モジュール１５４は、システムメモリ２１７内に常駐してもよい。
【００４５】
記憶装置インタフェース２３４は、コンピュータシステム２１０の他の記憶装置インタフェースと同様、固定ディスクドライブ２４４などの情報の記憶及び／又は取得のための標準的なコンピュータ可読媒体に接続してもよい。固定ディスクドライブ２４４は、コンピュータシステム２１０の一部であってもよく、又は別個であり、かつ他のインタフェースシステムを介してアクセスされてもよい。モデム２４７は、電話リンクを介したリモートサーバへの直接的な接続、又はインターネットサービスプロバイダ（internet service provider、ＩＳＰ）を介したインターネットへの直接的な接続を提供してもよい。ネットワークインタフェース２４８は、ＰＯＰ（point of presence、ポイントオブプレゼンス）を介したインターネットへの直接的なネットワークリンクを介して、リモートサーバへの直接的な接続を提供してもよい。ネットワークインタフェース２４８は、デジタルセルラー電話接続、セルラーデジタルパケットデータ（Cellular Digital Packet Data、ＣＤＰＤ）接続、デジタル衛星データ接続などを含む無線技術を使用して、そのような接続を提供してもよい。
【００４６】
多くの他のデバイス又はサブシステム（図示せず）は、同様の様式で接続されてもよい（例えば、ドキュメントスキャナ、デジタルカメラなど）。逆に、本開示を実践するために、図２に示す全てのデバイスが存在する必要はない。デバイス及びサブシステムは、図２に示すものと異なる方法で相互接続されてもよい。本開示を実装するためのコードは、システムメモリ２１７、固定ディスク２４４、光ディスク２４２、又はフロッピーディスク２３８のうちの１つ以上などのコンピュータ可読記憶メディア内に記憶されてもよい。本開示を実装するためのコードは、１つ以上のインタフェースを介して受信されてもよく、メモリ内に記憶されてもよい。コンピュータシステム２１０上で提供されるオペレーティングシステムは、ＭＳ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、ＯＳ  Ｘ（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、又は別の公知のオペレーティングシステムであってもよい。
【００４７】
電力マネージャ２５０は、バッテリ２５２の電力レベルを監視してもよい。電力マネージャ２５０は、電力レベル、コンピュータシステム２００のシャットダウンまでに残っている時間ウィンドウ、電力消費率、コンピュータシステムが主電源（例えば、ＡＣ電力）又はバッテリ電力のいずれを使用しているかに関する指示、及び他の電力関連情報を判定することを可能にするための１つ以上のＡＰＩ（Application Programming Interface、アプリケーションプログラミングインタフェース）を提供してもよい。いくつかの実施形態によれば、電力マネージャ２５０のＡＰＩは、リモートアクセス可能（例えば、ネットワーク接続を介してリモートバックアップ管理モジュールにアクセス可能）であってもよい。いくつかの実施形態によれば、バッテリ２５２は、コンピュータシステム２００に対してローカル又はリモートに配置された無停電電源装置（Uninterruptable Power Supply、ＵＰＳ）であってもよい。そのような実施形態では、電力マネージャ２５０は、ＵＰＳの電力レベルに関する情報を提供してもよい。
【００４８】
図３を参照すると、本開示の一実施形態に係る重複排除実行モジュール３１０が示されている。図示されているように、重複排除実行モジュール３１０は、バックアップ参照追跡モジュール３１２、使用率追跡モジュール３１４、コンテナ最適化モジュール３１６、及びエラー記録及び報告モジュール３１８を含む１つ以上の構成要素を含んでもよい。
【００４９】
以下の説明では、１つ以上のモジュールを含み得るバックアップシステムの性能を改善するためのシステム及び方法のネットワーク要素、コンピュータ、及び／又は構成要素について説明する。本明細書において使用されているように、用語「モジュール」は、コンピューティングソフトウェア、ファームウェア、ハードウェア、及び／又はこれらの様々な組み合わせを指すものとして理解され得る。しかしながら、モジュールは、ハードウェア、ファームウェア上に実装されず、プロセッサ可読記録可能記憶媒体上にも記録されないソフトウェアとして解釈すべきではない（即ち、モジュールはソフトウェアそのものではない）。モジュールは例示的なものであることに留意されたい。様々な適用例をサポートするために、モジュールが組み合わされても、統合されても、かつ／又は複製されてもよい。また、特定のモジュールにおいて実行されるものとして本明細書で説明される機能は、特定のモジュールにおいて実行される機能の代わりに、又はそれに加えて、１つ以上の他のモジュールにおいて、及び／又は１つ以上の他のデバイスによって実行されてもよい。更に、モジュールは、複数のデバイス、及び／又は互いに対してローカル若しくはリモートである他の構成要素に実装されてもよい。更に、モジュールは、１つのデバイスから移動されて別のデバイスに追加されてもよく、かつ／又は両方のデバイス内に含まれてもよい。
【００５０】
バックアップ参照追跡モジュール３１２は、バックアップクライアント上に存在してもよい。いくつかの実施形態では、バックアップ参照追跡モジュール３１２は、サーバ上に存在してもよい。バックアップ参照追跡モジュール３１２は、データのセグメント又は部分が、セグメントと共に書き込まれる１つ以上の識別子（例えば、特定のバックアップに対応し得る世代番号）ごとにコンテナに書き込まれることを判定してもよい。バックアップイメージは、新しいデータ（例えば、世代１を有するセグメント）、及び場合によっては、クライアントによって送信される必要がない、前のバックアップ内のデータセグメント（例えば、世代０を有するセグメント）への参照から成ってもよい。バックアップ参照追跡モジュール３１２は、セグメントに関連付けられた世代番号を監視してもよく、バックアップ内の各世代に関連付けられたデータの量を判定してもよい。
【００５１】
データセグメントは、長さ、世代番号及びオフセットから成るメタデータを含んでもよい。いくつかの実施形態では、バックアップ参照追跡モジュール３１２は、各世代に関連付けられた長さの合計を計算してもよく、世代への参照をカウントしてもよく、又はこれらの両方を実行してもよい。
【００５２】
使用率追跡モジュール３１４は、バックアップ参照追跡モジュール３１２から参照データを受信してもよい。使用率追跡モジュール３１４は、書き込まれるデータの量がわずかしかないデータユニット（例えば、コンテナ）を（例えば、コンテナのサイズを認識することによって、又は特定の世代に書き込まれるセグメントを他の世代に対してカウントすることによって）特定することができてもよい。比較的小さい割合のデータのみが書き込まれるデータユニットを特定することによって、使用率追跡モジュール３１４は、そのようなデータユニットの使用率が低く、データの復元の性能を低下させ得ると推測してもよい。
【００５３】
コンテナ最適化モジュール３１６は、使用率追跡モジュール３１４から使用率情報を受信してもよい。コンテナ最適化モジュール３１６は、使用率を１つ以上の指定されたパラメータに対して比較してもよい。例えば、指定されたパラメータは、記憶ユニットの許容可能な使用率の範囲、記憶ユニットの許容不可能な使用率の範囲、及び／又は使用率の閾値を含んでもよい。コンテナ最適化モジュール３１６は、記憶ユニット又はコンテナの使用率が低いと判定した場合に１つ以上の動作を実行してもよい。応答動作は、計算された使用率の情報をユーザに提供することと、バックアップ動作をユーザに推奨することと、後続のバックアップにおいて送信する１つ以上の参照セグメントを特定することと、のうちの１つを含んでもよい。応答動作は、記憶ユニットの計算された使用率が指定された閾値を下回るという判定に基づき、後続のバックアップにおいて、記憶ユニットの変更されていないデータの１つ以上のセグメントを送信することも含んでもよい。記憶ユニット内の変更されていないデータの１つ以上のセグメントは、バックアップに対するデータの断片化を低減するために、第２の記憶ユニット内のデータのセグメントと組み合わされ、新しい記憶ユニット内に記憶されてもよい。
【００５４】
エラー記録及び報告モジュール３２０は、バックアップシステムの性能を改善することに関連付けられたログ、レポート、又は他の情報を生成してもよい。
【００５５】
図４を参照すると、本開示の一実施形態に係るバックアップシステムの性能を改善するための方法４００が示されている。ブロック４０２では、方法４００が開始されてもよい。
【００５６】
ブロック４０４では、バックアップが実行されてもよい。ブロック４０６では、前のバックアップへの参照が１つ以上のコンテナに対して追跡されてもよい。例えば、データのセグメント又は部分が、セグメントと共に書き込まれる１つ以上の識別子（例えば、特定のバックアップに対応し得る世代番号）によって特定されてもよい。バックアップイメージは、新しいデータ（例えば、世代１を有するセグメント）、及び場合によっては、クライアントによって送信される必要がない、前のバックアップ内のデータセグメント（例えば、世代０を有するセグメント）への参照から成ってもよい。セグメントに関連付けられた世代番号又は他の識別子が監視されてもよく、バックアップ内の各世代に関連付けられたデータの量が判定されてもよい。
【００５７】
ブロック４０８では、１つ以上のコンテナの使用率が判定されてもよい。いくつかの実施形態では、使用率はバックアップクライアントにおいて計算又は推定されてもよい。使用率は、コンテナのサイズを認識することによって、及びコンテナに書き込まれたデータの量をコンテナのサイズと比較することによって判定されてもよい。いくつかの実施形態では、使用率は、バックアップの特定の世代のセグメントを、他の世代に書き込まれたセグメントに対してカウントすることによって判定されてもよい。コンテナの使用率を計算又は推定する他の方法（例えば、バックアップサーバから使用率情報を受信すること）が実装されてもよい。
【００５８】
ブロック４１０では、使用率が指定された閾値を下回るかどうかが判定されてもよい。使用率が指定された閾値を下回る場合、方法４００はブロック４１２において続行されてもよい。使用率が指定された閾値と等しいか又はそれを上回る場合、方法４００はブロック４１６において終了してもよい。使用率の他の比較（例えば、使用率を指定された範囲に対して比較すること）が実装されてもよい。
【００５９】
ブロック４１２では、１つ以上の使用率パラメータとの比較に基づき、１つ以上の応答動作がコンテナに対して実行されてもよい。例えば、後続のバックアップにおいて再送信するデータの部分が特定されてもよい（即ち、データの部分は前のバックアップイメージ内に存在してもよいが、重複排除によって発生する断片化を低減するために、再度クライアントからバックアップサーバに送信されてもよい）。実行される応答動作は、ユーザによって指定されたパラメータ、入力要求に応じたユーザ入力、コンテナの使用率のレベル、参照されるデータの量、及び他の要因によって異なってもよい。
【００６０】
ブロック４１４では、後続のバックアップ中、再送信されたデータ（即ち、サーバ上で利用可能であるがクライアントから送信されたデータ）及び新しいデータを使用して、新しいコンテナが作成されてもよい。新しいコンテナは、データの断片化を低減し、復元に必要なＩ／Ｏを低減し、復元の性能を改善し得る、データの優れた局所性をコンテナに提供してもよい。
【００６１】
ブロック４１６では、方法４００が終了してもよい。
【００６２】
使用率パラメータは、コンテナに対して重複したデータを送信することをトリガする使用率のレベルをユーザが判定し得るように構成可能であってもよい。
【００６３】
図５は、本開示の一実施形態に係るバックアップシステムにおける復元速度の比較を示す図である。例えば、一実施形態のテストでは、バックアップ速度の損失が最小である３００ＭＢ／秒の復元速度が、元の９０ＭＢ／秒の復元速度と比較して図示される。復元速度は３倍以上改善されている。図５は、１回目のバックアップから２００回目のバックアップまでの復元速度の記録を、一実施形態と、改善されていないか又は従来の実装との間で比較する。
【００６４】
図６は、本開示の一実施形態に係るバックアップシステムにおけるバックアップ速度の比較を示す図である。図６は、改善されていないか又は従来の実装と比較した、一実施形態のバックアップ速度を示す。バックアップ速度は２００回のバックアップにわたって比較される。
【００６５】
図７から図９は、一実施形態に係るコンテナの使用率を例示的に示す。一実施形態では、示されたバックアップイメージが、一定の範囲、例えば２５６ＭＢに分割され、その範囲の使用率がバックアップの終了時に計算される。使用率が閾値を下回る（例えば、５０％を下回る、即ち、データの半分未満が現在のバックアップによって使用されている）場合、サーバ内に記憶するための一連のデータは完全に破棄されてもよく（即ち、参照が使用されなくてもよい）、代わりにデータがクライアントから送信されてもよい。この実施形態では、例示を目的としたデータ範囲（即ち、コンテナのサイズ）は２０ＭＢであってもよい。データがクライアントから再送信される使用率の閾値は、５０％であってもよい。
【００６６】
図７は、本開示の一実施形態に係る第１のバックアップ及び第２のバックアップにおけるコンテナの使用率を示す図である。行７０２のコンテナは、５個の２０ＭＢのコンテナを使用する、１００ＭＢの新しいデータの第１のバックアップを表す。参照履歴は、［オフセット，長さ，世代番号］によって、［０，１００，０］のように表されてもよい。したがって、このデータは世代０に対してオフセット０で始まり、１００ＭＢを含み、（第１のバックアップに対する）世代番号０であってもよい。セグメントの配列及びそれらの対応するコンテナは、以下のように表されてもよい。
【００６７】
【表１】
0006521462.tif 000002
【００６８】
第２のバックアップは、行７０４によって表されてもよい。図示されるように、第２のバックアップは２０ＭＢのデータを含んでもよい（即ち、２０ＭＢのデータのみが第１のバックアップから変更された）。第２のバックアップは、前のバックアップ（世代０）を参照するオフセット０で始まる３５ＭＢのデータ、世代１に対するオフセット０で始まる２０ＭＢのデータ、及び世代０に対するオフセット５５で始まる４５ＭＢのデータを含んでもよい。第２のバックアップは世代０のデータを送信せず、世代０である前のバックアップ内の対応するセグメントを指す参照がサーバにおいて作成される。第２のバックアップの参照履歴は、［オフセット，長さ，世代番号］によって、［０，３５，０］［０，２０，１］［５５，４５，０］のように表されてもよい。セグメントの配列及びそれらの対応するコンテナは、以下のように表されてもよい。
【００６９】
【表２】
0006521462.tif 000003
【００７０】
行７０４に示されるように、第２のバックアップはコンテナ１のデータの７５％及びコンテナ２のデータの２５％を利用してもよい。新しいコンテナ５は、世代１を使用して作成されてもよく、［オフセット，長さ，世代番号］によって［０，２０，１］のように表される参照履歴を有してもよい。新しいコンテナ５は、コンテナ１から変更された５ＭＢのデータ及びコンテナ２から変更された１５ＭＢのデータを含んでもよい。
【００７１】
図８は、本開示の一実施形態に係る第２のバックアップ及び第３のバックアップにおけるコンテナの使用率を示す図である。行７０４は図７から変更されていない。行８０２は第３のバックアップを表してもよい。第３のバックアップでは、１５ＭＢのデータが変更されている。第２のバックアップにおけるコンテナ２の使用率は、指定された使用率の閾値（この実施例では、５０％）を下回ったため、このコンテナのデータは、サーバ上で参照されずにクライアントから送信されてもよい。コンテナ２に対してデータをクライアントから送信することによって、従来はデータの既存のコピーへのポインタ又は参照を使用してサーバ上で重複排除及び参照されていたであろう５ＭＢの追加データが送信される。第３のバックアップの参照履歴は、［オフセット，長さ，世代番号］によって、［０，３５，０］［０，５，１］［０，２０，２］［６０，４０，０］のように表されてもよい。したがって、前のバックアップ（世代１）におけるコンテナ２内にあった５ＭＢのデータは、クライアントから再送信されて新しいコンテナ６内に記憶されてもよい。新しいコンテナ６は、前のバックアップのコンテナ２に対して変更されたデータを表していた、コンテナ５内の１５ＭＢのデータを含んでもよい。これでバックアップ３におけるコンテナ２の使用率は０％になり、復元のために必要でなくなる。コンテナ２内のデータの最新バージョンはコンテナ６に移行したため、データの局所性及び復元の性能が改善され得る。これはバックアップごとのコンテナの論理的な例示であるため、コンテナ内のデータは決して削除されず、したがってコンテナ２は依然として履歴による回復及び復元目的で存在するが、このバックアップセットの一部ではなくなることに留意されたい。
【００７２】
セグメントの配列及びそれらの対応するコンテナは、以下のように表されてもよい。
【００７３】
【表３】
0006521462.tif 000004
【００７４】
これでコンテナ５の使用率は２５％のみになり、クライアントバックアップモジュールは、前に送信されたデータに基づき、この使用率を計算してもよい。
【００７５】
図９は、本開示の一実施形態に係る第３のバックアップ及び第４のバックアップにおけるコンテナの使用率を示す図である。行８０２は図８から変更されていない。行９０２は第４のバックアップを表してもよい。第４のバックアップは、１５ＭＢの変更されたデータを含んでもよい。最後のバックアップにおけるコンテナ５の使用率は、指定された閾値（例えば、５０％）を下回るものとして検出されたため、（コンテナ１に対する変更を記憶していた）５ＭＢのコンテナ５が、クライアントから再送信されてコンテナ７内に記憶されてもよい。これは、コンテナ１内にあった７５％のデータと組み合わせてコンテナ７内に記憶されてもよい。したがって、これでバックアップ７は復元のために５個のコンテナのみを必要とするようになり得、データの局所性が更に改善され得る。第４のバックアップの参照履歴は、［オフセット，長さ，世代番号］によって、［０，２０，０］［０，２０，３］［０，２０，２］［６０，４０，０］のように表されてもよい。セグメントの配列及びそれらの対応するコンテナは、以下のように表されてもよい。
【００７６】
【表４】
0006521462.tif 000005
【００７７】
上述のように本開示に係るバックアップシステムの性能を改善することは、典型的には、ある程度の入力データの処理及び出力データの生成を含むことに留意されたい。この入力データの処理及び出力データの生成は、ハードウェア又はソフトウェア内に実装されてもよい。例えば、特定の電子的構成要素は、重複排除性能改善モジュール内で、又は上述のように本開示に係るバックアップシステムの性能を改善することに関連付けられた機能を実装するための類似回路若しくは関連回路内で利用されてもよい。代替として、命令にしたがって動作する１つ以上のプロセッサが、上述のように本開示に係るバックアップシステムの性能を改善することに関連付けられた機能を実装してもよい。そのような場合、そのような命令が、１つ以上のプロセッサ可読記憶メディア（例えば、磁気ディスク又は他の記憶媒体）に記憶されるか、又は１つ以上の搬送波内で具現化された１つ以上の信号を介して１つ以上のプロセッサに送信され得ることは、本開示の範囲内である。
【００７８】
本開示は、本明細書で説明される特定の実施形態によって、その範囲が限定されるものではない。実際には、本開示の他の様々な実施形態及び変更態様が、本明細書で説明されるものに加えて、上述の説明及び添付の図面から当業者には明らかになるであろう。したがって、そのような他の実施形態及び変更態様は、本開示の範囲内に含まれることが意図されている。更に、本開示は本明細書で、特定の目的のための特定の環境における特定の実装との関連で説明されてきたが、当業者には、本開示の有用性がそのような実装に限定されるものではなく、本開示が任意の数の目的のための任意の数の環境内で有利に実装され得ることが認識されよう。したがって、以下に記載される特許請求の範囲は、本明細書で説明されるような本開示の全範囲及び精神に鑑みて解釈されるべきである。
【図１】
0006521462.tif 000006
【図２】
0006521462.tif 000007
【図３】
0006521462.tif 000008
【図４】
0006521462.tif 000009
【図５】
0006521462.tif 000010
【図６】
0006521462.tif 000011
【図７】
0006521462.tif 000012
【図８】
0006521462.tif 000013
【図９】
0006521462.tif 000014