順次バックアップ・デバイスから重複排除されたデータ・オブジェクトを復元するための、コンピュータ・プログラム、システム、および方法
【課題】順次バックアップ・デバイスから重複排除されたデータ・オブジェクトを復元する。
【解決手段】サーバは、少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納する。サーバは、データ・オブジェクトに関する要求をクライアントから受信する。サーバは、要求されたデータ・オブジェクトに関する少なくとも1つの順次バックアップ・デバイスに格納された範囲を決定する。サーバまたはクライアントは、分類リストを生成するために、範囲を、それらが少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って分類する。サーバは、分類リスト内の順序に従って少なくとも1つの順次バックアップ・デバイスから範囲を取り出す。サーバは、取り出した範囲をクライアントに戻し、クライアントは、受信した範囲から要求されたデータ・オブジェクトを再構築する。
【解決手段】サーバは、少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納する。サーバは、データ・オブジェクトに関する要求をクライアントから受信する。サーバは、要求されたデータ・オブジェクトに関する少なくとも1つの順次バックアップ・デバイスに格納された範囲を決定する。サーバまたはクライアントは、分類リストを生成するために、範囲を、それらが少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って分類する。サーバは、分類リスト内の順序に従って少なくとも1つの順次バックアップ・デバイスから範囲を取り出す。サーバは、取り出した範囲をクライアントに戻し、クライアントは、受信した範囲から要求されたデータ・オブジェクトを再構築する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、順次バックアップ・デバイスから重複排除された(deduplicated)データ・オブジェクトを復元するための、コンピュータ・プログラム、システム、および方法に関する。
【背景技術】
【0002】
ネットワーク・バックアップ環境では、クライアント・システムは、ネットワークを介してそのデータをバックアップ・サーバにバックアップする。バックアップ・サーバはバックアップ・オブジェクトのデータベースを維持し、バックアップ・ストレージ・プールに格納されたバックアップ・オブジェクトに関する情報を提供する。クライアント・システムは、バックアップ・サーバによって維持されるバックアップ・オブジェクトからデータ・オブジェクト復元することができる。
【0003】
バックアップ・クライアントおよびサーバはデータの重複排除を実装可能であり、これによって、ストレージ・スペースを最適化し、ネットワーク帯域幅を保持するために、バックアップ動作中に冗長データを除去する。複数のデータ・オブジェクトが同じ範囲を共有している場合、その範囲の1つのインスタンスのみがバックアップ・ストレージ内に格納されるように、バックアップ動作は、データの領域(chunk)または範囲(extent)内にデータをバックアップすることができる。
【0004】
ストレージ・バックアップ・アクティビティ中の重複排除は、データ・ソース(クライアント)、データ・ターゲット(サーバ)、または、バックアップ・サーバに接続された重複排除機器で実行することができる。サーバからクライアントへの重複排除データの復元は、重複排除された領域または範囲からのデータの再構築を含む。現行のシステムでは、重複排除されたデータはディスク上に格納され、バックアップ・サーバはディスクから復元するためにデータ・オブジェクト用の範囲にアクセスし、共通範囲を有するオブジェクトを含む全データ・オブジェクトをクライアントに戻すことになる。たとえ、復元用に選択された多くのデータ・オブジェクト内に(または同じオブジェクト内に)同じ範囲が発見された場合であっても、その領域または範囲は復元され、サーバからクライアントへと複数回伝送されることになる。バックアップ・サーバは、ディスク・ベース・ストレージのランダム・アクセスの性質により、任意の順序でディスクからその範囲にアクセスすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
当分野では、様々なストレージ環境でデータ・オブジェクトの復元を処理するための改良された技法が求められている。
【課題を解決するための手段】
【0006】
順次バックアップ・デバイスから重複排除されたデータ・オブジェクトを復元するための、コンピュータ・プログラム製品、システム、および方法が提供される。サーバは、少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納する。サーバは、データ・オブジェクトに関する要求をクライアントから受信する。サーバは、要求されたデータ・オブジェクトに関する少なくとも1つの順次バックアップ・デバイスに格納された範囲を決定する。サーバまたはクライアントは、分類リストを生成するために、範囲を、それらが少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って分類する。サーバは、範囲が格納された順序で、順次バックアップ・デバイスから順番にそれらの範囲にアクセスするために、分類リスト内の順序に従って少なくとも1つの順次バックアップ・デバイスから範囲を取り出す。サーバは、取り出した範囲をクライアントに戻し、クライアントは、受信した範囲から要求されたデータ・オブジェクトを再構築する。
【図面の簡単な説明】
【0007】
【図1】ネットワーク・バックアップ環境の実施形態を示す図である。
【図2】サーバ・データ・オブジェクト情報の実施形態を示す図である。
【図3】範囲情報の実施形態を示す図である。
【図4】クライアント・データ・オブジェクト情報の実施形態を示す図である。
【図5】クライアントによって維持されるデータ・オブジェクトに関して、バックアップ・サーバがバックアップ・デバイス内に範囲を維持する方法の例を示す図である。
【図6】サーバ・データ・オブジェクト情報の例を示す図である。
【図7】クライアント・データ・オブジェクト情報の例を示す図である。
【図8】図7中のオフセットの計算元である範囲サイズに関する情報を示す図である。
【図9】範囲情報の例を示す図である。
【図10】バックアップ・クライアント・サーバ環境において、データ・オブジェクトを復元するための諸動作の実施形態を示す図である。
【図11】コンピュータ・アーキテクチャの実施形態を示す図である。
【発明を実施するための形態】
【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】
前述の本発明の様々な実施形態の記述は、例示および説明の目的で提示されてきた。これは網羅的なものではなく、本発明を開示された精密な形に限定することは意図されていない。上記教示に鑑みて、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明によってではなく、本明細書に添付された特許請求の範囲によって限定されることが意図される。前述の仕様、例示、およびデータは、本発明の組成物の製造および使用の完全な説明を提供するものである。本発明の多くの実施形態は、本発明の趣旨および範囲を逸脱することなく実行可能であるため、本発明は、以下に添付の特許請求の範囲内に入るものである。
【符号の説明】
【0054】
2 クライアント
4 サーバ
6 ネットワーク
8 クライアント・バックアップ・プログラム
10 サーバ・バックアップ・プログラム
12 データ・オブジェクト
14 ストレージ
16 オブジェクト・データベース
18a 順次バックアップ・デバイス
18b 順次バックアップ・デバイス
18c 順次バックアップ・デバイス
20 サーバ・データ・オブジェクト情報
22 範囲情報
24 分類リスト
26 クライアント・データ・オブジェクト情報
28 バッファ
【技術分野】
【0001】
本発明は、順次バックアップ・デバイスから重複排除された(deduplicated)データ・オブジェクトを復元するための、コンピュータ・プログラム、システム、および方法に関する。
【背景技術】
【0002】
ネットワーク・バックアップ環境では、クライアント・システムは、ネットワークを介してそのデータをバックアップ・サーバにバックアップする。バックアップ・サーバはバックアップ・オブジェクトのデータベースを維持し、バックアップ・ストレージ・プールに格納されたバックアップ・オブジェクトに関する情報を提供する。クライアント・システムは、バックアップ・サーバによって維持されるバックアップ・オブジェクトからデータ・オブジェクト復元することができる。
【0003】
バックアップ・クライアントおよびサーバはデータの重複排除を実装可能であり、これによって、ストレージ・スペースを最適化し、ネットワーク帯域幅を保持するために、バックアップ動作中に冗長データを除去する。複数のデータ・オブジェクトが同じ範囲を共有している場合、その範囲の1つのインスタンスのみがバックアップ・ストレージ内に格納されるように、バックアップ動作は、データの領域(chunk)または範囲(extent)内にデータをバックアップすることができる。
【0004】
ストレージ・バックアップ・アクティビティ中の重複排除は、データ・ソース(クライアント)、データ・ターゲット(サーバ)、または、バックアップ・サーバに接続された重複排除機器で実行することができる。サーバからクライアントへの重複排除データの復元は、重複排除された領域または範囲からのデータの再構築を含む。現行のシステムでは、重複排除されたデータはディスク上に格納され、バックアップ・サーバはディスクから復元するためにデータ・オブジェクト用の範囲にアクセスし、共通範囲を有するオブジェクトを含む全データ・オブジェクトをクライアントに戻すことになる。たとえ、復元用に選択された多くのデータ・オブジェクト内に(または同じオブジェクト内に)同じ範囲が発見された場合であっても、その領域または範囲は復元され、サーバからクライアントへと複数回伝送されることになる。バックアップ・サーバは、ディスク・ベース・ストレージのランダム・アクセスの性質により、任意の順序でディスクからその範囲にアクセスすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
当分野では、様々なストレージ環境でデータ・オブジェクトの復元を処理するための改良された技法が求められている。
【課題を解決するための手段】
【0006】
順次バックアップ・デバイスから重複排除されたデータ・オブジェクトを復元するための、コンピュータ・プログラム製品、システム、および方法が提供される。サーバは、少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納する。サーバは、データ・オブジェクトに関する要求をクライアントから受信する。サーバは、要求されたデータ・オブジェクトに関する少なくとも1つの順次バックアップ・デバイスに格納された範囲を決定する。サーバまたはクライアントは、分類リストを生成するために、範囲を、それらが少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って分類する。サーバは、範囲が格納された順序で、順次バックアップ・デバイスから順番にそれらの範囲にアクセスするために、分類リスト内の順序に従って少なくとも1つの順次バックアップ・デバイスから範囲を取り出す。サーバは、取り出した範囲をクライアントに戻し、クライアントは、受信した範囲から要求されたデータ・オブジェクトを再構築する。
【図面の簡単な説明】
【0007】
【図1】ネットワーク・バックアップ環境の実施形態を示す図である。
【図2】サーバ・データ・オブジェクト情報の実施形態を示す図である。
【図3】範囲情報の実施形態を示す図である。
【図4】クライアント・データ・オブジェクト情報の実施形態を示す図である。
【図5】クライアントによって維持されるデータ・オブジェクトに関して、バックアップ・サーバがバックアップ・デバイス内に範囲を維持する方法の例を示す図である。
【図6】サーバ・データ・オブジェクト情報の例を示す図である。
【図7】クライアント・データ・オブジェクト情報の例を示す図である。
【図8】図7中のオフセットの計算元である範囲サイズに関する情報を示す図である。
【図9】範囲情報の例を示す図である。
【図10】バックアップ・クライアント・サーバ環境において、データ・オブジェクトを復元するための諸動作の実施形態を示す図である。
【図11】コンピュータ・アーキテクチャの実施形態を示す図である。
【発明を実施するための形態】
【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】
前述の本発明の様々な実施形態の記述は、例示および説明の目的で提示されてきた。これは網羅的なものではなく、本発明を開示された精密な形に限定することは意図されていない。上記教示に鑑みて、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明によってではなく、本明細書に添付された特許請求の範囲によって限定されることが意図される。前述の仕様、例示、およびデータは、本発明の組成物の製造および使用の完全な説明を提供するものである。本発明の多くの実施形態は、本発明の趣旨および範囲を逸脱することなく実行可能であるため、本発明は、以下に添付の特許請求の範囲内に入るものである。
【符号の説明】
【0054】
2 クライアント
4 サーバ
6 ネットワーク
8 クライアント・バックアップ・プログラム
10 サーバ・バックアップ・プログラム
12 データ・オブジェクト
14 ストレージ
16 オブジェクト・データベース
18a 順次バックアップ・デバイス
18b 順次バックアップ・デバイス
18c 順次バックアップ・デバイス
20 サーバ・データ・オブジェクト情報
22 範囲情報
24 分類リスト
26 クライアント・データ・オブジェクト情報
28 バッファ
【特許請求の範囲】
【請求項1】
少なくとも1つの順次バックアップ・デバイスからデータ・オブジェクトを復元するためにクライアントおよびサーバの動作を実行するコンピュータ・プログラムであって、
前記サーバによって、前記少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納すること、
前記サーバによって、前記クライアントから、データ・オブジェクトに関する要求を受信すること、
前記サーバによって、前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
前記サーバまたは前記クライアントによって、分類リストを生成するために、前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲を分類すること、
前記サーバによって、格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、
前記サーバによって、前記取り出された範囲を前記クライアントに戻すこと、および
前記クライアントによって、前記受信された範囲から前記要求されたデータ・オブジェクトを再構築すること、
をコンピュータに実行させるコンピュータ・プログラム。
【請求項2】
前記要求されたデータ・オブジェクトが複数の順次バックアップ・デバイス内に格納され、前記順次バックアップ・デバイスのそれぞれについて1つの分類リストを生成するために、前記分類リスト内の前記範囲の分類が、前記要求されたデータ・オブジェクトに関する範囲を含む前記順次バックアップ・デバイスのそれぞれについて実行され、前記取り出すことが、前記順次バックアップ・デバイスに書き込まれた前記順序に従って、前記順次バックアップ・デバイス内の前記範囲に順番にアクセスするために、前記順次バックアップ・デバイスについての前記分類リスト内の前記順序に従って、前記順次バックアップ・デバイスのそれぞれについてのすべての範囲を取り出すことを含む、請求項1に記載のコンピュータ・プログラム。
【請求項3】
前記順次バックアップ・デバイス内へ前記データ・オブジェクトを格納することが、範囲の1つのインスタンスのみを格納し、前記要求されたデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通範囲を含み、前記戻された範囲が、前記少なくとも2つのデータ・オブジェクトに含まれる前記少なくとも1つの共通範囲の少なくとも1つのインスタンスのみを含む、請求項1に記載のコンピュータ・プログラム。
【請求項4】
前記クライアントによって、前記要求されたデータ・オブジェクトに含まれる範囲のクライアント・データ・オブジェクト情報を維持することをさらに含み、
前記要求されたデータ・オブジェクトを再構築することが、前記受信された範囲を追加する前記データ・オブジェクトを決定するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲が、前記共通範囲を含む前記少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、
請求項3に記載のコンピュータ・プログラム。
【請求項5】
前記クライアント・データ・オブジェクト情報が、データ・オブジェクト内の各範囲について、前記データ・オブジェクト内で前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、各範囲の受信に応答して、
前記範囲が含まれる前記要求されたデータ・オブジェクトのそれぞれの中で、前記受信された範囲の前記少なくとも1つのオフセットを決定すること、
前記受信された範囲を含む各データ・オブジェクトについて、前記受信された範囲を、前記データ・オブジェクト内の前記決定された少なくとも1つのオフセットに追加することであって、範囲は、前記範囲が受信された際にデータ・オブジェクト内に含まれる、追加すること、
を実行することを含む、請求項3に記載のコンピュータ・プログラム。
【請求項6】
前記クライアント・データ・オブジェクト情報が、前記データ・オブジェクト内の各範囲について、前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、
前記要求されたデータ・オブジェクトについて前記範囲のすべてが使用可能となるまで、前記受信された範囲をバッファリングすること、
前記要求されたデータ・オブジェクト内の前記受信された範囲の前記オフセットを決定すること、および
前記サーバから受信された前記データ・オブジェクトについてすべての前記範囲をバッファリングすることに応答して、前記バッファリングされた受信された範囲を、前記要求されたデータ・オブジェクトのうちの1つの前記決定されたオフセットに追加すること、
を実行することを含む、請求項3に記載のコンピュータ・プログラム。
【請求項7】
前記動作が、
前記クライアントによって、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の範囲を決定すること、および、
前記クライアントによって、前記クライアントでローカルに維持されていない前記要求されたデータ・オブジェクト内の範囲のインジケーションを前記サーバに送信することであって、前記サーバは、前記クライアントがローカルに維持していない前記示された範囲を前記クライアントに戻し、前記クライアントは、前記サーバから受信された前記範囲、および、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の前記範囲から、前記要求されたデータ・オブジェクトを再構築する、送信すること、
をさらに含む、請求項3に記載のコンピュータ・プログラム。
【請求項8】
前記サーバによって、前記順次バックアップ・デバイス内に格納された前記範囲の位置を示す範囲情報を維持すること、
前記サーバによって、前記データ・オブジェクト内に含まれる前記範囲を示す要求された各データ・オブジェクトについて、サーバ・データ・オブジェクト情報を生成すること、
前記サーバによって、前記サーバ・データ・オブジェクト情報を前記クライアントに戻すこと、および
前記サーバによって、前記クライアントがローカルに維持していない範囲を決定するために、前記サーバによって使用されるインジケーションを前記クライアントから受信することであって、前記サーバは前記クライアントがローカルに維持していない前記範囲を前記クライアントに戻す、受信すること
をさらに含む、請求項3に記載のコンピュータ・プログラム。
【請求項9】
前記サーバ・データ・オブジェクト情報が複数のデータ・オブジェクトに含まれる前記範囲の複数のインスタンスを示し、前記分類リストが、前記複数の要求されたデータ・オブジェクトに含まれる範囲を含む、各範囲の1つのインスタンスのみを含み、
前記クライアントによって、各範囲について前記範囲を含む各データ・オブジェクトを示すクライアント・データ・オブジェクト情報を生成するために、前記サーバ・データ・オブジェクト情報を使用することであって、前記クライアントによって、前記要求されたデータ・オブジェクトを再構築することは、前記受信された範囲を、前記範囲を含む前記要求されたデータ・オブジェクトに追加するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲は、前記クライアント・データ・オブジェクト情報内に示された前記共通範囲を含む少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、使用すること、
をさらに含む、請求項8に記載のコンピュータ・プログラム。
【請求項10】
クライアントおよび少なくとも1つの順次バックアップ・デバイスと通信する、システムであって、
プロセッサと、
動作を実行するために、前記プロセッサによって実行されるコードを含む、コンピュータ読み取り可能ストレージ媒体と、を備え、前記動作が、
前記少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータの範囲を有するデータ・オブジェクトを格納すること、
前記クライアントから、データ・オブジェクトに関する要求を受信すること、
前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲の分類を有する分類リストを提供すること、
格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、および
前記取り出された範囲を前記クライアントに戻すこと、
を含み、前記クライアントは前記受信された範囲から前記要求されたデータ・オブジェクトを再構築する、システム。
【請求項11】
前記要求されたデータ・オブジェクトが複数の順次バックアップ・デバイス内に格納され、前記順次バックアップ・デバイスのそれぞれについて1つの分類リストを生成するために、前記分類リスト内の前記範囲の分類が、前記要求されたデータ・オブジェクトに関する範囲を含む前記順次バックアップ・デバイスのそれぞれについて実行され、前記取り出すことが、前記順次バックアップ・デバイスに書き込まれた前記順序に従って、前記順次バックアップ・デバイス内の前記範囲に順番にアクセスするために、前記順次バックアップ・デバイスについての前記分類リスト内の前記順序に従って、前記順次バックアップ・デバイスのそれぞれについてのすべての範囲を取り出すことを含む、請求項10に記載のシステム。
【請求項12】
前記順次バックアップ・デバイス内へ前記データ・オブジェクトを格納することが、範囲の1つのインスタンスのみを格納し、前記要求されたデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通範囲を含み、前記戻された範囲が、前記少なくとも2つのデータ・オブジェクトに含まれる前記少なくとも1つの共通範囲の少なくとも1つのインスタンスのみを含む、請求項10に記載のシステム。
【請求項13】
少なくとも1つの順次バックアップ・デバイスと通信するシステムであって、
クライアント・バックアップ・プログラムを有するクライアントと、
サーバ・バックアップ・プログラムを有するサーバと、を備え、前記サーバは前記クライアントと通信し、
前記サーバ・バックアップ・プログラムは、
前記少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータの範囲を有するデータ・オブジェクトを格納すること、
前記クライアントから、データ・オブジェクトに関する要求を受信すること、
前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲の分類を有する分類リストを提供すること、
格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、および
前記取り出された範囲を前記クライアントに戻すこと、
を実行するために実行され、前記クライアントは前記受信された範囲から前記要求されたデータ・オブジェクトを再構築する、システム。
【請求項14】
前記順次バックアップ・デバイス内へ前記データ・オブジェクトを格納することが、範囲の1つのインスタンスのみを格納し、前記要求されたデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通範囲を含み、前記戻された範囲が、前記少なくとも2つのデータ・オブジェクトに含まれる前記少なくとも1つの共通範囲の少なくとも1つのインスタンスのみを含む、請求項13に記載のシステム。
【請求項15】
さらに前記クライアント・バックアップ・プログラムが、前記要求されたデータ・オブジェクトに含まれる範囲のクライアント・データ・オブジェクト情報を維持するために実行され、前記要求されたデータ・オブジェクトを再構築することが、前記受信された範囲を追加する前記データ・オブジェクトを決定するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲が、前記共通範囲を含む前記少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、請求項14に記載のシステム。
【請求項16】
前記クライアント・データ・オブジェクト情報が、データ・オブジェクト内の各範囲について、前記データ・オブジェクト内で前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、各範囲の受信に応答して、
前記範囲が含まれる前記要求されたデータ・オブジェクトのそれぞれの中で、前記受信された範囲の前記少なくとも1つのオフセットを決定すること、
前記受信された範囲を含む各データ・オブジェクトについて、前記受信された範囲を、前記データ・オブジェクト内の前記決定された少なくとも1つのオフセットに追加することであって、範囲は、前記範囲が受信された際にデータ・オブジェクト内に含まれる、追加すること、
を実行することを含む、請求項14に記載のシステム。
【請求項17】
前記クライアント・データ・オブジェクト情報が、前記データ・オブジェクト内の各範囲について、前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、
前記要求されたデータ・オブジェクトについて前記範囲のすべてが使用可能となるまで、前記受信された範囲をバッファリングすること、
前記要求されたデータ・オブジェクト内の前記受信された範囲の前記オフセットを決定すること、および
前記サーバから受信された前記データ・オブジェクトについてすべての前記範囲をバッファリングすることに応答して、前記バッファリングされた受信された範囲を、前記要求されたデータ・オブジェクトのうちの1つの前記決定されたオフセットに追加すること、
を実行することを含む、請求項14に記載のシステム。
【請求項18】
前記クライアント・バックアップ・プログラムが、
前記クライアントによって、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の範囲を決定すること、および、
前記クライアントによって、前記クライアントでローカルに維持されていない前記要求されたデータ・オブジェクト内の範囲のインジケーションを前記サーバに送信することであって、前記サーバは、前記クライアントがローカルに維持していない前記示された範囲を前記クライアントに戻し、前記クライアントは、前記サーバから受信された前記範囲、および、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の前記範囲から、前記要求されたデータ・オブジェクトを再構築する、送信すること、
を実行するためにさらに実行される、請求項14に記載のシステム。
【請求項19】
前記サーバ・バックアップ・プログラムが
前記順次バックアップ・デバイス内に格納された前記範囲の位置を示す範囲情報を維持すること、
前記データ・オブジェクト内に含まれる前記範囲を示す要求された各データ・オブジェクトについて、サーバ・データ・オブジェクト情報を生成すること、
前記サーバ・データ・オブジェクト情報を前記クライアントに戻すこと、および
前記クライアントがローカルに維持していない範囲を決定するために、前記サーバによって使用されるインジケーションを前記クライアントから受信することであって、前記サーバは前記クライアントがローカルに維持していない前記範囲を前記クライアントに戻す、受信すること
を実行するためにさらに実行される、請求項14に記載のシステム。
【請求項20】
前記サーバ・データ・オブジェクト情報が複数のデータ・オブジェクトに含まれる前記範囲の複数のインスタンスを示し、前記分類リストが、前記複数の要求されたデータ・オブジェクトに含まれる範囲を含む、各範囲の1つのインスタンスのみを含み、前記クライアント・バックアップ・プログラムが、
前記クライアントによって、各範囲について前記範囲を含む各データ・オブジェクトを示すクライアント・データ・オブジェクト情報を生成するために、前記サーバ・データ・オブジェクト情報を使用することであって、前記クライアントによって、前記要求されたデータ・オブジェクトを再構築することは、前記受信された範囲を、前記範囲を含む前記要求されたデータ・オブジェクトに追加するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲は、前記クライアント・データ・オブジェクト情報内に示された前記共通範囲を含む少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、使用すること、
を実行するためにさらに実行される、請求項19に記載のシステム。
【請求項21】
データ・オブジェクトを復元するための方法であって、
少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納すること、
クライアントから、データ・オブジェクトに関する要求を受信すること、
前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
分類リストを生成するために、前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲を分類すること、
サーバによって、格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、
前記取り出された範囲を前記クライアントに戻すこと、および
前記受信された範囲から前記要求されたデータ・オブジェクトを再構築すること、
を含む、方法。
【請求項22】
前記要求されたデータ・オブジェクトが複数の順次バックアップ・デバイス内に格納され、前記順次バックアップ・デバイスのそれぞれについて1つの分類リストを生成するために、前記分類リスト内の前記範囲の分類が、前記要求されたデータ・オブジェクトに関する範囲を含む前記順次バックアップ・デバイスのそれぞれについて実行され、前記取り出すことが、前記順次バックアップ・デバイスに書き込まれた前記順序に従って、前記順次バックアップ・デバイス内の前記範囲に順番にアクセスするために、前記順次バックアップ・デバイスについての前記分類リスト内の前記順序に従って、前記順次バックアップ・デバイスのそれぞれについてのすべての範囲を取り出すことを含む、請求項21に記載の方法。
【請求項1】
少なくとも1つの順次バックアップ・デバイスからデータ・オブジェクトを復元するためにクライアントおよびサーバの動作を実行するコンピュータ・プログラムであって、
前記サーバによって、前記少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納すること、
前記サーバによって、前記クライアントから、データ・オブジェクトに関する要求を受信すること、
前記サーバによって、前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
前記サーバまたは前記クライアントによって、分類リストを生成するために、前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲を分類すること、
前記サーバによって、格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、
前記サーバによって、前記取り出された範囲を前記クライアントに戻すこと、および
前記クライアントによって、前記受信された範囲から前記要求されたデータ・オブジェクトを再構築すること、
をコンピュータに実行させるコンピュータ・プログラム。
【請求項2】
前記要求されたデータ・オブジェクトが複数の順次バックアップ・デバイス内に格納され、前記順次バックアップ・デバイスのそれぞれについて1つの分類リストを生成するために、前記分類リスト内の前記範囲の分類が、前記要求されたデータ・オブジェクトに関する範囲を含む前記順次バックアップ・デバイスのそれぞれについて実行され、前記取り出すことが、前記順次バックアップ・デバイスに書き込まれた前記順序に従って、前記順次バックアップ・デバイス内の前記範囲に順番にアクセスするために、前記順次バックアップ・デバイスについての前記分類リスト内の前記順序に従って、前記順次バックアップ・デバイスのそれぞれについてのすべての範囲を取り出すことを含む、請求項1に記載のコンピュータ・プログラム。
【請求項3】
前記順次バックアップ・デバイス内へ前記データ・オブジェクトを格納することが、範囲の1つのインスタンスのみを格納し、前記要求されたデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通範囲を含み、前記戻された範囲が、前記少なくとも2つのデータ・オブジェクトに含まれる前記少なくとも1つの共通範囲の少なくとも1つのインスタンスのみを含む、請求項1に記載のコンピュータ・プログラム。
【請求項4】
前記クライアントによって、前記要求されたデータ・オブジェクトに含まれる範囲のクライアント・データ・オブジェクト情報を維持することをさらに含み、
前記要求されたデータ・オブジェクトを再構築することが、前記受信された範囲を追加する前記データ・オブジェクトを決定するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲が、前記共通範囲を含む前記少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、
請求項3に記載のコンピュータ・プログラム。
【請求項5】
前記クライアント・データ・オブジェクト情報が、データ・オブジェクト内の各範囲について、前記データ・オブジェクト内で前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、各範囲の受信に応答して、
前記範囲が含まれる前記要求されたデータ・オブジェクトのそれぞれの中で、前記受信された範囲の前記少なくとも1つのオフセットを決定すること、
前記受信された範囲を含む各データ・オブジェクトについて、前記受信された範囲を、前記データ・オブジェクト内の前記決定された少なくとも1つのオフセットに追加することであって、範囲は、前記範囲が受信された際にデータ・オブジェクト内に含まれる、追加すること、
を実行することを含む、請求項3に記載のコンピュータ・プログラム。
【請求項6】
前記クライアント・データ・オブジェクト情報が、前記データ・オブジェクト内の各範囲について、前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、
前記要求されたデータ・オブジェクトについて前記範囲のすべてが使用可能となるまで、前記受信された範囲をバッファリングすること、
前記要求されたデータ・オブジェクト内の前記受信された範囲の前記オフセットを決定すること、および
前記サーバから受信された前記データ・オブジェクトについてすべての前記範囲をバッファリングすることに応答して、前記バッファリングされた受信された範囲を、前記要求されたデータ・オブジェクトのうちの1つの前記決定されたオフセットに追加すること、
を実行することを含む、請求項3に記載のコンピュータ・プログラム。
【請求項7】
前記動作が、
前記クライアントによって、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の範囲を決定すること、および、
前記クライアントによって、前記クライアントでローカルに維持されていない前記要求されたデータ・オブジェクト内の範囲のインジケーションを前記サーバに送信することであって、前記サーバは、前記クライアントがローカルに維持していない前記示された範囲を前記クライアントに戻し、前記クライアントは、前記サーバから受信された前記範囲、および、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の前記範囲から、前記要求されたデータ・オブジェクトを再構築する、送信すること、
をさらに含む、請求項3に記載のコンピュータ・プログラム。
【請求項8】
前記サーバによって、前記順次バックアップ・デバイス内に格納された前記範囲の位置を示す範囲情報を維持すること、
前記サーバによって、前記データ・オブジェクト内に含まれる前記範囲を示す要求された各データ・オブジェクトについて、サーバ・データ・オブジェクト情報を生成すること、
前記サーバによって、前記サーバ・データ・オブジェクト情報を前記クライアントに戻すこと、および
前記サーバによって、前記クライアントがローカルに維持していない範囲を決定するために、前記サーバによって使用されるインジケーションを前記クライアントから受信することであって、前記サーバは前記クライアントがローカルに維持していない前記範囲を前記クライアントに戻す、受信すること
をさらに含む、請求項3に記載のコンピュータ・プログラム。
【請求項9】
前記サーバ・データ・オブジェクト情報が複数のデータ・オブジェクトに含まれる前記範囲の複数のインスタンスを示し、前記分類リストが、前記複数の要求されたデータ・オブジェクトに含まれる範囲を含む、各範囲の1つのインスタンスのみを含み、
前記クライアントによって、各範囲について前記範囲を含む各データ・オブジェクトを示すクライアント・データ・オブジェクト情報を生成するために、前記サーバ・データ・オブジェクト情報を使用することであって、前記クライアントによって、前記要求されたデータ・オブジェクトを再構築することは、前記受信された範囲を、前記範囲を含む前記要求されたデータ・オブジェクトに追加するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲は、前記クライアント・データ・オブジェクト情報内に示された前記共通範囲を含む少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、使用すること、
をさらに含む、請求項8に記載のコンピュータ・プログラム。
【請求項10】
クライアントおよび少なくとも1つの順次バックアップ・デバイスと通信する、システムであって、
プロセッサと、
動作を実行するために、前記プロセッサによって実行されるコードを含む、コンピュータ読み取り可能ストレージ媒体と、を備え、前記動作が、
前記少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータの範囲を有するデータ・オブジェクトを格納すること、
前記クライアントから、データ・オブジェクトに関する要求を受信すること、
前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲の分類を有する分類リストを提供すること、
格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、および
前記取り出された範囲を前記クライアントに戻すこと、
を含み、前記クライアントは前記受信された範囲から前記要求されたデータ・オブジェクトを再構築する、システム。
【請求項11】
前記要求されたデータ・オブジェクトが複数の順次バックアップ・デバイス内に格納され、前記順次バックアップ・デバイスのそれぞれについて1つの分類リストを生成するために、前記分類リスト内の前記範囲の分類が、前記要求されたデータ・オブジェクトに関する範囲を含む前記順次バックアップ・デバイスのそれぞれについて実行され、前記取り出すことが、前記順次バックアップ・デバイスに書き込まれた前記順序に従って、前記順次バックアップ・デバイス内の前記範囲に順番にアクセスするために、前記順次バックアップ・デバイスについての前記分類リスト内の前記順序に従って、前記順次バックアップ・デバイスのそれぞれについてのすべての範囲を取り出すことを含む、請求項10に記載のシステム。
【請求項12】
前記順次バックアップ・デバイス内へ前記データ・オブジェクトを格納することが、範囲の1つのインスタンスのみを格納し、前記要求されたデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通範囲を含み、前記戻された範囲が、前記少なくとも2つのデータ・オブジェクトに含まれる前記少なくとも1つの共通範囲の少なくとも1つのインスタンスのみを含む、請求項10に記載のシステム。
【請求項13】
少なくとも1つの順次バックアップ・デバイスと通信するシステムであって、
クライアント・バックアップ・プログラムを有するクライアントと、
サーバ・バックアップ・プログラムを有するサーバと、を備え、前記サーバは前記クライアントと通信し、
前記サーバ・バックアップ・プログラムは、
前記少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータの範囲を有するデータ・オブジェクトを格納すること、
前記クライアントから、データ・オブジェクトに関する要求を受信すること、
前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲の分類を有する分類リストを提供すること、
格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、および
前記取り出された範囲を前記クライアントに戻すこと、
を実行するために実行され、前記クライアントは前記受信された範囲から前記要求されたデータ・オブジェクトを再構築する、システム。
【請求項14】
前記順次バックアップ・デバイス内へ前記データ・オブジェクトを格納することが、範囲の1つのインスタンスのみを格納し、前記要求されたデータ・オブジェクトのうちの少なくとも2つが少なくとも1つの共通範囲を含み、前記戻された範囲が、前記少なくとも2つのデータ・オブジェクトに含まれる前記少なくとも1つの共通範囲の少なくとも1つのインスタンスのみを含む、請求項13に記載のシステム。
【請求項15】
さらに前記クライアント・バックアップ・プログラムが、前記要求されたデータ・オブジェクトに含まれる範囲のクライアント・データ・オブジェクト情報を維持するために実行され、前記要求されたデータ・オブジェクトを再構築することが、前記受信された範囲を追加する前記データ・オブジェクトを決定するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲が、前記共通範囲を含む前記少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、請求項14に記載のシステム。
【請求項16】
前記クライアント・データ・オブジェクト情報が、データ・オブジェクト内の各範囲について、前記データ・オブジェクト内で前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、各範囲の受信に応答して、
前記範囲が含まれる前記要求されたデータ・オブジェクトのそれぞれの中で、前記受信された範囲の前記少なくとも1つのオフセットを決定すること、
前記受信された範囲を含む各データ・オブジェクトについて、前記受信された範囲を、前記データ・オブジェクト内の前記決定された少なくとも1つのオフセットに追加することであって、範囲は、前記範囲が受信された際にデータ・オブジェクト内に含まれる、追加すること、
を実行することを含む、請求項14に記載のシステム。
【請求項17】
前記クライアント・データ・オブジェクト情報が、前記データ・オブジェクト内の各範囲について、前記範囲が位置する前記データ・オブジェクト内の少なくとも1つのオフセットを示し、前記データ・オブジェクト内の各範囲が前記データ・オブジェクト内の1つまたは複数のオフセットで発生可能であり、前記要求されたデータ・オブジェクトの再構築が、
前記要求されたデータ・オブジェクトについて前記範囲のすべてが使用可能となるまで、前記受信された範囲をバッファリングすること、
前記要求されたデータ・オブジェクト内の前記受信された範囲の前記オフセットを決定すること、および
前記サーバから受信された前記データ・オブジェクトについてすべての前記範囲をバッファリングすることに応答して、前記バッファリングされた受信された範囲を、前記要求されたデータ・オブジェクトのうちの1つの前記決定されたオフセットに追加すること、
を実行することを含む、請求項14に記載のシステム。
【請求項18】
前記クライアント・バックアップ・プログラムが、
前記クライアントによって、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の範囲を決定すること、および、
前記クライアントによって、前記クライアントでローカルに維持されていない前記要求されたデータ・オブジェクト内の範囲のインジケーションを前記サーバに送信することであって、前記サーバは、前記クライアントがローカルに維持していない前記示された範囲を前記クライアントに戻し、前記クライアントは、前記サーバから受信された前記範囲、および、前記クライアントでローカルに維持されている前記要求されたデータ・オブジェクト内の前記範囲から、前記要求されたデータ・オブジェクトを再構築する、送信すること、
を実行するためにさらに実行される、請求項14に記載のシステム。
【請求項19】
前記サーバ・バックアップ・プログラムが
前記順次バックアップ・デバイス内に格納された前記範囲の位置を示す範囲情報を維持すること、
前記データ・オブジェクト内に含まれる前記範囲を示す要求された各データ・オブジェクトについて、サーバ・データ・オブジェクト情報を生成すること、
前記サーバ・データ・オブジェクト情報を前記クライアントに戻すこと、および
前記クライアントがローカルに維持していない範囲を決定するために、前記サーバによって使用されるインジケーションを前記クライアントから受信することであって、前記サーバは前記クライアントがローカルに維持していない前記範囲を前記クライアントに戻す、受信すること
を実行するためにさらに実行される、請求項14に記載のシステム。
【請求項20】
前記サーバ・データ・オブジェクト情報が複数のデータ・オブジェクトに含まれる前記範囲の複数のインスタンスを示し、前記分類リストが、前記複数の要求されたデータ・オブジェクトに含まれる範囲を含む、各範囲の1つのインスタンスのみを含み、前記クライアント・バックアップ・プログラムが、
前記クライアントによって、各範囲について前記範囲を含む各データ・オブジェクトを示すクライアント・データ・オブジェクト情報を生成するために、前記サーバ・データ・オブジェクト情報を使用することであって、前記クライアントによって、前記要求されたデータ・オブジェクトを再構築することは、前記受信された範囲を、前記範囲を含む前記要求されたデータ・オブジェクトに追加するために、前記クライアント・データ・オブジェクト情報を使用することを含み、前記少なくとも1つの共通範囲は、前記クライアント・データ・オブジェクト情報内に示された前記共通範囲を含む少なくとも2つのデータ・オブジェクトのそれぞれに含まれる、使用すること、
を実行するためにさらに実行される、請求項19に記載のシステム。
【請求項21】
データ・オブジェクトを復元するための方法であって、
少なくとも1つの順次バックアップ・デバイス内に重複排除されたデータを有する範囲のデータ・オブジェクトを格納すること、
クライアントから、データ・オブジェクトに関する要求を受信すること、
前記要求されたデータ・オブジェクトに関する前記少なくとも1つの順次バックアップ・デバイス内に格納された範囲を決定すること、
分類リストを生成するために、前記少なくとも1つの順次バックアップ・デバイス内に格納された順序に従って、前記範囲を分類すること、
サーバによって、格納された前記順序で前記順次バックアップ・デバイスから順番に前記範囲にアクセスするための前記分類リスト内の前記順序に従って、前記少なくとも1つの順次バックアップ・デバイスから前記範囲を取り出すこと、
前記取り出された範囲を前記クライアントに戻すこと、および
前記受信された範囲から前記要求されたデータ・オブジェクトを再構築すること、
を含む、方法。
【請求項22】
前記要求されたデータ・オブジェクトが複数の順次バックアップ・デバイス内に格納され、前記順次バックアップ・デバイスのそれぞれについて1つの分類リストを生成するために、前記分類リスト内の前記範囲の分類が、前記要求されたデータ・オブジェクトに関する範囲を含む前記順次バックアップ・デバイスのそれぞれについて実行され、前記取り出すことが、前記順次バックアップ・デバイスに書き込まれた前記順序に従って、前記順次バックアップ・デバイス内の前記範囲に順番にアクセスするために、前記順次バックアップ・デバイスについての前記分類リスト内の前記順序に従って、前記順次バックアップ・デバイスのそれぞれについてのすべての範囲を取り出すことを含む、請求項21に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−133769(P2012−133769A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2011−259576(P2011−259576)
【出願日】平成23年11月28日(2011.11.28)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願日】平成23年11月28日(2011.11.28)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
[ Back to top ]