(57)【特許請求の範囲】
【請求項１】
ソース格納部とターゲット格納部との間でデータを転送するためのシステムにおいて、転送されるデータ量を減少させる方法であって、
前記システムは、
１つ又はそれ以上のホスト・コンピュータと、
前記ホスト・コンピュータにネットワークを介して接続される１つ又はそれ以上の格納コントローラと、
前記格納コントローラに接続されうるソース格納部であって、１つ又はそれ以上のソース・データ・ブロックをソース・ボリュームとして含む、前記ソース格納部と、
前記格納コントローラに接続されうるターゲット格納部であって、１つ又はそれ以上のターゲット・データ・ブロックをターゲット・ボリュームとして含み、前記ターゲット・データ・ブロックは、前記ソース・ボリュームの全て又は一部のコピーを維持する、前記ターゲット格納部と
を含み、
前記格納コントローラは、前記ソース格納部又は前記ターゲット格納部への入力又は出力要求を前記ホスト・コンピュータから受け取り、該要求を前記ソース格納部又は前記ターゲット格納部へ向け、さらに前記ソース格納部と前記ターゲット格納部との間のデータ転送を制御し、
前記格納コントローラは、
システム・メモリと、
前記ソース格納部に接続されうるソース・キャッシュであって、前記ソース格納部にデータが書き込まれるまで前記ソース格納部内へのデータ更新が維持される、前記ソース・キャッシュと、
前記ターゲット格納部に接続されうるターゲット・キャッシュであって、前記ターゲット格納部にデータが書き込まれるまで前記ターゲット格納部内へのデータ更新が維持される、前記ターゲット・キャッシュと、
不揮発性キャッシュと
を含み、
前記格納コントローラは、
前記ソース格納部から前記ソース・キャッシュへ及び前記ターゲット格納部から前記ターゲット・キャッシュへデータを読み取るための読み取り処理と、
前記ソース・キャッシュから前記ソース格納部へ及び前記ターゲット・キャッシュから前記ターゲット格納部へデータを書き込むための書き込み処理と、
ソース格納部からターゲット格納部にデータを転送し、仮想コピー動作を実行する仮想コピー処理と
を前記システム・メモリ内に読み込み、そして実行することができ、
前記不揮発性キャッシュは、
ソース変更記録構造体と、
ターゲット変更記録構造体と、
ターゲット・コピー構造体と
を記憶し、
前記ソース変更記録構造体は、前記各ソース・データ・ブロックについての第１のインジケータを含み、前記第１のインジケータは、ソース・データ・ブロックが仮想コピー動作として最後にターゲット格納部に転送されたとき以降に、該ソース・データ・ブロックが更新されたかどうかを示し、
前記ターゲット変更記録構造体は、前記各ターゲット・データ・ブロックについての第２のインジケータを含み、前記第２のインジケータは、ターゲット・データ・ブロックが仮想コピー動作として該ターゲット・データ・ブロックに対応するソース・データ・ブロックによって更新されたとき以降に、該ターゲット・データ・ブロックが更新されたかどうかを示し、
前記ターゲット・コピー構造体は、前記各ターゲット・データ・ブロックについての第３のインジケータを含み、前記第３のインジケータは、仮想コピー動作としてソース・データ・ブロックがターゲット・データ・ブロックに転送されるべきであるかどうかを示し、
前記方法は、前記システムに、仮想コピー動作を可能にするために、
前記ソース格納部の１つ又はそれ以上のソース・ボリュームと前記ターゲット格納部の前記１つ又はそれ以上のソース・ボリュームに対応する１つ又はそれ以上のターゲット格納部のターゲット・ボリュームとの間で仮想コピー関連性を確立するステップと、
前記ソース格納部からソース・データ・ブロックを取り出されるべきこと、及び前記ソース格納部から前記ターゲット格納部に前記ソース・データ・ブロックがコピーされるべきであることを示すように前記第３のインジケータを更新するステップと、
ソース・データ・ブロックが仮想コピー動作として最後にターゲット格納部に転送されたとき以降に、前記ソース・データ・ブロックが更新されなかったことを示すように前記第１のインジケータを更新するステップと、
前記仮想コピー動作として最後にターゲット格納部に転送された以降に、前記ターゲット・データ・ブロックが更新されなかったことを示すように前記第２のインジケータを更新するステップと
を実行させることを含む、前記方法。
【請求項２】
前記方法は、前記システムに、
データ・ブロックへの書き込み要求を受信するステップと、
前記書き込み対象のデータ・ブロックが前記仮想コピー関連性内にあるかどうかを判断するステップと、
前記仮想コピー関連性にある場合に、前記書き込み対象のデータ・ブロックが前記ターゲット格納部内にあるかどうかを判断するステップと、
前記書き込み対象のデータ・ブロックが前記ターゲット格納部内にある場合に、前記第２のインジケータを更新するステップと、
前記前記書き込み対象のデータ・ブロックが前記ターゲット格納部内にない場合に、前記第１のインジケータを更新するステップと、
前記データ・ブロックへの書き込みを実行するステップと
を実行させることを含む、請求項１に記載の方法。
【請求項３】
前記方法は、前記システムに、
データ・ブロックへの読み取り要求を受信するステップと、
前記読み取り対象のデータ・ブロックが前記仮想コピー関連性内にあるかどうかを判断するステップと、
前記仮想コピー関連性にある場合に、前記第３のインジケータが読み取り対象が前記ソース格納部であるべきであることを示すかどうかを判断するステップと、
前記第３のインジケータが読み取り対象が前記ソース格納部であるべきであることを示す場合に、前記ソース格納部からデータ・ブロックを読み取るステップと
前記第３のインジケータが読み取り対象が前記ソース格納部であるべきであることを示さない場合に、前記ターゲット格納部からデータ・ブロックを読み取るステップと
を実行させることを含む、請求項１に記載の方法。
【請求項４】
前記方法は、前記システムに、
データ・ブロックをバックグラウンドでコピーすると判断する場合に、
前記第３のインジケータがデータ・ブロックがコピーされなかったことを示す場合に、該データ・ブロックを読み取り、前記ターゲット格納部にコピーし、そして前記データ・ブロックがコピーされたことを示すように前記第３のインジケータを更新するステップと、
前記第３のインジケータがデータ・ブロックがコピーされたことを示す場合に、処理されるべき次のデータ・ブロックがある場合、該次のデータ・ブロックを処理するステップと
を実行させることを含む、請求項１に記載の方法。
【請求項５】
ソース格納部とターゲット格納部との間でデータを転送するためのシステムであって、
１つ又はそれ以上のホスト・コンピュータと、
前記ホスト・コンピュータにネットワークを介して接続される１つ又はそれ以上の格納コントローラと、
前記格納コントローラに接続されうるソース格納部であって、１つ又はそれ以上のソース・データ・ブロックをソース・ボリュームとして含む、前記ソース格納部と、
前記格納コントローラに接続されうるターゲット格納部であって、１つ又はそれ以上のターゲット・データ・ブロックをターゲット・ボリュームとして含み、前記ターゲット・データ・ブロックは、前記ソース・ボリュームの全て又は一部のコピーを維持する、前記ターゲット格納部と
を含み、
前記格納コントローラは、前記ソース格納部又は前記ターゲット格納部への入力又は出力要求を前記ホスト・コンピュータから受け取り、該要求を前記ソース格納部又は前記ターゲット格納部へ向け、さらに前記ソース格納部と前記ターゲット格納部との間のデータ転送を制御し、
前記格納コントローラは、
システム・メモリと、
前記ソース格納部に接続されうるソース・キャッシュであって、前記ソース格納部にデータが書き込まれるまで前記ソース格納部内へのデータ更新が維持される、前記ソース・キャッシュと、
前記ターゲット格納部に接続されうるターゲット・キャッシュであって、前記ターゲット格納部にデータが書き込まれるまで前記ターゲット格納部内へのデータ更新が維持される、前記ターゲット・キャッシュと、
不揮発性キャッシュと
を含み、
前記格納コントローラは、
前記ソース格納部から前記ソース・キャッシュへ及び前記ターゲット格納部から前記ターゲット・キャッシュへデータを読み取るための読み取り処理と、
前記ソース・キャッシュから前記ソース格納部へ及び前記ターゲット・キャッシュから前記ターゲット格納部へデータを書き込むための書き込み処理と、
ソース格納部からターゲット格納部にデータを転送し、仮想コピー動作を実行する仮想コピー処理と
を前記システム・メモリ内に読み込み、そして実行することができ、
前記不揮発性キャッシュは、
ソース変更記録構造体と、
ターゲット変更記録構造体と、
ターゲット・コピー構造体と
を記憶し、
前記ソース変更記録構造体は、前記各ソース・データ・ブロックについての第１のインジケータを含み、前記第１のインジケータは、ソース・データ・ブロックが仮想コピー動作として最後にターゲット格納部に転送されたとき以降に、該ソース・データ・ブロックが更新されたかどうかを示し、
前記ターゲット変更記録構造体は、前記各ターゲット・データ・ブロックについての第２のインジケータを含み、前記第２のインジケータは、ターゲット・データ・ブロックが仮想コピー動作として該ターゲット・データ・ブロックに対応するソース・データ・ブロックによって更新されたとき以降に、該ターゲット・データ・ブロックが更新されたかどうかを示し、
前記ターゲット・コピー構造体は、前記各ターゲット・データ・ブロックについての第３のインジケータを含み、前記第３のインジケータは、仮想コピー動作としてソース・データ・ブロックがターゲット・データ・ブロックに転送されるべきであるかどうかを示し、
前記システムは、仮想コピー動作を可能にするために、
前記ソース格納部の１つ又はそれ以上のソース・ボリュームと前記ターゲット格納部の前記１つ又はそれ以上のソース・ボリュームに対応する１つ又はそれ以上のターゲット格納部のターゲット・ボリューム間で仮想コピー関連性を確立し、
前記ソース格納部からソース・データ・ブロックを取り出されるべきこと、及び前記ソース格納部から前記ターゲット格納部に前記ソース・データ・ブロックがコピーされるべきであることを示すように前記第３のインジケータを更新し、
ソース・データ・ブロックが仮想コピー動作として最後にターゲット格納部に転送されたとき以降に、前記ソース・データ・ブロックが更新されなかったことを示すように前記第１のインジケータを更新し、
前記仮想コピー動作として最後にターゲット格納部に転送された以降に、前記ターゲット・データ・ブロックが更新されなかったことを示すように前記第２のインジケータを更新する、
前記システム。
【請求項６】
データ・ブロックへの書き込み要求を受信し、
前記書き込み対象のデータ・ブロックが前記仮想コピー関連性内にあるかどうかを判断し、
前記仮想コピー関連性にある場合に、前記書き込み対象のデータ・ブロックが前記ターゲット格納部内にあるかどうかを判断し、
前記書き込み対象のデータ・ブロックが前記ターゲット格納部内にある場合に、前記第２のインジケータを更新し、
前記前記書き込み対象のデータ・ブロックが前記ターゲット格納部内にない場合に、前記第１のインジケータを更新し、
前記データ・ブロックへの書き込みを実行する、
請求項５に記載のシステム。
【請求項７】
データ・ブロックへの読み取り要求を受信し、
前記読み取り対象のデータ・ブロックが前記仮想コピー関連性内にあるかどうかを判断し、
前記仮想コピー関連性にある場合に、前記第３のインジケータが読み取り対象が前記ソース格納部であるべきであることを示すかどうかを判断し、
前記第３のインジケータが読み取り対象が前記ソース格納部であるべきであることを示す場合に、前記ソース格納部からデータ・ブロックを読み取り
前記第３のインジケータが読み取り対象が前記ソース格納部であるべきであることを示さない場合に、前記ターゲット格納部からデータ・ブロックを読み取る、
請求項５に記載のシステム。
【請求項８】
データ・ブロックをバックグラウンドでコピーすると判断される場合に、
前記第３のインジケータがデータ・ブロックがコピーされなかったことを示す場合に、該データ・ブロックを読み取り、前記ターゲット格納部にコピーし、そして前記データ・ブロックがコピーされたことを示すように前記第３のインジケータを更新し、
前記第３のインジケータがデータ・ブロックがコピーされたことを示す場合に、処理されるべき次のデータ・ブロックがある場合、該次のデータ・ブロックを処理する、
請求項５に記載のシステム。
【請求項９】
コンピュータ・システムに、請求項１〜４のいずれか１項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インクリメンタル仮想コピーに向けられる。
【背景技術】
【０００２】
コンピューティング・システムは、多くの場合、データ処理を行い、アプリケーション・プログラムを稼動させるための１つ又はそれ以上のホスト・コンピュータ（「ホスト」）、データを格納する直接アクセス型格納デバイス（ＤＡＳＤ）、及び、該ホストと該ＤＡＳＤとの間のデータ転送を制御するための格納コントローラを含む。コントロール・ユニット又は格納ディレクタとも呼ばれる格納コントローラは、ループ・アーキテクチャにおいて接続される幾多のハードディスク・ドライブで構成された格納スペースに対するアクセスを管理し、他の場合においては直接アクセス型格納デバイス（ＤＡＳＤ）と呼ばれる。ホストは、格納コントローラを通して、格納スペースに対する入力／出力（Ｉ／Ｏ）要求を通信することができる。
【０００３】
多くのシステムにおいて、ＤＡＳＤのような１つの格納デバイス上のデータを同じ又は別の格納デバイスにコピーして、データ・ボリュームに対するアクセスを２つの異なるデバイスから与えるようにすることができる。ポイント・イン・タイム・コピーは、全てのデータをソース・ボリュームからターゲット・ボリュームに物理的にコピーして、該ターゲット・ボリュームがポイント・イン・タイム時点のデータのコピーを有するようにすることを含む。ポイント・イン・タイム・コピーは、さらに、論理的にデータのコピーを作成し、次いで、必要な時にデータをさらにコピー・オバーするだけで、事実上、物理的なコピー動作を遅らせることができる。この論理的コピー動作が行われると、ターゲット・ボリューム及びソース・ボリュームがアクセス不能になる時間を最小にすることができる。
【０００４】
多数の直接アクセス格納デバイス（ＤＡＳＤ）サブシステムが、「高速複製機能」とも呼ばれる「即時仮想コピー」動作を行うことができる。即時仮想コピー動作は、関連性テーブルのようなメタデータ又はポインタを修正し、ソース・データ・オブジェクトをオリジナル及びコピーの両方として扱うことによって行われる。ホストのコピー要求に応答して、格納サブシステムは、如何なるデータの物理的コピーも作成することなく、直ちにコピーの作成を報告する。「仮想」コピーだけが作成され、付加的な物理的コピーの不存在は、ホストには全く知られない。
【０００５】
後に格納システムがオリジナル又はコピーの更新を受信すると、更新が別個に格納され、更新されたデータ・オブジェクトに対して相互参照が行われるだけである。この時点で、オリジナルのデータ・オブジェクトとコピーのデータ・オブジェクトの分化が始まる。最初の利点は、即時仮想コピーが殆ど瞬間的に行われ、通常の物理コピー動作よりもずっと速く完了するという点である。このことにより、ホスト及び格納サブシステムが解放され、他のタスクを実行することが可能になる。ホスト又は格納サブシステムは、バックグラウンド処理において又は別の機会に、オリジナルのデータ・オブジェクトの実際の物理的コピーを作成することさえ可能である。
【０００６】
１つのこのような即時仮想コピー動作は、ＦｌａｓｈＣｏｐｙ（商標）動作として知られている。ＦｌａｓｈＣｏｐｙ（商標）動作は、同じ又は異なるデバイス上のソース・ボリュームとターゲット・ボリュームとの間の論理的ポイント・イン・タイム関連性を確立することを含む。ＦｌａｓｈＣｏｐｙ（商標）動作は、ターゲット・ディスク上におけるＦｌａｓｈＣｏｐｙ（商標）関連性内のトラックの位置が固められるまで、該トラックがソース・ディスク上に常駐することを保証する。関連性テーブルを用いて、サブシステムにおける全ての既存のＦｌａｓｈＣｏｐｙ（商標）関連性についての情報を維持する。ＦｌａｓｈＣｏｐｙ（商標）関連性の確立段階においては、１つのエントリが、確立されているＦｌａｓｈＣｏｐｙ（商標）に参加するソース及びターゲットについて、ソース及びターゲットの関連性テーブルに記録される。各々の付加されたエントリは、ＦｌａｓｈＣｏｐｙ（商標）関連性に関する、全ての要求される情報を維持する。関連性についての両方のエントリは、ソース領域からの全てのＦｌａｓｈＣｏｐｙ（商標）トラックがターゲット領域に物理的にコピーされるか、又は、取下げコマンドが受信された場合に、関連性テーブルから除去される。場合によっては、全てのトラックがソース領域からターゲット領域にコピーされても、関連性は持続する。
【０００７】
ターゲットの関連性テーブルは、さらに、ＦｌａｓｈＣｏｐｙ（商標）関連性に含まれるどのトラックが、まだコピーされておらず、したがって、保護トラックであるかを識別するビットマップを含む。ターゲット・デバイスにおける各々のトラックは、ビットマップにおいて１ビットで表される。ターゲット・ビットは、対応するトラックがＦｌａｓｈＣｏｐｙ（商標）関連性のターゲット・トラックとして確立された場合に設定される。ソース又はターゲット・デバイス上への書き込み又はバックグラウンドのコピー・タスクのために、対応するトラックがソース位置からコピーされ、ターゲット・デバイスにデステージされた場合に、ターゲット・ビットが再設定される。
【０００８】
従来技術においては、ＦｌａｓｈＣｏｐｙ（商標）動作中の論理的なポイント・イン・タイム関連性の確立の一部として、ＦｌａｓｈＣｏｐｙ（商標）関連性に含まれるソース・キャッシュ内の全てのトラックは、物理的なソース・ボリューム、例えば、ソースＤＡＳＤにデステージしなければならず、ＦｌａｓｈＣｏｐｙ（商標）に含まれるターゲット・キャッシュ内の全てのトラックは廃棄されなければならない。
【０００９】
論理的関連性が確立されると、ホストは、次いで、ソース・ボリューム及びターゲット・ボリューム上のデータに即時アクセスすることができ、該データは、バックグラウンド動作の一部としてコピーされ得る。トラックがＦｌａｓｈＣｏｐｙ（商標）関連性におけるターゲットであり、キャッシュにはない場合における該トラックに対する読み取りは、ステージ・インターセプトをトリガし、ソース・トラックがまだコピーされておらず、ターゲット・キャッシュからトラックにアクセスが与えられる前である場合に、要求されたターゲット・トラックに対応するソース・トラックが、ターゲット・キャッシュにステージされるようにする。このことは、ターゲットが、ＦｌａｓｈＣｏｐｙ（商標）動作のポイント・イン・タイムにおいて存在したソースからのコピーを有することを確実にする。さらに、コピー・オバーされていないソース・デバイス上のトラックに対するどのような書き込みも、デステージ・インターセプトをトリガし、ソース・デバイス上のトラックが、ターゲット・デバイスにコピーされるようにする。
【００１０】
即時仮想コピー技術は、フォアグラウンド処理を中断又は減速することなく、データの複製コピーを迅速に（少なくとも部分的に）作成するために開発されたものである。ＦｌａｓｈＣｏｐｙ（商標）動作のような即時仮想コピー技術は、ポイント・イン・タイムのコピー・ツールを提供する。即時仮想コピー技術は、例えば、データ・バックアップ、データ・マイグレーション、データ・マイニング、試験等を含む種々の用途に用いることができる。例えば、ソース・データの物理的「バックアップ」コピーの作成に即時仮想コピー技術を用い、障害回復を助けることができる。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
即時仮想コピー技術は大量のデータのコピーに対して有用であるが、従来型の即時仮想コピー技術を改善することもできる。特に、当該技術分野において、大量のデータを物理的にコピーすることを回避する、改善された即時仮想コピー技術に対する必要性が存在する。
【課題を解決するための手段】
【００１２】
第１の側面において、本発明は、ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されたかどうかを示す、各ソース・データ・ブロックについての第１のインジケータを維持するステップと、ターゲット・データ・ブロックが対応するソース・データ・ブロックによって上書きされたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されたかどうかを示す、ターゲット格納部内の各ターゲット・データ・ブロックについての第２のインジケータを維持するステップと、ソース格納部からターゲット格納部にデータを転送する時に、ソース・データ・ブロックが更新されたことを示すように第１のインジケータが設定された、各ソース・データ・ブロックを転送し、かつ、ターゲット・データ・ブロックが更新されたことを示すように第２のインジケータが設定された、ターゲット・データ・ブロックに対応する各ソース・データ・ブロックを転送するステップとを含む、転送されるデータ量を減少させる方法を提供する。
【００１３】
本方法は、ステージ動作のために、対応するソース・データ・ブロック又はターゲット・データ・ブロックが取り出されるべきかどうかを示す、各ターゲット・データ・ブロックについての第３のインジケータを維持するステップをさらに含むことが好ましい。
【００１４】
本方法は、ソース・データ・ブロックがターゲット格納部にコピーされた時に、ターゲット・データ・ブロックについての第３のインジケータを更新するステップをさらに含むことが好ましい。
【００１５】
本方法は、インクリメンタル仮想コピー動作を受信するステップと、ソース・データ・ブロックについての第１のインジケータ及び該ソース・データ・ブロックに対応するターゲット・データ・ブロックについての第２のインジケータに基づいて、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップとをさらに含み、ここで、ソース格納部からターゲット格納部にデータを転送することは、ソース・データ・ブロックがターゲット格納部に転送されるべきであることを第３のインジケータが示している、各ソース・データ・ブロックを転送することを含むことが好ましい。
【００１６】
本方法は、インクリメンタル仮想コピー関連性を確立した後、ステージ動作のために、ターゲット・データ・ブロックに対応するソース・データ・ブロックがソース格納部から取り出されるべきであることを示すように、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップをさらに含むことが好ましい。
【００１７】
本方法は、ソース格納部からターゲット格納部にデータを転送した後、該ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されなかったことを示すように、各ソース・ブロックについての第１のインジケータを更新するステップさらに含むことが好ましい。
【００１８】
本方法は、ソース格納部からターゲット格納部にデータを転送した後、該ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されなかったことを示すように、各ターゲット・データ・ブロックについての第２のインジケータを更新するステップとをさらに含むことが好ましい。
【００１９】
各ソース・データ・ブロック及び各ターゲット・データ・ブロックは、あるボリュームのトラックを含むことが好ましい。
【００２０】
各ソース・データ・ブロック及び各ターゲット・データ・ブロックは、あるボリュームのセクタを含むことが好ましい。
【００２１】
本方法は、データのソース部分とデータのターゲット部分との間でインクリメンタル仮想コピー動作を行うことによって、データのソース部分とデータのターゲット部分との間にインクリメンタル仮想コピー関連性を形成するステップをさらに含み、ここで、インクリメンタル仮想コピー関連性において、データのソース部分内の各ソース・データ・ブロックについての第１のインジケータ及びデータのターゲット部分内の各ターゲット・データ・ブロックについての第２のインジケータが維持される。
【００２２】
本方法は、ソース・データ・ブロックが更新されなかったことを示すように、各ソース・データ・ブロックについての第１のインジケータを更新するステップと、ターゲット・データ・ブロックが更新されなかったことを示すように、各ターゲット・データ・ブロックについての第２のインジケータを更新するステップと、ソース・データ・ブロックをターゲット格納部に転送する必要があることを示すように、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップとをさらに含むことが好ましい。
【００２３】
本方法は、ソース・データ・ブロックが更新された時に、ソース・データ・ブロックが更新されたことを示すように、ソース・データ・ブロックについての第１のインジケータを更新するステップをさらに含むことが好ましい。
【００２４】
本方法は、ターゲット・データ・ブロックが更新された時に、ターゲット・データ・ブロックが更新されたことを示すように、ターゲット・データ・ブロックについての第２のインジケータを更新するステップをさらに含むことが好ましい。
【００２５】
同様に、ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されたかどうかを示す、各ソース・データ・ブロックについての第１のインジケータを維持するステップと、対応するソース・データ・ブロックによってターゲット・データ・ブロックが上書きされたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されたかどうかを示す、ターゲット格納部内の各ターゲット・データ・ブロックについての第２のインジケータを維持するステップと、ソース格納部からターゲット格納部にデータを転送する時に、ソース・データ・ブロックが更新されたかどうかを示すように第１のインジケータが設定された、各ソース・データ・ブロックを転送するステップと、ターゲット・データ・ブロックが更新されたかどうかを示すように第２のインジケータが設定された、ターゲット・データ・ブロックに対応する各ソース・データ・ブロックを転送するステップとを含む動作が行われる、転送されるデータ量を減少させるための製品を提供することもできる。
【００２６】
本製品は、ステージ動作のために、対応するソース・データ・ブロック又はターゲット・データ・ブロックが取り出されるべきかどうかを示す、各ターゲット・データ・ブロックについての第３のインジケータを維持するステップをさらに含む動作を行うことが好ましい。
【００２７】
本製品は、ソース・データ・ブロックがターゲット格納部にコピーされた時に、ターゲット・データ・ブロックについての第３のインジケータを更新するステップを含むことが好ましい。
【００２８】
本製品は、インクリメンタル仮想コピー動作を受信するステップと、ソース・データ・ブロックについての第１のインジケータ及びソース・データ・ブロックに対応するターゲット・データ・ブロックについての第２のインジケータに基づいて、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップとをさらに含むことが好ましく、ここで、ソース格納部からターゲット格納部にデータを転送することは、ソース・データ・ブロックがターゲット格納部に転送されるべきであることを第３のインジケータが示している、各ソース・データ・ブロックを転送することを含む。
【００２９】
本製品は、インクリメンタル仮想コピー関連性を確立した後、ステージ動作のために、ターゲット・データ・ブロックに対応するソース・データ・ブロックがソース格納部から取り出されるべきであることを示すように、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップを含むことが好ましい。
【００３０】
本製品は、ソース格納部からターゲット格納部にデータを転送した後、ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されなかったことを示すように、各ソース・ブロックについての第１のインジケータを更新するステップを含むことが好ましい。
【００３１】
本製品は、ソース格納部からターゲット格納部にデータを転送した後、ターゲット・データ・ブロックが最後にターゲット格納部に転送されたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されなかったことを示すように、各ターゲット・データ・ブロックについての第２のインジケータを更新するステップを含むことが好ましい。
【００３２】
各ソース・データ・ブロック及び各ターゲット・データ・ブロックが、あるボリュームのトラックを含むことが好ましい。
【００３３】
各ソース・データ・ブロック及び各ターゲット・データ・ブロックが、あるボリュームのセクタを含むことが好ましい。
【００３４】
本製品は、データのソース部分とデータのターゲット部分との間でインクリメンタル仮想コピー動作を行うことによって、データのソース部分とデータのターゲット部分との間にインクリメンタル仮想コピー関連性を形成するステップを含むことが好ましく、ここで、インクリメンタル仮想コピー関連性において、データのソース部分内の各ソース・データ・ブロックについての第１のインジケータ及びデータのターゲット部分内の各ターゲット・データ・ブロックについての第２のインジケータが維持される。
【００３５】
本製品は、ソース・データ・ブロックが更新されなかったことを示すように、各ソース・データ・ブロックについての第１のインジケータを更新するステップと、ターゲット・データ・ブロックが更新されなかったことを示すように、各ターゲット・データ・ブロックについての第２のインジケータを更新するステップと、ソース・データ・ブロックをターゲット格納部に転送する必要があることを示すように、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップとをさらに含むことが好ましい。
【００３６】
本製品は、ソース・データ・ブロックが更新された時に、ソース・データ・ブロックが更新されたことを示すように、ソース・データ・ブロックについての第１のインジケータを更新するステップをさらに含むことが好ましい。
【００３７】
本製品は、ターゲット・データ・ブロックが更新された時に、ターゲット・データ・ブロックが更新されたことを示すように、ターゲット・データ・ブロックについての第２のインジケータを更新するステップをさらに含むことが好ましい。
【００３８】
第２の側面において、本発明は、ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されたかどうかを示す、各ソース・データ・ブロックについての第１のインジケータを維持するための手段と、対応するソース・データ・ブロックによってターゲット・データ・ブロックが上書きされたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されたかどうかを示す、ターゲット格納部内の各ターゲット・データ・ブロックについての第２のインジケータを維持するための手段と、ソース格納部からターゲット格納部にデータを転送する時に、ソース・データ・ブロックが更新されたかどうかを示すように第１のインジケータが設定された、各ソース・データ・ブロックを転送するための手段と、ターゲット・データ・ブロックが更新されたかどうかを示すように第２のインジケータが設定された、ターゲット・データ・ブロックに対応する各ソース・データ・ブロックを転送するための手段とを含む、転送されるデータ量を減少させるためのシステムを提供する。
【００３９】
本システムは、ステージ動作のために、対応するソース・データ・ブロック又はターゲット・データ・ブロックが取り出されるべきかどうかを示す、各ターゲット・データ・ブロックについての第３のインジケータを維持するための手段を含むことが好ましい。
【００４０】
本システムは、ソース・データ・ブロックがターゲット格納部にコピーされた時に、ターゲット・データ・ブロックについての第３のインジケータを更新するための手段を含むことが好ましい。
【００４１】
本システムは、インクリメンタル仮想コピー動作を受信するステップと、ソース・データ・ブロックについての第１のインジケータ及びソース・データ・ブロックに対応するターゲット・データ・ブロックについての第２のインジケータに基づいて、各ターゲット・データ・ブロックについての第３のインジケータを更新するステップとをさらに含むことが好ましく、ここで、ソース格納部からターゲット格納部にデータを転送することは、ソース・データ・ブロックがターゲット格納部に転送されるべきであることを第３のインジケータが示している、各ソース・データ・ブロックを転送するための手段を含むことが好ましい。
【００４２】
本システムは、インクリメンタル仮想コピー関連性を確立した後、ステージ動作のために、ターゲット・データ・ブロックに対応するソース・データ・ブロックがソース格納部から取り出されるべきであることを示すように、各ターゲット・データ・ブロックについての第３のインジケータを更新するための手段を含むことが好ましい。
【００４３】
本システムは、ソース格納部からターゲット格納部にデータを転送した後、ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されなかったことを示すように、各ソース・データ・ブロックについての第１のインジケータを更新するための手段を含むことが好ましい。
【００４４】
本システムは、ソース格納部からターゲット格納部にデータを転送した後、ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されなかったことを示すように、各ターゲット・データ・ブロックについての第２のインジケータを更新するための手段を含むことが好ましい。
【００４５】
各ソース・データ・ブロック及び各ターゲット・データ・ブロックが、あるボリュームのトラックを含むことが好ましい。
【００４６】
各ソース・データ・ブロック及び各ターゲット・データ・ブロックが、あるボリュームのセクタを含むことが好ましい。
【００４７】
本製品は、データのソース部分とデータのターゲット部分との間でインクリメンタル仮想コピー動作を行うことによって、データのソース部分とデータのターゲット部分との間にインクリメンタル仮想コピー関連性を形成するための手段を含み、ここで、インクリメンタル仮想コピー関連性において、データのソース部分内の各ソース・データ・ブロックについての第１のインジケータ及びデータのターゲット部分内の各ターゲット・データ・ブロックについての第２のインジケータが維持されることが好ましい。
【００４８】
本システムは、ソース・データ・ブロックが更新されなかったことを示すように、各ソース・データ・ブロックについての第１のインジケータを更新するための手段と、ターゲット・データ・ブロックが更新されなかったことを示すように、各ターゲット・データ・ブロックについての第２のインジケータを更新するための手段と、ソース・データ・ブロックをターゲット格納部に転送する必要があることを示すように、各ターゲット・データ・ブロックについての第３のインジケータを更新するための手段とを含むことが好ましい。
【００４９】
本システムは、ソース・データ・ブロックを更新した時に、ソース・データ・ブロックが更新されたことを示すように、ソース・データ・ブロックについての第１のインジケータを更新するための手段を含むことが好ましい。
【００５０】
本システムは、ターゲット・データ・ブロックを更新した時に、ターゲット・データ・ブロックが更新されたことを示すように、ターゲット・データ・ブロックについての第２のインジケータを更新する手段を含むことが好ましい。
【００５１】
第３の側面において、本発明は、コンピュータ・システムに読み込まれ、コンピュータ・システム上で実行されるときに、第１の側面による方法のステップを実行させるためのコンピュータ・プログラム・コードを含む、コンピュータ・プログラムを提供する。コンピュータ・プログラムの好ましい特徴は、第１の側面の好ましい方法のステップに対応するコンピュータ・プログラム・コードを含む。
【００５２】
したがって、転送されるデータ量を減少させる方法、システム、及びプログラムが提供されることが好ましい。ソース・データ・ブロックが最後にターゲット格納部に転送されたとき以降にソース格納部においてソース・データ・ブロックが更新されたかどうかを示す、各ソース・データ・ブロックについての第１のインジケータが維持される。対応するソース・データ・ブロックによってターゲット・データ・ブロックが上書きされたとき以降にターゲット格納部においてターゲット・データ・ブロックが更新されたかどうかを示す、ターゲット格納部内の各ターゲット・データ・ブロックについての第２のインジケータが維持される。ソース格納部からターゲット格納部にデータを転送する時に、ソース・データ・ブロックが更新されたことを示すように第１のインジケータが設定された、各ソース・データ・ブロックが転送され、ターゲット・データ・ブロックを更新したことを示すように第２のインジケータが設定された、ターゲット・データ・ブロックに対応する各ソース・データ・ブロックが転送される。
【００５３】
説明された本発明の実施は、インクリメンタル仮想コピーを作成するための方法、システム、及びプログラムを提供する。
【発明を実施するための最良の形態】
【００５４】
ここで、添付の図面を参照して、単なる例示として、本発明の好ましい実施形態を説明する。
【００５５】
以下の説明において、本発明の一部を形成し、本発明の幾つかの実施を示す添付図面について説明する。本発明の範囲を逸脱することなく、他の実施を用いることができ、構造上及び動作上の変更をなし得ることが理解される。
【００５６】
本発明の実施は、即時仮想コピー動作の機能を強化するインクリメンタル仮想コピー動作を提供するものである。インクリメンタル仮想コピー動作を用いる場合、ソース・ボリュームからターゲット・ボリュームへの最後の即時仮想コピー動作以降、ソース・ボリューム及びターゲット・ボリュームにおいて更新されたデータ・ブロックだけがコピーされる。インクリメンタル仮想コピー動作は、ソース・ボリュームの物理コピーを作成する時間を減少させ、他のアプリケーションへの影響を最小にする（例えば、データをデステージするための物理的格納部に対する帯域幅の使用を最小にし、これにより物理的格納部からの読み取りのために、多くの帯域幅が可能になる）。
【００５７】
図１及び図２は、本発明の特定の実施によるコンピューティング環境をブロック図で示す。格納コントローラ１００は、ネットワーク１９０上で、入力／出力（Ｉ／Ｏ）要求をホスト１４０ａ、ｂ、．．．ｌ（ここで、ａ、ｂ及びｌは、任意の整数値とすることができる）から受け取り、ボリューム（例えば、論理ユニット番号、論理装置など）１２２ａ、ｂ．．．ｎ及び１３２ａ、ｂ．．．ｍのそれぞれを有するように構成された格納デバイス１２０、１３０の方向に向けられ、ここで、ｍ及びｎは、異なる整数値であってもよいし、又は、同じ整数値であってもよい。特定の実施においては、ターゲット格納部１３０のサイズは、ソース格納部１２０より大きいか又はこれと等しくすることができる。
【００５８】
ソース格納部１２０は、データ・ブロックを含む格納ブロック１５０に分割することができる１つ又はそれ以上のボリューム１２２ａ、ｂ．．．ｎを含み、この格納ブロック１５０は、データのサブブロックを含む格納サブブロック（１５０ａ−１５０ｐ、ここで、ａ及びｐは任意の整数値とすることができる）にさらに分割される。ボリュームは、格納部の任意の論理エレメント又は物理エレメントとすることができる。特定の実施においては、データ・ブロックはトラックのコンテンツであり、データ・サブブロックはトラックのセクタのコンテンツである。
【００５９】
ターゲット格納部１３０は、ソース格納部１２０のボリューム１２２ａ、ｂ．．．ｎの全て又はサブセットのコピーを維持する。さらに、例えばホスト１４０によって、ターゲット格納部１３０を修正することができる。ターゲット格納部１３０は、データ・ブロックを含む格納ブロック１５０に分割することができる１つ又はそれ以上のボリューム１３２ａ、ｂ．．．ｍを含み、格納ブロック１５０は、データのサブブロックを含む格納サブブロック（１５０ａ−１５０ｐ、ここで、ａ及びｐは任意の整数値とすることができる）にさらに分割される。ボリュームは、格納部の任意の論理エレメント又は物理エレメントとすることができる。特定の実施においては、データ・ブロックはトラックであり、データ・サブブロックはトラックのセクタである。
【００６０】
参照を簡略にするために、本明細書において、トラック及びセクタという用語は、データ・ブロック及びデータ・サブブロックの例として用いられるが、これらの用語の使用は、本発明の実施をトラック及びセクタに制限することを意図するものではない。本発明の実施は、あらゆるタイプの格納部、又はいずれかの方法で分割された格納ブロック又はデータ・ブロックにも適用可能である。さらに、本発明の実施はデータ・ブロックに言及しているが、本発明の代替的な実施は、データ・サブブロックにも適用可能である。
【００６１】
格納コントローラ１００は、ソース・キャッシュ１２４を含み、そこでは、ソース格納部１２０に書き込まれる（すなわち、トラックが物理的格納部にデステージされる）まで、ソース格納部１２０内のトラックへの更新が維持される。格納コントローラ１００は、ターゲット・キャッシュ１３４を含み、そこでは、ターゲット格納部１３０に書き込まれる（すなわち、トラックが物理的格納部にデステージされる）まで、ターゲット格納部１３０内のトラックへの更新が維持される。ソース・キャッシュ１２４及びターゲット・キャッシュ１３４は、別個の又は同じ格納デバイスの異なるセクションを含むことができる。ソース・キャッシュ１２４及びターゲット・キャッシュ１３４は、ホスト１４０ａ、ｂ、．．．ｌ、ソース格納部１２０、及びターゲット格納部１３０の間で伝送される読み取りデータ及び書き込みデータをバッファに入れるために用いられる。さらに、キャッシュ１２４及び１３４は、ソース・キャッシュ及びターゲット・キャッシュと呼ばれ、ポイント・イン・タイム・コピー関連性にあるソース・データ・ブロック又はターゲット・データ・ブロックを保持するが、これらのキャッシュ１２４及び１３４は、異なるポイント・イン・タイム・コピー関連性にあるソース・データ・ブロック及びターゲット・データ・ブロックを同時に格納することができる。
【００６２】
付加的に、格納コントローラ１００は、不揮発性キャッシュ１１８を含む。不揮発性キャッシュ１１８を、例えばバッテリ・バックアップ式揮発性メモリとし、データ更新の不揮発性コピーを維持することができる。
【００６３】
格納コントローラ１００は、揮発性デバイス及び／又は不揮発性デバイス内に実装することができるシステム・メモリ１１０をさらに含む。システム・メモリ１１０は、データを読み取るための読み取り処理１１２と、データを書き込むための書き込み処理１１４と、インクリメンタル仮想コピー処理１１６とを含む。読み取り処理１１２は、システム・メモリ１１０において実行され、格納部１２０からキャッシュ１２４及び格納部１３０からキャッシュ１３４にデータを読み取る。書き込み処理１１４は、システム・メモリ１１０において実行され、キャッシュ１２４から格納部１２０及びキャッシュ１３４から格納部１３０にデータを書き込む。インクリメンタル仮想コピー処理１１６は、システム・メモリ１１０において実行され、ソース格納部１２０からターゲット格納部１３０にデータを転送するインクリメンタル仮想コピー動作を実行する。本発明の特定の実施においては、多数のインクリメンタル仮想コピー処理がある。本発明の特定の実施においては、格納コントローラ１００において実行する代わりに又はそれに加えて、格納コントローラ１００に接続された別の格納コントローラにおいて、インクリメンタル仮想コピー処理を実行することもできる。システム・メモリ１１０は、キャッシュ１２４及び１３４とは別個の格納デバイス内にあってもよく、或いはキャッシュ１２４及び１３４の一方又は両方と格納デバイスを共有してもよい。
【００６４】
参照を簡単にするために、本発明の実施は、本明細書ではソース格納部及びターゲット格納部と呼ばれる、いずれか２つの格納媒体間のデータ転送にも適用可能である。例えば、図１に示されるように、本発明の特定の実施は、単一の格納コントローラに配置された２つの格納媒体と共に用いることができる。さらに、本発明の代替的な特定の実施は、異なる格納コントローラ、異なる物理的サイト等に配置された２つの格納媒体と共に用いることができる。また、参照を簡単にするために、ソース格納部内のデータ・ブロックを「ソース・データ・ブロック」と呼び、ターゲット格納部内のデータ・ブロックを「ターゲット・データ・ブロック」と呼ぶ。
【００６５】
特定の実施において、（ターゲット格納部１３０の代わりに又はこれに加えて）取り外し可能な格納部を用いて、ソース格納部１２０の全て又はサブセットのコピーを維持することができ、本発明の実施は、データを、ターゲット格納部ではなく取り外し可能な格納部に転送する。取り外し可能な格納部は、格納コントローラ１００に常駐することができる。
【００６６】
格納コントローラ１００は、さらに、プロセッサ複合体（図示せず）を含み、Ｅｎｔｅｒｐｒｉｓｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ７（ＥＳＳ，商標）、３９９０７  Ｓｔｏｒａｇｅ  Ｃｏｎｔｒｏｌｌｅｒなどの、当該技術分野に知られる、あらゆる格納コントローラ又はサーバを含むことができる。ホスト１４０ａ、ｂ．．．ｌは、サーバ、メインフレーム、ワークステーション、パーソナル・コンピュータ、手持ち式コンピュータ、ラップトップ型テレフォニー・デバイス、ネットワーク・アプライアンスなどの当該技術分野に知られる、あらゆるコンピューティング・デバイスを含むことができる。格納コントローラ１００及びホスト・システム１４０ａ、ｂ．．．１は、格納エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、広域エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネットなどを含むことができるネットワーク１９０を介して通信する。ソース格納部１２０及びターゲット格納部１３０は各々、直接アクセス格納デバイス（ＤＡＳＤ）、単純ディスク束（ＪＢＯＤ）、新磁気ディスク制御機構アレイ（ＲＡＩＤ）、仮想化デバイスなどの格納デバイスのアレイを含むことができる。
【００６７】
さらに、図１は単一の格納コントローラを示しているが、当業者であれば、ネットワーク（例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、広域エリア・ネットワーク（ＷＡＮ）、インターネット等）を介して多数の格納コントローラを接続することができ、その多数の格納コントローラの１つ又はそれ以上が本発明を実施できることを理解するであろう。
【００６８】
ホスト１４０がソース格納部１２０内のデータ・ブロックを更新することを望むとき、ホスト１４０は、ソース・キャッシュ１２４内の格納ブロックにデータを
書き込む。書き込み動作は、ソース・キャッシュ１２４内の格納ブロックを同期修正し（すなわち、書き込みホスト１４０は、動作の完了を待つ）、次いで、バックグラウンド処理において、ソース・キャッシュ１２４のコンテンツが、ソース格納部１２０に書き込まれる。書き込み動作は、データを更新し、新しいデータを書き込み、又は同じデータを再度書き込むことができる。ソース・キャッシュ１２４内のデータをソース格納部１２０に書き込むことは、デステージ動作と呼ばれる。ソース格納部１２０からソース・キャッシュ１２４にデータ・ブロックの全て又は一部をコピーするのは、ステージ動作である。同様に、ターゲット格納部１３０とターゲット・キャッシュ１３４との間でデータをステージ及びデステージすることができる。さらに、ソース格納部１２０からターゲット・キャッシュ１３４にデータをステージすることもできる。
【００６９】
図３は、本発明の特定の実施による種々の構造体２００、２１０、及び２２０を示す。不揮発性キャッシュ１１８は、ターゲット・コピー構造体２００を含む。ターゲット・コピー構造体２００を用いて、データを、ソース格納部１２０からキャッシュ１２４又はターゲット格納部１３０からキャッシュ１３４に取り出すかどうかを判断することができる（すなわち、ステージ動作のために）。さらに、ターゲット・コピー構造体２００を用いて、ソース格納部１２０内のどのデータ・ブロックがターゲット格納部１３０にコピーされるかを判断することができる。ターゲット・コピー構造体２００は、例えば、ボリューム内の各データ・ブロックについてのインジケータ（例えば、１ビット）を含む。インジケータが第１の値（例えば、１）に設定されたとき、その設定は、ステージ動作のために、データ・ブロックがソース格納部１２０から取り出されるべきであることを示すか、或いはインクリメンタル仮想コピー動作のために、データ・ブロックがターゲット格納部１３０にコピーされるべきであることを示す。インジケータが第２の値（例えば、ゼロ）に設定された場合、その設定は、ステージ動作のために、データ・ブロックがターゲット格納部１３０から取り出されるべきであることを示すか、或いはインクリメンタル仮想コピー動作のために、データ・ブロックがソース格納部１２０からターゲット格納部１３０にコピーされるべきであることを示す。
【００７０】
インクリメンタル仮想コピー関連性が確立されたソース格納部１２０のデータの一部内にあるデータ・ブロックの更新を監視するために、ソース変更記録構造体２１０が使用される。このソース変更記録構造体２１０は、インクリメンタル仮想コピー関連性の一部である、ソース格納部１２０内の各データ・ブロックについてのインジケータ（例えば、１ビット）を含む。インジケータが第１の値（例えば、１）に設定された場合、その設定は、最後のインクリメンタル仮想コピー動作以降にデータ・ブロックが更新されたことを示す。インジケータが第２の値（例えば、ゼロ）に設定された場合、その設定は、最後のインクリメンタル仮想コピー動作以降にデータ・ブロックが更新されなかったことを示す。
【００７１】
インクリメンタル仮想コピー関連性が確立された後、ターゲット格納部１３０内のデータ・ブロックの更新を監視するために、ターゲット変更記録構造体２２０が使用される。このターゲット変更記録構造体２２０は、インクリメンタル仮想コピー関連性の一部である、ターゲット格納部１３０内の各データ・ブロックについてのインジケータ（例えば、ビット）を含む。インジケータが第１の値（例えば、１）に設定された場合、その設定は、最後のインクリメンタル仮想コピー動作以降にデータ・ブロックが更新されたことを示す。インジケータが第２の値（例えばゼロ）に設定された場合、その設定は、最後のインクリメンタル仮想コピー動作以降にデータ・ブロックが更新されなかったことを示す。
【００７２】
本発明の特定の実施において、各々の構造体２００、２１０、及び２２０はビットマップを含み、各々のインジケータは、ビットを含む。各々の構造体２００、２１０、及び２２０においては、第ｎ番目のインジケータは、第ｎ番目のデータ・ブロックに対応する（例えば、各々の構造体２００、２１０、及び２２０における第１のインジケータは、第１のデータ・ブロックに対応する）。構造体２００、２１０、及び２２０が、３つの別個の構造体として示されたが、本発明の範囲を逸脱することなく、これらの構造体をいずれの形態で組み合わせてもよい。本発明の特定の実施においては、各ボリュームについて各構造体のコピーが存在する。本発明の特定の代替的な実施においては、全てのボリュームについて各構造体の単一のコピーが存在する。
【００７３】
図４は、本発明の特定の実施に従って構造体を更新するための、インクリメンタル仮想コピー処理１１６において実施される論理を示す。ブロック３００において、制御は、インクリメンタル仮想コピー関連性の最初の確立で開始する。インクリメンタル仮想コピー動作がデータの対応する部分の間で行われるとき、ソース格納部１２０内のデータの１つ又はそれ以上の部分（例えば、ソース・ボリューム）とターゲット格納部１３０内のデータの対応する部分（例えば、ターゲット・ボリューム）との間で、インクリメンタル仮想コピー関連性が形成される。第１のインクリメンタル仮想コピー動作は、例えば、１つ又はそれ以上のソース・ボリュームを対応するターゲット・ボリュームにコピーすることができる。しかしながら、次のコピーは、インクリメンタル・コピーを作成し、最後の即時仮想コピー動作以降に変更されなかったソース・ボリュームのいずれの部分の再コピーも回避することができる。
【００７４】
ブロック３１０において、インクリメンタル仮想コピー処理１１６は、ターゲット・コピー構造体２００内のインジケータを更新し、ステージ動作のために、インジケータに対応する全てのデータ・ブロックがソース格納部から取り出されるべきであること、及び、インクリメンタル仮想コピー動作又は物理コピー動作のために、全てのデータ・ブロックがソース格納部からターゲット格納部にコピーされるべきであることを示す。本発明の特定の実施においては、ターゲット・コピー構造体２００内のインジケータは、１に設定される。
【００７５】
ブロック３２０において、インクリメンタル仮想コピー処理１１６は、ソース変更記録構造体２１０内のインジケータを更新し、最後のインクリメンタル仮想コピー動作以降にインジケータに対応するソース・データ・ブロックが更新されなかったことを示す。本発明の特定の実施において、ソース変更記録構造体２１０内の全てのインジケータがゼロに設定される。ブロック３３０において、インクリメンタル仮想コピー処理１１６は、ターゲット変更記録構造体２２０内のインジケータを更新し、最後のインクリメンタル仮想コピー動作以降にインジケータに対応するターゲット・データ・ブロックが更新されなかったことを示す。本発明の特定の実施において、ターゲット変更記録構造体２２０内の全てのインジケータが、ゼロに設定される。
【００７６】
図５は、本発明の特定の実施に従ってインクリメンタル仮想コピー動作を実行するための、インクリメンタル仮想コピー処理１１６において実施される論理を示す。ブロック４００において、制御は、インクリメンタル仮想コピー動作を受信するインクリメンタル仮想コピー処理１１６で開始する。ホスト１４０によってインクリメンタル仮想コピー動作を実行することもできる。図５のフローに図示されていないが、インクリメンタル仮想コピー動作を受信する前に、例えば、ホスト１４０におけるユーザによって、ソース格納部１２０及び／又はターゲット格納部１３０において１つ又はそれ以上のデータ・ブロックを更新することができる。
【００７７】
ブロック４１０において、インクリメンタル仮想コピー処理１１６は、ソース変更記録構造体２１０及びターゲット変更記録構造体２２０内のインジケータを用いて、ターゲット・コピー構造体２００内のインジケータを更新する。本発明の特定の実施において、ソース変更記録構造体２１０は、「ＯＲ」演算を用いてターゲット変更記録構造体２２０と合体され、「ＯＲ」演算の結果は、ターゲット・コピー構造体２００に「論理和演算」される。
【００７８】
ブロック４２０において、ターゲット・コピー構造体２００が更新された後、インクリメンタル仮想コピー処理１１６は、ソース変更記録構造体２１０内のインジケータを更新し、最後のインクリメンタル仮想コピー動作以降にソース・データ・ブロックが更新されなかったことを示す。本発明の特定の実施においては、ソース変更記録構造体２１０内の全てのインジケータがゼロに設定される。ブロック４３０において、インクリメンタル仮想コピー処理１１６は、ターゲット変更記録構造体２２０内のインジケータを更新し、最後のインクリメンタル仮想コピー動作以降にターゲット・データ・ブロックが更新されなかったことを示す。本発明の特定の実施においては、ターゲット変更記録構造体２２０内の全てのインジケータがゼロに設定される。
【００７９】
図６は、本発明の特定の実施に従って書き込み動作を処理するための、書き込み処理１１４において実施される論理を示す。ブロック５００において、制御は、データ・ブロック書き込み要求を受信する書き込み処理１１４で開始する。ブロック５２０において、書き込み処理１１４が、データ・ブロックがインクリメンタル仮想コピー関連性にあるかどうかを判断する。データ・ブロックがインクリメンタル仮想コピー関連性にある場合には、処理はブロック５３０に続き、他の場合には、処理はブロック５６０に続く。ブロック５３０において、書き込み処理１１４は、データ・ブロックがターゲット格納部１３０内にあるかどうかを判断する。データ・ブロックがターゲット格納部１３０内にある場合には、処理はブロック５４０に続き、他の場合には、処理はブロック５５０に続く。
【００８０】
ブロック５４０において、ターゲット変更記録構造体２２０内のデータ・ブロックについてのインジケータが更新され、最後のインクリメンタル仮想コピー動作以降にターゲット・データ・ブロックが変更されたことを示す。本発明の特定の実施においては、ターゲット変更記録構造体２２０内のインジケータが１に設定される。ブロック５５０において、ソース変更記録構造体２１０内のデータ・ブロックについてのインジケータが更新され、最後のインクリメンタル仮想コピー動作以降にソース・データ・ブロックが変更されたことを示す。本発明の特定の実施においては、ソース変更記録構造体２１０内のインジケータが１に設定される。ブロック５６０においては、書き込み動作は、書き込み処理１１４によって実行される。
【００８１】
図７は、本発明の特定の実施に従って読み取り動作を処理するための、読み取り処理１１２において実施される論理を示す。ブロック６００において、制御は、データ・ブロック読み取り要求の受信で開始する。ブロック６２０において、読み取り処理１１２が、データ・ブロックがインクリメンタル仮想コピー関連性にあるターゲットであるかどうかを判断する。データ・ブロックがインクリメンタル仮想コピー関連性にあるターゲットである場合には、処理はブロック６３０に続き、他の場合には、処理はブロック６６０に続く。ブロック６３０において、読み取り処理は、データ・ブロックについてのインジケータがターゲット・コピー構造体において設定されるかどうかを判断し、そのデータがソース格納部１２０から読み取られることを示す。データ・ブロックについてのインジケータがターゲット・コピー構造体において設定される場合には、処理はブロック６４０に続き、他の場合には、処理はブロック６５０に続く。
【００８２】
ブロック６４０において、読み取り処理１１２は、ソース格納部１２０からデータ・ブロックを読み取る（すなわち、ステージする）。ブロック６５０において、読み取り処理１１２は、ターゲット格納部１３０からデータ・ブロックを読み取る（すなわち、ステージする）。ブロック６６０において、読み取り処理１１２は、データ・ブロックの通常の読み取りを実行する。
【００８３】
図８は、本発明の特定の実施に従ったバックグラウンド・コピー処理を示す。ブロック７００において、制御は、データ・ブロックをコピーすべき時であるかどうかの判断で開始する。ブロック７１０において、データ・ブロックについてのターゲット・コピー構造体内のインジケータが、データ・ブロックがコピーされなかったことを示しているかどうかを判断する。データ・ブロックがコピーされなかったことを示している場合には、処理はブロック７３０に続き、他の場合には、処理はブロック７２０に続く。ブロック７２０において、次のデータ・ブロックを処理することができ、或いは処理される他のデータ・ブロックがない場合には、この論理を終了する。
【００８４】
ブロック７３０において、図７の論理に従ってデータ・ブロックが読み取られる。ブロック７４０において、データ・ブロックは、ターゲット格納部１３０にデステージされる。ブロック７５０において、データ・ブロックのためのターゲット・コピー構造体２００内のインジケータが更新され、データ・ブロックがコピーされたことを示す。本発明の特定の実施において、ターゲット・コピー構造体２００内のインジケータはゼロに設定される。
【００８５】
このように、本発明の特定の実施において、インクリメンタル仮想コピー動作は、書き込み（すなわち、更新）を監視し、即時仮想コピー関係に参加するボリュームのトラックへの変更を記録することによって達成される。最初の即時仮想コピー動作の後、ソース・ボリューム全体をコピーすることなく、ソース・ボリューム又はターゲット・ボリュームのいずれかにおいて更新されたトラックを、ソース・ボリュームからターゲット・ボリュームにコピーすることができる。
【００８６】
Ｅｎｔｅｒｐｒｉｓｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ、ＦｌａｓｈＣｏｐｙ及び３９９０は、米国及び／又は他の国におけるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社の商標又はコモンロー上の商標である。
【００８７】
付加的な実施の詳細
インクリメンタル仮想コピーのための述べられた技術は、方法、装置、又は製品としてし、ソフトウェア、ファームウェア、ハードウェア、又はこれらのあらゆる組み合わせを生産するための標準的なプログラミング、及び／又は、工学技術を用いて実施することができる。ここで用いる「製品」という用語は、ハードウェア論理（例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）など）において実施されるコード又は論理、又は、磁気格納媒体（例えば、ハードディスク・ドライブ、フロッピィ・ディスク、テープなど）のようなコンピュータ可読媒体、光学格納（ＣＤＲＯＭ、光ディスクなど）、揮発性及び不揮発性メモリ・デバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、ファームウェア、プログラマブル論理など）を指す。コンピュータ可読媒体におけるコードは、さらに、伝送媒体を通して、又は、ネットワーク上のファイル・サーバからアクセス可能とすることができる。このような場合においては、コードが実施される製品は、ネットワーク伝送ライン、ワイヤレス伝送媒体、空気を通って伝搬する信号、無線波、赤外線信号等などの伝送媒体を含むことができる。したがって、「製品」は、コードが具現される媒体を含むことができる。さらに、「製品」は、コードが具現され、処理され、実行されるハードウェア・コンポーネントとソフトウェア・コンポーネントの組み合わせを含むことができる。もちろん、当業者であれば、本発明の範囲から逸脱することなく、多くの修正をこの構成に行うことができ、製品は、当該技術分野に知られる媒体を支持するあらゆる情報を含むことができることを認識するであろう。
【００８８】
図４から図８までの論理は、特定の順番で生じる特定の動作を説明する。代替的な実施においては、特定の論理動作は、異なる順番で実行してもよいし、又は修正或いは除去してもよい。さらに、上述の論理に動作を付加することができ、依然として述べられた実施に適合することができる。さらに、ここに述べられる動作は、順次に生じてもよいし、又は、特定の動作が平行して処理されてもよく、或いは単一の処理によって実行されるものとして説明された動作を分散処理によって実行してもよい。
【００８９】
図４から図８までの図示された論理は、ソフトウェア、ハードウェア、プログラマブル及び非プログラマブル・ゲート・アレイ論理、或いはハードウェア、ソフトウェア、又はゲート・アレイ論理のあらゆる組み合わせにおいて実施することができる。
【００９０】
図９は、本発明の特定の実施に従って用いることができるコンピュータ・システムのアーキテクチャを示す。格納コントローラ１００及び／又はホスト１４０は、コンピュータ・アーキテクチャ８００を実装することができる。コンピュータ・アーキテクチャ８００は、プロセッサ８０２（例えば、マイクロプロセッサ）、メモリ８０４（例えば、揮発性メモリ・デバイス）、及び格納部８１０（例えば、磁気ディスク・ドライブ、光ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの不揮発性格納部）を実装することができる。メモリ８０４において、オペレーティング・システム８０５を実行することができる。格納部８１０は、内蔵式格納デバイス、或いは取付け式格納部又はネットワーク・アクセス可能な格納部を含むこともできる。当該技術分野に知られている方法で、格納部８１０内のコンピュータ・プログラム８０６をメモリ８０４に読み込み、プロセッサ８０２によって実行することができる。アーキテクチャは、ネットワークとの通信を可能にするネットワーク・カード８０８をさらに含む。プロセッサ８０２にユーザ入力を提供するために、入力デバイス８１２が用いられ、この入力デバイス８１２は、キーボード、マウス、ペン・スタイラス、マイクロフォン、タッチ・センシティブ表示スクリーン、又はあらゆる他の当該技術分野に知られる作動又は入力機構を含むことができる。出力デバイス８１４は、プロセッサ８０２又は表示モニタ、プリンタ、格納部などの他のコンポーネントから伝送される情報をレンダリングすることができる。コンピュータ・システムのコンピュータ・アーキテクチャ８００は、図示されたものより少ないコンポーネントを含んでもよく、ここに図示されない付加的なコンポーネントを含んでもよく、或いは図示されたコンポーネントと付加的なコンポーネントの何らかの組み合わせを含んでもよい。
【００９１】
コンピュータ・アーキテクチャ８００は、メインフレーム、サーバ、パーソナル・コンピュータ、ワークステーション、ラップトップ、手持ち式コンピュータ、テレフォニー・デバイス、ネットワーク・アプライアンス、仮想化デバイス、格納コントローラ等といった当該技術分野に知られている、あらゆるコンピューティング・デバイスを含むことができる。当該技術分野に知られている、あらゆるプロセッサ８０２及びオペレーティング・システム８０５を用いることができる。
【００９２】
本発明の実施の上記の説明は、例証及び説明のために与えられたものである。本発明の実施の上記の説明は、網羅的なものであること、本発明を開示された正確な形態に制限することも意図していない。上記の教示に照らして多くの修正及び変形が可能である。本発明の範囲は、この詳細な説明ではなく、ここに添付された特許請求の範囲によって制限されることが意図されている。上記の仕様、例、及びデータは、本発明の構成の製造及び使用を十分に説明するものである。本発明の精神及び範囲から逸脱することなく、本発明の多くの実施を行うことができるので、本発明は、上記の添付の特許請求の範囲内にある。
【図面の簡単な説明】
【００９３】
【図１】本発明の特定の実施に従ったコンピューティング環境をブロック図で示す。
【図２】本発明の特定の実施に従ったコンピューティング環境をブロック図で示す。
【図３】本発明の特定の実施に従った種々の構造体を示す。
【図４】本発明の特定の実施に従って構造体を更新するための論理を示す。
【図５】本発明の特定の実施に従ってインクリメンタル仮想コピー動作を実行するための論理を示す。
【図６】本発明の特定の実施に従って書き込み動作を処理するための、書き込み処理において実施される論理を示す。
【図７】本発明の特定の実施に従って読み取り動作を処理するための、読み取り処理において実施される論理を示す。
【図８】本発明の特定の実施に従ったバックグラウンド・コピー処理を示す。
【図９】本発明の特定の実施に従って用い得るコンピュータ・システムのアーキテクチャを示す。
【図１】
0004398463.tif 000002
【図２】
0004398463.tif 000003
【図３】
0004398463.tif 000004
【図４】
0004398463.tif 000005
【図５】
0004398463.tif 000006
【図６】
0004398463.tif 000007
【図７】
0004398463.tif 000008
【図８】
0004398463.tif 000009
【図９】
0004398463.tif 000010