(57)【特許請求の範囲】
【請求項１】
第１のストレージから第２のストレージへとデータをコピーするためのコンピュータ・プログラムであって、コンピュータに実行させる動作が、
前記第２のストレージへとコピーするために、前記第１のストレージ内のデータ・ブロックを示すデータ構造を生成する動作と、
ドレイン期間に前記第１のストレージに示された前記データ・ブロックを前記第２のストレージにコピーするためのドレイン動作を開始する動作と、
前記データ構造内に示された前記データ・ブロックへの書き込み要求を、前記ドレイン期間中、キューに入れる動作であって、前記キューに入れられた書き込み要求は、キューに入れられている間は完了しない、キューに入れる動作と、
前記ドレイン期間中に、前記第１のストレージ内のデータ・ブロックに対して実行される前記書き込みに基づいた計量情報を集める動作と、
前記ドレイン期間の満了に応答して、前記集められた計量情報から前記ドレイン動作を続行するかまたはドレイン動作を終了するかを決定する動作と、
を含む、コンピュータ・プログラム。
【請求項２】
前記動作が、
前記データ構造内に示されたデータ・ブロックが、前記第１のストレージから前記第２のストレージへの前記データ・ブロックのコピーに応答して、前記第２のストレージへコピーされた旨を示すように、前記データ構造を更新する動作と、
受信した書き込み要求が、前記第２のストレージへコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られるかどうかを決定する動作であって、前記第２のストレージへコピーされないものとして前記データ構造内に示された前記データ・ブロックに対する書き込み要求はキューに入れられる、決定する動作と、
前記データ構造が、前記第２のストレージへコピーされないものとして前記データ・ブロックを示さない旨を決定する動作に応答して、前記データ・ブロックへの前記書き込み要求を実行する動作と、
をさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記集められた計量情報から前記ドレイン動作を続行するかどうかを決定する動作が、
性能計量しきい値を提供する動作と、
前記集められた計量情報に基づいて計量値を決定する動作と、
前記ドレイン動作を続行するかどうかを決定するために、前記決定された計量値と前記性能計量しきい値とを比較する動作と、
を含む、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記性能計量しきい値が第１の性能計量しきい値を含み、前記ドレイン期間が第１のドレイン期間を含み、前記決定された計量値が第１の計量値を含み、前記ドレイン動作の続行に応答して、前記ドレイン動作が第２のドレイン期間に続行され、前記動作が、
前記第２のドレイン期間中、計量情報の収集を続行する動作と、
前記第２のドレイン期間の満了に応答して、前記集められた計量情報に基づいて第２の計量値を決定する動作と、
前記ドレイン動作を続行するかどうかを決定するために、前記決定された第２の計量値と第２の性能計量とを比較する動作と、
をさらに含む、請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記ドレイン動作が完了し、結果として前記データ構造内に示されたすべてのデータ・ブロックが前記第２のストレージにコピーされるまで、
前記第２の計量値またはその後計算された追加の計量値と前記第２の性能計量との比較に応答した、前記ドレインの続行決定に応答して、追加のドレイン期間に前記ドレイン動作を続行する動作と、
前記追加のドレイン期間に計量情報の収集を続行する動作と、
前記データ構造内に示されたすべてのデータ・ブロックが前記第２のストレージにコピーされる前の、前記追加のドレイン期間の満了に応答して、前記集められた計量情報に基づいて追加の計量値を決定する動作と、
前記決定された追加の計量値が前記第２の性能計量しきい値を下回るかどうかを決定する動作と、
前記追加の期間に前記ドレイン動作の続行に戻る動作と、
の反復を実行する、請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記集められた計量情報が受信した要求および衝突を示し、前記衝突が、前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求を含み、前記性能計量しきい値が衝突比しきい値を示し、前記決定された計量値が、前記集められた計量情報内に示された衝突の数と受信した書き込み要求の数との決定された衝突比を含み、さらに、前記決定された衝突比が前記衝突比しきい値を下回る旨の決定に応答して前記ドレイン動作が続行される、請求項３に記載のコンピュータ・プログラム。
【請求項７】
前記衝突比しきい値が第１の衝突比しきい値を含み、前記ドレイン期間が第１のドレイン期間を含み、前記決定された衝突比が第１の衝突比を含み、前記ドレイン動作の続行に応答して前記ドレイン動作が第２のドレイン期間に続行され、前記動作が、
受信した書き込み要求と、前記第２のドレイン期間中に前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求とを示す、計量情報の収集を続行する動作と、
前記第２のドレイン期間満了に応答して、前記集められた計量情報に基づいて第２の衝突比を決定する動作と、
前記決定された第２の衝突比が第２の衝突比しきい値を下回るかどうかを決定する動作と、
前記決定された第２の衝突比が前記第２の衝突比を下回る旨の決定に応答して、前記ドレイン動作を続行する動作と、
をさらに含む、請求項６に記載のコンピュータ・プログラム。
【請求項８】
前記第２の衝突比しきい値が前記第１の衝突比しきい値を下回る、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記集められた計量情報が受信した書き込み要求を完了する時間を示し、前記性能計量しきい値が書き込み時間しきい値を示し、前記決定された計量値が、前記集められた計量情報に基づいて決定された平均書き込み時間を含み、前記動作が、
前記決定された平均書き込み時間が前記書き込み時間しきい値を下回る旨の決定に応答して、前記ドレイン動作を続行する動作と、
前記決定された平均書き込み時間が前記書き込み時間しきい値を上回る旨の決定に応答して、前記ドレイン動作を終了する動作と、
をさらに含む、請求項３に記載のコンピュータ・プログラム。
【請求項１０】
前記集められた計量情報が、前記第２のストレージにまだコピーされていない前記データ構造内に示されたブロックの数と衝突の数とを示し、前記衝突が、前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求を含み、前記性能計量しきい値が衝突数しきい値およびドレイン対象ブロックしきい値を示し、前記決定された計量値が、決定されたドレイン対象ブロックおよび決定された衝突数を含み、前記動作が、
決定されたドレイン対象ブロックがドレイン対象ブロックしきい値を下回ること、および前記決定された衝突数が前記衝突数しきい値を下回ることの決定に応答して、前記ドレイン動作を続行する動作をさらに含む、
請求項３に記載のコンピュータ・プログラム。
【請求項１１】
前記データ構造内に示された前記データ・ブロックが、ある時点で一貫した前記第１のストレージ内の更新されたデータの一貫性グループの一部であり、前記動作が、
前記決定された計量値と前記性能計量しきい値との比較に応答して、
前記ドレイン動作を終了する動作と、
前記データ構造内に示されたデータ・ブロックの、前記第１のストレージから前記第２のストレージへの前記コピー動作を実行しない動作と、
を実行することによって、前記ドレイン動作を続行しないことを示す動作をさらに含む、
請求項３に記載のコンピュータ・プログラム。
【請求項１２】
プロセッサと、
動作を実行するために前記プロセッサによって実行されるコードを有する、コンピュータ読み取り可能ストレージ媒体と、
を備える、第１のストレージおよび第２のストレージと通信するシステムであって、前記動作が、
前記第２のストレージへとコピーするために、前記第１のストレージ内のデータ・ブロックを示すデータ構造を生成する動作と、
ドレイン期間に前記第１のストレージに示された前記データ・ブロックを前記第２のストレージにコピーするためのドレイン動作を開始する動作と、
前記データ構造内に示された前記データ・ブロックへの書き込み要求を、前記ドレイン期間中、キューに入れる動作であって、前記キューに入れられた書き込み要求は、キューに入れられている間は完了しない、キューに入れる動作と、
前記ドレイン期間中に、前記第１のストレージ内のデータ・ブロックに対して実行される前記書き込みに基づいた計量情報を集める動作と、
前記ドレイン期間の満了に応答して、前記集められた計量情報から前記ドレイン動作を続行するかまたはドレイン動作を終了するかを決定する動作と、
を含む、システム。
【請求項１３】
前記集められた計量情報から、前記ドレイン動作を続行するかどうかを決定する動作が、
性能計量しきい値を提供する動作と、
前記集められた計量情報に基づいて計量値を決定する動作と、
前記ドレイン動作を続行するかどうかを決定するために、前記決定された計量値と前記性能計量しきい値とを比較する動作と、
を含む、請求項１２に記載のシステム。
【請求項１４】
前記性能計量しきい値が第１の性能計量しきい値を含み、前記ドレイン期間が第１のドレイン期間を含み、前記決定された計量値が第１の計量値を含み、前記ドレイン動作の続行に応答して、前記ドレイン動作が第２のドレイン期間に続行され、前記動作が、
前記第２のドレイン期間中、計量情報の収集を続行する動作と、
前記第２のドレイン期間の満了に応答して、前記集められた計量情報に基づいて第２の計量値を決定する動作と、
前記ドレイン動作を続行するかどうかを決定するために、前記決定された第２の計量値と第２の性能計量とを比較する動作と、
をさらに含む、請求項１３に記載のシステム。
【請求項１５】
前記集められた計量情報が受信した要求および衝突を示し、前記衝突が、前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求を含み、前記性能計量しきい値が衝突比しきい値を示し、前記決定された計量値が、前記集められた計量情報内に示された衝突の数と受信した書き込み要求の数との決定された衝突比を含み、さらに、前記決定された衝突比が前記衝突比しきい値を下回る旨の決定に応答して前記ドレイン動作が続行される、請求項１３に記載のシステム。
【請求項１６】
前記集められた計量情報が受信した書き込み要求を完了する時間を示し、前記性能計量しきい値が書き込み時間しきい値を示し、前記決定された計量値が、前記集められた計量情報に基づいて決定された平均書き込み時間を含み、前記動作が、
前記決定された平均書き込み時間が前記書き込み時間しきい値を下回る旨の決定に応答して、前記ドレイン動作を続行する動作と、
前記決定された平均書き込み時間が前記書き込み時間しきい値を上回る旨の決定に応答して、前記ドレイン動作を終了する動作と、
をさらに含む、請求項１３に記載のシステム。
【請求項１７】
前記集められた計量情報が、前記第２のストレージにまだコピーされていない前記データ構造内に示されたブロックの数と衝突の数とを示し、前記衝突が、前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求を含み、前記性能計量しきい値が衝突数しきい値およびドレイン対象ブロックしきい値を示し、前記決定された計量値が、決定されたドレイン対象ブロックおよび決定された衝突数を含み、前記動作が、
決定されたドレイン対象ブロックがドレイン対象ブロックしきい値を下回ること、および前記決定された衝突数が前記衝突数しきい値を下回ることの決定に応答して、前記ドレイン動作を続行する動作をさらに含む、
請求項１３に記載のシステム。
【請求項１８】
前記第２のストレージへとコピーするために、前記第１のストレージ内のデータ・ブロックを示すデータ構造を生成すること、
ドレイン期間に前記第１のストレージに示された前記データ・ブロックを前記第２のストレージにコピーするためのドレイン動作を開始すること、
前記データ構造内に示された前記データ・ブロックへの書き込み要求を、前記ドレイン期間中、キューに入れることであって、前記キューに入れられた書き込み要求は、キューに入れられている間は完了しない、キューに入れること、
前記ドレイン期間中に、前記第１のストレージ内のデータ・ブロックに対して実行される前記書き込みに基づいた計量情報を集めること、および
前記ドレイン期間の満了に応答して、前記集められた計量情報から前記ドレイン動作を続行するかまたはドレイン動作を終了するかを決定すること、
を含む、方法。
【請求項１９】
前記集められた計量情報から前記ドレイン動作を続行するかどうかを決定することが、
性能計量しきい値を提供すること、
前記集められた計量情報に基づいて計量値を決定すること、および
前記ドレイン動作を続行するかどうかを決定するために、前記決定された計量値と前記性能計量しきい値とを比較すること、
を含む、請求項１８に記載の方法。
【請求項２０】
前記性能計量しきい値が第１の性能計量しきい値を含み、前記ドレイン期間が第１のドレイン期間を含み、前記決定された計量値が第１の計量値を含み、前記ドレイン動作の続行に応答して、前記ドレイン動作が第２のドレイン期間に続行され、
前記第２のドレイン期間中、計量情報の収集を続行すること、
前記第２のドレイン期間の満了に応答して、前記集められた計量情報に基づいて第２の計量値を決定すること、および
前記ドレイン動作を続行するかどうかを決定するために、前記決定された第２の計量値と第２の性能計量とを比較すること、
をさらに含む、請求項１９に記載の方法。
【請求項２１】
前記集められた計量情報が受信した要求および衝突を示し、前記衝突が、前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求を含み、前記性能計量しきい値が衝突比しきい値を示し、前記決定された計量値が、前記集められた計量情報内に示された衝突の数と受信した書き込み要求の数との決定された衝突比を含み、さらに、前記決定された衝突比が前記衝突比しきい値を下回る旨の決定に応答して前記ドレイン動作が続行される、請求項１９に記載の方法。
【請求項２２】
前記集められた計量情報が受信した書き込み要求を完了する時間を示し、前記性能計量しきい値が書き込み時間しきい値を示し、前記決定された計量値が、前記集められた計量情報に基づいて決定された平均書き込み時間を含み、
前記決定された平均書き込み時間が前記書き込み時間しきい値を下回る旨の決定に応答して、前記ドレイン動作を続行すること、および
前記決定された平均書き込み時間が前記書き込み時間しきい値を上回る旨の決定に応答して、前記ドレイン動作を終了すること、
をさらに含む、請求項１９に記載の方法。
【請求項２３】
前記集められた計量情報が、前記第２のストレージにまだコピーされていない前記データ構造内に示されたブロックの数と衝突の数とを示し、前記衝突が、前記第２のストレージにコピーされないものとして前記データ構造内に示されたデータ・ブロックに向けて送られた書き込み要求を含み、前記性能計量しきい値が衝突数しきい値およびドレイン対象ブロックしきい値を示し、前記決定された計量値が、決定されたドレイン対象ブロックおよび決定された衝突数を含み、
決定されたドレイン対象ブロックがドレイン対象ブロックしきい値を下回ること、および前記決定された衝突数が前記衝突数しきい値を下回ることの決定に応答して、前記ドレイン動作を続行することをさらに含む、
請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のストレージから第２のストレージへとデータ・ブロックをコピーするためにドレイン時間を延長するか否かを決定するための、コンピュータ・プログラム製品、システム、および方法に関する。
【背景技術】
【０００２】
災害時回復システムは、通常、ある一時点での突然の破局的障害、または、ある期間にわたるデータ損失という、２つのタイプの障害に対処する。第２のタイプの漸進的な災害では、ボリュームに対する更新が失われる可能性がある。データ更新の回復を支援するために、データのコピーがリモート位置に提供される場合もある。こうした二重コピーまたはシャドー・コピーは、典型的には、アプリケーション・システムが１次ストレージ・デバイスに新規データを書き込む際に作成される。２次サイトでのデータのリモート・コピーを維持するために、インターナショナル・ビジネス・マシーンズ・コーポレーション（「ＩＢＭ」）のＥｘｔｅｎｄｅｄ  Ｒｅｍｏｔｅ  Ｃｏｐｙ（ＸＲＣ）、Ｃｏｕｐｌｅｄ  ＸＲＣ（ＣＸＲＣ）、Ｇｌｏｂａｌ  Ｃｏｐｙ、およびＧｌｏｂａｌ  Ｍｉｒｒｏｒ  Ｃｏｐｙなどの、様々なコピー技術を使用することができる。
【０００３】
データ・ミラーリング・システムでは、データはボリューム・ペア内で維持される。ボリューム・ペアは、１次ストレージ・デバイス内のボリュームと、１次ボリューム内で維持されているデータの同一コピーを含む２次ストレージ・デバイス内の対応するボリュームとで構成される。１次サーバおよび２次サーバを使用して、１次ストレージ・デバイスおよび２次ストレージ・デバイスへのアクセスを制御してもよい。特定のデータ・ミラーリング・システムでは、異なるアプリケーションによって異なる１次ストレージ・デバイスへと書き込まれた更新が、一貫した時刻（ＴＯＤ）値をタイム・スタンプとして使用するように、複数のシステムにわたって均一な時間を提供するためにタイマが使用される。ホスト・オペレーティング・システムまたはアプリケーションは、データ・セットまたはデータ・セットの組を１次ストレージ内のボリュームに書き込む際に、こうしたデータ・セットに対する更新にタイム・スタンプを押すことができる。データ更新の整合性は、ボリューム・ペア内の２次ボリュームでの更新が、１次ボリュームで実行された時と同じ順序で実行されることを保証することに関係する。アプリケーション・プログラムによって提供されるタイム・スタンプは、データ更新の論理シーケンスを決定する。
【０００４】
データベース・システムなどの多くのアプリケーション・プログラムでは、前の書き込みが実行されていない限り特定の書き込みは実行できず、そうでなければデータの整合性が脅かされることになる。その整合性が前のデータ書き込みの実行に依存するこうしたデータ書き込みは、従属書き込み（dependent write）として知られている。１次ストレージおよび２次ストレージ内のボリュームは、すべての書き込みがそれらの論理順序で転送された場合、すなわち、すべての従属書き込みがそれに依存している書き込みより先に転送された場合に、一貫したものとなる。一貫性グループは、一貫性タイム・スタンプに等しいかまたはそれより前のタイム・スタンプを有する一貫性グループ内のすべてのデータ書き込みについて、一貫性時間を有する。一貫性グループは、従属書き込みが一貫した方法で保護されるような１次ボリュームに対する更新の集合である。一貫性時間は、２次ボリュームに対する更新がその時間まで一貫していることをシステムが保証する、最新の時間である。一貫性グループは、ボリュームおよびストレージ・デバイス全体にわたって、データの一貫性を維持する。したがって、データが２次ボリュームから回復されると、回復されたデータは一貫していることになる。
【０００５】
一貫したある時点でのデータのコピーを提供するための技法の１つは、１次ストレージへのすべての書き込みを中断した後、書き込みが中断されている間に、２次ストレージまたはバックアップ・デバイスへミラーリングするためにすべてのデータをコピーすることである。この技法の欠点は、ある時点でのデータのコピーを作成する間、ホストの書き込みが中断されることであり、これによってホスト側でのアプリケーション処理に悪影響を及ぼす可能性がある。代替の技法は、所要時間がわずか１、２秒などと非常に短いデータの論理コピーを、１次ストレージ側で確立することである。したがって、論理コピーを確立するための間、１次ストレージへのホスト書き込みを中断することで、ホスト・アプリケーションの処理に対して与える破壊的影響は、すべてのソース・データをターゲット・ボリュームへコピーする間、ホスト書き込みが中断される場合に比べてはるかに少ない。
更新前に、１次ストレージ側で論理コピーが確立された時点でターゲット・ボリュームがそのデータを有するように、論理コピーを確立した後、更新の対象となるソース・ボリューム・データはターゲット・ボリュームへとコピーされる。これにより、更新が受信されるまで物理コピーが据え置かれる。この論理コピー動作は、ターゲット・ボリュームおよびソース・ボリュームにアクセスできない時間を最小限にするために実行される。
【０００６】
データの一貫性グループを１次ストレージから２次ストレージへとドレインまたはコピーする場合、１次システムは、ドレインするために一貫性グループ内のデータ・ブロックの指示を維持する。ドレイン動作時には、衝突としても知られているドレインされているデータへのホスト書き込みは、そのブロックのドレインが完了するまで遅延される。したがって、書き込み要求を完了するための時間が遅れることにより、ドレイン動作はホストの性能に悪影響を与える可能性がある。ドレイン期間は、その間に一貫性グループ内のデータが２次ストレージにコピーされ、コピーされないデータへのホスト書き込み、すなわち衝突がキューに入れられて遅延する期間に、設定することができる。一貫性グループ内のすべてのデータ・ブロックのドレインがこのドレイン期間内に完了しない場合、ドレイン動作は失敗する。このような場合、一貫性グループをドレインするための動作は再度実行されなければならず、ドレイン動作がドレイン動作用に与えられた時間内に完了しない可能性があるという同じリスクにさらされる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
当分野では、データを第１のストレージから第２のストレージへとドレインするための、改良された技法が求められている。
【課題を解決するための手段】
【０００８】
データ・ブロックを第１のストレージから第２のストレージへとコピーするためにドレイン時間を延長するか否かを決定するための、コンピュータ・プログラム製品、システム、および方法が提供される。第２のストレージへとピーするために、第１のストレージ内のデータ・ブロックを示すデータ構造が生成される。ドレイン期間に第１のストレージに示されたデータ・ブロックを第２のストレージにコピーするためのドレイン動作が開始される。データ構造内に示されたデータ・ブロックへの書き込み要求は、ドレイン期間中、キューに入れられ、キューに入れられた書き込み要求は、キューに入れられている間は完了しない。ドレイン期間中に、第１のストレージ内のデータ・ブロックに対して実行される書き込みに基づいた計量情報（metric information）が集められ、ドレイン期間の満了に応答して、集められた計量情報からドレイン動作を続行するかまたはドレイン動作を終了するかが決定される。
【図面の簡単な説明】
【０００９】
【図１】ネットワーク・コンピューティング環境の実施形態を示す図である。
【図２】集められた計量情報の実施形態を示す図である。
【図３】データを第１のストレージから第２のストレージへドレインするための諸動作の実施形態を示す図である。
【図４】データを第１のストレージから第２のストレージへドレインするための諸動作の実施形態を示す図である。
【図５】第１のストレージへの書き込み要求を処理するための諸動作の実施形態を示す図である。
【図６】データ・ブロックが第１のストレージから第２のストレージへと首尾よくコピーされた旨の肯定応答を処理するための諸動作の実施形態を示す図である。
【図７】コンピュータ・アーキテクチャの実施形態を示す図である。
【発明を実施するための形態】
【００１０】
図１は、ネットワーク・コンピューティング環境の実施形態を示す。第１のサーバ２は、１つまたは複数のホスト・システム４から、内部にソース・ボリューム８と呼ばれるストレージ・ボリューム８が構成された１次ストレージ６への、入力／出力（Ｉ／Ｏ）要求を管理する。第１のサーバ２は、１次ストレージ・ボリューム８へのＩ／Ｏ要求を管理し、ソース・ボリューム８に対する更新を２次ストレージ１６内のターゲット・ボリューム１２へとミラーリングすることが可能な、ストレージ・マネージャ１０プログラムを含む。第２のサーバ１８は、第２のストレージ１６へのＩ／Ｏアクセスと、第１のサーバ２との管理通信とを管理するための、ストレージ・マネージャ２０を含む。
【００１１】
第１のサーバ２および第２のサーバ１８は、それぞれ、それらの対応するストレージ６および１６への読み取りおよび書き込みデータをバッファリングするための、キャッシュ２２および２４を含む。第１のサーバ２および第２のサーバ１８は、どちらも、ホスト・システム４からの読み取りおよび書き込み要求を受信することができる。
【００１２】
１次ストレージ・マネージャ１０は、ある時点で一貫している更新の一貫性グループをソース・ボリューム８内に形成し、ターゲット・ボリューム１２へコピーすることができる。更新の一貫性グループを２次ストレージ８にコピーするために、ストレージ・マネージャ１０は、ターゲット・ボリューム１２（第２のストレージ１６）へコピーするためのソース・ボリューム８（第１のストレージ６）内の一貫性グループのデータ・ブロックを示す、コピー・データ構造２６を維持する。ストレージ・マネージャ１０は、コピー・データ構造２６内に示された一貫性グループ内の更新をターゲット・ボリューム１２へコピーまたはドレインするための、ドレイン動作を開始する。ドレイン動作中、ストレージ・マネージャ１０は、ターゲット・ボリューム１２へコピーされていないコピー・データ構造２６内に示されたデータ・ブロックに対するホスト更新を、衝突キュー３０内のキューに入れる。ストレージ・マネージャ１０は、コピー・データ構造２６内のデータをターゲット・ボリューム１２へドレインする間に、書き込み性能に関する計量情報を集める。
【００１３】
一実施形態では、コピー・データ構造２６は、一貫性グループまたはコピーするための他のグループ内の各ブロックに対するエントリを有するビットマップを備えることが可能であり、ここで一方のビット値は第２のストレージ１６にコピーされていないブロックを示し、他方のビット値はコピーされたブロックを示す。ドレイン動作はドレイン期間中に実行され、この間に、ドレインされているデータ・ブロックへのホスト４の書き込みが衝突キュー３０内のキューに入れられる。ストレージ・マネージャ１０は、性能計量しきい値３２を使用して、ドレイン動作のドレイン時間を延長するかどうかを決定し、そのドレイン時間中に、ドレインされているデータに対するホスト４の更新が待ち行列に入れられる。ドレイン時間を延長するかどうかの決定は、衝突から生じるホストの性能に与える影響の釣り合わせに基づく、すなわち、ドレイン動作を完了させることを目的に、まだドレインされていないデータへの書き込み要求の処理を遅らせることに基づくものとすることができる。ドレインされるデータは、一貫性グループの一部であるか、または、一貫性グループの一部ではない他のデータのグループ化を含むことができる。
【００１４】
図２は、（ドレインされているデータおよびドレインの対象でないデータに対する）いくつかの受信した書き込み要求５０、完了した書き込み要求５２、衝突５４（すなわち、ターゲット・ボリューム１２にコピーされないものとしてコピー・データ構造２６内に示されたデータ・ブロックを対象とするホスト４の更新）、および書き込みを完了する平均時間５６を含むことが可能な、ドレイン動作中に集められた計量情報２８の実施形態を示す。計量情報５０、５２、５４、および５６は、ドレイン動作中に更新できる。ある諸実施形態では、計量情報２８は、計量情報５０、５２、５４、および５６、ならびにドレイン動作中に集められた追加の計量情報のうちの、一部またはすべてを含むことができる。
【００１５】
一実施形態では、性能計量しきい値３２は、集められた計量情報２８内に示される実際の衝突比がしきい値を下回る場合、ドレイン動作が続行可能であるような、衝突対書き込み要求である衝突比しきい値を示すことができる。この場合、ホスト更新の衝突が少ないため、ドレイン動作はホストＩ／Ｏにほとんど影響を与えない。別の方法として、性能計量しきい値３２は平均書き込み時間を示すことができる。こうしたケースでは、集められた計量情報２８として示される書き込みを完了する時間が平均書き込み時間しきい値を下回る場合、ドレイン動作によって書き込み完了時間がしきい値を超えることがないため、ドレイン動作は続行可能である。
【００１６】
他の諸実施形態では、性能計量しきい値３２は、実際の衝突がしきい値を下回り、残りのドレイン対象ブロック（blocks-to-drain）が少ない場合、ドレイン動作が続行可能であるような、衝突しきい値およびドレイン対象ブロックしきい値を示す。このケースでは、比較的少ない衝突が示すようにホストの影響は大きくなく、残りのドレイン対象ブロックが示すようにドレイン動作は完了に近い。
【００１７】
ある諸実施形態では、性能計量しきい値３２は、ドレイン動作の持続時間が延長された場合にドレイン動作を続行するように、決定を動的に変更するための、様々なドレイン期間の終わりに適用する様々なしきい値を含むことができる。たとえば、ドレインを続行するかどうかを決定するためにドレイン処理中の後期に適用されるしきい値は、ドレイン処理中の初期に使用されるしきい値よりも、より低い衝突比を必要とするような厳しいものとすることができる。実際の性能計量しきい値は、テスト環境における実証的研究によって決定することができる。
【００１８】
第１のサーバ２および第２のサーバ１８、ならびにホスト４は、ネットワーク３４を介して通信可能である。ネットワーク３４は、ストレージ・エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、イントラネット、インターネット、ワイド・エリア・ネットワーク（ＷＡＮ）、ピアツーピア・ネットワーク、無線ネットワーク、アービトレート型ループ・ネットワーク（arbitrated loop network）などを含むことができる。サーバ２および１８は、エンタープライズ・ストレージ・サーバ、ストレージ・コントローラ、ブレード・サーバ、汎用サーバ、デスクトップ・コンピュータ、ワークステーション、電話装置、携帯情報端末（ＰＤＡ）など、または、接続されたストレージ・システム６ａ、６ｂ、６ｃへのＩ／Ｏ要求を管理するために使用される他のデバイスを含むことができる。ストレージ６および１６は、それぞれ、相互接続ハード・ディスク・ドライブ（たとえばＤＡＳＤ、ＲＡＩＤ、ＪＢＯＤなどとして構成される）、磁気テープ、ソリッド・ステート・ストレージ・デバイス（たとえばＥＥＰＲＯＭ（電気的消去可能プログラム可能読み取り専用メモリ）、フラッシュ・メモリ、フラッシュ・ディスク、ストレージ・クラス・メモリ（ＳＣＭ））、電子メモリなどの、当分野で知られた１つまたは複数のストレージ・デバイス内に実装されたストレージ媒体を備えることができる。サーバ２および１８ならびにストレージ６および１６は、分散型ストレージ環境または「クラウド」ストレージなどのネットワーク・ストレージ環境内で実装可能である。ストレージ・システム内に構成されるボリュームは、データのトラックまたはブロックの論理配置構成を備えることができる。
【００１９】
ストレージ・マネージャ１０および２０は、メモリ内にロードされた１つまたは複数のソフトウェア・プログラムとして実装し、サーバ６および１８内のプロセッサによって実行することができる。代替実施形態では、ストレージ・マネージャ１０および２０は、特定用途向け集積回路（ＡＳＩＣ）などのハードウェア論理と共に、またはコンピュータ読み取り可能ストレージ媒体内のコードを実行するプログラム可能プロセッサとして、実装することができる。
【００２０】
図３および図４は、コピー・データ構造２６内に示されたデータ・ブロックを第２のストレージ１６へとドレインするために、ストレージ・マネージャ１０によって実行される諸動作を示す。（ブロック１００で）ドレイン動作を開始すると、ストレージ・マネージャ１０は（ブロック１０２で）、第２のストレージ１６にコピーするために、データ・ブロックを示すコピー・データ構造２６を第１のストレージ６内に生成し、この構造は、ある時点で一貫しているデータの一貫性グループを第２のストレージ１６へとコピーするために、一貫性グループ内のソース・ボリューム８で更新されたデータを備えるか、または、一貫性グループ内にないデータを備えることができる。ストレージ・マネージャ１０は（ブロック１０４で）、第１のストレージ内にあるコピー・データ構造２６内に示されたデータ・ブロックを、第１のドレイン期間に第２のストレージへとコピーするために、ドレイン動作を開始する。（ブロック１０６で）第１のドレイン期間が満了していない場合、ストレージ・マネージャ１０は、コピー・データ構造２６内に示されたデータ・ブロックを第２のストレージ１６へとコピーするために、（ブロック１０８で）ドレイン動作を続行する。（ブロック１０６の肯定応答分岐から）第１のドレイン期間が満了した場合、ストレージ・マネージャ１０は（ブロック１１０で）、第１の衝突比、第１の平均書き込み完了時間、第１の残りのドレイン対象ブロック、および第１の衝突数などの、集められた計量情報２８に基づいて、第１の計量値を決定する。ストレージ・マネージャ１０は（ブロック１１２で）、決定された衝突比と第１の衝突比しきい値とを比較すること、決定された平均書き込み要求完了時間と第１のしきい値とを比較すること、決定された残りのドレイン対象ブロックおよび衝突数としきい値とを比較することなどによって、決定された第１の計量値としきい値３２内の第１の性能計量しきい値とを比較する。
【００２１】
この比較が（ブロック１１４で）、決定された衝突比が衝突しきい値を上回る、すなわち衝突が多すぎる場合などのように、動作を続行しない旨を示す場合、ストレージ・マネージャ１０は（ブロック１１６で）ドレイン動作を終了し、第２のストレージ１６へのコピー動作を実行しない。この場合、衝突、平均書き込み要求完了時間などの動作状況は、ホスト性能にかかる負担がドレイン動作を完了する利点を上回ることを示すことから、一貫性グループのコピーは実行されず、再試行されなければならないため、ドレイン動作は終了する。（ブロック１１４の肯定応答分岐から）この比較がドレイン動作の続行を示す場合、ストレージ・マネージャ１０は（ブロック１１８で）、コピー・データ構造２６内に示されたデータのドレインと、第２のドレイン期間についての計量情報２８の収集とを続行する。第２のドレイン期間中、（ブロック１２０の否定応答分岐から）ドレイン動作が続行される。（ブロック１２０の肯定応答分岐から）第２のドレイン期間が満了した場合、ストレージ・マネージャ１０は（ブロック１２２で）、集められた計量情報２８に基づいて、第２の衝突比、第２の平均書き込み完了時間、第２の残りのドレイン対象ブロック、および第２の衝突数などの、第２の計量値を決定する。決定された第２の計量値は、（ブロック１２４で）第２の性能計量しきい値と比較される。一実施形態では、第２の性能計量しきい値は、より低い衝突比しきい値、より低い平均書き込み完了時間しきい値、より低い残りのドレイン対象ブロックしきい値、より少ない衝突しきい値数などのように、第１の性能計量しきい値よりも厳しいか、またはこれとは異なる場合があるため、結果として、測定される計量値は、さらに長い期間ドレイン動作を続行するために、ホストにかかる負担がさらに少ないことを示さなければならない。
【００２２】
図４に関して、決定された第２の衝突比が第２の衝突しきい値を上回る、すなわち衝突が多すぎる場合などのように、比較が（ブロック１２６で）動作を続行しない旨を示す場合、ストレージ・マネージャ１０は、（ブロック１２８で）ドレイン動作を終了し、第２のストレージ１６へのコピー動作は実行しない。比較が（ブロック１２６での肯定応答分岐から）ドレイン動作を続行する旨を示す場合、ストレージ・マネージャ１０は、（ブロック１３０）で、コピー・データ構造２６内に示されたデータのドレインと、第３のドレイン期間についての計量情報２８の収集とを続行する。第３のドレイン期間中、（ブロック１３２の否定応答分岐から）ドレイン動作が続行される。（ブロック１３２の肯定応答から）第３のドレイン期間が満了した場合、ストレージ・マネージャ１０は（ブロック１３４で）、第３の衝突比、第３の平均書き込み完了時間、第３の残りのドレイン対象ブロック、第３の衝突数などの、集められた計量情報２８に基づいて、第３の計量値を決定する。決定された第３の計量値は（ブロック１３６で）、第２の（あるいは第３またはその他の）性能計量しきい値と比較される。この比較が（ブロック１３８で）、ドレイン動作の続行を示す、すなわち決定された計量値がしきい値を下回る場合、制御はブロック１３０に戻ってドレイン動作を続行する。これに対して、（ブロック１３８の否定応答分岐から）この比較がドレイン動作を続行しない旨を示す場合、制御はブロック１２８に戻ってドレイン動作を終了する。
【００２３】
一実施形態では、第３のドレイン期間が満了すると、完了されない場合であってもドレイン動作は終了することになる。代替実施形態では、ドレイン動作は、ブロック１３８での比較に基づいて、測定された性能計量がしきい値を下回り、ドレイン動作によってホストにかかる負担がドレイン動作を完了する目的を上回るほど大きくないことを示す場合、各ドレイン期間が満了した後、ドレイン動作の完了まで、反復を実行するために続行可能である。一実施形態では、第２のチェック後のすべてのチェックについて、第２の性能計量しきい値を連続して使用することができる。代替の諸実施形態では、後続のチェックに使用される性能計量しきい値を、その都度変更することができる。代替実施形態では、第１および第２の性能計量しきい値が同じ値を含む場合があり、その結果このしきい値は、ドレイン動作を続行するかどうかに関するすべてのチェックを通じて一定のままである。期間は数秒を含むことができる。
【００２４】
集められた計量情報が衝突の数および書き込み要求の数を含み、性能計量しきい値が衝突比しきい値、すなわち書き込み要求に対する衝突の比を含む実施形態では、測定された衝突比がブロック１１４、１２６、および１３８でのチェック時に使用されるしきい値を下回る場合、ドレイン動作は続行され、測定された衝突比が使用される１つまたは複数のしきい値を超え、ホスト性能に悪影響を与える、許容できないほど高い衝突比であることを示す場合、ドレイン動作は実行されない。ある諸実施形態では、図４のブロック１２６および１３８などの、第１のチェック後のチェック時に使用する第２の衝突比しきい値が、使用された第１の衝突比しきい値を下回るため、図４などのドレイン動作をさらに続行するためには、衝突およびホスト４の性能に与える影響がさらに少ないことが必要である。
【００２５】
他の諸実施形態では、集められた計量情報は、コピー・データ構造２６内に示される、およびコピー・データ構造２６内に示されない、データ・ブロックへの書き込みとして計算される平均書き込み完了時間を含む。測定された平均書き込み完了時間がブロック１１４、１２６、および１３８でのチェック時に使用されるしきい値を下回る場合、ドレイン動作は続行され、測定された書き込み完了時間が、使用された１つまたは複数のしきい値を上回り、書き込み完了時間が許容できないほど高く、ホスト４の性能に悪影響を与えることを示す場合、ドレイン動作は実行されない。ある諸実施形態では、図４のブロック１２６および１３８などでの第１のチェック後のチェック時に使用する第２の書き込み完了時間しきい値が、使用された第１の書き込み完了時間しきい値を下回るため、図４などのドレイン動作をさらに続行するためには、書き込み時間完了およびホスト４の性能に与える影響がさらに少ないことが必要である。
【００２６】
他の実施形態では、集められた計量情報は、コピー・データ構造２６内に示されるような、衝突の数および残りのドレイン対象ブロックを含むことができる。こうしたケースでは、測定された衝突数が衝突数しきい値を下回り、残りのドレイン対象ブロックが、ブロック１１４、１２６、および１３８でのチェック時に使用されるドレイン対象ブロックしきい値を下回る場合、ドレイン動作は続行される。測定された衝突数およびドレイン対象ブロックの計量値がしきい値を超えた場合、しきい値を超える衝突数によって示されるように、ホスト性能に与える悪影響が許容できないほど高く、ドレイン動作は完了間近ではないため、すなわち残りのドレイン対象ブロックがしきい値を超えているため、ドレイン動作を続行する利点が限られていることを示し、ドレイン動作は実行されない。ある諸実施形態では、図４のブロック１２６および１３８などでの第１のチェック後のチェック時に使用される第２の衝突数およびドレイン対象ブロックのしきい値が、第１のしきい値を下回るため、さらにドレイン動作を続行するためには、図４などのように、衝突数によって示されるようなホスト性能に与える影響、および残りのドレイン対象ブロックによって示されるようなドレイン完了への近さが、以前よりもさらに少ないことが必要である。
【００２７】
図５は、第１のストレージ６内のデータ・ブロックに対する受信した書き込み要求を処理するために、ストレージ・マネージャ１０によって実行される諸動作の実施形態を示す。（ブロック２００で）書き込み要求を受信すると、ストレージ・マネージャ１０は（ブロック２０２で）、書き込み要求が受信されたことおよび書き込み要求受信の開始時刻などの、受信した書き込み要求に関する計量情報２８を記録する。（ブロック２０４で）第２のストレージ１６へとコピーされるものとしてコピー・データ構造２６内に示されたデータ・ブロックに向けて書き込み要求が送られた場合、ストレージ・マネージャ１０は、（ブロック２０６で）受信したデータを第１のストレージ６内のデータ・ブロックへと書き込み、（ブロック２０８で）書き込み要求を完了する時間などの完了した書き込み要求に関する計量値を記録する。（ブロック２０４）で書き込み要求が、第２のストレージ１６へとコピーされないものとして、すなわちドレインされないものとして、コピー・データ構造２６内に示されたデータ・ブロックに対するものである場合、衝突が存在し、ストレージ・マネージャ１０は（ブロック２１０で）受信した書き込み要求を衝突キュー３０内のキューに入れ、（ブロック２１２で）衝突を示す計量値を記録する。
【００２８】
図６は、データ・ブロックが首尾よく第２のストレージ１６へとコピーされた旨の第２のサーバ１８からの肯定応答を処理するために、ストレージ・マネージャ１０によって実行される諸動作の実施形態を示す。（ブロック２５０で）第２のストレージ１６へのデータ・ブロックのコピー動作が完了した旨の肯定応答を受信すると、（ブロック２５１で）完了した書き込みがドレインされていない、すなわちコピー・データ構造２６内に示されていない場合、制御は終了する。そうでない場合、（ブロック２５１で）完了した書き込みが、コピー・データ構造２６内に示されたデータ・ブロックに対するものである場合、ストレージ・マネージャ１０は、（ブロック２５２で）データ・ブロックが第２のストレージ１６へコピーされた旨を示すように、コピー・データ構造２６を更新する。（ブロック２５４で）衝突キュー３０が、第２のストレージ１６へコピーされたように肯定応答されたデータ・ブロックに関する更新を含む場合、そのキューに入れられた書き込み動作を完了することができる。こうしたケースでは、ストレージ・マネージャ１０は（ブロック２５６で）キューに入れられた書き込み要求を衝突キュー３０から除去し、（ブロック２５８で）キューから取り除かれた書き込み要求の受信データを、第１のストレージ内のデータ・ブロックへと書き込む。完了時間などの完了された書き込みに関する計量値は（ブロック２６０で）記録される。完了された書き込みが、（ブロック２５４の否定応答分岐から）衝突キュー３０内の書き込み要求を対象とするブロックに関するものでない場合、または、キューに入れられた書き込みが（ブロック２６０から）適用された後、ストレージ・マネージャ１０は、（ブロック２６２で）コピー・データ構造２６が、すべてのブロックが第２のストレージ１６へコピーされた旨を示すかどうかを決定する。コピーされた旨を示す場合、図３および図４で実行されたすべてのドレイン動作は（ブロック２６４で）終了し、制御は終了する。（ブロック２６２で）ドレイン動作が依然として進行中の場合、すなわちすべてのブロックがまだストレージにコピーされていない場合、制御は終了する。
【００２９】
説明された諸実施形態では、衝突対書き込み要求の衝突比、書き込み要求の完了時間、書き込み要求の数、および残りのドレイン対象ブロックを考慮に入れるように、ドレイン時間はドレイン動作中に調整可能である。このようにして、測定された性能計量とホスト性能影響を示す性能計量しきい値とを比較することによって示されるように、現在のドレイン動作がホストの性能に極度に影響を与えない場合、ドレイン動作は続行可能である。そうでなければ、決定されたホスト性能への影響が許容できないものである場合、ドレイン動作は終了可能である。さらに、説明された諸実施形態は、ドレイン対象ブロックの数が少ない場合、ドレインを首尾よく完了する利点の方が、ドレイン用に残っている比較的少ない数のブロックを完了するために必要な比較的短い時間にホスト性能に与える衝突の影響よりも上回る可能性があることなどのように、ドレイン動作において残された時間を要素として組み込むことが可能である。
【００３０】
追加の実施形態についての詳細
説明された諸動作は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生成するための、標準的なプログラミングあるいはエンジニアリングまたはその両方の技法を使用する、方法、装置、またはコンピュータ・プログラム製品として実装可能である。したがって、諸実施形態の諸態様は、全体としてハードウェアの実施形態、全体としてソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形を取ることが可能であり、本明細書ではすべて全体として「回路」、「モジュール」、または「システム」と呼ぶことができる。さらに、諸実施形態の諸態様は、その上にコンピュータ読み取り可能プログラム・コードが具体化された、１つまたは複数のコンピュータ読み取り可能媒体内で具体化されるコンピュータ・プログラム製品の形を取ることができる。
【００３１】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせを使用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体の、システム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ媒体のより特定の例（網羅的リストではない）は、１つまたは複数の線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り可能メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、またはそれらの任意の好適な組み合わせを含むことになる。本明細書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスによって、またはそれらに関して使用するためのプログラムを含むかまたは格納することが可能な、任意の有形媒体とすることができる。
【００３２】
コンピュータ読み取り可能信号媒体は、たとえば、ベースバンド内に、または搬送波の一部として、内部にコンピュータ読み取り可能プログラム・コードが具体化された伝搬型データ信号を含むことができる。こうした伝搬型信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、多種多彩な形のうちのいずれかの形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行システム、装置、またはデバイスによって、またはそれらに関して使用するためのプログラムを、通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【００３３】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送可能である。
【００３４】
本発明の諸態様に関する諸動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語のいずれかの組み合わせで作成可能である。プログラム・コードは、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、全体としてリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続可能であるか、あるいは、（たとえばインターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに接続可能である。
【００３５】
本発明の諸態様について、本発明の諸実施形態に従った方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方に関して、以下で説明する。流れ図あるいはブロック図またはその両方の各ブロック、ならびに流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実施するための手段を作成するように、これらのコンピュータ・プログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、またはマシンを作成するための他のプログラム可能データ処理装置のプロセッサに提供可能である。
【００３６】
コンピュータ読み取り可能媒体内に格納された命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実施する命令を含む製品を製造するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の様式で機能するように指示することが可能な、これらのコンピュータ・プログラム命令を、コンピュータ読み取り可能媒体内に格納することも可能である。
【００３７】
コンピュータ・プログラム命令は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードし、一連の動作ステップを、コンピュータ、他のプログラム可能装置、または他のデバイスに実行させて、コンピュータまたは他のプログラム可能装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実施するためのプロセスを提供するように、コンピュータ実施プロセスを生成することも可能である。
【００３８】
ある諸実施形態では、図１のシステムをクラウド・コンピューティング環境内のクラウド構成要素部分として実装することができる。クラウド・コンピューティング環境では、クラウド・コンピューティングの送達に関与するハードウェアおよびソフトウェア構成要素のシステム・アーキテクチャが、インターネットなどのネットワークを介して互いに通信する複数のクラウド構成要素を備えることができる。たとえばある諸実施形態では、図１の第１のサーバは、ホストおよびクライアントにネットワーク化されたクラウド内でのデータ・ミラーリング・サービスを提供することができる。
【００３９】
図７は、図１のサーバ２および１８ならびにホスト４で実装可能な、コンピュータ・アーキテクチャ３００の実施形態を示す。アーキテクチャ３００は、プロセッサ３０２（たとえばマイクロプロセッサ）、メモリ３０４（たとえば揮発性メモリ・デバイス）、およびストレージ３０６（たとえば、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの、不揮発性ストレージ）を含むことができる。ストレージ３０６は、内部ストレージ・デバイス、あるいは、接続されるかまたはネットワーク・アクセス可能なストレージを備えることができる。ストレージ３０６内の、オペレーティング・システム３０８およびストレージ・マネージャ１０、２０を含むプログラムは、メモリ３０４内にロードされ、プロセッサ３０２によって実行される。メモリ３０４は、キャッシュ２０、２２、衝突キュー３０、性能計量しきい値３２、集められた計量情報２８、およびコピー・データ構造２６を、さらに含むことができる。アーキテクチャは、ネットワーク３０と通信可能なネットワーク・カード３１０をさらに含む。入力デバイス３１２は、ユーザ入力をプロセッサ３０２へ提供するために使用され、キーボード、マウス、ペン・スタイラス、マイクロフォン、タッチセンサー式ディスプレイ画面、または当分野で知られた任意の他の起動または入力機構を含むことができる。出力デバイス３１４は、プロセッサ３０２、または、ディスプレイ・モニタ、プリンタ、ストレージなどの他の構成要素から伝送された情報をレンダリングすることができる。
【００４０】
「ある実施形態」、「実施形態」、「諸実施形態」、「その実施形態」、「その諸実施形態」、「１つまたは複数の実施形態」、「何らかの諸実施形態」、および「一実施形態」という用語は、特に明示的に指定されていない限り、「本発明の１つまたは複数の（ただしすべてではない）実施形態」を意味する。
【００４１】
「含む」、「備える」、「有する」、およびそれらの変形の用語は、特に明示的に指定されていない限り、「含むが限定されない」ことを意味する。
【００４２】
アイテムの列挙されたリストは、特に明示的に指定されていない限り、そのアイテムのいずれかまたはすべてが相互に排他的であることを示唆するものではない。
【００４３】
「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に指定されていない限り、「１つまたは複数」を意味する。
【００４４】
互いに通信しているデバイスは、特に明示的に指定されていない限り、互いに持続的に通信しているものとは限らない。加えて、互いに通信しているデバイスは、直接的に、あるいは１つまたは複数の媒介を通じて間接的に、通信することができる。
【００４５】
互いに通信しているいくつかの構成要素を備えた実施形態の説明は、こうした構成要素がすべて必要であることを示唆するものではない。反対に、様々なオプションの構成要素について、本発明の多種多様の可能な諸実施形態を例示するために説明される。
【００４６】
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどについて、ある発生順序で説明することができるが、こうしたプロセス、方法、およびアルゴリズムは、代替順序で動作するようにも構成可能である。言い換えれば、説明可能な諸ステップの任意のシーケンスまたは順序は、諸ステップがその順序で実行される旨の要件を必ずしも示すものではない。本明細書で説明されるプロセスの諸ステップは、実質的な任意の他の順序で実行可能である。さらに、いくつかのステップは同時に実行可能である。
【００４７】
本明細書で単一のデバイスまたは製品について説明される場合、単一のデバイス／製品の代わりに複数のデバイス／製品（それらが協働するか否かにかかわらず）が使用可能であることが、容易に明らかとなろう。同様に、本明細書で複数のデバイスまたは製品（それらが協働するか否かにかかわらず）について説明される場合、複数のデバイスまたは製品の代わりに単一のデバイス／製品が使用可能であること、あるいは、示された数のデバイスまたはプログラムの代わりに異なる数のデバイス／製品が使用可能であることが、容易に明らかとなろう。デバイスの機能あるいは特徴またはその両方は、そうした機能／特徴を有するものとして明示的に説明されていない１つまたは複数の他のデバイスによって、別の方法として具体化することができる。したがって、本発明の他の諸実施形態は、そのデバイス自体を必ずしも含む必要はない。
【００４８】
図３、図４、図５、および図６に示された諸動作は、ある順序で発生するあるイベントを示す。代替の諸実施形態では、ある諸動作を異なる順序で実行する、修正する、または除去することが可能である。さらに、前述の論理に諸ステップを追加し、依然として前述の諸実施形態に従うものとすることが可能である。さらに、本明細書で説明される諸動作は順次実行可能であるか、またはある諸動作を並行して処理することが可能である。さらに、諸動作を単一の処理ユニットによって、または分散型処理ユニットによって実行することが可能である。
【００４９】
以上、本発明の様々な実施形態について、例示および記述の目的で説明してきた。これは、網羅的なものである、あるいは本発明を開示された精密な形に限定するものであるとは、意図されていない。前述の教示に鑑みて、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明によってではなく、本明細書に添付の特許請求の範囲によって、限定されるものであることが意図される。前述の仕様、例示、およびデータは、本発明の構成の製造および使用についての完全な説明を提供している。本発明の多くの実施形態が本発明の趣旨および範囲を逸脱することなく実行可能であるため、本発明は、以下に添付の特許請求の範囲内に存するものである。
【符号の説明】
【００５０】
２    第１のサーバ
４    ホスト
６    第１のストレージ
８    ソース・ボリューム
１０    ストレージ・マネージャ
１２    ターゲット・ボリューム
１６    第２のストレージ
１８    第２のサーバ
２０    ストレージ・マネージャ
２２    キャッシュ
２４    キャッシュ
２６    コピー・データ構造
２８    集められた計量情報
３０    衝突キュー
３２    性能計量しきい値
３４    ネットワーク
【図１】
0005818640.tif 000002
【図２】
0005818640.tif 000003
【図３】
0005818640.tif 000004
【図４】
0005818640.tif 000005
【図５】
0005818640.tif 000006
【図６】
0005818640.tif 000007
【図７】
0005818640.tif 000008