(57)【要約】【課題】  データ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット管理のためのコンピュータ・プログラム製品、システム及び方法を提供する。【解決手段】  ソース・デステージ動作の前に、コピー・ソース・ツー・ターゲット動作を選択的にかつプリエンプティブに行うことができる。別の態様において、論理は、ポイント・イン・タイム・コピー・ソースへの大容量のブロック書き込みを含むシーケンシャル書き込みを検知する。これに応答して、関連したポイント・イン・タイム・コピー・ターゲットに対するデステージ・タスクが開始され、このデステージ・タスクは、１つの実施形態において、ターゲットのストライドとアラインした状態で、未変更のデータを、ポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットにコピーするストライド・アラインされたコピー・ソース・ツー・ターゲット動作を含む。その結果、書き込み動作の書き込みデータがポイント・イン・タイム・コピー・ソースにデステージされると、そうしたソース・デステージは、既に実行されたコピー・ソース・ツー・ターゲット動作を待つ必要はない。さらに、コピー・ソース・ツー・ターゲット動作は、ポイント・イン・タイム・コピー・ターゲットのストライド境界に対してストライド・アラインされ得る。特定の用途に応じて、他の特徴及び態様を実現することができる。【選択図】      図６
2021507377.tif 000002
【特許請求の範囲】
【請求項１】
ポイント・イン・タイム・コピー・ソースについての変更済みデータのセットをキャッシュに書き込むことであって、前記変更済みデータのセットは、前記ポイント・イン・タイム・コピー・ソース内の未変更のデータのセットに対して変更される、書き込むことと、
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することと、
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、
前記ポイント・イン・タイム・コピー・ソースを読み取り、前記未変更のデータのセットを含む読み取りデータを取得することと、
前記未変更のデータのセットをポイント・イン・タイム・コピー・ターゲットに書き込むことと、
を含む、コピー・ソース・ツー・ターゲット動作をプリエンプティブにかつ選択的に開始すること、
キャッシュの走査を開始し、ストレージにデステージする、キャッシュ内の変更済みデータのトラックを識別することと、
を含む、方法。
【請求項２】
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することは、ストレージにデステージする、キャッシュ内の変更済みデータのトラックを識別するために、キャッシュの安全データ・コミット走査を開始する前にある時間、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断することを含む、請求項１に記載の方法。
【請求項３】
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することは、前記ポイント・イン・タイム・コピー・ソースから前記ポイント・イン・タイム・コピー・ターゲットへのポイント・イン・タイム・コピー関係が持続的であるかどうか、又は前記コピー関係の前記ポイント・イン・タイムがインクリメントされたかの関数として、キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することを含み、前記ポイント・イン・タイム・コピー・ソースから前記ポイント・イン・タイム・コピー・ターゲットへの前記ポイント・イン・タイム・コピー関係が持続的である場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される、請求項２に記載の方法。
【請求項４】
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することは、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回るかどうかの関数として、キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することを含み、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの前記数が前記閾値を上回る場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される、請求項２に記載の方法。
【請求項５】
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、キャッシュ内の変更済みデータのトラックの走査を開始し、ａ）ポイント・イン・タイム・コピー・ソースに対応し、かつｂ）前記ポイント・イン・タイム・ソースの対応するポイント・イン・タイム・コピー・ターゲットにまだコピーされていない変更済みデータのトラックを識別することと、キャッシュ内の識別されたトラックについてのコピー・ソース・ツー・ターゲット動作を選択的にかつプリエンプティブに開始することとをさらに含む、請求項２に記載の方法。
【請求項６】
データは前記ポイント・イン・タイム・コピー・ソースにストライドで書き込まれ、データは前記ポイント・イン・タイム・コピー・ターゲットにストライドで書き込まれ、キャッシュ内の識別されたトラックについてのコピー・ソース・ツー・ターゲット動作を開始することは、
キャッシュ内の識別されたトラックがシーケンシャルであるかどうかを検知することと、識別されたシーケンシャル・トラックの検知に応答して、プリエンプティブにかつ選択的に、
ストライド・アラインされた読み取り動作を、前記ポイント・イン・タイム・コピー・ソースのポイント・イン・タイム・コピー・ターゲットに向け、前記ポイント・イン・タイム・コピー・ソースへのリダイレクトされる読み取り動作に、キャッシュ内の変更済みデータの前記識別されたシーケンシャル・トラックに対応する未変更のデータを取得させることと、
キャッシュ内の変更済みデータの前記識別されたシーケンシャル・トラックに対応する前記取得された未変更のデータを含むシーケンシャル・データのストライド・アラインされたトラックをポイント・イン・タイム・コピー・ターゲットに書き込むことと、
を含む、請求項５に記載の方法。
【請求項７】
キャッシュ内の変更済みデータのトラックの前記走査は、前記ストライド・アラインされた読み取り動作に対応する残りのトラックの走査をバイパスすることを含む、請求項６に記載の方法。
【請求項８】
入力／出力動作を開始するように構成されたホストと、
プロセッサ及びキャッシュを有するストレージ・コントローラと、
前記ストレージ・コントローラにより制御され、ポイント・イン・タイム・コピー・ソース及びポイント・イン・タイム・コピー・ターゲットを含むストレージと、
を含み、
前記ストレージ・コントローラは、
ポイント・イン・タイム・コピー・ソースについての変更済みデータのセットをキャッシュに書き込むように構成されたストレージ・マネージャ論理であって、前記変更済みデータのセットは、前記ポイント・イン・タイム・コピー・ソース内の未変更のデータのセットに対して変更される、ストレージ・マネージャ論理を含み、前記ストレージ・マネージャ論理は、
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するように構成されたプリエンプティブ条件監視論理と、
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、
前記ポイント・イン・タイム・コピー・ソースを読み取り、前記未変更のデータのセットを含む読み取りデータを取得することと、
前記未変更のデータのセットをポイント・イン・タイム・コピー・ターゲットに書き込むことと、
を含む、コピー・ソース・ツー・ターゲット動作をプリエンプティブにかつ選択的に開始するように構成されたコピー・ソース・ツー・ターゲット論理と、
キャッシュの走査を開始し、ストレージにデステージする、キャッシュ内の変更済みデータのトラックを識別するように構成された安全データ・コミット論理と、
をさらに含む、システム。
【請求項９】
前記プリエンプティブ条件監視論理はさらに、ストレージにデステージする、キャッシュ内の変更済みデータのトラックを識別するために、キャッシュの安全データ・コミット走査を開始する前にある時間、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在することを判断するように構成される、請求項８に記載のシステム。
【請求項１０】
前記プリエンプティブ条件監視論理はさらに、前記ポイント・イン・タイム・コピー・ソースから前記ポイント・イン・タイム・コピー・ターゲットへのポイント・イン・タイム・コピー関係が持続的であるかどうか、又は前記コピー関係の前記ポイント・イン・タイムがインクリメントされたかの関数として、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するように構成され、前記ポイント・イン・タイム・コピー・ソースから前記ポイント・イン・タイム・コピー・ターゲットへのポイント・イン・タイム・コピー関係が持続的である場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される、請求項８に記載のシステム。
【請求項１１】
変更済みデータのセットをキャッシュに書き込むことは、変更済みデータをトラックに書き込むことを含み、前記プリエンプティブ条件監視論理はさらに、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回るかどうかの関数として、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するように構成され、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回る場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される、請求項８に記載のシステム。
【請求項１２】
変更済みデータのセットをキャッシュに書き込むことは、変更済みデータをトラックに書き込むことを含み、前記ストレージ・マネージャ論理は、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、キャッシュ内の変更済みデータのトラックの走査を開始し、ａ）ポイント・イン・タイム・コピー・ソースに対応し、かつｂ）前記ポイント・イン・タイム・ソースの対応するポイント・イン・タイム・コピー・ターゲットにまだコピーされていない変更済みデータのトラックを識別し、かつ、キャッシュ内の識別されたトラックについてのコピー・ソース・ツー・ターゲット動作を選択的にかつプリエンプティブに開始するように構成されたプリエンプティブ走査論理をさらに含む、請求項８に記載のシステム。
【請求項１３】
データは前記ポイント・イン・タイム・コピー・ソースにストライドで書き込まれ、データは前記ポイント・イン・タイム・コピー・ターゲットにストライドで書き込まれ、前記ストレージ・マネージャ論理は、キャッシュ内の識別されたトラックがシーケンシャルであるかどうかを検知するように構成されたシーケンシャル書き込み検知論理をさらに含み、前記コピー・ソース・ツー・ターゲット論理はさらに、識別されたシーケンシャル・トラックの検知に応答して、プリエンプティブにかつ選択的に、ストライド・アラインされた読み取り動作を、前記ポイント・イン・タイム・コピー・ソースのポイント・イン・タイム・コピー・ターゲットに向け、前記ポイント・イン・タイム・コピー・ソースへのリダイレクトされる読み取り動作に、キャッシュ内の変更済みデータの前記識別されたシーケンシャル・トラックに対応する未変更のデータを取得させるように構成される、請求項１２に記載のシステム。
【請求項１４】
前記プリエンプティブ走査論理はさらに、前記ストライド・アラインされた読み取り動作に対応する残りのトラックの走査をバイパスすることを含む、請求項１３に記載のシステム。
【請求項１５】
ホスト、並びにプロセッサ及びキャッシュを有するストレージ・コントローラと、前記ストレージ・コントローラにより制御され、ポイント・イン・タイム・コピー・ソース及びポイント・イン・タイム・コピー・ターゲットを含むストレージとを有するデータ・ストレージ・システムと共に用いられるコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、プログラム命令がそこに具体化されたコンピュータ可読ストレージ媒体を含み、前記プログラム命令は、プロセッサの動作をもたらすように前記ストレージ・コントローラのプロセッサにより実行可能であり、前記プロセッサの動作は、
ポイント・イン・タイム・コピー・ソースについての変更済みデータ・セットをキャッシュに書き込むことであって、前記変更済みデータのセットは、前記ポイント・イン・タイム・コピー・ソース内の未変更のデータのセットに対して変更される、書き込むことと、
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することと、
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、
前記ポイント・イン・タイム・コピー・ソースを読み取り、前記未変更のデータのセットを含む読み取りデータを取得することと、
前記未変更のデータのセットをポイント・イン・タイム・コピー・ターゲットに書き込むことと、
を含む、コピー・ソース・ツー・ターゲット動作をプリエンプティブにかつ選択的に開始すること、
キャッシュの走査を開始し、ストレージにデステージする、キャッシュ内の変更済みデータのトラックを識別することと、
を含む、コンピュータ・プログラム製品。
【請求項１６】
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することは、ストレージにデステージする、キャッシュ内の変更済みデータのトラックを識別するために、キャッシュの安全データ・コミット走査を開始する前にある時間、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断することを含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することは、前記ポイント・イン・タイム・コピー・ソースから前記ポイント・イン・タイム・コピー・ターゲットへのポイント・イン・タイム・コピー関係が持続的であるかどうか、又は前記コピー関係の前記ポイント・イン・タイムがインクリメントされたかの関数として、キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することを含み、前記ポイント・イン・タイム・コピー・ソースから前記ポイント・イン・タイム・コピー・ターゲットへの前記ポイント・イン・タイム・コピー関係が持続的である場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することは、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回るかどうかの関数として、キャッシュ内の変更済みデータについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断することを含み、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの前記数が前記閾値を上回る場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１９】
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、キャッシュ内の変更済みデータのトラックの走査を開始し、ａ）ポイント・イン・タイム・コピー・ソースに対応し、かつｂ）前記ポイント・イン・タイム・ソースの対応するポイント・イン・タイム・コピー・ターゲットにまだコピーされていない変更済みデータのトラックを識別することと、キャッシュ内の識別されたトラックについてのコピー・ソース・ツー・ターゲット動作を選択的にかつプリエンプティブに開始することとをさらに含む、請求項１６に記載のコンピュータ・プログラム製品。
【請求項２０】
データは前記ポイント・イン・タイム・コピー・ソースにストライドで書き込まれ、データは前記ポイント・イン・タイム・コピー・ターゲットにストライドで書き込まれ、キャッシュ内の識別されたトラックについてのコピー・ソース・ツー・ターゲット動作を開始することは、
キャッシュ内の識別されたトラックがシーケンシャルであるかどうかを検知することと、識別されたシーケンシャル・トラックの検知に応答して、プリエンプティブにかつ選択的に、
ストライド・アラインされた読み取り動作を、前記ポイント・イン・タイム・コピー・ソースのポイント・イン・タイム・コピー・ターゲットに向け、前記ポイント・イン・タイム・コピー・ソースへのリダイレクトされる読み取り動作に、キャッシュ内の変更済みデータの前記識別されたシーケンシャル・トラックに対応する未変更のデータを取得させることと、
シーケンシャル・データのストライド・アラインされたトラックを、キャッシュ内の変更済みデータの前記識別されたシーケンシャル・トラックに対応する前記取得された未変更のデータを含むポイント・イン・タイム・コピー・ターゲットに書き込むことと、
を含む、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
キャッシュ内の変更済みデータのトラックの前記走査は、前記ストライド・アラインされた読み取り動作に対応する残りのトラックの走査をバイパスすることを含む、請求項２０に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット（copy source to target）管理のためのコンピュータ・プログラム製品、システム及び方法に関する。
【背景技術】
【０００２】
特に企業レベルにおけるデータ・ストレージ・システムは、通常、データ・ストレージ・システムのコンポーネントの故障の際にデータ損失のリスクを低減させるために、高レベルの冗長性をもたらすように設計される。従って、データの複数のコピーが、地理的に分散され得る複数のシステム上に格納されることが多い。その結果、データ・ストレージ・システム内に格納されるホストからのデータは、典型的には、ローカル・サイトの一次データ・ストレージ・システムに向けられ、次に、一次データ・ストレージ・システムから地理的に離れたシステムであり得る二次データ・ストレージ・システムの１つ又は複数の二次デバイスに複製される。１つの一次デバイスは、複数の二次関係を有することができ、そこで、一次デバイスに向けられるデータは、複数の二次デバイスに複製される。
【０００３】
ストレージ・コントローラは、ハードディスク、テープ等を含み得る複数のストレージ・デバイスを制御することができる。ストレージ・コントローラによって、キャッシュを保持することもでき、キャッシュは、ハードディスク、テープ等のような特定の他のストレージ・デバイスと比較してより迅速にアクセス可能な高速ストレージを含むことができる。しかしながら、キャッシュの記憶容量の総量は、ストレージ・コントローラによって制御される、ハードディスク等のような特定の他のストレージ・デバイスの記憶容量と比較すると相対的に小さいものであり得る。キャッシュは、異なる方法で互いに相互運用できる、ランダム・アクセス・メモリ（ＲＡＭ）、不揮発性ストレージ・デバイス（ＮＶＳ）、読み取りキャッシュ、書き込みキャッシュ等の１つ又は複数で構成され得る。ＮＶＳは、バッテリ・バックアップ式ランダム・アクセス・メモリで構成することができ、書き込み動作を高速で実行することを可能にし得る。ストレージ・コントローラは、ネットワーク化したホストから複数のストレージ・デバイスへの入力／出力（Ｉ／Ｏ）要求を管理することができる。
【０００４】
ストレージ・コントローラにより実施されるキャッシュ技術は、データを低速メモリ又はストレージ・デバイスとの間で読み書きするのに必要な実効時間を減らすことにより、入力／出力（Ｉ／Ｏ）待ち時間を隠蔽するのを助ける。従って、キャッシュは、読み取りデータ・アクセス要求にサービスし、変更済みデータ（modified data）のバッファリングを提供するために、外部ストレージからステージされたデータへ迅速にアクセスするために用いられる。書き込み要求がキャッシュに書き込まれ、次に、外部ストレージ・デバイスに書き込まれる（すなわち、デステージされる）。書き込みのための低待ち時間の継続を保証するために、ＮＶＳ内のデータを排出し、つまりデステージし、入ってくる書き込みのための何らかの空きスペースが常にあることを保証する必要がある。
【０００５】
タスク制御ブロック（ＴＣＢ：Task Control Block）は、特定のプロセスを管理するのに必要な情報を含むオペレーティング・システム・カーネルにおけるタスク制御データ構造である。ストレージ・コントローラは、データの移動を管理するために、ＴＣＢを用いて、ストレージ・デバイスとの間及びキャッシュ（ＮＶＳを含む）との間で情報を移すことができる。書き込み要求がホスト・コンピュータからストレージ・コントローラに発行されると、オペレーティング・システム・コードから、ＴＣＢが割り当てられ得る。ＴＣＢは、書き込まれるデータがホスト・コンピュータからキャッシュを通じてストレージ・デバイスに渡されるとき、書き込みプロセスについての情報を最初から最後まで保持するために用いられる。キャッシュがフル状態である場合、スペースを空けるために、キャッシュ内の既存のデータをデステージすること（すなわち、ストレージ・デバイスに書き込むこと）ができるまで、ＴＣＢをキューに入れることができる。デステージ動作は、キャッシュから、独立ディスクの冗長アレイ（ＲＡＩＤ：Redundant Array of Independent Disks）ストレージなどのストレージへの情報の移動を含むことがあり、デステージ動作を実行するために、デステージＴＣＢが割り当てられ得る。
【０００６】
ＴＣＢは、特定のＴＣＢにより制御されているタスクに基づいて分類することができる。例えば、「バックグラウンド」ＴＣＢは、ホスト入力／出力動作に直接関連しない動作を制御するＴＣＢである。従って、バックグラウンドＴＣＢの一例は、特定のホストＩ／Ｏ動作の一部として必要とされないバックグラウンド動作としてデステージ動作を制御するＴＣＢである。バックグラウンドＴＣＢの別の例は、ストレージからキャッシュへのトラックのプレステージ（prestage）を制御するＴＣＢであり、プレステージ動作は、特定のホストＩ／Ｏ動作の一部として必要とされないバックグラウンド動作として行われる。
【０００７】
別のタイプのＴＣＢは、典型的にはホスト入力／出力動作に直接関連する動作を制御する、「フォアグラウンド」ＴＣＢである。例えば、フォアグラウンドＴＣＢは、ホストＩ／Ｏ動作の代わりにデステージ又はステージ動作を実行するように割り当てることができる。従って、一般的に、ホスト読み取り時のキャッシュ・ミスにより引き起こされる、フォアグラウンドＴＣＢにより制御されるステージ動作は、１つ又は複数のトラックをストレージからキャッシュへステージし、ホスト読み取りを満たす。
【０００８】
ストレージ・コントローラは、二次ストレージへデステージすべき変更済みの（多くの場合、「ダーティ（dirty）」と呼ばれる）データについてキャッシュ・ディレクトリを走査する安全データ・コミット・プロセスを用いることが多い。そうしたキャッシュ・ディレクトリの走査は、例えば、毎正時など定期的に開始することができる。
【０００９】
データ複製システムにおいて、データは、通常、一次ストレージ・デバイス内の一次ボリュームと、一次ボリューム内に保持されるデータの同一コピーを含む、二次ストレージ・デバイス内の対応する二次ボリュームとを含むボリューム対（volume pair）で保持される。一次及び二次ボリュームは、ソース・ボリュームとも呼ばれる一次ボリュームのデータが、ターゲット・ボリュームとも呼ばれる二次ボリュームにコピーされるコピー関係により識別される。一次及び二次ストレージ・コントローラを用いて、一次及び二次ストレージ・デバイスへのアクセスを制御することができる。
【００１０】
ストレージ・コントローラ内のソース・トラックのセットとターゲット・トラックのセットとの間のポイント・イン・タイム・コピー関係（point-in-time copy relationship）を確立する、例えばＩＢＭ（登録商標）ＦｌａｓｈＣｏｐｙ機能などのポイント・イン・タイム・スナップコピー機能を用いて、トラックのセットのほぼ瞬間的なコピーを生成することができる。コピー関係のトラックのセットは、例えば、ボリューム全体若しくは論理ユニット（ＬＵＮ）又はボリュームの部分を含むことができる。従って、例えばトラックのセットがボリューム全体である場合、ポイント・イン・タイム・スナップコピー機能は、ポイント・イン・タイム・スナップコピー・ボリューム、又は単にポイント・イン・タイム・コピー・ボリュームと呼ぶことができるターゲット・ボリューム内に、特定の時点のソース・ボリュームの内容の「スナップショット」を作成する。ポイント・イン・タイム・スナップコピー機能の１つのバージョンは、バックグラウンド・コピー動作において、ポイント・イン・タイム・コピー・ソース・ボリュームの内容を、ポイント・イン・タイム・コピー・ターゲット・ボリュームに転送する。
【００１１】
ソース・ボリュームの対応するトラックの内容をまだ受け取っていないポイント・イン・タイム・コピー・ターゲット・ボリュームのトラックに向けられるあらゆる読み取り動作は、ソース・ボリュームからそのトラックの内容を取得するようにリダイレクトされる。従って、ポイント・イン・タイム・コピー・ターゲット・ボリュームの内容は、あらゆるトラックがターゲット・ボリュームに実際に転送される前に、間接的ではあるが即座に利用可能となる。逆に、ホストが、そのトラックの内容がポイント・イン・タイム・コピー・ターゲット・ボリュームに転送される前にソース・ボリュームのトラックの更新を指示する場合、ソース・ボリュームのトラックの内容がポイント・イン・タイム・コピー・ターゲット・ボリュームに転送されてから、更新によりソース・ボリュームのそのトラックの内容を上書きすることが許可される。
【００１２】
ポイント・イン・タイム・スナップコピー機能の別のバージョンは、バックグラウンド・コピー動作を省略する。従って、ソース・ボリュームの内容は、バックグラウンド・コピー動作においてポイント・イン・タイム・コピー・ボリュームに転送されない。その結果、ポイント・イン・タイム・コピー・ターゲット・ボリュームのトラックに向けられるあらゆる読み取り動作は、通常、ソース・ボリュームからそのトラックの内容を取得するようにリダイレクトされる。しかしながら、ホストがソース・ボリュームのトラックの更新を指示する場合、ソース・ボリュームのそのトラックの未変更の（unmodified）内容がポイント・イン・タイム・コピー・ターゲット・ボリュームに転送されてから、更新によりソース・ボリュームのそのトラックの、オリジナルの未変更の内容を上書きすることが許可される。書き込み時のそうしたコピー動作は、「コピー・オン・ライト（Copy on Write）」として知られている。
【００１３】
ポイント・イン・タイム・コピー関係が確立された後にキャッシュに書き込まれたデータに関してソースへのデステージがある場合、データをソースからターゲットへコピーすることもでき、一般的には、「コピー・オン・デステージ（Copy on Destage）」と呼ばれる。既知のコピー・オン・デステージ動作は、著しいシステム・リソースを消費する。より具体的には、コピー・オン・デステージ動作は、最初に、ポイント・イン・タイム・コピー関係のソースから古い未変更のデータをキャッシュに入れるようにステージし、次に、その古い未変更のデータをキャッシュからポイント・イン・タイム・コピー関係のターゲットにデステージする。次に、キャッシュからソースへの新しい変更済みデータのデステージにより、ソース上の古い未変更のデータを上書きすることが許可される。ポイント・イン・タイム・コピー関係についてのこうした既知のコピー・オン・デステージ動作は、ソースへのデステージ動作を著しく減速させ得ることを理解されたい。
【００１４】
ポイント・イン・タイム・コピー関係のソースに向けられるシーケンシャル（sequential）な書き込みにおいて、「コピー・オン・デステージ」動作は、一般的に、ソースからトラックのストライド（stride）全体における古い未変更のデータを読み取り、次に、それらのトラックのデータをポイント・イン・タイム・コピー関係のターゲットにデステージする。ストライドは、明確な開始境界及び終了境界を有する、トラックの、一般的にはシーケンシャルなトラックのセットである。例えば、ＲＡＩＤ（独立ディスクの冗長アレイ）パリティ・データなどのパリティ・データは、それらの境界内のトラック上に格納されるデータに基づいて計算され、トラックのストライドについてのパリティ・データも、ストライド境界内に格納される。従って、１又は複数のストライドの境界とアラインされる読み取り及び書き込み動作は、ストライドごとにストライド・パリティ・データに対する読み取り（デコード）及び書き込み（エンコード）動作を完了できるので、効率性が促進される。
【００１５】
従って、ソース・ストライド及びターゲット・ストライドがアラインされた場合、コピー・オン・デステージ動作は容易になる。しかしながら、ソース・ストライド及びターゲット・ストライドがアラインされない場合、ソースからの読み取り動作がソースのストライド境界とストライド・アラインされ得るにもかかわらず、一般的には、ターゲットへのデステージは、ターゲットのストライド境界とストライド・アラインされない。種々のシステムにおいて、ソース・ストライド及びターゲット・ストライドがアラインされる構成を作成するのは困難である。従って、ストレージ・コントローラにより制御されるストレージにおいてポイント・イン・タイム・コピー関係がある場合、シーケンシャルＩ／Ｏ性能に悪影響を及ぼすことがある。
【発明の概要】
【発明が解決しようとする課題】
【００１６】
データ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット管理のためのコンピュータ・プログラム製品、システム及び方法を提供する。
【課題を解決するための手段】
【００１７】
本説明によるコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境の１つの一般的な態様は、ポイント・イン・タイム・コピー・ソース内のデータのセットを変更するためのシーケンシャル書き込み動作を検知するシーケンシャル書き込み検知論理と、検知に応答して、ストライド・アラインされた（stride-aligned）コピー・ソース・ツー・ターゲット動作を開始するコピー・ソース・ツー・ターゲット論理とに向けられる。１つの実施形態において、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作は、ストライド・アラインされた読み取り動作を、ポイント・イン・タイム・コピー・ソースのポイント・イン・タイム・コピー・ターゲットに向け、ポイント・イン・タイム・コピー・ソースへのリダイレクトされた動作に、データのセットを含む読み取りデータを取得させることと、ストライド・アラインされたデータを読み取りデータのセットを含むポイント・イン・タイム・コピー・ターゲットに書き込むこととを含む。
【００１８】
別の態様において、タスク制御ブロック生成論理が、コピー・ソース・ツー・ターゲット動作を制御するためのタスク制御ブロック・データ構造を生成し、タスク制御ブロックは、開始トラック値及びトラック値の数を含む少なくとも２つの入力値を有する。タスク制御ブロック・データ構造により制御されるストライド・アラインされた読み取り動作は、開始トラック値により識別されるトラック、続いてトラック値の数により識別されるトラックの数を含む、トラックの１つ又は複数のストライドに向けられる。
【００１９】
ポイント・イン・タイム・コピー・ソースが、複数のポイント・イン・タイム・コピー・ターゲットと１対複数のコピー関係にある別の態様において、コピー・ソース・ツー・ターゲット論理は、コピー関係の各ポイント・イン・タイム・コピー・ターゲットについてのシーケンスのコピー・ソース・ツー・ターゲット動作を含むコピー・ソース・ツー・ターゲット動作のシーケンスを開始する。タスク制御ブロック生成論理は、タスク制御ブロック・データ構造を生成し、各々のタスク制御ブロック・データ構造は、コピー・ソース・ツー・ターゲット動作のシーケンスのコピー・ソース・ツー・ターゲット動作を一度に１つずつ制御する。
【００２０】
更に別の態様は、書き込み動作のＮ番目ごとのトラックをチェックし、書き込み動作がシーケンシャル書き込み動作であるかどうかを判断することにより、シーケンシャル書き込み動作を検知するシーケンシャル書き込み検知論理に向けられる。別の実施形態において、シーケンシャル書き込み検知論理は、書き込み動作を開始したホストがその書き込み動作をシーケンシャル書き込み動作として指定したかどうかを判断することにより、シーケンシャル書き込み動作を検知する。書き込み動作がデータのトラックをキャッシュに書き込むことを含む更に別の実施形態において、シーケンシャル書き込み検知論理は、キャッシュに以前に書き込まれたトラックを検査して、書き込み動作のトラックが順序通りである（in sequence）かどうかを判断することにより、シーケンシャル書き込み動作を検知する。更に別の実施形態において、シーケンシャル書き込み検知論理は、キャッシュへの書き込み動作がいつ完了したかを判断し、キャッシュ内の書き込まれたトラックを検査し、キャッシュに書き込まれたトラックが順序通りであるかどうかを判断することにより、シーケンシャル書き込み動作を検知する。
【００２１】
本説明の別の態様において、安全データ・コミット論理が、キャッシュの安全データ・コミット走査を開始し、ストレージにデステージする変更済データのトラックを識別し、シーケンシャル書き込み動作のキャッシュ内の変更済データのトラックのデステージをバイパスする。タスク制御ブロック生成論理は、コピー・ソース・ツー・ターゲット動作を制御するためのタスク制御ブロック・データ構造を生成するので、コピー・ソース・ツー・ターゲット動作のストライド・アラインされた読み取り動作は、キャッシュ内のバイパスされたトラックに対応するポイント・イン・タイム・コピー・ターゲットのトラックを含む。
【００２２】
本説明によるコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境の別の一般的な態様は、キャッシュ内の変更済データについて、プリエンプティブ（preemptive）なコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するプリエンプティブ条件監視論理と、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、コピー・ソース・ツー・ターゲット動作をプリエンプティブにかつ選択的に開始するコピー・ソース・ツー・ターゲット論理とに向けられる。１つの実施形態において、コピー・ソース・ツー・ターゲット動作は、ポイント・イン・タイム・コピー・ソースを読み取り、未変更のデータのセットを含む読み取りデータを取得し、未変更のデータのセットをポイント・イン・タイム・コピー・ターゲットに書き込むことを含む。安全データ・コミット論理は、キャッシュの走査を開始し、ストレージにデステージするキャッシュ内の変更済みデータのトラックを識別する。
【００２３】
１つの実施形態において、プリエンプティブ条件監視論理は、ストレージにデステージするキャッシュ内の変更済みデータのトラックを識別するために、キャッシュの安全データ・コミット走査を開始する前にある時間、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断する。別の実施形態において、プリエンプティブ条件監視論理は、ポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットへのポイント・イン・タイム・コピー関係が持続的であるかどうか、又はコピー関係のポイント・イン・タイムがインクリメントされたかの関数として、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断する。１つの実施形態において、プリエンプティブ条件監視論理は、ポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットへのポイント・イン・タイム・コピー関係が持続的である場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断する。
【００２４】
変更済みデータのセットをキャッシュに書き込むことが変更済みデータをトラックに書き込むことを含む、更に別の実施形態において、プリエンプティブ条件監視論理は、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回るかどうかの関数として、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断する。１つの実施形態において、プリエンプティブ条件監視論理は、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回る場合に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断する。
【００２５】
更に別の実施形態は、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、キャッシュ内の変更済みデータのトラックの走査を開始し、ａ）ポイント・イン・タイム・コピー・ソースに対応し、かつｂ）ポイント・イン・タイム・コピー・ソースの対応するポイント・イン・タイム・コピー・ターゲットにまだコピーされていない変更済みデータのトラックを識別するプリエンプティブ走査論理に向けられる。プリエンプティブ走査論理は、コピー・ソース・ツー・ターゲット論理に、これらの条件を満たすキャッシュ内の識別されたトラックに対するコピー・ソース・ツー・ターゲット走査を選択的にかつプリエンプティブに開始させる。
【００２６】
更に別の実施形態は、キャッシュ内の識別されたトラックがシーケンシャルであるかどうかを検知するシーケンシャル書き込み検知論理に向けられる。コピー・ソース・ツー・ターゲット論理は、識別されたシーケンシャル・トラックの検知に応答して、プリエンプティブにかつ選択的に、ストライド・アラインされた読み取り動作をポイント・イン・タイム・コピー・ソースのポイント・イン・タイム・コピー・ターゲットに向ける。ポイント・イン・タイム・コピー・ターゲットへのストライド・アラインされた読み取り動作は、キャッシュ内の変更済みデータの識別されたシーケンシャル・トラックに対応する未変更のデータを取得するために、ポイント・イン・タイム・コピー・ターゲットへのリダイレクトされた読み取りを行わせる。コピー・ソース・ツー・ターゲット論理は、シーケンシャル・データのストライド・アラインされたトラックを、キャッシュ内の変更済みデータの識別されたシーケンシャル・トラックに対応する取得された未変更のデータを含むポイント・イン・タイム・コピー・ターゲットに書き込む。更に別の実施形態は、ストライド・アラインされた読み取り動作に対応する残りのトラックの走査をバイパスするプリエンプティブ走査論理に向けられる。
【００２７】
本説明によるコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境の別の態様は、入力／出力動作を開始するように構成されたホストと、プロセッサ及びキャッシュを有するストレージ・コントローラと、ストレージ・コントローラにより制御され、ポイント・イン・タイム・コピー・ソース及びポイント・イン・タイム・コピー・ターゲットを含むストレージとを有するシステムでの利用に向けられる。
【００２８】
説明される技術の実装形態は、ハードウェア、方法又はプロセス、又はコンピュータ・アクセス可能媒体上のコンピュータ・ソフトウェアを含むことができる。特定の用途に応じて、他の特徴及び態様を実現することもできる。
【図面の簡単な説明】
【００２９】
【図１】本説明の１つの態様によるデータ・ストレージ・システムにおいてコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境の実施形態を示す。
【図２】図１のコンピューティング環境におけるコピー・ソース・ツー・ターゲット管理を用いるデータ・ストレージ・システムの例を示す。
【図３】本説明の１つの態様によるデータ・ストレージ・システムにおいてコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境で用いることができるコピー・ソース・ツー・ターゲット動作の例である。
【図４】本説明の１つの態様によるデータ・ストレージ・システムにおいてコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境で用いることができるコピー・ソース・ツー・ターゲット動作の例である。
【図５】図１のコンピューティング環境におけるホストの例を示す。
【図６】本説明の１つの態様によるシーケンシャル書き込みのコピー・ソース・ツー・ターゲット動作の例を示す。
【図７】図２のストレージ・システムにおけるターゲット・デステージ論理の例を示す。
【図８】本説明の１つの実施形態によるコピー・ソース・ツー・ターゲット動作を制御するためのタスク制御ブロック・データ構造の例を示す。
【図９】本説明の１つの態様による安全データ・コミット走査の動作の例を示す。
【図１０】本説明の１つの態様によるプリエンプティブなコピー・ソース・ツー・ターゲット動作の条件の判断の例を示す。
【図１１】本説明の１つの態様によるプリエンプティブなコピー・ソース・ツー・ターゲット走査の例を示す。
【図１２】本説明によるデータ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット動作を用いるコンピュータの実施形態を示す。
【発明を実施するための形態】
【００３０】
本説明によるコピー・ソース・ツー・ターゲット（ＣＳＴ：copy source to target）管理がない場合、既知の「コピー・オン・デステージ」動作は、種々の条件の下でシステム性能の著しい低下をもたらし得る。例えば、上で説明したように、既知のコピー・オン・デステージ動作は、著しいシステム・リソースを消費し得る。より具体的には、コピー・オン・デステージ動作は、最初に、ポイント・イン・タイム・コピー関係のソースから古い未変更のデータをキャッシュに入れるようにステージし、次に、その古い未変更のデータをキャッシュからポイント・イン・タイム・コピー関係のターゲットにデステージする。次に、キャッシュからソースへの新しい変更済みデータのデステージにより、ソース上の古い未変更のデータを上書きすることが許可される。こうしたコピー・オン・デステージ動作は、ソースへのデステージ動作を著しく減速させ得ることを理解されたい。従って、キャッシュが、ポイント・イン・タイム・コピー関係に属するトラックについての変更済みデータを含むとき、システム性能が低下することがある。
【００３１】
以下により詳細に説明されるように、本説明によるコピー・ソース・ツー・ターゲット（ＣＳＴ）管理の１つの態様において、ソース・デステージ動作より前に、コピー・ソース・ツー・ターゲット動作をプリエンプティブに行うことができる。その結果、ソースからターゲットへの古い未変更のデータのコピーは、ソース・デステージ動作が開始されるまでに既に達成されている。従って、ソースからターゲットへの古い未変更のデータのコピーの完了を待つことにより、ソース・デステージ動作を遅延させる必要はない。
【００３２】
本説明によるコピー・ソース・ツー・ターゲット（ＣＳＴ）管理の別の態様において、ソース・デステージ動作より前に、プリエンプティブなコピー・ソース・ツー・ターゲット動作を選択的に行うことができる。例えば、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在し、ソース・デステージ動作によってデータが上書きされる前に、プリエンプティブなコピー・ソース・ツー・ターゲット動作が必要なデータを保存できると判断されるとき、そうしたプリエンプティブなコピー・ソース・ツー・ターゲット動作を選択的に行うことができる。逆に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在せず、ソース・デステージ動作によってデータが上書きされる前に、プリエンプティブなコピー・ソース・ツー・ターゲット動作が必要データを保存する必要がないと判断されるとき、そうしたプリエンプティブなコピー・ソース・ツー・ターゲット動作をバイパスすることができる。その結果、システム性能は、必要に応じて、プリエンプティブなコピー・ソース・ツー・ターゲット動作により改善され得るが、そうしたプリエンプティブなコピー・ソース・ツー・ターゲット動作が必要とされない場合は低下しない。
【００３３】
前述のように、コピー・ソースへのシーケンシャル書き込みのデステージのために、既知の「コピー・オン・デステージ」動作は、コピー・ソースからストライドを読み取り、次に、それらのトラックをコピー・ターゲットにデステージする。ソース・ストライド及びターゲット・ストライドがアラインしている場合、効率が促進される。しかしながら、ソース・ストライド及びターゲット・ストライドがアラインしていない場合、既知のコピー・オン・デステージ動作において、ターゲットに対するデステージはストライド全体ではないことが多く、そのことは性能に著しい悪影響を及ぼすことがある。例えば、ターゲットに書き込むために新しいストライドを生成するために、ターゲットのためのストライドを補完するのに、ソース又はターゲットからの付加的なデータを必要とすることがある。
【００３４】
本説明の別の態様において、論理が、ポイント・イン・タイム・コピー・ソースに向けられた大容量のブロック書き込みを含むシーケンシャル書き込みを検知し、それに応答して、関連したポイント・イン・タイム・コピー・ターゲットに対するデステージ・タスクを開始するように構成される。以下に詳細に説明されるように、デステージ・タスクは、１つの実施形態において、後のコピー・ソース・デステージ動作において、ポイント・イン・タイム・コピー・ソース内の未変更のデータを上書きする前に、未変更のデータをポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットにコピーするストライド・アラインされたコピー・ソース・ツー・ターゲット動作を含む。その結果、シーケンシャル書き込み動作のシーケンシャル書き込みデータがポイント・イン・タイム・コピー・ソースにデステージされると、そうしたソース・デステージは、既に実行されているため、コピー・ソース・ツー・ターゲット動作を待つ必要がない。さらに、コピー・ソース・ツー・ターゲット動作は、ポイント・イン・タイム・コピー・ターゲットのストライド境界に対してストライド・アラインされている。その結果、ソース・デステージ動作におけるポイント・イン・タイム・コピー・ソースへのシーケンシャル書き込み動作及びターゲット・デステージ動作におけるポイント・イン・タイム・コピー・ターゲットへのシーケンシャル書き込み動作は、どちらもソース・ボリューム及びターゲット・ボリュームのそれぞれのストライド境界に対してストライド・アラインされている。従って、ストレージ・コントローラにおけるポイント・イン・タイム・コピーがあるときのシーケンシャルＩ／Ｏ性能の低下を低減又は排除することができる。特定の用途に応じて、他の対応及び利点を実現することもできる。
【００３５】
１つ又は複数のコンピュータのシステムは、動作において、本説明によるコピー・ソース・ツー・ターゲット動作をシステムに行わせる、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせがシステム上にインストールされることによって、本説明によるデータ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット管理用に構成することができる。例えば、１つ又は複数のコンピュータ・プログラムは、データ処理装置により実行されるとき、装置に動作を実行させる命令を含むことによって、データ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット管理を実行するように構成することができる。
【００３６】
本明細書で説明される動作は、手動で実行されるように示される場合を除き、システム・オペレータの介入がほとんどなしに又はオペレータの介入なしに、自動的に又は実質的に自動的に動作を行うように構成された論理によって実行される。従って、本明細書で使用される場合、「自動的」という用語は、完全に自動的であることを含み、つまり、グラフィカル・ユーザ選択インターフェースへのユーザ入力のような、人間の介入がない１つ又は複数のハードウェア又はソフトウェア制御マシンにより実行される動作である。本明細書で使用される場合、「自動的」という用語は、主として自動的であること、つまり、動作の大部分（例えば、５０％を超える）が、グラフィカル・ユーザ選択インターフェースへのユーザ入力のような人間の介入のない１つ又は複数のハードウェア又はソフトウェア制御マシンにより実行され、動作の残り（例えば、５０％未満）が手動で実行されること、つまり、動作の性能を導くために、グラフィカル・ユーザ選択インターフェースへのユーザ入力のような人間の介入を用いて１つ又は複数のハードウェア又はソフトウェア制御マシンにより実行されることをさらに含む。
【００３７】
本明細書で説明される機能要素の多くは、その実装の独立性をより具体的に強調するために、「論理」として表記されている。例えば、論理要素は、カスタムＶＬＳＩ回路又はゲートアレイ、論理チップなどの市販の半導体、トランジスタ、又は他の個別部品を含むハードウェア回路として実装することができる。論理要素は、フィールド・プログラマブル・ゲートアレイ、プログラマブル・アレイ論理、プログラマブル論理デバイス等のようなプログラマブル・ハードウェア・デバイスで実装することもできる。
【００３８】
論理要素は、種々のタイプのプロセッサによる実行のためにソフトウェアで実装することもできる。実行可能コードを含む論理要素は、例えば、オブジェクト、手順、又は機能として編成できるコンピュータ命令の１つ又は複数の物理若しくは論理ブロックを含むことができる。それにもかかわらず、識別された論理要素の実行ファイルは、物理的に一緒に配置する必要はなく、異なる位置に格納された異なる命令を含むことができ、それらは、互いに論理的に結合されたとき、論理要素を含み、論理要素のための規定の目的を達成する。
【００３９】
実際には、論理要素のための実行可能コードは、単一の命令、又は多数の命令とすることができ、幾つかの異なるコード・セグメントにわたって、異なるプログラム間で、異なるプロセッサ間で、及び幾つかのメモリ・デバイスにわたって分布させることさえ可能である。同様に、動作データは、本明細書において論理要素内で識別され、示されることがあり、任意の適切な形態で具体化し、任意の適切なタイプのデータ構造内に編成することができる。動作データは、単一のデータ・セットとして収集することができ、又は異なるストレージ・デバイス上を含む異なる位置上に分布させることができる。
【００４０】
説明される技術の実装形態は、ハードウェア、方法若しくはプロセス、又はコンピュータ・アクセス可能媒体上のコンピュータ・ソフトウェアを含むことができる。図１、図２は、本説明によるデータ・ストレージ・システムにおけるコピー・ソース・ツー・ターゲット管理を用いるコンピューティング環境の実施形態を示す。複数のホスト１ａ、１ｂ．．．１ｎは、データを読み書きするために、ネットワーク６上で入力／出力（Ｉ／Ｏ）要求を１つ又は複数のデータ・ストレージ・デバイス又はシステム２ａ、２ｂ、２（図２）にサブミットすることができる。ホスト１ａ、１ｂ．．．１ｎは、別個の物理デバイスであってもよく、又は、例えばサーバのパーティションの割り当てられたリソースを用いて実装される仮想デバイスであってもよい。同様に、データ・ストレージ・システム（単数又は複数）２（図２）、２ａ、２ｂもまた、別個の物理デバイスであってもよく、又は、例えば１つ又は複数のサーバのパーティションの割り当てられたリソースを用いて実装される仮想デバイスであってもよい。
【００４１】
示される実施形態において、データ・ストレージ・システム２ａは一次データ・ストレージ・システムであり、データ・ストレージ・システム２ｂは二次データ・ストレージ・システムであり、そこで、ホストにより一次データ・ストレージ・システム２ａ上に格納されたデータは、二次データ・ストレージ・システム２ｂにミラーリングされる。図１に示される実施形態は単一の二次データ・ストレージ・システム２ｂを示すが、一次データ・ストレージ・システム２ａは、１つより多い二次データ・ストレージ・システムを有し得る。
【００４２】
各データ・ストレージ・システム２（図２）、２ａ、２ｂは、それぞれストレージ１０、１０ａ、１０ｂの複数のデータ・ストレージ・ユニット内に格納されたデータにアクセスする、それぞれストレージ・コントローラ又は制御ユニット４（図２）、４ａ、４ｂを含む。ストレージ１０、１０ａ、１０ｂの各データ・ストレージ・ユニットは、当技術分野において周知の、物理ハードディスク、ソリッド・ステート・ドライブ等のような、データを格納できる任意の適切なデバイスを含むことができる。従って、１つの実施形態において、ストレージ１０、１０ａ、１０ｂは、ハードディスク・ドライブ及び磁気テープなどの１つ又は複数のシーケンシャル・アクセス・ストレージ・デバイスで構成されてもよく、又は例えばソリッド・ステート・ドライブ（ＳＳＤ）などの非シーケンシャル・アクセス・ストレージ・デバイスを含んでもよい。ストレージ１０（図２）、１０ａ、１０ｂの各デバイスは、データ・ストレージ用の単一のシーケンシャル又は非シーケンシャル・アクセス・ストレージ・デバイスを含むことができ、又は単純ディスク束（ＪＢＯＤ：Just a Bunch of Disks）、ダイレクト・アクセス・ストレージ・デバイス（ＤＡＳＤ：Direct Access Storage Device）、独立ディスクの冗長アレイ（ＲＡＩＤ）アレイ、仮想化デバイス、テープ・ストレージ、フラッシュ・メモリ等のような、データ・ストレージ用のデバイスのアレイを含むことができる。
【００４３】
特定の実施形態において、例えば、ストレージ・ユニットは、独立ディスクの冗長アレイ（ＲＡＩＤ）ストレージ・ランク１１ａ（図２）、・・・１１ｎとして構成されるディスクであってもよく、そこで、１つ又は複数のＲＡＩＤストレージ・ランクは、ハードディスクの損失の場合にデータ復旧を容易にするための、ＲＡＩＤ構成のハードディスクのアレイである。ストレージ１０、１０ａ、１０ｂのストレージ・ユニットは、ソリッド・ステート・ドライブの損失の場合にデータ復旧を容易にするための、ＲＡＩＤ構成のソリッド・ステート・ドライブのような他のタイプのストレージであってもよい。ストレージ１０（図２）、１０ａ、１０ｂのストレージ・ユニットは、ボリューム、エクステント、ストライド、トラック等のようなデータ・ストレージのサブユニット内にデータを格納するように構成することができる。
【００４４】
各ストレージ・コントローラ４（図２）、４ａ、４ｂは、各々が単一の又は複数のプロセッサ・コアを有する、１つ又は複数のプロセッサ又は中央処理ユニットにより提供されるプロセッサ・リソースを含むＣＰＵコンプレックス１２（図２）を含む。この実施形態において、プロセッサ・コアは、例えば、演算論理ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、及び／又は種々のレベルのキャッシュ（Ｌ１及びＬ２キャッシュなど）のような、命令の実行に関与するＣＰＵのコンポーネントを含む。プロセッサ・コアは、本明細書に記載されるものに加えて又はその代わりに他の論理要素を有し得ることが理解される。
【００４５】
各ストレージ・コントローラ４（図２）、４ａ、４ｂは、ホストからのＩ／Ｏデータ要求又は別のデータ・ストレージ・システムからのミラーリングされたデータに応答して、関連したストレージ１０（図２）、１０ａ、１０ｂとの間でデータを読み書きすることを含むストレージ動作を管理するためのストレージ・マネージャ２４を含むメモリ２０をさらに有する。メモリ２０のキャッシュ２８は、ＲＡＭ、書き込みキャッシュ、読み取りキャッシュ、ＮＶＳ等のような異なるタイプのメモリの１つ又は複数を含むことができる。キャッシュを含む異なるタイプのメモリは、互いに相互運用することができる。各ストレージ・コントローラ４（図２）、４ａ、４ｂのＣＰＵコンプレックス１２は、各々がそれぞれの割り当てられたメモリ２０、ストレージ・マネージャ２４、キャッシュ２８等を有する、複数のプロセッサのクラスタを有することができる。各クラスタに割り当てられた処理及びメモリ・リソースは、特定の用途に応じて、物理的なもの、仮想のもの、共有のもの、転送可能なもの、又は専用のものとすることができる。
【００４６】
ホスト１ａ．．．１ｎからの書き込みは、最初に、一次ストレージ・コントローラ４ａのキャッシュ２８に書き込み、後で、一次ストレージ・システム２ａのストレージ１０ａにデステージすることができる。ホスト１ａ．．．１ｎからの読み取りは、対応する情報がそのキャッシュ２８内で利用可能な場合には、一次ストレージ・コントローラ４ａのキャッシュ２８から満たすことができ、そうでない場合は、情報はストレージ１０ａからキャッシュ２８にステージされ、次いで要求中のホスト１ａ．．．１ｎに与えられる。
【００４７】
最初にキャッシュ２８及び一次ストレージ・コントローラ４ａのストレージ１０ａに書き込まれたホスト１ａ．．．１ｎからの書き込みは、一次ストレージ・コントローラ４ａのストレージ・マネージャ２４により、二次ストレージ・コントローラ４ｂにミラーリングすることができる。ミラーリングされたデータは、最初に、二次ストレージ・コントローラ４ｂのキャッシュ２８に書き込み、後で、二次ストレージ・システム２ｂの二次ストレージ・コントローラ４ｂにより制御されるストレージ１０ｂにデステージすることができる。
【００４８】
ストレージ・コントローラ４（図２）、４ａ、４ｂのメモリ２０は、ストレージ１０（図２）、１０ａ、１０ｂ内に格納されたトラックのデータをキャッシュ２８に転送するプレステージ又はステージ動作の結果として、又はストレージ１０（図２）、１０ａ、１０ｂの対応するトラック（単数又は複数）に後でデステージするためにデータをキャッシュ２８に書き込むホスト書き込み動作の結果として、キャッシュ２８内に格納されたデータを有するトラックを識別するキャッシュ・ディレクトリ３０を含む。示される実施形態において、キャッシュ・ディレクトリ３０は、キャッシュ２８内の全てのトラックのハッシュ・テーブルである既知のデータ構造の形で実装される。各トラックは、トラック識別情報（ＩＤ）と、トラックのデータが、「ダーティ」であるかどうか、つまり、ストレージ１０（図２）、１０ａ、１０ｂの対応するトラックにまだ安全にデステージされてないかどうかに関する表示とを含むキャッシュ・ディレクトリ３０のスロットにハッシュされる。スロットにハッシュされた複数のトラックは、互いにリンクされる。他のタイプのデータ構造を用いて、適切なキャッシュ・ディレクトリを実装できることが理解される。
【００４９】
例えば、キャッシュ書き込み、ステージ、プレステージ、及びデステージ動作を含む、ストレージ・マネージャ２４のＩ／Ｏ動作を含む動作は、メモリ２０のタスク制御ブロック（ＴＣＢ）３２を利用する。各ＴＣＢは、特定のプロセスを管理するのに必要な情報を含むオペレーティング・システム・カーネル内のデータ構造である。ストレージ・コントローラは、データの移動を管理するために、ＴＣＢを用いて、情報をストレージとの間、及び、キャッシュとの間で移動することができる。書き込み要求がホストからストレージ・コントローラへ発行される、又はデータが一次データ・ストレージ・システムから二次データ・ストレージ・システムへミラーリングされると、オペレーティング・システム・コードから、ＴＣＢを割り当てることができる。ＴＣＢは、書き込まれるデータがソースからキャッシュを通じてストレージに渡されるとき、書き込みプロセスについての情報を最初から最後まで保持するために用いられる。キャッシュがフル状態の場合、スペースを空けるために、キャッシュ内の既存のデータをデステージすること（すなわち、ストレージ・デバイスに書き込むこと）ができるまで、ＴＣＢをキューに入れることができる。
【００５０】
本説明の１つの態様において、ストレージ・マネージャ２４は、ポイント・イン・タイム・コピー・ソース・ボリュームへの大容量のブロック書き込みを含むシーケンシャル書き込みを検知するように構成されるターゲット・デステージ論理３３を含み、それに応答して、関連したポイント・イン・タイム・コピー・ターゲットに対するデステージ・タスクを開始する。以下により詳細に説明されるように、デステージ・タスクは、１つの実施形態において、後のコピー・ソース・デステージ動作において、ポイント・イン・タイム・コピー・ソース内の未変更のデータを上書きする前に、未変更のデータをポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットにコピーするストライド・アラインされたコピー・ソース・ツー・ターゲット動作を含む。
【００５１】
本説明の別の態様において、ターゲット・デステージ論理３３はさらに、そうしたコピー・ソース・ツー・ターゲット動作が適切であるか、又は他の発生により不要にされたかを示す条件に応じて、コピー・ソース・ツー・ターゲット動作を選択的にかつプリエンプティブに実行するように構成される。例えば、コピー・ソース・ツー・ターゲット動作が、ポイント・イン・タイム・コピー・ソースに向けられる書き込み動作に起因するそうした未変更のデータを上書きする前に、未変更のデータをポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットにコピーするのに適切なままであるこれらの状況は、安全データ・コミット走査が開始されている又は差し迫っている場合を含む。プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件の他の例は、関係のポイント・イン・タイム・コピー・ソースへのデステージ動作において上書きする前に以前のコピーされていないデータをもはや保存することを必要としないようにインクリメントされたコピー関係とは対照的な、持続的なポイント・イン・タイム・コピー関係に属するトラックがキャッシュ内に存在することを含む。
【００５２】
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在し得る別の例は、ポイント・イン・タイム・コピー関係に属するキャッシュ内の変更済みデータのトラックの数が、設定された閾値を上回る場合を含む。これらの又は他の条件の１つ又は複数が満たされると、プリエンプティブなコピー・ソース・ツー・ターゲット動作は、デステージ動作において、データがコピー・ソースに上書きされる前に、未変更のデータを、ポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットにコピーすることによってプリエンプティブに保存することでシステム性能を改善するのに特に有用であり得る。従って、未変更のデータの保存は既にプリエンプティブに完了しているので、未変更のデータを、ソース・デステージにより上書きされる前に保存するように、後のソース・デステージ動作がコピー・ソース・ツー・ターゲット動作を待つ必要はない。逆に、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在しないと判断される場合、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件をバイパスすることができる。
【００５３】
ストレージ・マネージャ２４は、ポイント・イン・タイム・コピー・ソースとポイント・イン・タイム・コピー・ターゲットとの間のポイント・イン・タイム・コピー関係３７に従ってポイント・イン・タイム・コピーを生成するように構成されたデータ複製論理３５（図２）をさらに含む。図３は、ストレージ１０（図２）のソース５０などのポイント・イン・タイム・コピー・ソースのソース・トラックのセットと、コントローラ４（図２）などのストレージ・コントローラにより制御されるストレージ１０内にもあり得る、ターゲット５４などのポイント・イン・タイム・コピー・ターゲットのターゲット・トラックの対応するセットとの間に確立されるポイント・イン・タイム・コピー関係の例を示す。ポイント・イン・タイム・コピー関係のトラックは、例えば、ボリューム全体若しくは論理ユニット（ＬＵＮ）、ボリュームの部分、又はストレージの他のユニット若しくはサブユニットを含むことができる。
【００５４】
典型的なポイント・イン・タイム・コピー関係において、データは通常、関係が確立された時には、ソース５０からターゲット５４にコピーされない。代わりに、データは、バックグラウンド・コピー・プロセスを用いて、又はポイント・イン・タイム・コピー関係が確立された後にキャッシュに書き込まれたデータのソース５０に対するデステージと関連して、ソース５０からターゲット５４にコピーすることができる。ソースに対して実行されるデステージ動作と関連して、データをポイント・イン・タイム・コピー関係のソースからターゲットにコピーする１つの既知のコピー動作は、「コピー・オン・デステージ（Copy On Destage）」と呼ばれることが多い。本説明によるコピー・ソース・ツー・ターゲット管理がない場合、既知の「コピー・オン・デステージ」動作は、種々の条件下でシステム性能の著しい低下をもたらし得る。以下により詳細に説明されるように、本説明によるコピー・ソース・ツー・ターゲット管理の１つの態様において、ターゲット・デステージ論理３３（図２）は、ソース・デステージ動作の前に、コピー・ソース・ツー・ターゲット動作を選択的及びプリエンプティブに行う。その結果、ソースからターゲットへの古い未変更のデータのコピーは、ソース・デステージ動作が開始されるまでに既に達成されている。従って、ソースからターゲットへの古い未変更のデータのコピーの完了を待つことにより、ソース・デステージ動作を遅延させる必要はない。
【００５５】
本説明によるコピー・ソース・ツー・ターゲット管理の別の例は、ポイント・イン・タイム・コピー・ソースを対象としたシーケンシャル書き込みに向けられる。シーケンシャル書き込みと関連して行われる既知のコピー・オン・デステージ動作は、一般的には、ソースから古い未変更のデータのトラックのストライドを読み取り、次に、それらのトラックをターゲットにデステージする。ソース・ストライド及びターゲット・ストライドがアラインしている場合、こうした動作における効率が促進される。しかしながら、ソース・ストライド及びターゲット・ストライドがアラインしていない場合、ターゲットに対する古い未変更のデータのデステージは、一般的に、ストライド全体ではなく、それによりシステム性能に悪影響を及ぼす。多くのシステムにおいて、ソース・ストライド及びターゲット・ストライドの両方がアラインされるように、システムを構成するのは困難であり得ることに留意されたい。その結果、ポイント・イン・タイム・コピー関係に影響を及ぼす際、変更済みデータがキャッシュ内のトラックに書き込まれると、システム性能は低下し得る。
【００５６】
本説明の１つの態様において、ターゲット・デステージ論理３３（図２）は、ポイント・イン・タイム・コピー・ソース・ボリュームへの大容量のブロック書き込みを含むシーケンシャル書き込みを検知し、それに応答して、関連したポイント・イン・タイム・コピー・ターゲットに対するデステージ・タスクを開始する。デステージ・タスクは、１つの実施形態において、後のコピー・ソース・デステージ動作において、ポイント・イン・タイム・コピー・ソース内の未変更のデータを上書きする前に、未変更のデータをポイント・イン・タイム・コピー・ソースからポイント・イン・タイム・コピー・ターゲットにコピーするストライド・アラインされたコピー・ソース・ツー・ターゲット動作を含む。
【００５７】
ストレージ・マネージャ２４のデータ複製論理３５（図２）はさらに、二次データ・ストレージ・システム２ｂにより表されるような二次データ・ストレージ・システムの二次ボリューム２（図１）として、一次データ・ストレージ・システム２ａの一次ボリューム１（図１）のコピーを同期的に（幾つかの実施形態においては、非同期的に）生成するように構成される。ボリューム、ボリューム１、ボリューム２の一次・二次の対は、同期コピー又はミラー関係３７にあるので、一次ボリューム１の更新は、各二次ボリューム２に同期的にミラーリングされる。幾つかの実施形態において、こうしたミラーリングは、非同期的にも実行され得る。
【００５８】
図１に示される構成において、ストレージ・コントローラ４ａ及びデータ・ストレージ・ドライブ１０ａは、それぞれ、一次データ・ストレージ・システム２ａの一次ストレージ制御ユニット及び一次ストレージとして構成されている。同様に、ストレージ・コントローラ４ｂ及びそのデータ・ストレージ・ドライブ１０ｂは、それぞれ、二次データ・ストレージ・システム２ｂの二次ストレージ制御ユニット及び二次ストレージとして構成されている。従って、図１に示される構成において、ストレージ・コントローラ４ａは、一次ストレージ・コントローラ又は制御ユニット４ａと呼ばれ、データ・ストレージ・ドライブ１０ａは、一次ストレージ・ドライブ１０ａと呼ばれる。同様に、ストレージ・コントローラ又は制御ユニット４ｂは、二次ストレージ・コントローラ又は制御ユニット４ｂと呼ばれ、データ・ストレージ・ドライブ１０ｂは、二次データ・ストレージ・ドライブ１０ｂと呼ばれる。この実施形態において、複数の二次データ・ストレージがあり得るので、コピー関連は、１対多の関係にあることができ、これは、マルチターゲット関係とも呼ばれる。
【００５９】
特定のコピー関係において、ソース・ユニットは、一次と呼ばれることが多く、ターゲット・ユニットは、二次と呼ばれることが多い。複製関係は、一次データ・ストレージ・ドライブ１０ａ及び二次データ・ストレージ・ドライブ１０ｂのストレージ・ユニット間に定められる。「一次」としてのデータ・ストレージ・ドライブ１０ａ及び「二次」としてのデータ・ストレージ・ドライブ１０ｂへの言及にもかかわらず、データ・ストレージ・ドライブ１０ａ、１０ｂの特定のストレージ・ユニットは、特定のコピー関係に応じて、一次（すなわちソースの役割）及び二次（すなわちターゲットの役割）の両方の役割を果たし得る。
【００６０】
１つの実施形態において、ストレージ・デバイス１０、１０ａ、１０ｂは、ハードディスク・ドライブ及び磁気テープなどの１つ又は複数のシーケンシャル・アクセス・ストレージ・デバイスで構成されてもよく、又は例えばソリッド・ステート・ドライブ（ＳＳＤ）などの非シーケンシャル・アクセス・ストレージ・デバイスを含んでもよい。各ストレージ・デバイス１０、１０ａ、１０ｂは、単一のシーケンシャル又は非シーケンシャル・アクセス・ストレージ・デバイスを含むことができ、又は単純ディスク束（ＪＢＯＤ）、ダイレクト・アクセス・ストレージ・デバイス（ＤＡＳＤ）、独立ディスクの冗長アレイ（ＲＡＩＤ）アレイ、仮想化デバイス、テープ・ストレージ、フラッシュ・メモリ等のような、ストレージ・デバイスのアレイを含むことができる。
【００６１】
ストレージ・マネージャ２４は、ストレージ１０（図２）、１０ａ、１０ｂ（図１）にデステージされるダーティ・データを探してキャッシュ・ディレクトリ３０を定期的に走査する安全データ・コミット論理６０をさらに含む。安全データ・コミット・プロセスは、安全データ・コミット走査の開始時間の前にキャッシュ２８に書き込まれたあらゆるものが成功裡にデステージされ、ストレージ１０（図２）、１０ａ、１０ｂ（図１）上に安全に格納されたことをオペレータが保証するのを可能にする。
【００６２】
示される実施形態において、ターゲット・デステージ論理３３を含むストレージ・マネージャ２４は、メモリ２０内に格納されたソフトウェアとして示され、ＣＰＵコンプレックス１２により実行される。しかしながら、ストレージ・マネージャ２４の論理機能は、特定の用途に応じて、ハードウェア、ソフトウェア、ファームウェア、又はその１つ又は複数の組み合わせとして実装できることを理解されたい。
【００６３】
ストレージ・マネージャ２４（図２）は、１つの実施形態において、データをキャッシュ２８内に格納し、データを、トラックにおいてキャッシュ２８とストレージ１０（図２）、１０ａ、１０ｂ（図１）との間で転送することができる。トラックをキャッシュに書き込む際、ＴＣＢは、キャッシュ・ストレージの１つ又は複数のセグメントを割り当てて、トラックを書き込む。同様に、ストレージ・マネージャ２４（図２）は、１つの実施形態において、データをトラック内の一次ストレージ・ドライブ１０ａ（図１）から二次ストレージ・ドライブ１０ｂにトラックにおいて転送することができる。本明細書で用いられる場合、トラックという用語は、ディスク・ストレージ・ユニット、ソリッド・ステート・ストレージ・ユニット、又は他のタイプのストレージ・ユニットのデータ若しくはストレージのサブユニットを指すことができる。トラックに加えて、ストレージ・ユニットは、ビット、バイト、ワード、セグメント、ページ、ブロック（論理ブロックアドレス（ＬＢＡ）など）、シリンダ、エクステント、ボリューム、ストライド、論理デバイス等、又はその任意の部分、又は転送若しくは格納に適した他のサブユニットのような、ストレージ又はデータの他のサブユニットを有することができる。従って、本説明によるキャッシュ書き込み及び安全データ・コミット・プロセスにおいて処理されるデータのサブユニットのサイズは、特定の用途に応じて変わり得る。従って、本明細書で使用される場合、「トラック」という用語は、データ・ストレージ又は転送の任意の適切なサブユニットを指す。
【００６４】
システム・コンポーネント１ａ（図１）、１ｂ．．．１ｎ、４（図２）、６は、これらのコンポーネントの間の通信を可能にするネットワーク６に接続される。従って、ネットワークは、ストレージ・エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、イントラネット、インターネット、広域ネットワーク（ＷＡＮ）、ピア・ツー・ピア・ネットワーク、無線ネットワーク、アービトレート型ループ・ネットワーク（arbitrated loop network）等を含み得るファブリックを含む。ストレージ・サブシステムからホスト１ａ、１ｂ、．．．１ｎへの通信経路は、例えば、Ｆｉｂｒｅ  Ｃｏｎｎｅｃｔｉｏｎ（ＦＩＣＯＮ）などの特定のホスト・アタッチメント・プロトコルに基づくことができる。ファブリックの他の通信経路は、例えば、ファイバ・チャネル・アービトレート型ループ構成、シリアル・ループ・アーキテクチャ、又はＰＣＩ−ＥｘｐｒｅｓｓインターフェースなどのＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）インターフェースのようなバス・インターフェースを含むことができる。ファブリックの通信経路は、例えば、イーサネット・ネットワークの一部とすることもでき、各ノードは、個々のネットワーク（インターネット・プロトコル）アドレスを有する。特定の用途に応じて、モデム電話経路（modem telephone path）、無線ネットワーク等のような他のタイプの通信経路を用いることもできる。
【００６５】
通信経路と関連付けられた通信ソフトウェアは、通信プロトコル、及び、もしあれば、通信プロトコルに従った通信ハードウェアの動作を制御する命令及び他のソフトウェアを含む。特定の用途に応じて、他の通信経路プロトコルを利用できることが理解される。
【００６６】
図５のホスト１ａにより表されるような典型的なホストは、ＣＰＵコンプレックス２０２と、ストレージ・コントローラ４、４ａ、４ｂを介してストレージ１０（図２）、１０ａ、１０ｂからデータを読み取り、データ更新をこれに書き込むように協働するオペレーティング・システム２０６及びアプリケーション２０８を有するメモリ２０４とを含む。適切なオペレーティング・システムの例は、ｚ／ＯＳオペレーティング・システムである。特定の用途に応じて、他のタイプのオペレーティング・システムを用い得ることが理解される。
【００６７】
図６は、シーケンシャル・データをポイント・イン・タイム・コピー・ソースに書き込むためのシーケンシャル書き込み動作と関連した、ターゲット・デステージ論理３３のコピー・ソース・ツー・ターゲット論理２１４（図７）の動作の一例を示す。この実施形態において、コピー・ソース・ツー・ターゲット論理２１４は、ポイント・イン・タイム・コピー・ソース５０（図４）からオリジナルの未変更のシーケンシャル・データを読み取ってから、キャッシュ２８（図２）からポイント・イン・タイム・コピー・ソース５０（図４）への書き込み動作のシーケンシャル書き込みデータをデステージする後のソース・デステージ動作によって、オリジナルの未変更のシーケンシャル・データを上書きする、コピー・ソース・ツー・ターゲット動作を実行するように構成される。ポイント・イン・タイム・コピー・ソース５０から読み取られたオリジナルの未変更のデータは、ターゲット５４のストライドとアラインされた状態で、ポイント・イン・タイム・コピー・ターゲット５４にデステージされる。後のソース・デステージ動作は、同じくソース５０のストライドとアラインされた状態で、書き込み動作のシーケンシャル書き込みデータを、キャッシュ２８（図２）からポイント・イン・タイム・コピー・ソース５０にデステージする。この実施形態において、コピー・ソース・ツー・ターゲット動作は、タスク制御ブロック・データ構造により制御され、その例は、図８のコピー・ソース・ツー・ターゲットＴＣＢ２１８である。
【００６８】
以下により詳細に説明されるように、この実施形態において、図４に示されるもののようなストライド・アラインされたコピー・ソース・ツー・ターゲット動作が適用可能性を有し得る種々の条件がある。これらの条件は、書き込み動作を検知し、書き込み動作が、最終的にポイント・イン・タイム・コピー・ソースのシーケンシャル・トラックに書き込むためのシーケンシャル書き込み動作であるかどうかを判断することを含む。
【００６９】
示される実施形態において、コピー・ソース・ツー・ターゲット論理２１４は、キャッシュ２８（図２）への書き込み動作を検知する（ブロック２２４、図６）ように構成される。検知された書き込み動作について、コピー・ソース・ツー・ターゲット論理２１４はさらに、検知された書き込み動作が、図４のソース５０などのポイント・イン・タイム・コピー・ソースに向けられるかどうかを判断する（ブロック２３０、図６）ように構成される。ポイント・イン・タイム・コピー・ソースに向けられた書き込み動作について、コピー・ソース・ツー・ターゲット論理２１４は、検知された書き込み動作がシーケンシャル書き込み動作であるかどうかを検知する（ブロック２４０、図６）ように構成されたシーケンシャル書き込み検知論理２３４（図７）をさらに含む。
【００７０】
検知された書き込み動作が、ポイント・イン・タイム・コピー・ソースに向けられていないと判断される（ブロック２３０、図６）場合、又はシーケンシャル書き込み動作ではないことが検知される（ブロック２４０、図６）場合、検知された書き込み動作は、図４に示されるものと類似したストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行することなく、後に完了することができる（ブロック２４４、図６）。例えば、書き込み動作の書き込みデータをキャッシュに書き込み、図４に示されるものと類似したストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行することなく、後にストレージにデステージすることができる。しかしながら、図１０及び図１１、並びに本説明の別の態様と関連して以下に説明されるように、それにもかかわらず、種々の条件が満たされた場合、非シーケンシャル・コピー・ソース・ツー・ターゲット動作をプリエンプティブに実行することができる。
【００７１】
書き込み動作が、書き込み動作のシーケンスがデータをシーケンシャル・トラックに書き込む、書き込み動作のシーケンスのシーケンシャル書き込み動作であるかどうかを判断するための種々の既知の技術があることが理解される。さらに、書き込み動作がシーケンシャル書き込み動作であるかどうかを判断するための技術は、本説明に従って、必要に応じて修正することができる。
【００７２】
１つの実施形態において、シーケンシャル書き込み検知論理２３４（図７）は、書き込み動作のシーケンスがシーケンシャル書き込み動作であるかどうかを定期的にチェックするように構成される。例えば、シーケンシャル書き込み検知論理２３４（図７）は、書き込まれるＮ番目のトラックごとにチェックするように構成され、書き込み動作がシーケンシャル書き込み動作であるかどうかを判断する。Ｎ番目のトラックは、例えば、書き込み動作が最終的に向けられるポイント・イン・タイム・コピー・ソースのストライドの最後のトラックと一致するように選択することができる。
【００７３】
別の例として、シーケンシャル書き込み検知論理２３４（図７）は、書き込み動作を開始した、例えばホスト１ａ（図５）のようなホストが、書き込み動作をシーケンシャル書き込み動作として指定したかどうかを判断するように構成することができる。別の例として、シーケンシャル書き込み検知論理２３４（図７）は、書き込み動作のトラックがシーケンシャルであるかどうかを判断するために、キャッシュ内の以前に書き込まれたトラックを検査するように構成することができる。このように、キャッシュ内の変更済みデータの大容量のブロックを書き込むシーケンシャル書き込み動作は、シーケンシャル書き込み検知論理２３４により検知され得る。さらに別の例において、シーケンシャル書き込み検知論理２３４（図７）は、書き込み動作に関してキャッシュへの書き込みがいつ完了したかを判断し、キャッシュ内の書き込まれたトラックを検査し、キャッシュに書き込まれたトラックが順序通りであるかどうかを判断するように構成することができる。
【００７４】
検知された書き込み動作が、ポイント・イン・タイム・コピー・ソースに向けられると判断され（ブロック２３０、図６）、シーケンシャル書き込み動作であると検知された（ブロック２４０、図６）場合、検知された書き込み動作を完了する（ブロック２４４、図６）前に、図４に示されるものと類似したストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行することができる。示される実施形態において、例えば、図８のＴＣＢ２１８のようなタスク制御データ構造により、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作を制御することができる。従って、コピー・ソース・ツー・ターゲット論理２１４のタスク制御ブロック生成論理２５０（図７）は、図４のストライド・アラインされたコピー・ソース・ツー・ターゲット動作を制御するためのタスク制御ブロック・データ構造を生成するように構成される。示される実施形態において、タスク制御ブロック２１８は、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作のトラックのシーケンスを識別するために、開始トラック値Ｓ（フィールド２５４）及び多数のトラック値の数Ｎ（フィールド２５８）を含む少なくとも２つの入力値を格納するように構成された複数のフィールド２５４、２５８を有する。
【００７５】
コピー・ソース・ツー・ターゲット論理２１４（図７）は、タスク制御ブロック２１８（図８）を用いてストライド・アラインされたコピー・ソース・ツー・ターゲット動作（図４）を開始するように構成され、そこで、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作は、ストライド・アラインされた読み取り動作２６４（図４）をポイント・イン・タイム・コピー・ソース５０（図４）のポイント・イン・タイム・コピー・ターゲット５４（図４）に向ける（ブロック２６０、図６）ことを含む。従って、読み取り動作２６４は、ポイント・イン・タイム・コピー・ターゲット５４のストライドのストライド境界とアラインされる。しかしながら、読み取り動作のデータは、ポイント・イン・タイム・コピー・ターゲット５４にまだコピーされていない。従って、ターゲット５４へのストライド・アラインされた読み取り動作２６４により、ポイント・イン・タイム・コピー・ソース５０へのリダイレクトされる読み取り動作２６８（図４）は、ポイント・イン・タイム・コピー・ソース５０（図４）からのオリジナルの未変更のデータのトラックのシーケンスに関する開始トラック値Ｓ（フィールド２５４、図８）及びトラック値の数Ｎ（フィールド２５８、図８）により識別されるデータのセットを含む未変更の読み取りデータを取得する。未変更のデータを含むソース５０のトラックのシーケンスは、シーケンシャル書き込み動作によりキャッシュに書き込まれた変更済みデータのトラックに対応する。しかしながら、読み取り動作２６４は、ポイント・イン・タイム・コピー・ターゲット５４のストライドとストライド・アラインされているので、リダイレクトされる読み取り動作２６８により読み取られるデータは、読み取られるオリジナルの未変更のデータのトラックのシーケンスに関して開始トラック値Ｓ（フィールド２５４、図８）及びトラック値Ｎの数（フィールド２５８、図８）を識別するＴＣＢ２１８（図８）により識別される読み取りデータだけでなく、読み取りデータが後でターゲット５４にデステージされるとき、リダイレクトされる読み取り動作２６８のトラックが、ポイント・イン・タイム・コピー・ターゲット５４のトラックと容易にストライド・アラインされることを保証するように、ＴＣＢ２１８におより識別されるトラックの前又は後に付加的なストライドのトラックも含み得る。
【００７６】
リダイレクトされる読み取り動作２６８に従ってソース５０から読み取られた未変更のデータは、コピー・ソース・ツー・ターゲット論理２１４によりキャッシュ２８内のステージ動作２７０（図４）で表されるようにステージされる。コピー・ソース・ツー・ターゲット論理２１４はさらに、デステージ動作２８０（図４）により表されるように、ソース５０から読み取られた未変更のデータをキャッシュ２８からターゲット５４に書き込む（ブロック２７４、図６）ように構成される。リダイレクトされる読み取り動作２６８は、ポイント・イン・タイム・コピー・ターゲット５４のトラックとストライド・アラインされているので、ソース５０から読み取られ、ターゲット５４にデステージされるデータは、ターゲット５４のストライドに対してストライド・アラインされる。
【００７７】
幾つかの実施形態において、ポイント・イン・タイム・コピー・ソースは、複数のポイント・イン・タイム・コピー・ターゲットを有する１対複数のポイント・イン・タイム・コピー関係内にあり得る。従って、１つの実施形態において、コピー・ソース・ツー・ターゲット論理２１４（図７）はさらに、ソースが複数のポイント・イン・タイム・コピー・ターゲットを有する１対複数のポイント・イン・タイム・コピー関係内にあるかどうかを判断する（図ロック２８４、図６）ように構成することができる。そうである場合、コピー・ソース・ツー・ターゲット論理２１４（図７）はさらに、１対複数のポイント・イン・タイム・コピー関係の各ターゲットについて、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作が完了したかどうかを判断する（ブロック２８８、図６）ように構成することができる。そうでない場合、コピー・ソース・ツー・ターゲット論理２１４（図７）はさらに、関係のそうした各ターゲットについて、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作を開始し、繰り返す（ブロック２６０、２７４）ように構成することができる。
【００７８】
このように、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作のシーケンスは、コピー関係の各ポイント・イン・タイム・コピー・ターゲットについてのシーケンスのコピー・ソース・ツー・ターゲット動作を含んで実行される。従って、タスク制御ブロック生成論理２５０（図７）は、ＴＣＢ２１８（図８）と類似したタスク制御ブロック・データ構造のシーケンスを生成するように構成することができ、シーケンスの各タスク制御ブロック・データ構造は、コピー・ソース・ツー・ターゲット動作のシーケンスのストライド・アラインされたコピー・ソース・ツー・ターゲット動作を、一度に１つずつ制御する。
【００７９】
ひとたび、検知された書き込み動作が複数のターゲットのコピー関係のソースに向けられていないと判断されると（ブロック２８４、図６）、又はデータが１対複数のコピー関係の全てのターゲットにコピーされたと判断されると（ブロック２８８）、ポイント・イン・タイム・コピー関係のターゲット（単数又は複数）に関するストライド・アラインされたコピー・ソース・ツー・ターゲット動作（単数又は複数）が完了した後、検知された書き込み動作を完了することができる（ブロック２４４、図６）。例えば、図４に示されるものと類似した方法でストライド・アラインされたコピー・ソース・ツー・ターゲット動作（単数又は複数）が完了した後、キャッシュに書き込まれた書き込み動作の書き込みデータを後でコピー・ソースにデステージすることができる。
【００８０】
図９と関連して以下に詳細に説明されるように、安全データ・コミット論理６０（図２）による安全データ・コミット走査と関連して、図４に示されるものと類似するようにストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行するかどうかの判断を行うことができ、そこで、ストレージにデステージされる変更済みデータのトラックを探して、キャッシュが走査される。従って、安全データ・コミット論理６０（図２）は、ストレージにデステージするための変更済みデータのトラックを識別するために、キャッシュの安全データ・コミット走査を開始する（ブロック３１４、図９）ように構成される。
【００８１】
本説明の１つの態様によると、図４と関連して上述されるようなストライド・アラインされたコピー・ソースのための候補であるシーケンシャル書き込み動作の識別されたトラックを求めて安全データ・コミット走査と関連して、キャッシュ内の変更済みデータのトラックのデステージをバイパスすることができる。従って、安全データ・コミット走査に従って即座にデステージする代わりに、タスク制御ブロックを生成し、そうしたシーケンシャル書き込み動作のためのストライド・アラインされたコピー・ソース・ツー・ターゲット動作を制御することができる。ストライド・アラインされたコピー・ソース・ツー・ターゲット動作の完了後、図６の書き込み完了動作（ブロック２４４）と関連して上述されたものと同様に、シーケンシャル書き込み動作についてのキャッシュ内の変更済みトラックをポイント・イン・タイム・コピー・ソースにデステージし、安全データ・コミット動作を完了することができる。
【００８２】
図２及び図９を参照すると、安全データ・コミット論理６０（図２）は、ストレージにデステージする変更済みデータのトラックを識別する（ブロック３１８）ために、安全データ・コミット走査を開始する（ブロック３１４、図９）ように構成される。キャッシュ内の変更済みデータのトラックの識別（ブロック３１８、図９）に応答して、コピー・ソース・ツー・ターゲット論理２１４（図７）は、キャッシュ内の識別された変更済みトラックがポイント・イン・タイム・コピー関係に関連し、トラックは、図４のソース５０のようなポイント・イン・タイム・コピー・ソースのトラックに対応するかどうかを判断する（ブロック３２２、図９）ように構成される。例えば、ストレージへのデステージ時に変更済みトラックがポイント・イン・タイム・コピー・ソースにデステージされる場合、キャッシュ内の変更済みトラックは、ポイント・イン・タイム・コピー・ソースに向けられるか、又はこれに対応する。ポイント・イン・タイム・コピー・ソースに対応するキャッシュ内の変更済みトラックの場合、シーケンシャル書き込み検知論理２３４（図７）は、変更済みトラックがシーケンシャル書き込み動作と関連して書き込まれ、変更済みトラックはキャッシュ内のシーケンシャル変更済みトラックのシーケンスの部分であるかどうかを検知する（ブロック３２４、図６）ように構成される。図６のブロック２４０と関連して上述されたように、こうした判断は、特定の用途に応じて、種々の技術を用いて行い得ることが理解される。
【００８３】
キャッシュ内の識別された変更済みトラックがポイント・イン・タイム・コピー・ソースに対応しないと判断される（ブロック３２２、図９）、又は、識別されたトラックがシーケンシャル変更済みトラックのシーケンスの部分ではないと判断される（ブロック３３４）場合、変更済みトラックを後でストレージにデステージし（ブロック３２６）、安全データ・コミット走査の全てのトラックが走査されたかどうかについて判断する（ブロック３３０）ことができる。そうである場合、安全データ・コミット走査は完了する（ブロック３３２）。逆に、安全データ・コミット走査の全てのトラックが走査されていないと判断される（ブロック３３０）場合、キャッシュ内の別の変更済みトラックが識別される（ブロック３１８、図９）。
【００８４】
キャッシュ内の識別された変更済みトラックがポイント・イン・タイム・コピー・ソースに対応すると判断され（ブロック３２２、図９）、かつ、識別されたトラックがシーケンシャル変更済みトラックのシーケンスの部分であると判断される（ブロック３３４）場合、タスク制御ブロック生成論理２５０（図７）は、ＴＣＢ２１８（図８）と類似したタスク制御ブロック・データ構造を生成し（ブロック３３８）、ポイント・イン・タイム・コピー・ソースに向けられた変更済みトラックのシーケンスに対するストライド・アラインされたコピー・ソース・ツー・ターゲット動作を制御する。ポイント・イン・タイム・コピー・ソースに向けられた変更済みトラックのシーケンスに対するストライド・アラインされたコピー・ソース・ツー・ターゲット動作のためのタスク制御ブロックを生成すると、安全データ・コミット論理６０は、それらのトラックを即座にストレージにデステージする代わりに、ポイント・イン・タイム・コピー・ソースに向けられた変更済みトラックのシーケンスをスキップする（ブロック３４２）又はバイパスするように構成することができる。安全データ・コミット走査のバイパスされたトラックのために、生成されたストライド・アラインされたＴＣＢ２１８をディスパッチし、図４に示されるものと類似した方法で、及び、図６のブロック２６０、２７４、２８４及び２８８と関連して説明されるように、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行することができる。バイパスされた（ブロック３４２）シーケンシャル・トラックについてのストライド・アラインされたコピー・ソース・ツー・ターゲット動作の完了後、図６のブロック２４４と関連して上述されたものと類似した方法で、シーケンシャル・トラックをポイント・イン・タイム・コピー・ソースにデステージし、シーケンシャル書き込み動作及びそれらの書き込み動作についての安全データ・コミットを完了することができる。
【００８５】
ひとたび、安全データ・コミット走査の全てのトラックが走査されたと判断される（ブロック３３０）と、安全データ・コミット走査は完了する（ブロック３３２）。逆に、安全データ・コミット走査の全てのトラックが走査されていないと判断されると、キャッシュ内の全ての変更済みトラックが走査されるまで、キャッシュ内の別の変更済みトラックが識別される（ブロック３１４）。キャッシュ内の安全データ・コミット走査は、特定の用途に応じて、キャッシュ内の全てのトラックに対して、又はランク毎に基づいて、又はキャッシュの他の細区画に対して行うことができる。
【００８６】
図１０は、本説明の１つの態様による、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するための動作の例に向けられる。前述のように、本説明の１つの態様において、ターゲット・デステージ論理３３（図２）は、こうしたコピー・ソース・ツー・ターゲット動作が適切なままであるか、又は他の発生により不要にされたかを示す条件に応じて、コピー・ソース・ツー・ターゲット動作を選択的にかつプリエンプティブに実行するように構成することができる。
【００８７】
１つの実施形態において、コピー・ソース・ツー・ターゲット動作は、ポイント・イン・タイム・コピー・ソースを対象とした書き込み動作が開始されたときから、書き込み動作のトラックがソースへデステージされる、ソースの対応する未変更のデータを上書きするときまで、任意の時点でプリエンプティブに実行することができる。別の実施形態において、コピー・ソース・ツー・ターゲット動作は、ソース・デステージの前にコピー・ソース・ツー・ターゲット動作を行うことによりシステム性能をさらに改善するように、プリエンプティブにかつより選択的に実行することができるので、ソース・デステージは、コピー・ソース・ツー・ターゲット動作によって遅延されない。逆に、コピー・ソース・ツー・ターゲット動作が適切でないことを示す条件でプリエンプティブなコピー・ソース・ツー・ターゲット動作を実行しないことにより、不必要なプリエンプティブ動作によるシステム性能の低下を減らすこと又は排除することができる。
【００８８】
図２、図７及び図１０を参照して、ターゲット・デステージ論理３３のプリエンプティブ条件監視論理４１０（図７）が、安全データ・コミット走査が開始間近であるかどうかを判断すること（ブロック４１４、図１０）を含む、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するように構成される。安全データ・コミット論理６０（図２）による安全データ・コミット走査は、識別された変更済みトラックをストレージにデステージするために、キャッシュ内の変更済みデータのトラックを識別する。キャッシュ内の全ての変更済みトラックがストレージにデステージされ、それにより、ストレージのポイント・イン・タイム・コピー・ソースの未変更のデータが上書きされるので、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される（ブロック４１８）。１つの実施形態において、プリエンプティブ条件監視論理４１０はさらに、ストレージにデステージするために、キャッシュ内の変更済みデータのトラックを識別するために、キャッシュの安全データ・コミット走査の開始前に、ある時間（値「デルタＸ」で表される）プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断するように構成される。
【００８９】
プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断（ブロック４１８）に応答して、ターゲット・デステージ論理３３のプリエンプティブ走査論理４５２（図７）は、キャッシュ内の変更済みトラックの走査を開始し、キャッシュ内の各変更済みトラックについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作が適切であるかどうかを判断する。図１１は、本説明の１つの態様による、キャッシュのプリエンプティブなコピー・ソース・ツー・ターゲット走査の例を示す。１つの実施形態において、安全データ・コミット走査を開始する前に少なくとも特定の時間（デルタＸ）、キャッシュ内の変更済みトラックのプリエンプティブなコピー・ソース・ツー・ターゲット走査を開始し、プリエンプティブなコピー・ソース・ツー・ターゲット走査のために十分な時間を与えることができ、あらゆる結果として生じるプリエンプティブなコピー・ソース・ツー・ターゲット動作を完了してから、ソースへの変更済みトラックのデステージが後の安全データ・コミット走査の一部として始まる。
【００９０】
プリエンプティブ条件監視論理４１０（図７）はさらに、キャッシュ内に変更済みデータを有する、ポイント・イン・タイム・コピー・ソースとポイント・イン・タイム・コピー・ターゲットとの間のポイント・イン・タイム・コピー関係があるかどうか（ブロック４２２、図１０）の関数として、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断し、そうである場合、ポイント・イン・タイム・コピー関係は持続的であるかどうかを判断するように構成される。前述のように、持続的なポイント・イン・タイム・コピー関係は、コピー関係のポイント・イン・タイムが変更しなかったものである。非持続的なポイント・イン・タイム・コピー関係の例は、キャッシュへの書き込み動作の後にコピー関係のポイント・イン・タイムがインクリメントされたものである。ポイント・イン・タイム・コピー関係が持続的でない、つまり、関係のポイント・イン・タイムがインクリメントされた場合、関係がインクリメントされる前にコピー関係に対してキャッシュに書き込まれたあらゆる変更済みトラックは、インクリメントされた関係に属し、ソース内のあらゆる対応する未変更のデータに取って代わることが理解される。従って、プリエンプティブなコピー・ソース・ツー・ターゲット動作においてトラックの未変更のデータを保持することなく、ソースの対応するトラックへのデステージを可能にすることにより、ソース内の対応する未変更のデータを廃棄することができる。従って、プリエンプティブなコピー・ソース・ツー・ターゲット動作は必要とされず、そのインクリメントされたコピー関係についてのプリエンプティブなコピー・ソース・ツー・ターゲット動作の条件は存在しないと判断することができる。
【００９１】
逆に、ポイント・イン・タイム・コピー関係が持続的である場合、ポイント・イン・タイム・コピー関係にあるキャッシュ内のあらゆる変更済みトラックは、インクリメントされたコピー関係に属せず、ソース内の対応する未変更のデータに取って代わらない。従って、デステージ動作により未変更のデータがソースに上書きされる前に、ソース内の対応する未変更のデータは、プリエンプティブなコピー・ソース・ツー・ターゲット動作により保護される。従って、プリエンプティブなコピー・ソース・ツー・ターゲット動作は適切であり、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断する（ブロック４１８、図１０）ことができる。
【００９２】
上述のように、１つの実施形態において、コピー・ソース・ツー・ターゲット動作は、ポイント・イン・タイム・ソースを対象とした書き込み動作が開始されたときから、書き込み動作のトラックがキャッシュからソースへデステージされ、ソースの対応する未変更のデータを上書きするときまで、任意の時点でプリエンプティブに実行することができる。従って、キャッシュ内の変更済みトラックが持続的なポイント・イン・タイム・コピー関係に属すると判断される（ブロック４２２、図１０）ので、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される（ブロック４１８、図１０）場合には、ターゲット・デステージ論理３３のプリエンプティブ走査論理４５２（図７）は、キャッシュ内の変更済みトラックの走査をいつでも後で開始し、キャッシュ内の各変更済みトラックについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作が適切であるかどうかを判断することができる。しかしながら、１つの実施形態において、安全データ・コミット走査を開始する前に少なくとも特定の時間（デルタＸ）、そうした走査を開始し、プリエンプティブなコピー・ソース・ツー・ターゲット走査のための十分な時間を与えることができ、あらゆる結果として生じるプリエンプティブなコピー・ソース・ツー・ターゲット動作を完了してから、ソースへの変更済みトラックのデステージが、安全データ・コミット走査の一部として始まる。
【００９３】
プリエンプティブ条件監視論理４１０（図７）はさらに、ポイント・イン・タイム・コピー関係に属する、つまり、ポイント・イン・タイム・コピー・ソースに対応する、キャッシュ内の変更済みデータのトラックの数が閾値を上回るかどうか（ブロック４２６）の関数として、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断するように構成される。ポイント・イン・タイム・コピー・ソースに対応するキャッシュ内の変更済みデータのトラックの数が閾値を上回る場合、例えば、コピー・オン・デステージ動作と関連して実行される非プリエンプティブなコピー・ソース・ツー・ターゲット動作は、その相対的に大きい数のために、システム性能に実質的なペナルティを課すことがあることが理解される。こうしたシステム性能の低下は、デステージ動作の前にコピー・ソース・ツー・ターゲット動作をプリエンプティブに実行することにより改善することができ、最終的に実行されるとき、デステージ動作は、ソース・デステージ動作を完了できる前にコピー・ソース・ツー・ターゲット動作の完了を待つ必要はない。従って、図１０の実施形態において、ポイント・イン・タイム・コピー関係に属すキャッシュ内の変更済みデータのトラックの数が閾値を上回る（ブロック４２６）場合、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される（ブロック４１８、図１０）。
【００９４】
特定の用途に応じて、種々の技術を用いて適切な閾値を選択することができる。例えば、適切な閾値は、全体としてキャッシュの総容量の百分率で、又は走査がランクごとに行われる場合には各ランクの百分率で表すことができる。適切な閾値の例は、必要に応じて、キャッシュの又はランクについてのキャッシュの総容量の７０％、又は７０乃至１００％の範囲とすることができる。
【００９５】
ここでも、ポイント・イン・タイム・コピー関係に属するキャッシュ内の変更済みデータのトラックの数が閾値を上回る（ブロック４２６）と判断されるので、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在すると判断される（ブロック４１８、図１０）場合、ターゲット・デステージ論理３３のプリエンプティブ走査論理４５２（図７）は、キャッシュ内の変更済みトラックの走査をいつでも後で開始し、キャッシュ内の各々の変更済みトラックについてプリエンプティブなコピー・ソース・ツー・ターゲット動作が適切であるかどうかを判断することができ、好ましくは、上述のように後の安全データ・コミット走査の開始前に少なくとも特定の時間（デルタＸ）、後で開始することができる。
【００９６】
逆に、安全データ・コミット走査が開始間近ではないと判断され（ブロック４１４、図１０）、キャッシュ内の変更済みトラックにより表されるポイント・イン・タイム・コピー関係が持続的でないと判断され（ブロック４２２）、かつ、ポイント・イン・タイム・コピーポイント・イン・タイム・コピー・ソースに対応するキャッシュ内の変更済みデータのトラックの数が閾値を上回らないと判断される（ブロック４２６）場合、１つの実施形態において、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在しないと判断される（ブロック４３０、図１０）。従って、キャッシュ内の各変更済みトラックについてプリエンプティブなコピー・ソース・ツー・ターゲット動作が適切であるかどうかを判断するための、キャッシュ内の変更済みトラックの走査をバイパスすることができる。しかしながら、他の実施形態において、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかに関する判断において、種々の試験を付加し、置換し、又は除去することができることが理解される。
【００９７】
図１１は、キャッシュ内の各変更済みトラックについて、プリエンプティブなコピー・ソース・ツー・ターゲット動作が適切であるかどうかを判断するための、キャッシュ内の変更済みトラックの走査の一例を示す。従って、プリエンプティブ条件監視論理４１０（図７）は、図１０と関連して上述されるように、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するかどうかを判断する（ブロック４５０、図１１）。プリエンプティブ走査論理４５２（図７）は、プリエンプティブなコピー・ソース・ツー・ターゲット動作の条件が存在するとの判断に応答して、キャッシュ内の変更済みデータのトラックの走査を開始し（ブロック４５４、図１１）、プリエンプティブなコピー・ソース・ツー・ターゲット動作のためにキャッシュ内の変更済みデータのトラックを識別し、選択するように構成される。
【００９８】
１つの実施形態において、プリエンプティブ走査論理４５２（図７）は、キャッシュ内の変更済みトラックを識別し、キャッシュ内の変更済みデータのトラックがポイント・イン・タイム・コピー・ソースに対応するか、つまり、ポイント・イン・タイム・コピー関係に属するかどうかを判断する（ブロック４５８、図１１）ように構成される。プリエンプティブ走査論理４５２（図７）はさらに、キャッシュ内のデータの識別された変更済みトラックがポイント・イン・タイム・コピー関係に属すると判断される場合、ポイント・イン・タイム・コピー・ソースの対応するトラックの未変更のデータが、関係のポイント・イン・タイム・コピー・ソースから対応するポイント・イン・タイム・コピー・ターゲットに既にコピーされたかどうかも判断する（ブロック４５８、図１１）ように構成される。そうでない場合、プリエンプティブなコピー・ソース・ツー・ターゲット動作を開始し、後のソース・デステージ動作の前に、未変更のデータをポイント・イン・タイム・コピー・ソース内の対応するトラックからポイント・イン・タイム・コピー・ターゲットにプリエンプティブにコピーすることができる。
【００９９】
図６及び図８に関連して上述されるように、シーケンシャル書き込み動作のシーケンシャル・トラックに対して、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行することができる。従って、プリエンプティブ走査論理４５２（図７）はさらに、識別されたトラックが変更済みデータのシーケンシャル・トラックのシーケンスの一部であるかどうかを判断する（ブロック４７０）ように構成される。そうである場合、プリエンプティブ走査論理４５２（図７）はさらに、ポイント・イン・タイム・コピー・ターゲットの対応するシーケンシャル・トラックのために、コピー・ソース・ツー・ターゲット論理２１４（図７）に、プリエンプティブなストライド・アラインされたコピー・ソース・ツー・ターゲット動作を実行させる（ブロック４７４、図１１）ように構成される。従って、シーケンシャル・トラックのシーケンスを識別するタスク制御ブロック２１８（図８）を、図９のブロック３３８と関連して上述されるものと類似した方法で生成することができる。
【０１００】
ポイント・イン・タイム・コピー・ソースに向けられた変更済みトラックのシーケンスに対するストライド・アラインされたコピー・ソース・ツー・ターゲット動作のためのタスク制御ブロックが生成されると、プリエンプティブ走査論理４５２（図７）は、図９のブロック３４２と関連して上述されたものと類似した方法で、シーケンシャル・タスク制御グロックが生成された変更済みトラックのシーケンスの残りのシーケンシャル・トラックをスキップする（ブロック４７８）又はキャッシュ内でバイパスするように構成することができる。生成されたシーケンシャル・タスク制御ブロック２１８の後のディスパッチ時に、図６のブロック２６０〜２８８及び２４４と関連して上述されるもの類似した方法で、シーケンシャル・タスク制御ブロックにより識別されるような対応するシーケンシャル・トラックに対して、ストライド・アラインされたコピー・ソース・ツー・ターゲット動作をプリエンプティブに実行することができる。
【０１０１】
逆に、プリエンプティブ走査論理４５２（図７）が、識別されたトラックは変更済みデータのシーケンシャル・トラックのシーケンスの一部でないと判断する（ブロック４７０）場合、プリエンプティブな走査論理４５２（図７）はさらに、ポイント・イン・タイム・コピー関係の対応する非シーケンシャル・トラックのために、コピー・ソース・ツー・ターゲット論理２１４（図７）に、非シーケンシャルなコピー・ソース・ツー・ターゲット動作をプリエンプティブに実行させる（ブロック４８２、図１１）ように構成される。従って、非シーケンシャル・タスク制御ブロック２１８（図８）は、例えば、わずか単一のトラックのために生成することができる。プリエンプティブなコピー・ソース・ツー・ターゲット動作が単一のトラックについてのものである場合、非シーケンシャル・タスク制御ブロック２１８（図８）の開始トラック値Ｓ（フィールド２５４）は、単一のトラックを識別することができ、単一のトラックの非シーケンシャルなコピー・ソース・ツー・ターゲット動作において、トラック値の数Ｎ（フィールド２５８）は１に設定され得る。本説明による非シーケンシャル及びシーケンシャルなタスク制御ブロックのために、種々の様式を用い得ることが理解される。例えば、プリエンプティブなコピー・ソース・ツー・ターゲット動作において、非シーケンシャル・タスク制御ブロックの適切なフィールドにより、複数の非シーケンシャル・トラックを識別することができる。
【０１０２】
非シーケンシャル・トラック・タスク制御ブロックの後のディスパッチ時に、非シーケンシャルなプリエンプティブ・コピー・ソース・ツー・ターゲット動作をプリエンプティブに実行することができる。１つの実施形態において、わずか１つのトラックがプリエンプティブなコピー・ソース・ツー・ターゲット動作の対象であり得るので、非シーケンシャルなプリエンプティブ・コピー・ソース・ツー・ターゲット動作をストライド・アラインする必要はない。図３は、上述のような単一のトラックのために構成されたタスク制御ブロックに従った、単一のトラックについての非シーケンシャルなコピー・ソース・ツー・ターゲット動作の例を示す。しかしながら、上述されるような複数の非シーケンシャル・トラックのために構成された１つ又は複数のタスク制御ブロックを用いて、非シーケンシャルなコピー・ソース・ツー・ターゲット動作を複数の非シーケンシャルなコピー・ソース・ツー・ターゲット動作に向け得ることが理解される。
【０１０３】
従って、コピー・ソース・ツー・ターゲット論理２１４（図７）は、非シーケンシャルなトラック用に構成されたタスク制御ブロック２１８（図８）を用いて非シーケンシャルなコピー・ソース・ツー・ターゲット動作を開始するように構成され、ここで、読み取り動作のデータはまだポイント・イン・タイム・コピー・ターゲット５４にコピーされていないので、非シーケンシャルなコピー・ソース・ツー・ターゲット動作は、読み取り動作４８４（図３）をポイント・イン・タイム・コピー・ソース５０（図３）に向けることを含む。従って、読み取り動作４８４は、最終的にデステージされ、ソース５０内の対応するトラックを上書きする変更済みデータを含むキャッシュ内の識別されたトラックに対応するソース５０のトラックから未変更の読み取りデータを取得する。
【０１０４】
読み取り動作４８４に従ってソース５０から読み取られた未変更のデータは、コピー・ソース・ツー・ターゲット論理２１４（図７）により、キャッシュ２８内のステージ動作４８６によってステージされる。コピー・ソース・ツー・ターゲット論理２１４はさらに、デステージ動作４８８（図３）において、ソース５０から読み取られた未変更のデータをキャッシュ２８からターゲット５４の対応するトラックに書き込むように構成される。
【０１０５】
ひとたび、キャッシュの全ての変更済みトラックが走査されたと判断される（ブロック４９０、図１１）と、プリエンプティブ走査が完了する（ブロック４９４）。代替的に、キャッシュ内の別の変更済みトラックが識別され（ブロック４５８）、キャッシュ内の全ての変更済みトラックが走査されるまで、上述のようなプリエンプティブなコピー・ソース・ツー・ターゲット動作のための適合性が調べられる。キャッシュ内のプリエンプティブ走査は、キャッシュ内の全てのトラックに対して、又はランクごとに、又はキャッシュの他の細区画に対して行うことができる。
【０１０６】
シーケンシャルな（ストライド・アラインされた）及び非シーケンシャルな（例えば、単一トラックの）プリエンプティブなコピー・ソース・ツー・ターゲット動作の完了後、キャッシュの安全データ・コミット走査を、安全データ・コミット論理６０（図２）により開始し、変更済みデータのトラックをキャッシュからストレージにデステージすることができる。しかしながら、コピー・ソース・ツー・ターゲット走査は、ポイント・イン・タイム・コピー関係に属する変更済みトラックに関して、既に選択的にかつプリエンプティブに完了しているので、変更済みトラックのポイント・イン・タイム・コピー・ソースへのデステージは、コピー・ソース・ツー・ターゲット走査の完了を待つことなく進行することができ、デステージ・ツー・ソース動作により上書きされる前にソース内の対応するトラックの未変更のデータを保持することができる。さらに、プリエンプティブなコピー・ソース・ツー・ターゲット動作の有利な条件が存在すると判断されるとき、プリエンプティブなコピー・ソース・ツー・ターゲット動作は選択的に実行されるので、こうしたプリエンプティブ走査に起因するシステム性能のあらゆる低下を低減又は排除することができる。特定の用途に応じて、他の態様及び利点を実行することもできる。
【０１０７】
図の計算コンポーネントは、それぞれ、図１２に示されるコンピュータ・システム１００２などの１つ又は複数のコンピュータ・システムにおいて実装することができる。コンピュータ・システム／サーバ１００２は、コンピュータ・システムにより実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈において説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ１００２は、タスクが通信ネットワークを介してリンクされたリモート処理デバイスによって実行される分散クラウド・コンピューティング環境において実施することができる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル及びリモート両方のコンピュータ・システム・ストレージ媒体内に配置され得る。
【０１０８】
図１２に示されるように、コンピュータ・システム／サーバ１００２が、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム／サーバ１００２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット１００４と、システム・メモリ１００６と、システム・メモリ１００６を含む種々のシステム・コンポーネントをプロセッサ１００４に結合するバス１００８とを含むことができる。バス１００８は、種々のバス・アーキテクチャのいずれかを使用するメモリ・バス若しくはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及びプロセッサ・バス若しくはローカル・バスを含む、幾つかのタイプのバス構造のいずれかの１つ又は複数を表す。限定としてではなく例として、そうしたアーキテクチャは、業界標準アーキテクチャ（Industry Standard Architecture、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Micro Channel Architecture、ＭＣＡ）バス、拡張ＩＳＡ（Enhanced ISA、ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスを含む。
【０１０９】
コンピュータ・システム／サーバ１００２は、一般的に、種々のコンピュータ・システム可読媒体を含む。そうした媒体は、コンピュータ・システム／サーバ１００２によってアクセス可能である任意の利用可能な媒体とすることができ、それは、揮発性媒体及び不揮発性媒体、取外し可能媒体及び取外し不能媒体の両方を含む。
【０１１０】
システム・メモリ１００６は、ランダム・アクセス・メモリ（ＲＡＭ）１０１０及び／又はキャッシュ・メモリ１０１２などの揮発性メモリの形態でコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１００２は、他の取外し可能な／取外し不能な、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、（図示されていない、通常「ハードディスク」と呼ばれる）取外し不能な、不揮発性の磁気媒体から読み取り、そうした媒体に書き込むためのストレージ・システム１０１３を提供することができる。図示されないが、取外し可能な、不揮発性の磁気ディスク（例えば、「フロッピー・ディスク」）から読み取り、そうしたディスクに書き込むための磁気ディスク・ドライブ、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、若しくは他の光媒体などの取外し可能な、不揮発性の光ディスクから読み取り、そうしたディスクに書き込むための光ディスク・ドライブを提供することができる。そうした例において、それぞれが、１つ又は複数のデータ媒体インターフェースによってバス１００８に接続され得る。以下でさらに示され、説明されるように、メモリ１００６は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【０１１１】
プログラム・モジュール１０１６のセット（少なくとも１つ）を有するプログラム／ユーティリティ１０１４が、限定としてではなく一例として、オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データとともにメモリ１００６に格納され得る。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせのそれぞれが、ネットワーキング環境の実装形態を含むことができる。コンピュータ・システム１００２のコンポーネントは、一般に、本明細書において説明されるような本発明の実施形態の機能及び／又は方法を実行するプログラム・モジュール１０１６として実装することができる。図１のシステムは、１つ又は複数のコンピュータ・システム１００２内に実装することができ、それらが複数のコンピュータ・システム１００２内に実装される場合、コンピュータ・システムは、ネットワーク上で通信することができる。
【０１１２】
コンピュータ・システム／サーバ１００２は、キーボード、ポインティング・デバイス、ディスプレイ１０２０等の１つ又は複数の外部デバイス１０１８；ユーザがコンピュータ・システム／サーバ１００２と対話することを可能にする１つ又は複数のデバイス；及び／又はコンピュータ・システム／サーバ１００２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデム等）と通信することも可能である。そうした通信は、入力／出力（Ｉ／Ｏ）インターフェース１０２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１００２は、ネットワーク・アダプタ１０２４を介してローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと通信することができる。示されるように、ネットワーク・アダプタ１０２４は、バス１００８を介してコンピュータ・システム／サーバ１００２の他のコンポーネントと通信する。図示されていないが、他のハードウェア及び／又はソフトウェアのコンポーネントがコンピュータ／システム／サーバ１００２に関連して使用され得ることを理解されたい。例として、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システム等が挙げられる。
【０１１３】
ｉ、ｊ及びｎなどの、本明細書で使用される参照文字は、要素のインスタンスの変数を示すために使用され、同じ又は異なる値を表すことがあり、記載される異なるインスタンスにおける異なる又は同じ要素と共に用いられるとき、同じ又は異なる値を表すことがある。
【０１１４】
本発明は、システム、方法、及び／又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様によるプロセッサ動作を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【０１１５】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：即ち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令が記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って伝搬される電気信号などの、一時的信号自体として解釈されない。
【０１１６】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び／又は無線ネットワークなどのネットワークを介して外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【０１１７】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモートコンピュータ上で実行される場合もあり、又は完全にリモートコンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、リモートコンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【０１１８】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【０１１９】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を含むようにすることもできる。
【０１２０】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するようにすることもできる。
【０１２１】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【０１２２】
「１つの実施形態（an embodiment）」、「実施形態（embodiment）」、「（複数の）実施形態（embodiments）」、「その実施形態（the embodiment）」、「（複数の）その実施形態（the embodiments）」、「１つ又は複数の実施形態（one or more embodiments）」、「幾つかの実施形態（some embodiments）」、及び「一実施形態（one embodiment）」という用語は、明示的に別段の定めがない限り、「本発明の１つ又は複数の（しかし、全てではない）実施形態」を意味する。
【０１２３】
「含んでいる（including）」、「備えている（comprising）」、「有している（having）」という用語及びその変形は、明示的に別段の定めがない限り、「含むが、それに制限されない（including but not limited to）」ことを意味する。
【０１２４】
列挙される項目のリストは、明示的に別段の定めがない限り、項目のいずれか又は全てが相互に排他的であることを意味しない。
【０１２５】
「１つの（a）」、「１つの（an）」、「その（the）」という用語は、明示的に別段の定めがない限り、「１つ又は複数（one or more）」を意味する。
【０１２６】
互いに通信するデバイスは、明示的に別段の定めがない限り、互いに連続的に通信する必要はない。さらに、互いに通信するデバイスは、１つ又は複数の中間物を介して、直接又は間接的に通信することもある。
【０１２７】
互いに通信する幾つかのコンポーネントを用いる１つの実施形態の記述は、全てのそう
したコンポーネントが必要とされることを意味するものではない。これに反して、種々の随意的なコンポーネントが、本発明の多種多様の可能な実施形態を示すために説明される。
【０１２８】
単一のデバイス又は物品が本明細書に説明されるが、単一のデバイス／物品の代わりに、１つより多いデバイス／物品（これらが協働しても又はしなくても）を用い得ることは容易に明らかであろう。同様に、１つより多いデバイス又は物品が本明細書で説明される場合（これらが協働しても又はしなくても）、１つより多いデバイス又は物品の代わりに単一のデバイス／物品を用いてもよく、又は示される数のデバイス又は物品の代わりに異なる数のデバイス／物品を用いてもよいことは、容易に明らかであろう。デバイスの機能及び／又は特徴を、そうした機能／特徴を有するものとして明示的に説明されていない１つ又は複数の他のデバイスによって代替的に具体化することもできる。従って、本発明の他の実施形態が、デバイス自体を含む必要はない。
【０１２９】
本発明の種々の実施形態の上記の記載は、例示及び説明のために提示されている。これは、網羅的であること又は本発明を開示された正確な形態に限定することを意図していない。上記の教示に照らして、多くの修正及び変形が可能である。本発明の範囲は、詳細な説明により制限されるものではなく、むしろ、これに添付される特許請求の範囲により制限されることが意図される。上記の詳述、例及びデータは、本発明の構成の製造及び使用の完全な説明を提供する。本発明の趣旨及び範囲から逸脱することなく、本発明の多くの実施形態を作成できるので、本発明は、以下に添付する本明細書における特許請求の範囲内にある。
【符号の説明】
【０１３０】
１ａ、１ｂ、・・・１ｎ：ホスト
２、２ａ、２ｂ：データ・ストレージ・システム
４、４ａ、４ｂ：ストレージ・コントローラ
６：ネットワーク
１０、１０ａ、１０ｂ：ストレージ
２０、２０４：メモリ
２４：ストレージ・マネージャ
２８、１０１２：キャッシュ
３０：キャッシュ・ディレクトリ
３２、２１８：タスク制御ブロック（ＴＣＢ）
３３：ターゲット・デステージ論理
３５：データ複製論理
３７：ポイント・イン・タイム・コピー関係
５０：ソース
５４：ターゲット
６０：安全データ・コミット論理
２１４：コピー・ソース・ツー・ターゲット論理
２１８：タスク制御ブロック
２３４：シーケンシャル書き込み検知論理
２５０：タスク制御ブロック生成論理
２６８：リダイレクトされる読み取り動作
４１０：プリエンプティブ条件監視論理
４５２：プリエンプティブ走査論理
４８４：読み取り動作
４８８：デステージ動作
１００２：コンピュータ・システム／サーバ
１００４：プロセッサ又は処理ユニット
１００６：システム・メモリ
１００８：バス
【図１】
2021507377.tif 000003
【図２】
2021507377.tif 000004
【図３】
2021507377.tif 000005
【図４】
2021507377.tif 000006
【図５】
2021507377.tif 000007
【図６】
2021507377.tif 000008
【図７】
2021507377.tif 000009
【図８】
2021507377.tif 000010
【図９】
2021507377.tif 000011
【図１０】
2021507377.tif 000012
【図１１】
2021507377.tif 000013
【図１２】
2021507377.tif 000014
【国際調査報告】
2021507377.tif 000015
2021507377.tif 000016