(57)【特許請求の範囲】
【請求項１】
即時仮想コピーを維持する方法であって、
即時仮想コピー・オペレーションを実施して第一ボリュームから新規ボリュームへの即時仮想コピーを生成する要求を、コンピュータのプロセッサを用いて受信するステップと、
第一ボリュームからの最初の即時仮想コピー・オペレーションでないと判定するステップと、
前回の即時仮想コピー・オペレーションが実施されて以後、前記第一ボリュームが修正されていないと判定するステップと、
中間ボリュームおよび中間マップが既に生成されているかどうかを判定するステップと、
前記中間ボリュームおよび前記中間マップがまだ生成されていないと判定するのに応じて、
前記中間ボリュームおよび前記中間マップを生成するステップと、
前記中間マップに基づき、依存関係チェーンの中の前記第一ボリュームに依存して前記中間ボリュームを作成するステップと、
前記依存関係チェーン中の前記中間ボリュームに依存して前記新規ボリュームを作成するステップと、
を含む方法。
【請求項２】
前記即時仮想コピー・オペレーションは、前記第一ボリュームからの最初の即時仮想コピー・オペレーションであると判定するステップと、
前記第一ボリュームから前記新規ボリュームへのマップを生成するステップと、
前記生成されたマップに基づき、前記依存関係チェーン中の前記第一ボリュームに依存して前記新規ボリュームを作成するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前回の即時仮想コピー・オペレーションが実施されて以後、前記第一ボリュームが修正されていると判定するステップと、
前記第一ボリュームから前記新規ボリュームへのマップを生成するステップと、
前記生成されたマップ基づき、前記依存関係チェーン中の前記第一ボリュームに依存して前記新規ボリュームを作成するステップと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記中間ボリュームおよび前記中間マップが既に生成されていると判定するのに応じて、前記依存関係チェーン中の前記中間ボリュームに依存して前記新規ボリュームを作成するステップ、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記中間ボリュームに依存する前記新規ボリュームに対する読み取り要求を受信するステップと、
前記読み取り要求に対するデータを、前記新規ボリューム、前記中間ボリューム、または前記第一ボリュームから、前述の順序で取得しようと試みるステップと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記中間ボリュームが書き込み要求に応答して更新されない、請求項１に記載の方法。
【請求項７】
前記新規ボリュームは第二ボリュームであって、前記方法が、
別の即時仮想コピー・オペレーションを実施して前記第一ボリュームから第三ボリュームへの別の即時仮想コピーを生成する要求を受信するステップと、
新規中間ボリュームおよび新規中間マップを生成するステップと、
前記新規中間マップに基づき、前記依存関係チェーンの中の前記第一ボリュームに依存して前記新規中間ボリュームを作成するステップと、
前記依存関係チェーン中の前記新規中間ボリュームに依存して前記第三ボリュームを作成するステップと、
をさらに含む、請求項１に記載の方法。
【請求項８】
前記第三ボリュームの更新が、前記第二ボリュームに保管されたデータに影響しない、請求項７に記載の方法。
【請求項９】
即時仮想コピーを維持するためのコンピュータ・システムであって、
プロセッサと、
前記プロセッサに接続されたストレージ・デバイスと、
を含み、
前記ストレージ・デバイスは保管されたプログラムを有し、前記プロセッサは、前記プログラムの命令を実行してオペレーションを実施するように構成され、前記オペレーションが、
即時仮想コピー・オペレーションを実施して第一ボリュームから新規ボリュームへの即時仮想コピーを生成する要求を、コンピュータのプロセッサを用いて受信するステップと、
第一ボリュームからの最初の即時仮想コピー・オペレーションでないと判定するステップと、
前回の即時仮想コピー・オペレーションが実施されて以後、前記第一ボリュームが修正されていないと判定するステップと、
中間ボリュームおよび中間マップが既に生成されているかどうかを判定するステップと、
前記中間ボリュームおよび前記中間マップがまだ生成されていないと判定するのに応じて、
前記中間ボリュームおよび前記中間マップを生成するステップと、
前記中間マップに基づき、依存関係チェーンの中の前記第一ボリュームに依存して前記中間ボリュームを作成するステップと、
前記依存関係チェーン中の前記中間ボリュームに依存して前記新規ボリュームを作成するステップと、
を含む、コンピュータ・システム。
【請求項１０】
前記オペレーションが、
前記即時仮想コピー・オペレーションは、前記第一ボリュームからの最初の即時仮想コピー・オペレーションであると判定するステップと、
前記第一ボリュームから前記新規ボリュームへのマップを生成するステップと、
前記生成されたマップ基づき、前記依存関係チェーン中の前記第一ボリュームに依存して前記新規ボリュームを作成するステップと、
をさらに含む、請求項９に記載のコンピュータ・システム。
【請求項１１】
前記オペレーションが、
前回の即時仮想コピー・オペレーションが実施されて以後、前記第一ボリュームが修正されていると判定するステップと、
前記第一ボリュームから前記新規ボリュームへのマップを生成するステップと、
前記生成されたマップ基づき、前記依存関係チェーン中の前記第一ボリュームに依存して前記新規ボリュームを作成するステップと、
をさらに含む、請求項９に記載のコンピュータ・システム。
【請求項１２】
前記オペレーションが、
前記中間ボリュームおよび前記中間マップが既に生成されていると判定するのに応じて、前記依存関係チェーン中の前記中間ボリュームに依存して前記新規ボリュームを作成するステップ、
をさらに含む、請求項９に記載のコンピュータ・システム。
【請求項１３】
前記オペレーションが、
前記中間ボリュームに依存する前記新規ボリュームに対する読み取り要求を受信するステップと、
前記読み取り要求に対するデータを、前記新規ボリューム、前記中間ボリューム、または前記第一ボリュームから、前述の順序で取得しようと試みるステップと、
をさらに含む、請求項９に記載のコンピュータ・システム。
【請求項１４】
前記中間ボリュームが書き込み要求に応答して更新されない、請求項９に記載のコンピュータ・システム。
【請求項１５】
前記新規ボリュームは第二ボリュームであって、前記オペレーションが、
別の即時仮想コピー・オペレーションを実施して前記第一ボリュームから第三ボリュームへの別の即時仮想コピーを生成する要求を受信するステップと、
新規中間ボリュームおよび新規中間マップを生成するステップと、
前記新規中間マップ基づき、前記依存関係チェーンの中の前記第一ボリュームに依存して前記新規中間ボリュームを作成するステップと、
前記依存関係チェーン中の前記新規中間ボリュームに依存して前記第三ボリュームを作成するステップと、
をさらに含む、請求項９に記載のコンピュータ・システム。
【請求項１６】
前記第三ボリュームの更新が、前記第二ボリュームに保管されたデータに影響しない、請求項１５に記載のコンピュータ・システム。
【請求項１７】
即時仮想コピーを維持するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータ可読プログラム・コードを有していて、
前記コンピュータ可読プログラム・コードは、コンピュータのプロセッサで実行されたとき、
即時仮想コピー・オペレーションを実施して第一ボリュームから新規ボリュームへの即時仮想コピーを生成する要求を、前記コンピュータの前記プロセッサを用いて受信するステップと、
第一ボリュームからの最初の即時仮想コピー・オペレーションでないと判定するステップと、
前回の即時仮想コピー・オペレーションが実施されて以後、前記第一ボリュームが修正されていないと判定するステップと、
中間ボリュームおよび中間マップが既に生成されているかどうかを判定するステップと、
前記中間ボリュームおよび前記中間マップがまだ生成されていないと判定するのに応じて、
前記中間ボリュームおよび前記中間マップを生成するステップと、
前記中間マップ基づき、依存関係チェーンの中の前記第一ボリュームに依存して前記中間ボリュームを作成するステップと、
前記依存関係チェーン中の前記中間ボリュームに依存して前記新規ボリュームを作成するステップと、
を実施するように構成される、コンピュータ・プログラム。
【請求項１８】
前記コンピュータ可読プログラム・コードが、前記コンピュータの前記プロセッサによって実行されたとき、
前記即時仮想コピー・オペレーションが、前記第一ボリュームからの最初の即時仮想コピー・オペレーションであると判定するステップと、
前記第一ボリュームから前記新規ボリュームへのマップを生成するステップと、
前記生成されたマップに基づき、前記依存関係チェーン中の前記第一ボリュームに依存して前記新規ボリュームを作成するステップと、
を実施するように構成される、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記コンピュータ可読プログラム・コードが、前記コンピュータの前記プロセッサによって実行されたとき、
前回の即時仮想コピー・オペレーションが実施されて以後、前記第一ボリュームが修正されていると判定するステップと、
前記第一ボリュームから前記新規ボリュームへのマップを生成するステップと、
前記生成されたマップに基づき、前記依存関係チェーン中の前記第一ボリュームに依存して前記新規ボリュームを作成するステップと、
を実施するように構成される、請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
前記コンピュータ可読プログラム・コードが、前記コンピュータの前記プロセッサによって実行されたとき、
前記中間ボリュームおよび前記中間マップが既に生成されていると判定するのに応じて、前記依存関係チェーン中の前記中間ボリュームに依存して前記新規ボリュームを作成するステップ、
を実施するように構成される、請求項１７に記載のコンピュータ・プログラム。
【請求項２１】
前記コンピュータ可読プログラム・コードが、前記コンピュータの前記プロセッサによって実行されたとき、
前記中間ボリュームに依存する前記新規ボリュームに対する読み取り要求を受信するステップと、
前記読み取り要求に対するデータを、前記新規ボリューム、前記中間ボリューム、または前記第一ボリュームから、前述の順序で取得しようと試みるステップと、
を実施するように構成される、請求項１７に記載のコンピュータ・プログラム。
【請求項２２】
前記中間ボリュームが書き込み要求に応答して更新されない、請求項１７に記載のコンピュータ・プログラム。
【請求項２３】
前記新規ボリュームは第二ボリュームであって、前記コンピュータ可読プログラム・コードが、前記コンピュータの前記プロセッサによって実行されたとき、
別の即時仮想コピー・オペレーションを実施して前記第一ボリュームから第三ボリュームへの別の即時仮想コピーを生成する要求を受信するステップと、
新規中間ボリュームおよび新規中間マップを生成するステップと、
前記新規中間マップに基づき、前記依存関係チェーンの中の前記第一ボリュームに依存して前記新規中間ボリュームを作成するステップと、
前記依存関係チェーン中の前記新規中間ボリュームに依存して前記第三ボリュームを作成するステップと、
を実施するように構成される、請求項１７に記載のコンピュータ・プログラム。
【請求項２４】
前記第三ボリュームの更新が、前記第二ボリュームに保管されたデータに影響しない、請求項２３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸実施形態は、多重ターゲット・コピーの維持に関する。
【背景技術】
【０００２】
コンピューティング・システムは、多くの場合、（データを処理し、アプリケーション・プログラム、データを保管するための直接アクセス・ストレージ・デバイス（ＤＡＳＤ：ｄｉｒｅｃｔ  ａｃｃｅｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）、およびプロダクション・コンピュータとＤＡＳＤとの間のデータの転送を制御するためのストレージ・コントローラを作動するための）一つ以上のプロダクション・コンピュータを含む。ストレージ・コントローラ（制御ユニットまたはストレージ・ディレクタとも言われる）は、ループ・アーキテクチャ状に接続された多数のハード・ディスク・ドライブから成るストレージ・スペース（直接アクセス・ストレージ・デバイス（ＤＡＳＤ）とも言われる）へのアクセスを管理する。プロダクション・コンピュータは、ストレージ・コントローラを介してストレージ・スペースに入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を伝達することができる。
【０００３】
大きな組織体におけるデータの保存は、何らかのハードウェア故障が生じた際の、データの信頼性およびデータを回復する能力の両方が重要である。ストレージ・エリア・ネットワーク（ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）は、非常に大きな量のデータを信頼できる安全な仕方で保管する必要があるときに用いられるアーキテクチャである。この技術は、サーバのディスク・アレイなど遠隔コンピュータのストレージ・デバイスが、オペレーティング・システムにローカルに付属されているように見えるようにして、これらデバイスの接続をサポートするネットワークの生成を可能にする。通常、これらのネットワークは、データ保存および個別コンポーネント間のハードウェア接続の両面で、大容量の冗長度を含む。データの冗長度を生成するためのさまざまな技法が存在する。
【０００４】
多くのシステムにおいて、ＤＡＳＤなどの一つのストレージ・デバイス上のデータ・ボリュームは、同じまたは別のストレージ・デバイスにコピーすることができる。ポイントインタイム・コピーは、ターゲット・ボリュームがある時点におけるデータのコピーを有するように、ソース・ボリュームからターゲット・ボリュームに、全データを物理的にコピーすることを含む。また、ポイントインタイム・コピーは、データのコピーを論理的に作成し、その後、必要なときにだけデータをコピーし、実質的に物理的コピーを遅らせて作成することもできる。この論理的コピー・オペレーションは、ターゲット・ボリュームおよびソース・ボリュームにアクセスできない時間を短縮するために行われる。
【０００５】
直接アクセス・ストレージ・デバイス（ＤＡＳＤ）のサブシステムの多くは、「即時仮想コピー」オペレーション（「高速複製機能」とも言われる）を実施することができる。即時仮想コピー・オペレーションは、関係テーブルまたはポインタなどのメタデータを修正し、ソース・データ・オブジェクトをオリジナルおよびコピーの双方として取り扱うことによって機能する。プロダクション・コンピュータのコピー要求に応答して、ストレージ・サブシステムは、データの物理的コピーを一切作成することなく、そのコピーの生成を直ちにレポートする。「仮想」コピーだけが生成され、追加の物理的コピーが無いことは、プロダクション・コンピュータには全く分からない。
【０００６】
後に、ストレージ・システムがオリジナルまたはコピーの更新を受信したとき、その更新は、別に保管されて更新されたデータ・オブジェクトだけが相互参照される。この時点で、オリジナル・データ・オブジェクトとコピー・データ・オブジェクトとの枝分かれが開始される。第一のメリットは、即時仮想コピーはほぼ瞬時に作成され、通常の物理的コピー・オペレーションよりもはるかに早く完了することである。これにより、プロダクション・コンピュータおよびストレージ・サブシステムは自由に他のタスクを遂行することができる。プロダクション・コンピュータまたはストレージ・サブシステムは、バックグラウンド処理の間に、または別の時間に、オリジナル・データ・オブジェクトの実際の物理的コピーの生成を進めることさえ可能である。
【０００７】
かかる即時仮想コピー・オペレーションの一つは、ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）オペレーションとして知られる。（ＦＬＡＳＨＣＯＰＹは、米国もしくは他の国々またはその両方におけるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標またはコモンロー商標である。）ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）オペレーションは、同一のまたは異なったデバイス上のソース・ボリュームとターゲット・ボリュームとの間の論理的ポイントインタイム関係を確立することを含む。
【０００８】
ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）オペレーションなどの即時仮想コピー技法は、ポイントインタイム・コピーのツールを提供する。しかして、即時仮想コピーは、データ・セットまたはボリュームの瞬間スナップショットと言い表すことができる。
【０００９】
例えば、ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）機能などの機能は、管理者が、読み取りまたは書き込みアクセスのため即時に利用可能なコピーを備えた、ポイントインタイムのデータの全ボリュームのコピーを作成することを可能にする。ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）機能は、テープ上にバックアップ・コピーを生成する環境において利用可能な、標準的バックアップ・ツールとともに用いることができる。ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）機能は、ターゲット・ボリューム上にソース・ボリュームのコピーを生成する。このコピーは、前述のように、ポイントインタイム・コピーと呼ばれる。ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）オペレーションが開始されると、ソース・ボリュームとターゲット・ボリュームとの間に関係付けが生成される。この関係付けは、ソース・ボリュームおよびターゲット・ボリュームの「マッピング」である。このマッピングは、関連付けられたターゲット・ボリュームにコピーされる当該ソース・ボリュームのポイントインタイム・コピーを可能にする。この関係付けは、このボリューム・ペアの間に、ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）オペレーションが開始されてから、ストレージ・ユニットがソース・ボリュームからターゲット・ボリュームに全データをコピーするまで存在し、それを過ぎると関係付けは消去される。
【００１０】
データが物理的にコピーされるとき、バックグラウンド・プロセスは、ソース・ボリュームからターゲット・ボリュームにトラックをコピーする。このバックグラウンド・コピーを完了するのに要する時間量は、コピーされるデータの量、実行されているバックグラウンド・コピー・プロセスの数、および現在行われている他の一切のアクティビティなど、さまざまな尺度により決まる。ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）機能は、コピーされるデータを、実際に即座にコピーする必要はなく、ソース・ボリューム上の何らかの旧データの上書きを伴う更新の直前にだけコピーを必要とするように機能する。すなわち、ソース・ボリューム上のデータが変更される際、オリジナルのデータが、ソース・ボリューム上で上書きされる前に、ターゲット・ボリュームにコピーされる。
【００１１】
上記の如く、ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）は、ユーザまたは自動化プロセスが、データの論理ボリューム全体のほぼ即時のコピーを作成することを可能にする、さまざまなストレージ・デバイスに対応可能な機能である。ソース・ディスクのコピーがターゲット・ディスク上に作成される。これらのコピーは、読み取りおよび書き込みアクセスのため即座に利用可能である。実装などのＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）の共通機能は、コピーを反転する能力である。すなわち、ＦＬＡＳＨＣＯＰＹ（ＩＢＭ社の登録商標）マップのソース・ディスクにターゲット・ディスクの内容を追加する能力である。
【００１２】
多重ターゲット即時仮想コピーは、ユーザが、プロダクション・ボリュームの多くのポイントインタイム・イメージ（すなわち、即時仮想コピー）を生成することを可能にする、ストレージ・コントローラ中の共通コピー・サービス機能である。これらのボリュームは、データの破損が生じたとき、またはテストおよび開発活動によってデータが変更されたとき、データを復元するために用いることができる。かかる機能を用いる理由は多く、必要なコピーの数も多くなっている。また、略連続的データ保護（ＣＤＰ：Ｃｏｎｔｉｎｕｏｕｓ  Ｄａｔａ  Ｐｒｏｔｅｃｔｉｏｎ）またはゴールデン・イメージなどのハイ・レベル機能も利用可能である。ＣＤＰは、データに加えられたあらゆる変更のコピーを自動的に保存するデータのバックアップ、と言い表すことができる。データ（例、アプリケーション）のオリジナル・バージョンをゴールデン・イメージと言うことができ、このゴールデン・イメージから複数のコピーを作成することが可能である。
【００１３】
即時仮想コピー機能を実装するため用いることのできるいくつかの基本的技法には、コピーオンライトおよびリダイレクトオンライトが含まれる。コピーオンライトおよびリダイレクトオンライトの両方は、イメージ・データを追跡する。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
コピーオンライトを用いて多くのイメージを維持する一つのアプローチでは、ソースまたはプロダクション・ボリュームへのプロダクション・コンピュータの書き込みアクティビティに起因して、サポートの必要なイメージが多いほど、イメージ維持のために必要な書き込みに対するオーバーヘッドが増える。
【課題を解決するための手段】
【００１５】
即時仮想コピーを維持するための方法、コンピュータ・プログラム製品、およびシステムが提供される。即時仮想コピー・オペレーションを実施し第一ボリュームから新規ボリュームへの即時仮想コピーを生成する要求が受信される。第一ボリュームが、前回の即時仮想コピー・オペレーションが実施されて以後、修正されていないとの判定がされる。中間ボリュームおよび中間マップが既に生成されているかどうかが判定される。中間ボリュームおよび中間マップがまだ生成されていないと判定するのに応じて、中間ボリュームおよび中間マップが生成される。中間ボリュームは、中間マップに基づき、依存関係チェーンの中の第一ボリュームに依存して作成され、新規ボリュームは、依存関係チェーン中の中間ボリュームに依存して作成される。
【００１６】
次に図面を参照する。図面中、同じ参照符号は同じ要素を表す。
【図面の簡単な説明】
【００１７】
【図１】特定の実施形態による、コンピューティング環境をブロック図で表す。
【図２】特定の実施形態による、４つのボリューム（ｖｄｉｓｋ（仮想ディスク）とも言われることもある）およびいくつかのボリュームの間のマッピングをブロック図で表す。
【図３】特定の実施形態による、ストレージ・ボリュームのカスケードの一例をブロック図で表す。これらボリュームはそれぞれのマップとリンクされ、各マップは、ソース・ボリュームからターゲット・ボリュームへの即時仮想コピー機能を定義する。
【図４】特定の実施形態による、中間ボリュームおよび中間マップを含む、ストレージ・ボリュームのカスケードの一例をブロック図で表す。
【図５】特定の実施形態による、カスケード・ツールによって実施される処理をフロー図で表す。
【図６】特定の実施形態による使用が可能な、あるコンピュータ・アーキテクチャをブロック図で表す。
【発明を実施するための形態】
【００１８】
本発明のさまざまな実施形態の説明を例示目的で提示するが、これらは網羅的であること、または開示された実施形態に限定することは意図されていない。当業者には、説明された実施形態の範囲から逸脱しない多くの修改および変形が明白であろう。本明細書で使われる用語は、諸実施形態の原理、実際的な応用、または市販の技術へのテクニカルな改良を最善に説明し、他の当業者が、本明細書に開示された諸実施形態を理解できるように選択し説明されたものである。
【００１９】
図１は、特定の実施形態による、コンピューティング環境をブロック図で表す。ストレージ・コントローラ１００は、（例えば、論理ユニット番号、論理デバイスなどの）ボリューム１２２ａ、ｂ．．．ｎおよび１４２ａ、ｂ、．．．ｌを、それぞれ有するように構成されたストレージ１２０および１４０に向けられた、ネットワーク１９０を介して、プロダクション・コンピュータ１５０ａ、ｂ、．．．ｋからの入力／出力（Ｉ／Ｏ）要求を受信する（上記のａ、ｂ、およびｋは任意の整数値であり得、プロダクション・コンピュータ１５０ｂとプロダクション・コンピュータ１５０ｋとの間の省略記号は任意の数のプロダクション・コンピュータがあり得ることを示す）。上記のｎとｌとは異なる整数値にすることも、同一の整数値にすることも可能である。図中のストレージ１２０と１４０との間の省略記号は、任意の数のストレージ・デバイスがあり得ることを示す。ストレージ１２０、１４０は、ＤＡＳＤなどのストレージ・デバイスとすることができる。
【００２０】
ストレージ・コントローラ１００は、カスケード・エンジン１１０をさらに含む。カスケード・エンジン１１０は、（例えば、プロダクション・コンピュータ１５０ａ、１５０ｂ、１５０ｋからの）データの、ストレージ１２０、１４０へのまたはストレージ１２０、１４０の間での即時仮想コピーを実施する。本発明の特定の実施形態において、カスケード・エンジン１１０は、ストレージ・コントローラ１００での実行に代えて、またはこれに加えて、ストレージ・コントローラ１００に接続された別のストレージ・コントローラで実行することが可能である。
【００２１】
ボリュームは、ストレージの任意の論理的なまたは物理的なエレメントとすることができる。特定の実施形態において、データ・ブロックはトラックの内容であり、サブデータ・ブロックはトラックのセクタの内容である。ボリュームは、データ・ブロック（「データのブロック」とも言われる）を包含するストレージのブロック中に分割することができ、ストレージのブロックは、サブデータ・ブロック（「データのサブブロック」とも言われる）を包含する、ストレージのサブブロック中にさらに分割される。
【００２２】
本発明の実施形態は、任意のストレージ媒体の間のデータの転送に適用することが可能である。例えば、本発明の特定の実施形態は、図１に示したような、単一のストレージ・コントローラに配置されたストレージ媒体に用いることができる。さらに、本発明の別の特定の実施形態は、異なったストレージ・コントローラ群、異なった物理サイト群などに配置されたストレージ媒体に用いることも可能である。各ストレージ・デバイスが、即時仮想コピーに対するソースまたはターゲットであり得る。
【００２３】
特定の実施形態において、（ストレージ１２０、１４０に代えて、またはこれらに加えて）リムーバブル・ストレージを用いてコピーを維持することができる。リムーバブル・ストレージをストレージ・コントローラ１００に在置することができる。
【００２４】
ストレージ・コントローラ１００には、プロセッサ複合体（図示せず）をさらに含めることができ、これを当該技術分野で公知の任意のストレージ・コントローラまたはサーバを含むことができる。
【００２５】
プロダクション・コンピュータ１５０ａ、ｂ．．．ｋには、当該技術分野で公知の任意のコンピューティング・デバイスを含めることができる。ストレージ・コントローラ１００と、プロダクション・コンピュータ・システム（群）１５０ａ、ｂ．．．ｋとは、ネットワーク１９０を介して交信し、このネットワークには、例えば、ストレージ・エリア・ネットワーク（ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、イントラネットなど、任意の種類のネットワークを含めることが可能である。ストレージ１２０、１４０の各々には、例えば、直接アクセス・ストレージ・デバイス（ＤＡＳＤ）、単純ディスク束（ＪＢＯＤ：Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）、独立ディスクの冗長アレイ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）、仮想化デバイスなど、ストレージ・デバイスのアレイを含めることができる。
【００２６】
さらに、図１には単一のストレージ・コントローラ１００が示されているが、当業者は、複数のストレージ・コントローラを（例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネットなどの）ネットワークを介して接続し、それら複数のストレージ・コントローラの一つ以上に対し本発明の実装が可能なことを存知していよう。
【００２７】
即時仮想コピー命令が即時仮想コピー・プロセスを開始させ、このプロセスがソース・ボリュームからターゲット・ボリュームへのマップを生成する。このときから、この特定の時点におけるソース・ボリュームのイメージが、ターゲット・ボリューム上で利用可能になる。これにより、ソース・ボリューム上のデータのバックアップが生成される。さらに、オリジナル・データがオリジナル・ソース・ボリュームに保存されているので、オリジナル・データのいずれも喪失の危険を伴うことなく、ソース・ボリュームのデータに対しテストおよび他の管理タスクを実行することが可能になる。
【００２８】
即時仮想コピーが作成されると、それは、マップの定義により、ソース、ターゲットの２つのボリュームの間のリンクを生成する。このときから、ターゲット・ボリュームへのいかなるアクセスも即時にソース・ボリュームのイメージの関係部分のコピーを引き起こすことになり、また、ソース・ボリュームが保管しているイメージに変更をもたらす可能性のある、ソース・ボリュームへのいかなるアクセスも未変更データのターゲット・ボリュームへの即時のコピーを引き起こすことになる、ということを追加要件として、バックグラウンドでデータをコピーすることができる。このように、外部ユーザに対し、ターゲット・ボリュームは、ソース・ボリュームのその時点でのコピーを保管するが、但し、データは前述の状況の下でだけ物理的にコピーされることになる。
【００２９】
また、即時仮想コピー機能のターゲット・ボリュームであるストレージ・ボリュームが、さらなる即時仮想コピー機能のソース・ボリュームとなることもあり得、しかして、ストレージ・ボリュームのカスケードが生成される。
【００３０】
カスケード・エンジン１１０は、オーバーヘッドを最小化するために、ターゲット・ボリュームの間に依存関係を生成することによって、カスケード式のアプローチを実施する。図２は、特定の実施形態による、４つのボリューム（ｖｄｉｓｋと言われることもある）およびいくつかのボリュームの間のマッピングをブロック図で表す。具体的には、図２は、ボリュームＡ２００、ボリュームＢ２１０、ボリュームＣ２２０、およびボリュームＤ２３０を示す。図２を参照すると、カスケード・エンジン１１０は、
１：Ａ→Ｂ
２：Ａ→Ｃ
３：Ａ→Ｄ
で定義される３つの即時仮想コピーのマップ１、２、３を生成する。
【００３１】
カスケード・エンジン１１０は、これらのマップ１、２、および３から始めて、Ａ→Ｄ→Ｃ→Ｂの依存関係チェーンを生成する。図３は、特定の実施形態による、ストレージ・ボリューム２００、２３０、２２０、２１０のカスケードの一例をブロック図で表し、これらボリュームはそれぞれのマップ３００、３０２、３０４によってリンクされ、各マップは、ソース・ボリュームからターゲット・ボリュームへの即時仮想コピー機能を定義する。図３において、ボリュームＤ２３０はボリュームＡ２００のバックアップを提供し、ボリュームＣ２２０はボリュームＤ２３０のバックアップを提供し、ボリュームＢ２１０はボリュームＣ２２０のバックアップを提供している。異なるストレージ・ボリューム２００、２１０、２２０、２３０をリンクしているこれら即時仮想コピー機能はおそらく相異なる時間に開始されており、これにより、それぞれのストレージ・ボリューム２００、２１０、２２０、２３０によって保管される、イメージの相異なるポイントインタイム・コピーが生成される。
【００３２】
即時仮想コピーのＡ→Ｄ→Ｃ→Ｂのカスケードにおいて、Ａ、Ｄ、Ｃ、およびＢは図２に示されたカスケード中のボリュームであり、矢印は即時仮想コピー・マップであって、ここで（Ａ，Ｄ）で、ボリュームＡ２００からボリュームＤ２３０への即時仮想コピー・マッピングを表すものとすれば、このカスケードは、マップ（Ａ，Ｄ）、（Ｄ，Ｃ）および（Ｃ，Ｂ）を有することになる。このカスケードの実装において、ボリュームＡ２００への新規データの書き込みは、各即時仮想コピー機能による、ボリュームＤ２３０へのスプリット書き込みを引き起こし得、これはボリュームＤ２３０上にイメージを維持するために必要である。
【００３３】
特に、あるストレージ・ボリュームが複数の即時仮想コピー機能のソースとして使われる場合には、もっと複雑なカスケードも可能である。例えば、ユーザが、ディスクＡが保管している現在のイメージに対し２つの異なったテストを実施したいと望むことがある。そのユーザは、例えば、即時仮想コピー・マップＡ→ＢおよびＡ→Ｅを開始し、個々のテストをディスクＢとＥとで実施することができる。ユーザが、次いでこれら２つのテストの結果の後者を選好する場合、ユーザは、即時仮想コピー・マップＥ→Ａを開始してそのデータをディスクＡに逆転送することが可能である。同様に、オリジナル・ディスクにデータを復元するため実施される、即時仮想コピーの反転も、ディスクおよび即時仮想コピー・マップの複雑な配列をもたらす。
【００３４】
図３を参照すると、各ターゲット・ボリューム２１０、２２０、２３０が提示するイメージは、まず、それ自体を調べることによって生成される。当該ターゲット・ボリューム２１０、２２０、２３０が必要なデータを含む場合、そのデータが読み出される。当該ターゲット・ボリューム２１０、２２０、２３０が必要なデータを包含していない場合は、カスケード・エンジン１１０が、そのデータが見付かるまで、（図３の依存関係チェーンの左方向に）上流を調べる。
【００３５】
ボリュームＡ２００のある領域が修正された場合、その領域に保持されていたオリジナル・データは、ボリュームＤ２３０にコピーされ、その後でその領域の修正が可能になる。しかして、カスケード処理は、これら全てのイメージを維持するためのオーバーヘッドを低減する。つまり、オーバーヘッドがイメージの数に制約されないので、イメージの数は関係がなくなる。
【００３６】
カスケード・エンジン１１０は、コピーオンライト実装のための多数のポイントインタイム・イメージに起因するオーバーヘッドを限定する。例えば、ターゲット・ボリューム自体が修正される場合、追加の変更が行われる。ボリュームＣ２２０のある領域が修正される場合、ボリュームＢ２１０を維持するために、カスケード・エンジン１１０は、まず、ボリュームＤ２３０（またはボリュームＡ２００）から対応する領域をコピーし、そのデータをボリュームＢ２１０に書き込む。
【００３７】
特定の実施形態において、一部のターゲット・ボリュームは、決してまたはめったに修正されず、下支えストレージが全体に割り当てられる（すなわち、シン・プロビジョンされていない）。特定の実施形態において、ターゲット・ボリュームは、「無駄な」容量を回避するためシン・プロビジョンされ、これにより、ユーザは、決して変更しないかまたはめったに変更しないデータを保持するための容量に対する費用を回避できる。シン・プロビジョン型ボリュームは、これらに書き込まれたデータの量に比例するバックエンド・ストレージを消費すると言い表すことができよう。カスケード型アプローチを用いれば、見かけ上は相独立したイメージ群が（例えば、ターゲット・イメージ群に多くの変更が加えられる場合などに）各イメージが必要とする容量に影響を及ぼすことが可能である。この影響は、ターゲット・イメージ群が、それらのライフタイム期間に多くの変更を受ける場合特に顕著である。
【００３８】
カスケード・エンジン１１０は、ターゲット・イメージ間の依存関係を除去するために、中間マップおよび中間ボリュームを生成する。中間マップおよび中間ボリュームは、相互に関連している。このアプローチを用いれば、ターゲット・ボリュームへの修正が他のターゲット・ボリュームに影響することはない。
【００３９】
単に理解を深めてもらうために、ある事例を提示する。この例において、ボリュームＡ２００からボリュームＢ２１０への即時仮想コピーに対する要求を受信するのに応じて、カスケード・エンジン１１０がマップ１を開始する際、カスケード・エンジン１１０は、
１：Ａ→Ｂ
１’：Ａ→Ｂ’
によって定義される中間マップ１’および中間ボリュームＢ’４１０をも生成する。これにより、
Ａ→Ｂ’ →Ｂ
の依存関係チェーンがもたらされる。
【００４０】
この例において、マップ１が既に開始されているので、どの書き込みもボリュームＡ２００を修正しておらず、ボリュームＡ２００からボリュームＣ２２０への即時仮想コピーに対する別の要求を受信するのに応じて、カスケード・エンジン１１０が、マップ２
２：Ａ→Ｃ
を開始する。
【００４１】
この場合、カスケード・エンジン１１０は、別の中間ボリュームまたは中間マップを生成しない。代わりに、カスケード・エンジン１１０は、中間ボリュームＢ’４１０からボリュームＣ２２０を分岐させ、その依存関係チェーンは以下となる：
Ａ→Ｂ’（→Ｂ、→Ｃ）。
【００４２】
上記依存関係チェーンの（→Ｂ、→Ｃ）によって表される部分は、これが中間ボリュームＢ’４１０の分岐点であり、その結果ボリュームＢ２１０およびボリュームＣ２２０が、相互に独立しており中間ボリュームＢ’４１０およびボリュームＡ２００のみに依存することを表す。
【００４３】
次に、ボリュームＡ２００が修正されると仮定して、カスケード・エンジン１１０が、ボリュームＡ２００からボリュームＤ２３０への即時仮想コピーに対する要求を受信するのに応じて、マップ３を開始する。この場合、カスケード・エンジンは、
３’：Ａ→Ｄ’
によって定義される中間ボリュームＤ’４２０および中間マップ３’を生成する。
【００４４】
下記はこの依存関係チェーンであり、図４は、特定の実施形態による、下記の依存関係チェーンに対する、中間ボリュームおよび中間マップを含む、ストレージ・ボリュームのカスケードの一例をブロック図で表す：
Ａ→Ｄ’（→Ｄ）→Ｂ’（→Ｂ、→Ｃ）。
【００４５】
中間ボリュームおよび関連する中間マップを有するこの依存関係チェーンにおいて、ボリュームＣ２２０の読み取りでは、対象データは、ボリュームＣ２２０上、または中間ボリュームＢ’４１０上、またはボリュームＡ２００上のいずれかで見出されることになろう。ボリュームＢ２１０の読み取りでも、対象データは、ボリュームＢ２１０上、または中間ボリュームＢ’４１０上、またはボリュームＡ２００上のいずれかで見出されることになろう。
【００４６】
中間ボリュームＤ’４２０およびＢ’４１０は書き込みはされず、これらの目的は、それぞれ、ボリュームＤ２３０と、ボリュームＣ２２０およびＢ２１０とに対するデータを維持することである。すなわち、中間ボリュームに対する書き込み要求が受信されても、その書き込み要求は拒否される。
【００４７】
この時点では、ボリュームＤ２３０への書き込みは、ボリュームＢ２１０またはボリュームＣ２２０に何ら影響を及ぼさない。同様に、ボリュームＢ２１０への書き込みは、ボリュームＣ２２０またはボリュームＤ２３０に何ら影響を及ぼさない。ボリュームＢ２１０、Ｃ２２０、およびＤ２３０は相互に独立しており、これらの各々に割り当てられるデータは、当該ボリュームＢ２１０、Ｃ２２０、または２３０に書き込まれるデータだけである。
【００４８】
中間ボリュームＤ’４２０がボリュームＡ２００の領域に書き込み予定のデータを保持し、ボリュームＤ２３０が対応する領域に対するデータを保持し、ボリュームＢ２１０およびボリュームＣ２２０も、同じ対応領域に対するデータを保持することは可能である。特定の実施形態において、中間ボリュームＤ’４２０上のデータは不要なので、使用容量を最小化するためにガーベジ・コレクション手順が用いられる。このようにして、カスケード・エンジン１１０は、ターゲット入力／出力（Ｉ／Ｏ）（すなわち、読み取り／書き込み）アクティビティの量に関係なく、ターゲット・イメージを維持するため最小の容量だけが使用されていることを確実にする。
【００４９】
図５は、特定の実施形態による、カスケード・エンジン１１０によって実施される処理をフロー図で表す。制御は、カスケード・エンジン１１０が、第一ボリュームから新規ボリュームへの（例えば、ボリュームＡ２００からボリュームＢ２１０、ボリュームＡ２００からボリュームＣ２２０、またはボリュームＡ２００からボリュームＤ２３０への）即時仮想コピーを生成するための即時仮想コピー・オペレーションを実施する要求、を受信するブロック５００で開始される。
【００５０】
ブロック５０２で、カスケード・エンジン１１０は、これが第一ボリュームからの最初の即時仮想コピー・オペレーションであるか（すなわち、今まで他の即時仮想コピーが作成されたことはないか）どうかを判定する。最初のものであれば、処理はブロック５０４へと続き、そうでなければ、処理はブロック５０８に続く。ブロック５０４で、カスケード・エンジン１１０は、第一ボリュームから新規ボリュームへのマップを生成する。ブロック５０６で、カスケード・エンジン１１０は、依存関係チェーン中の第一ボリュームに依存して新規ボリュームを作成する。
【００５１】
ブロック５０８で、カスケード・エンジン１１０は、第一ボリュームが、前回の即時仮想コピー・オペレーション以後に修正されているかどうかを判定する。修正されている場合、処理はブロック５１０へと続き、そうでなければ、処理はブロック５１４に続く（図５）。ブロック５１０で、カスケード・エンジン１１０は、第一ボリュームから新規ボリュームへのマップを生成する。ブロック５１２で、カスケード・エンジン１１０は、依存関係チェーン中の第一ボリュームに依存して新規ボリュームを作成する。
【００５２】
ブロック５１４で、カスケード・エンジン１１０は、中間ボリュームおよび中間マップが既に生成されているかどうかを判定する。生成されていれば、処理はブロック５１６へと続き、そうでなければブロック５１８に続く。
【００５３】
ブロック５１６で、カスケード・エンジン１１０は、依存関係チェーン中の直近に生成された中間ボリュームに依存して新規ボリュームを作成する。
【００５４】
ブロック５１８で、カスケード・エンジン１１０は、新規の中間ボリュームおよび関連する新規中間マップを生成する。ブロック５２０で、カスケード・エンジン１１０は、依存関係チェーン中の第一ボリュームに依存して中間ボリュームを作成する。処理は、ブロック５２０からブロック５１６に続く。
【００５５】
実施形態の追加的な詳細
当業者ならよく理解できるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウエア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが中に具現化されている一つ以上のコンピュータ可読媒体中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
【００５６】
一つ以上のコンピュータ可読媒体の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、固体メモリ、磁気テープ、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによってあるいはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
【００５７】
コンピュータ可読信号媒体は、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含み得る。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによってまたはこれらに関連させて使用するためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【００５８】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００５９】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うこともできる。
【００６０】
本発明の態様は、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら説明している。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに与え、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／動作群を実装するための手段を生成するようにすることができる。
【００６１】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能／動作を実装する命令群を包含する製造品を生成するようにすることができる。
【００６２】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連の（例えば、演算またはステップなどの）オペレーション処理が実行されるようにして、コンピュータ実装されるプロセスを生成し、当該コンピュータ上または他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００６３】
説明したオペレーションを実装するコードは、（例えば、集積回路チップ、プログラム可能ゲート・アレイ（ＰＧＡ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの）ハードウェア・ロジックまたは回路構成中に実装することがさらに可能である。このハードウェア・ロジックをプロセッサに連結してオペレーションを実行することができる。
【００６４】
図６は、特定の実施形態による使用が可能な、コンピュータ・アーキテクチャ６００を表す。ストレージ・コントローラ１００もしくはプロダクション・コンピュータ１５０ａ、ｂ、．．．ｋまたはこれらの両方には、コンピュータ・アーキテクチャ６００を実装することができる。コンピュータ・アーキテクチャ６００は、プログラム・コードの保管もしくは実行またはその両方に適しており、システム・バス６２０を介して直接にまたは間接的にメモリ・エレメント６０４に連結された、少なくとも一つのプロセッサ６０２を含む。メモリ・エレメント６０４には、プログラム・コードの実際の実行の過程で用いられるローカル・メモリと、大容量ストレージと、実行の過程で大容量ストレージからコードを読み出さなければならない回数を低減するために、少なくとも一部のプログラム・コードの一時的格納を提供するキャッシュ・メモリとを含めることができる。メモリ・エレメント６０４は、オペレーティング・システム６０５および一つ以上のコンピュータ・プログラム６０６を包含する。
【００６５】
入力／出力（Ｉ／Ｏ）デバイス６１２、６１４（以下に限らないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む）は、直接にもしくは介在Ｉ／Ｏコントローラ６１０を介してシステムに連結することができる。
【００６６】
また、ネットワーク・アダプタ６０８をシステムに連結して、データ処理システムが、介在する私的ネットワークまたは公衆ネットワークを介して、他のデータ処理システムあるいは遠隔のプリンタまたはストレージ・デバイスに連結できるようにすることも可能である。モデム、ケーブル・モデム、およびイーサネット（Ｒ）カードは、現在利用可能なネットワーク・アダプタ６０８のほんの数例である。
【００６７】
コンピュータ・アーキテクチャ６００は、ストレージ６１６（例えば、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの不揮発性ストレージ・エリア）に連結することができる。ストレージ６１６は、内蔵ストレージ・デバイスあるいは取り付けストレージまたはネットワーク・アクセスが可能なストレージを含み得る。ストレージ６１６中のコンピュータ・プログラム６０６は、当該技術分野で周知のやり方で、メモリ・エレメント６０４中にロードしてプロセッサ６０２によって実行することができる。
【００６８】
コンピュータ・アーキテクチャ６００には、図示よりも少ないコンポーネント、図示されていない追加のコンポーネント、または図示のコンポーネントと追加のコンポーネントとの何らかの組み合わせを含めることが可能である。コンピュータ・アーキテクチャ６００には、メインフレーム、サーバ、パーソナル・コンピュータ、ワークステーション、ラップトップ、ハンドヘルド・コンピュータ、電話デバイス、ネットワーク機器、仮想化デバイス、ストレージ・コントローラなど、当該技術分野で周知の任意のコンピューティング・デバイスを含めることができる。
【００６９】
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、規定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序を外れて行われ得ることに留意すべきである。例えば、連続して示された２つのブロックが、関与する機能によって実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する、特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【００７０】
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに当然のことながら、本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた機能、整数、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の機能、整数、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在を排除するものではない。
【００７１】
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を遂行するための、一切の構造、材料または動作を包含することが意図されている。本発明の実施形態の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲から逸脱することのない多くの修改および変形が明白であろう。本実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えたさまざまな実施形態のために、本発明を理解できるように選択し説明されたものである。
【００７２】
本発明の実施形態の前述の説明は、例示および説明の目的で提示されたものである。網羅的であること、あるいは、これら実施形態を開示された通りの形態に限定することを意図していない。前述の教示を踏まえて、多くの修改および変形が可能である。これらの実施形態の範囲は、この詳細な説明には限定されるものでなく、むしろ、本明細書に添付された請求項によって限定されるように意図されている。前述の明細、例、およびデータは、これら実施形態の構成物の製作および使用の全面的な説明を提示している。本発明の範囲を逸脱することなく多くの実施形態を作成することが可能なので、それらの実施形態は、添付の請求項、または後に出願される一切の請求項、およびこれらの同等物に帰属する。
【図１】
0005669988.tif 000002
【図２】
0005669988.tif 000003
【図３】
0005669988.tif 000004
【図４】
0005669988.tif 000005
【図５】
0005669988.tif 000006
【図６】
0005669988.tif 000007