以下の発明を実施するための形態は、本願の図及び実施形態の追加の詳細を示す。参照番号及び図の間で冗長な要素の説明は、明確にするために省略されている。説明を通して使用される用語は例として示され、制限的となることを意図していない。例えば、用語「自動的な」の使用は、完全に自動的な実施形態、又は本願の実施形態を実施する当業者の所望される実施に応じて、ユーザ若しくは管理者の実施形態の特定の態様に対する制御を必要とする半自動的な実施形態を含む場合がある。また、用語「要求」及び「動作」は交互に用いられてよい。
ビジネスに不可欠な環境から分析環境にデータを複製することは長い時間を要する。さらに、ビジネスに不可欠なアプリケーションによって作成されるデータは、多くの場合、ビジネスに不可欠な環境を離れてはならない機密情報を含む。サーバ側のリモート複製対(リプリケーションペア)の場合、複製はビジネスに不可欠なアプリケーションの性能に影響を与える。実施形態は、異なる環境の間で選択的に及びアプリケーションの性能に影響を与えることなく、データを複製できるようにする方法及び装置を提供することを対象とする。
実施形態は、1つ以上のボリュームの領域のサブセットを別のストレージシステムに複製するストレージシステムを提供することによって関連技術の解決策の問題に対応する。実施形態は、1つ以上のボリュームの領域のどのサブセットが別のストレージシステムに複製されるのを許可されているのかを管理するストレージシステムをさらに助長する。実施形態は、1つ以上のボリュームの領域のサブセットの一貫した遠隔スナップショットを作成するストレージシステムをさらに含み、1つ以上のボリュームのサブセットを別のストレージシステムに複製するストレージシステムを含む。
第1の実施形態では、ストレージシステムは、ユーザによって指定されるデータベーステーブルの識別子(ID)に基づいて別のストレージシステムに1つ以上のボリュームの領域のサブセットを複製する。
図1は、実施形態の方法及び装置が適用され得るシステムの物理構成の例を示す。
1つ以上のサーバ1A及び1つのストレージシステム2Aは、ストレージエリアネットワーク(SAN)3Aを介して互いに接続される。1つ以上のサーバ1B及び1つのストレージシステム2Bは、SAN 3Bを介して互いに接続される。ストレージシステム2A及びストレージシステム2Bは、SAN 3Cを介して互いに接続される。システムのある考えられる構成では、サーバ1A及びストレージシステム2Aは1つのデータセンタにある。一方、サーバ1B及びストレージシステム2Bは別のデータセンタにある。システムの別の考えられる構成では、サーバ1A及びストレージシステム2Aはデータセンタの一部分にある。一方、サーバ1B及びストレージシステム2Bは同じデータセンタの別の部分にある。
サーバ1A、ストレージシステム2A、サーバ1B、及びストレージシステム2Bは、ローカルエリアネットワーク(LAN)4を介して互いに通信で接続される。代わりに、サーバ1A及びストレージシステムは、LANを介して互いに接続され、サーバ1B及びストレージシステム2Bは、異なるLANを介して互いに接続される。
サーバ1Aは、1つ以上の中央演算処理装置(CPU)11A、メモリ12A、1つ以上のストレージデバイス13A、1つ以上のSANポート14A、及び1つ以上のLANポート15Aを含む場合がある。CPUは、1つ以上の物理プロセッサの形をとる場合がある。CPU11Aはストレージシステム2Aにデータを記憶し、メモリ12Aをワーキングメモリとして使用する1つ以上のアプリケーションプログラムを実行する。メモリ12Aは、ダイナミックランダムアクセスメモリ(DRAM)、不揮発性メモリ(NVM)、又は任意の他のランダムアクセスメモリデバイスであってよい。ストレージデバイス13Aは、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、又は任意の他の固定ストレージデバイスであってよい。SANポート14Aは、SAN 3Aにサーバ1Aを接続する。LANポート15Aは、LAN4にサーバ1Aを接続する。CPU11Aは、ストレージシステム2Aのストレージボリュームに記憶される1つ以上のデータベーステーブルに対するユーザからの複製要求を処理し、例えば、図8に示されるように、ストレージシステム2Aのストレージボリュームの1つ以上のデータベーステーブルの位置に基づいてデバイス識別子及びアドレス範囲を決定するように構成されてよい。
CPU11Aは、デバイス識別子からストレージシステム1Aのストレージボリュームのボリューム識別子を決定し、ボリューム識別子から、ストレージシステム2Bの複数のストレージボリュームの第2のターゲットボリュームに複製されるストレージシステム2Aのストレージボリュームから第1のソースボリュームを識別し、図8に示されるように、第2のボリュームに第1のボリュームを複製するコマンドを第1のストレージシステムに発行する。また、CPU11Aは、図9及び図23に示されるように、ストレージシステム1Aにストレージシステム1Aのストレージボリュームの1つ以上に対応する複製情報更新要求を送信するように構成される。
サーバ1Bは、1つ以上のCPU11B、メモリ12B、1つ以上のストレージデバイス13B、1つ以上のSANポート14B、及び1つ以上のLANポート15Bを含む場合がある。CPU11Bは、ストレージシステム2Bにデータを記憶し、ワーキングメモリとしてメモリ12Bを使用する1つ以上のアプリケーションプログラムを実行する。メモリ12Bは、DRAM、NVM、又は任意の他のランダムアクセスメモリデバイスであってよい。ストレージデバイス13Bは、HDD、SSD、又は任意の他の固定ストレージデバイスであってよい。SANポート14Bは、SAN3Bにサーバ1Bを接続する。LANポート15Bは、LAN4にサーバ1Bを接続する。
ストレージシステム2Aは、1つ以上のCPU21A、メモリ22A、1つ以上のストレージデバイス23A、1つ以上のSANポート24A、及び1つ以上のLANポート25Aを含む場合がある。CPU21Aは、ワーキングメモリとしてメモリ22Aの一部を使用し、サーバ1Aから受信されるI/O要求を処理する1つ以上のプログラムを実行し、1つ以上の物理プロセッサの形をとる場合がある。メモリ22Aは、DRAM、NVM、又は任意の他のランダムアクセスメモリデバイスであってよい。ストレージデバイス23Aは、HDD、SSD、又は任意の他の固定ストレージデバイスであってよい。SANポート24Aは、SAN3Aにストレージシステム2Aを接続する。LANポート25Aは、LAN4にストレージシステム2Aを接続する。ストレージシステム2Aは、それぞれが複数の領域を含む複数のストレージボリュームを管理してよい。CPU21Aは、第2のソースボリュームに第1のソースボリュームを複製するコマンドの受信のために、メモリ22Aにサーバ1Aによって構成された複製情報を記憶するように構成されてよく、複製情報は、第1のソースボリュームの複数の領域のそれぞれについて、例えば図6に示されるように、複数の領域のそれぞれが第2のターゲットボリュームに複製可能であるか、それとも第2のボリュームに複製可能ではないかを示し、CPU21Aは、例えば図11に示されるように、第2のターゲットボリュームに、複製情報によって第2のボリュームに複製可能として示される第1のソースボリュームの複数の領域のうちの第1の領域を複製するように構成されてよい。実施形態では、複数の領域のそれぞれが、図15に示されるように複製されることを許可されているのか、それとも複製されることを許可されていないのかの許可情報が提供されてもよく、複製されることを許可されている領域だけが、図19に従って複製可能となるように構成できる。
また、CPU21Aは、例えば図9及び図24において示されるように、サーバ1Aからの複製情報更新要求に応えてストレージボリュームの1つ以上について複製情報を更新するように構成されてもよい。
メモリ22Aは、図6に示されるように、第1のソースボリュームの複数の領域と第2のターゲットボリュームとの間の相違点を示す相違点情報を記憶するように構成できる。CPU21Aは、図11に示されるように、第2のターゲットボリュームに相違点情報によって異なっているとして示されている第1のソースボリュームの複数の領域のうちの第2の領域を複製するように構成できる。
ストレージシステム2Bは、1つ以上のCPU21B、メモリ22B、1つ以上のストレージデバイス23B、1つ以上のSANポート24B、及び1つ以上のLANポート25Bを含む場合がある。ストレージシステム2Bは、2つの相違点を除き、ストレージシステム2Aと同じように機能する。一方の相違点は、CPU21Bが、サーバ1Aからの代わりに、サーバ1Bから受信される入出力(I/O)要求を処理するプログラムを実行する点である。他方の相違点は、SANポート24Bが、SAN3Aに対しての代わりにSAN3Bに対してストレージシステム2Bを接続する点である。
SAN3A、SAN3B、及びSAN3Cのそれぞれは、イーサネットネットワーク、ファイバチャネルネットワーク、又はI/O要求を送信するために使用できる任意の他のネットワークである。サーバ1Aは、ストレージシステム2AにI/O要求を送信するためにSAN3Aを使用する。サーバ1Bは、ストレージシステム2BにI/O要求を送信するためにSAN3Bを使用する。I/O要求は、読取り要求及び書込み要求を含む。ストレージシステム2Aは、ストレージシステム2Bにデータを複製するためにSAN3Cを使用する。
LAN4は、イーサネットネットワーク又は管理要求を送信するために使用できる任意の他のネットワークである。サーバ1Aは、ストレージシステム2Aに管理要求を送信するためにLAN4を使用する。サーバ1Bは、ストレージシステム2Aに及びストレージシステム2Bに管理要求を送信するためにLAN4を使用する。管理要求は、ストレージシステム2Aとストレージシステム2Bとの間でデータ複製を管理するための要求を含む。
図2は、実施形態の方法及び装置が適用され得るシステムの代替構成を示す。物理構成はストレージシステム2Bが1つ以上のサーバ1Cによって置換されることを除き、基本的に図1の物理構成と同じである。
サーバ1Aは、1つ以上のアプリケーションバーチャルマシン(VM)5Aを実行する。アプリケーションVM5Aは、プログラムを実行するためにサーバ1Aのリソースの一部を使用するバーチャルマシンである。アプリケーションVM5Aは、図1のサーバ1Aと同じように論理的に機能し、ストレージシステム2Aにデータを記憶する1つ以上のアプリケーションプログラムを実行する。
サーバ1Bは、1つ以上のアプリケーションVM5Bを実行する。アプリケーションVM 5Bは、プログラムを実行するためにサーバ1Bのリソースの一部を使用するバーチャルマシンである。アプリケーションVM5Bは、図1のサーバ1Bと同じように論理的に機能し、ストレージシステム2Bにデータを記憶する1つ以上のアプリケーションプログラムを実行する。
サーバ1Cは、サーバ1Aと同じ物理構成を有する。サーバ1Bは、1つ以上のストレージVM5Cを実行する。ストレージVM5Cは、図1のストレージシステム2Bと同じように論理的に機能し、アプリケーションVM5Bから受信されるI/O要求を処理する。1つのサーバ1Cで又は複数のサーバ1Cで実行中の複数のストレージVM5Cは、図1のストレージシステム2Bと同じように集合的に機能してよい。
別の代替構成では、ストレージシステム2Aは、1つ以上のバーチャルマシンを実行する1つ以上のサーバによって置換される。1つ以上のバーチャルマシンは、アプリケーションVM 5Aから受信されるI/O要求を処理する図1のストレージシステム2Aと同じように論理的に機能する。
さらに別の代替構成では、アプリケーションVM5Bは、サーバ1Bの代わりにサーバ1Cを実行する。この構成では、アプリケーションVM5Bは、SAN3Bの代わりにサーバ1Cの内部ネットワークを使用し、ストレージVM5CにI/O要求を送信する。
図3は、実施形態に係るメモリ12A、メモリ12B、メモリ22A、及びメモリ22Bの論理レイアウトを示す。メモリ12Aは、アプリケーションプログラム120A、データベース管理プログラム121A、ストレージ管理プログラム122A、及びデバイス/ボリューム変換テーブル123Aを含む。データベース管理プログラム121Aは、アプリケーションプログラム120Aにトランザクションデータベースを提供する。アプリケーションプログラム120Aは、データベース管理プログラム121Aによって提供されるテーブルからデータをロードし、該テーブルにデータを記憶する。データベース管理プログラム121Aは、ストレージシステム2Aに読取り要求及び書込み要求を送信することによって、ストレージシステム2Aからテーブルデータをロードし、ストレージシステム2Aにテーブルデータを記憶する。
ストレージ管理プログラム122Aは、ストレージシステム2Aを管理する。ストレージ管理プログラム122Aは、データベース管理プログラム121Aとして同じサーバ1Aで、又はデータベース管理プログラム121Aとして異なるサーバ1Aで実行してよい。メモリ12Bは、アプリケーションプログラム120B、データベース管理プログラム121B、ストレージ管理プログラム122B、及びデバイス/ボリューム変換テーブル123Bを含む。データベース管理プログラム121Bは、アプリケーションプログラム120Bにトランザクションデータベースを提供する。アプリケーションプログラム120Bは、データベース管理プログラム121Bによって提供されるテーブルからデータをロードし、該テーブルにデータを記憶する。データベース管理プログラム121Bは、ストレージシステム2Bに読取り要求及び書込み要求を送信することによって、ストレージシステム2Bからテーブルデータをロードし、ストレージシステム2Bにデータを記憶する。
ストレージ管理プログラム122Bは、ストレージシステム2A及びストレージシステム2Bを管理する。ストレージ管理プログラム122Bは、データベース管理プログラム121Bとしてデータベース管理プログラム121Bで又はデータベース管理プログラム121Bとして異なるサーバ1Bで実行してよい。メモリ22Aは、I/O処理プログラム220A、複製管理プログラム221A、対(ペア)管理テーブル222A、及びキャッシュ領域223Aを含む。I/O処理プログラム220Aは、ストレージシステム2Aがサーバ1AからI/O要求を受信するとき、CPU 21Aによって実行される。キャッシュ領域223Aは、ストレージデバイス23Aから読み取られている又はストレージデバイス23Aに書き込まれているデータを一時的に記憶するために、I/O処理プログラム220Aによって使用される。複製管理プログラム222Aは、ストレージシステム2Aが、サーバ1A又はサーバ1Bから複製管理要求を受信するとき、CPU21Aによって実行される。
メモリ22Bは、I/O処理プログラム220B、複製管理プログラム221B、対(ペア)管理テーブル222B、及びキャッシュ領域223Bを含む。I/O処理プログラム220Bは、ストレージシステム2Bがサーバ1BからI/O要求を受信するとき、CPU21Bによって実行される。キャッシュ領域223Bは、ストレージデバイス23Bから読み取られる又はストレージデバイス23Bに書き込まれるデータを一時的に記憶するために、I/O処理プログラムによって使用される。複製管理プログラム221Bは、ストレージシステム2Bがサーバ1Bから複製管理要求を受信するとき、CPU21Bによって実行される。
図4は、実施形態に係るデータフロー概要を示す。データベース管理プログラム121Aは、ストレージシステム1Aによって提供される1つ以上のシステムデータボリューム260A、1つ以上のメタデータボリューム261A、及び1つ以上のテーブルデータボリューム262Aに記憶されたデータを使用する。ストレージシステム1Aは、ストレージデバイス23Aにシステムデータボリューム260A、テーブルデータボリューム261A、及びメタデータボリューム262Aに書き込まれたデータを記憶する。データベース管理プログラム121Aは、システムデータボリューム260Aにシステムデータを記憶する。システムデータは、データベースへのログインのためのユーザID及びパスワード、データベースのサイズを制御するためのパラメータ、及びデータベースの性能を制御するためのパラメータ等の情報を含む。
データベース管理プログラム121Aは、テーブルデータボリューム261Aにそのテーブルデータを記憶する。各テーブルデータボリューム261Aは、1つのテーブルのための又は複数のテーブルのためのデータを保持してよい。1つのテーブルのためのデータは、複数のテーブルデータボリューム261Aにわたって分散されてよい。データベース管理プログラム121Aは、テーブルデータボリューム261Aに記憶されるテーブルデータのためのメタデータをメタデータボリューム262Aに記憶する。メタデータは、例えばテーブルデータボリューム261Aの中の各テーブルの位置を含む。
テーブルデータ及びメタデータに別々のボリュームを使用する代わりに、データベース管理プログラム121Aは、テーブルデータボリューム261Aにテーブルデータとメタデータの両方を記憶してよい。データベース管理プログラム121Aは、データベースのトランザクションログデータを記憶するために、ストレージシステム1Aによって提供される1つ以上の追加のボリュームを使用してよい。データベース管理プログラム121Aは、トランザクションをロールバック又はロールフォワードするためにトランザクションを使用する。データベース管理プログラム121Aは、トランザクションログデータのために追加のボリュームを使用する代わりに、テーブルデータボリューム261A又はメタデータボリューム262Aにトランザクションログデータを記憶してよい。
データベース管理プログラム121Aは、ストレージシステム1Aの代わりにストレージデバイス13Aにシステムデータを記憶してよい。データベース管理プログラム121Bは、ストレージシステム1Bによって提供される、1つ以上のシステムデータボリューム260B、1つ以上のメタデータボリューム261B、及び1つ以上のテーブルデータボリューム262Bに記憶されたデータを使用する。ストレージシステム1Bは、ストレージデバイス23Bにシステムデータボリューム260B、テーブルデータボリューム261B、及びメタデータボリューム262Bに書き込まれたデータを記憶する。
データベース管理プログラム12Bは、システムデータボリューム260Bにそのシステムデータを記憶する。システムデータは、システムデータボリューム260Aに記憶されるシステムデータと同種の情報を含む。しかしながら、システムデータボリューム260Aに及びシステムデータボリューム260Bに記憶された情報は異なる場合がある。例えば、データベース管理プログラム121A及びデータベース管理プログラム121Bが異なるユーザによって使用され、異なるユーザのユーザID及びパスワードが、システムデータボリューム260A及びシステムデータボリューム260Bに記憶されることになる。
データベース管理プログラム121Bは、テーブルデータボリューム261Bにそのテーブルデータを記憶する。ストレージシステム2A及びストレージシステム2Bでのデータ複製機能は、テーブルデータボリューム261Aからテーブルデータボリューム261Bにデータを複製し、テーブルデータボリューム261Aに記憶されるデータのすべて又は一部をテーブルデータボリューム261Bで利用できるようにする。ストレージシステム2Bは、オンデマンドでストレージデバイス23Bからテーブルデータボリューム261Bに容量を割り当ててよい。オンデマンドで容量を割り当てることによって、ストレージデバイス23Bで使用される容量は、テーブルデータボリューム261Aからテーブルデータボリューム261Bに複製されるデータのサイズに制限される。
データベース管理プログラム121Bは、メタデータボリューム262Bに、テーブルデータボリューム261Bに記憶されたテーブルデータのためのメタデータを記憶する。ストレージシステム2A及びストレージシステム2Bでのデータ複製機能は、メタデータボリューム262Aからメタデータボリューム262Bにデータを複製し、メタデータボリューム262Aに記憶されるデータのすべて又は一部をメタデータボリューム262Bで利用できるようにする。
図5は、実施形態に従って、デバイス/ボリューム変換テーブル123A及びデバイス/ボリューム変換テーブル123Bの論理レイアウトを示す。デバイス/ボリューム変換テーブル123Aは、サーバ1Aによって管理されるデバイスのIDをストレージシステム2Aの対応するボリュームのIDに変換するためにストレージ管理プログラム122Aによって使用される。デバイス/ボリューム変換テーブル123Aは、それぞれがサーバ1Aによって認識されたデバイスに対応する複数のエントリを含む場合がある。各エントリは、デバイスID1230A、ストレージシステムID1231A、及びボリュームID1232Aを含む場合がある。デバイスID1230Aは、サーバ1Aによって管理されるデバイスを識別するために使用される。デバイスID1230Aの例の値は「/dev/sda」及び「/dev/sdb」である。
ストレージシステムID1231Aは、デバイスID1230Aによって識別されるデバイスとしてサーバ1Aによって認識されるボリュームを提供するストレージシステムを識別するために使用される。ストレージシステムID1231Aの例の値は、0及び1である。ボリュームID1232Aは、デバイスID1230Aによって識別されるデバイスとしてサーバ1Aによって認識され、ストレージシステムID1232Aによって識別されるストレージシステムの中のボリュームを識別するために使用される。ボリュームID1232Aの例の値は100及び200である。
デバイス/ボリューム変換テーブル123Bは、サーバ1Bによって管理されるデバイスのIDをストレージシステム2A又はストレージシステム2Bの対応するボリュームのIDに変換するために、ストレージ管理プログラム122Bによって使用される。デバイス/ボリューム変換テーブル123Bの論理レイアウトは、デバイスID1230Bが、サーバ1Aの代わりにサーバ1Bによって管理されるデバイスを識別するために使用されるのを除き、基本的にデバイス/ボリューム変換テーブル123Aの論理レイアウトと同じである。
図6は、対(ペア)管理テーブル222A及び対(ペア)管理テーブル222Bの論理レイアウトを示す。対(ペア)管理テーブル222Aは、ストレージシステム2Aによって提供されるソースボリュームからストレージシステム2Bによって提供される宛先(デスティネーション)ボリュームへの複製を管理し、制御するために複製管理プログラム221Aによって使用される。対(ペア)管理テーブル222Aは、それぞれが複製対(リプリケーションペア)に対応する複数のエントリを含む場合がある。複製対(リプリケーションペア)は、データがその間で複製されるボリュームの対(ペア)である。各エントリは、対(ペア)ID2220A、ボリュームタイプ2221A、リモートシステムID2222A、ソースボリュームID2223A、宛先(デスティネーション)ボリュームID2224A、対(ペア)状態2225A、複製ビットマップ2226A、相違点ビットマップ2227A、及び帯域幅制限2228Aを含む場合がある。対(ペア)ID2220Aは、ストレージシステム2Aの中で複製対(リプリケーションペア)を内部で識別するために使用される。対(ペア)ID2231Aの例の値は、0、1、2、及び3である。
ボリュームタイプ2221Aは、ストレージシステム2Aによって提供される複製対(リプリケーションペア)のボリュームが複製のソースであるのか、それとも宛先(デスティネーション)であるのかを識別するために使用される。ボリュームタイプ2232Aの例の値は、「ソース」及び「宛先(デスティネーション)」である。「ソース」は、ボリュームがソースであることを示し、「宛先(デスティネーション)」は、ボリュームが宛先(デスティネーション)であることを示す。リモートシステムID2222Aは、ストレージシステム2Bを識別するために使用される。リモートシステムID2222Aの例の値は、0、1、及び2である。
ソースボリュームID2223Aは、ソースストレージシステムの中で複製のソースボリュームを識別するために使用される。ソースボリュームID2223Aの例の値は、100、200、300、及び400である。宛先(デスティネーション)ボリュームID2224Aは、宛先(デスティネーション)記憶システムの中で複製の宛先(デスティネーション)ボリュームを識別するために使用される。宛先(デスティネーション)ボリュームIDの例の値は、100及び200である。対(ペア)状態2225Aは、複製対(リプリケーションペア)の状態を管理し、I/O要求の処理を制御するために使用される。対(ペア)の状態2236Aの例の値は、「SMPL」、「COPY」、「PAIR」、及び「SUSP」である。「SMPL」は、複製対(リプリケーションペアが定義されているが、データがまだ複製されていないことを示す。「COPY」は、複製対(リプリケーションペア)が同期する過程にあることを示す。「PAIR」は、複製対(リプリケーションペア)が同期することを示す。「SUSP」は、複製対(リプリケーションペア)が一時停止されることを示す。
複製ビットマップ2226Aは、宛先(デスティネーション)ボリュームに複製されるソースボリュームの領域を管理するために使用される。複製ビットマップ2237Aは、ソースボリュームの各領域のために情報を記憶する。各領域のサイズは、例えば、256キロバイト(KB)又は42メガバイト(MB)である。各領域のために記憶された情報の例の値は、「オン」及び「オフ」である。「オン」は、領域が複製されることを示し、「オフ」は、領域が複製されないことを示す。
相違点ビットマップ2227Aは、宛先(デスティネーション)ボリュームと同期していないソースボリュームの領域を管理するために使用される。相違点ビットマップ2227Aは、ソースボリュームの各領域のための情報を記憶する。各領域のサイズは、例えば256KB又は42MBである。各領域のために記憶された情報の例の値は、「オン」及び「オフ」である。「オン」は、領域が同期していないことを示し、「オフ」は領域が同期していることを示す。
帯域幅制限2228Aは、データがソースボリュームからターゲットボリュームに複製される速度を制限するために使用される。帯域幅制限2228Aの例の値は、「なし」、「10%」、「1MB/秒」、及び「10MB/秒」である。「なし」は、制限がないことを示す。「10%」は、制限が最大速度の10%であることを示す。」1MB/秒」及び「10MB/秒」は、制限がそれぞれ1MB/秒及び10MB/秒であることを示す。
対(ペア)管理テーブル222Bは、ストレージシステム2Aによって提供されるソースボリュームからストレージシステム2Bによって提供される宛先(デスティネーション)ボリュームへの複製を管理し、制御するために複製管理プログラム221Bによって使用される。対(ペア)管理テーブル222Bの論理レイアウトは、以下の相違点を除き、基本的に対(ペア)管理テーブル222Aと同じである。つまり、対ID2220Bは、ストレージシステム2Aの代わりにストレージシステム2Bの中で複製対(リプリケーションペア)を内部で識別するために使用される。ボリュームタイプ2221Bは、ストレージシステム2Aの代わりにストレージシステム2Bによって提供される複製対(リプリケーションペア)のボリュームが複製のソースであるのか、それとも宛先(デスティネーション)であるのかを識別するために使用され、リモートシステムID2222Bは、ストレージシステム2Bの代わりにストレージシステム2Aを識別するために使用される。
図7は、実施形態に係る、複製管理プログラム221Aによる対(ペア)作成のフローチャートを示す。具体的には、図7は、ストレージシステム2Aがストレージ管理プログラム122Aから対(ペア)作成要求を受信するとき、複製管理プログラム221Aによって実行される対(ペア)作成のフローを示す。対(ペア)作成要求は、宛先(デスティネーション)ストレージシステムのIDとしてストレージシステム2BのIDを、ソースボリュームのIDとしてテーブルデータボリューム261AのIDを、及び宛先(デスティネーション)ボリュームのIDとしてテーブルデータボリューム261BのIDを含む。また、対(ペア)作成要求は、複製の速度が制限されるべきかどうか、及び複製の速度がどの程度制限されるべきかを指定するパラメータを含んでもよい。
2つ以上のテーブルデータボリューム261Aは、同数のテーブルデータボリューム261Bに複製されてよい。この場合、ストレージ管理プログラム122Aは、テーブルデータボリューム261A及び対応するテーブルデータボリューム261Bの各対(ペア)に対応する対(ペア)作成要求を送信し、複製管理プログラム221Aは、対(ペア)作成要求ごとに図10に示されるフローを実行する。
6000で、複製管理プログラム221Aは、ストレージ管理プログラム122Aから対(ペア)作成要求を受信する。6001で、複製管理プログラム221Aは、対(ペア)作成要求から宛先(デスティネーション)ストレージシステムのID、ソースボリュームのID、及び宛先(デスティネーション)ボリュームのIDを抽出する。また、複製管理プログラム221Aは、複製の速度が制限されるべきかどうか、及び複製の速度がどの程度制限されるべきかどうかを指定するパラメータを抽出してもよい。6002で、複製管理プログラム221Aは、対(ペア)管理テーブル222Aで新しいエントリを作成する。複製管理プログラム221Aは、新しいエントリの対(ペア)ID2220Aを対(ペア)管理テーブル222Aの任意の他のエンティティの対(ペア)ID2220Aによって使用されていない値に設定する。複製管理プログラム221Aは、新しいエントリのボリュームタイプ2221Aを「ソース」に設定する。複製管理プログラム221Aは、新しいエントリのリモートシステムID222Aを6001で抽出された宛先(デスティネーション)記憶システムのIDに設定する。複製管理プログラム221Aは、新しいエントリのソースボリュームID2224Aを6001で抽出されたソースボリュームのIDに設定する。複製管理プログラム221Aは、新しいエントリの宛先(デスティネーション)ボリュームID2224Aを6001で抽出された宛先(デスティネーション)ボリュームのIDに設定する。複製管理プログラム221Aは、新しいエントリの帯域幅制限2228Aを、複製の速度が制限され、6001で抽出されるべきかどうか、及び複製の速度がどの程度、制限され、6001で抽出されるべきかを指定するパラメータに設定する。
6003で、複製管理プログラム221Aは、6002で作成された新しいエントリの対(ペア)状態2225Aを「SMPL」に設定する。6004で、複製管理プログラム221Aは、各領域に対応する情報を「オフ」に設定することによって、6002で作成された新しいエントリの複製ビットマップ2226Aをクリアする。6005で、複製管理プログラム221Aは、各領域に対応する情報を「オン」に設定することによって、ステップ6002で作成された新しいエントリの相違点ビットマップ2227Aを設定する。
6006で、複製管理プログラム221Aは、ストレージシステム2Bに対(ペア)作成要求を送信する。複製管理プログラム221Aは、対(ペア)作成要求の中に、ストレージシステム2AのID、ソースボリュームのID、及び宛先(デスティネーション)ボリュームのIDを含む。また、複製管理プログラム221Aは、対(ペア)作成要求の中に、複製の速度が制限されるべきかどうか、及び複製の速度がどの程度制限されるべきかを指定するパラメータを含んでもよい。ストレージシステム2Bが対(ペア)作成要求を受信するとき、複製管理プログラム221Bは新しいエントリを作成することによって対(ペア)管理テーブル222Bを更新する。ストレージシステム2Bは、次いでストレージシステム2Aに対(ペア)作成の完了を示す完了応答を送信する。
6007で、複製管理プログラム221Aは、ストレージシステム2Bから対(ペア)作成の完了を示す完了応答を受信する。6008で、複製管理プログラム221Aは、ストレージ管理プログラム122Aに対(ペア)作成の完了を示す完了応答を送信する。
図8は、実施形態に係る、ストレージ管理プログラム122Aによる複製構成のフローチャートを示す。具体的には、図8は、サーバ1Aがユーザ又はユーザによって作成されたプログラムから複製構成要求を受信するとき、ストレージ管理プログラム122Aによって実行される複製構成のフローを示す。複製構成要求は、ストレージシステム2Aからストレージシステム2Bに複製されるテーブルのIDを含む。
6010で、ストレージ管理プログラム122Aは、ユーザから複製構成要求を受信する。6011で、ストレージ管理プログラム122Aは、複製構成要求からテーブルIDを抽出する。6012で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aにテーブル位置要求を送信する。テーブル位置要求は、ステップ6011で抽出されたテーブルIDを含む。データベース管理プログラム121Aがテーブル位置要求を受信するとき、データベース管理プログラム121Aは、ストレージ管理プログラム122Aにテーブル位置要求に対する応答を送信する。応答は、テーブル位置要求に含まれるIDに対応するテーブルの位置を含む。各位置は、例えばサーバ1Aによって管理されるデバイスのID及びデバイスの中の領域を指定するアドレス範囲である。
6013で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aからテーブル位置要求に対する応答を受信する。6014で、ストレージ管理プログラム122Aは、テーブル位置要求に対する応答からデバイスID及びアドレス範囲を抽出する。6015で、ストレージ管理プログラム122Aは、デバイス/ボリューム変換テーブル123Aを調べることによって、6014で抽出された各デバイスIDをストレージシステム2Aの中でボリュームを識別するために使用されるIDに変換する。
6016で、ストレージ管理プログラム122Aは、ストレージシステム2Aに複製ビットマップ構成要求を送信する。複製ビットマップ構成要求は、6015で得られたボリュームID及び6014で抽出されたアドレス範囲を含む。複製ビットマップ構成要求は、ボリュームIDの代わりに、ボリュームに適用された複製対(リプリケーションペア)のIDを含んでよい。アドレス範囲の代わりに、複製ビットマップ構成要求はビットマップを含んでよい。ビットマップは、ストレージ管理プログラム122Aによって6014で抽出されたアドレス範囲から作成される。ビットマップ内の各ビットは、複製ビットマップ2226Aのビットに相当する。ストレージシステム2Aが複製ビットマップ構成要求を受信するとき、ストレージシステム2Aは図9に示されるフローを実行する。
6017で、ストレージ管理プログラム122Aは、ストレージシステム2Aから複製ビットマップ構成の完了を示す完了応答を受信する。6018で、ストレージ管理プログラム122Aは、ユーザ又はユーザによって作成されたプログラムに複製構成の完了を示す完了応答を送信する。
図9は、実装に係る、複製管理プログラム221Aによる複製ビットマップ構成のフローチャートを示す。具体的には、図9は、ストレージシステム2Aが、6016でストレージ管理プログラム221Aによって送信された複製ビットマップ構成要求を受信するとき、複製管理プログラム221Aによって実行される複製ビットマップ構成のフローを示す。
6020で、複製管理プログラム221Aは、ストレージ管理プログラム122Aから複製ビットマップ構成要求を受信する。6021で、複製管理プログラム221Aは、複製ビットマップ構成要求からボリュームID又は対(ペア)ID及びアドレス範囲又はビットマップを抽出する。6022で、複製管理プログラム221Aは、6021で抽出された各ボリュームID又は対(ペア)IDに対応する対(ペア)管理テーブル222Aにエントリを位置付ける。各エントリを位置付けるために、複製管理プログラム221Aは、ソースボリュームID2223Aが抽出されたボリュームIDに等しい、又は対(ペア)ID2220Aが抽出された対(ペア)IDに等しいエントリがないか対(ペア)管理テーブル222Aを検索する。
6023で複製管理プログラム221Aは、6021で抽出されたアドレス範囲に対応する情報を「オン」に設定することによって、ステップ6022で位置付けられた各エントリの複製ビットマップ2226Aを更新する。アドレス範囲の代わりにビットマップが6021で抽出された場合、複製管理プログラム221Aは、6021で抽出されたビットマップを複製ビットマップ2226Aにコピーすることによって、6022で位置付けられた各エントリの複製ビットマップ2226Aを更新する。
6024で、複製管理プログラム221Aは、ストレージシステム2Bに複製ビットマップ更新要求を送信する。6022で位置付けられたエントリごとに、複製ビットマップ更新要求は、位置付けられたエントリのソースボリュームID2223A及び複製ビットマップ2226Aを含む。ストレージシステム2Bが複製ビットマップ更新要求を受信するとき、複製管理プログラム221Bは、複製ビットマップ更新要求に含まれるソースボリュームのIDに対応するエントリを位置付け、位置付けられたエントリの複製ビットマップ2226Bを更新することによって対(ペア)管理テーブル222Bを更新する。複製管理プログラム221Bは、次いでストレージシステム2Aに複製ビットマップ更新の完了を示す完了応答を送信する。
6025で、複製管理プログラム221Aは、ストレージシステム2Bから複製ビットマップ更新の完了を示す完了応答を受信する。6026で、複製管理プログラム221Aは、ストレージ管理プログラム122Aに複製ビットマップ構成の完了を示す完了応答を送信する。
図10は、実施形態に係る、複製管理プログラム221Aによる対(ペア)同期のフローチャートを示す。具体的には、図10は、ストレージシステム2Aがストレージ管理プログラム122Aから対(ペア)同期要求を受信するとき、複製管理プログラム221Aによって実行される対(ペア)同期のフローを示す。対(ペア)同期要求は、同期される複製対(リプリケーションペア)のソースボリュームのIDを含む。対(ペア)同期要求は、ソースボリュームのIDの代わりに同期される複製対(リプリケーションペア)のIDを含んでよい。ストレージ管理プログラム122Aは、対(ペア)作成後に複製対(リプリケーションペア)の初期同期を実行するために、又は対(ペア)一時停止後に複製対(リプリケーションペアの再同期を実行するために対(ペア)同期要求を送信してよい。
6030で、複製管理プログラム221Aは、ストレージ管理プログラム122Aから対(ペア)同期要求を受信する。6031で、複製管理プログラム221Aは、対(ペア)同期要求からボリュームID又は対(ペア)IDを抽出する。6032で、複製管理プログラム221Aは、6031で抽出されたボリュームID又は対(ペア)IDに対応するエントリを対(ペア)管理テーブル222Aに位置付ける。エントリを位置付けるために、複製管理プログラム221Aは、ソースボリュームID2223Aが抽出されたボリュームIDに等しい、又は対(ペア)ID2220Aが抽出された対(ペア)IDに等しいエントリがないか対(ペア)管理テーブル222Aを検索する。
6033で、複製管理プログラム221Aは、6032で位置付けられたエントリの対(ペア)状態2225Aを「COPY」に設定する。6034で、複製管理プログラム221Aは、ストレージシステム2Bに対(ペア)状態変更要求を送信する。対(ペア)状態変更要求は、6032で位置付けられたエントリのソースボリュームID2223Aを含む。ストレージシステム2Bが対(ペア)状態変更要求を受信するとき、複製管理プログラム221Bは、対(ペア)状態変更要求に含まれるソースボリュームのIDに対応するエントリを位置付け、エントリの対(ペア)状態2225Bを「COPY」に変更することによって対(ペア)管理テーブル222Bを更新する。複数管理プログラム221Bは、次いでストレージシステム2Aに対(ペア)状態変更の完了を示す完了応答を送信する。
6035で、複製管理プログラム221Aは、ストレージシステム2Bから対(ペア)状態変更の完了を示す完了応答を受信する。6036で、複製管理プログラム221Aは、図11に示されるフローを実行することによって、複製ビットマップ2226A及び相違点ビットマップ2227Aに基づいてストレージシステム2Bにデータをコピーする。6037で、複製管理プログラム221Aは、6032で位置付けられたエントリの対(ペア)状態2225Aを「PAIR」に設定する。
6038で、複製管理プログラム221Aは、ストレージシステム2Bに対(ペア)状態変更要求を送信する。対(ペア)状態変更要求は、6032で位置付けられたエントリのソースボリュームID2223Aを含む。ストレージシステム2Bが対(ペア)状態変更要求を受信するとき、複製管理プログラム221Bは対(ペア)状態変更要求に含まれるソースボリュームのIDに対応するエントリを位置付け、エントリの対(ペア)状態2225Bを「PAIR」に変更することによって、対(ペア)管理テーブル222Bを更新する。複製管理プログラム221Bは、次いでストレージシステム2Aに対(ペア)状態変更の完了を示す完了応答を送信する。
6039で、複製管理プログラム221Aは、ストレージシステム2Bから対(ペア)状態変更の完了を示す完了応答を受信する。6040で、複製管理プログラム221Aは、ストレージ管理プログラム122Aに対(ペア)同期の完了を示す完了応答を送信する。
図11は、実施形態に係る、複製管理プログラム221Aによるデータコピーのフローチャートを示す。具体的には、図11は、複製管理プログラム221Aによって実行されるデータコピーのフローを示す。このフローは、図10からのフロー6036に一致する。
6050で、複製管理プログラム221Aは、6032でフローに位置付けられたエントリのソースボリュームID2223Aによって識別されるボリュームの領域ごとに6051から6053へのフローを実行するループを開始する。6051で、複製管理プログラム221Aは、領域がコピーされるかどうかを判断する。この判断を下すために、複製管理プログラム221Aは、6032で位置付けられたエントリの複製ビットマップ2226Aを参照し、領域に対応する情報が「オン」に等しいかどうかを判断する。等しい場合(はい)、フローは6052に進み、それ以外の場合(いいえ)、フローは6054に進む。
6052で、複製管理プログラム221Aは、6032で位置付けられたエントリのソースボリュームID2223A及び宛先(デスティネーション)ボリュームID2224Aによって識別されるボリュームが、領域にとって異なるデータを有するかどうかを判断する。この判断を下すために、複製管理プログラム221Aは、6032で位置付けられたエントリの相違点ビットマップ2227Aを参照し、領域に対応する情報が「オン」に等しいかどうか判断する。等しい場合(はい)、フローは6053に進み、それ以外の場合(いいえ)、フローは6054に進む。
6053で、複製管理プログラム221Aは、領域のデータを、6032で位置付けられたエントリの宛先(デスティネーション)ボリューム2224Aによって識別されるボリュームにコピーする。6054で、複製管理プログラム221Aは、6050のフローで開始されたループを終了する。
図12は、実施形態に係る、複製管理プログラム221Aによる対(ペア)一時停止のフローチャートを示す。具体的には、図12は、ストレージシステム2Aがストレージ管理プログラム122Aから対(ペア)一時停止要求を受信するとき、複製管理プログラム221Aによって実行される対(ペア)一時停止のフローを示す。対(ペア)一時停止要求は、一時停止される複製対(リプリケーションペア)のソースボリュームのIDを含む。対(ペア)一時停止要求は、ソースボリュームのIDの代わりに、一時停止される複製対(リプリケーションペア)のIDを含んでよい。ストレージシステム2Aは、ストレージ管理プログラム122Aからの代わりに、ストレージ管理プログラム122Bから又はストレージシステム2Bから対(ペア)一時停止要求を受信する。
6060で、複製管理プログラム221Aは、ストレージ管理プログラム122A、ストレージ管理プログラム122B、又はストレージシステム2Bから対(ペア)一時停止要求を受信する。6061で、複製管理プログラム221Aは、対(ペア)一時停止要求からボリュームID又は対(ペア)IDを抽出する。6062で、複製管理プログラム221Aは、6061から抽出されたボリュームID又は対(ペア)IDに対応するエントリを対(ペア)管理テーブル222Aに位置付ける。エントリを位置付けるために、複製管理プログラム221Aは、ソースボリュームID2223Aが抽出されたボリュームIDに等しい又は対(ペア)ID2220Aが抽出された対(ペア)IDに等しいエントリがないか対(ペア)管理テーブル222Aを検索する。6063で、複製管理プログラム221Aは、ステップ6062で位置付けられたエントリの対(ペア)状態2225Aを「SUSP」に設定する。6064で、複製管理プログラム221Aは、ストレージシステム2Bに対(ペア)状態変更要求を送信する。対(ペア)状態変更要求は、6062で位置付けられたエントリのソースボリュームID2223Aを含む。
ストレージシステム2Bが対(ペア)状態変更要求を受信するとき、複製管理プログラム221Bは、対(ペア)状態変更要求に含まれるソースボリュームのIDに対応するエントリを位置付け、エントリの対(ペア)状態2225Bを「SUSP」に変更することによって、対(ペア)管理テーブル222Bを更新する。複製管理プログラム221Bは、次いでストレージシステム2Aに対(ペア)状態変化の完了を示す完了応答を送信する。
6065で、複製管理プログラム221Aは、ストレージシステム2Aから対(ペア)状態変更の完了を示す完了応答を受信する。6066で、複製管理プログラム221Aは、ストレージ管理プログラム122A、ストレージ管理プログラム122B、又はストレージシステム2Bに対(ペア)一時停止の完了を示す完了応答を送信する。
図13は、実施形態に係る、I/O処理プログラム220A及び220Bによる読取り要求処理のフローチャートを示す。具体的には、図13は、ストレージシステム2AがサーバIAから読取り要求を受信するとき、I/O処理プログラム220Aによって、又はストレージシステム2Bがサーバ1Bから読取り要求を受信するとき、I/O処理プログラム220Bによって実行される読取り要求処理のフローを示す。読取り要求は、要求されたデータが読み取られるボリューム及びボリュームの中の領域を識別するために使用される情報を含む。
6070で、I/O処理プログラム220A又は220Bは、サーバ1A又はサーバ1Bから読取り要求を受信する。6071で、I/O処理プログラム220A又は220Bは、読取り要求のターゲットボリュームが複製対(リプリケーションペア)のソースボリュームであるのか、それとも宛先(デスティネーション)ボリュームであるのかを判断する。この判断を下すために、I/O処理プログラム220A又は220Bは、要求されたデータが読取り要求から読み取られるボリュームを識別するために使用される情報を抽出し、そのボリュームに対応する対(ペア)管理テーブル222A又は222Bにエントリを位置付ける。I/O処理プログラム220A又は220Bは、次いで位置付けられたエントリのボリュームタイム2221A又は2221Bを参照する。ボリュームタイプがソースボリューム(ソース)である場合、フローは6072に進み、それ以外の場合、ボリュームタイプは宛先(デスティネーション)ボリューム(宛先(デスティネーション))である場合、次いでフローは6075に進む。
6072で、I/O処理プログラム220Aは、ストレージ装置23Aから要求されたデータを読み取り、キャッシュ領域223Aにデータを書き込む。I/O処理プログラム220Aは、どのデータがキャッシュ領域223Aに記憶されるのかを追跡するためにメモリ22Aを使用し、要求されたデータがすでにキャッシュ領域223Aに記憶されている場合、ストレージデバイス23Aから要求されたデータを読み取ることを省略してよい。6073で、I/O処理プログラム220Aはキャッシュ領域223Aからサーバ1Aに要求されたデータを送信する。代わりに、I/O処理プログラム220Aは6072のフローを省略し、ストレージ装置23Aからサーバ1Aに直接的に要求されたデータを送信する。6074で、I/O処理プログラム220Aは、サーバ1Aに読取り要求処理の完了を示す完了応答を送信する。
6075で、I/O処理プログラム220Bは、ターゲットボリュームが属する複製対(リプリケーションペア)の対(ペア)状態が「SMPL」であるのか、「COPY」であるのか、「PAIR」であるのか、それとも「SUSP」であるのかを判断する。
この判断を下すために、I/O処理プログラム220Bは、6071でフローに位置付けられたエントリの対(ペア)状態2225Bを参照する。対(ペア)状態が、複製対(リプリケーションペア)が定義されるほどであるが、まだデータが複製されていない場合(SMPL)、フローは6076に進む。複製対(リプリケーションペア)が同期の過程にある又は同期されている場合(COPY、PAIR)、フローは6077に進む。それ以外の場合、複製対(リプリケーションペア)が一時停止される場合(SUSP)、フローは6078に進む。
6076で、I/O処理プログラム220Bは、複製対(リプリケーションペア)の初期同期がまだ実行されていないために要求されたデータを読み取ることができなかったことを示すエラー応答をサーバ1Bに送信する。6077で、I/O処理プログラム220Bは、複製対(リプリケーションペア)が一時停止されていないために要求されたデータを読み取ることができなかったことを示すエラー応答をサーバ1Bに送信する。
6078で、I/O処理プログラム220Bは、要求されたデータがストレージシステム2Bに複製されているかどうかを判断する。この判断を下すために、I/O処理プログラム220Bは、ステップ6071で位置付けられたエントリの複製ビットマップ2226Bを参照する。要求されたデータが記憶される領域に対応する複製ビットマップ2226Bの情報が「オン」に等しい場合、次いでI/O処理プログラム220Bは、要求されたデータが複製されていると判断する(はい)。それ以外の場合、I/O処理プログラム220Bは、要求されたデータが複製されていないと判断する(いいえ)。要求されたデータが、複製ビットマップ2226Bによって管理される複数の領域に及ぶ場合、I/O処理プログラム220Bは、領域のすべてに対応する情報が「オン」である場合(はい)、要求されたデータが複製されていると判断する。それ以外の場合、I/O処理プログラム220Bは、要求されたデータは複製されていないと判断する(いいえ)。
6079で、I/O処理プログラム220Bは、ストレージデバイス23Bから要求されたデータを読み取り、それをキャッシュ領域223Bに記憶する。I/O処理プログラム220Bは、どのデータがキャッシュ領域223Bに記憶されるのかを追跡するためにメモリ22Bを使用し、要求されたデータがキャッシュ領域223Bにすでに記憶されている場合、ストレージデバイス23Bから要求されたデータを読み取るのを省略してよい。6080で、I/O処理プログラム220Bは、キャッシュ領域223Bからサーバ1Bに要求されたデータを送信する。代わりに、I/O処理プログラム220Bはステップ6072を省略し、ストレージデバイス23Bからサーバ1Bに要求されたデータを直接的に送信する。6081で、I/O処理プログラム220Bは読取り要求処理の完了を示す完了応答をサーバ1Bに送信する。
6082で、I/O処理プログラム220Bは、要求されたデータが複製されていないために、要求されたデータを読み取ることができなかったことを示すエラー応答をサーバ1Bに送信する。
図14は、実施形態に係る、I/O処理プログラム220A及び220Bによる書込み要求処理のフローチャートを示す。具体的には、図14は、ストレージシステム2Aがサーバ1Aから書込み要求を受信するとき、I/O処理プログラム220Aによって、又はストレージシステム2Bがサーバ1Bから書込み要求を受信するとき、I/O処理プログラム220Bによって実行される書込み要求のフローを示す。書込み要求は、要求されたデータが書き込まれるボリューム及びボリュームの中の領域を識別するために使用される情報を含む。
6090で、I/O処理プログラム220A又は220Bは、サーバ1A又はサーバ1Bから書込み要求を受け取る。6091で、I/O処理プログラム220A又は220Bは、書込み要求のターゲットボリュームが複製対(リプリケーションペア)のソースボリュームであるのか、それとも宛先(デスティネーション)ボリュームであるのかを判断する。この判断を下すために、I/O処理プログラム220A又は220Bは、書込み要求から、要求されたデータが書き込まれるボリュームを識別するために使用される情報を抽出し、そのボリュームに対応する対(ペア)管理テーブル222A又は222Aにエントリを位置付ける。I/O処理プログラム220A又は220Bは、次いで位置付けられたエントリのボリュームタイプ2221A又は2221Bを参照する。書込み要求のターゲットボリュームがソースボリューム(ソース)である場合、次いでフローは6092に進み、それ以外の場合(宛先(デスティネーション))、フローは6099に進む。
6092で、I/O処理プログラム220Aはサーバ1Aから要求されたデータを受信し、キャッシュ領域223Aにデータを書き込む。代わりに、I/O処理プログラム220Aは、サーバ1Aから要求されたデータを受信し、ストレージデバイス23Aにデータを直接的に書き込む。6093で、I/O処理プログラム220Aはキャッシュ領域223Aから要求されたデータを読み取り、ストレージデバイス23Aにデータを書き込む。代わりに、I/O処理プログラム220Aは、6093でフローを省略し、所望される実施形態に応じて、書込み要求に非同期にストレージデバイス23Aにデータを書き込む。
6094で、I/O処理プログラム220Aは、ターゲットボリュームが属する複製対(リプリケーションペア)の対(ペア)状態が「SMPL」であるのか、「COPY」であるのか、「PAIR」であるのか、それとも「SUSP」であるのかを判断する。この判断を下すために、I/O処理プログラム220Aは、6091からエントリの対(ペア)2225Aを参照する。ターゲットボリュームがSMPLである場合、次いでフローは6095に進み、I/O処理プログラム220Aは、サーバ1Aに書込み要求処理の完了を示す完了応答を送信する。ターゲットボリュームが「COPY」又は「PAIR」である場合、次いでフローは6096に進む。それ以外の場合、ターゲットボリュームが「SUSP」である場合、次いでフローは6098に進む。
6096で、I/O処理プログラム220Aは、6082でサーバ1Aから受信されたデータがストレージシステム2Bに複製されるかどうかを判断する。この判断を下すために、I/O処理プログラム220Aは、6091からエントリの複製ビットマップ2226Aを参照する。データが書き込まれる領域に対応する複製ビットマップ2226Aの情報が「オン」に等しい場合、次いでI/O処理プログラム220Aは、データが複製されると判断する(はい)。それ以外の場合(いいえ)、I/O処理プログラム220Aは、データが複製されないと判断する。6097で、I/O処理プログラム220Aは、6092でサーバ1Aから受信されたデータを、6091で位置付けられたエントリの宛先(デスティネーション)ボリュームID2224Aによって識別されたボリュームにコピーする。
データが複製ビットマップ2226Aによって管理される複数の領域に及ぶ場合、I/O処理プログラム220Aは、領域ごとに6096及び6097でフローを実行する。領域のいくつかに対応する複製ビットマップ2226Aの情報が「オン」に等しい場合、次いでI/O処理プログラム220Aはそれらの領域に対応するデータをコピーするにすぎない。
6098で、I/O処理プログラム220Aは、6092でサーバ1Aから受信されたデータに対応する相違点ビットマップ2227Aの情報を「オン」に設定することによって、6091で位置付けられたエントリの相違点ビットマップ2227Aを更新する。データが複製ビットマップ2227Aによって管理される複数の領域に及ぶ場合、I/O処理プログラム220Aは、各領域に対応する相違点ビットマップ2227Aの情報を「オン」に設定する。
6099で、I/O処理プログラム220Bは、サーバ1Bに、書込みが許可されていないために要求されたデータを書き込むことができなかったことを示すエラー応答を送信する。
第2の実施形態では、1つ以上のボリュームの領域のどのサブセットが別のストレージシステムに複製されることを許可されているのかを管理する。システムの物理構成は、上記の第1の実施形態に説明されるのと同じである。システムの論理構成の相違点、及びシステムがどのようにして制御されるのかが以下に説明される。
図15は、実施形態に係る、対(ペア)管理テーブル222A及び222Bの論理レイアウトを示す。具体的には、図15は、第2の実施形態の対(ペア)管理テーブル222A及び対(ペア)管理テーブル222Bの論理レイアウトを示す。対(ペア)管理テーブル222Aの論理レイアウトは、基本的に第1の実施形態に説明されるのと同じであるが、管理テーブル222Aの各エントリは、追加のフィールド、許可ビットマップ2229Aを含む。許可ビットマップ2229Aは、宛先(デスティネーション)ボリュームに複製されることが許可されているソースボリュームの領域を管理するために使用される。許可ビットマップ2229Aは、ソースボリュームの領域ごとに情報を含む。各領域のサイズは、例えば256KB又は42MBである。各領域について記憶される情報の例の値は「オン」及び「オフ」である。「オン」は、領域が複製されることを許可されていることを示し、「オフ」は領域が複製されることを許可されていないことを示す。
対(ペア)管理テーブル222Bの論理レイアウトは、基本的に第1の実施形態の場合と同じであるが、対(ペア)管理テーブル222Bの各エントリは追加フィールドである許可ビットマップ2229Bを含む。許可ビットマップ2229Bは、宛先(デスティネーション)ボリュームに複製されるのを許可されているソースボリュームの領域を管理するために使用される。許可ビットマップ2229Bは、ソースボリュームの各領域のための情報を含む。各領域のサイズは、例えば256KB又は42MBである。各領域について記憶される情報の各値は「オン」及び「オフ」である。「オン」は、領域が複写されることを許可されていることを示し、「オフ」は領域が複写されることを許可されていないことを示す。
図16は、実施形態に係る、複製管理プログラム221Aによる対(ペア)作成のフローチャートを示す。具体的には、図16は、第2の実施形態での対(ペア)作成のフローを示す。このフローは、ストレージシステム2Aが、ストレージ管理プログラム122Aから対(ペア)作成要求を受信するとき、複製管理プログラム221Aによって実行される。
対(ペア)作成のフローは、基本的に、図7に説明される第1の実施形態のフローと同じである。しかしながら、6005と6006のフローの間には6100の追加のフローがある。6100で、複製管理プログラム221Aは、各領域に対応する情報を「オフ」に設定することによって、ステップ6002で作成される新しいエントリの許可ビットマップ2229Aをクリアする。
図17は、実施形態に係る、ストレージ管理プログラム122Bによる許可構成のフローチャートを示す。具体的には、図17は、サーバ1Aがユーザ又はユーザによって作成されたプログラムから許可構成要求を受信するとき、ストレージ管理プログラム122Bによって実行される許可構成のフローを示す。許可構成要求は、ストレージシステム2Aからストレージシステム2Bに複製されるのを許可されているテーブルのIDを含む。
6110で、ストレージ管理プログラム122Bは、ユーザから許可構成要求を受信する。6111で、ストレージ管理プログラム122Bは、許可構成要求からテーブルIDを抽出する。6112で、ストレージ管理プログラム122Bは、データベース管理プログラム121Aにテーブル位置要求を送信する。テーブル位置要求は、6101で抽出されたテーブルのIDを含む。データベース管理プログラム121Aがテーブル位置要求を受信するとき、データベース管理プログラム121Aは、管理プログラム122Bにテーブル位置要求に対する応答を送信する。応答は、テーブル位置要求に含まれるIDに対応するテーブルの位置を含む。各位置は、例えば、サーバ1Aによって管理されるデバイスのID、及びデバイスの中に領域を指定するアドレス範囲である。
データベース管理プログラム121Aにテーブル位置要求を送信する代わりに、ストレージ管理プログラム122Bはデータベース管理プログラム121Bにテーブル位置要求を送信してよい。
6113で、ストレージ管理プログラム122Bは、データベース管理プログラム121Aからテーブル位置要求に対する応答を受信する。6114で、ストレージ管理プログラム122Bは、ステップ6113で受信された応答からデバイスID及びアドレス範囲を抽出する。6115で、ストレージ管理プログラム122Bは、デバイス/ボリューム変換テーブル123Bを調べることによって、6114から抽出される各デバイスIDを、ストレージシステム2Aの中でボリュームを識別するために使用されるIDに変換する。
6116で、ストレージ管理プログラム122Bは、ストレージシステム2Aに許可ビットマップ構成要求を送信する。許可ビットマップ構成要求は、ステップ6115で得られたボリュームID、及び6114で抽出されるアドレス範囲を含む。ストレージ管理プログラム122Bは、ストレージシステム2Bを介して又はストレージ管理プログラム122Aを介してストレージシステム2Aに許可ビットマップ構成要求を送信してよい。許可ビットマップ構成要求は、ボリュームIDの代わりに、ボリュームに適用される複製対(リプリケーションペア)のIDを含んでよい。
アドレス範囲の代わりに、許可ビットマップ構成要求はビットマップを含んでよい。ビットマップは、6114から抽出されたアドレス範囲からストレージ管理プログラム122Bによって作成される。ビットマップの各ビットは、複製ビットマップ2226Aのビットに相当する。ストレージシステム2Aがビットマップ構成要求を受信するとき、ストレージシステム2Aは、図18に示されるフローを実行する。
6117で、ストレージ管理プログラム122Bは、ストレージシステム2Aから許可ビットマップ構成の完了を示す完了応答を受信する。6118で、ストレージ管理プログラム122Bは、ユーザ又はユーザによって作成されたプログラムに許可構成の完了を示す完了応答を送信する。
図18は、実施形態に係る、複製管理プログラム221Aによる許可ビットマップ構成のフローチャートを示す。具体的には、図18は、ストレージシステム2Aが、6116でストレージ管理プログラム221Bによって送信された許可ビットマップ構成要求を受信するとき、複製管理プログラム221Aによって実行される許可ビットマップ構成のフローを示す。
6120で、複製管理プログラム221Aはストレージ管理プログラム122Bから許可ビットマップ構成要求を受信する。6121で、複製管理プログラム221Aは、許可ビットマップ構成要求からボリュームID又は対(ペア)ID及びアドレス範囲又はビットマップを抽出する。
6122で、複製管理プログラム221Aは、6121から抽出された各ボリュームID又は対(ペア)IDに対応する対(ペア)管理テーブル222Aにエントリを位置付ける。各エントリを位置付けるために、複製管理プログラム221Aは、ソースボリュームID2223Aが抽出されたボリュームIDに等しい、又は対(ペア)ID2220Aが抽出された対(ペア)IDに等しいエントリがないか対(ペア)管理テーブル2220Aを検索する。
6123で、複製管理プログラム221Aは、ステップ6121で抽出されるアドレス範囲に対応する情報を「オン」に設定することによって、6122から位置付けられた各エントリの許可ビットマップ2229Aを更新する。アドレス範囲の代わりにビットマップが6121から抽出された場合、複製管理プログラム221Aは、6121から抽出されたビットマップを複製ビットマップ2229Aにコピーすることによって、6122から位置付けられた各エントリの許可ビットマップ2229Aを更新する。6124で、複製管理プログラム221Aは、ストレージ管理プログラム122Bに許可ビットマップ構成の完了を示す完了応答を送信する。
図19は、実施形態に係る、複製管理プログラム221Aによる複製ビットマップ構成のフローチャートを示す。具体的には、図19は、第2の実施形態のための複製ビットマップ構成のフローを示す。このフローは、ストレージシステム2Aが、6016のフローからストレージ管理プログラム221Aによって送信された複製ビットマップ構成要求を受信するとき、複製管理プログラム221Aによって実行される。複製ビットマップ構成のフローは、基本的に図9に示される第1の実施形態のフローと同じである。しかしながら、6023のフローは、6130から6133へのフローによって置換される。
6130で、複製管理プログラム221Aは、6022のフローに位置付けられたエントリのソースボリュームID2223Aによって識別されるボリュームの各領域について6131から6132へのフローを実行するループを開始する。6131で、複製管理プログラム221Aは、6022のフローに位置付けられたエントリの許可ビットマップ2229Aを参照し、領域に対応する情報が「オン」に等しいかどうかを判断する。領域に対応する許可ビットマップ2229Aの情報が「オン」に設定される場合、フローは6132に進む。それ以外の場合、フローは6133に進む。
6132で、複製管理プログラム221Aは、領域に対応する情報を「オン」に設定することによって、6022でフローに位置付けられたエントリの複製ビットマップ2226Aを更新する。6133で、複製管理プログラム221Aは、6130のフローで開始されたループを終了する。
第3の実施形態では、1つ以上のボリュームの領域のサブセットの一貫したリモートスナップショットを作成するストレージシステムがある。システムの物理構成は、第1の実施形態において同じである。システムの論理構成の相違点、及びシステムがどのようにして制御されるのかが以下に説明される。
図20は、実施形態に係る、メモリ12Aの論理レイアウトを示す。具体的には、図20は、第3の実施形態でのメモリ12Aの論理レイアウトを示す。メモリ12Aのレイアウトは、基本的に実施形態に説明されるのと同じであるが、メモリ12Aは、アプリケーションプログラム120A、データベース管理プログラム121A、ストレージ管理プログラム122A、及びデバイス/ボリューム変換テーブル123Aに加えてテーブルIDリスト124Aを含む。テーブルIDリスト124Aは、ユーザからの複製構成要求に含まれるテーブルIDを思い出すためにストレージ管理プログラム122Aによって使用されるテーブルIDのリストである。
図21は、実施形態に係る、ストレージ管理プログラム122Aによる複製構成のフローチャートを示す。具体的には、図21は、第3の実施形態の複製構成のフローを示す。このフローは、サーバ1Aがユーザ又はユーザによって作成されたプログラムから複製構成要求を受信するとき、ストレージ管理プログラム122Aによって実行される。複製構成のフローは、基本的に図8に示される第1の実施形態のフローと同じである。しかしながら、6011と6012のフローの間に6140の追加のフローがある。6140で、ストレージ管理プログラム122Aは、テーブルIDリスト124Aにステップ6011で抽出されたテーブルIDを保存する。
図22は、実施形態に係る、ストレージ管理プログラム122Aによる対(ペア)一時停止のフローチャートを示す。図22は、サーバ1Aがユーザ又はユーザによって作成されたプログラムから対(ペア)一時停止要求を受信するとき、ストレージ管理プログラム122Aによって実行される対(ペア)一時停止のフローを示す。対(ペア)一時停止要求は、一時停止される複製対(リプリケーションペア)のソースボリュームのIDを含む。対(ペア)一時停止要求は、ソースボリュームのIDの代わりに、一時停止される複製対(リプリケーションペア)のIDを含んでよい。
6150で、ストレージ管理プログラム122Aは、ユーザから対(ペア)一時停止要求を受信する。6151で、ストレージ管理プログラム122Aは、対(ペア)一時停止要求からボリュームID又は対(ペア)IDを抽出する。6152で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aにトランザクション凍結要求を送信する。
データベース管理プログラム121Aがトランザクション凍結要求を受信するとき、データベース管理プログラム121Aは、新しいトランザクションを処理することを停止し、代わりに後の処理のために新しいトランザクションを待ち行列に入れる。データベース管理プログラム121Aは、データベース管理プログラム121Aが凍結要求を受信したときにすでに開始されていたトランザクションを処理し続ける。データベース管理プログラム121Aが、データベース管理プログラム121Aが凍結要求を受信したときにすでに開始されていたトランザクションのすべてを完了しているとき、データベース管理プログラム121Aは、ストレージ管理プログラム122Aにトランザクション凍結の完了を示す完了応答を送信する。
6153で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aからトランザクション凍結の完了を示す完了応答を受信する。6154で、ストレージ管理プログラム122Aは、図23に示されるフローを実行することによってストレージシステム2Aの複製ビットマップ2226Aを更新する。6155で、ストレージ管理プログラム122Aは、ストレージシステム2Aに対(ペア)一時停止要求を送信する。ストレージ管理プログラム122Aは、6151から抽出されたボリュームID又は対(ペア)IDを対(ペア)一時停止要求に含む。ストレージシステム2Aが対(ペア)一時停止要求を受信するとき、複製管理プログラム221Aは、図12のフローを実行することによって、対(ペア)一時停止要求に含まれるボリュームIDによって識別されるボリュームを一時停止する。
6156で、ストレージ管理プログラム122Aは、ストレージシステム2Aから対(ペア)一時停止の完了を示す完了応答を受信する。6157で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aにトランザクション解凍要求を送信する。データベース管理プログラム121Aがトランザクション解凍要求を受信するとき、データベース管理プログラム121Aは、6152のフローで待ち行列に入れられたトランザクションを処理する。
データベース管理プログラム121Aが待ち行列に入れられたトランザクションのすべてを完了するとき、データベース管理プログラム121Aは、新しいトランザクションの処理を再開し、ストレージ管理プログラム122Aにトランザクション解凍の完了を示す完了応答を送信する。
6158で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aからトランザクション解凍の完了を示す完了応答を受信する。6159で、ストレージ管理プログラム122Aは、ユーザ又はユーザによって作成されたプログラムに対(ペア)一時停止の完了を示す完了応答を送信する。
図23は、実施形態に係る、ストレージ管理プログラム122Aによる複製ビットマップ更新のフローチャートを示す。具体的には、図23は、ストレージ管理プログラム122Aによって実行される複製ビットマップ更新のフローを示す。このフローは、図22の6154のフローに相当する。
ストレージ管理プログラム122Aは、図22の6154でフローを実行することに加えて、このフローを周期的に実行してよい。ストレージ管理プログラム122Aは、このフローを周期的に実行することによって、ストレージシステム2Aの複製ビットマップ2226Aを最新に保つことができる。このフローは、トランザクションがその間凍結される6152と6157のフロー間の時間を短縮できる。
6160で、ストレージ管理プログラム122Aは、テーブルIDリスト124Aに保存されたテーブルIDを取り出す。6161で、ストレージ管理プログラム122Aは、ストレージ管理プログラム122Aは、データベース管理プログラム121Aにテーブル位置要求を送信する。テーブル位置要求は、6060で取り出されたテーブルIDを含む。
データベース管理プログラム121Aがテーブル位置要求を受信するとき、データベース管理プログラム121Aはストレージ管理プログラム122Aにテーブル位置要求に対する応答を送信する。応答は、テーブル位置要求に含まれるIDに対応するテーブルの位置を含む。各位置は、例えばサーバ1Aによって管理されるデバイスのID及びデバイスの中で領域を指定するアドレス範囲である。
6162で、ストレージ管理プログラム122Aは、データベース管理プログラム121Aからテーブル位置要求に対する応答を受信する。6163で、ストレージ管理プログラム122Aは、テーブル位置要求に対する応答からデバイスID及びアドレス範囲を抽出する。6164で、ストレージ管理プログラム122Aは、デバイス/ボリューム変換テーブル123Aを調べることによって、6163から抽出された各デバイスIDをストレージシステム2Aの中でボリュームを識別するために使用されるIDに変換する。6165で、ストレージ管理プログラム122Aは、ストレージシステム2Aに複製ビットマップ構成要求を送信する。複製ビットマップ構成要求は、6164から得られたボリュームID、及び6163から抽出されたアドレス範囲を含む。複製ビットマップ構成要求は、ボリュームIDの代わりに、ボリュームに適用された複製対(リプリケーションペア)のIDを含んでよい。
アドレス範囲の代わりに、複製ビットマップ構成要求はビットマップを含んでよい。ビットマップは、6163から抽出されたアドレス範囲からストレージ管理プログラム122Aによって作成される。ビットマップの各ビットは、複製ビットマップ2226Aのビットに相当する。ストレージシステム2Aが複製ビットマップ構成要求を受信するとき、ストレージシステム2Aは、図24Aに示されるフローを実行する。6166で、ストレージ管理プログラム122Aは、ストレージシステム2Aから複製ビットマップ構成の完了を示す完了応答を受信する。
図24は、実施形態に係る、複製管理プログラム221Aによる複製ビットマップ更新のフローチャートを示す。具体的には、図24は、ストレージシステム2Aが6165のフローでストレージ管理プログラム221Aによって送信される複製ビットマップ更新要求を受信するとき、複製管理プログラム221Aによって実行される複製ビットマップ更新のフローを示す。
6170で、複製管理プログラム221Aは、ストレージ管理プログラム122Aから複製ビットマップ更新要求を受信する。6171で、複製管理プログラム221Aは、複製ビットマップ更新要求からボリュームID又は対(ペア)ID及びアドレス範囲又はビットマップを抽出する。6172で、複製管理プログラム221Aは、6171から抽出された各ボリュームID又は対(ペア)IDに対応する対(ペア)管理テーブル222Aにエントリを位置付ける。各エントリを位置付けるために、複製管理プログラム221Aは、ソースボリュームID2223Aが抽出されたボリュームIDに等しい、又は対(ペア)ID2220Aが抽出された対(ペア)IDに等しいエントリがないか対(ペア)管理テーブル222Aを検索する。
6173で、複製管理プログラム221Aは、6172から位置付けられた各エントリの複製ビットマップ2226Aのための新しい「オン」ビットを計算する。複製管理プログラム221Aは、6171のフローから抽出されたアドレス範囲に対応するが、「オフ」に等しい複製ビットマップ2226Aのビットのすべてを決定することによって、各複製ビットマップ2226Aにこの計算を実行する。アドレス範囲の代わりに、ビットマップが6171でフローから抽出された場合、複製管理プログラム221Aは、抽出されたビットマップのオンビットに相当するが、「オフ」に等しい複製ビットマップ2226Aのビットのすべてを決定する。
6174で、複製管理プログラム221Aは、ステップ6173で計算された新しい「オン」ビットに対応するデータのすべてをストレージシステム2Bにコピーする。6175で、複製管理プログラム221Aは、6172のフローから各エントリの複製ビットマップ2226Aのための新しい「オフ」ビットを計算する。複製管理プログラム221Aは、6171から抽出されたアドレス範囲に対応しないが、「オン」に等しい複製ビットマップ2226Aのビットのすべてを決定することによって、各複製ビットマップ2226Aにこの計算を実行する。アドレス範囲の代わりにビットマップが6171から抽出された場合、複製管理プログラム221Aは、抽出されたビットマップのオフビットに対応するが、「オン」に等しい複製ビットマップ2226Aのビットのすべてを決定する。
6176で、複製管理プログラム221Aは、ストレージシステム2Bにデータ削除要求を送信する。ステップ6172で位置付けられた各エントリについて、データ削除要求は、位置付けられたエントリの6175から計算されたソースボリュームID2223A及び新しい「オフ」ビットを含む。ストレージシステム2Bがデータ削除要求を受信するとき、複製管理プログラム221Bは、データ削除要求に含まれるソースボリュームID2223A及び「オフ」ビットに対応するデータを削除する。複製管理プログラム221Bは、次いでストレージシステム2Aにデータ削除の完了を示す完了要求を送信する。
6177で、複製管理プログラム221Aは、ストレージシステム2Bからデータ削除の完了を示す完了応答を受信する。6178で、複製管理プログラム221Aは、6021のフローから抽出されたアドレス範囲に対応する情報を「オン」に設定することによって、6172のフローから位置付けられた各エントリの複製ビットマップ2226Aを更新する。アドレス範囲の代わりにビットマップが6171のフローから抽出された場合、複製管理プログラム221Aは、6171のフローから抽出されたビットマップを複製ビットマップ2226Aにコピーすることによって、6172のフローから位置付けられた各エントリの複製ビットマップ2226Aを更新する。
6179で、複製管理プログラム221Aは、ストレージシステム2Bに複製ビットマップ更新要求を送信する。6172から位置付けられた各エントリについて、複製ビットマップ更新要求は、位置付けられたエントリのソースボリュームID2223A及び複製ビットマップ2226Aを含む。ストレージシステム2Bが複製ビットマップ更新要求を受信するとき、複製管理プログラム221Bは、複製ビットマップ更新に含まれたソースボリュームのIDに対応するエントリを位置付け、位置付けられたエントリの複製ビットマップ2226Bを更新することによって、対(ペア)管理テーブル222Bを更新する。複製管理プログラム221Bは、次いでストレージシステム2Aに複製ビットマップ更新の完了を示す完了応答を送信する。
6180で、複製管理プログラム221Aは、ストレージシステム2Bから複製ビットマップ更新の完了を示す完了応答を受信する。6181で、複製管理プログラム221Aは、ストレージ管理プログラム122Aに複製ビットマップ更新の完了を示す完了応答を送信する。
第4の実施形態では、ストレージシステムは、ユーザによって指定されたデータベーステーブルのIDに基づいて1つ以上のボリュームのサブセットを別のストレージシステムに複製する。システムの物理構成は、第1の実施形態に説明されたのと同じである。システムの論理構成の相違点、及びシステムがどのようにして制御されるのかが以下に説明される。
図25は、実施形態に係る、対(ペア)管理テーブル222A及び222Bの論理レイアウトを示す。対(ペア)管理テーブル222Aの論理レイアウトは、基本的に第1の実施形態に説明されるのと同じである。しかしながら、対(ペア)管理テーブル222Aの各エントリは、複製ビットマップ2226Aの代わりに複製ビット2226A’を含む。複製ビット2226A’は、ソースボリュームが宛先(デスティネーション)ボリュームに複製されるべきであるかどうかを管理するために使用される。複製ビット2226A’の例の値は「オン」及び「オフ」である。「オン」は、ソースボリュームが複製されることを示し、「オフ」はソースボリュームが複製されないことを示す。
対(ペア)管理テーブル222Bの論理レイアウトは、基本的に第1の実施形態に説明されるのと同じである。しかしながら、対(ペア)管理テーブル222Bの各エントリは、複製ビットマップ2226Bの代わりに複製ビット2226B’を含む。複製ビット2226B’は、ソースボリュームが宛先(デスティネーション)ボリュームに複製されるべきかどうかを管理するために使用される。複製ビット2226B’の例の値は「オン」及び「オフ」である。「オン」は、ソースボリュームが複製されることを示し、「オフ」は、ソースボリュームが複製されないことを示す。
図26は、実施形態に係る、ストレージ管理プログラム122Aによる複製構成のフローチャートを示す。具体的には、図26は、サーバ1Aがユーザ又はユーザによって作成されたプログラムから複製構成要求を受信するとき、ストレージ管理プログラム122Aによって実行される複製構成のフローを示す。複製構成のフローは、基本的に図8に説明されるフローと同じである。しかしながら、6014及び6016のフローは、6014’及び6016’のフローによって置換される。
6014’で、ストレージ管理プログラム122Aは、テーブル位置要求遺体する応答からデバイスIDを抽出する。6016’で、ストレージ管理プログラム122Aは、ストレージシステム2Aに複製ビット構成要求を送信する。複製ビット構成要求は、6015のフローから得られたボリュームIDを含む。複製ビットマップ構成要求は、ボリュームIDの代わりに、ボリュームに適用された複製対(リプリケーションペア)のIDを含んでよい。ストレージシステム2Aが複製ビットマップ構成要求を受信するとき、ストレージシステム2Aは図27に示されるフローを実行する。
図27は、実施形態に係る、複製管理プログラム221Aによる複製ビット構成のフローチャートを示す。具体的には、図27は、ストレージシステム2Aが、6016’のフローでストレージ管理プログラム221Aによって送信される複製ビット構成要求を受信するとき、複製管理プログラム221Aによって実行される複製ビット構成のフローを示す。
6190で、複製管理プログラム221Aは、ストレージ管理プログラム122Aから複製ビット構成要求を受信する。6191で、複製管理プログラム221Aは、複製ビット構成要求からボリュームID又は対(ペア)IDを抽出する。6192で、複製管理プログラム221Aは、6191のフローから抽出された各ボリュームID又は対(ペア)IDに対応する対(ペア)管理テーブル222Aにエントリを位置付ける。各エントリを位置付けるために、複製管理プログラム221Aは、ソースボリュームID2223Aが抽出されたボリュームIDに等しい又は対(ペア)ID2220Aが抽出された対(ペア)IDに等しいエントリがないか対(ペア)管理テーブル222Aを検索する。
6193で、複製管理プログラム221Aは、6192のフローから位置付けられた各エントリの複製ビット2226A’を設定する。6194で、複製管理プログラム221Aは、ストレージシステム2Bに複製ビット更新要求を送信する。6192のフローに位置付けられた各エントリについて、複製ビット更新要求は、位置付けられたエントリのソースボリュームID2223A及び複製ビット2226A’を含む。
ストレージシステム2Bが複製ビット更新要求を受信するとき、複製管理プログラム221Bは、複製ビットマップ更新要求に含まれるソースボリュームのIDに対応するエントリを位置付け、位置付けられたエントリの複製ビット2226B’を更新することによって対(ペア)管理テーブル222Bを更新する。複製管理プログラム221Bは、次いでストレージシステム2Aに複製ビット更新の完了を示す完了応答を送信する。
6195で、複製管理プログラム221Aは、ストレージシステム2Bから複製ビット更新の完了を示す完了応答を受信する。6196で、複製管理プログラム221Aは、ストレージ管理プログラム122Aに複製ビット構成の完了を示す完了応答を送信する。
第1の実施形態においてのように、複製管理プログラム221Aは、ストレージシステム2Aがストレージ管理プログラム122Aから対(ペア)同期要求を受信するとき、図10に示されるフローを実行する。しかしながら、6051のフローでは、複製管理プログラム221Aは、複製ビットマップ2226Aの代わりに複製ビット2226A’を参照することによって、領域がコピーされるかどうかを判断する。
第1の実施形態においてのように、I/O処理プログラム220Bは、ストレージシステム2Bがサーバ2Bから読取り要求を受信するとき、図13に示されるフローを実行する。しかしながら、6078のフローでは、I/O処理プログラム220Bは、複製ビットマップ2226Bの代わりに複製ビット2226B’を参照することによって、要求されたデータがストレージシステム2Bに複製されているかどうかを判断する。
第1の実施形態においてのように、I/O処理プログラム220Aは、ストレージシステム2Aがサーバ1Aから書込み要求を受信するとき、図14に示されるフローを実行する。しかしながら、6096のフローでは、I/O処理プログラム220Aは、複製ビットマップ2226Aの代わりに複製ビット2226A’を参照することによって、サーバ1Aから受信されたデータがストレージシステム2Bに複製されるかどうかを判断する。
発明を実施するための形態のいくつかの部分は、コンピュータの中の動作のアルゴリズム及び象徴的な表現の観点から提示されている。これらのアルゴリズムの説明及び象徴的な表現は、データ処理技術の当業者が他の当業者に対して自らの革新の本質を伝えるために使用する手段である。アルゴリズムは、所望される最終状態又は結果につながる一連の定められたステップである。実施形態では、実施されるステップは、具体的な成果を達成するために具体的な量の物理的な操作を必要とする。
特に明記しない限り、説明から明らかであるように、明細書を通して、「処理する」「算出する」、「計算する」、「判断する」、「表示する」等の用語を活用する説明は、コンピュータシステム、又は該コンピュータシステムのレジスタ及びメモリの中で物理(電子)量として表されるデータを操作し、該コンピュータシステムのメモリ若しくはレジスタ又は他の情報ストレージデバイス、伝送装置、若しくは表示装置の中で物理量として同様に表される他のデータに変換する他の情報処理装置を含む場合があることが理解される。
また、実施形態は、本明細書の動作を実行するための装置にも関してよい。この装置は、必要とされる目的のために特別に構築される場合もあれば、該装置は1つ以上のコンピュータプログラムによって選択的に活性化又は再構成される1つ以上の汎用コンピュータを含む場合もある。係るコンピュータプログラムは、コンピュータ可読記憶媒体又はコンピュータ可読信号媒体等のコンピュータ可読媒体に記憶されてよい。コンピュータ可読記憶媒体は、例えば磁気ディスク、読出し専用メモリ、ランダムアクセスメモリ、ソリッドステートデバイス及びドライブ等の実態のある媒体、又は電子情報を記憶するために適した任意の他のタイプの実体のある媒体若しくは非一過性媒体を含んでよいが、これに限定されるものではない。コンピュータ可読信号媒体は、搬送波等の媒体を含んでよい。本明細書に提示されるアルゴリズム及びディスプレイは、本質的に、任意の特定のコンピュータ又は他の装置に関係していない。コンピュータプログラムは、所望される実施形態の動作を実行する命令を含む純粋なソフトウェア実施形態を含む場合がある。
種々の汎用システムは、本明細書の例に係るプログラム及びモジュールとともに使用される場合もあれば、所望される方法ステップを実行するためにより専門的な装置を構築することが便利であることが判明する場合もある。さらに、実施形態は、任意の特定のプログラミング言語を参照して説明されていない。本明細書に説明される実施形態の教示を実施するために、さまざまなプログラミング言語が使用され得ることが理解される。プログラミング言語(複数可)の命令は、例えば、中央演算処理装置(CPU)、プロセッサ、又はコントローラ等の1つ以上の処理装置によって実行されてよい。
技術で既知であるように、上述された動作は、ハードウェア、ソフトウェア、又はソフトウェア及びハードウェアのなんらかの組み合わせによって実行できる。実施形態の種々の態様は、回路及び論理装置(ハードウェア)を使用し、実施され得る。一方、他の態様は、プロセッサによって実行されると、プロセッサに本願の実施形態を実施するための方法を実行させるであろう機械可読媒体(ソフトウェア)に記憶される命令を使用し、実施され得る。さらに、他の実施形態がソフトウェアにおいてのみ実行され得るのに対し、本願のいくつかの実施形態はハードウェアにおいてのみ実行され得る。さらに、説明される種々の機能は単一のユニットで実行できる、又は任意の数の方法でいくつかの構成要素にわたって拡散できる。方法は、ソフトウェアによって実行されるとき、コンピュータ可読媒体に記憶された命令に基づいて汎用コンピュータ等のプロセッサによって実行されてよい。所望される場合、命令は、圧縮されたフォーマット及び/又は符号化されたフォーマットで媒体に記憶できる。
さらに、本願の他の実施形態は、明細書の検討及び本願の教示の実施から当業者に明らかになる。説明された実施形態の種々の態様及び/又は構成要素は、単独で又は任意の組合せで使用されてよい。明細書及び実施形態が例としてのみ見なされ、本願の真の範囲及び精神は以下の特許請求の範囲により示されることが意図される。