(57)【特許請求の範囲】
【請求項１】
重複排除を使用してバックアップソースから中央リポジトリにデータをバックアップするための、コンピュータによって実施される方法であって、前記データはソースデータセグメントを含む、方法であり、
前記バックアップソース、バックアップタイプ、およびバックアップポリシを識別するパラメータを有するバックアップ仕様を受け取るステップと、
前記バックアップ仕様の前記パラメータに応答して、前記中央リポジトリにフィンガープリントキャッシュを要求するステップであって、前記中央リポジトリは、前記バックアップ仕様の前記パラメータに応答してデータベースをクエリして、前記バックアップ仕様に関連しかつ前記フィンガープリントキャッシュを形成する、１組のフィンガープリントを生成することにより、前記フィンガープリントキャッシュを生成するように構成される、要求するステップと、
前記要求するステップに応答して、前記中央リポジトリの中に記憶されたデータセグメントのフィンガープリントを含む前記フィンガープリントキャッシュを受け取るステップと、
前記ソースデータセグメントのフィンガープリントを含む、ソースデータフィンガープリントを生成するステップと、
前記ソースデータセグメントのフィンガープリントを含む、前記生成したソースデータフィンガープリントを記憶するステップと、
前記ソースデータフィンガープリントを、前記フィンガープリントキャッシュの中の前記フィンガープリントと比較するステップと、
前記フィンガープリントキャッシュの中のどのフィンガープリントとも一致しない前記比較したソースデータフィンガープリントからソースデータフィンガープリントを識別するステップと、
前記識別したソースデータフィンガープリントを使って前記中央リポジトリをクエリするステップであって、前記識別したソースデータフィンガープリントに対応するデータセグメントが前記中央リポジトリの中に記憶されているかどうかを判定する、クエリするステップと、
前記識別したソースデータフィンガープリントに対応する前記データセグメントが前記中央リポジトリの中に記憶されていないことに応答して、前記対応するソースデータセグメントを、記憶させるために前記中央リポジトリに送るステップと
を含む、コンピュータによって実施される方法。
【請求項２】
データセグメントのフィンガープリントが、前記データセグメントのハッシュ値を含む、請求項１に記載のコンピュータによって実施される方法。
【請求項３】
一連のフィンガープリントキャッシュが受け取られ、前記一連のフィンガープリントキャッシュのそれぞれが、前記バックアップ仕様に関連するデータセグメントの前記フィンガープリントの一部を含み、前記ソースデータフィンガープリントの異なる部分が、前記一連のフィンガープリントキャッシュのそれぞれと比較される、請求項１に記載のコンピュータによって実施される方法。
【請求項４】
前記中央リポジトリの前記データベースを更新するために、前記ソースデータフィンガープリントの中では見つからない、前記フィンガープリントキャッシュの中のフィンガープリントを前記中央リポジトリに送るステップ
をさらに含む、請求項１に記載のコンピュータによって実施される方法。
【請求項５】
重複排除を使用してバックアップソースから中央リポジトリにデータをバックアップするためのコンピュータシステムであって、前記データはソースデータセグメントを含む、コンピュータシステムであり、
前記バックアップソース、バックアップタイプ、およびバックアップポリシを識別するパラメータを有するバックアップ仕様を受け取るステップ、
前記バックアップ仕様の前記パラメータに応答して、前記中央リポジトリにフィンガープリントキャッシュを要求するステップであって、前記中央リポジトリは、前記バックアップ仕様の前記パラメータに応答してデータベースをクエリして、前記バックアップ仕様に関連しかつ前記フィンガープリントキャッシュを形成する、１組のフィンガープリントを生成することにより、前記フィンガープリントキャッシュを生成するように構成される、要求するステップ、
前記要求するステップに応答して、前記中央リポジトリの中に記憶されたデータセグメントのフィンガープリントを含む前記フィンガープリントキャッシュを受け取るステップ、
前記ソースデータセグメントのフィンガープリントを含む、ソースデータフィンガープリントを生成するステップ、
前記ソースデータセグメントのフィンガープリントを含む、前記生成したソースデータフィンガープリントを記憶するステップ、
前記ソースデータフィンガープリントを、前記フィンガープリントキャッシュの中の前記フィンガープリントと比較するステップ、
前記フィンガープリントキャッシュの中のどのフィンガープリントとも一致しない前記比較したソースデータフィンガープリントからソースデータフィンガープリントを識別するステップ、
前記識別したソースデータフィンガープリントを使って前記中央リポジトリをクエリするステップであって、前記識別したソースデータフィンガープリントに対応するデータセグメントが前記中央リポジトリの中に記憶されているかどうかを判定する、クエリするステップ、
前記識別したソースデータフィンガープリントに対応する前記データセグメントが前記中央リポジトリの中に記憶されていないことに応答して、前記対応するソースデータセグメントを、記憶させるために前記中央リポジトリに送るステップ
を実施するための実行可能コンピュータプログラムモジュールを記憶するコンピュータ可読記憶媒体と、
前記コンピュータプログラムモジュールを実行するためのプロセッサと
を備える、コンピュータシステム。
【請求項６】
データセグメントのフィンガープリントが、前記データセグメントのハッシュ値を含む、請求項５に記載のコンピュータシステム。
【請求項７】
一連のフィンガープリントキャッシュが受け取られ、前記一連のフィンガープリントキャッシュのそれぞれが、前記バックアップ仕様に関連するデータセグメントの前記フィンガープリントの一部を含み、前記ソースデータフィンガープリントの異なる部分が、前記一連のフィンガープリントキャッシュのそれぞれと比較される、請求項５に記載のコンピュータシステム。
【請求項８】
前記コンピュータプログラムモジュールが、
前記中央リポジトリのデータベースを更新するために、前記ソースデータフィンガープリントの中では見つからない、前記フィンガープリントキャッシュの中のフィンガープリントを前記中央リポジトリに送るステップ
をさらに実施するために構成されている、請求項５に記載のコンピュータシステム。
【請求項９】
重複排除を使用してバックアップソースから中央リポジトリにデータをバックアップするための実行可能コンピュータプログラム命令を有するコンピュータプログラムであって、前記データはソースデータセグメントを含む、コンピュータプログラムであり、前記コンピュータプログラム命令が、
前記バックアップソース、バックアップタイプ、およびバックアップポリシを識別するパラメータを有するバックアップ仕様を受け取るステップと、
前記バックアップ仕様の前記パラメータに応答して、前記中央リポジトリにフィンガープリントキャッシュを要求するステップであって、前記中央リポジトリは、前記バックアップ仕様の前記パラメータに応答してデータベースをクエリして、前記バックアップ仕様に関連しかつ前記フィンガープリントキャッシュを形成する、１組のフィンガープリントを生成することにより、前記フィンガープリントキャッシュを生成するように構成される、要求するステップと、
前記要求するステップに応答して、前記中央リポジトリの中に記憶されたデータセグメントのフィンガープリントを含む前記フィンガープリントキャッシュを受け取るステップと、
前記ソースデータセグメントのフィンガープリントを含む、ソースデータフィンガープリントを生成するステップと、
前記ソースデータセグメントのフィンガープリントを含む、前記生成したソースデータフィンガープリントを記憶するステップと、
前記ソースデータフィンガープリントを、前記フィンガープリントキャッシュの中の前記フィンガープリントと比較するステップと、
前記フィンガープリントキャッシュの中のどのフィンガープリントとも一致しない前記比較したソースデータフィンガープリントからソースデータフィンガープリントを識別するステップと、
前記識別したソースデータフィンガープリントを使って前記中央リポジトリをクエリするステップであって、前記識別したソースデータフィンガープリントに対応するデータセグメントが前記中央リポジトリの中に記憶されているかどうかを判定する、クエリするステップと、
前記識別したソースデータフィンガープリントに対応する前記データセグメントが前記中央リポジトリの中に記憶されていないことに応答して、前記対応するソースデータセグメントを、記憶させるために前記中央リポジトリに送るステップと
をコンピュータに実施させるために構成されている、コンピュータプログラム。
【請求項１０】
一連のフィンガープリントキャッシュが受け取られ、前記一連のフィンガープリントキャッシュのそれぞれが、前記バックアップ仕様に関連するデータセグメントの前記フィンガープリントの一部を含み、前記ソースデータフィンガープリントの異なる部分が、前記一連のフィンガープリントキャッシュのそれぞれと比較される、請求項９に記載のコンピュータプログラム。
【請求項１１】
前記コンピュータプログラム命令が、
前記中央リポジトリのデータベースを更新するために、前記ソースデータフィンガープリントの中では見つからない、前記フィンガープリントキャッシュの中のフィンガープリントを前記中央リポジトリに送るステップ
をコンピュータにさらに実施させるために構成されている、請求項９に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデジタルデータをバックアップすることに関する。
【背景技術】
【０００２】
企業ローカルエリアネットワーク（ＬＡＮ）など、数台のクライアントコンピュータを含む環境では、集中型バックアップシステムがしばしば用いられる。集中型バックアップシステムは、クライアントコンピュータの記憶装置上のデータを自動的にバックアップするようにシステム管理者によって構成される。集中型バックアップシステムは、データセグメント（例えばファイルやファイルの一部）をクライアントコンピュータの記憶装置から中央リポジトリにコピーすることにより、クライアントコンピュータそれぞれのバックアップを定期的に行うバックアップサーバを含むことができる。この中央リポジトリは、十分に大きい記憶容量を有し、多くの場合バックアップサーバ（およびクライアントコンピュータ）から離れて位置する。その結果、バックアップしようとするデータセグメントを、ことによると帯域幅が限られたリンクを介し、かなりの距離にわたって伝送しなければならないことが多々ある。
【０００３】
中央リポジトリに伝送し、その中央リポジトリの中に記憶するデータの量を減らす１つの技法は「重複排除」と呼ばれる。重複排除を利用するバックアップシステムは、バックアップ中にクライアントコンピュータ上で見つけられるデータセグメントが、中央リポジトリの中に既に記憶されている可能性があるという事実をうまく利用する。そのデータセグメントは中央リポジトリの中に既にある場合があり、その理由は、そのデータセグメントを以前のバックアップ中にクライアントコンピュータからバックアップしており、そのクライアントコンピュータ上のデータセグメントがそれ以来変更されていないからである。さらに、そのデータセグメントは中央リポジトリの中に既にある場合があり、その理由は、同じデータセグメントを有する別のクライアントコンピュータからそのデータセグメントを以前バックアップしたからである。
【０００４】
重複排除を使用してクライアントコンピュータからデータセグメントをバックアップするとき、そのデータセグメントを識別する情報をバックアップサーバが生成する。バックアップサーバは、この識別情報を中央リポジトリに伝送し、中央リポジトリは、識別されたデータセグメントを自らが既に含んでいるかどうかを知らせる応答を送る。次いで、そのデータセグメントがリポジトリの中にまだ含まれていないことをその応答が示した場合にのみ、バックアップサーバが、実際のデータセグメントを中央リポジトリに伝送する。その結果、中央リポジトリに伝送されるデータセグメントの数が減る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、それぞれのデータセグメントごとにバックアップサーバが識別情報を中央リポジトリに伝送するので、バックアップに関与するコンピューティングリソースおよびネットワークリソースは依然としてかなり使用される。さらに、それぞれのデータセグメントごとに、中央リポジトリは応答を生成するためにコンピューティングリソースを使用し、中央リポジトリはその応答をバックアップサーバに伝送する。したがって、重複排除を使用してバックアップを行うために必要な、コンピューティングリソースおよびネットワークリソースを減らすための方法が当技術分野で求められている。
【課題を解決するための手段】
【０００６】
上記の要求は、重複排除を使用して、ソースデータセグメントを含むデータをバックアップソースから中央リポジトリにバックアップするためのシステム、方法、およびコンピュータプログラム製品によって満たされる。一実施形態では、中央リポジトリの中に記憶されたデータセグメントのフィンガープリントを含むフィンガープリントキャッシュを受け取り、そのデータセグメントはバックアップソースから以前バックアップしたものである。ソースデータセグメントのフィンガープリント（例えばハッシュ値）を含む、ソースデータフィンガープリントを生成する。そのソースデータフィンガープリントを、フィンガープリントキャッシュの中のフィンガープリントと比較する。フィンガープリントキャッシュの中にないフィンガープリントに対応するソースデータセグメントは、中央リポジトリの中に現在記憶されていない可能性がある。中央リポジトリをさらにクエリした後、比較することに応答して、ソースデータセグメントのうちの１つまたは複数を、記憶させるために中央リポジトリに送る。
【０００７】
諸図面は、説明のみの目的で一実施形態を示す。本明細書に記載の原理から逸脱することなく、本明細書に示す構造および方法の代替的実施形態を利用できることを、当業者なら以下の説明から容易に理解するであろう。
【図面の簡単な説明】
【０００８】
【図１】一実施形態における、重複排除を使用して効率的にクライアントをバックアップするためのバックアップサーバおよび中央リポジトリを含む、ネットワーク化された環境を示す高レベル図である。
【図２】一実施形態における、クライアント、バックアップサーバ、または中央リポジトリの一実施形態としての機能を果たすことができる、コンピュータを示すブロック図である。
【図３】一実施形態における、クライアント記憶装置をバックアップするためのバックアップサーバの論理ビューを示す図である。
【図４】一実施形態における、クライアント記憶装置からバックアップしたデータセグメントを記憶するための、中央リポジトリの論理ビューを示す図である。
【図５】一実施形態における、重複排除を使用してクライアント記憶装置から中央リポジトリにデータをバックアップするための方法を示す流れ図である。
【図６】一実施形態における、重複排除を使用して中央リポジトリにおいてデータをバックアップするための方法を示す流れ図である。
【発明を実施するための形態】
【０００９】
図１は、一実施形態における、重複排除を使用して効率的にクライアント１０２をバックアップするためのバックアップサーバ１０８および中央リポジトリ１１４を含む、ネットワーク化された環境を示す高レベル図である。バックアップサーバ１０８とクライアント１０２とが、ローカルエリアネットワーク１０６によって接続される。クライアント１０２は２台しか図示していないが、ネットワーク１０６上には３台以上あってもよい。バックアップサーバ１０８は、インターネットなどの広域ネットワーク１１０を介して中央リポジトリ１１４にも接続される。ローカルエリアネットワーク１０６は、広域ネットワーク１１０よりも、高帯域幅かつ費用のかからない通信を可能にする。一実施形態では、バックアップサーバ１０８とクライアント１０２とが物理的にごく近接して位置する一方で、中央リポジトリ１１４はほかの場所に位置する。一実施形態では、複数のバックアップサーバ１０８が中央リポジトリ１１４と通信する。
【００１０】
クライアント１０２は、ローカルエリアネットワーク１０６上のユーザワークステーション、サーバ（例えばウェブサーバやアプリケーションサーバ）、ルータなどの、様々なコンピューティングデバイスである。これらのクライアント１０２は、ハードドライブなどのクライアント記憶装置１０４を有する。一実施形態（図示せず）では、一部のクライアント記憶装置１０４がネットワーク１０６に直接接続される。クライアント記憶装置１０４は、ファイルシステム内のファイルとして記憶することができるデータを含む。データ損失を防ぐために、クライアント記憶装置１０４から定期的にデータをバックアップすることが望ましい。オペレーティングシステムのファイルなど、特定の種類のファイルは時が経ってもまれにしか変わらず、環境内の複数のクライアント記憶装置１０４上に同一のコピーとして存在する。クライアント１０２またはクライアント記憶装置１０４は、バックアップソースとも呼ぶ。
【００１１】
バックアップサーバ１０８は、クライアント記憶装置１０４上のデータの様々な種類のバックアップを定期的に（例えば毎日）行う。特定のクライアント記憶装置１０４からバックアップしようとするデータは、ローカルエリアネットワーク１０６を介し、バックアップサーバ１０８により、バックアップストリームとも呼ばれるストリームとしてアクセスされ得る。このバックアップストリームは、バックアップサーバ１０８により複数のデータセグメントへと分割されてもよく、データセグメントは、例えばファイル、ファイルの一部、またはディスクセクタに対応する。バックアップサーバ１０８は、あるデータセグメントが中央リポジトリの中にまだ記憶されていない場合に、そのセグメントを記憶させるために中央リポジトリ１１４に送ることにより重複排除技法を利用する。バックアップサーバ１０８は、現在のバックアップストリームの中で遭遇する可能性がある中央リポジトリの中に現在記憶されているデータセグメントを識別する、フィンガープリントキャッシュを中央リポジトリ１１４から取得することによってこれを行う。バックアップサーバ１０８は、各データセグメントに関して中央リポジトリをクエリする必要なしに、このフィンガープリントキャッシュを使用して、現在のバックアップストリームの中のどのデータセグメントを中央リポジトリ１１４に送るべきか判断する。
【００１２】
中央リポジトリ１１４は、バックアップ操作中にバックアップサーバ１０８から受け取ったデータセグメントのコピーを記憶する。中央リポジトリ１１４は、もともとは何千ものクライアント記憶装置１０４から提供される何百万のデータセグメントを記憶することができる。中央リポジトリ１１４の中に記憶されるデータセグメントは、バックアップデータをクライアント記憶装置１０４に復元する必要がある場合にアクセスされる。バックアップ操作は重複排除を利用するので、中央リポジトリ１１４の中の単一のデータセグメントが、複数のクライアント記憶装置１０４上に同時に存在し得る。重複排除を使用するバックアップ操作を支援するために、中央リポジトリ１１４は、リポジトリの中にどのデータセグメントが現在記憶されているのかについての情報をバックアップサーバ１０８に提供する。
【００１３】
図２は、一実施形態による、クライアント１０２、バックアップサーバ１０８、および／または中央リポジトリ１１４として機能するためのコンピュータ２００の高レベルブロック図である。図示するのは、チップセット２０４に結合される少なくとも１個のプロセッサ２０２である。チップセット２０４には、メモリ２０６、記憶装置２０８、キーボード２１０、グラフィックスアダプタ２１２、ポインティングデバイス２１４、およびネットワークアダプタ２１６も結合される。グラフィックスアダプタ２１２には、ディスプレイ２１８が結合される。一実施形態では、チップセット２０４の機能が、メモリコントローラハブ２２０および入出力コントローラハブ２２２によって与えられる。別の実施形態では、メモリ２０６が、チップセット２０４の代わりにプロセッサ２０２に直接結合される。
【００１４】
記憶装置２０８は、ハードドライブ、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、固体メモリデバイスなど、任意のコンピュータ可読記憶媒体である。一実施形態では、クライアント１０２の記憶装置２０８は、クライアント記憶装置１０４である。メモリ２０６は、プロセッサ２０２が使用する命令およびデータを保持する。ポインティングデバイス２１４は、マウス、トラックボール、または他の種類のポインティングデバイスとすることができ、コンピュータシステム２００にデータを入力するためにキーボード２１０と一緒に使用する。グラフィックスアダプタ２１２は、ディスプレイ２１８上に画像および他の情報を表示させる。ネットワークアダプタ２１６は、コンピュータシステム２００を、ローカルエリアネットワークまたは広域ネットワークに結合する。
【００１５】
当技術分野で知られているように、コンピュータ２００は、図２に示すコンポーネントとは異なるコンポーネントおよび／または他のコンポーネントを有することができる。さらに、コンピュータ２００は、図示の特定のコンポーネントを欠いてもよい。一実施形態では、バックアップサーバ１０８として機能するコンピュータ２００が、キーボード２１０、ポインティングデバイス２１４、グラフィックスアダプタ２１２、および／またはディスプレイ２１８を欠く。さらに、記憶装置２０８は、コンピュータ２００の近くにあることができ、かつ／または（ストレージエリアネットワーク（ＳＡＮ）の中に組み入れられるなど）コンピュータ２００から離れていることができる。
【００１６】
当技術分野で知られているように、コンピュータ２００は、本明細書に記載の機能を提供するために、コンピュータプログラムモジュールを実行するように適合させられる。本明細書で使用するとき、用語「モジュール」は、指定の機能を提供するために利用されるコンピュータプログラムロジックを指す。したがって、モジュールは、ハードウェア、ファームウェア、および／またはソフトウェアによって実装することができる。一実施形態では、プログラムモジュールを記憶装置２０８上に記憶し、メモリ２０６にロードし、プロセッサ２０２によって実行する。
【００１７】
本明細書に記載するエンティティの諸実施形態は、本明細書に記載するモジュール以外のモジュールおよび／または本明細書に記載するモジュールとは異なるモジュールを含むことができる。さらに、他の実施形態では、これらのモジュールによる機能を他のモジュールまたは異なるモジュールによって実行することができる。さらに本明細書では、明瞭にするためにおよび便宜上、用語「モジュール」を時として省略する。
【００１８】
図３は、一実施形態における、クライアント記憶装置１０４をバックアップするためのバックアップサーバ１０８の論理ビューを示す。バックアップサーバ１０８は、バックアップ仕様３１０に基づいてバックアップを行う。バックアップ仕様３１０は、クライアント１０２のインターネットプロトコル（ＩＰ）アドレスやホスト名など、バックアップソースの識別情報（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）を含む。バックアップ仕様３１０は、バックアップが完全バックアップか増分バックアップかを示す、バックアップタイプも含むことができる。バックアップ仕様３１０は、バックアップに関するさらなる詳細を指定するバックアップポリシも含むことができる。バックアップポリシは、バックアップしようとするファイルの種類（例えばテキストファイルや実行不能ファイル）を示すことができる。バックアップポリシは、ファイルシステム内の特定の位置（例えば特定のディレクトリ内）にあるファイルをバックアップすべきであることを示すことができる。バックアップポリシは、バックアップが、（例えばデータセグメントがファイルではなく、ディスクセクタに対応する）未処理形式バックアップ（ｒａｗ  ｆｏｒｍａｔ  ｂａｃｋｕｐ）であるべきことを指定することができる。
【００１９】
バックアップ仕様３１０は、システム管理者によってバックアップサーバ１０８に入力することができ、そのバックアップサーバ上に記憶することができる。バックアップサーバ１０８は、複数のクライアント１０２をバックアップし、かつ／または特定のクライアントに対して様々な種類のバックアップを行うために、複数のバックアップ仕様３１０に従って複数のバックアップを行うように構成することができる。バックアップサーバ１０８は、頻度（例えば毎日）が指定された各バックアップ仕様３１０に従ってバックアップを行うように構成することもできる。バックアップ仕様３１０は、バックアップされるデータのソースを分類するので、ソース分類とも呼ばれる。
【００２０】
一実施形態では、バックアップモジュール３０４は、バックアップ仕様３１０に基づき、重複排除を使用してバックアップを行うように構成される。バックアップモジュール３０４は、クライアント記憶装置１０４からのバックアップストリームを作り出し、そのクライアント記憶装置（または関連するクライアント１０２）は、バックアップ仕様３１０の中で識別されるバックアップソースである。バックアップモジュール３０４は、そのバックアップストリームを複数のデータセグメントへと区分化する。バックアップストリームのコンテンツおよびバックアップストリームの区分化は、バックアップ仕様３１０の中のバックアップタイプおよびバックアップポリシに基づく。バックアップストリームは制約されず、任意の量のデータを含み、任意の数のセグメントを有することができる。
【００２１】
フィンガープリントモジュール３０２は、バックアップストリームのデータセグメントのフィンガープリントを含む、現在のフィンガープリントセット３１２を作成する。データセグメントのフィンガープリントは、そのデータセグメントを一意に識別するが、そのデータセグメント自体よりも著しく小さいデータ片である。一実施形態では、データセグメントのフィンガープリントは、そのデータセグメントのコンテンツのハッシュに基づく値である。フィンガープリントは、メッセージダイジェストアルゴリズム５（ＭＤ５）などのハッシュ関数をデータセグメントに適用することにより、データセグメントから生成することができる。
【００２２】
リポジトリ通信モジュール３０８は、中央リポジトリ１１４にフィンガープリントキャッシュを要求する。その要求は、バックアップソース、バックアップタイプ、およびバックアップポリシを含むことができる、現在のバックアップ仕様３１０を含む。中央リポジトリ１１４は、リポジトリ通信モジュール３０８によって受け取られるフィンガープリントキャッシュ３０６を提供することにより応答することができる。フィンガープリントキャッシュ３０６の中のフィンガープリントはすべて、中央リポジトリ１１４の中に現在記憶されているデータセグメントに対応する。
【００２３】
フィンガープリントキャッシュ３０６は、中央リポジトリ１１４上に記憶される（ことによると何百万の）フィンガープリントのサブセットである。中央リポジトリについての説明の中で以下にさらに論じるように、フィンガープリントキャッシュ３０６は、現在のバックアップ仕様３１０に基づいて中央リポジトリ１１４によって選択される。手短に言えば、フィンガープリントキャッシュ３０６は、現在のバックアップにおいて見られるのと同じまたは同様のバックアップ仕様３１０を使用した以前のバックアップにおいて遭遇したデータセグメントに対応するフィンガープリントを含むように選択される。その結果、受け取られるフィンガープリントキャッシュ３０６は、現在のバックアップにおけるデータセグメントに対応する可能性が高い。バックアップ仕様３１０が中央リポジトリ１１４に知られていない場合、中央リポジトリ１１４は空のフィンガープリントキャッシュ３０６で応答することができる。
【００２４】
セグメント処理モジュール３１４は、現在のフィンガープリントセット３１２の中のフィンガープリントと、フィンガープリントキャッシュ３０６との比較を行う。現在のフィンガープリントセット３１２のフィンガープリントが、フィンガープリントキャッシュ３０６の中にも登場する場合、そのフィンガープリントに対応するデータセグメントは中央リポジトリ１１４の中に既に記憶されており、中央リポジトリ１１４に送る必要がない。そのデータセグメントは、同じバックアップ仕様を使用した以前のバックアップから変更されていない可能性がある（例えば、クライアント記憶装置を最後にバックアップしてから変更されていない、クライアント記憶装置１０４上のファイル）。
【００２５】
現在のフィンガープリントセット３１２からのフィンガープリントが、フィンガープリントキャッシュ３０６の中に登場しない場合でも、そのフィンガープリントに対応するデータセグメントが中央リポジトリ１１４上に既に記憶されていることが依然として起こり得る。そのデータセグメントは、現在のバックアップ仕様３１０を使用して以前バックアップされなかったが、別のバックアップ仕様を使用して以前バックアップされている（例えば別のクライアント記憶装置からバックアップされている）可能性がある。
【００２６】
セグメント処理モジュール３１４は、フィンガープリントキャッシュ３０６の中に登場しない、現在のフィンガープリントセット３１２からのフィンガープリントを含む要求を、リポジトリ通信モジュール３０８に、中央リポジトリ１１４宛てに送信させる。一実施形態では、これらのフィンガープリントのすべてを含む単一の要求を中央リポジトリ１１４に送ってネットワーク帯域幅を減らす。中央リポジトリ１１４は、関連するバックアップ仕様に関係なく、これらのフィンガープリントに対応するデータセグメントを自らが含むかどうかを判定するために検索を行う。
【００２７】
中央リポジトリ１１４は、どのフィンガープリントがその中央リポジトリの中に現在記憶されているデータセグメントに対応するのかを示す、１つまたは複数の応答を送る。フィンガープリントが中央リポジトリの中に記憶されていることをその応答が示す場合、バックアップサーバ１０８はそのフィンガープリントをさらに処理する必要はない。しかし、フィンガープリントが中央リポジトリ１１４の中に記憶されていないことをその応答が示す場合、リポジトリ通信モジュール３０８が、そのフィンガープリントに対応するデータセグメントを、記憶させるために中央リポジトリに送る。
【００２８】
重複排除のためにフィンガープリントキャッシュ３０６を使用する結果として、通常、バックアップサーバ１０８から中央リポジトリ１１４に、個々のフィンガープリントに関する比較的少数の要求しか送られない。多くの場合、フィンガープリントキャッシュ３０６は、現在のフィンガープリントセット３１２の中のフィンガープリントの大部分を含む。それは、所与のバックアップ仕様３１０（例えば所与のクライアントおよびバックアップタイプ）について、特にバックアップを頻繁に行う場合、バックアップを構成するデータセグメントがバックアップごとに概してほとんど変わらないからである。上記に記載したバックアップサーバ１０８は、このバックアップ履歴をうまく利用してフィンガープリント要求の数を減らす。広域ネットワーク１１０の全域にわたるネットワーク帯域幅も減らすことができる。フィンガープリントキャッシュ３０６を使用することにより、個々のフィンガープリントに関する要求を中央リポジトリ１１４に送ること、およびその中央リポジトリから応答を受け取ることを減らすことができる。さらに、要求を生成し、要求に応答し、応答を処理するために使用される、バックアップサーバ１０８および中央リポジトリ１１４上の処理リソースを減らすことができる。
【００２９】
中央リポジトリ１１４から受け取るフィンガープリントキャッシュ３０６の中のフィンガープリントが、現在のフィンガープリントセット３１２の中にない場合、そのフィンガープリントは、現在のバックアップ仕様３１０にもはや関連しないデータセグメントに対応し得る。例えば、クライアント記憶装置１０４を最後にバックアップしてから、そのクライアント記憶装置からファイルが削除されている可能性がある。一実施形態では、セグメント処理モジュール３１４が、現在のフィンガープリントセット３１２の中にない、フィンガープリントキャッシュ３０６の中のフィンガープリントを識別する通知メッセージを、リポジトリ通信モジュール３０８に、中央リポジトリ１１４宛てに送信させる。このメッセージは、中央リポジトリ１１４が、自らのデータベースを更新し、もはや必要のない記憶済みデータセグメントを削除するために使用することができる。
【００３０】
フィンガープリントモジュール３０２は、フィンガープリントがフィンガープリントキャッシュ３０６の中のフィンガープリントと比較される前に、必ずしもバックアップストリーム内のすべてのデータセグメントのフィンガープリントを含む現在のフィンガープリントセット３１２を作成するわけではない。上述したように、バックアップストリームは制約されず、多くのデータセグメントを有することができる。クライアント１０２からデータセグメントを受け取るときに、フィンガープリントモジュール３０２がデータセグメントのフィンガープリントを作成する、ストリームベース処理手法を使用することができる。これらのフィンガープリントは、フィンガープリントキャッシュ３０６と突き合わせて比較するために、作成されるに従ってセグメント処理モジュール３１４に渡すことができる。必要に応じて、特定のフィンガープリントに関する要求を中央リポジトリ１１４に送ることができる。一実施形態では、データセグメントのストリームベース処理を開始する前に、中央リポジトリ１１４からフィンガープリントキャッシュ３０６を受け取る。
【００３１】
一実施形態では、バックアップ仕様３１０に対応する一連のフィンガープリントキャッシュ３０６が、リポジトリ通信モジュール３０８による、フィンガープリントキャッシュを求める要求に応答して中央リポジトリ１１４から送られる。これは、メモリリソースおよび処理リソースが限られていることがあるバックアップサーバ１０８に送られる、各フィンガープリントキャッシュ３０６のサイズを制限するために行うことができる。この実施形態では、第１のフィンガープリントキャッシュ３０６が、バックアップストリームの最初の部分（例えば最初の１０，０００個のデータセグメント）を対象として含むことができる。いったんセグメント処理モジュール３１４がバックアップストリームの最初の部分を処理すると、その一連の中の次のフィンガープリントキャッシュを求める要求を中央リポジトリ１１４に送ることができ、バックアップストリームの次の部分を処理することができ、その後も同様である。
【００３２】
一実施形態では、図３に示す特定のモジュールを、バックアップサーバ１０８の代わりにクライアント１０２上に配置することができる。例えば、フィンガープリントモジュール３０２を、各クライアント１０２上に配置することができる。この場合、フィンガープリントセット３１２はクライアント１０２上で作成され、さらに処理するためにバックアップサーバ１０８に送られる。この実施形態では、実際のデータセグメントではなくフィンガープリントを伝送するので、ローカルエリアネットワーク１０６上でより少ないデータを伝送することができる。しかし、ローカルエリアネットワーク１０６は典型的には、通信に費用がかからず、そのためネットワーク上でデータセグメントを伝送することが許容される高帯域幅ネットワークである。一実施形態では、バックアップサーバ１０８のコンポーネントのすべてがクライアント１０２上にある。この実施形態では、クライアント１０２が中央リポジトリ１１４と直接通信し、バックアップ操作のために別個のバックアップサーバ１０８は使用しない。
【００３３】
図４は、一実施形態における、クライアント記憶装置１０４からバックアップしたデータセグメントを記憶するための、中央リポジトリ１１４の論理ビューを示す。セグメント記憶域４０２は、バックアップしたデータセグメントを含み、何百万のデータセグメントを含むことができる。フィンガープリント記憶域４１０は、セグメント記憶域４０２内のセグメントのそれぞれに対応するフィンガープリントを含む。
【００３４】
一実施形態では、データベース４０４が、セグメント記憶域４０２の中のデータセグメントのインデックス、およびフィンガープリント記憶域４１０の中の対応するフィンガープリントのインデックスを含み、そのインデックスは、バックアップ仕様のパラメータに基づくクエリを可能にする。例えばクエリは、特定のバックアップタイプ（例えば完全）およびバックアップポリシ（例えば実行不能ファイル）とともに、特定のバックアップソース（例えばクライアントのホスト名）を含むことができる。データベース４０４は、バックアップ仕様３１０に関連するフィンガープリントおよび／またはデータセグメントを返す。データベース４０４は、フィンガープリント記憶域４１０の中に、クエリされた特定のフィンガープリントが含まれているかどうかを効率的に判定することもできる。データベース４０４は、各データセグメントを現在有しているクライアント記憶装置１０４の数を示す、各データセグメントおよび対応するフィンガープリントについての参照カウントを保持することもできる。参照カウントがゼロに達すると、データセグメントおよびフィンガープリントを、セグメント記憶域４０２およびフィンガープリント記憶域４１０からそれぞれ除去することができる。
【００３５】
バックアップサーバ通信モジュール４０８は、バックアップサーバ１０８との通信を処理する。通信の一種は、バックアップ仕様３１０に基づいてフィンガープリントキャッシュを求める、バックアップサーバ１０８から受け取る要求である。バックアップサーバ通信モジュール４０８は、この要求をフィンガープリントキャッシュ生成器４０６に渡す。
【００３６】
フィンガープリントキャッシュ生成器４０６は、バックアップ仕様３１０のパラメータを使ってデータベース４０４をクエリして、１組のフィンガープリントを生成する。フィンガープリントキャッシュ生成器４０６は、その１組のフィンガープリントをフィンガープリントキャッシュ３０６としてバックアップサーバ通信モジュール４０８に送り、バックアップサーバ通信モジュール４０８は、そのフィンガープリントキャッシュ３０６をバックアップサーバ１０８に送る。一実施形態では、フィンガープリントキャッシュ生成器４０６が、上記に説明したようにバックアップサーバに送られる、一連のサイズが制限されたフィンガープリントキャッシュ３０６を作成する。
【００３７】
新たなバックアップ仕様を使ったバックアップが行われている場合、バックアップ仕様３１０のパラメータを使ってデータベース４０４をクエリすることは、不一致をもたらす結果となり得る。この場合、フィンガープリントキャッシュ生成器４０６は、空のフィンガープリントキャッシュ３０６を生成することができる。一実施形態では、フィンガープリントキャッシュ生成器４０６は、空のフィンガープリントキャッシュ３０６を返す代わりに、バックアップに含まれる可能性があるフィンガープリントを含む、新たなフィンガープリントキャッシュを初期設定する。データベース４０４のクエリは、バックアップ仕様３１０のパラメータのすべてよりも少ないパラメータを使用して行うことができ、または異なるが同様のパラメータを使用して行うことができる。
【００３８】
バックアップサーバ通信モジュール４０８は、中央リポジトリ１１４の中に特定のフィンガープリントがあるかどうかを判定するための、バックアップサーバ１０８からの要求も処理する。バックアップサーバ通信モジュール４０８は、特定のフィンガープリントを使ってデータベース４０４をクエリし、その結果をバックアップサーバ１０８に送ることができる。また、バックアップサーバ通信モジュール４０８は、データベース４０４を更新するために、フィンガープリントを更新モジュール４１２に渡すことができる。中央リポジトリ１１４にデータセグメントを追加する必要があるとバックアップサーバ１０８が判定する場合、バックアップサーバ通信モジュール４０８は、バックアップサーバ１０８から実際のデータセグメントを受け取ることもできる。バックアップサーバ通信モジュール４０８は、これらのデータセグメントを更新モジュール４１２に渡す。また、バックアップサーバ通信モジュール４０８は、フィンガープリントキャッシュ３０６の中にはあったが、現在のフィンガープリントセット３１２の中にはなかったフィンガープリントのリストをバックアップサーバ１０８から受け取ることができる。バックアップサーバ通信モジュール４０８は、これらのフィンガープリントを更新モジュール４１２に渡す。
【００３９】
更新モジュール４１２は、バックアップサーバ１０８から受け取る通信に基づき、データベース４０４、セグメント記憶域４０２、およびフィンガープリント記憶域４１０を更新する。上述したように、これらの通信はバックアップサーバ通信モジュール４０８から更新モジュール４１２に渡される。特定のフィンガープリントの有無に関するバックアップサーバ１０８からの要求は、その特定のフィンガープリントが、提供されたフィンガープリントキャッシュ３０６の中になかったので、現在のバックアップ仕様３１０に今のところ関連していないことを意味する。特定のフィンガープリントの一部は、（対応するデータセグメントがセグメント記憶域４０２の中にある状態で）フィンガープリント記憶域４１０の中に既にある場合がある。これらのフィンガープリントについて、既に関連付けられているバックアップ仕様のパラメータとの関連を保持しながら、これらのフィンガープリントが現在のバックアップ仕様３１０のパラメータに関連するように、更新モジュール４１２がデータベース４０４を更新する。
【００４０】
バックアップサーバ１０８がデータセグメントを、記憶させるために中央リポジトリ１１４に送ると、更新モジュール４１２はそのセグメントをセグメント記憶域４０２に追加し、対応するフィンガープリントをフィンガープリント記憶域４１０に追加する。このフィンガープリントは、データセグメントと一緒に送られていてもよく、または中央リポジトリ１１４の中のフィンガープリントモジュール３０２（図示せず）によって生成されてもよい。更新モジュール４１２は、現在のバックアップ仕様のパラメータが、新たに追加したデータセグメントおよびフィンガープリントを参照するようにデータベース４０４も更新する。
【００４１】
フィンガープリントキャッシュ３０６の中に含まれていたが、バックアップストリームのデータセグメントの中では見つからなかったフィンガープリントのリストを含む、バックアップサーバ１０８からのメッセージは、これらのフィンガープリントが現在のバックアップ仕様３１０にもはや関連しないことを意味する。更新モジュール４１２は、現在のバックアップ仕様のパラメータと、データベース４０４内の指示されたフィンガープリントとの間の関連付けを除去することができる。更新モジュールが行うこの保守操作は、古いフィンガープリントがフィンガープリントキャッシュの中に含まれるのを有益に防ぐことができる。
【００４２】
バックアップサーバ１０８および中央リポジトリ１１４は、クライアント１０２に対してバックアップ復元操作を行うためのモジュールも含むことができる。これらのモジュールは本明細書には記載されないが、当技術分野で知られている技法を使用して実装することができる。
【００４３】
図５は、一実施形態における、重複排除を使用してクライアント記憶装置１０４から中央リポジトリ１１４にデータをバックアップするための方法を示す流れ図である。バックアップサーバ１０８が、バックアップ仕様３１０を受け取る（５０２）。このバックアップ仕様３１０は、システム管理者によって作成されていてもよく、バックアップソース、バックアップタイプ、およびバックアップポリシを識別することができる。バックアップ仕様３１０に基づき、リポジトリ通信モジュール３０８が中央リポジトリ１１４にフィンガープリントキャッシュを要求する。中央リポジトリ１１４が応答し、フィンガープリントキャッシュ３０６が受け取られる（５０４）。バックアップ仕様３１０に基づき、バックアップモジュール３０４がクライアント記憶装置１０４からのバックアップストリームを引き起こし、フィンガープリントモジュール３０２が、そのバックアップストリームの中のデータセグメントのフィンガープリントを生成する（５０６）。
【００４４】
そのデータセグメントのフィンガープリントを、フィンガープリントキャッシュ３０６の中のフィンガープリントと比較し、キャッシュ内で見つからないデータセグメントフィンガープリントを決定する（５０８）。リポジトリ通信モジュール３０８が、中央リポジトリに要求を送ることにより、これらのデータセグメントフィンガープリントに関して中央リポジトリ１１４をクエリする（５１０）。中央リポジトリ１１４はその要求に応答し、それらのデータセグメントフィンガープリントのうちのどれが、中央リポジトリの中に既に記憶されているデータセグメントに対応するのかを知らせる。バックアップサーバは、別のデータセグメント（すなわち中央リポジトリの中にまだ記憶されていないデータセグメント）を、記憶させるために中央リポジトリ１１４に送る（５１２）。
【００４５】
図６は、一実施形態における、重複排除を使用して中央リポジトリ１１４においてデータをバックアップするための方法を示す流れ図である。中央リポジトリ１１４が、バックアップサーバ１０８からバックアップ仕様を受け取る（６０２）。フィンガープリントキャッシュ生成器４０６が、バックアップ仕様３１０のパラメータを使ってデータベース４０４をクエリすることにより、フィンガープリントキャッシュ３０６を生成する（６０４）。バックアップサーバ通信モジュール４０８が、そのフィンガープリントキャッシュをバックアップサーバ１０８に送る（６０６）。バックアップサーバ１０８は、そのフィンガープリントキャッシュ３０６を処理し、個々のフィンガープリントに関するクエリを送り、そのクエリは中央リポジトリ１１４によって受け取られる（６０８）。バックアップサーバ通信モジュール４０８が、個々のフィンガープリントについてデータベース４０４内の探索を行い（６１０）、バックアップサーバ１０８に応答を送る。バックアップサーバ１０８はその応答を処理し、受け取られて（６１２）記憶されるデータセグメントを中央リポジトリ１１４に送る。個々のフィンガープリントに関するクエリおよび受け取ったデータセグメントに基づき、更新モジュール４１２がデータベース４０４を更新する（６１４）。
【００４６】
上記の説明は、好ましい実施形態の操作を例示するために含めたものであり、本発明の範囲を限定することを意図するものではない。本発明の範囲は特許請求の範囲によってのみ限定される。上記の解説から、本発明の趣旨および範囲に依然として包含される多くの改変形態が当業者に明らかになるであろう。
【図１】
0005207260.tif 000002
【図２】
0005207260.tif 000003
【図３】
0005207260.tif 000004
【図４】
0005207260.tif 000005
【図５】
0005207260.tif 000006
【図６】
0005207260.tif 000007