(58)【調査した分野】(Int.Cl.,DB名)
前記クライアント・データ・オブジェクト情報は、各データ・オブジェクト内の各データブロックについて、当該データ・オブジェクト内でデータブロックが位置する当該データ・オブジェクト内の少なくとも1つのオフセットを示し、当該データ・オブジェクト内の各データブロックが当該データ・オブジェクト内の1つまたは複数のオフセットで発生し、
前記要求したデータ・オブジェクトを再構築する機能は、各データブロックの受信に応答して、前記要求したデータ・オブジェクトについて、当該受信したデータブロックの前記少なくとも1つのオフセットを決定し、当該受信したデータブロックを、当該要求したデータ・オブジェクト内の当該決定した少なくとも1つのオフセットに追加すること
を特徴とする請求項2に記載のプログラム。
前記クライアント・データ・オブジェクト情報は、各データ・オブジェクト内の各データブロックについて、当該データ・オブジェクト内でデータブロックが位置する当該データ・オブジェクト内の少なくとも1つのオフセットを示し、当該データ・オブジェクト内の各データブロックが当該データ・オブジェクト内の1つまたは複数のオフセットで発生し、
前記要求したデータ・オブジェクトを再構築する機能は、当該要求したデータ・オブジェクトについてデータブロックのすべてが使用可能となるまで、前記受信したデータブロックをバッファリングし、当該要求したデータ・オブジェクト内の当該受信したデータブロックの前記少なくとも1つのオフセットを決定し、当該受信したデータブロックをバッファリングすることに応答して、バッファリングしたデータブロックを、当該要求したデータ・オブジェクト内の当該決定した少なくとも1つのオフセットに追加すること
を特徴とする請求項2に記載のプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
当分野では、様々なストレージ環境でデータ・オブジェクトの復元を処理するための改良された技法が求められている。
【課題を解決するための手段】
【0006】
本発明は、次のようなプログラムとして実現される。このプログラムは、少なくとも1つのバックアップ・デバイスからデータ・オブジェクトを復元するための動作をコンピュータに実行させるためのプログラムであって、前記コンピュータに、
データ・オブジェクトに含まれるデータであるデータブロック毎に重複排除して1つのインスタンスを前記バックアップ・デバイス内に格納する処理を行うサーバに対して、少なくとも1つの
データブロックを含むデータ・オブジェクトを要求する機能と、前記サーバから受信した
前記少なくとも1つのデータブロックを基に、前記要求したデータ・オブジェクトを再構築する機能とを実現させ、前記要求したデータ・オブジェクトを再構築する機能は、当該要求したデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通
のデータブロックを含む場合であっても、当該少なくとも1つの共通
のデータブロック毎にインスタンスを1つのみ含む前記受信した
少なくとも1つのデータブロックを基に、当該要求したデータ・オブジェクトを再構築
し、さらに、前記少なくとも1つのデータブロックを前記少なくとも1つのバックアップ・デバイスから取り出す順序を含む分類リストを生成する機能を実現させることを特徴とする。
また、好ましくは、上記のプログラムは、前記要求したデータ・オブジェクトに含まれる
前記少なくとも1つのデータブロックの情報を有するクライアント・データ・オブジェクト情報を維持する機能をさらに含み、前記要求したデータ・オブジェクトを再構築する機能は、前記受信した
少なくとも1つのデータブロックを追加するデータ・オブジェクトを決定するために、前記クライアント・データ・オブジェクト情報を使用することを特徴とする。
さらに、好ましくは、上記のクライアント・データ・オブジェクト情報は、
各データ・オブジェクト内の各
データブロックについて、当該データ・オブジェクト内で
データブロックが位置する当該データ・オブジェクト内の少なくとも1つのオフセットを示し、当該データ・オブジェクト内の各
データブロックが当該データ・オブジェクト内の1つまたは複数のオフセットで発生
し、前記要求したデータ・オブジェクトを再構築する機能は、各
データブロックの受信に応答して、前
記要求したデータ・オブジェクトについて、当該受信した
データブロックの前記少なくとも1つのオフセットを決定し、当該受信した
データブロックを、当該要求したデータ・オブジェクト内の当該決定した少なくとも1つのオフセットに追加することを特徴とする。
また、好ましくは、上記のクライアント・データ・オブジェクト情報は、
各データ・オブジェクト内の各
データブロックについて、当該データ・オブジェクト内で
データブロックが位置する当該データ・オブジェクト内の少なくとも1つのオフセットを示し、当該データ・オブジェクト内の各
データブロックが当該データ・オブジェクト内の1つまたは複数のオフセットで発生
し、前記要求したデータ・オブジェクトを再構築する機能は、当該要求したデータ・オブジェクトについて
データブロックのすべてが使用可能となるまで、前記受信した
データブロックをバッファリングし、当該要求したデータ・オブジェクト内の当該受信した
データブロックの前記少なくとも1つのオフセットを決定し、当該受信した
データブロックをバッファリングすることに応答して、バッファリングした
データブロックを、当該要求したデータ・オブジェクト内の当該決定した少なくとも1つのオフセットに追加することを特徴とする。
さらに、好ましくは、上記のプログラムは、前記コンピュータでローカルに維持されている前記要求したデータ・オブジェクト内の
データブロックを決定する機能と、前記コンピュータでローカルに維持されていない前記要求したデータ・オブジェクト内の
データブロックのインジケーションを前記サーバに送信する機能と、前記サーバから、前記コンピュータでローカルに維持されていない
データブロックを受信する機能とをさらに含み、前記要求したデータ・オブジェクトを再構築する機能は、前記受信した
データブロックと前記コンピュータでローカルに維持されている
データブロックとに基づいて、当該要求したデータ・オブジェクトを再構築することを特徴とする。
【発明を実施するための形態】
【0008】
バックアップ・サーバは、複数データ・オブジェクト内に含まれる範囲に対して、各範囲の1つのインスタンスのみがバックアップされるように、順次アクセス・デバイス内の複数データ・オブジェクトから範囲を格納する。順次アクセス媒体(磁気テープなど)からデータを復元するには、カートリッジをマウントし、デバイス・リーダをデータ範囲に位置決めするための時間を必要とする。順次アクセス媒体は、順番にデータ位置にアクセスしなければならないストレージを備える。従来技術では、順次アクセス媒体からの重複排除データの復元動作には、複数ボリュームのマウントおよび探索動作が必要であるため、結果としてアクセス性能が低くなる。説明される諸実施形態では、順次アクセス媒体から重複排除データを復元するための改善された性能および効率的な技法を提供する。クライアントが、重複排除によって順次アクセス媒体内にバックアップされた範囲からデータ・オブジェクトを再構築できるようにするために、バックアップ・サーバは、復元するように要求されたデータ・オブジェクトおよびデータ・オブジェクト内の範囲に関する情報をクライアントに提供する。バックアップ・サーバは、順次アクセス・デバイスから要求されたデータ・オブジェクトに含まれる範囲に、順次バックアップ・デバイス全体にわたって範囲が格納された順にアクセスし、受信した範囲からデータ・オブジェクトを再構築するために、クライアントに範囲を戻す。
【0009】
図1は、ネットワーク・バックアップ環境の実施形態を示す図である。この環境は、ネットワークを介して通信するクライアント・システム2およびサーバ・システム4を含む。クライアント2およびサーバ4は、それぞれ、クライアント2によってローカル・ストレージ14内に維持されるデータ・オブジェクト12のバックアップを含む、クライアント2にバックアップ・サービスを提供するためのクライアント・サーバ・バックアップ関連動作を実行するための、クライアント・バックアップ・プログラム8およびサーバ・バックアップ・プログラム10を含む。1つのクライアント2が示されているが、サーバ4は、ネットワーク6を介して複数のクライアント・システムにバックアップ・サービスを提供することができる。「バックアップ」という用語は、本明細書で使用される場合、アーカイブおよびスペース管理動作などの他のバックアップ関連動作を言い表す。
【0010】
サーバ・バックアップ・プログラム10は、1つまたは複数の順次バックアップ・デバイス18a、18b、18c内にクライアント2からバックアップされたデータ・オブジェクトに関する情報を提供する、オブジェクト・データベース16を維持する。順次バックアップ・デバイス18a、18b、18cは、媒体をマウントする必要があり、順次アクセス媒体上のトラック位置まで読み取りヘッドを移動させるための探索動作が実行される、磁気テープ媒体または他の順次アクセス・デバイスなどの、物理的に連続したストレージ位置からデータが順次読み取られ、この位置へ順次書き込まれる、順次アクセス・デバイスを備える。オブジェクト・データベース16は、データ・オブジェクト内に画定された範囲に関する情報、オブジェクトの出所であるクライアント、データ・オブジェクトを含んでいたクライアント・ストレージ14内の位置、ならびに、データ・オブジェクトおよびソース・クライアントに関する他の属性およびメタデータを含む。
【0011】
サーバ4からデータ・オブジェクトを復元するために、サーバ・バックアップ・プログラム10は、順次バックアップ・デバイス18a、18b、18cから復元するためのデータ・オブジェクトに関するサーバ・データ・オブジェクト情報20と、順次バックアップ・デバイス18a、18b、18c内で復元するためのデータ・オブジェクト内の範囲の位置を示す範囲情報22と、内部で順次バックアップ・デバイス18a、18b、18cから範囲が取り出され、クライアント2へ戻される順序を示す、分類リスト24とを生成する。クライアント・バックアップ・プログラム8は、データ・オブジェクト内の範囲およびデータ・オブジェクト内の範囲のオフセットを含む、クライアントが復元を要求したデータ・オブジェクトに関する情報を提供する、クライアント・データ・オブジェクト情報26を生成する。ある諸実施形態では、クライアント・バックアップ・プログラム8がサーバ・バックアップ・プログラム10から範囲を受信すると、クライアント・バックアップ・プログラム8は、受信した範囲を、復元されているデータ・オブジェクトに即時に追加することができる。一実施形態では、サーバ・バックアップ・プログラム10が分類リスト24を生成できる。代替実施形態では、クライアント・バックアップ・プログラム8が分類リスト24を生成できる。
【0012】
ある諸実施形態では、複数のファイルを復元する場合、クライアント・バックアップ・プログラム8は、たとえ復元要求内の他のファイルがまだ完全に復元されていない場合であっても、復元が完了した際に使用可能な復元ファイルを作成することができる。クライアント・バックアップ・プログラム8は、部分的に復元されたファイルへのアクセスを防ぐために、すべての範囲が含められるまで、復元中のデータ・オブジェクトにアクセスすることができない。復元に失敗した場合、クライアント・バックアップ・プログラム8は、部分的にしか復元されなかったファイルへのアクセスを防ぐために、部分的に復元されたファイルを除去することができる。別の方法として、クライアント・バックアップ・プログラム8は、復元するためのデータ・オブジェクトに関してサーバ・バックアップ・プログラム10から受信した範囲を、バッファ28内に格納することができる。
【0013】
部分的に復元されたデータ・オブジェクトの使用を防ぐため、ファイル名に拡張子「.TMP」を付加するなどのように、復元プロセス中のデータ・オブジェクトの名前を変更することができる。別の方法として、データ・オブジェクトが完全に再構築され、アクセス可能なアクティブ・ディレクトリに戻されるまで、そのデータ・オブジェクトにアクセスできないステージング・ディレクトリ(staging directory)内に、復元中のデータ・オブジェクトを再構築することもできる。さらに他の実施形態では、再構築中のデータ・オブジェクトを、アプリケーションによるアクセスには使用できないことを示す、特別な許可によって構成することもできる。
【0014】
範囲は、データ・オブジェクトに割り当てられたデータの領域またはブロックを備えるため、結果として1つまたは複数の範囲を含むようにデータ・オブジェクトを構成することができる。データ・オブジェクトは、ファイル、データベース、ファイル・システム、または任意の他のデータのグループ化を備えることができる。
【0015】
ネットワーク6は、ローカル・エリア・ネットワーク(LAN)、ストレージ・エリア・ネットワーク(SAN)、ワイド・エリア・ネットワーク(WAN)、無線ネットワークなどを含むことができる。クライアント2およびサーバ4は、エンタープライズ・ストレージ・サーバ、ストレージ・コントローラ、ブレード・サーバ、汎用サーバ、デスクトップ・コンピュータ、ワークステーション、電話デバイス、携帯情報端末(PDA)など、または他のコンピューティング・デバイスを含むことができる。
【0016】
ストレージ14は、相互接続ハード・ディスク・ドライブ(DASD、RAID、JBODなどとして構成される)、ソリッド・ステート・ストレージ・デバイス(たとえばEEPROM(電気的消去可能プログラマブル読み取り専用メモリ)、フラッシュ・メモリ、フラッシュ・ディスク、ストレージクラス・メモリ(SCM))、電子メモリなどの、当分野で知られた1つまたは複数のストレージ・デバイス内に実装された、ストレージ媒体を含むことができる。順次バックアップ・デバイス18a、18b、18cは、磁気テープ媒体、順次アクセス・メモリ(SAM)などの、データが所定の決められた順序でのみアクセス可能な、ストレージ・デバイスまたは要素を含む。
【0017】
サーバ4は、クラウド内のクライアント2にバックアップ・サービスを提供するための「クラウド」ストレージなどの、分散ストレージ環境またはネットワーク・ストレージ環境内に実装可能である。別の方法として、クライアント2およびサーバ4は、同一メモリ内で実行される別々のプログラムなどの、同一システム内のソフトウェアまたはソフトウェアおよびハードウェアのコンポーネントの組み合わせを含むことができる。
【0018】
図2は、復元するためのデータ・オブジェクトのデータ・オブジェクトID52とデータ・オブジェクト内の範囲54とを含む、オブジェクト・データベース16から生成されたサーバ・データ・オブジェクト情報20内のエントリ50の実施形態を示す。復元するためのデータ・オブジェクト内には各範囲について1つのエントリ50が存在することになる。復元するための複数のデータ・オブジェクトが共通範囲を共有している場合、フィールド54内の同じ範囲を示す複数のエントリ50が存在することが可能であるため、結果として、同じ範囲54を示す複数のデータ・オブジェクト52に関するエントリ50が存在することになる。連続番号56は、データ・オブジェクト内の各範囲の連続番号を提供するため、クライアント・バックアップ・プログラム8はそれらの範囲に関するオフセットを計算することができる。同じ範囲が同じデータ・オブジェクト52内に複数回発生することが可能であり、この場合、サーバ・データ・オブジェクト情報50はその範囲に関して、それぞれが異なる連続番号を有する複数のエントリを有することになる。サーバ4がクライアントにデータ・オブジェクト情報50を送信する場合、連続番号が含まれる。
【0019】
図3は、復元するためのデータ・オブジェクト内の範囲に関する範囲識別子(ID)62と、範囲62を含む順次バックアップ・デバイス18a、18b、18cのバックアップ・デバイスID64と、範囲を有する順次バックアップ・デバイス64内のブロックまたは位置を示すデバイス・ストレージ位置66とを示す、サーバ・バックアップ・プログラム10が維持する範囲情報22内のエントリ60の実施形態を示す。データ・オブジェクト内の各範囲について1つのエントリ60が存在するため、複数のデータ・オブジェクト内に含められる範囲は、範囲の順次バックアップ・デバイス18a、18b、18c内の位置を示す範囲情報22内に1つのエントリ60のみを有することになる。
【0020】
図4は、復元するためのデータ・オブジェクト内の各範囲に関する範囲72と、内部に範囲72が含められたデータ・オブジェクトのデータ・オブジェクトID74と、クライアント・ローカル・ストレージ14内に範囲がローカルに格納されているかどうかを示すローカル・インジケータ76と、データ・オブジェクト74内の範囲72のオフセット78とを示す、クライアント・バックアップ・プログラム8が維持するクライアント・データ・オブジェクト情報26内のエントリ70の実施形態を示す。複数のデータ・オブジェクトが共通範囲を共有している場合、フィールド72内に同一範囲を示す複数の範囲エントリ70が存在する可能性があるため、結果として複数のエントリ70が異なるデータ・オブジェクトID74について同じ範囲72を有することになる。同様に、その範囲がデータ・オブジェクト内の複数の位置に発生する場合、同じデータ・オブジェクトについて複数の範囲エントリ70が存在する可能性がある。
【0021】
ある実施形態では、クライアント8あるいはサーバ10またはその両方のバックアップ・プログラムは、複数のデータ・オブジェクト内で維持可能な範囲の1つのインスタンスのみが順次バックアップ・デバイス18a、18b、18c内でバックアップされることを保証するために、データ重複排除を実施する。オブジェクト・データベース16は、順次バックアップ・デバイス18a、18b、18c内のデータ・オブジェクトに関する範囲の位置を識別する。
【0022】
図5は、サーバ4が、範囲C、G、A、B、F、D、H、Jのうちの1つのインスタンスのみを有する3つの順次バックアップ・デバイス18a、18b、18cをどのように有するかの例を示す。クライアント4は、バックアップ・デバイス18a、18b、18c内にバックアップされた範囲からなるデータ・オブジェクト80a、80b、80cを有する。データ・オブジェクト80a、80b、80cは範囲を共有することができる。さらに、同じデータ・オブジェクト内に範囲の複数のインスタンスが存在可能である。たとえば、データ・オブジェクト80bおよび80cは共通範囲C、H、およびGを有し、データ・オブジェクト80aおよび80cは共通範囲A、D、Fを有する。データ・オブジェクト80cは範囲Hの2つのインスタンスを有する。クライアント4は、共通範囲を有するデータ・オブジェクト80a、80b、80cを維持することができるが、それらの範囲がバックアップ・デバイス18a、18b、18c内にバックアップされる場合、重複排除は、バックアップ・デバイス18a、18b、18c内に各範囲の1つのインスタンスのみを格納する。
【0023】
図6は、データ・オブジェクト列94内のデータ・オブジェクトIDに従ってエントリが順序付けられるように、データ・オブジェクト列94内に示された復元するための各データ・オブジェクトに関する範囲を提供する範囲列92を有する、
図5のデータ・オブジェクト例に関するサーバ・データ・オブジェクト情報20(
図1)の例を含む、サーバ・データ・オブジェクト情報90の例を示す。サーバ・データ・オブジェクト情報20は、データ・オブジェクト1、2、および3内の範囲F、D、A、C、およびHなどの、データ・オブジェクト内の共通範囲を示す。連続番号96は、サーバ4によってクライアント2に提供されたデータ・オブジェクト90内の範囲の連続番号を提供する。クライアント・バックアップ・プログラム8は、この範囲サイズ(
図8)および連続番号(
図6)を使用して、
図7に示されるようなデータ・オブジェクト内の範囲のオフセットを計算することができる。
【0024】
図7は、データ・オブジェクト列104内に示された各データ・オブジェクトに関する範囲を有する範囲列102を有する、
図5のデータ・オブジェクト例に関するクライアント・データ・オブジェクト情報26(
図1)の例を含む、クライアント・データ・オブジェクト情報100の例を示す。ローカル・インジケータ列106は、範囲列102内で識別された範囲がクライアント内でローカルに維持されているかどうかを示す、ローカル・インジケータ76(
図4)を含む。オフセット列108は、整数、ブロック数などの、範囲のデータ・オブジェクト内のオフセット位置78を示す。オフセット列108内のオフセット・データは、どちらもサーバ4から受信可能な、データ・オブジェクト92および52内の各範囲の連続番号96(
図6)、56(
図2)と、範囲サイズとに基づいて計算される。
【0025】
図8は、サーバ4がクライアント・バックアップ・プログラム8に提供する、範囲サイズの例を提供する。別の方法として、クライアント2はサイズをローカルにキャッシュに入れることができるが、その情報が復元中に使用できない場合、クライアントはサーバ4からの情報を使用することができる。
【0026】
図9は、各範囲の1つのインスタンスを有する範囲列122と、範囲を含む順次バックアップ・デバイス18a、18b、18cを示すバックアップ・デバイス列124と、バックアップ・デバイス124上の範囲のアドレスまたは位置を有するデバイス・ストレージ位置列126とを有する、
図5のデータ・オブジェクト例に関する範囲情報22(
図1)の例を含む、範囲情報120の例を示す。範囲情報22は、復元するためのデータ・オブジェクト内の範囲を有するバックアップ・デバイス18a、18b、18cおよびストレージ位置を示すために、バックアップ・デバイス列124およびデバイス・ストレージ位置126のアドレスに従って分類される。
【0027】
図10は、データ・オブジェクトを復元するためにサーバ・バックアップ・プログラム10およびクライアント・バックアップ・プログラム8によって実行される、諸動作の実施形態を示す。サーバ・バックアップ・プログラム10が(ブロック200で)、順次バックアップ・デバイス18a、18b、18c内に格納されたデータ・オブジェクトを復元するための要求を受信すると、サーバ・バックアップ・プログラム10は(ブロック202で)、要求されたデータ・オブジェクトについて少なくとも1つの順次バックアップ・デバイス18a、18b、18c内に格納された範囲を、オブジェクト・データベース16から決定する。サーバ・バックアップ・プログラム10は(ブロック204で)、
図6に示されるような、復元するためのデータ・オブジェクト52内に含まれる範囲54(
図2)を示す復元が要求された各データ・オブジェクトについて、サーバ・データ・オブジェクト情報20を生成する。その後サーバ・バックアップ・プログラム10は(ブロック206で)、サーバ・データ・オブジェクト情報20および範囲サイズ情報をクライアント2に戻すことができる。
【0028】
サーバ・データ・オブジェクト情報20を受信すると、クライアント・バックアップ・プログラム8は(ブロック208で)、クライアント・ストレージ14でローカルに維持された、復元するためのデータ・オブジェクト内の範囲を決定する。クライアント・バックアップ・プログラム8は(ブロック210で)、範囲のインジケーションをサーバ4に送信し、サーバはこれを使用して、クライアント2がローカル・ストレージ14内にローカルに維持している範囲を含まない、クライアント2に送信するための範囲を決定する。一実施形態では、クライアント・バックアップ・プログラム8は、ローカルに維持されている範囲のリスト、または、クライアントがローカルに維持していない復元するためのデータ・オブジェクト内の範囲のリストを、サーバ4に送信することができる。
【0029】
クライアント・バックアップ・プログラム8は(ブロック212で)、サーバ・データ・オブジェクト情報を使用して、各範囲72(
図4)に関して、範囲を含む少なくとも1つのデータ・オブジェクト74と、範囲がローカルに維持されているかどうかのローカル・インジケータ76と、範囲を含む各データ・オブジェクト内の範囲のオフセット78とを示す、クライアント・データ・オブジェクト情報26を生成する。クライアント・データ・オブジェクト情報20内でローカル・インジケータ76として示される、ローカルに維持されている各範囲について、クライアント・バックアップ・プログラム8は(ブロック214で)、範囲およびデータ・オブジェクトに関して示されたオフセット78での範囲を含む、復元するための各データ・オブジェクトに、範囲のローカル・インスタンスを追加する。
【0030】
サーバ・バックアップ・プログラム10が、クライアントがローカルに維持していない範囲を決定するために使用されたインジケーションを受信すると、サーバ・バックアップ・プログラム10は(ブロック216で)、サーバ・データ・オブジェクト情報20内でクライアントがローカルに維持していないことが示された範囲を、分類リスト24を生成するために、少なくとも1つの順次バックアップ・デバイス18a、18b、18c内に格納された順番に従って分類する。分類リスト24は、順次バックアップ・デバイス18a、18b、18cから範囲に順番にアクセスするためのプランを、サーバ・バックアップ・プログラム10に提供する。代替実施形態では、クライアント・バックアップ・プログラム8が分類リスト24を生成することもできる。次にサーバ・バックアップ・プログラム10はブロック218から224で、分類リスト24内に示された各バックアップ・デバイスについて動作ループを実行する。各バックアップ・デバイス18a、18b、18cに対して、サーバ・バックアップ・プログラム10は(ブロック220で)、分類リスト24内に示されたような順次バックアップ・デバイス内に格納された順序に従って、順次バックアップ・デバイス18a、18b、18cから、分類リスト24内の範囲を順番に読み取る。サーバ・バックアップ・プログラム10は(ブロック222で)、順次バックアップ・デバイス18a、18b、18cから読み取られた場合、範囲をクライアント4に送信することができる。
【0031】
一実施形態では、(ブロック226で)サーバ4から範囲を受信すると、クライアント・バックアップ・プログラム8は(ブロック228で)、クライアント・データ・オブジェクト情報26から、その範囲が含まれる要求された各データ・オブジェクト74内の受信された範囲のオフセット78を決定する。クライアント・バックアップ・プログラム8は、受信したサーバ・データ・オブジェクト(
図2および
図6)内の範囲サイズ(
図8)および連続番号96(
図6)を使用して、範囲のオフセット108(
図7)を計算することができる。受信した範囲を含む各データ・オブジェクトについて、クライアント・バックアップ・プログラム8は(ブロック230で)、復元するように要求されたデータ・オブジェクト内の決定したオフセットに、受信した範囲を追加する。このようにして、範囲がサーバ4から受信されるかまたはストレージ14からローカルに取り出されると、データ・オブジェクトは再構築される。
【0032】
代替実施形態では、クライアント・バックアップ・プログラム8は、サーバ4から受信された範囲およびローカルに取り出された範囲をバッファ28内に集めることが可能であり、その結果、復元するためのデータ・オブジェクトに関するすべての範囲がバッファ内で使用可能になった後、データ・オブジェクトが再構築されることになる。バッファ28は、メモリ内またはディスク・ストレージ・デバイス上のいずれかに実装可能である。範囲は、ローカルに維持されているステージされたデータまたはブロックからオブジェクト全体が再構築される時点で、すべての範囲が取り出されるまで、バッファ28内でステージ(stage)可能である。
【0033】
説明された諸実施形態は、複数のデータ・オブジェクト内に維持されている範囲の1つのインスタンスのみが順次バックアップ・デバイス18a、18b、18c内にバックアップされるように、重複排除を使用してデータ・オブジェクトの範囲をバックアップする、諸実施形態における順次バックアップ・デバイスからの範囲の順次取り出しを最適化するために、順次バックアップ・デバイス内に格納された範囲を含むデータ・オブジェクトを復元するための技法を提供する。バックアップ・サーバはクライアントに範囲を戻し、クライアントはこれを、その受信された範囲を含む復元中の各データ・オブジェクトに追加する。これにより、たとえ、クライアント2がネットワークを介してバックアップ・サーバ4から復元している複数のデータ・オブジェクト内に範囲が含まれている場合であっても、範囲の1つのインスタンスのみをバックアップすることによってストレージを最適化し、範囲の1つのインスタンスのみを送信することによって、ネットワーク帯域幅を最適化する。
【0034】
説明された諸動作は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生成するために、標準的なプログラミングあるいはエンジニアリングまたはその両方の技法を使用する、方法、装置、またはコンピュータ・プログラム製品として、実装可能である。したがって、諸実施形態の諸態様は、全体としてハードウェア実施形態、全体としてソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、本明細書ではすべて一般に「回路」、「モジュール」、または「システム」と呼ぶことが可能なソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形を取ることができる。さらに諸実施形態の諸態様は、コンピュータ読み取り可能プログラム・コードがその上で具体化された1つまたは複数のコンピュータ読み取り可能媒体内で具体化された、コンピュータ・プログラム製品の形を取ることもできる。
【0035】
1つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、それらに限定されるものではない。コンピュータ読み取り可能ストレージ媒体のより特定の例(非網羅的リスト)には、1本または複数本のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはそれらの任意の好適な組み合わせが含まれる。本明細書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行のシステム、装置、またはデバイスによって、またはこれらに関連して使用するためのプログラムを含むかまたは格納することが可能な、任意の有形媒体とすることができる。
【0036】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内または搬送波の一部として、内部にコンピュータ読み取り可能プログラム・コードが具体化された、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むがこれらに限定されない、様々な形のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行のシステム、装置、またはデバイスによって、またはこれらに関連して使用するためのプログラムを送信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【0037】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはそれらの任意の好適な組み合わせを含むがこれらに限定されない、任意の適切な媒体を使用して伝送可能である。
【0038】
本発明の諸態様に関する諸動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、全体としてリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介して、リモート・コンピュータをユーザのコンピュータに接続することができる、あるいは、(たとえばインターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータとの接続を実行することができる。
【0039】
上記では、本発明の諸態様について、本発明の諸実施形態に従った方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら説明されている。流れ図あるいはブロック図またはその両方の各ブロック、ならびに、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることを理解されよう。コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方の1つまたは複数のブロック内に指定された機能/活動を実施するための手段を作成するように、これらのコンピュータ・プログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、または他のマシンを製造するためのプログラマブル・データ処理装置のプロセッサへと提供することができる。
【0040】
コンピュータ読み取り可能媒体内に格納された命令が、流れ図あるいはブロック図またはその両方の1つまたは複数のブロック内に指定された機能/活動を実施する命令を含む製品を生成するように、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の様式で機能するように指示可能な、コンピュータ読み取り可能媒体に格納することも可能である。
【0041】
コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方の1つまたは複数のブロック内に指定された機能/活動を実施するためのプロセスを提供するように、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードして、コンピュータ実施プロセスを生成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させることも可能である。
【0042】
ある諸実施形態では、
図1のシステムは、クラウド・コンピューティング環境におけるクラウド・コンポーネント部分として実装可能である。クラウド・コンピューティング環境では、クラウド・コンピューティングの送達に関与するハードウェアおよびソフトウェアのコンポーネントのシステム・アーキテクチャは、インターネットなどのネットワークを介して互いに通信する複数のクラウド・コンポーネントを備えることができる。たとえば、ある諸実施形態では、
図1のサーバ4は、ネットワーク・クラウド内にホストおよびクライアントのバックアップ・サービスを提供することができる。
【0043】
図11は、
図1のクライアント2およびサーバ4で実装可能なコンピュータ・アーキテクチャ300の実施形態を示す。アーキテクチャ300は、プロセッサ302(たとえばマイクロプロセッサ)、メモリ304(たとえば揮発性メモリ・デバイス)、およびストレージ306(たとえば、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの、不揮発性ストレージ)を含むことができる。ストレージ306は、内部ストレージ・デバイス、あるいは、接続されるかまたはネットワーク・アクセスが可能なストレージを備えることができる。オペレーティング・システム308と、ストレージ306内のバックアップ・プログラム8および10を含むプログラムが、メモリ304内にロードされ、プロセッサ302によって実行される。メモリ304は、情報16、20、22、24、および26などのデータ構造を、さらに含むことができる。アーキテクチャは、ネットワーク30と通信可能なネットワーク・カード310をさらに含む。入力デバイス312は、ユーザ入力をプロセッサ302に提供するために使用され、キーボード、マウス、ペン・スタイラス、マイクロフォン、タッチ・センサー式ディスプレイ画面、または当分野で知られた任意の他の起動または入力メカニズムを含むことができる。出力デバイス314は、プロセッサ302、または、ディスプレイ・モニタ、プリンタ、ストレージなどの他のコンポーネントから伝送された情報をレンダリングすることができる。
【0044】
「ある実施形態」、「実施形態」、「諸実施形態」、「その実施形態」、「その諸実施形態」、「1つまたは複数の実施形態」、「いくつかの実施形態」、および「一実施形態」という用語は、特に明示的に指定されていない限り「本発明の1つまたは複数の(ただしすべてではない)実施形態」を意味する。
【0045】
「含む」、「備える」、「有する」、およびそれらの変形の用語は、特に明示的に指定されていない限り、「含むが限定されない」ことを意味する。
【0046】
アイテムの列挙されたリストは、特に明示的に指定されていない限り、アイテムのいずれかまたはすべてが相互に排他的であることを示唆するものではない。
【0047】
「a」、「an」、および「the」は、特に明示的に指定されていない限り、「1つまたは複数」を意味する。
【0048】
互いに通信しているデバイスは、特に明示的に指定されていない限り、互いに連続した通信状態にあるとは限らない。加えて、互いに通信しているデバイスは、直接、あるいは1つまたは複数の仲介を介して間接的に、通信可能である。
【0049】
互いに通信しているいくつかのコンポーネントを備える実施形態の説明は、こうしたコンポーネントのすべてが必要であることを示唆するものではない。反対に、本発明の多種多彩かつ可能な諸実施形態を示すために、様々なオプションのコンポーネントについて説明される。
【0050】
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどについて、ある順序で説明されている場合があるが、こうしたプロセス、方法、およびアルゴリズムは、代替順序で作業するように構成可能である。言い換えれば、説明可能なステップの任意の順序または順番は、ステップがその順番で実行されるという要件を必ずしも示すものではない。本明細書で説明されるプロセスの諸ステップは、任意の実用的な順序で実行可能である。さらに、いくつかのステップは同時に実行可能である。
【0051】
本明細書で単一のデバイスまたは製品について記載されている場合、単一のデバイス/製品の代わりに、複数のデバイス/製品が(それらが協働するか否かに関わらず)使用可能であることが容易に明らかとなろう。同様に、本明細書で複数のデバイスまたは製品について(それらが協働するか否かに関わらず)記載されている場合、複数のデバイスまたは製品の代わりに、単一のデバイス/製品が使用可能であること、あるいは、表示されたデバイスまたはプログラムの数の代わりに、異なる数のデバイス/製品が使用可能であることが、容易に明らかとなろう。デバイスの機能あるいは特徴またはその両方は、別の方法として、そうした機能/特徴を有するものとして明示的に説明されていない1つまたは複数の他のデバイスによって具体化することができる。したがって、本発明の他の諸実施形態が、デバイス自体を含む必要はない。
【0052】
図10に示された諸動作は、ある順序で発生するある諸イベントを示している。代替の諸実施形態では、ある諸動作を異なる順序で実行すること、修正すること、または除去することが可能である。さらに、前述の論理に諸ステップを追加し、依然として説明された諸実施形態に準拠するものとすることが可能である。さらに、本明細書で説明された諸動作は順次発生可能であるか、またはある諸動作は並行して処理可能である。さらに、諸動作を、単一の処理ユニットによって、または分散型処理ユニットによって、実行可能である。
【0053】
前述の本発明の様々な実施形態の記述は、例示および説明の目的で提示されてきた。これは網羅的なものではなく、本発明を開示された精密な形に限定することは意図されていない。上記教示に鑑みて、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明によってではなく、本明細書に添付された特許請求の範囲によって限定されることが意図される。前述の仕様、例示、およびデータは、本発明の組成物の製造および使用の完全な説明を提供するものである。本発明の多くの実施形態は、本発明の趣旨および範囲を逸脱することなく実行可能であるため、本発明は、以下に添付の特許請求の範囲内に入るものである。