JP5270796B2 - 非同期リモートコピーシステム、及び、記憶制御方法 - Google Patents
非同期リモートコピーシステム、及び、記憶制御方法 Download PDFInfo
- Publication number
- JP5270796B2 JP5270796B2 JP2012509185A JP2012509185A JP5270796B2 JP 5270796 B2 JP5270796 B2 JP 5270796B2 JP 2012509185 A JP2012509185 A JP 2012509185A JP 2012509185 A JP2012509185 A JP 2012509185A JP 5270796 B2 JP5270796 B2 JP 5270796B2
- Authority
- JP
- Japan
- Prior art keywords
- journal
- storage
- storage device
- data
- storage resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
- G06F11/1645—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2058—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1456—Hardware arrangements for backup
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2074—Asynchronous techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2079—Bidirectional techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2082—Data synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/855—Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ストレージ装置間のデータのコピーであるリモートコピーを行うストレージシステムでの記憶制御に関する。
第1及び第2のストレージ装置間でのデータのコピーであるリモートコピーが知られている。リモートコピーとしては、例えば、同期リモートコピーと非同期リモートコピーがある。第1のストレージ装置がホストからライト要求を受信した場合、同期リモートコピーが採用されているならば、そのライト要求に従うデータが第1のストレージ装置から第2のストレージ装置に転送された後に、ライトの完了応答がホスト装置に送信されるが、非同期リモートコピーが採用されているならば、そのライト要求に従うデータが第1のストレージ装置から第2のストレージ装置に転送されなくても、ライトの完了応答がホスト装置に送信される。
非同期リモートコピーが採用されたリモートコピーシステム(以下、非同期リモートコピーシステム)では、例えば、第1のストレージ装置が、第1のDVOL(データが格納される論理ボリューム)の他に、第1のJVOL(ジャーナル(以下、JNL)が格納される論理ボリューム)を有する。同様に、第2のストレージ装置が、第2のDVOLの他に、第2のJVOLを有する。第1のストレージ装置は、ライト要求を受信した場合、ライト要求に従うデータを第1のDVOLに格納し、且つ、そのデータのJNLを第1のJVOLに格納する。第1のストレージ装置が、第1のJVOL内のJNLを、第2のストレージ装置に転送し、第2のストレージ装置が、第1のストレージ装置からのJNLを、第2のJVOLに書き込む。その後、第2のストレージ装置が、第2のJVOL内のJNLが有するデータを、第2のDVOLに書き込む。これにより、第1のDVOLに書き込まれたデータが、第2のDVOLにコピーされたことになる。
特許文献1には、マルチターゲット方式の非同期リモートコピーシステムが開示されている。マルチターゲット方式では、1つのコピー元に対して複数のコピー先が存在する。具体的には、特許文献1には、例えば下記のことが開示されている。
(*)第1のストレージ装置、第2のストレージ装置、及び第3のストレージ装置がある。
(*)第1のストレージ装置がコピー元であり、第2及び第3のストレージ装置が、第1のストレージ装置からのコピー先である。
(*)第1のストレージ装置に第1のホスト装置が接続されており、第2のストレージ装置に第2のホスト装置が接続されており、第3のストレージ装置に第3のホスト装置が接続されている。
(*)第1のストレージ装置が、第1のDVOLと、第1の第1JVOLと、第2の第1JVOLとを有する。
(*)第2のストレージ装置が、第2のDVOLと、第2のJVOLとを有する。
(*)第1及び第2のDVOLがペアになっている。第1のDVOLが、プライマリのDVOLであり、第2のDVOLが、セカンダリのDVOLである。
(*)第3のストレージ装置が、第3のDVOLと、第3のJVOLとを有する。
(*)第1及び第3のDVOLがペアになっている。第1のDVOLが、プライマリのDVOLであり、第3のDVOLが、セカンダリのDVOLである。
(*)第1のホスト装置が、第1のDVOLにデータを書き込む。
(*)第1のストレージ装置が、第1のDVOLに書き込まれるデータのJNLを、第1の第1JVOLと第2の第1JVOLの両方に書き込む。JNLは、ホスト装置の入出力対象のデータの他に、更新番号を含む。
(*)第1の第1JVOL内のJNLは、第2のJVOLにコピーされる。
(*)第2のストレージ装置が、第2のJVOL内の1以上の未反映のJNLのうち、最古の更新番号を有するJNLを第2のDVOLに反映する(JNLが有するデータを、第2のDVOLに書き込む)。
(*)第2の第1JVOL内のJNLは、第3のJVOLにコピーされる。
(*)第3のストレージ装置が、第3のJVOL内の1以上の未反映のJNLのうち、最古の更新番号を有するJNLを第3のDVOLに反映する(JNLが有するデータを、第3のDVOLに書き込む)。
(*)第1のストレージ装置、第2のストレージ装置、及び第3のストレージ装置がある。
(*)第1のストレージ装置がコピー元であり、第2及び第3のストレージ装置が、第1のストレージ装置からのコピー先である。
(*)第1のストレージ装置に第1のホスト装置が接続されており、第2のストレージ装置に第2のホスト装置が接続されており、第3のストレージ装置に第3のホスト装置が接続されている。
(*)第1のストレージ装置が、第1のDVOLと、第1の第1JVOLと、第2の第1JVOLとを有する。
(*)第2のストレージ装置が、第2のDVOLと、第2のJVOLとを有する。
(*)第1及び第2のDVOLがペアになっている。第1のDVOLが、プライマリのDVOLであり、第2のDVOLが、セカンダリのDVOLである。
(*)第3のストレージ装置が、第3のDVOLと、第3のJVOLとを有する。
(*)第1及び第3のDVOLがペアになっている。第1のDVOLが、プライマリのDVOLであり、第3のDVOLが、セカンダリのDVOLである。
(*)第1のホスト装置が、第1のDVOLにデータを書き込む。
(*)第1のストレージ装置が、第1のDVOLに書き込まれるデータのJNLを、第1の第1JVOLと第2の第1JVOLの両方に書き込む。JNLは、ホスト装置の入出力対象のデータの他に、更新番号を含む。
(*)第1の第1JVOL内のJNLは、第2のJVOLにコピーされる。
(*)第2のストレージ装置が、第2のJVOL内の1以上の未反映のJNLのうち、最古の更新番号を有するJNLを第2のDVOLに反映する(JNLが有するデータを、第2のDVOLに書き込む)。
(*)第2の第1JVOL内のJNLは、第3のJVOLにコピーされる。
(*)第3のストレージ装置が、第3のJVOL内の1以上の未反映のJNLのうち、最古の更新番号を有するJNLを第3のDVOLに反映する(JNLが有するデータを、第3のDVOLに書き込む)。
さらに、特許文献1によれば、第1のストレージ装置に障害が発生した場合、第2のストレージ装置がコピー元になり、第3のストレージ装置がコピー先となる。
第2のストレージ装置がコピー元となった後、第2のホスト装置が、第2のDVOLにデータを書き込み、第2のストレージ装置が、更新番号を更新し、更新番号とデータを含んだJNLを第2のJVOLに書き込む。第2のJVOLから第3のJVOLにJNLがコピーされ、第3のストレージ装置が、第3のJVOL内のJNLが有するデータを第3のDVOLに書き込む。
ここで、第2のストレージ装置での更新番号の起点は、第2のストレージ装置において反映済みのJNLのうちの最新の更新番号であることが考えられる。なぜなら、第2のDVOLは、その最新の更新番号が表す順番までのデータを有するからである。
しかし、それが好ましくないケースがある。そのケースは、例えば、第2のストレージ装置において反映済みのJNLのうちの最新の更新番号が、第3のストレージ装置において反映済みのJNLのうちの最新の更新番号よりも古いケースである。なぜなら、そのケースでは、第2のDVOLの状態の方が第3のDVOLの状態よりも古い状態にあり、古い状態のDVOLから新しい状態のDVOLにデータがコピーされることになるからである。
このように、第1のストレージ装置に障害が発生した場合、業務が適切に継続されないケースがある。
このような問題は、第1のストレージ装置が障害以外の原因で停止する場合(例えば、メンテナンスのためのいわゆる計画停止により第1のストレージ装置が停止させられる場合)についても有り得る。
そこで、本発明の目的は、マルチターゲット方式の非同期リモートコピーシステムにおいて、第1のストレージ装置が停止しても業務を適切に継続することにある。
第1の記憶資源グループを有し第1のホスト装置に接続されている第1のストレージ装置と、第2の記憶資源グループを有し第2のホスト装置に接続されている第2のストレージ装置と、第3の記憶資源グループを有し第3のホスト装置に接続されている第3のストレージ装置とを有する。
第1の記憶資源グループが、データが書き込まれる論理ボリュームである第1のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第1のジャーナル記憶資源とを有する。
第2の記憶資源グループが、データが書き込まれる論理ボリュームである第2のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第2のジャーナル記憶資源とを有する。
第3の記憶資源グループが、データが書き込まれる論理ボリュームである第3のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第3のジャーナル記憶資源とを有する。
第1のストレージ装置が、ホスト装置から第1のデータボリュームにデータが書き込まれる場合、第1の記憶資源グループ内のデータボリュームにデータが書き込まれる都度に更新される番号である更新番号を更新し、その更新番号とそのデータとを含んだジャーナルを作成し、そのジャーナルを第1のジャーナル記憶資源に書き込む。
マルチターゲット方式の非同期リモートコピーが行われる。その非同期リモートコピーでは、ジャーナルが、第1のストレージ装置から第2のストレージ装置へ転送され第2のデータボリュームに反映されることで第1のデータボリューム内のデータが第2のデータボリュームに書き込まれ、且つ、そのジャーナルが、第1のストレージ装置から第3のストレージ装置へ転送され第3のデータボリュームに反映されることで第1のデータボリューム内のデータが第3のデータボリュームに書き込まれる。具体的には、例えば、非同期リモートコピーでは、下記が行われる。
(A1)第1のジャーナル記憶資源から第2のジャーナル記憶資源にジャーナルがコピーされる。
(B1)第2のストレージ装置が、第2のジャーナル記憶資源における1以上の未反映のジャーナルを、更新番号の順に、第2のデータボリュームに反映する。
(A2)第1のジャーナル記憶資源から第3のジャーナル記憶資源にジャーナルがコピーされる。
(B2)第3のストレージ装置が、第3のジャーナル記憶資源における1以上の未反映のジャーナルを、更新番号の順に、第3のデータボリュームに反映する。
(A1)第1のジャーナル記憶資源から第2のジャーナル記憶資源にジャーナルがコピーされる。
(B1)第2のストレージ装置が、第2のジャーナル記憶資源における1以上の未反映のジャーナルを、更新番号の順に、第2のデータボリュームに反映する。
(A2)第1のジャーナル記憶資源から第3のジャーナル記憶資源にジャーナルがコピーされる。
(B2)第3のストレージ装置が、第3のジャーナル記憶資源における1以上の未反映のジャーナルを、更新番号の順に、第3のデータボリュームに反映する。
第1のストレージ装置が停止した場合、以下の処理が行われる。
(x1)第2のストレージ装置において最近反映されたジャーナルが有する更新番号と、第3のストレージ装置において最近反映されたジャーナルが有する更新番号とのどちらが新しいかが判断される。
(x2)第2及び第3のストレージ装置のうちの新ストレージ装置((x1)で新しいと判断された更新番号を有するストレージ装置)に、1以上の差分ジャーナルがあるか否かが判断される。1以上の差分ジャーナルは、(x1)で新しいと判断されなかった更新番号の次の更新番号を有するジャーナルから(x1)で新しいと判断された更新番号を有するジャーナルまでの1以上のジャーナルである。
(x3)(x2)の判断の結果が肯定的の場合、新ストレージ装置から旧ストレージ装置(第2及び第3のストレージ装置のうちの新ストレージ装置ではないストレージ装置)に、1以上の差分ジャーナルがコピーされる。
(x4)旧ストレージ装置が、1以上の差分ジャーナルを、更新番号の順に、旧ストレージ装置内のデータボリュームに反映する。
(x1)第2のストレージ装置において最近反映されたジャーナルが有する更新番号と、第3のストレージ装置において最近反映されたジャーナルが有する更新番号とのどちらが新しいかが判断される。
(x2)第2及び第3のストレージ装置のうちの新ストレージ装置((x1)で新しいと判断された更新番号を有するストレージ装置)に、1以上の差分ジャーナルがあるか否かが判断される。1以上の差分ジャーナルは、(x1)で新しいと判断されなかった更新番号の次の更新番号を有するジャーナルから(x1)で新しいと判断された更新番号を有するジャーナルまでの1以上のジャーナルである。
(x3)(x2)の判断の結果が肯定的の場合、新ストレージ装置から旧ストレージ装置(第2及び第3のストレージ装置のうちの新ストレージ装置ではないストレージ装置)に、1以上の差分ジャーナルがコピーされる。
(x4)旧ストレージ装置が、1以上の差分ジャーナルを、更新番号の順に、旧ストレージ装置内のデータボリュームに反映する。
以下、図面を参照して、本発明の幾つかの実施例を説明する。
なお、以下の説明では、「xxxテーブル」、「xxxビットマップ」の表現にて各種情報を説明することがあるが、各種情報は、テーブル或いはビットマップ以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」、「xxxビットマップ」を「xxx情報」と呼ぶことができる。
また、以下の説明では、種々の対象の識別情報として、番号が主に使用されるが、番号に代えて他種の識別情報(例えば、名称)が採用されても良い。
図1は、本発明の実施例1に係る非同期リモートコピーシステムの構成を示す。なお、以下の説明では、ジャーナルを「JNL」と記載し、データが書き込まれる論理ボリュームであるデータボリュームを「DVOL」と記載し、JNLが書き込まれる論理ボリュームであるJNLボリュームを「JVOL」と記載し、ホスト装置を「ホスト」と記載し、ストレージ装置を「ストレージ」と記載し、コントローラを「DKC」と記載する。
3つ以上のサイト、例えば、第1のサイト101A、第2のサイト101B、及び第3のサイト101Cがある。以下、説明を分かりやすくするため、第1のサイト101Aが有する要素の参照符号は、親番号と子符号「A」の組合せであり、第2のサイト101Bが有する要素の参照符号は、親番号と子符号「B」の組合せであり、第3のサイト101Bが有する要素の参照符号は、親番号と子符号「C」の組合せである。
第1のサイト101Aは、第1のストレージ105Aと、第1のストレージ105Aに接続された第1のホスト103Aとを有する。第1のストレージ105Aは、第1のDKC111Aと、第1のJNLグループ112Aとを有する。1つのJNLグループ112Aは、DVOL113Aと、JVOL115Aとを含む。
第2及び第3のサイト101B及び101Cは、第1のサイト101Aと同様の構成を有する。
ストレージ105A及び105B同士は、専用線(又は通信ネットワーク)を介して、物理的に接続されている。ストレージ105B及び105C同士も、専用線(又は通信ネットワーク)を介して、物理的に接続されている。ストレージ105A及び105C同士も、専用線(又は通信ネットワーク)を介して、物理的に接続されている。
ストレージ同士を接続するパスとして、図2に示すように、制御パスと、データ転送パスがある。制御パスは、差分リシンク(後述)に必要なパスである。具体的には、例えば、差分リシンク処理において、シーケンス番号取得要求(後述)が流れるパスである。データ転送パスは、JNLが流れるパスである。制御パス及びデータ転送パスは、いずれも、双方向通信が可能なパスである。
再び図1を参照する。
「ミラー」というJNLグループ同士の論理的な接続がある。図1によれば、JNLグループ112A及び112B同士の接続が、ミラー#0(番号「0」が割り当てられたミラー(M0))であり、JNLグループ112A及び112C同士の接続が、ミラー#1(番号「1」が割り当てられたミラー(M1))であり、JNLグループ112B及び112C同士の接続が、ミラー#2(番号「2」が割り当てられたミラー(M2))である。
以下、本実施例に係る処理の概要を説明する。なお、以下の説明では、JNLグループ112A、112B及び112Cは、特段の説明が無い限り、それぞれ1つであるとする。
本実施例に係るリモートコピーシステムでは、マルチターゲット方式の非同期リモートコピーが行われるようになっていて、第1のサイト101Aが運用サイトである。この場合、図3に示すように、第1のJNLグループ112Aのステータスが「マスター」であり、第2及び第3のJNLグループ112B及び112Cのステータスが「リストア」である。ステータス「マスター」は、コピー元であることを意味する。ステータス「リストア」は、コピー先であることを意味する。なお、図3(及び、後の図4及び図5)において、点線のミラーは、無効なミラーであり、実線のミラーは、有効なミラーである。
従って、図6に示すように、第1のDVOL113Aは、プライマリのDVOL(以下、PVOL)であり、第2及び第3のDVOL113B及び113Cは、セカンダリのDVOL(以下、SVOL)である。
図6に示すように、運用サイトである第1のサイト101Aにおいて、第1のホスト103Aが、業務の実行に伴い、PVOL113Aにデータを書き込む(S11)。第1のストレージ105Aが、シーケンス番号(以下、SEQ#)を更新し、更新後のSEQ#とPVOL113Aに書き込まれたデータとを有するJNLを作成し、作成したJNLを第1のJVOL115Aに書き込む(S12)。SEQ#は、第1のJNLグループ112A(第1のJNLグループ112A内のDVOL)にデータが書き込まれる都度に更新される(例えば1インクリメント(又は1デクリメント)される)番号である。
第2のストレージ105Bが、第1のJVOL115AからJNLを読み出し、読み出したJNLを第2のJVOL115Bに書き込む(S21)。第2のストレージ105Bは、第2のJVOL115B内の1以上の未反映のJNLを、SEQ#の小さい順に、SVOL113Bに反映する(S22)。具体的には、第2のストレージ105Bは、第2のJVOL115B内の未反映のJNLが有するデータをSVOL113Bに書き込む。これにより、PVOL113Aに書き込まれたデータが、SVOL113Bにコピーされたことになる。
第3のストレージ105Cが、第1のJVOL115AからJNLを読み出し、読み出したJNLを第3のJVOL115Cに書き込む(S31)。第3のストレージ105Cは、第3のJVOL115C内の1以上の未反映のJNLを、SEQ#の小さい順に、SVOL113Cに反映する(S32)。具体的には、第3のストレージ105Cは、第3のJVOL115C内の未反映のJNLが有するデータをSVOL113Cに書き込む。これにより、PVOL113Aに書き込まれたデータが、SVOL113Cにコピーされたことになる。
1つのコピー元JNLグループに対して2つより多くのコピー先JNLグループが存在しても良い。
本実施例によれば、1つのコピー元JNLグループに含まれるJVOLが、複数のコピー先JNLグループに共通である。別の言い方をすれば、1つのコピー元JNLグループに含まれるJVOLの数は、コピー先JNLグループの数に依存しない。これは、ストレージ装置間のJNLのコピー(転送)が、コピー先のストレージ装置がコピー元のストレージ装置内のJVOLからJNLを読み出すことにより、実現される。この特徴によれば、第1のストレージ105Aにおいて消費される記憶容量を節約することができる。
さて、図7に示すように、運用サイトである第1のサイト101Aにおいて、第1のストレージ105Aに障害が発生したとする(S40)。この場合、運用サイトが、第1のサイト101Aから第2のサイト101Bに切り替わる。具体的には、第1のホスト103Aから第2のホスト103Bへのフェイルオーバが行われる(S41)。第2のホスト103Bが、第2のストレージ105Bに所定のコマンドを送信する(S42)。
第2のストレージ105Bが、所定のコマンドを受信する。この場合、図4に示すように、ストレージ105B及び/又は105Cによってミラー#2が有効とされ、第2及び第3のJNLグループ112B及び112Cのステータスが、一時的に、「マスター/リストア」となる。S43の判断のために、第2のストレージ105Bと第3のストレージ105Cとの間で、SEQ#をやり取りするためである。ステータス「マスター/リストア」は、コピー元でもありコピー先でもあることを意味する。第2及び第3のJNLグループ112B及び112Cのステータスは、差分リシンク(後述)が終了するまで、「マスター/リストア」である。
第2のストレージ105Bが、所定のコマンドに応答して、第3のストレージ105Cにおいて最近反映されたJNLが有するSEQ#(以下、SEQ#(3))を第3のストレージ105Cに要求し(シーケンス番号取得要求を送信し)、その要求に応答して、SEQ#(3)を第3のストレージ105Cから受信する。第2のストレージ105Bが、SEQ#(3)と、第2のストレージ105Bにおいて最近反映されたJNLが有するSEQ#(以下、SEQ#(2))とのどちらが新しいかを判断する。その判断の結果に応じて、図8及び図9に示す差分リシンクが行われる。
すなわち、SEQ#(3)の方がSEQ#(2)より新しい場合、図8に示すように、第2のストレージ105Bが、第3のJVOL115Cから、1以上の差分JNLを読み出し、第2のJVOL115Bに書き込む(S44−1)。ここで言う「1以上の差分JNL」は、SEQ#(2)の次のSEQ#を有するJNLからSEQ#(3)を有するJNLまでの1以上のJNLである。第2のストレージ105Bは、第2のJVOL115B内の1以上の差分JNLを、SEQ#(2)の次のSEQ#を有するジャーナルから先に、SEQ#の小さい順に、第2のDVOL113Bに反映する(S45−1)。これにより、第2のDVOL113B内のデータが、差分リシンク開始時の第3のDVOL113C内のデータと一致する。
一方、SEQ#(2)の方がSEQ#(3)より新しい場合、図9に示すように、第2のストレージ105Bが、第2のJVOL115B内の1以上の差分JNLを、第3のJVOL115Cに書き込む(S44−2)。ここで言う「1以上の差分JNL」は、SEQ#(3)の次のSEQ#を有するJNLからSEQ#(2)を有するJNLまでの1以上のJNLである。第3のストレージ105Cは、第3のJVOL115C内の1以上の差分JNLを、SEQ#(3)の次のSEQ#を有するジャーナルから先に、SEQ#の小さい順に、第3のDVOL113Cに反映する(S45−2)。これにより、第3のDVOL113C内のデータが、差分リシンク開始時の第2のDVOL113B内のデータと一致する。
その後、第2のサイト101Bが運用サイトとなり、業務が継続する。具体的には、図5に示すように、第2のJNLグループ112Bのステータスが「マスター」になり、第3のJNLグループ112Cのステータスが「リストア」になる。従って、図10に示すように、第2のDVOL113BがPVOLになり、第3のDVOL113CがSVOLになる。第2のホスト103Bが、PVOL113Bにデータを書き込む(S51)。第2のストレージ105Bが、SEQ#を更新し、SEQ#とPVOL113Bに書き込まれたデータとを有するJNLを作成し、作成したJNLを第2のJVOL115Bに書き込む(S52)。第3のストレージ105Cが、第2のJVOL115BからJNLを読み出し、読み出したJNLを第3のJVOL115Cに書き込む(S53)。第3のストレージ105Cが、第3のJVOL115C内のJNLを、SEQ#の小さい順に、SVOL113Cに反映する(S54)。
本実施例によれば、第2のストレージ105Bが、SEQ#(3)を第3のストレージ105Cから取得し、SEQ#(3)とSEQ#(2)のどちらが新しいかを判断し、その判断の結果を基に、第2及び第3のストレージ105B及び105Cのどちらからどちらに1以上の差分JNLを転送するかを制御する。これにより、第1のストレージ105Aに障害が発生しても業務を適切に継続することができる。また、転送される1以上の差分JNLは、第2及び第3のストレージ105B及び105C間の差分にすぎないので、転送されるJNLの数を少なく抑えることができる。
以下、本実施例を詳細に説明する。その際、第1のサイト101A内の要素を代表的に例に採り説明するが、特段の説明が無ければ、第2及び第3のサイト101B及び101C内の要素は、第1のサイト101A内の要素と実質的に同じである。
図11は、第1のストレージ105Aの構成を示す。
第1のストレージ105Aは、第1のDKC111Aと、複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ(以下、RG)900Aとを有する。RG900Aは、複数のHDD(Hard Disk Drive)で構成されている。HDDに代えて、フラッシュメモリ等の別の物理記憶デバイスが採用されても良い。1又は複数の論理ボリュームが、1つのRG900Aに基づいている。論理ボリュームは、例えば、前述したDVOL又はJVOLであるが、そのどちらも、RG900Aの記憶空間の一部である実体的な論理ボリュームであっても良いし、1以上のRG900を基に構成されたプール(複数の実領域で構成される記憶領域)から実領域が動的に割り当てられる仮想的な論理ボリューム(Thin Provisioningの技術に従う仮想的な論理ボリューム)であっても良い。
DKC111Aは、複数のフロントエンドインターフェイス装置(以下、FE−IF)610Aと、バックエンドインターフェイス装置(以下、BE−IF)150Aと、キャッシュメモリ(以下、CM)620Aと、共有メモリ(以下、SM)640Aと、それらに接続された1以上のCPU(Central Processing Unit)630Aとを有する。DKC111Aの処理は、CPU630Aが1以上のコンピュータプログラムを実行することにより行われて良いが、その処理の少なくとも一部が、ハードウェア回路によって行われても良い。
複数のFE−IF610Aに、第1のホスト103A、第2及び第3のストレージ105B及び105Cが接続される。DKC111A(CPU630A)は、FE−IF610Aを介して、第1のホスト103A、第2及び第3のストレージ105B及び105Cと通信する。
BE−IF150Aに、複数のRG900Aが接続される。DKC111A(CPU630A)は、BE−IF150Aを介して、書込み先の論理ボリューム(例えば、第1のDVOL113A又は第1のJVOL115A)の基になっているRG900Aにデータ(又はJNL)を書き込む。
CM620Aは、RG900Aに書き込まれるデータ(及びJNL)、RG900Aから読み出されたデータ(及びJNL)を記憶する。
SM640Aは、DKC111Aの処理の制御に使用される種々の制御情報を記憶する。
CPU630Aは、DKC111Aが行う処理を制御する。
以上が、第1のストレージ105Aの構成の説明である。なお、DKC111Aは、図11に示す構成に限らず、他の構成を有していても良い。また、第2及び第3のストレージ105B及び105Cの構成は、第1のストレージ105Aの構成と実質的に同じである。DKC111B又は111Cの構成は、DKC111Aの構成と違っていても良い。
図12は、JNLの構成を示し、図13は、JVOL115Aの構成を示す。
JNLは、メタ情報とデータで構成されている。
JVOL115Aは、メタ領域1201Aと、データ領域1203Aとで構成される。メタ領域1201Aは、メタ情報を記憶し、データ領域1203Aは、データを記憶する。なお、メタ領域1201Aは、CM620A等、RG900Aとは別の記憶資源に存在しても良い。
図14は、メタ情報の構成を示す。
メタ情報は、JNLに含まれるデータに関する管理情報である。メタ情報は、例えば、下記の情報、
(*)SEQ#、
(*)ライト先情報(DVOLのどこにデータが書き込まれるかを表す情報)
(*)PVOL#(コピー元のDVOLの番号)、
(*)SVOL#(コピー先のDVOLの番号)、
(*)このメタ情報に対応したデータのJVOLにおける位置を表す情報(この情報は、JNLがJVOLに書き込まれる際に含まれる)、
を含む。
(*)SEQ#、
(*)ライト先情報(DVOLのどこにデータが書き込まれるかを表す情報)
(*)PVOL#(コピー元のDVOLの番号)、
(*)SVOL#(コピー先のDVOLの番号)、
(*)このメタ情報に対応したデータのJVOLにおける位置を表す情報(この情報は、JNLがJVOLに書き込まれる際に含まれる)、
を含む。
通常は、第1のDKC111Aが、SEQ#を管理する。SEQ#は、JNLグループ112A毎にある。第1のDKC111Aは、或るJNLグループ112A内のDVOL113Aにデータを書き込んだ場合、そのJNLグループ112Aに対応するSEQ#を更新する。SEQ#は、例えば、SM640A又は他の記憶資源に記憶されている。
第1のストレージ105Aに障害が発生し、第2のサイト101Bが運用サイトになった場合、第2のストレージ105Bが、JNLグループ112B毎のSEQ#を管理する。
図15に示すように、SM640Aが、制御情報として、例えば、JVOL有効ビットマップ701A、DVOL有効ビットマップ702A、JVOL管理テーブル703A、JNLグループ管理テーブル704A、ペア管理テーブル705A、差分ビットマップ706A、及びミラービットマップ707Aを記憶する。同様に、第2のストレージ105B内のSM640Bは、制御情報701B〜707Bを記憶し、第3のストレージ105C内のSM640Cは、制御情報701C〜707Cを記憶する。以下、制御情報701A〜707Aを代表して説明する。
JNLグループは、例えば、最大64個の論理ボリュームを有することができる。JVOL有効ビットマップ701Aは、図16に示すように、JNLグループ毎に、64個のビットを有する。n番目(nは0以上63以下の整数)の論理ボリュームがJVOL115Aであれば、n番目のビットがオン(例えば1)である。
DVOL有効ビットマップ702Aは、図17に示すように、JNLグループ毎に、64個のビットを有する。n番目(nは0以上63以下の整数)の論理ボリュームがJVOL115Aであれば、n番目のビットがオン(例えば1)である。
JVOL管理テーブル703Aは、JNLグループ112A毎に存在する。テーブル703Aは、図18に示すように、JVOL115A毎に、メタ領域の先頭アドレスを表す情報と、メタ領域のサイズを表す情報と、データ領域の先頭アドレスを表す情報と、データ領域のサイズを表す情報とを有する。つまり、テーブル703Aは、JVOL115A毎に、どこからどこまでがメタ領域でどこからどこまでがデータ領域であるかを表す。
JNLグループ管理テーブル704Aは、JNLグループに関する情報を有する。具体的には、例えば、テーブル704Aは、図19に示すように、JNLグループ毎に、下記の情報、
(*)JNLグループの番号を表すJNLグループ#1001A、
(*)JNLグループのステータスを表すステータス1002A、
(*)本実施例に係るリモートコピーシステムに存在するミラーの番号を表すミラー#1003A、
(*)相手のJNLグループの番号を表す相手JNLグループ#1004A、
(*)相手のJNLグループを有するストレージ装置の番号を表す相手ストレージ#1005A、
(*)最近パージされたJNLが有するSEQ#を表すパージ済みSEQ#1006A、
(*)パージされて良いJNLが有するSEQ#を表すパージ可能SEQ#1007A、
(*)最近読み出したJNLが有するSEQ#を表すリード済みSEQ#1008A、
を有する。
(*)JNLグループの番号を表すJNLグループ#1001A、
(*)JNLグループのステータスを表すステータス1002A、
(*)本実施例に係るリモートコピーシステムに存在するミラーの番号を表すミラー#1003A、
(*)相手のJNLグループの番号を表す相手JNLグループ#1004A、
(*)相手のJNLグループを有するストレージ装置の番号を表す相手ストレージ#1005A、
(*)最近パージされたJNLが有するSEQ#を表すパージ済みSEQ#1006A、
(*)パージされて良いJNLが有するSEQ#を表すパージ可能SEQ#1007A、
(*)最近読み出したJNLが有するSEQ#を表すリード済みSEQ#1008A、
を有する。
ペア管理テーブル705Aは、DVOL同士のペアに関する情報を有する。具体的には、例えば、テーブル705Aは、図20に示すように、DVOL113A毎に、下記の情報、
(*)DVOL113Aの番号を表すDVOL#1101A、
(*)DVOL113Aを含んだJNLグループ112Aの番号を表すJNLグループ#1102A、
(*)DVOL113Aのコピー先のDVOLの番号を表すコピー先VOL#1103A、
(*)DVOL113Aとコピー先のDVOLとのペアについて、DVOL113Aのペアステータスを表すステータス1104A、
を有する。
(*)DVOL113Aの番号を表すDVOL#1101A、
(*)DVOL113Aを含んだJNLグループ112Aの番号を表すJNLグループ#1102A、
(*)DVOL113Aのコピー先のDVOLの番号を表すコピー先VOL#1103A、
(*)DVOL113Aとコピー先のDVOLとのペアについて、DVOL113Aのペアステータスを表すステータス1104A、
を有する。
差分ビットマップ706Aは、DVOL113A毎に有する。DVOL113Aは、複数のブロックで構成されている。差分ビットマップ706Aは、DVOL113Aのどのブロックが更新されたかを表す。すなわち、差分ビットマップ706Aが有するビットは、ブロックに対応している。差分ビットマップ706Aは、DVOL113Aのペアステータスが所定のステータスの場合に、更新される。具体的には、例えば、DKC111Aは、或るDVOL113Aのペアステータスが所定のステータスであり、且つ、そのDVOL113A内の或るブロックにデータを書き込んだ場合、そのDVOL113Aに対応した差分ビットマップ706Aにおける、そのブロックに対応したビットを、オン(例えば1)に変更する。
ミラービットマップ707Aは、どのミラーが有効でどのミラーが無効になっているかを表す。具体的には、ミラービットマップ707Aは、複数のミラーに対応した複数のビットを有する。例えば、通常は、ミラー#0及び#1が有効でありミラー#2が無効である(図6参照)。この場合、ミラー#0及び#1に対応したビットがオン(例えば1)であり、ミラー#2に対応したビットがオフ(例えば0)である。また、第1のストレージ105Aに障害が生じた場合、ミラー#0及び#1が無効でありミラー#2が有効である(図10参照)。この場合、ミラー#0及び#1に対応したビットがオフであり、ミラー#2に対応したビットがオンである。
以下、本実施形態で行われる幾つかの処理を説明する。
<形成コピー>。
PVOLからSVOLへの非同期リモートコピー(JNLを利用したリモートコピー)の開始前は、PVOLが有するデータ(PVOLの内容)とSVOLが有するデータ(SVOLの内容)が互いに一致している必要がある。そのために、形成コピーが行われる。「形成コピー」とは、PVOLの内容とSVOLの内容を一致させるコピーである。
図21に示すように、PVOL113AとSVOL113Bのペアのステータスと、PVOL113AとSVOL113Cのペアのステータスとの両方が、サスペンドとされることがある(S2101−1、S2101−2)。具体的には、PVOL113Aのペアステータスが「PSUS」(プライマリのサスペンド)になり、SVOL113B及び113Cのペアステータスが「SSUS」になる。この場合、第1のDKC111Aが、そのPVOL113Aを含んだJNLグループ112Aに対応するSEQ#を所定値(例えばゼロ)にリセットする。
この場合、第1のDKC111Aは、PVOL113Aにデータを書き込んでも、そのデータを有するJNLを作成しない。第1のDKC111Aは、PVOL113Aの或るライト先ブロックにデータを書き込んだ場合(S2102)、そのPVOL113Aのペアステータスが「PSUS」であれば、そのPVOL113Aに対応する差分ビットマップ706Aにおける、ライト先ブロックに対応したビットを、オン(例えば1)にする(S2103)。PVOL113Aのペアステータスが「PSUS」である場合、PVOL113Aにおける未更新のブロックにデータが書き込まれる都度に、S2103が行われる。
第1のDKC111Aが、第1のホスト103A(又は第1のDKC111Aに接続されている図示しない管理端末)から、形成コピー指示を受ける(S2111)。その形成コピー指示の受領が、形成コピーの開始の契機である。形成コピーは、第1のペア(PVOL113AとSVOL113Bのペア)と第2のペア(PVOL113AとSVOL113Cのペア)について、並行して行われても良いが、本実施形態では、並行して行われず、順次に行われる。このため、PVOL113Aへのアクセスの集中を緩和することができる。
例えば、まず、図21に示すように、第1のペアについて形成コピーが行われる。すなわち、第1のDKC111Aが、差分ビットマップ706Aにおいてオンになっているビットに対応したブロック(その差分ビットマップ706Aに対応するPVOL113Aにおけるブロック)を特定する。そして、第1のDKC111Aが、特定したブロック内のデータを有するJNLを作成し、作成したJNLを、第1のJVOL115Aに格納せず、第2のJVOL115Bに書き込む(S2112)。第2のDKC111Bが、第2のJVOL115B内のJNLをSVOL113Bに反映する(S2113)。PVOL113Aにおける全ての更新済みブロック(オンになっているビットに対応したブロック)について、S2112及びS2113が行われる。
第1のペアについて形成コピーが完了した後に、第2のペアについて形成コピーが行われる。すなわち、第1のDKC111Aが、PVOL113Aにおける更新済みブロック内のデータを有するJNLを作成し、作成したJNLを、第1のJVOL115Aに格納せず、第3のJVOL115Cに書き込む(S2115)。第3のDKC111Cが、第3のJVOL115C内のJNLをSVOL113Cに反映する(S2116)。PVOL113Aにおける全ての更新済みブロックについて、S2115及びS2116が行われる。
<ライト処理、及び、JNL作成処理>。
図22に示すように、第1のDKC111Aは、PVOL113Aを指定したライト要求を第1のホスト103Aから受信し(S2201)、CM630AにCM領域(キャッシュメモリ領域)を確保し、確保したCM領域に、そのライト要求に従うデータ(ライト対象のデータ)を書き込む(S2202)。第1のDKC111Aは、この時点で、第1のホスト103Aに書込み完了を応答して良い。
第1のDKC111Aは、CM630A内のライト対象のデータを、PVOL113Aに書き込む(S2203)。
第1のDKC111Aは、そのPVOL113Aを含んだJNLグループ112Aに対応するSEQ#を更新する(S2211)。第1のDKC111Aは、JNLを作成し(S2212)、作成したJNLを第1のJVOL115Aに書き込む。S2212で作成されたJNLは、S2211で更新されたSEQ#(又は更新前のSEQ#)を含んだメタ情報と、S2203でPVOL113Aに書き込まれたデータとを有する。そのデータは、PVOL113Aから読み出されたデータでも良いし、CM630Aに残っているデータでも良い。
<JNLのリード処理>。
第2のDKC111Bが第1のJVOL115AからJNLを読み出すことを例に採り、JNLリード処理を説明する。
図23に示すように、第2のDKC111Bが、リード対象SEQ#を算出する(S2301)。「リード対象SEQ#」は、読み出すべきJNLに含まれているSEQ#である。リード対象SEQ#は、具体的には、JNLグループ112Bのミラー#0に対応したリード済みSEQ#1008B(JNLグループ管理テーブル704B内の情報1008B)が表す値に1が加算された値(つまり、リード済みSEQ#1008Bが表す値の次の値)である。
第2のDKC111Bが、リード要求を第1のストレージ105Aに送信する(S2302)。そのリード要求は、S2301で算出されたリード対象SEQ#と、JNLのリード元となるJVOL115Aの番号(又はそれに対応するLUN(Logical Unit Number))とを有する。JVOL115Aの番号は、例えば、SM640Bが記憶する制御情報から特定される。具体的には、例えば、制御情報は、SVOL113Bを有するJNLグループ112Bに対応したJNLグループ112Aが有するJVOL112Aの番号を有する。
第1のDKC111Aが、第2のDKC111Bからリード要求を受信する。第1のDKC111Aは、そのリード要求を基に、リード元のJVOL115Aから、リード対象SEQ#を有するJNLを特定する(S2303)。第1のDKC111Aは、特定されたJNLをリード元のJVOL115Aから読み出し、読み出したJNLを、第1及び第2のストレージ105A及び105B間のデータ転送パスを介して、第2のDKC111Bに送信する(S2304)。
第2のDKC111Bは、第1のDKC111AからJNLを受信し、受信したJNLを、第2のJVOL115Bに書き込む(S2305)。第2のDKC111Bは、SVOL113Bを有するJNLグループ112Bのミラー#0に対応したリード済みSEQ#1008Bが表す値を、リード対象SEQ#が表す値に変更する(S2306)。つまり、第2のDKC111Bは、そのリード済みSEQ#1008Bが表す値に、1を加算する。
<JNLの反映処理>。
第2のストレージ105BにおけるJNLの反映を例に採り、JNLの反映処理を説明する。
図24に示すように、第2のDKC111Bは、第2のJVOL115B内の1以上の未反映のJNLのうち最古のSEQ#を有するJNLを、SVOL113Bに反映する(S2401)。具体的には、第2のDKC111Bは、JNLグループ112Bのミラー#0に対応したパージ可能SEQ#1007B(JNLグループ管理テーブル704Bが有する情報1007B)が表す値より1大きいSEQ#を含んだJNLを、第2のJVOL115Bから読み出し、読み出したJNLが有するデータを、SVOL113Bに書き込む。
第2のDKC111Bは、JNLグループ112Bのミラー#0に対応したパージ可能SEQ#1007Bが表す値を変更する(S2402)。具体的には、第2のDKC111Bは、そのパージ可能SEQ#1007Bが表す値に1を加算する。
第2のDKC111Bは、更新後のパージ可能SEQ#1007Bが表す値を第1のDCK111Aに通知する(S2403)。
第1のDKC111Aは、JNLグループ112Aのミラー#0に対応したパージ可能SEQ#1007Aが表す値を、第2のDKC111Bから通知された値に変更する(S2404)。
<JVOLの使用率のチェック>。
各DKCは、そのDKCを有するストレージ内のJVOLを、定期的に(又は不定期的に)、チェックする。以下、それを、第1のストレージ105Aを例に採り説明する。
第1のDKC111Aが、定期的に(又は不定期的に)、図25に示す処理を行う。
すなわち、第1のDKC111Aが、第1のJVOL115Aの使用率(第1のJVOL115Aの容量に対する、第1のJVOL115Aにおける1以上のJNLの総容量の割合)が所定の閾値を超えているか否かを判断する(S2501)。その判断の結果が否定的であれば(S2501:NO)、処理が終了する。
その判断の結果が肯定的であれば(S2501:YES)、第1のDKC111Aは、第1のJVOL115A内のJNLにパージ可能なJNLが存在するか否かを判断する(S2502)。パージ可能なJNLは、以下の(A)のJNLから(B)のJNLまでである。
(A)JNLグループ112Aに対応したパージ済みSEQ#1006A(図19参照)が表す値をSEQ#として含んだJNL。
(B)JNLグループ112Aのミラー#0に対応したパージ可能SEQ#1007Aが表す値と、JNLグループ112Aのミラー#1に対応したパージ可能SEQ#1007Aが表す値とのうち、小さい方の値をSEQ#として含んだJNL。
(A)JNLグループ112Aに対応したパージ済みSEQ#1006A(図19参照)が表す値をSEQ#として含んだJNL。
(B)JNLグループ112Aのミラー#0に対応したパージ可能SEQ#1007Aが表す値と、JNLグループ112Aのミラー#1に対応したパージ可能SEQ#1007Aが表す値とのうち、小さい方の値をSEQ#として含んだJNL。
S2502の判断の結果が肯定的であれば(S2502:YES)、第1のDKC111Aは、第1のJVOL115Aからパージ可能なJNLをパージする(S2503)。その後、第1のDKC111Aは、S2501を行う。
S2502の判断の結果が否定的であれば(S2502:NO)、第1のDKC111Aは、ネックのペアをサスペンドする(S2504)。「ネックのペア」とは、ミラー#0及びミラー#1のいずれかに対応したペアであって、パージ可能SEQ#10007Aが表す値が小さい方のペアである。そのペアがネックである理由は、小さい方のパージ可能SEQ#10007Aが大きい方のパージ可能SEQ#10007Aに比べてかなり小さいために、パージ可能なJNLの数が少なくなってしまっているからである。
ネックのペアをサスペンドした場合、パージ可能なJNLの数が増える。具体的には、パージ可能なJNLは、大きい方のパージ可能SEQ#10007Aが表す値をSEQ#として含んだJNLまでである。このため、第1のDKC111Aは、S2504の後に、S2502及びS2503を行う。
また、第1のDKC111Aは、ネックのペアをサスペンドした場合、そのペアについては、差分管理及びリシンクを行うことになる(S2510)。具体的には、下記が行われることになる(ここの説明では、ネックのペアは、ミラー#1に対応したペアであるとする)。
(*)第1のDKC111Aは、PVOL113Aにデータを書き込んだ場合、そのデータのライト先ブロックに対応したビット(PVOL113Aに対応した差分ビットマップ706A内のビット)がオフになっていれば、そのビットをオンにする。
(*)第1のDKC111Aは、所定のタイミングで(例えば、リシンク指示を第1のホスト103A(又は管理端末)から受けたときに)、リシンクを行う。具体的には、第1のDKC111Aは、オンのビットに対応したブロック内のデータを含んだJNLを、第3のJVOL115Cに書き込む。
(*)第1のDKC111Aは、PVOL113Aにデータを書き込んだ場合、そのデータのライト先ブロックに対応したビット(PVOL113Aに対応した差分ビットマップ706A内のビット)がオフになっていれば、そのビットをオンにする。
(*)第1のDKC111Aは、所定のタイミングで(例えば、リシンク指示を第1のホスト103A(又は管理端末)から受けたときに)、リシンクを行う。具体的には、第1のDKC111Aは、オンのビットに対応したブロック内のデータを含んだJNLを、第3のJVOL115Cに書き込む。
なお、ミラー#0及びミラー#1に対応したペアのうちネックのペアをサスペンドし、S2502及びS2503を行った後であっても、S2501の判断の結果が肯定的となる場合には、そのS2502の判断の結果が否定的となる。この場合、第1のDCK111Aは、残りのペアもサスペンドする。この結果、図21においてS2101−1とS2101−2の両方が行われたことになる。この場合、JNLグループ112Aについての全てのJNLがパージ可能なJNLであるので、S2503でそれらのJNLがパージされれば、S2501の判断の結果は必ず否定的となり、処理が終了する。
<第1のストレージ105Aに障害が発生した場合に行われる処理>。
図26に示すように、第1のストレージ105Aに障害が発生した場合(S2601)、第1のホスト103Aから第2のホスト103Bへのフェイルオーバが行われる(S2602)。
次に、第2のホスト103Bが、所定のコマンドとしてテイクオーバコマンドを、第2のストレージ105Bに送信する(S2603)。
次に、第2のDKC111Bが、テイクオーバコマンドに応答して、種々のステータスを更新する(S2604)。具体的には、例えば、第2のDKC111Bは、下記の更新を行う。
(*)DVOL113B及びミラー#0に対応したペアステータスを、「SSWS」に更新する。第2のDKC111Bは、DVOL113BがSVOLであれば、通常は、第2のホスト103BからDVOL113Bへのデータ書込みを禁止しているが、「SSWS」は、DVOL113BがSVOLであっても、データの書込みが許可されていることを意味する。
(*)DVOL113B及びミラー#1に対応したペアステータスを、「SSUS」に更新する。「SSUS」は、ミラー#1に対応したペアがサスペンドされていることを意味する。これにより、ミラー#0に対応したペアステータスが「SSWS」となっていても、第2のホスト103BからDVOL113Bへのデータの書込みの禁止が維持される。
(*)DVOL113Bのステータスを「HOLD」に変更する。「HOLD」は、差分リシンクの開始を待っていることを意味する。
(*)ミラービットマップ707Bにおける、ミラー#0に対応したビットをオフにし、ミラー#2に対応したビットをオンにする。
(*)DVOL113B及びミラー#0に対応したペアステータスを、「SSWS」に更新する。第2のDKC111Bは、DVOL113BがSVOLであれば、通常は、第2のホスト103BからDVOL113Bへのデータ書込みを禁止しているが、「SSWS」は、DVOL113BがSVOLであっても、データの書込みが許可されていることを意味する。
(*)DVOL113B及びミラー#1に対応したペアステータスを、「SSUS」に更新する。「SSUS」は、ミラー#1に対応したペアがサスペンドされていることを意味する。これにより、ミラー#0に対応したペアステータスが「SSWS」となっていても、第2のホスト103BからDVOL113Bへのデータの書込みの禁止が維持される。
(*)DVOL113Bのステータスを「HOLD」に変更する。「HOLD」は、差分リシンクの開始を待っていることを意味する。
(*)ミラービットマップ707Bにおける、ミラー#0に対応したビットをオフにし、ミラー#2に対応したビットをオンにする。
次に、第2のDKC111Bは、第3のストレージ105Cから、パージ可能SEQ#が表す値を取得する(S2605)。具体的には、例えば、第2のDKC111Bが、JNLグループ112C及びミラー#2に対応したパージ可能SEQ#1007C(JNLグループ管理テーブル704C内の情報1007C)が表す値を、第2及び第3のストレージ105B及び105C間の制御パスを介して、第3のストレージ105Cに要求する。第3のDKC111Cが、その要求に応答して、JNLグループ112C及びミラー#2に対応したパージ可能SEQ#1007Cが表す値を、上記制御パスを介して、第2のDKC111Bに通知する。
次に、第2のDKC111Bは、JNLグループ112B及びミラー#2に対応したパージ可能SEQ#1007Bが表す値と、取得されたパージ可能SEQ#1007Cが表す値とを比較する(S2606)。すなわち、第2のDKC111Bは、第2のストレージ105Bで最近反映されたJNLが有するSEQ#(以下、SEQ#(2))と、第3のストレージ105Cで最近反映されたJNLが有するSEQ#(以下、SEQ#(3))とを比較する。
次に、第2のDKC111Bは、差分リシンクが可能か否かを判断する(S2607)。
ここで、差分リシンクが可能なケース及び差分リシンクが不可能なケースを説明する。その際、SEQ#(2)とSEQ#(3)のうち、より大きいSEQ#を、「SEQ#(大)」と言い、より小さいSEQ#を、「SEQ#(小)」と言う。また、第2及び第3のストレージ105B及び105Cのうち、SEQ#(大)を有するストレージを、ストレージ(大)と言い、他方のストレージを、ストレージ(小)と言う。
差分リシンクが可能なケースは、図27に示すようなケース、すなわち、ストレージ(大)のJNLグループ及びミラー#2に対応したパージ済みSEQ#が表す値が、SEQ#(小)以下であるケースである。別の言い方をすれば、ストレージ(大)が、SEQ#(小)の次のSEQ#(SEQ#(小)+1に等しいSEQ#)を含んだJNL(以下、JNL(X))からSEQ#(大)を含んだJNL(以下、JNL(Y))を有しているケースである。以下、JNL(X)からJNL(Y)までの1以上のJNL(すなわち、SEQ#(小)+1に等しいSEQ#からSEQ#(大)までのSEQ#を含んだ1以上のJNL)を、「1以上の差分JNL」と言う。
一方、差分リシンクが不可能なケースは、図28に示すようなケース、すなわち、ストレージ(大)内のJNLグループ及びミラー#2に対応したパージ済みSEQ#が表す値が、SEQ#(小)の次のSEQ#(SEQ#(小)+1に等しいSEQ#)より大きい値になっているケースである。なぜなら、SEQ#が連続していないからである。
再び図26を参照する。
S2607の判断の結果が否定的の場合(S2607:NO)、第2のDKC111Bは、全コピーを行う(S2608)。すなわち、第2のDKC111Bは、SEQ#(2)とSEQ#(3)のうちの大きい方のSEQ#を有するストレージ内のDVOL(例えばDVOL113B)に記憶されている全てのデータを、SEQ#(2)とSEQ#(3)のうちの小さい方のSEQ#を有するストレージ内のDVOL(例えばDVOL113C)にコピーする。これにより、DVOL113Bの内容とDVOL113Cの内容が一致する。
S2607の判断の結果が肯定的の場合(S2607:YES)、SEQ#(2)がSEQ#(3)より大きければ(S2609:YES)、第2のストレージ105Bから第3のストレージ105Cへの差分リシンクが行われる(S2610)。つまり、図9に示した差分リシンクが行われる。具体的には、第2のDKC111Bは、第2のJVOL115Bから1以上の差分JNLを読み出し、1以上の差分JNLのライト要求(第3のJVOL115Cを指定したライト要求)を第3のストレージ105Cに送信することで、1以上の差分JNLを、第3のJVOL115Cに書き込む(それに代えて、第3のDKC111Cが、第2のJVOL115Bを指定したリード要求(SEQ#(3)の次のSEQ#からSEQ#(2)を含んだリード要求)を送信し、それに応答して、1以上の差分JNLを第2のストレージ105Bから受信し、それら1以上の差分JNLを第3のJVOL115Cに書き込んでも良い)。第3のDKC111Cが、第3のJVOL115C内の1以上の差分JNLを、SEQ#(3)の次のSEQ#を有するJNLから先に、SEQ#の小さい順に、DVOL113Cに反映する。これにより、DVOL113Cの内容がDVOL113Bの内容に一致する。
S2607の判断の結果が肯定的の場合(S2607:YES)、SEQ#(2)がSEQ#(3)より小さければ(S2609:NO)、第3のストレージ105Bから第2のストレージ105Cへの差分リシンクが行われる(S2611)。つまり、図8に示した差分リシンクが行われる。具体的には、第2のDKC111Bが、第3のJVOL115Cを指定したリード要求(SEQ#(2)の次のSEQ#からSEQ#(3)を含んだリード要求)を送信し、それに応答して、1以上の差分JNLを第3のストレージ105Cから受信し、それら1以上の差分JNLを第2のJVOL115Bに書き込む(それに代えて、第3のDKC111Bが、第3のJVOL115Cから1以上の差分JNLを読み出し、1以上の差分JNLのライト要求(第2のJVOL115Bを指定したライト要求)を第2のストレージ105Bに送信することで、1以上の差分JNLを第2のJVOL115Bに書き込んでも良い)。第2のDKC111Bが、第2のJVOL115B内の1以上の差分JNLを、SEQ#(2)の次のSEQ#を有するJNLから先に、SEQ#の小さい順に、DVOL113Bに反映する。これにより、DVOL113Bの内容がDVOL113Cの内容に一致する。
図29に示すように、第2のDKC111Bは、S2610又はS2611の差分リシンクが完了した場合(S2901:YES)、第2のホスト103Bから第2のDVOL113Bへのデータの書込みを許可する(S2902)。具体的には、第2のDKC111Bは、DVOL113B及びミラー#2に対応したペアステータスを、「SSWS」(つまりライト許可)に更新する。これにより、DVOL113B及びミラー#0に対応したペアステータスだけでなく、ミラー#2に対応したペアステータスも「SSWS」になったので、第2のホスト103Bから第2のDVOL113Bへのデータの書込みが可能となる。なお、S2610又はS2611の差分リシンクが完了した場合、第2のDKC11Bは、第2のDVOL113BをPVOLとする(第3のDVOL113CがSVOLである)。
この後は、第2のサイト101Bにおいて、業務が継続される。第2のサイト101Bにおいて、JNLグループ112Bに対応するSEQ#の初期値は、SEQ#(2)及びSEQ#(3)のうちの大きい方のSEQ#の次のSEQ#(つまり、SEQ#(2)及びSEQ#(3)のうちの大きい方のSEQ#に1加算された値)である。
第2のホスト103Bが、業務に応じて、PVOL113Bを指定したライト要求を第2のストレージ105Bに送信する。第2のDCK111Bが、そのライト要求に従うデータを、CM630Bに書き込み、その後、PVOL113Bに書き込む。第2のDKC111Bは、SEQ#を更新し、更新後のSEQ#(又は更新前のSEQ#)とPVOL113Bに書き込んだデータとを含んだJNLを作成し、第2のJVOL115Bに書き込む。第3のDKC111Cは、第2のJVOL115Bを指定したリード要求を第2のストレージ105Bに送信することで、第2のJVOL115B内のJNLを第2のストレージ105Bから受信する。第3のDKC111Cは、受信したJNKを第3のJVOL115Cに書き込む。第3のDKC111Cは、第3のJVOL115C内の未反映のJNLを、SEQ#の小さい順に、SVOL113Cに反映する。この一連の処理により、PVOL113Bに書き込まれたデータが、SVOL113Cにコピーされる。
以上、実施例1によれば、運用サイトの切替え先のサイト101Bにおいて、第2のストレージ105Bが、第3のストレージ105Cにおいて最近反映されたJNLが有するSEQ#(SEQ#(3))を取得し、SEQ#(3)を、第2のストレージ105Bにおいて最近反映されたJNLが有するSEQ#(SEQ#(2))と比較する。また、第2のストレージ105Bは、SEQ#(2)及びSEQ#(3)のうちの大きい方のSEQ#を有するストレージにおけるパージ済みSEQ#と、SEQ#(2)及びSEQ#(3)のうちの小さい方のSEQ#との関係を基に、差分リシンクが可能か否かを判断する。そして、その判断の結果とSEQ#(2)及びSEQ#(3)の関係とに基づく差分リシンクが行われる。これにより、第1のストレージ105Aが障害等の原因により停止しても、業務が適切に継続される。
また、実施例1によれば、1つのコピー元JNLグループに含まれるJVOLが、複数のコピー先JNLグループに共通である。別の言い方をすれば、1つのコピー元JNLグループに含まれるJVOLの数は、コピー先JNLグループの数に依存しない。これにより、第1のストレージ105Aにおいて消費される記憶容量を節約することができる。
以下、本発明の実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する(これについては、後の実施例3及び4についても同様である)。
実施例2では、差分リシンク中であっても、第2のDVOL113Bへのデータの書込みが許可されている。具体的には、図30に示すように、第2のDKC111Bが、図26のS2607でYESとなることが判明したときに(S3001:YES)、第2のホスト103Bから第2のDVOL113Bへのデータの書込みを許可する(S3002)。具体的には、第2のDKC111Bは、第2のDVOL113B及びミラー#0に対応したペアステータスと、第2のDVOL113B及びミラー#2に対応したペアステータスとの両方を、「SSWS」に変更する。なお、「S2607でYESになることが判明したとき」というのは、S2610とS2611のいずれかの差分リシンクが行われることが確定したときである。
しかし、この場合、何の工夫もされないと、以下の問題が生じ得る。すなわち、第3のストレージ105Cから第2のストレージ105Bへの差分リシンクにおいて、第2のホスト103Bから書き込まれたデータ(最新のデータ)を有するブロック(DVOL113B内のブロック)に、差分JNL内のデータ(古いデータ)が書き込まれてしまう可能性がある。
実施例2は、その問題を回避するために、第3のストレージ105Cから第2のストレージ105Bへの差分リシンクが行われることが確定した場合には、図31に示す処理が行われる。
すなわち、第2のDKC111Bは、DVOL113Bを指定したライト要求を第2のホスト103Bから受けた場合(S3101)、DVOL113Bにおけるライト先のブロックにライト対象のデータを書込む(S3102)。その際に、第2のDKC111Bは、そのライト先のブロックを、JNLの非反映先として管理する(S3103)。具体的には、例えば、SM640Bが、JNLの反映が不要なライト先を表す非反映管理情報を記憶していて、第2のDKC111Bは、SM640Bに、DVOL113Bの番号と、DVOL113Bのブロックのアドレス(例えばLBA(Logical Block Address))とを、非反映管理情報に登録する。
図32に示すように、第2のDKC111Bは、第2のJVOL115BからJNLを読み出した場合、そのJNLの反映先のブロック(DVOL113Bにおけるブロック)が非反映先でなければ(S3202:NO)、そのJNLを反映するが(S3203)、そのJNLの反映先のブロックが非反映先であれば(S3202:YES)、そのJNLを反映しない(S3204)。
S3202において、「JNLの反映先のブロックが非反映先であるか否か」とは、例えば、その反映先のブロックのアドレスが上記の非反映管理情報に登録されているか否かである。
S3204において、「JNLを反映しない」とは、例えば、JNLを無視することである。無視されたJNLは、第2のJVOL115Bに残されていても良いし、直ちに第2のJVOL115Bから削除されても良い。
実施例2によれば、実施例1よりも早くに業務を開始することができ、且つ、差分リシンク中にDVOL113Bがライト許可状態であることにより生じ得る問題(最新のデータが書き込まれたブロックに、差分JNL内の古いデータが書き込まれてしまうこと)も回避することができる。
実施例3では、差分リシンク中であっても、第2のホスト103Bが第2のDVOL113Bからデータを読み出すことが許可されている(実施例1では、その読み出しは禁止されている)。具体的には、例えば、第2のDKC111Bは、図26のS2607でYESとなることが判明したとき、第2のDVOL113Bからデータを読み出すことを許可した状態とする。
しかし、この場合、何の工夫もされないと、以下の問題が生じ得る。すなわち、第3のストレージ105Cから第2のストレージ105Bへの差分リシンクの最中に、第2のホスト103BがDVOL113Bから読み出すデータが、最新のデータ(SEQ#が最も大きい差分JNLが有するデータ)ではなく古いデータである可能性がある。
実施例3は、その問題を回避するために、第3のストレージ105Cから第2のストレージ105Bへの差分リシンクが行われることが確定した場合には、図33に示す処理が行われる。
すなわち、第2のDKC111Bは、差分リシンクが完了するまでの間に、DVOL113Bを指定したリード要求を受信した場合(S3301)、CM630BにCM領域を確保し(S3302)、差分リシンクは第3のストレージ105Cから第2のストレージ105Bへの差分リシンクであるか否かを判断する(S3303)。
この判断の結果が否定的の場合(S3303:NO)、第2のDKC111Bは、リード要求で指定されたリード元ブロック(DVOL113B内のブロック)からデータを読み出し、読み出したデータをCM領域に書き、CM領域内のデータを第2のホスト103Bに送信する(S3307)。
S3303の判断の結果が肯定的の場合(S3303:YES)、第2のDKC111Bは、リード元ブロックが反映先となっている最新のJNLが第2のJVOL115Bにあるか否かを判断する(S3304)。ここで言う「最新のJNL」とは、第2及び第3のJVOL115B及び115Cが有する1以上の差分JNLのうち、リード元ブロックが反映先となっている1以上のJNLのいずれかであって、それら1以上のJNLが有する1以上のSEQ#のうちの最大のSEQ#を有するJNLである。従って、この判断のためには、第2のDKC111Bは、第3のDVOL115B内の差分JNLが有するSEQ#を把握する。
この判断の結果が肯定的の場合(S3304:YES)、第2のDKC111Bは、第2のJVOL115Bから最新のJNLをDVOL113B内のリード元ブロックに反映し(S3306)、その後、S3307を行う。なお、第2のDKC111Bは、差分リシンクにおいて、上記リード元ブロックが反映先である差分JNLであって、上記最新のJNLより古い差分JNL(最新のJNLが有するSEQ#より小さいSEQ#を有するJNL)が取得されても、その差分JNLを、リード元ブロックに反映しない(例えば、そのJNLを第2のJVOL111Bからパージする)。また、S3304:YESの場合のS3307において、第2のホスト103Bに送信されるデータは、第2のDVOL113Bから提供されることに代えて、JNLから提供されても良い。
S3304の判断の結果が否定的の場合(S3304:NO)、第2のDKC111Bは、最新のJNLのSEQ#を含んだリード要求を第3のストレージ105Cに送信することで、最新のJNLを第3のストレージ105Cから受信し、その最新のJNLを第2のJVOL115Bに書き込む。つまり、第2のDKC111Bは、他のJNLよりも優先して最新のJNLを第3のストレージ105Cから取得する。その後、第2のDKC111Bは、上述のS3306及びS3307を行う。なお、S3304:NOの場合のS3307でも、第2のホスト103Bに送信されるデータは、第2のDVOL113Bから提供されることに代えて、JNLから提供されても良い。
実施例3によれば、実施例1よりも早くに業務を開始することができ、且つ、差分リシンク中にDVOL113Bがリード許可状態であることにより生じ得る問題(第2のホスト103Cに最新のデータではなく古いデータが提供されてしまうこと)も回避することができる。
実施例4では、ストレージ105B及び105C間で全ての差分JNLの転送が行われなくても、差分リシンクを行うことができる。
例えば、図26のS2606の次に、第2のDKC111Bが、差分JNLに相当する未反映JNLが旧ストレージに存在するか否かを判断する(S3401)。
ここで、「旧ストレージ」とは、ストレージ105B又は105Cであって、SEQ#(2)及びSEQ#(3)のうちの小さい方のSEQ#をパージ可能SEQ#として有するストレージ装置である。ストレージ105B及び105Cのうち旧ストレージではない方を、以下、「新ストレージ」と言う。
また、「差分JNLに相当する未反映JNLが旧ストレージに存在する」とは、図35に示すように、旧ストレージ内のJVOLに、旧ストレージにおけるパージ可能SEQ#より大きいSEQ#を有する未反映JNLが存在することである。
旧ストレージが第2のストレージ105Bの場合、例えば、第2のJVOL115Bに少なくとも1つの未反映のJNLがあれば、S3401の判断の結果は肯定的となる。
また、旧ストレージが第3のストレージ105Cの場合、例えば、第2のDKC111Bが、第3のDKC111Cに、1以上の未反映のJNLにおける最新のJNLが有するSEQ#が表す値を問い合わせることで、S3401の判断を行うことができる。具体的には、第2のDKC111Bは、第3のDCK111Cから回答されたSEQ#(以下、回答SEQ#)と、SEQ#(3)+1とを比較することで、S3401の判断を行うことができる。回答SEQ#が、SEQ#(3)+1以上であれば、S3401の判断の結果は肯定的となる。
S3401の判断の結果が否定的の場合(S3401:NO)、図26のS2607が行われる。
S3401の判断の結果が肯定的の場合(S3401:NO)、第2のDKC111Bは、旧ストレージ内の未反映JNLが足りるか否かを判断する(S3402)。旧ストレージ内の最新の未反映JNLが有するSEQ#が、1以上の差分JNLのうちの最新のJNLが有するSEQ#以上であれば、この判断の結果は肯定的となる。
この判断の結果が肯定的であれば(S3402:YES)、旧ストレージ内のDKCは、旧ストレージ内の1以上の未反映のJNLのうち、1以上の差分JNLに相当するJNLを、全て、旧ストレージ内のDVOLに反映する(S3403)。もし、未反映JNLが余れば、旧ストレージ内のDKCは、余ったJNLをパージしても良い。
S3402の判断の結果が否定的であれば(S3402:NO)、S3404が行われる。すなわち、旧ストレージ内のDKCは、不足分の差分JNL(旧ストレージ内の未反映のJNLと1以上の差分JNLとの差分に相当するJNL)を新ストレージから取得し、その差分JNLを、旧ストレージ内のJVOLに格納する。そして、旧ストレージ内のDKCは、旧ストレージにおけるJVOL内の未反映JNL及び差分JNLを、全て、旧ストレージ内のDVOLに反映する。
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、実施例1〜4のうちの2以上が組み合わされても良い。
また、例えば、上述の説明では、更新番号として、シーケンス番号(SEQ#)が採用されているが、規則的に大きく或いは小さくなっていく他種の番号が採用されても良い。
また、例えば、実施例1〜4において、第1のストレージ105Aが停止した場合、運用の切替え先のサイトにおける第2のストレージ105Bが、種々の処理(例えば、デルタリシンクが可能か否かの判断)を行うが、実施例1〜4の少なくとも1つにおいて、種々の処理のうちの少なくとも1つが、第3のストレージ105Cによって行われても良い。
また、例えば、全てのJNLは、更新後のSEQ#を有するが、それに代えて、更新前のSEQ#を有しても良い。
また、例えば、ストレージ105A〜105Cの少なくとも1つが、複数のJNLグループがあっても良い。
また、例えば、ストレージ105A〜105Cの少なくとも1つが、JNLグループに含まれる論理ボリューム以外の論理ボリュームを有していても良い。
また、例えば、ストレージ装置間のJNLの転送は、コピー先のストレージ装置がコピー元のストレージ装置内のJVOLからJNLを読み出すことによる転送と、コピー元のストレージ装置がコピー先のストレージ装置内のJVOLにJNLを書き込むことによる転送のどちらであっても良い。
101A…第1のストレージ装置 101B…第2のストレージ装置 101C…第3のストレージ装置
Claims (11)
- 非同期リモートコピーを行うストレージシステムである非同期リモートコピーシステムであって、
第1の記憶資源グループを有し第1のホスト装置に接続されている第1のストレージ装置と、
第2の記憶資源グループを有し第2のホスト装置に接続されている第2のストレージ装置と、
第3の記憶資源グループを有する第3のストレージ装置と
を有し、
前記第1の記憶資源グループが、データが書き込まれる論理ボリュームである第1のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第1のジャーナル記憶資源とを有し、
前記第2の記憶資源グループが、データが書き込まれる論理ボリュームである第2のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第2のジャーナル記憶資源とを有し、
前記第3の記憶資源グループが、データが書き込まれる論理ボリュームである第3のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第3のジャーナル記憶資源とを有し、
前記第1のストレージ装置が、前記ホスト装置から前記第1のデータボリュームにデータが書き込まれる場合、前記第1の記憶資源グループ内のデータボリュームにデータが書き込まれる都度に更新される番号である更新番号を更新し、その更新番号とそのデータとを含んだジャーナルを作成し、そのジャーナルを前記第1のジャーナル記憶資源に書き込み、
マルチターゲット方式の非同期リモートコピーが行われ、その非同期リモートコピーでは、前記ジャーナルが、前記第1のストレージ装置から前記第2のストレージ装置へ転送され前記第2のデータボリュームに反映されることで前記第1のデータボリューム内のデータが前記第2のデータボリュームに書き込まれ、且つ、前記ジャーナルが、前記第1のストレージ装置から前記第3のストレージ装置へ転送され前記第3のデータボリュームに反映されることで前記第1のデータボリューム内のデータが前記第3のデータボリュームに書き込まれ、
(X)前記第1のストレージ装置が停止した場合、
(x1)前記第2のストレージ装置において最近反映されたジャーナルが有する更新番号と、前記第3のストレージ装置において最近反映されたジャーナルが有する更新番号とのどちらが新しいかが判断され、
(x2)前記第2及び第3のストレージ装置のうち、前記(x1)で新しいと判断された更新番号を有するストレージ装置である新ストレージ装置に、前記(x1)で新しいと判断されなかった更新番号の次の更新番号を有するジャーナルから前記(x1)で新しいと判断された更新番号を有するジャーナルまでの1以上のジャーナルである1以上の差分ジャーナルがあるか否かが判断され、
(x3)前記(x2)の判断の結果が肯定的の場合、前記新ストレージ装置から、前記第2及び第3のストレージ装置のうちの前記新ストレージ装置ではないストレージ装置である旧ストレージ装置に、前記1以上の差分ジャーナルがコピーされ、
(x4)前記旧ストレージ装置が、前記1以上の差分ジャーナルを、更新番号の順に、前記旧ストレージ装置内のデータボリュームに反映する、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
前記第2のストレージ装置が、前記旧ストレージ装置であり、前記第3のストレージ装置が、前記新ストレージ装置であり、
前記第2のデータボリュームは、前記第2のホスト装置からのデータの書込みが禁止されたライト禁止状態であり、
前記(x2)の判断の結果が肯定的の場合、前記第2のストレージ装置が、前記第2のデータボリュームを、前記第2のホスト装置からのデータの書込みが可能なライト許可状態とし、
前記第2のストレージ装置が、前記第2のデータボリュームをライト許可状態とした後、前記第2のデータボリュームにおけるライト先を指定したライト要求を前記第2のホスト装置から受信した場合、
(w1)前記ライト要求に従うデータを前記ライト先に書き込み、
(w2)前記ライト先を、差分ジャーナルの非反映先として管理し、
前記(x4)において、前記第2のストレージ装置が、
(x41)前記第2のジャーナル記憶資源内の差分ジャーナルの反映先が、非反映先であるか否かを判断し、
(x42)前記(x41)の判断の結果が否定的であれば、前記差分ジャーナルを反映し、
(x43)前記(x41)の判断の結果が肯定的であれば、前記差分ジャーナルを反映しない、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
前記第2のストレージ装置が、前記旧ストレージ装置であり、前記第3のストレージ装置が、前記新ストレージ装置であり、
前記第2のデータボリュームは、前記第2のホスト装置からデータを読み出すことが禁止されたリード禁止状態であり、
前記(x2)の判断の結果が肯定的の場合、前記第2のストレージ装置が、前記第2のデータボリュームを、前記第2のホスト装置からデータを読み出すことが可能なリード許可状態とし、
前記第2のストレージ装置が、前記第2のデータボリュームをリード許可状態とした後、前記第2のデータボリュームにおけるリード元を指定したリード要求を前記第2のホスト装置から受信した場合、
(R)リード元が反映先となる差分ジャーナルのうち、最新の更新番号を有する差分ジャーナルである対象ジャーナルが有するデータを、前記第2のホスト装置に送信する、
非同期リモートコピーシステム。 - 請求項3記載のシステムであって、
前記(R)において、前記第2のストレージ装置が、
(r1)前記第2及び第3のジャーナル記憶資源における、リード元が反映先となる差分ジャーナルのうち、最新の更新番号を有する差分ジャーナルである対象ジャーナルが、前記第2のジャーナル記憶資源にあるか否かを判断し、
(r2)前記(r1)の判断の結果が肯定的であれば、前記対象ジャーナルを前記第2のデータボリュームに反映し、且つ、前記対象ジャーナルが有するデータを前記第2のホスト装置に送信し、
(r3)前記(r1)の判断の結果が否定的であれば、前記対象ジャーナルを、他のジャーナルよりも優先して前記第3のストレージ装置から取得し、前記対象ジャーナルを前記第2のジャーナル記憶資源に書き込み、前記対象ジャーナルを前記第2のデータボリュームに反映し、前記対象ジャーナルが有するデータを前記第2のホスト装置に送信する、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
(P)前記第2又は第3のストレージ装置が、前記旧ストレージ装置内のジャーナル記憶資源に、前記差分ジャーナルに相当する未反映のジャーナルがあるか否かを判断し、
(Q)前記(P)の判断の結果が肯定的であれば、前記旧ストレージ装置が、前記差分ジャーナルに相当する未反映のジャーナルを、自身のデータボリュームに反映し、
前記(Q)で反映される未反映のジャーナルに対応した差分ジャーナルについては、前記(x3)及び(x4)に代えて、前記(Q)が行われる、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
前記第1のストレージ装置が、
(H)前記第2及び第3の記憶資源グループについて共通のパージ可能なジャーナルを前記第1のジャーナル記憶資源からパージし、
(I)前記第1のジャーナル記憶資源の使用率が所定の閾値を超えているか否かを判断し、
(J)前記(I)の判断の結果が肯定的の場合、前記第1の記憶資源グループと前記第2の記憶資源グループとの関係である第1の関係と、前記第1の記憶資源グループと前記第3の記憶資源グループとの関係である第2の関係とのうち、前記第1のジャーナル記憶資源からパージ可能なジャーナルの数が少ない方の関係を解除し、
(K)前記第2及び第3の記憶資源グループのうち解除されていない関係に係る記憶資源グループについてのパージ可能なジャーナルを前記第1のジャーナル記憶資源からパージし、
前記第1のジャーナル記憶資源の使用率とは、前記第1のジャーナル記憶資源の容量に対する、前記第1のジャーナル記憶資源内の1以上のJNLの総容量の割合、である、
非同期リモートコピーシステム。 - 請求項6記載のシステムであって、
(L)前記第1のストレージ装置が、サスペンドされたペアについて、前記第1のデータボリューム内のライト先にデータが書き込まれた場合、そのデータを有するJNLを作成せず、そのライト先に更新があったことを管理し、
(M)前記第1のストレージ装置が、所定のコマンドに応答して、更新があったライト先にあるデータを含んだジャーナルを作成して、そのジャーナルを、前記ネックのペアに係るデータボリュームを有するストレージ装置に送信し、
(N)そのストレージ装置が、そのジャーナルを自身のジャーナル記憶資源に書込み、そのジャーナル記憶資源内のジャーナルを、自身のデータボリュームに反映する、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
前記(X)の場合、前記第1のホスト装置から前記第2のホスト装置へのフェイルオーバが行われ、前記第2のホスト装置が、前記第2のストレージ装置に所定のコマンドを送信し、
前記第2のストレージ装置が、前記所定のコマンドを受信し、前記所定のコマンドに応答して、前記(x1)及び(x2)を行う、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
前記第2のデータボリュームは、前記第2のホスト装置からデータを書き込むことが禁止されたライト禁止状態であり、
前記第2のストレージ装置が、前記(x4)の完了後に、前記第2のデータボリュームを、前記第2のホスト装置からデータを書き込むことが可能なライト許可状態にする、
非同期リモートコピーシステム。 - 請求項1記載のシステムであって、
前記第1のジャーナル記憶資源は、前記第2及び第3の記憶資源グループに共通であり、
前記(D1)において、前記第2のストレージ装置が、前記第2のジャーナル記憶資源において最新である更新番号の次の更新番号を有するジャーナルを前記第1のストレージ装置から読み出し、読み出したジャーナルを前記第2のジャーナル記憶資源に書き込み、
前記(D2)において、前記第3のストレージ装置が、前記第3のジャーナル記憶資源において最新である更新番号の次の更新番号を有するジャーナルを前記第1のストレージ装置から読み出し、読み出したジャーナルを前記第3のジャーナル記憶資源に書き込む、
非同期リモートコピーシステム。 - 非同期リモートコピーを行うストレージシステムである非同期リモートコピーシステムでの記憶制御方法であって、
前記非同期リモートコピーシステムが、
第1の記憶資源グループを有し第1のホスト装置に接続されている第1のストレージ装置と、
第2の記憶資源グループを有し第2のホスト装置に接続されている第2のストレージ装置と、
第3の記憶資源グループを有し第3のホスト装置に接続されている第3のストレージ装置と
を有し、
前記第1の記憶資源グループが、データが書き込まれる論理ボリュームである第1のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第1のジャーナル記憶資源とを有し、
前記第2の記憶資源グループが、データが書き込まれる論理ボリュームである第2のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第2のジャーナル記憶資源とを有し、
前記第3の記憶資源グループが、データが書き込まれる論理ボリュームである第3のデータボリュームと、データのジャーナルが書き込まれる記憶資源である第3のジャーナル記憶資源とを有し、
前記第1のストレージ装置が、前記ホスト装置から前記第1のデータボリュームにデータが書き込まれる場合、前記第1の記憶資源グループ内のデータボリュームにデータが書き込まれる都度に更新される番号である更新番号を更新し、その更新番号とそのデータとを含んだジャーナルを作成し、そのジャーナルを前記第1のジャーナル記憶資源に書き込み、
マルチターゲット方式の非同期リモートコピーが行われ、その非同期リモートコピーでは、前記ジャーナルが、前記第1のストレージ装置から前記第2のストレージ装置へ転送され前記第2のデータボリュームに反映されることで前記第1のデータボリューム内のデータが前記第2のデータボリュームに書き込まれ、且つ、前記ジャーナルが、前記第1のストレージ装置から前記第3のストレージ装置へ転送され前記第3のデータボリュームに反映されることで前記第1のデータボリューム内のデータが前記第3のデータボリュームに書き込まれ、
前記記憶制御方法が、
前記第1のストレージ装置が停止した場合、
(x1)前記第2のストレージ装置において最近反映されたジャーナルが有する更新番号と、前記第3のストレージ装置において最近反映されたジャーナルが有する更新番号とのどちらが新しいかを判断し、
(x2)前記第2及び第3のストレージ装置のうち、前記(x1)で新しいと判断された更新番号を有するストレージ装置である新ストレージ装置に、前記(x1)で新しいと判断されなかった更新番号の次の更新番号を有するジャーナルから前記(x1)で新しいと判断された更新番号を有するジャーナルまでの1以上のジャーナルである1以上の差分ジャーナルがあるか否かを判断し、
(x3)前記(x2)の判断の結果が肯定的の場合、前記新ストレージ装置内のジャーナル記憶資源から、前記第2及び第3のストレージ装置のうちの前記新ストレージ装置ではないストレージ装置である旧ストレージ装置内のジャーナル記憶資源に、前記1以上の差分ジャーナルをコピーし、
(x4)前記旧ストレージ装置において、前記1以上の差分ジャーナルを、更新番号の順に、前記旧ストレージ装置内のデータボリュームに反映する、
記憶制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/002540 WO2011125126A1 (ja) | 2010-04-07 | 2010-04-07 | 非同期リモートコピーシステム、及び、記憶制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011125126A1 JPWO2011125126A1 (ja) | 2013-07-08 |
JP5270796B2 true JP5270796B2 (ja) | 2013-08-21 |
Family
ID=44761651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012509185A Active JP5270796B2 (ja) | 2010-04-07 | 2010-04-07 | 非同期リモートコピーシステム、及び、記憶制御方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8375004B2 (ja) |
EP (1) | EP2423818B1 (ja) |
JP (1) | JP5270796B2 (ja) |
CN (1) | CN102326152B (ja) |
WO (1) | WO2011125126A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105430063A (zh) * | 2015-11-05 | 2016-03-23 | 浪潮(北京)电子信息产业有限公司 | 一种多控共享存储系统间远程复制方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5867902B2 (ja) * | 2012-03-06 | 2016-02-24 | 日本電気株式会社 | データベースの非同期レプリケーション方式 |
JP6019940B2 (ja) * | 2012-08-30 | 2016-11-02 | 富士通株式会社 | 情報処理装置、コピー制御プログラム、およびコピー制御方法 |
US20140164323A1 (en) * | 2012-12-10 | 2014-06-12 | Transparent Io, Inc. | Synchronous/Asynchronous Storage System |
US9213497B2 (en) * | 2012-12-13 | 2015-12-15 | Hitachi, Ltd. | Storage apparatus and storage apparatus migration method |
US9317423B2 (en) * | 2013-01-07 | 2016-04-19 | Hitachi, Ltd. | Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof |
US9514012B2 (en) | 2014-04-03 | 2016-12-06 | International Business Machines Corporation | Tertiary storage unit management in bidirectional data copying |
US9672124B2 (en) * | 2014-06-13 | 2017-06-06 | International Business Machines Corporation | Establishing copy pairs from primary volumes to secondary volumes in multiple secondary storage systems for a failover session |
JP6511737B2 (ja) | 2014-06-20 | 2019-05-15 | 富士通株式会社 | 冗長システム、冗長化方法および冗長化プログラム |
JP6511738B2 (ja) * | 2014-06-20 | 2019-05-15 | 富士通株式会社 | 冗長システム、冗長化方法および冗長化プログラム |
US10671493B1 (en) | 2017-08-29 | 2020-06-02 | Wells Fargo Bank, N.A. | Extended remote copy configurator of three-site data replication for disaster recovery |
CN107832014A (zh) * | 2017-11-07 | 2018-03-23 | 长沙曙通信息科技有限公司 | 一种远程数据缓冲存储转发实现方法和装置 |
JP2021174392A (ja) * | 2020-04-28 | 2021-11-01 | 株式会社日立製作所 | リモートコピーシステム及びリモートコピー管理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005267216A (ja) * | 2004-03-18 | 2005-09-29 | Hitachi Ltd | ストレージリモートコピー方法および情報処理システム |
JP2006065629A (ja) * | 2004-08-27 | 2006-03-09 | Hitachi Ltd | データ処理システム及び方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745303B2 (en) | 2002-01-03 | 2004-06-01 | Hitachi, Ltd. | Data synchronization of multiple remote storage |
JP4021823B2 (ja) * | 2003-09-01 | 2007-12-12 | 株式会社日立製作所 | リモートコピーシステム及びリモートコピーの方法 |
JP4477370B2 (ja) * | 2004-01-30 | 2010-06-09 | 株式会社日立製作所 | データ処理システム |
WO2005086001A1 (en) * | 2004-02-27 | 2005-09-15 | Incipient, Inc. | Distributed asynchronous ordered replication |
JP4452533B2 (ja) * | 2004-03-19 | 2010-04-21 | 株式会社日立製作所 | システムおよび記憶装置システム |
JP4476683B2 (ja) * | 2004-04-28 | 2010-06-09 | 株式会社日立製作所 | データ処理システム |
US7395265B2 (en) | 2004-08-27 | 2008-07-01 | Hitachi, Ltd. | Data processing system and storage subsystem provided in data processing system |
US7412576B2 (en) * | 2004-12-08 | 2008-08-12 | Hitachi, Ltd. | Remote copy system having multiple data centers |
JP4738941B2 (ja) * | 2005-08-25 | 2011-08-03 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの管理方法 |
JP2007066162A (ja) * | 2005-09-01 | 2007-03-15 | Hitachi Ltd | ストレージシステム及びストレージシステムの管理方法 |
JP5124989B2 (ja) * | 2006-05-26 | 2013-01-23 | 日本電気株式会社 | ストレージシステム及びデータ保護方法とプログラム |
GB0615779D0 (en) * | 2006-08-09 | 2006-09-20 | Ibm | Storage management system with integrated continuous data protection and remote copy |
JP5244332B2 (ja) * | 2006-10-30 | 2013-07-24 | 株式会社日立製作所 | 情報システム、データ転送方法及びデータ保護方法 |
JP5022773B2 (ja) * | 2007-05-17 | 2012-09-12 | 株式会社日立製作所 | ジャーナルを利用したリモートコピーのコピー先となるストレージシステムの消費電力を節約する方法及びシステム |
JP2009122873A (ja) * | 2007-11-13 | 2009-06-04 | Hitachi Ltd | ストレージシステム間でのリモートコピーを管理する装置 |
-
2010
- 2010-04-07 EP EP10841823.7A patent/EP2423818B1/en not_active Not-in-force
- 2010-04-07 US US12/864,298 patent/US8375004B2/en active Active
- 2010-04-07 CN CN201080008833.2A patent/CN102326152B/zh active Active
- 2010-04-07 JP JP2012509185A patent/JP5270796B2/ja active Active
- 2010-04-07 WO PCT/JP2010/002540 patent/WO2011125126A1/ja active Application Filing
-
2013
- 2013-01-14 US US13/740,351 patent/US9880910B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005267216A (ja) * | 2004-03-18 | 2005-09-29 | Hitachi Ltd | ストレージリモートコピー方法および情報処理システム |
JP2006065629A (ja) * | 2004-08-27 | 2006-03-09 | Hitachi Ltd | データ処理システム及び方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105430063A (zh) * | 2015-11-05 | 2016-03-23 | 浪潮(北京)电子信息产业有限公司 | 一种多控共享存储系统间远程复制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102326152B (zh) | 2014-11-26 |
JPWO2011125126A1 (ja) | 2013-07-08 |
EP2423818A4 (en) | 2014-04-30 |
US20110251993A1 (en) | 2011-10-13 |
US9880910B2 (en) | 2018-01-30 |
EP2423818B1 (en) | 2016-01-13 |
EP2423818A1 (en) | 2012-02-29 |
US20130132693A1 (en) | 2013-05-23 |
WO2011125126A1 (ja) | 2011-10-13 |
CN102326152A (zh) | 2012-01-18 |
US8375004B2 (en) | 2013-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5270796B2 (ja) | 非同期リモートコピーシステム、及び、記憶制御方法 | |
US7802137B2 (en) | Journaling system switching to another logical volume to store subsequently received update history | |
US8806119B2 (en) | Storage subsystem that connects fibre channel and supports online backup | |
EP1796004B1 (en) | Storage system and data processing system | |
US6981008B2 (en) | Method for duplicating data of storage subsystem and data duplicating system | |
US8370590B2 (en) | Storage controller and data management method | |
EP0902923B1 (en) | Method for independent and simultaneous access to a common data set | |
WO2011125127A1 (ja) | 非同期リモートコピーシステム、及び、記憶制御方法 | |
EP2120147B1 (en) | Data mirroring system using journal data | |
JP4550717B2 (ja) | 仮想ストレージシステム制御装置、仮想ストレージシステム制御プログラム、仮想ストレージシステム制御方法 | |
US6912629B1 (en) | System and method for restoring data from secondary volume to primary volume in a data storage system | |
US6584473B2 (en) | Information storage system | |
EP1804167A2 (en) | Storage system and snapshot management method | |
JP2005309793A (ja) | データ処理システム | |
JP4311532B2 (ja) | 記憶システム及び同システムにおけるスナップショット管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130416 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130509 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5270796 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |