(57)【特許請求の範囲】
【請求項１】
リポジトリにおいてソース・データを維持するための方法であって、
前記リポジトリにおいて、前記ソース・データのフル・コピーと、前記ソース・データの異なるポイント・イン・タイムにおけるポイント・イン・タイム・コピーとを維持することであって、前記ポイント・イン・タイム・コピーのそれぞれが、そのポイント・イン・タイム・コピーの前記ポイント・イン・タイムと後のポイント・イン・タイムとの間に変化した前記ソース・データにおける変化したデータを示す変化情報と、前記変化情報において変化したとして示されている前記ポイント・イン・タイム・コピーの前記ポイント・イン・タイムでの前記ソース・データにおけるデータを備えた変化したポイント・イン・タイム・データとを有する、前記維持することと、
前記リポジトリにおける前記ポイント・イン・タイム・コピーのうちの少なくとも２つの選択されたポイント・イン・タイム・コピーを、
前記マージされたポイント・イン・タイム・コピーのためのマージされたポイント・イン・タイムを前記選択されたポイント・イン・タイム・コピーの１つのポイント・イン・タイム・コピーに設定することと、
前記少なくとも２つの選択されたポイント・イン・タイム・コピーに対する変化情報において示されている変化したデータを示すマージされた変化情報を、前記マージされたポイント・イン・タイム・コピーにおいて形成することと、
前記少なくとも２つの選択されたポイント・イン・タイム・コピーにおける前記変化したデータから、マージされた変化したデータを、前記マージされたポイント・イン・タイム・コピーにおいて形成することであって、前記選択されたポイント・イン・タイム・コピーの多数が前記データ・ブロックのための変化データを含む時に、前記マージされたポイント・イン・タイムを有する前記選択されたポイント・イン・タイム・コピーからの変化したデータを含む、前記マージされたポイント・イン・タイム・コピーにおいて形成することと、
によって、前記リポジトリにおけるマージされたポイント・イン・タイム・コピーにマージすることと、
前記マージされたポイント・イン・タイム・コピーを前記リポジトリに保管することであって、前記リポジトリは、前記少なくとも２つの選択されたポイント・イン・タイム・コピーの前記マージからもたらされ、前記マージされたポイント・イン・タイム、前記マージされた変化情報、前記マージされた変化されたデータを含み、前記マージされたポイント・イン・タイム・コピー中の前記少なくとも２つの選択されたポイント・イン・タイム・コピーからポイント・イン・タイム・コピー情報を統合し、前記マージされたポイント・イン・タイム・コピーを前記リポジトリに保管することと、
前記リポジトリ内に前記マージされたポイント・イン・タイム・コピーを使用して、前記ソース・データを前記マージされたポイント・イン・タイム・コピーの１つのポイント・イン・タイムに保管することと、
を含む、方法。
【請求項２】
前記マージされた変化したデータを復元コピーに適用して、前記復元コピーを、マージするための前記選択されたポイント・イン・タイム・コピーの１つのポイント・イン・タイムにおいて一貫性を有するようにすることをさらに備える、請求項１に記載の方法。
【請求項３】
前記ポイント・イン・タイム・コピーを凍結するかまたは後のポイント・イン・タイム・コピーを作成するかの少なくとも一方に応答して、前記ポイント・イン・タイム・コピーの１つが完了される、請求項１または２に記載の方法。
【請求項４】
前記ポイント・イン・タイム・コピーと前記マージされたポイント・イン・タイム・コピーとが、ポイント・イン・タイム・コピー・プログラムによって生成され、前記ポイント・イン・タイム・コピー・プログラムとは別個に実行されるリポジトリ・コピー・プログラムが、前記選択されたポイント・イン・タイム・コピーをマージすることを実行する、請求項１ないし３のいずれかに記載の方法。
【請求項５】
前記マージされた変化情報を形成することが、前記選択されたポイント・イン・タイム・コピーの１つに対する前記変化情報がデータ・ブロックが変化したデータを有することを示す場合に、前記マージされた変化情報において前記データ・ブロックが変化したデータを有することを示すことを含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
各データ・ブロックに対して前記マージされた変化したデータを形成することが、
前記選択されたポイント・イン・タイム・コピーの少なくとも１つが、前記データ・ブロックに対して、変化したデータを提供するかどうかを判断することと、
前記データ・ブロックに対して、変化したデータを提供する場合に、前記選択されたポイント・イン・タイム・コピーの１つのみが、前記判断された選択されたポイント・イン・タイム・コピーからの前記変化したデータを含むことと、
前記選択されたポイント・イン・タイム・コピーの複数が、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーの１つからの前記変化したデータを含むことと、
を含む、請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記リポジトリにおいて前記マージされたポイント・イン・タイム・コピーを形成することに応答して、前記選択されたポイント・イン・タイム・コピーを前記リポジトリから取り除くことをさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記フル・コピーが、前記ポイント・イン・タイム・コピーのうちの直近のポイント・イン・タイムにおけるデータを含み、前記ポイント・イン・タイム・コピーが、前記フル・コピーを、前記フル・コピーの前記ポイント・イン・タイム・コピーよりも前のポイント・イン・タイムに復元するのに用いられ、各データ・ブロックに対して前記マージされた変化したデータを形成することが、
前記選択されたポイント・イン・タイム・コピーの少なくとも１つが、前記データ・ブロックに対して、変化したデータを提供するかどうかを判断することと、
前記選択されたポイント・イン・タイム・コピーの１つのみが、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーからの前記変化したデータを含むことと、
前記選択されたポイント・イン・タイム・コピーの複数が、前記データ・ブロックに対して、変化したデータを提供するときには、前記選択されたポイント・イン・タイム・コピーの最先のポイント・イン・タイムに対するデータを有する、前記判断された選択されたポイント・イン・タイム・コピーの１つからの前記変化したデータを含むことと、
を含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記ポイント・イン・タイム・コピーのそれぞれを完了することに応答して、前記フル・コピーを、前記後のポイント・イン・タイムにおいて最新にするために、前記後のポイント・イン・タイムにおける前記ソース・ストレージにおける前記データを前記フル・コピーに送信することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記フル・コピーが、最初のポイント・イン・タイムにおけるデータを含み、前記ポイント・イン・タイム・コピーが、前記フル・コピーを、前記フル・コピーの前記ポイント・イン・タイムよりも後のポイント・イン・タイムに復元するのに用いられ、各データ・ブロックに対して前記マージされた変化したデータを形成することが、
前記選択されたポイント・イン・タイム・コピーの少なくとも１つが、前記データ・ブロックに対して、変化したデータを提供するかどうかを判断することと、
前記選択されたポイント・イン・タイム・コピーの１つのみが、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーからの前記変化したデータを含むことと、
前記選択されたポイント・イン・タイム・コピーの複数が、前記データ・ブロックに対して、変化したデータを提供するときには、前記選択されたポイント・イン・タイム・コピーの直近のポイント・イン・タイムに対するデータを有する、前記判断された選択されたポイント・イン・タイム・コピーの１つからの前記変化したデータを含むことと、
を含む、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
リポジトリにおいてソース・データを維持するためのシステムであって、
プロセッサと、
コンピュータ可読ストレージ媒体と、
を備え、前記コンピュータ可読ストレージ媒体がコンピュータ・プログラム・コードを含み、前記コンピュータ・プログラム・コードが、前記プロセッサによって実行されると動作を実行し、前記動作が、
前記リポジトリにおいて、前記ソース・データのフル・コピーと、前記ソース・データの異なるポイント・イン・タイムにおけるポイント・イン・タイム・コピーとを維持することであって、前記ポイント・イン・タイム・コピーのそれぞれが、そのポイント・イン・タイム・コピーの前記ポイント・イン・タイムと後のポイント・イン・タイムとの間に変化した前記ソース・データにおける変化したデータを示す変化情報と、前記変化情報において変化したとして示されている前記ポイント・イン・タイム・コピーの前記ポイント・イン・タイムでの前記ソース・データにおけるデータを備えた変化したポイント・イン・タイム・データとを有する、前記維持することと、
前記リポジトリにおける前記ポイント・イン・タイム・コピーのうちの少なくとも２つの選択されたポイント・イン・タイム・コピーを、
前記マージされたポイント・イン・タイム・コピーのためのマージされたポイント・イン・タイムを前記選択されたポイント・イン・タイム・コピーの１つのポイント・イン・タイム・コピーに設定することと、
前記少なくとも２つの選択されたポイント・イン・タイム・コピーに対する変化情報において示されている変化したデータを示すマージされた変化情報を、前記マージされたポイント・イン・タイム・コピーにおいて形成することと、
前記少なくとも２つの選択されたポイント・イン・タイム・コピーにおける前記変化したデータから、マージされた変化したデータを、前記マージされたポイント・イン・タイム・コピーにおいて形成することであって、前記選択されたポイント・イン・タイム・コピーの多数が前記データ・ブロックのための変化データを含む時に、前記マージされたポイント・イン・タイムを有する前記選択されたポイント・イン・タイム・コピーからの変化したデータを含む、前記マージされたポイント・イン・タイム・コピーにおいて形成することと、
によって、前記リポジトリにおけるマージされたポイント・イン・タイム・コピーにマージすることと、
前記マージされたポイント・イン・タイム・コピーを前記リポジトリに保管することであって、前記リポジトリは、前記少なくとも２つの選択されたポイント・イン・タイム・コピーの前記マージからもたらされ、前記マージされたポイント・イン・タイム、前記マージされた変化情報、前記マージされた変化されたデータを含み、前記マージされたポイント・イン・タイム・コピー中の前記少なくとも２つの選択されたポイント・イン・タイム・コピーからポイント・イン・タイム・コピー情報を統合し、前記マージされたポイント・イン・タイム・コピーを前記リポジトリに保管することと、
前記リポジトリ内に前記マージされたポイント・イン・タイム・コピーを使用して、前記ソース・データを前記マージされたポイント・イン・タイム・コピーの１つのポイント・イン・タイムに保管することと、
を備える、システム。
【請求項１２】
前記マージされた変化したデータを復元コピーに適用して、前記復元コピーを、マージするための前記選択されたポイント・イン・タイム・コピーの１つのポイント・イン・タイムにおいて一貫性を有するようにすることをさらに備える、請求項１１に記載のシステム。
【請求項１３】
前記ポイント・イン・タイム・コピーを凍結するかまたは後のポイント・イン・タイム・コピーを作成するかの少なくとも一方に応答して、前記ポイント・イン・タイム・コピーの１つが完了される、請求項１１または１２に記載のシステム。
【請求項１４】
前記ポイント・イン・タイム・コピーと前記マージされたポイント・イン・タイム・コピーとが、ポイント・イン・タイム・コピー・プログラムによって生成され、前記ポイント・イン・タイム・コピー・プログラムとは別個に実行されるリポジトリ・コピー・プログラムが、前記選択されたポイント・イン・タイム・コピーをマージすることを実行する、請求項１１ないし１３のいずれかに記載のシステム。
【請求項１５】
前記マージされた変化情報を前記形成することが、前記選択されたポイント・イン・タイム・コピーの１つに対する前記変化情報が、変化したデータをデータ・ブロックが有することを示すときには、前記マージされた変化情報において、変化したデータを前記データ・ブロックが有することを示すことを備える、請求項１１ないし１４のいずれかに記載のシステム。
【請求項１６】
各データ・ブロックに対して前記マージされた変化したデータを前記形成することが、
前記選択されたポイント・イン・タイム・コピーの少なくとも１つが、前記データ・ブロックに対して、変化したデータを提供するかどうかを判断することと、
前記選択されたポイント・イン・タイム・コピーの１つのみが、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーからの前記変化したデータを含むことと、
前記選択されたポイント・イン・タイム・コピーの複数が、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーの１つからの前記変化したデータを含むことと、
を備える、請求項１１ないし１５のいずれかに記載のシステム。
【請求項１７】
前記リポジトリにおいて前記マージされたポイント・イン・タイム・コピーを形成することに応答して、前記選択されたポイント・イン・タイム・コピーを前記リポジトリから取り除くことをさらに備える、請求項１１ないし１６のいずれかに記載のシステム。
【請求項１８】
前記フル・コピーが、前記ポイント・イン・タイム・コピーのうちの直近のポイント・イン・タイムにおけるデータを含み、前記ポイント・イン・タイム・コピーが、前記フル・コピーを、前記フル・コピーの前記ポイント・イン・タイムよりも前のポイント・イン・タイムに復元するのに用いられ、各データ・ブロックに対して前記マージされた変化したデータを前記形成することが、
前記選択されたポイント・イン・タイム・コピーの少なくとも１つが、前記データ・ブロックに対して、変化したデータを提供するかどうかを判断することと、
前記選択されたポイント・イン・タイム・コピーの１つのみが、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーからの前記変化したデータを含むことと、
前記選択されたポイント・イン・タイム・コピーの複数が、前記データ・ブロックに対して、変化したデータを提供するときには、前記選択されたポイント・イン・タイム・コピーの最先のポイント・イン・タイムに対するデータを有する、前記判断された選択されたポイント・イン・タイム・コピーの１つからの前記変化したデータを含むことと、
を備える、請求項１１ないし１７のいずれかに記載のシステム。
【請求項１９】
前記ポイント・イン・タイム・コピーのそれぞれを完了することに応答して、前記フル・コピーを、前記後のポイント・イン・タイムにおいて最新にするために、前記後のポイント・イン・タイムにおける前記ソース・ストレージにおける前記データを前記フル・コピーに送信することをさらに備える、請求項１８に記載のシステム。
【請求項２０】
前記フル・コピーが、最初のポイント・イン・タイムにおけるデータを含み、前記ポイント・イン・タイム・コピーが、前記フル・コピーを、前記フル・コピーの前記ポイント・イン・タイムよりも後のポイント・イン・タイムに復元するのに用いられ、各データ・ブロックに対して前記マージされた変化したデータを前記形成することが、
前記選択されたポイント・イン・タイム・コピーの少なくとも１つが、前記データ・ブロックに対して、変化したデータを提供するかどうかを判断することと、
前記選択されたポイント・イン・タイム・コピーの１つのみが、前記データ・ブロックに対して、変化したデータを提供するときには、前記判断された選択されたポイント・イン・タイム・コピーからの前記変化したデータを含むことと、
前記選択されたポイント・イン・タイム・コピーの複数が、前記データ・ブロックに対して、変化したデータを提供するときには、前記選択されたポイント・イン・タイム・コピーの直近のポイント・イン・タイムに対するデータを有する、前記判断された選択されたポイント・イン・タイム・コピーの１つからの前記変化したデータを含むことと、
を備える、請求項１１ないし１９のいずれかに記載のシステム。
【請求項２１】
リポジトリにおいてソース・データを維持するためのコンピュータ・プログラムであって、処理回路によって可読であり、請求項１ないし１０のいずれかに記載の方法を実行するように前記処理回路によって実行される命令を記憶するコンピュータ可読ストレージ媒体を備える、コンピュータ・プログラム。
【請求項２２】
デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で動作すると、請求項１ないし１０のいずれかに記載の方法を実行するソフトウェア・コード部分を備える、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のポイント・イン・タイム・コピーをマージされたポイント・イン・タイム・コピーにマージするためのコンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【０００２】
ストレージ環境において、ストレージ・コントローラは、ＩＢＭ（Ｒ）ＦＬａｓｈＣｏｐｙ（Ｒ）、スナップショットのようなポイント・イン・タイム・コピー技術を用いて、生産ボリュームのポイント・イン・タイム（「ＰｉＴ」）コピーを作成し得る。ＩＢＭ（Ｒ）とＦＬａｓｈＣｏｐｙ（Ｒ）とは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標であり、世界中の多くの裁判管轄地において登録されている。ポイント・イン・タイム・コピーは、瞬間的であるように見える態様であって、コピー・ボリュームへの実際のデータ転送が後の時刻まで延期されている間、ホストがソース・ボリュームにアクセスし続けることを可能にする態様で、データを複製する。ポイント・イン・タイム・コピーが瞬間的であるように見える理由は、データをソースからターゲット・ボリュームにコピーすることなく関係データ構造を生成することに応答して、コピー・オペレーションに「完了」が戻されるからである。典型的には、ポイント・イン・タイム・コピー技術は、ポイント・イン・タイム・コピー関係がコピー・ターゲット・ボリュームに確立された時点でのソース・ボリュームにおけるデータの転送を、ソース・ボリューム上でそのデータ・ブロックへ書き込み動作が要求されるまで延期する。また、データ転送は、システム・パフォーマンスに対するインパクトが最小になるように、バックグラウンド・コピー・プロセスとして進行し得る。ポイント・イン・タイム・コピー・コマンドに応答して直ちに確立されるポイント・イン・タイム・コピー関係は、ソース・ボリュームまたはコピー・ボリュームのいずれかにおいて、ボリュームにおけるブロックの位置を示すビットマップまたは他のデータ構造を含む。ポイント・イン・タイム・コピーは、ソース・ボリュームにおけるデータと、ターゲット・ボリュームに転送される更新によって上書きされるデータとの組合せを備えている。
【０００３】
ポイント・イン・タイム・コピー関係に含まれるソース・ボリュームにおけるブロックへの更新が受け取られると、そのトラックのための新たなデータがソース・ボリュームに書き込まれ、そのデータのポイント・イン・タイム・コピーを上書きする前に、そのポイント・イン・タイムにおけるトラックのコピーが、サイド・ファイルまたはターゲット・ボリュームにコピーされなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、この技術分野には、上述の問題に対処する必要性が存在する。
【課題を解決するための手段】
【０００５】
さらなる態様から概観すると、本発明は、リポジトリにおいてソース・データを維持するための方法であって、リポジトリにおいて、ソース・データのフル・コピーと、ソース・データの異なるポイント・イン・タイムにおけるポイント・イン・タイム・コピーとを維持することであって、ポイント・イン・タイム・コピーのそれぞれが、ポイント・イン・タイム・コピーのポイント・イン・タイムと後のポイント・イン・タイムとの間に変化したソース・データにおける変化したデータを示す変化情報と、変化情報において変化したとして示されているポイント・イン・タイム・コピーのポイント・イン・タイムでのソース・データにおけるデータを備えた変化したポイント・イン・タイム・データとを有する、維持することと、リポジトリにおけるポイント・イン・タイム・コピーのうちの少なくとも２つの選択されたポイント・イン・タイム・コピーを、選択されたポイント・イン・タイム・コピーに対する変化情報において示されている変化したデータを示すマージされた変化情報を、マージされたポイント・イン・タイム・コピーにおいて形成すること、および選択されたポイント・イン・タイム・コピーにおける変化したデータから、マージされた変化したデータを、マージされたポイント・イン・タイム・コピーにおいて形成することとによって、リポジトリにおけるマージされたポイント・イン・タイム・コピーにマージすることと、を含む方法を提供する。
【０００６】
さらなる態様から概観すると、本発明は、リポジトリにおいてソース・データを維持するためのシステムであって、プロセッサと、コンピュータ可読ストレージ媒体と、を備え、コンピュータ可読ストレージ媒体がコンピュータ・プログラム・コードを含み、コンピュータ・プログラム・コードが、プロセッサによって実行されると動作を実行し、動作が、リポジトリにおいて、ソース・データのフル・コピーと、ソース・データの異なるポイント・イン・タイムにおけるポイント・イン・タイム・コピーとを維持することであって、ポイント・イン・タイム・コピーのそれぞれが、ポイント・イン・タイム・コピーのポイント・イン・タイムと後のポイント・イン・タイムとの間に変化したソース・データにおける変化したデータを示す変化情報と、変化情報において変化したとして示されているポイント・イン・タイム・コピーのポイント・イン・タイムでのソース・データにおけるデータを備えた変化したポイント・イン・タイム・データとを有する、維持することと、リポジトリにおけるポイント・イン・タイム・コピーのうちの少なくとも２つの選択されたポイント・イン・タイム・コピーを、選択されたポイント・イン・タイム・コピーに対する変化情報において示されている変化したデータを示すマージされた変化情報を、マージされたポイント・イン・タイム・コピーにおいて形成すること、および選択されたポイント・イン・タイム・コピーにおける変化したデータから、マージされた変化したデータを、マージされたポイント・イン・タイム・コピーにおいて形成すること、によって、リポジトリにおけるマージされたポイント・イン・タイム・コピーにマージすることと、を備える、システムを提供する。
【０００７】
さらなる態様から概観すると、本発明は、リポジトリにおいてソース・データを維持するためのコンピュータ・プログラム製品であって、処理回路によって可読であり、本発明のステップを実行するための方法を実行するように処理回路によって実行される命令を記憶するコンピュータ可読ストレージ媒体を備える、コンピュータ・プログラム製品を提供する。
【０００８】
さらなる態様から概観すると、本発明は、コンピュータ可読媒体上に記憶されておりデジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、コンピュータ上で動作すると、本発明のステップを実行するソフトウェア・コード部分を備えるコンピュータ・プログラムを提供する。
【０００９】
複数のポイント・イン・タイム・コピーを１つのマージされたポイント・イン・タイム・コピーにマージするためのコンピュータ・プログラム製品、システム、および方法が提供される。リポジトリは、ソース・データのフル・コピーと、ソース・データのポイント・イン・タイムにおけるポイント・イン・タイム・コピーとを維持する。ポイント・イン・タイム・コピーのそれぞれが、ポイント・イン・タイム・コピーのポイント・イン・タイムと後のポイント・イン・タイムとの間に変化したソース・データにおける変化したデータを示す変化情報と、変化情報において変化したとして示されているポイント・イン・タイム・コピーのポイント・イン・タイムでのソース・データにおけるデータを備えた変化したポイント・イン・タイム・データとを有する。リポジトリにおけるポイント・イン・タイム・コピーのうちの少なくとも２つの選択されたポイント・イン・タイム・コピーが、選択されたポイント・イン・タイム・コピーに対する変化情報において示されている変化したデータを示すマージされた変化情報を、マージされたポイント・イン・タイム・コピーにおいて形成すること、および選択されたポイント・イン・タイム・コピーにおける変化したデータから、マージされた変化したデータを、マージされたポイント・イン・タイム・コピーにおいて形成することとによって、マージされたポイント・イン・タイム・コピーにマージされる。
【００１０】
次に、本発明が、単なる例示により、次の図面に図解されている好適な実施形態を参照して、説明される。
【図面の簡単な説明】
【００１１】
【図１】本発明の好適な実施形態によるストレージ環境の実施形態の図である。
【図２】本発明の好適な実施形態によるポイント・イン・タイム・コピー情報の実施形態の図である。
【図３】本発明の好適な実施形態によるフル・コピー情報の実施形態の図である。
【図４】本発明の好適な実施形態による、ソース・データと、異なるポイント・イン・タイムにおけるソース・データのポイント・イン・タイム情報とを有するリポジトリを作成する動作の実施形態の図である。
【図５】本発明の好適な実施形態による、ソース・データのポイント・イン・タイム・コピーをリポジトリから復元する動作の実施形態の図である。
【図６】本発明の好適な実施形態による、ソース・データと異なるポイント・イン・タイムにおけるリポジトリとの状態の例の図である。
【図７】本発明の好適な実施形態による、ソース・データと異なるポイント・イン・タイムにおけるリポジトリとの状態の例の図である。
【図８】本発明の好適な実施形態による、ソース・データと異なるポイント・イン・タイムにおけるリポジトリとの状態の例の図である。
【図９】本発明の好適な実施形態による、異なるポイント・イン・タイムへのソース・データの復元の図である。
【図１０】本発明の好適な実施形態による、異なるポイント・イン・タイムへのソース・データの復元の図である。
【図１１】本発明の好適な実施形態による、異なるポイント・イン・タイムへのソース・データの復元の図である。
【図１２】本発明の好適な実施形態による、ソース・データと、異なるポイント・イン・タイムにおけるソース・データのポイント・イン・タイム情報とを有するリポジトリを作成する動作の実施形態の図である。
【図１３】本発明の好適な実施形態による、ソース・データのポイント・イン・タイム・コピーをリポジトリから復元する動作の実施形態の図である。
【図１４】本発明の好適な実施形態による、リポジトリにおけるポイント・イン・タイム・コピーをマージする動作の実施形態の図である。
【図１５】従来技術により図１のコンポーネントが実装され得る、そして、本発明の好適な実施形態が実装され得る、コンピューティング環境の図である。
【発明を実施するための形態】
【００１２】
説明される実施形態は、異なるポイント・イン・タイムにおいてリポジトリからソース・データが復元されることを可能にするために、ソース・データのフル・コピーとソース・データのポイント・イン・タイム・コピーとを維持するリポジトリを作成するための技術を提供する。説明される実施形態を用いると、リポジトリにおけるポイント・イン・タイム・コピーのうちの複数の選択されたポイント・イン・タイム・コピーが、いくつかの記憶されたポイント・イン・タイム・コピーを統合するために、マージされ得る。さらに、説明される実施形態を用いると、リポジトリにおいてポイント・イン・タイム・コピー情報を維持し、復元動作を実行し、ポイント・イン・タイム・コピーのマージ動作を実行する動作が、ソース・データからポイント・イン・タイム・コピーを作成するストレージ・コントローラ・ロジックとは別個のプログラム・コンポーネントによって実行され得ることにより、リポジトリが、ストレージ・コントローラとは別個に、維持され、用いられ、管理される。
【００１３】
図１は、異なるホスト・システムによって用いられる生産ボリュームなど、ソース・データ１０４を含む第１のストレージ１０２へのアクセスを管理するストレージ・コントローラ１００を有するデータ・ストレージ環境に関する実施形態を図解している。ホスト１０６は、第２のストレージ１１２におけるリポジトリ１１０へのソース・データ１０４のコピーを管理する、リポジトリ・コピー・マネジャ・プログラム１０８を含む。ストレージ・コントローラ１００と、ホスト１０６と、第２のストレージ１１２とは、ネットワーク１１４を介して通信し得る。
【００１４】
ストレージ・コントローラ１００は、たとえば、ＦｌａｓｈＣｏｐｙ、ｓｎａｐｓｈｏｔなど、ソース・データ１０４のポイント・イン・タイム・コピーを作成する、ポイント・イン・タイム（「ＰｉＴ」）コピー・マネジャ１１６を含む。ＰｉＴコピーを作成するときには、ＰｉＴコピー・マネジャ１１６が、あるポイント・イン・タイムに作成されるＰｉＴコピーに関するＰｉＴコピー情報２００ａを生成する。ストレージ・コントローラ１００は、さらに、ソース・データ１０４への入力／出力（「Ｉ／Ｏ」）リクエストを管理するコードおよびロジックを含む、オペレーティング・システム１１８を含む。オペレーティング・システム１１８は、ソース・データ１０４を１つまたは複数のボリュームに構成し得るのであって、データは、トラック、論理ブロック・アドレス（ＬＢＡ）、エクステントなどのデータ・ユニットに、記憶される。ＰｉＴコピー・マネジャ１１６は、オペレーティング・システム１１８が供給されたコピー・サービスであり得る。
【００１５】
ストレージ１０２および１１２は、トラックを、独立ディスクの冗長アレイ（ＲＡＩＤ）構成に記憶し得るのであるが、ＲＡＩＤでは、トラックのストライドがストレージ１０２および１１２を備えた複数のストレージ・デバイスを横断して書き込まれる。ストレージ１０２および１１２は、それぞれが、たとえば、ストレージ・デバイスがハード・ディスク・ドライブを備え得る相互接続されたストレージ・デバイス、ＥＥＰＲＯＭ（電気的に消去可能なプログラマブル・リード・オンリ・メモリ）、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）ドライブ、ストレージ・クラス・メモリ（ＳＣＭ）などのソリッド・ステート電子装置から構成されるソリッド・ステート・ストレージ・デバイス（ＳＳＤ）、磁気ストレージ・ディスク、光ディスク、テープなど、この技術分野において知られている１つまたは複数のストレージ・デバイスを備え得る。
【００１６】
ネットワーク１１４は、１つまたは複数の相互接続されたローカル・エリア・ネットワーク（ＬＡＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、ピア・ツー・ピア・ネットワーク、ワイヤレス・ネットワークなどのネットワークを備え得る。
【００１７】
ＰｉＴコピー・マネジャ１１６は、データを複製するＰｉＴコピー動作を実行するのであるが、このＰｉＴコピー動作は、瞬間的であるように見える態様であって、コピー・ボリュームへの実際のデータ転送が後の時刻まで延期されている間、プロセスがソース・ボリュームにアクセスし続けることを可能にする態様で、なされる。ポイント・イン・タイム・コピーが瞬間的であるように見える理由は、データをコピーすることなく関係データ構造を生成することに応答して、コピー動作に「完了」が戻されるからである。
【００１８】
リポジトリ・コピー・マネジャ１０８は、リポジトリ１１０においてソース・データ１０４のフル・コピー１２０を作成し得るのであって、リポジトリＰｉＴコピー情報２００ｂとしてリポジトリ１１０に記憶するために、ストレージ・コントローラ１００におけるＰｉＴコピー情報２００ａをリポジトリ１１０にコピーする。リポジトリ・コピー・マネジャ１０８は、フル・コピー１２０の作成を管理するのに用いられるフル・コピー情報３００を維持する。このように、リポジトリ・コピー・マネジャ１０８は、別個のストレージ１１２に、ソース・データ１０４の別個のフル・コピーと、ソース・データ１０４のＰｉＴコピー情報２００ｂとを維持することにより、第１のストレージ１０２におけるソース・データ１０４およびストレージ・コントローラ１００におけるＰｉＴコピー情報２００ａとは独立に、異なるポイント・イン・タイムに復元され得る。こうして、リポジトリ１１０は、ソース・データ１０４の独立の復元を許容することによって、ストレージ・コントローラ１００または第１のストレージ１０２における故障から保護するために、ストレージ・コントローラ１００とは独立に冗長で安全なバックアップを提供する。
【００１９】
特定の実施形態では、リポジトリ１１０の作成および管理は、ＰｉＴコピーを作成するＰｉＴコピー・マネジャ１１６など、ストレージ・コントローラ１００のプログラムとは別個のリポジトリ・コピー・マネジャ１０８によって、管理される。リポジトリ・コピー・マネジャ１０８は、異なるポイント・イン・タイムにおいて復元コピー１２４を作成するために、リポジトリＰｉＴコピー情報２００ｂとフル・コピー１２０とを用い得る。フル・コピー１２０は、直近のポイント・イン・タイムにおけるデータを含むが、フル・コピー１２０の現在のポイント・イン・タイムよりも先行することがあり得る復元ポイント・イン・タイムにデータベースをロールバックするために、復元の間に、リポジトリＰｉＴコピー情報２００ｂからのデータを用いて上書きされることがあり得る。
【００２０】
別の実施形態では、リポジトリ・コピー・マネジャ１０８、フル・コピー情報３００、またはリポジトリ１１０あるいはこれらすべてが、ストレージ・コントローラ１００上で維持されることがあり得る。
【００２１】
図２は、ストレージ・コントローラのＰｉＴコピー情報２００ａとリポジトリのＰｉＴコピー情報２００ｂとのために維持される情報を備え得るＰｉＴコピー情報２００ｉの一例を図解している。ストレージ・コントローラ２００ａとリポジトリ２００ｂとのためのＰｉＴコピー情報２００ｉは、その情報の異なる使用を反映して、異なるフォーマットで記憶され得るのであるが、その理由は、リポジトリのＰｉＴコピー情報２００ｂが、リポジトリ・コピー・マネジャ１０８によって、リポジトリにおけるソース・データを管理するために用いられることが意図されているからである。ＰｉＴコピー情報の一例２００ｉは、ＰｉＴコピー・マネジャ１１６によってストレージ・コントローラ１００において作成されたＰｉＴコピーを識別するＰｉＴコピー識別子２０２と、そのポイント・イン・タイム２０４においてデータが一貫性を有することを意味し得るＰｉＴコピー２０２のポイント・イン・タイム２０４と、ポイント・イン・タイム２０４以降に、そしてＰｉＴコピー２０２がオープンである間に、ソース・データ１０４におけるどのデータまたはトラックが変化したのかを示す変化情報２０６であって、各データ・ユニット（たとえば、トラック）に対し、そのビットによって表されるデータまたはトラックがポイント・イン・タイム２０４以降に更新されたまたは更新されなかったことを示す２つの値のうちの１つに設定されているビットを有するビットマップを備え得る、変化情報２０６と、ポイント・イン・タイム２０４の後であって、ＰｉＴコピー２０２がオープンであり依然として更新されている間に変化したポイント・イン・タイム２０４におけるデータを備える変化したＰｉＴデータ２０８とを含み得る。
【００２２】
ある実施形態においては、ＰｉＴコピーが、ポイント・イン・タイム２０４よりも後の時点で、完了または凍結されることがあり得るが、それにより、変化したＰｉＴデータ２０８は、ポイント・イン・タイム２０４から、たとえば凍結されるなどのようにＰｉＴコピー２０２が完了されるか、または、新たなＰｉＴコピーが開始されるまでに変化したデータを含み、たとえば凍結されるなどのようにＰｉＴコピー２０２が完了された後に変化したデータを含まない。ＰｉＴコピー２０２は、凍結コマンドの際か、または、後のポイント・イン・タイムにおいてポイント・イン・タイム２０４への後のＰｉＴコピーを開始する際に、完了され得る。完了されたＰｉＴコピー２０２は、ポイント・イン・タイムにおいて一貫性を有し得る。完了させるためには、たとえば凍結やＰｉＴコピーなどの他の技術も用いられることもあり得る。
【００２３】
ある実施形態では、図１に示されているように、フル・コピー１２０が、ソース・データの別個のコピーであることもあり得る。別の実施形態では、フル・コピー１２０におけるデータが、変化したＰｉＴデータ２０８に含まれることもあり得る。
【００２４】
図３は、リポジトリ・コピー・マネジャ１０８によって維持されるフル・コピー情報３００ｉの実施形態を図解しており、リポジトリ１１０において作成されつつある１つのフル・コピー１２０に対するフル・コピー情報３００の一例を備えている。フル・コピー情報の一例３００ｉは、特定のフル・コピー１２０のフル・コピー識別子３０２と、フル・コピー１２０にコピーするためのソース・データ１０４における各トラックまたはデータ・ユニットに対するビットを有するフル・コピー・ビットマップ３０４とを含み得るのであって、各ビットは、対応するデータ・ユニットがコピーされたのかまたはコピーされていないのかを示す。フル・コピー１２０へのソース・データ１０４のバックグラウンド・コピー動作は、フル・コピー・ビットマップ３０４におけるすべてのビットが、ソース・データがコピーされたことを示すように設定された後で、完了される。
【００２５】
図４は、生産ボリュームなどＰｉＴコピー・マネジャ１１６によって作成されたソース・データ１０４に対し、ＰｉＴコピーから、異なるポイント・イン・タイムにおけるリポジトリ１１０のコピーを作成するために、リポジトリ・コピー・マネジャ１０８とＰｉＴコピー・マネジャ１１６とによって実行される動作の実施形態を図解している。ソース・データ１０４に対するリポジトリ・コピー動作を（ブロック４００において）開始すると、リポジトリ・コピー・マネジャ１０８が、本明細書ではＴ０と称される最初のポイント・イン・タイムにおいて最初のポイント・イン・タイム・コピー２０００を作成するために、コマンドをＰｉＴコピー・マネジャ１１６に（ブロック４０２において）送る。リポジトリ・コピー・マネジャ１０８は、最初のポイント・イン・タイム（Ｔ０）において、リポジトリ１１０におけるフル・コピー１２０に、ソース・データ１０４をコピーする動作を、（ブロック４０４において）開始する。フル・コピー１２０を作成する動作の一部として、リポジトリ・コピー・マネジャ１０８は、作成されつつあるフル・コピー１２０に対するフル・コピー情報の例３００ｉを初期化し得るのであって、ソース・データ１０４における対応するデータ・ユニットがコピーされていないことを示すために、フル・コピー・ビットマップ３０４におけるすべてのビットを初期化することがあり得る。ソース・データ１０４は、フル・コピー１０２にコピーされたソース・データ１０４からデータ・ユニットに対して更新されたフル・コピー１２０とフル・コピー・ビットマップ３０４とに、バックグラウンドで、コピーされ得る。
【００２６】
リポジトリ・コピー・マネジャ１０８は、後のポイント・イン・タイムＴｉ＋１における後のＰｉＴコピー（Ｔｉ＋１）を作成するために、コマンドを、ＰｉＴコピー・マネジャ１１６に（ブロック４０６において）送り得るのであるが、その結果として、ＰｉＴコピー情報２００ｉ＋１が生じ得る。ある実施形態では、リポジトリ・コピー・マネジャ１０８が、ＰｉＴコピーを作成し先に作成されたＰｉＴコピーを凍結するために、個別のコマンドを、ＰｉＴコピー・マネジャ１１６に送ることがあり得る。別の実施形態では、リポジトリ・コピー・マネジャ１０８が、ソース・データ１０４のＰｉＴコピーを周期的に作成するように命令するため、あるコマンドを、ＰｉＴコピー・マネジャ１１６に送ることがあり得るが、その場合には、後のＰｉＴコピーの作成により、先に作成されたＰｉＴコピーが凍結される。さらにまた、ストレージ・コントローラ１００におけるＰｉＴコピー・マネジャ１１６が、リポジトリ・コピー・マネジャ１０８からの促しを受けずに、ＰｉＴコピーを独立に作成することがあり得る。
【００２７】
Ｔｉにおける先のポイント・イン・タイム・コピーが完了したことを（ブロック４０８において）判断すると、ＰｉＴコピー・マネジャ１１６は、Ｔｉに対するリポジトリＰｉＴコピー情報に記憶するための変化情報２０６と変化したＰｉＴデータ２０８とを含む時刻ＴｉにおけるＰｉＴコピーのためのＰｉＴコピー情報２００ｉを、記憶のために、（ブロック４１０において）リポジトリ１１０に送る。ある実施形態では、ポイント・イン・タイムＴｉにおけるＰｉＴコピーは、時刻Ｔｉ＋１における後のＰｉＴコピーが作成される際に、完了され得る。別の実施形態では、ＰｉＴコピーは、ＰｉＴコピーを凍結するための凍結コマンドを発行し、変化情報２０６がソース・データ１０４に変化を指示するのを停止させることによって、完了され得る。リポジトリ１１０は、リポジトリＰｉＴコピー情報２００ｂにおいて、先のＰｉＴコピーのポイント・イン・タイム２０４と、変化情報２０６と、先のＰｉＴコピーに対して変化したＰｉＴデータ２０８との関連付けを、（ブロック４１２において）作成する。
【００２８】
リポジトリ・コピー・マネジャ１０８は、フル・コピーを、後の時刻Ｔｉ＋１において最新とするために、フル・コピー１２０に、後の時刻（Ｔｉ＋１）におけるソース・データ１０４におけるデータを、（ブロック４１４において）送信し得る。この動作を実行するために、リポジトリ・コピー・マネジャ１０８は、Ｔｉにおける先のＰｉＴコピーに対する変化情報２０６から、変化したソース・データ１０４におけるデータ・ユニットを決定し、次に、これらのデータ・ユニットを、ソース・データ１０４からフル・コピー１２０にコピーし得る。このようにして、後のＰｉＴコピー（Ｔｉ＋１）が作成される後のポイント・イン・タイムＴｉ＋１において、先のポイント・イン・タイムＴｉと後のポイント・イン・タイムＴｉ＋１との間に変化したソース・データ１０４におけるデータ・ユニットが、リポジトリ１１０におけるフル・コピー１２０にコピーされる。フル・コピー・ビットマップ３０４は、データ・ユニットがブロック４１４において送信された後でソース・データ１０４からフル・コピー１２０にコピーされたすべてのデータ・ユニットを示すように、（ブロック４１６において）更新される。このようにして、フル・コピー１２０は、常に、時間経過と共に前進しているのであり、データを、直近のまたは後のＰｉＴコピーとの関係で最新にしている。ある時点で、ＰｉＴコピーが依然として作成されつつある間に、フル・コピー１２０は完了されることがあり得る。そのような場合、フル・コピー１２０は、後のＰｉＴに対する後のポイント・イン・タイムにおいて決定される変化したデータ・ユニットを用いて、継続的に更新される。
【００２９】
さらなるポイント・イン・タイム・コピーが（ブロック４１８において）作成される場合には、リポジトリ・コピー・マネジャ１０８は、（Ｔｉ＋１）における現在における後のポイント・イン・タイム・コピーを、次のＰｉＴコピーを処理する次の反復の間のＴｉにおける先のポイント・イン・タイム・コピーであると、（ブロック４２０において）考える。このように、ｉは、現在における後のポイント・イン・タイムＴｉ＋１が先のポイント・イン・タイムになり、次のポイント・イン・タイムが新たな後のポイント・イン・タイムになるにつれて、有効にインクリメントされる。制御は、次に、新たな後のポイント・イン・タイムＴｉ＋１における新たな後のＰｉＴコピー（Ｔｉ＋１）を作成または処理するために、ブロック４０６に戻る。
（ブロック４１８において）処理するためのさらなるＰｉＴが存在しない場合には、制御は、終了する。
【００３０】
図４に関して説明された実施形態を用いると、異なるＰｉＴコピーに対するＰｉＴコピー情報を有するソース・データ１０４のフル・コピーのリポジトリ１１０が、ＰｉＴコピーを作成するためのストレージ・コントローラの動作とは独立に、作成される。このように、リポジトリ管理動作のロジックまたは動作は、ＰｉＴコピーを作成するストレージ・コントローラ１００のロジックとは独立である。
【００３１】
図５は、リポジトリ１１０からのソース・データを復元時刻ＴＲにおいて復元コピー１２４に復元するために、リポジトリ・コピー・マネジャ１０８によって実行される動作の実施形態を図解しているが、この場合に、ＴＲは、いずれかのリポジトリＰｉＴコピー２００ｂのポイント・イン・タイム２０４の１つを備え得る。復元時刻ＴＲにおいてソース・データ１０４を復元するための復元リクエストを（ブロック５００において）処理する際に、リポジトリ・コピー・マネジャ１０８は、現在時刻（ＴＣ）において最新である最新フル・コピー１２０を別個の復元コピー１２４にコピーするための動作を、（ブロック５０２において）開始する。ある実施形態では、リポジトリ・コピー・マネジャ１０８は、フル・コピー１２０のＰｉＴコピーを作成することをＰｉＴコピー・マネジャ１１６に求め、次に、復元コピー１２４へのフル・コピー１２０のバックグラウンド・コピー動作を実行し得る。（ブロック５０４において）復元時刻ＴＲが、フル・コピー１２０が復元コピー１２４にコピーされつつある現在時刻ＴＣと等しい場合には、復元コピー１２４は完了であり、（ブロック５１２における）復元コピー１２４へのアクセスが許容され得る。ある実施形態では、復元コピー１２４が、フル・コピー１２０のデータを復元コピー１２４にコピーするバックグラウンド・コピー動作を用い、フル・コピー１２０のＰｉＴコピーとして、作成され得る。
【００３２】
（ブロック５０４において）復元時刻ＴＲが、フル・コピー１２０の現在時刻ＴＣよりも前のポイント・イン・タイムにある場合には、制御は、フル・コピー１２０から作成された復元コピー１２４をそれより早い復元時刻ＴＲにロールバックするために、ブロック５０６に進む。ブロック５０６では、リポジトリ・コピー・マネジャ１０８が、復元時刻ＴＲ以上のポイント・イン・タイムを有するＰｉＴコピー２００ｉのそれぞれに対して、変化情報２０６から、変化したＰｉＴデータ２０８を決定する。復元ポイント・イン・タイムＴＲ以上のＰｉＴコピー２００ｂに対するリポジトリ１１０における復元時刻ＴＲに時間的に最も近接する変化したポイント・イン・タイム・データが、決定された変化したポイント・イン・タイム・データから、（ブロック５０８において）決定される。復元時刻ＴＲに時間的に最も近接していると決定された変化したＰｉＴデータが、復元コピー１２４を復元時刻ＴＲの時刻にロールバックするために、（ブロック５１０において）復元コピー１２４にコピーされる。復元時刻（ＴＲ）における変化したポイント・イン・タイム・データを復元コピー１２４にコピーすることに応答して、そして、フル・コピーを復元コピーにコピーするバックグラウンド動作が完了する前に、リポジトリ・コピー・マネジャ１０８が、（ブロック５１２において）復元コピー１２４へのアクセスを、許容する。フル・コピー１２０からまだコピーされていない復元コピー１２４におけるデータに、ユーザがアクセスを試みる場合には、リクエストされたデータは、復元コピー１２４にコピーするためにフル・コピー１２０からリトリーブされ、ユーザに戻され得る。
【００３３】
ある実施形態では、リポジトリ・コピー・マネジャ１０８が、復元時刻ＴＲ以上のＰｉＴコピーにおける変化したデータを統合し得るのであって、それにより、復元時刻ＴＲ以上の異なるポイント・イン・タイムにおいて、１データ・ユニットに対し、変化したデータの複数の例が存在する場合には、そのデータ・ユニットに対して、復元時刻に時間的に最も近接するＰｉＴコピーからの変化したデータだけが、復元コピー１２４にコピーされる。別の実施形態では、リポジトリ・コピー・マネジャ１０８が、復元時刻ＴＲに続く直近のＰｉＴコピーから開始して、変化したデータをコピーし、次に、復元時刻ＴＲにおいてポイント・イン・タイムを有するＰｉＴコピーに対する変化したデータが復元コピー１２４にコピーされるまで、復元時刻に時間的により近接するそれぞれの後のＰｉＴコピーに対して変化したデータをコピーすることによって、ブルート・フォース・コピー方法（brute force copy method）を実行する場合があり得る。現時点よりも前の復元時刻に復元コピー１２４をロールバックするために、他の技術が用いられることもあり得る。
【００３４】
説明されている実施形態では、ソース・データ１０４を復元するためのロジックは、ストレージ・コントローラ１００とは独立であり、ソース・データ１０４を有するストレージ・システム１０２とは別のストレージ・システム１１２に維持されるリポジトリ１１０から実行される。さらに、説明されている実施形態を用いると、復元コピーは、リポジトリ１１０に維持されるソース・データに影響を与えるまたはソース・データを変化させることなく、作成され、ユーザによる使用および修正が可能になり得るのであって、これは、ストレージ・コントローラ１００のＰｉＴコピー・マネジャ１１６とは独立に、ソース・データ１０４を異なるポイント・イン・タイムに復元するのに用いられ得る。
【００３５】
図６、７、８は、フル・コピー１２０とリポジトリＰｉＴコピー情報２００ｂとを作成するための図４の動作の一例を図解している。図６は、リポジトリ１１０においてフル・コピー６２０にコピーされるソース・ストレージ１０２におけるソース・データ６０４０の初期時刻Ｔ０における状態を示す。さらに、ＰｉＴコピー２０００が、初期時刻の後で変化しストレージ・コントローラ１００において変化したデータ２０８として記憶される初期時刻Ｔ０におけるソース・データをキャプチャするために、初期時刻Ｔ０において作成される。
【００３６】
図７は、第２のＰｉＴコピーがＴ１２００１において作成されるときの時刻Ｔ１を示しており、その結果として、Ｔ０とＴ１との間に生じる変化の前に、ポイント・イン・タイムＴ０における変化したデータ２０８０を有するＴ０におけるＰｉＴコピーの完了または凍結が生じ得る。リポジトリ・コピー・マネジャ１０８は、Ｔ１におけるデータを有するようにフル・コピー６２０１を更新するため、ユニット６２０および６２２として示されているＴ０とＴ１との間に変化したデータを、リポジトリ１１０にコピーする。さらに、更新される前の、Ｔ０における変化したデータ２０８０を有するＴ０におけるＰｉＴコピー情報２０００が、リポジトリＰｉＴコピー６０８０として記憶するために、リポジトリ１１０にコピーされる。
【００３７】
図８は、Ｔ２２００２における第３のＰｉＴコピーが作成される時刻Ｔ２を示し、その結果として、Ｔ１とＴ２との間に変化が生じる前の、ポイント・イン・タイムＴ１における変化したデータ２０８１を有するＴ１におけるＰｉＴコピー２００１の完了または凍結が生じ得る。リポジトリ・コピー・マネジャ１０８は、Ｔ２におけるデータを有するようにフル・コピー６２０２を更新するため、ユニット６２４および６２６として示されているＴ１とＴ２との間に変化したデータを、リポジトリ１１０にコピーする。さらに、更新される前の、Ｔ１における変化したデータ２０８１を有するＴ１における完了または凍結されたＰｉＴコピー情報２００１が、リポジトリＰｉＴコピー６０８１として記憶するために、リポジトリ１１０にコピーされる。
【００３８】
図９、１０、および１１は、図５の動作により、異なる復元時刻Ｔ２、Ｔ１、およびＴ０のそれぞれにおいて復元コピー１２４を生成するための動作の一例を図解している。図９は、Ｔ２において復元コピー７２４２を作成するのに用いられている、時刻Ｔ２におけるリポジトリを示す。図９に示されているように、復元時刻Ｔ２がフル・コピー７２０２におけるデータの現在時刻と等しいのであるから、いったん復元コピー７２４２が、直接的にまたはバックグラウンド・コピーと共にポイント・イン・タイム・コピーを用いてコピーすることによって作成されると、復元時刻と現在時刻とが同一のＴ２であるためにデータを先の復元時刻にロールバックする必要がないので、復元は完了である。
【００３９】
図１０は、リポジトリ・フル・コピー６２０２の現在時刻Ｔ２よりも時間的に先行する復元時刻Ｔ１における復元コピー７２４１を生成するための、動作の一例を図解している。復元コピーをＴ１に戻すために、リポジトリ・コピー・マネジャ１０８は、ポイント・イン・タイムＴ１に対するリポジトリＰｉＴコピー６０８１から変化したデータをコピーするのであるが、これは、Ｔ１とＴ２との間に変化したＴ１におけるデータを有する。
【００４０】
図１１は、リポジトリ・フル・コピー６２０２の現在時刻Ｔ２よりも時間的に先行する復元時刻Ｔ０における復元コピー７２４０を生成するための、動作の一例を図解している。復元コピーをＴ０に戻すために、リポジトリ・コピー・マネジャ１０８は、ポイント・イン・タイムＴ０およびＴ１それぞれに対するリポジトリＰｉＴコピー６０８０および６０８１から変化したデータをコピーするのであるが、これは、Ｔ０とＴ２との間に変化したＴ０におけるデータを有する。
【００４１】
図１２および１３は、変化したＰｉＴデータ２０８が、図４のブロック４１２のようにフル・コピー１１０に適用されることがない、別の実施形態を図解している。その代わりに、この別の実施形態では、フル・コピー１２０が、Ｔ０における第１のＰｉＴコピーの後で、その初期状態のままである。図１２のブロック８００、８０２、８０４、８０６、８０８、８１０、８１２、８１８、および８２０は、図４のブロック４００、４０２、４０４、４０６、４０８、４１０、４１２、４１８、および４２０の動作を備えており、ただし、フル・コピーは、第１のＰｉＴコピー６０８０からのデータだけを含む初期状態のままである。
【００４２】
図１３は、この別の実施形態における復元時刻ＴＲにおけるデータを復元するための図５とは別の実施形態を提供するのであるが、この場合には、フル・コピー１２０が、変化したデータを用いて更新されることはなく、Ｔ０における第１のＰｉＴコピーにおける状態のままである。ブロック９００、９０２、９０４、および９１２は、図５のブロック５００、５０２、５０４、および５１２の動作を備えており、図１３におけるブロック９０６、９０８、および９１０は、以下の点で、図５のブロック５０６、５０８、および５１０とは異なる。（ブロック９０４において）復元時刻ＴＲが、フル・コピー１２０の現在時刻Ｔ０よりも大きい場合には、制御は、ブロック９０６に進み、初期時刻Ｔ０におけるフル・コピー１２０から作成された復元コピー１２４を後の復元時刻ＴＲにロールフォワードする。ブロック９０６では、リポジトリ・コピー・マネジャ１０８が、復元時刻ＴＲ以下のポイント・イン・タイムを有するＰｉＴコピー２００ｉのそれぞれに対する変化情報２０６から、変化したＰｉＴデータ２０８を決定する。次に、（ブロック９０８において）リポジトリ１１０における変化したポイント・イン・タイム・データの直近のものが、決定された変化したポイント・イン・タイム・データから、決定されるのであるが、これは、すなわち、復元ポイント・イン・タイムＴＲよりも前のＰｉＴコピー２００ｂに対する、復元時刻に時間的に最も近接する変化したポイント・イン・タイム・データである。変化したＰｉＴデータの決定された直近のものが、復元コピー１２４を復元時刻ＴＲの時刻にロールフォワードするために、（ブロック９１０において）復元コピー１２４にコピーされる。リポジトリ・コピー・マネジャ１０８は、復元時刻（ＴＲ）における変化したポイント・イン・タイム・データを復元コピー１２４にコピーすることに応答して、フル・コピーを復元コピーにコピーするバックグラウンド動作が完了する前に、復元コピー１２４へのアクセスを（ブロック９１２において）許容する。ユーザが、フル・コピー１２０からまだコピーされていない復元コピー１２４におけるデータへのアクセスを試みる場合には、リクエストされたデータは、復元コピー１２４をコピーするためにフル・コピー１２０からリトリーブされ、ユーザに戻され得る。
【００４３】
図５の実施形態のように、図１３の実施形態では、リポジトリ・コピー・マネジャ１０８が、ＰｉＴコピーにおける変化したデータを復元時刻ＴＲまでに統合し得るのであり、それによって、復元時刻ＴＲに先行する異なるポイント・イン・タイムにおける１つのデータ・ユニットに対して、変化したデータの複数の例が存在する場合には、ＰｉＴコピーから復元時刻ＴＲまでのデータに対する変化したデータのうちの直近のものだけが、復元コピー１２４にコピーされる。別の実施形態では、リポジトリ・コピー・マネジャ１０８が、復元時刻ＴＲよりも前の先行する最先のＰｉＴコピーから開始して、変化したデータをコピーし、次に、復元時刻ＴＲにおいてポイント・イン・タイムを有するＰｉＴコピーに対する変化したデータが復元コピー１２４にコピーされるまで、それぞれの後のより新しいＰｉＴコピーに対して変化したデータをコピーすることによって、ブルート・フォース・コピー方法を実行する場合があり得る。現時点よりも後の復元時刻に復元コピー１２０をロールフォワードするために、他の技術が用いられることもあり得る。
【００４４】
さらに別の実施形態では、フル・コピー１２０が、初期ポイント・イン・タイムＴ０と直近のＰｉＴコピーの現在のポイント・イン・タイムＴＣとの間のポイント・イン・タイムにおいて、維持されることがあり得る。そのような場合には、復元動作が、復元時刻よりも前または後のそれぞれのＰｉＴコピーから、フル・コピー１２０をロールフォワードまたはロールバックすることを含み得る。
【００４５】
図１４は、２つ以上の連続するＰｉＴコピー（ＰｉＴｉ．．．．ＰｉＴｎ）を１つのマージされたＰｉＴコピーに統合するために、ＰｉＴコピーとも称されるリポジトリＰｉＴコピー情報２００ｉの例をマージするリポジトリ・コピー・マネジャ１０８によって実行される動作の実施形態を、図解している。図１４は、図４および５との関係で説明されたような、最後のＰｉＴコピーが作成された時点において最新であるために、修正されたデータがフル・コピー１２０に連続的に提供されるような状況において、ＰｉＴコピーをマージするためにリポジトリ・コピー・マネジャ１０８によって実行される動作を提供する。この実施形態では、図４のブロック４１４において、フル・コピー１２０が、フル・コピーを後のポイント・イン・タイムにおいて最新にするために、前のポイント・イン・タイム以降に変化したデータを用いて更新される。そのような実施形態では、ＰｉＴコピー２００ｂが、フル・コピー１２０を前のポイント・イン・タイムにロールバックするために、用いられる。マージするための２つ以上の選択されたＰｉＴコピー２００ｉ．．．２００ｎを（ブロック１０００において）受け取ると、リポジトリ・コピー・マネジャ１０８は、マージされたＰｉＴコピーに対するＰｉＴ２０４を、選択されたＰｉＴコピー２００ｉ．．．２００ｎの最先のＰｉＴ２０４に（ブロック１００２において）設定する。
【００４６】
リポジトリ・コピー・マネジャ１０８は、たとえばビットマップである変化情報２０６における各データ・ブロックに対して、ブロック１００４から１０１６において、動作のループを実行するのであるが、ここで、ビットマップ２０６は、どのデータ・ブロックに対しても変化したデータを示さないように、初期化され得る。（ブロック１００６において）マージするための選択された連続的なＰｉＴコピーのいずれかがブロックｊに対して変化したデータを有する場合には、マージされた変化情報２０６（ビットマップ）が、マージされたＰｉＴコピーがデータ・ブロックｊに対して変化したデータを提供することを示すように（ブロック１００８において）設定される。（ブロック１０１０において）複数の選択されたＰｉＴコピーがデータ・ブロックｊに対して変化したデータを提供する場合には、リポジトリ・コピー・マネジャ１０８が、データ・ブロックｊに対する変化したデータを、データ・ブロックｊに対して変化したデータを提供する最先のＰｉＴコピーに対する変化したデータに、（ブロック１０１２において）設定する。（ブロック１０１０において）ただ１つの選択されたＰｉＴコピーがデータ・ブロックｊに対して変化したデータを提供する場合には、リポジトリ・コピー・マネジャ１０８が、データ・ブロックｊに対する変化したデータを、ブロックｊに対して変化したデータを提供するその１つのＰｉＴコピーに対する変化したデータに、（ブロック１０１４において）設定する。ブロック１０１６では、制御が、変化情報２０６において示されているすべてのブロックが考察されるまで、ブロック１００２に戻る。生成されたマージされたＰｉＴコピーは、（ブロック１０１８において）リポジトリ１１０に記憶され、マージの対象となる選択されたＰｉＴコピー２００ｉ．．．２００ｎは、リポジトリ１１０においてマージされたＰｉＴコピーを形成した後に、リポジトリ１１０から取り除かれることがあり得る。
【００４７】
図１４の実施形態では、マージするための選択されたＰｉＴコピーのうちの複数がデータ・ブロックに対して変化したデータ２０８を（ブロック１０１２において）提供する場合には、マージされた変化したデータ２０８におけるデータ・ブロックは、マージされつつあるＰｉＴコピー２００ｉ．．．２００ｎの最先のポイント・イン・タイム２０４である、マージされた選択されたＰｉＴコピー２００ｉ．．．２００ｎのＰｉＴにフル・コピー１２０がロールバックされることを可能にするために、データ・ブロックに対して変化したデータを提供する最先のＰｉＴコピーからの変化したデータに、設定される。
【００４８】
別の実施形態において、フル・コピー１２０が更新されないが、図１２および１３との関係で説明されたように初期ＰｉＴコピー（Ｔ０）におけるデータを含む場合には、図１４の動作は、ブロック１００２において、マージされたＰｉＴコピー２００ｉのＰｉＴ２０４が、選択されたＰｉＴコピー２００ｉ．．．２００ｎまたはＴｎの直近のポイント・イン・タイム２０４に設定されるように、修正され得る。さらに、ブロック１０１２における動作は、マージされつつあるＰｉＴコピーの直近のポイント・イン・タイム２０４（Ｔｎ）である、マージされた選択されたＰｉＴコピー２００ｉ．．．２００ｎのＰｉＴにフル・コピー１２０がロールフォワードされることを可能にするために、データ・ブロックｊに対して変化したデータを提供する直近のマージされたＰｉＴコピー２００ｉ．．．２００ｎからの変化したデータ２０８に、変化したデータ・ブロックｊを設定するように、修正され得る。
【００４９】
両方の実施形態に対する図１４の動作は、特定の中間的なＰｉＴコピーがもはや必要とされないときにＰｉＴコピーのより効率的なストレージを提供するために、リポジトリ１１０におけるＰｉＴコピー情報２００ｂを統合する。さらに、図１４の統合動作は、リポジトリ１１０における空間を浪費することがないのであって、その理由は、複数のＰｉＴコピーが同じデータ・ブロックに対して、変化したデータを提供する場合には、これらのＰｉＴコピーをマージすることにより、変化情報２０６のビットマップを記憶するのに必要とされるデータだけでなく、リポジトリ１１０における変化したデータ２０の例の量が減少するからである。これが、より新しいＰｉＴコピーのために、リポジトリ１１０における空間を解放する。
【００５０】
さらに、ＰｉＴコピーは、ある時間間隔に対するＰｉＴコピーを限定されたものに維持することによって管理オーバヘッドを減少させるために、計画的にマージされ得る。たとえば、１日に対して毎時間のＰｉＴコピー、１週間に対して毎日のＰｉＴコピー、１月に対して毎週のＰｉＴコピーなど、より長い時間間隔の部分的な時間間隔に対して複数のＰｉＴコピーが存在する場合には、部分的な時間間隔のＰｉＴコピーのうちの複数が、たとえば、最初の１日に対して１時間のＰｉＴコピーだけを維持する、最初の週に対して１日だけなどのように、全体の時間間隔に対するある部分的な時間間隔のＰｉＴコピーにマージされ得る。
【００５１】
説明されている実施形態は、リポジトリにおいて、ＰｉＴコピーをマージするための技術を提供するのであるが、これらのＰｉＴコピーは、最新のソース・データのフル・コピー１２０を含み、異なるポイント・イン・タイムにおいてストレージ・コントローラ１００によって作成されたＰｉＴコピーに対するＰｉＴコピー情報を有するものであり、ＰｉＴコピー情報とは、リポジトリで維持されるＰｉＴコピーの異なるポイント・イン・タイムにおけるデータを有する復元コピーに、ソース・データ１０４を復元するのに用いられ得るものである。第１の実施形態では、フル・コピーが、直近のＰｉＴコピーのポイント・イン・タイムにおいてＰｉＴコピーを最新に維持するために、ＰｉＴコピーを用いて維持される変化したデータを用いて、連続的に更新され得る。この第１の実施形態では、マージされた動作は、マージされつつあるＰｉＴコピーのうちの最先のものを、マージ・ポイント・イン・タイムとして用いる。そのような場合には、マージされつつあるＰｉＴコピーのうちの複数が１つのデータ・ブロックに対する変化したデータを提供する場合には、最先のポイント・イン・タイムを有するＰｉＴコピーからの変化したデータが、マージされつつあるＰｉＴコピーの最先のポイント・イン・タイムであるマージされたＰｉＴコピーのポイント・イン・タイムへの復元を可能にするために、マージされた変化したデータにおいて用いられる。
【００５２】
第２の実施形態では、フル・コピーが更新されずに、その代わり、第１のＰｉＴコピーの初期時刻Ｔ０において維持されることがあり得る。この第２の実施形態では、マージ動作は、マージされているＰｉＴコピーの直近のものを、マージ・ポイント・イン・タイムとして用いる。そのような場合には、マージされつつあるＰｉＴコピーのうちの複数が、１つのデータ・ブロックに対して変化したデータを提供する場合には、マージされつつあるＰｉＴコピーの直近のポイント・イン・タイムであるマージされたＰｉＴコピーのポイント・イン・タイムへの復元を可能にするために、直近のポイント・イン・タイムを有するＰｉＴコピーからの変化したデータが、マージされた変化したデータにおいて用いられる。
【００５３】
ｉ、ｊ、ｋ、ｌ、ｍ、ｎなど、本明細書で用いられている参照符号は、要素の例の可変な個数を示すために本明細書において用いられており、同じ値または異なる値を表し得るし、異なる説明されている例において異なる要素または同一の要素と共に用いられるときに、同一のまたは異なる値を表し得る。
【００５４】
特定の実施形態では、リポジトリの作成と復元動作とが、リポジトリ・コピー・マネジャ１０８など、たとえばＰｉＴコピーを作成したＰｉＴコピー・マネジャ１１６などのストレージ・コントローラ・ロジックとは別個の、プログラム・コンポーネントによって実行されることがあり得る。
【００５５】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはこれらすべてであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の諸態様を実行させるためのコンピュータ可読プログラム命令を記憶している、（１つまたは複数の）コンピュータ可読ストレージ媒体を含み得る。
【００５６】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって用いられる命令を保持または記憶することが可能な有形のデバイスであり得る。
コンピュータ可読ストレージ媒体は、たとえば、これらに限定されることはないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または以上のいずれかの適切な組合せであり得る。コンピュータ可読ストレージ媒体の、より特定的な例の非網羅的なリストは、ポータブルなコンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能なプログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、静的なランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブルなコンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチ・カードまたは命令が記録されている溝における隆起構造などの機械的に符号化されたデバイス、および以上のもののいずれかの適切な組合せを含む。本明細書において用いられているコンピュータ可読ストレージ媒体は、無線波もしくはそれ以外の自由に伝搬する電磁波、導波管もしくはそれ以外の伝送媒体を通過して伝搬する電磁波（たとえば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通過して伝送される電気信号など、一時的な信号自体としては解釈されるべきではない。
【００５７】
本明細書で説明されているコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、または、外部コンピュータもしくは外部ストレージ媒体に、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたはワイヤレス・ネットワークあるいはこれらのすべてなどのネットワークを介して、ダウンロードすることが可能である。ネットワークは、銅伝送ケーブル、光伝送ケーブル、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらすべてを備え得る。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイスにおけるコンピュータ可読ストレージ媒体に記憶するために、そのコンピュータ可読プログラム命令を転送する。
【００５８】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または１つもしくは複数のプログラミング言語のいずれかの組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであり得るのであるが、ここでプログラム言語は、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語もしくは同様のプログラミング言語など従来型の手続き型プログラミング言語を含む。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロンのソフトウェア・パッケージとして、部分的にはユーザのコンピュータ上で部分的にはリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で、実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続され得るし、または、この接続が（たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータになされることがあり得る。いくつかの実施形態では、たとえば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の諸態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行し得る。Ｊａｖａ（Ｒ）と、すべてのＪａｖａ（Ｒ）ベースの商標およびロゴとは、オラクル社またはその関連会社あるいはその両方の、商標または登録商標である。
【００５９】
本明細書では、本発明の諸態様が、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、説明されている。フローチャート図またはブロック図あるいはその両方の各ブロックと、フローチャート図またはブロック図あるいはその両方におけるブロックの組合せとが、コンピュータ可読プログラム命令によって実装され得る、ということが理解されるであろう。
【００６０】
これらのコンピュータ可読プログラム命令は、コンピュータまたはそれ以外のプログラマブル・データ処理装置のプロセッサ経由で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに特定されている機能／作用を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータ、またはそれ以外のプログラマブル・データ処理装置のプロセッサに提供され、マシンを生じさせるものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに特定されている機能／作用の諸態様を実装する命令を含む製品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはそれ以外のデバイスあるいはこれらすべてに、特定の態様で機能するように命令することが可能なものであってもよい。
【００６１】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方での１つまたは複数のブロックにおいて特定されている機能／作用を実現させるように、コンピュータ実装プロセスを生じさせるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイスの上で一連の動作ステップを実行させるものであってもよい。
【００６２】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を図解している。この点で、フローチャートまたはブロック図における各ブロックは、特定された（１つまたは複数の）論理機能を実装するための１つまたは複数の実行可能な命令を備えたモジュール、セグメント、または命令の一部を表し得る。いくつかの別の実装では、ブロックに記されている機能が、図面に記されている順序とは異なる順序で生じることがあり得る。たとえば、連続するように示されている２つのブロックが、関係する機能に応じて、実際には、実質的に同時に実行されることがあり得るし、または、それらのブロックが、逆の順序で実行されることもあり得る。ブロック図またはフローチャート図あるいはその両方の図解の各ブロックと、ブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、特定された機能もしくは作用を実行する、または、専用のハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実装され得る。
【００６３】
ストレージ・コントローラ１００とホスト１０６とを含む図１の計算コンポーネントは、図１５に示されているコンピュータ・システム１１０２など、１つまたは複数のコンピュータ・システムにおいて実装され得る。コンピュータ・システム／サーバ１１０２は、プログラム・モジュールなど、コンピュータ・システムによって実行されつつあるコンピュータ・システムが実行可能な命令の一般的なコンテキストで、説明され得る。一般的に、プログラム・モジュールは、特定のタスクを実行するまたは特定の抽象的なデータ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム／サーバ１１０２は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散型のクラウド・コンピューティング環境において、実現され得る。分散型のクラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム・ストレージ媒体に配置され得る。
【００６４】
図１５に示されているように、コンピュータ・システム／サーバ１１０２は、汎用のコンピューティング・デバイスの形式で示されている。コンピュータ・システム／サーバ１１０２のコンポーネントは、これらに限定されることはないが、１つまたは複数のプロセッサまたは処理ユニット１１０４、システム・メモリ１１０６、およびシステム・メモリ１１０６を含む様々なシステム・コンポーネントをプロセッサ１１０４に結合するバス１１０８を含み得る。バス１１０８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、加速グラフィクス・ポート、および様々なバス・アーキテクチャのいずれかを用いるプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のいずれかの１つまたは複数を、表す。例示であって、限定ではないが、そのようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダート・アソシエーション（ＶＥＳＡ）ローカル・バス、および周辺コンポーネント・インターコネクト（ＰＣＩ）バスが含まれる。
【００６５】
コンピュータ・システム／サーバ１１０２は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１１０２によってアクセス可能ないずれかの利用可能な媒体であり得るのであって、揮発性および不揮発性の両方の媒体と、取り外し可能および取り外し可能ではない媒体とを含む。
【００６６】
システム・メモリ１１０６は、ランダム・アクセス・メモリ（ＲＡＭ）１１１０またはキャッシュ・メモリ１１１２あるいはその両方など、揮発性メモリの形式のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム／サーバ１１０２は、さらに、他の取り外し可能な／取り外し可能ではない、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体を含み得る。単なる例示であるが、ストレージ・システム１１１３が、（示されていないが、典型的には「ハード・ドライブ」と称される）取り外し可能ではなく不揮発性の磁気媒体からの読み出し、および、それへの書き込みのために、提供され得る。示されていないが、（たとえば、「フロッピー（Ｒ）・ディスク」などの）取り外し可能で不揮発性の磁気ディスクからの読み出しおよびそれへの書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたはそれ以外の光媒体などの取り外し可能であり不揮発性の光ディスクからの読み出しおよびそれへの書き込みのための光ディスク・ドライブとが、提供され得る。そのような例では、それぞれが、１つまたは複数のデータ媒体インターフェースによって、バス１１０８に接続され得る。以下でさらに示され説明されるように、メモリ１１０６は、本発明の実施形態の機能を実行するように構成されているプログラム・モジュールの（たとえば、少なくとも１つの）組を有する少なくとも１つのプログラム製品を含み得る。
【００６７】
（少なくとも１つの）組のプログラム・モジュール１１１６を有するプログラム／ユーティリティ１１１４は、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、それ以外のプログラム・モジュール、およびプログラム・データに加えて、例であって限定ではないが、メモリ１１０６に記憶され得る。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、それ以外のプログラム・モジュール、およびプログラム・データまたはこれらの組合せのそれぞれは、ネットワーク環境の実装を含み得る。コンピュータ１１０２のコンポーネントは、本明細書に説明されている本発明の実施形態の機能または方法あるいはその両方を一般に実行するプログラム・モジュール１１１６として実装され得る。図１のシステムは、１つまたは複数のコンピュータ・システム１１０２として実装され得るのであるが、それらが複数のコンピュータ・システム１１０２として実装される場合には、それらのコンピュータ・システムは、ネットワークを介して通信し得る。
【００６８】
また、コンピュータ・システム／サーバ１１０２は、キーボード、ポインティング・デバイス、ディスプレイ１１２０などの１つまたは複数の外部デバイス１１１８と、ユーザがコンピュータ・システム／サーバ１１０２と対話することを可能にする１つまたは複数のデバイスと、コンピュータ・システム／サーバ１１０２が１つまたは複数のそれ以外のコンピューティング・デバイスと通信することを可能にする（たとえば、ネットワーク・カード、モデムなどの）いずれかのデバイスと、あるいはこれらすべてのものと、通信し得る。そのような通信は、入力／出力（Ｉ／Ｏ）インターフェース１１２２を介して生じ得る。さらに、コンピュータ・システム／サーバ１１０２は、ネットワーク・アダプタ１１２４を経由して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、および（たとえば、インターネットなどの）公共ネットワーク、あるいはこれらすべてなどの１つまたは複数のネットワークと通信し得る。示されているように、ネットワーク・アダプタ１１２４は、バス１１０８を経由して、コンピュータ・システム／サーバ１１０２の他のコンポーネントと通信する。図示されてはいないが、ハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム／サーバ１１０２と共に用いられ得る、ということが理解されるべきである。例としては、これらに限定されることはないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれる。
【００６９】
「一実施形態」、「実施形態」、「複数の実施形態」、「その実施形態」、「それらの複数の実施形態」、「１つまたは複数の実施形態」、「いくつかの実施形態」、および「ある実施形態」という用語は、特に明確に断らない限り、「本発明の１つまたは複数の（しかし全部とは限らない）実施形態」を意味する。
【００７０】
「含む」、「備える」、「有する」およびそれらの変形例である用語は、特に明確に断らない限り、「含むが、それらには限定されない」ことを意味する。
【００７１】
項目が列挙された一覧は、特に明確に断らない限り、それらの項目のいずれかまたは全部が相互に排他的であることを意味しない。
【００７２】
「１つの（ａ）」、「１つの（ａｎ）」および「その」という用語は、特に明確に断らない限り、「１つまたは複数」を意味する。
【００７３】
相互に通信する複数のデバイスは、特に明確に断らない限り、相互に連続的通信状態にある必要はない。さらに、相互に通信する複数のデバイスは、直接的に通信するか、または、１つまたは複数の中間物を経由して間接的に通信することがあり得る。
【００７４】
いくつかのコンポーネントが相互に通信するような実施形態に関する説明は、それらすべてのコンポーネントが要求されることを意味しない。逆に、本発明の広い範囲の様々な可能性がある実施形態を例証するために、様々なオプションのコンポーネントが説明されている。
【００７５】
１つのデバイスまたは項目が本明細書で説明されるときには、１つのデバイス／項目の代わりに、（それらが協働するかどうかとは関係なく）複数のデバイス／項目が用いられ得ることが、容易に明らかになるであろう。同様に、複数のデバイスまたは項目が（それらが協働するかどうかとは関係なく）本明細書で説明される場合には、複数のデバイスもしくは項目または異なる数のデバイス／項目の代わりに、１つのデバイス／項目が、示されている個数のデバイスまたはプログラムではなく用いられ得る、ということが容易に明らかになるであろう。あるデバイスの機能または特徴あるいはそれらの両方が、そのような機能／特徴を有するように明確に説明されていない１つまたは複数の他のデバイスによって、代替的に具現化されることがあり得る。よって、本発明の他の実施形態は、そのデバイス自体を含むことを必要としない。
【００７６】
本発明の様々な実施形態に関する以上の説明は、例証と説明との目的のために、提示されたものである。網羅的であること、または、開示されているそのままの形態に本発明を限定することは、意図されていない。以上の教示によれば、多くの変更および改変が可能である。本発明の範囲は、以上の詳細な説明によってではなく、添付された特許請求の範囲によって限定されることが、意図されている。以上の明細書、例およびデータは、本発明の製造と組成の使用とに関する完全な説明を提供している。本発明の多くの実施形態は本発明の範囲から逸脱することなく行われ得るのであるから、本発明は、本明細書の後に添付される特許請求の範囲の中に存在する。
【図１】
0006548663.tif 000002
【図２】
0006548663.tif 000003
【図３】
0006548663.tif 000004
【図４】
0006548663.tif 000005
【図５】
0006548663.tif 000006
【図６】
0006548663.tif 000007
【図７】
0006548663.tif 000008
【図８】
0006548663.tif 000009
【図９】
0006548663.tif 000010
【図１０】
0006548663.tif 000011
【図１１】
0006548663.tif 000012
【図１２】
0006548663.tif 000013
【図１３】
0006548663.tif 000014
【図１４】
0006548663.tif 000015
【図１５】
0006548663.tif 000016