図1は、本発明の一実施形態の論理的な構成を示すブロック図である。
本発明の一実施形態は、ホストコンピュータ180と記憶システム100Aを接続パス190により接続し、記憶システム100Aと記憶システム100Aに保存されたデータの複製を保持する記憶システム100Bを接続パス200により接続した構成である。以下の説明において、複製対象のデータを保持する記憶システム100と複製データを保持する記憶システム100との区別を容易とするために、複製対象のデータを保持する記憶システム100を正記憶システム100A、複製データを保持する記憶システム100を副記憶システム100Bとよぶこととする。なお、記憶システムの記憶領域は、分割して管理されており、分割された記憶領域を論理ボリュームと呼ぶこととする。
記憶システム100の記憶領域は、分割して管理されており、分割した記憶領域を論理ボリューム230とよぶこととする。論理ボリューム230の容量および記憶システム100内の物理的な格納位置(物理アドレス)は、記憶システム100に接続したコンピュータ等の保守端末もしくはホストコンピュータ180を用いて指定できる。各論理ボリューム230の物理アドレスは、後述するボリューム情報400に保存する。物理アドレスは、例えば、記憶システム100内の記憶装置150を識別する番号(記憶装置番号)と記憶装置内の記憶領域を一意に示す数値、例えば、記憶装置の記憶領域の先頭からの位置である。以下の説明では、物理アドレスは、記憶装置番号と記憶装置の記憶領域の先頭からの位置の組とする。以下の説明では、論理ボリュームは、1つの記憶装置の記憶領域であるが、論理アドレスと物理アドレスの変換により、1つの論理ボリュームを複数の記憶装置の記憶領域に対応づけることも可能である。
記憶システム100が保存しているデータの参照、更新は、論理ボリュームを識別する番号(論理ボリューム番号)と記憶領域を一意に示す数値、例えば、論理ボリュームの記憶領域の先頭からの位置により一意に指定することができ、以下、論理ボリューム番号と論理ボリュームの記憶領域の先頭からの位置(論理アドレス内位置)の組を論理アドレスとよぶ。
以下の説明において、複製対象のデータと複製データとの区別を容易とするために、複製対象の論理ボリューム230を正論理ボリューム、複製データである論理ボリューム230を副論理ボリュームとよぶこととする。一対の正論理ボリュームと副論理ボリュームをペアとよぶ。正論理ボリュームと副論理ボリュームの関係および状態等は後述するペア情報500に保存する。
論理ボリューム間のデータの更新順序を守るために、グループという管理単位を設ける。例えば、ホストコンピュータ180が、正論理ボリューム1のデータ1を更新し、その後、データ1を読み出し、データ1の数値を用いて、正論理ボリューム2のデータ2を更新する処理を行うとする。正論理ボリューム1から副論理ボリューム1へのデータ複製処理と、正論理ボリューム2から副論理ボリューム2へのデータ複製処理とが独立に行われる場合、副論理ボリューム1へのデータ1の複製処理より前に、副論理ボリューム2へのデータ2の複製処理が行われる場合がある。副論理ボリューム2へのデータ2の複製処理と副論理ボリューム1へのデータ1の複製処理との間に、故障等により副論理ボリューム1へのデータ1の複製処理が停止した場合、副論理ボリューム1と副論理ボリューム2のデータの整合性がなくなる。このような場合にも副論理ボリューム1と副論理ボリューム2のデータの整合性を保つために、データの更新順序を守る必要のある論理ボリュームは、同じグループに登録し、データの更新毎に、後述するグループ情報600の更新番号を割り当て、更新番号順に、副論理ボリュームに複製処理を行う。例えば、図1では、正記憶システム100Aの論理ボリューム(DATA1)と論理ボリューム(DATA2)がグループ1を構成する。論理ボリューム(DATA1)の副製である論理ボリューム(COPY1)と論理ボリューム(DATA2)の複製である論理ボリューム(COPY2)は、副記憶システム内でグループ1を構成する。
データ複製対象である正論理ボリュームのデータを更新する場合、副論理ボリュームのデータを更新するために、後述するジャーナルを作成し、正記憶システム100A内の論理ボリュームに保存する。本実施例の説明では、グループ毎にジャーナルのみを保存する論理ボリューム(以下、ジャーナル論理ボリュームとよぶ)を割り当てる。図1では、グループ1に論理ボリューム(JNL1)を割り当てている。
副記憶システム100Bのグループにもジャーナル論理ボリュームを割り当てる。ジャーナル論理ボリュームは、正記憶システム100Aから副記憶システム100Bに転送したジャーナルを保存するために使用する。ジャーナルをジャーナル論理ボリュームに保存することにより、例えば、副記憶システム100Bの負荷が高い場合、ジャーナル受信時に副論理ボリュームのデータ更新を行わず、暫く後、副記憶システム100Bの負荷が低い時に、副論理ボリュームのデータを更新することもできる。さらに、接続線200が複数ある場合、正記憶システム100Aから副記憶システム100Bへのジャーナルの転送を多重に行い、接続線200の転送能力を有効に利用することができる。更新順番のため、副記憶システム100Bに多くのジャーナルが溜まる可能性があるが、副論理ボリュームのデータ更新に直ぐに使用できないジャーナルは、ジャーナル論理ボリュームに退避することにより、キャッシュメモリを開放することができる。図1では、副記憶システム内のグループ1に論理ボリューム(JNL2)を割り当てている。
ジャーナルは、ライトデータと更新情報とから構成する。更新情報は、ライトデータを管理するための情報で、ライト命令を受信した時刻、グループ番号、後述するグループ情報600の更新番号、ライト命令の論理アドレス、ライトデータのデータサイズ、ライトデータを格納したジャーナル論理ボリュームの論理アドレス等からなる。更新情報は、ライト命令を受信した時刻と更新番号のどちらか一方のみを保持してもよい。ホストコンピュータ180からのライト命令内にライト命令の作成時刻が存在する場合は、ライト命令を受信した時刻の代わりに、当該ライト命令内の作成時刻を使用してもよい。図3と図21を用いて、ジャーナルの更新情報の例を説明する。更新情報310は、1999年3月17日の22時20分10秒に受信したライト命令を記憶する。当該ライト命令は、ライトデータを論理ボリューム番号1の記憶領域の先頭から700の位置に格納する命令であり、データサイズは300である。ジャーナルのライトデータは、論理ボリューム番号4(ジャーナル論理ボリューム)の記憶領域の先頭から1500の位置から格納されている。論理ボリューム番号1の論理ボリュームはグループ1に属し、グループ1のデータ複製開始から4番目のデータ更新であることがわかる。
ジャーナル論理ボリュームは、例えば、図3に示すように、更新情報を格納する記憶領域(更新情報領域)とライトデータを格納する記憶領域(ライトデータ領域)に分割して使用する。更新情報領域は、更新情報領域の先頭から、更新番号の順に格納し、更新情報領域の終端に達すると、更新情報領域の先頭から格納する。ライトデータ領域は、ライトデータ領域の先頭からライトデータを格納し、ライトデータ領域の終端に達すると、ライトデータ領域の先頭から格納する。更新情報領域およびライトデータ領域の比は、固定値でもよいし、保守端末あるいはホストコンピュータ180により設定可能としてもよい。これらの情報は、後述するポインタ情報700内に保持する。以下の説明では、ジャーナル論理ボリュームを更新情報とライトデータの領域に分割して、ジャーナル論理ボリュームを使用するが、論理ボリュームの先頭から、ジャーナル、つまり、更新情報とライトデータを連続に格納する方式を採用してもよい。
図1を用いて、記憶システム100Aの正論理ボリュームへのデータ更新を副記憶システム100Bの副論理ボリュームに反映する動作について概説する。
(1)記憶システム100Aは、ホストコンピュータ180から正論理ボリューム内のデータに対するライト命令を受信すると、後述する命令受信処理210およびリードライト処理220によって、正論理ボリューム(DATA1)内のデータ更新と、ジャーナル論理ボリューム(JNL1)にジャーナルの保存を行う(図1の270)。
(2)記憶システム100Bは、後述するジャーナルリード処理240によって、記憶システム100Aからジャーナルをリードし、リードライト処理220によって、ジャーナル論理ボリューム(JNL2)にジャーナルを保存する(図1の280)。
(3)記憶システム100Aは、記憶システム100Bからジャーナルをリードする命令を受信すると、後述する命令受信処理210およびリードライト処理220によって、ジャーナル論理ボリューム(JNL1)からジャーナルを読み出し、記憶システム100Bに送信する(図1の280)。
(4)記憶システム100Bは、後述するリストア処理250およびリードライト処理220によって、ポインタ情報700を用いて、更新番号の昇順に、ジャーナル論理ボリューム(JNL2)からジャーナルを読み出し、副論理ボリューム(COPY1)のデータを更新する(図1の290)。
記憶システム100の内部構造を図2に示す。記憶システム100は、1つ以上のホストアダプタ110、1つ以上のディスクアダプタ120、1つ以上のキャッシュメモリ130、1つ以上の共有メモリ140、1つ以上の記憶装置150、1つ以上のコモンパス160、1つ以上の接続線170を備えて構成される。ホストアダプタ110、ディスクアダプタ120、キャッシュメモリ130、共有メモリ140はコモンパス160により相互間が接続されている。コモンパス160は、コモンパス160の障害時のために2重化されてもよい。ディスクアダプタ120と記憶装置150とは接続線170によって接続されている。また、図示していないが、記憶システム100の設定、監視、保守等を行うための保守端末が全てのホストアダプタ110とディスクアダプタ120とに専用線を用いて接続されている。
ホストアダプタ110は、ホストコンピュータ180とキャッシュメモリ130間のデータ転送を制御する。ホストアダプタ110は、接続線190および接続線200によりホストコンピュータ180もしくは、他の記憶システム100と接続される。ディスクアダプタ120は、キャッシュメモリ130と記憶装置150との間のデータ転送を制御する。キャッシュメモリ130は、ホストコンピュータ180から受信したデータあるいは記憶装置150から読み出したデータを一時的に保持するメモリである。共有メモリ140は、記憶システム100内の全てのホストアダプタ110とディスクアダプタ120とが共有するメモリである。
ボリューム情報400は、論理ボリュームを管理する情報であり、ボリューム状態、フォーマット形式、容量、ペア番号、物理アドレスを保持する。図4にボリューム情報400の一例を示す。ボリューム情報400は、ホストアダプタ110およびディスクアダプタ120から参照可能なメモリ、例えば管理メモリ140に保存される。ボリューム状態は、“正常”、“正”、“副”、“異常”、“未使用”のいずれかを保持する。ボリューム状態が“正常”もしくは“正”である論理ボリューム230は、ホストコンピュータ180から正常にアクセス可能な論理ボリューム230であることを示す。ボリューム状態が“副”である論理ボリューム230は、ホストコンピュータ180からのアクセスを許可してもよい。ボリューム状態が“正”である論理ボリューム230は、データの複製が行われている論理ボリューム230であることを示す。ボリューム状態が“副”である論理ボリューム230は、複製に使用されている論理ボリューム230であることを示す。ボリューム状態が“異常”の論理ボリューム230は、障害により正常にアクセスできない論理ボリューム230であることを示す。障害とは、例えば、論理ボリューム230を保持する記憶装置150の故障である。ボリューム状態が“未使用”の論理ボリューム230は、使用していない論理ボリューム230であることを示す。ペア番号は、ボリューム状態が“正”もしくは“副”の場合に有効であり、後述するペア情報500を特定するためのペア番号を保持する。図4に示す例では、論理ボリューム1は、フォーマット形式がOPEN3、容量が3GB、記憶装置番号1の記憶装置150の記憶領域の先頭からデータが格納されており、アクセス可能であり、データの複製対象であることを示す。
ペア情報500は、ペアを管理する情報であり、ペア状態、正記憶システム番号、正論理ボリューム番号、副記憶システム番号、副論理ボリューム番号、グループ番号、コピー済みアドレスを保持する。図5にペア情報500の一例を示す。ペア情報500は、ホストアダプタ110およびディスクアダプタ120から参照可能なメモリ、例えば管理メモリ140に保存する。ペア状態は、“正常”、“異常”、“未使用”,“コピー未”、“コピー中”のいずれかを保持する。ペア状態が“正常”の場合は、正論理ボリューム230のデータ複製が正常に行われていることを示す。ペア状態が“異常”の場合は、障害により正論理ボリューム230の複製が行えないことを示す。障害とは、例えば、接続パス200の断線などである。ペア状態が“未使用”の場合は、当該ペア番号の情報は有効でないことを示す。ペア状態が“コピー中”の場合は、後述する初期コピー処理中であることを示す。ペア状態が“コピー未”の場合は、後述する初期コピー処理が未だ行われていないことを示す。正記憶システム番号は、正論理ボリューム230を保持する正記憶システム100Aを特定する番号を保持する。副記憶システム番号は、副論理ボリューム230を保持する副記憶システム100Bを特定する番号を保持する。グループ番号は、正記憶システムの場合は、正論理ボリュームが属するグループ番号を保持する。副記憶システムの場合は、副論理ボリュームが属するグループ番号を保持する。コピー済みアドレスは、後述する初期コピー処理にて説明する。図5のペア情報1は、データ複製対象が正記憶システム1の正論理ボリューム1であり、データ複製先が副記憶システム2の副論理ボリューム1であり、正常にデータ複製処理が行われていることを示す。
グループ情報600は、グループ状態、ペア集合、ジャーナル論理ボリューム番号、更新番号を保持する。図6にグループ情報600の一例を示す。グループ情報600は、ホストアダプタ110およびディスクアダプタ120から参照可能なメモリ、例えば管理メモリ140に保存する。グループ状態は、“正常”、
“異常”、“未使用”のいずれかを保持する。グループ状態が“正常”の場合は、ペア集合の少なくともひとつのペア状態が“正常”であることを示す。グループ状態が“異常”の場合は、ペア集合の全てのペア状態が“異常”であることを示す。グループ状態が“未使用”の場合は、当該グループ番号の情報は有効でないことを示す。ペア集合は、正記憶システムの場合は、グループ番号が示すグループに属する全ての正論理ボリュームのペア番号を保持する。副記憶システムの場合は、グループ番号が示すグループに属する全ての副論理ボリュームのペア番号を保持する。ジャーナル論理ボリューム番号は、当該グループ番号のグループに属するジャーナル論理ボリューム番号を示す。更新番号は、初期値は1であり、グループ内の正論理ボリュームに対しデータの書き込みが行われると、1を加える。更新番号は、ジャーナルの更新情報に記憶し、副記憶システム100Bにて、データの更新順を守るために使用する。例えば、図6のグループ情報1は、ペア情報1,2から、正論理ボリューム1,2と、ジャーナル論理ボリューム4から構成されており、正常にデータの複製処理が行われていることを示す。
ポインタ情報700は、グループ毎に保持し、当該グループのジャーナル論理ボリュームを管理する情報であり、更新情報領域先頭アドレス、ライトデータ領域先頭アドレス、更新情報最新アドレス、更新情報最古アドレス、ライトデータ最新アドレス、ライトデータ最古アドレス、リード開始アドレス、リトライ開始アドレスを保持する。図7および図8にポインタ情報700の一例を示す。更新情報領域先頭アドレスは、ジャーナル論理ボリュームの更新情報を格納する記憶領域(更新情報領域)の先頭の論理アドレスを保持する。ライトデータ領域先頭アドレスは、ジャーナル論理ボリュームのライトデータを格納する記憶領域(ライトデータ領域)の先頭の論理アドレスを保持する。更新情報最新アドレスは、次にジャーナルを格納する場合に、更新情報の保存に使用する先頭の論理アドレスを保持する。更新情報最古アドレスは、最古の(更新番号が小さい)ジャーナルの更新情報を保存する先頭の論理アドレスを保持する。ライトデータ最新アドレスは、次にジャーナルを格納する場合に、ライトデータの保存に使用する先頭の論理アドレスを保持する。ライトデータ最古アドレスは、最古の(更新番号が小さい)ジャーナルのライトデータを保存する先頭の論理アドレスを保持する。リード開始アドレスとリトライ開始アドレスは、正記憶システム100Aのみで使用し、後述するジャーナルリード受信処理にて使用する。図7および図8のポインタ情報700の例では、ジャーナルの管理情報を保存する領域(更新情報領域)は、論理ボリューム4の記憶領域の先頭から699の位置までであり、ジャーナルのライトデータを保存する領域(ライトデータ領域)は、論理ボリューム4の記憶領域の700の位置から2699の位置までである。ジャーナルの管理情報は、論理ボリューム4の記憶領域の200の位置から499の位置まで保存されており、次のジャーナルの管理情報は、論理ボリューム4の記憶領域の500の位置から保存する。ジャーナルのライトデータは論理ボリューム4の記憶領域の1300の位置から2199の位置まで保存されており、次のジャーナルのライトデータは、論理ボリューム4の記憶領域の2200の位置から保存する。
下記の説明では、1つのグループに1つのジャーナル論理ボリュームを割り当てる形態で説明しているが、1つのグループに複数のジャーナル論理ボリュームを割り当ててもよい。例えば、1つのグループに2つのジャーナル論理ボリュームを割り当て、ジャーナル論理ボリューム毎にポインタ情報700を設け、交互にジャーナルを格納する。これにより、ジャーナルの記憶装置150への書き込みが分散でき、性能の向上が見込める。さらに、ジャーナルのリード性能も向上する。別の例としては、1つのグループに2つのジャーナル論理ボリュームを割り当て、通常は、1つのジャーナル論理ボリュームのみを使用する。もう一方のジャーナル論理ボリュームは、使用しているジャーナル論理ボリュームの性能が低下した場合に使用する。性能が低下する例は、ジャーナル論理ボリュームが、複数の記憶装置150から構成され、RAID5の方式でデータを保持しており、構成する記憶装置150の一台が故障中の場合である。
なお、上述のボリューム情報400、ペア情報500、グループ情報600、及びポインタ情報700等は、共有メモリ140に格納されていることが好ましい。しかし、本実施例は、この場合に限られず、これらの情報を、キャッシュメモリ130、ホストアダプタ110、ディスクアダプタ120、その他記憶装置150に集中して格納または分散して格納することもよい。
次に、正記憶システム100Aから副記憶システム100Bに対して、データ複製を開始する手順を図9、図10を用いて説明する。
(1)グループ作成について説明する(ステップ900)。ユーザは、保守端末あるいはホストコンピュータ180を使用して、正記憶システム100Aのグループ情報600を参照し、グループ状態が“未使用”のグループ番号Aを取得する。ユーザは、保守端末あるいはホストコンピュータ180を使用して、グループ番号Aを指定し、グループ作成指示を正記憶システム100Aに行う。
グループ作成指示を受けて、正記憶システム100Aは、指定されたグループ番号Aのグループ状態を“正常”に変更する。
同様に、ユーザは、副記憶システム100Bのグループ情報600を参照し、グループ状態が“未使用”のグループ番号Bを取得する。ユーザは、保守端末あるいはホストコンピュータ180を使用して、副記憶システム100Bとグループ番号Bを指定し、グループ作成指示を正記憶システム100Aに行う。正記憶システム100Aは、受信したグループ作成指示を副記憶システム100Bに転送する。副記憶システム100Bは、指定されたグループ番号Bのグループ状態を“正常”に変更する。
ユーザは、副記憶システム100Bの保守端末あるいは副記憶システム100Bに接続したホストコンピュータ180を使用して、グループ番号Bを指定し、グループ作成指示を副記憶システム100Bに行ってもよい。
(2)ペア登録について説明する(ステップ910)。ユーザは、保守端末あるいはホストコンピュータ180を使用して、データ複製対象を示す情報とデータ複製先を示す情報を指定し、ペア登録指示を正記憶システム100Aに行う。データ複製対象を示す情報は、データ複製対象のグループ番号Aと正論理ボリューム番号である。データ複製先を示す情報は、複製データを保存する副記憶システム100Bとグループ番号B、副論理ボリューム番号である。
前記ペア登録指示を受けて、正記憶システム100Aは、ペア情報500からペア情報が“未使用”のペア番号を取得し、ペア状態を“コピー未”に、正記憶システム番号に、正記憶システム100Aを示す正記憶システム番号を、正論理ボリューム番号に、指示された正論理ボリューム番号を、副記憶システム番号に、指示された副記憶システム番号を、副論理ボリューム番号に、指示された副論理ボリューム番号を、グループ番号に、指示されたグループ番号Aを設定する。正記憶システム100Aは、指示されたグループ番号Aのグループ情報600のペア集合に前記取得したペア番号を追加し、正論理ボリューム番号のボリューム状態を“正”に変更する。
正記憶システム100Aは、正記憶システム100Aを示す正記憶システム番号、ユーザから指定されたグループ番号B、正論理ボリューム番号、および副論理ボリューム番号を副記憶システム100Bに指示する。副記憶システム100Bは、ペア情報500から未使用のペア番号を取得し、ペア状態を“コピー未”に、正記憶システム番号に、記憶システム100Aを示す正記憶システム番号を、正論理ボリューム番号に、指示された正論理ボリューム番号を、副記憶システム番号に、副記憶システムBを示す副記憶システム番号を、副論理ボリューム番号に、指示された副論理ボリューム番号を、グループ番号に、指示されたグループ番号Bを設定する。
副記憶システム100Bは、指示されたグループ番号Bのグループ情報600のペア集合に前記取得したペア番号を追加し、副論理ボリューム番号のボリューム状態を“副”に変更する。
以上の動作を全てのデータ複製対象のペアに対して行う。
前記の説明では、論理ボリュームのグループへの登録と、論理ボリュームのペアの設定を同時に行う処理を説明したが、それぞれ個別に行ってもよい。
(3)ジャーナル論理ボリューム登録について説明する(ステップ920)。ユーザは、保守端末あるいはホストコンピュータ180を使用して、ジャーナルの保存に使用する論理ボリューム(ジャーナル論理ボリューム)をグループに登録する指示(ジャーナル論理ボリューム登録指示)を正記憶システム100Aに行う。ジャーナル論理ボリューム登録指示は、グループ番号と論理ボリューム番号からなる。
正記憶システム100Aは、指示されたグループ番号のグループ情報600のジャーナル論理ボリューム番号に指示された論理ボリューム番号を登録する。当該論理ボリュームのボリューム情報400のボリューム状態を“正常”に設定する。
同様に、ユーザは、保守端末あるいはホストコンピュータ180を使用して、副記憶システム100Bのボリューム情報400を参照し、副記憶システム100B、グループ番号B、ジャーナル論理ボリュームとして使用する論理ボリューム番号を指定し、ジャーナル論理ボリューム登録を正記憶システム100Aに行う。正記憶システム100Aは、ジャーナル論理ボリューム登録指示を副記憶システム100Bに転送する。副記憶システム100Bは、指示されたグループ番号Bのグループ情報600のジャーナル論理ボリューム番号に指示された論理ボリューム番号を登録する。当該論理ボリュームのボリューム情報400のボリューム状態を“正常”に設定する。
ユーザは、副記憶システム100Bの保守端末あるいは副記憶システム100Bに接続したホストコンピュータ180を使用して、グループ番号、ジャーナル論理ボリュームとして使用する論理ボリューム番号を指定し、ジャーナル論理ボリューム登録指示を副記憶システム100Bに行ってもよい。
以上の動作を全てのジャーナル論理ボリュームとして使用する論理ボリュームに対して行う。ステップ910とステップ920の順は不同ではない。
(4)データ複製処理開始について説明する(ステップ930)。ユーザは、保守端末あるいはホストコンピュータ180を使用して、データ複製処理を開始するグループ番号を指定し、データ複製処理の開始を正記憶システム100Aに指示する。正記憶システム100Aは、指示されたグループに属する全てのペア情報400のコピー済みアドレスを0に設定する。
正記憶システム100Aは、副記憶システム100Bに、後述するジャーナルリード処理およびリストア処理の開始を指示する。
正記憶システム100Aは、後述する初期コピー処理を開始する。
(5)初期コピー終了について説明する(ステップ940)。
初期コピーが終了すると、正記憶システム100Aは、初期コピー処理の終了を副記憶システム100Bに通知する。副記憶システム100Bは、指示されたグループに属する全ての副論理ボリュームのペア状態を“正常”に変更する。
図10は、初期コピー処理のフローチャートである。初期コピー処理は、データ複製対象の正論理ボリュームの全記憶領域に対し、ペア情報500のコピー済みアドレスを用い、記憶領域の先頭から順に、単位サイズ毎にジャーナルを作成する。コピー済みアドレスは、初期値は0であり、ジャーナルの作成毎に、作成したデータ量を加算する。論理ボリュームの記憶領域の先頭から、コピー済みアドレスの一つ前までは、初期コピー処理にてジャーナルは作成済みである。初期コピー処理を行うことにより、正論理ボリュームの更新されていないデータを副論理ボリュームに転送することが可能となる。以下の説明では、正記憶システム100A内のホストアダプタAが処理を行うように記載しているが、ディスクアダプタ120が行ってもよい。
(1)正記憶システム100A内のホストアダプタAは、処理対象のグループに属するペアでペア状態が“コピー未”である正論理ボリュームAを得、ペアの状態を“コピー中”に変更し、以下の処理を繰り返す(ステップ1010、1020)。正論理ボリュームAが存在しない場合は、処理を終了する(ステップ1030)。
(2)ステップ1020にて、論理ボリュームAが存在した場合、ホストアダプタAは、単位サイズ(例えば、1MB)のデータを対象にジャーナルを作成する。ジャーナル作成処理は後述する(ステップ1040)。
(3)ホストアダプタAは、コピー済みアドレスに作成したジャーナルのデータサイズを加算する(ステップ1050)。
(4)コピー済みアドレスが、正論理ボリュームAの容量に達するまで、上記処理を繰り返す(ステップ1060)。コピー済みアドレスが、正論理ボリュームAの容量と等しくなった場合、正論理ボリュームAの全記憶領域に対してジャーナルを作成したため、ペア状態を“正常”に更新し、他の正論理ボリュームの処理を開始する(ステップ1070)。
前記のフローチャートでは、論理ボリュームを1つずつ対象とするように説明したが、複数の論理ボリュームを同時に処理してもよい。
図11は命令受信処理210の処理を説明する図、図12は命令受信処理210のフローチャート、図13はジャーナル作成処理のフローチャートである。以下、これらを用いて、正記憶システム100Aが、ホストコンピュータ180からデータ複製対象の論理ボリューム230にライト命令を受信した場合の動作について説明する。
(1)記憶システム100A内のホストアダプタAは、ホストコンピュータからアクセス命令を受信する。アクセス命令は、リード、ライト、後述するジャーナルリード等の命令、命令対象の論理アドレス、データ量等を含んでいる。以下、アクセス命令内の論理アドレスを論理アドレスA、論理ボリューム番号を論理ボリュームA、論理ボリューム内位置を論理ボリューム内位置A、データ量をデータ量Aとする(ステップ1200)。
(2)ホストアダプタAは、アクセス命令を調べる(ステップ1210、1215)。ステップ1215の調べで、アクセス命令がジャーナルリード命令の場合は、後述するジャーナルリード受信処理を行う(ステップ1220)。アクセス命令がジャーナルリード命令およびライト命令以外、例えば、リード命令の場合は、従来技術と同じようにリード処理を行う(ステップ1230)。
(3)ステップ1210の調べで、アクセス命令がライト命令の場合は、論理ボリュームAのボリューム情報400を参照し、ボリューム状態を調べる(ステップ1240)。ステップ1240の調べで、論理ボリュームAのボリューム状態が、“正常”もしくは“正”以外の場合は、論理ボリュームAへのアクセスは不可能なため、ホストコンピュータ180に異常終了を報告する(ステップ1245)。
(4)ステップ1240の調べで、論理ボリュームAのボリューム状態が、“正常”、“正”のいずれかの場合は、ホストアダプタAは、キャッシュメモリ130を確保し、ホストコンピュータ180にデータ受信の準備ができたことを通知する。ホストコンピュータ180は、その通知を受け、ライトデータを正記憶システム100Aに送信する。ホストアダプタAは、ライトデータを受信し、当該キャッシュメモリ130に保存する(ステップ1250、図11の1100)。
(5)ホストアダプタAは、論理ボリュームAのボリューム状態を参照し、論理ボリュームAがデータ複製対象かどうかを調べる(ステップ1260)。ステップ1260の調べで、ボリューム状態が、“正”である場合は、論理ボリュームAがデータ複製対象であるため、後述するジャーナル作成処理を行う(ステップ1265)。
(6)ステップ1260の調べで、ボリューム状態が、“正常”である場合、もしくはステップ1265のジャーナル作成処理の終了後、ホストアダプタAは、ディスクアダプタ120にライトデータを記憶装置150に書き込むことを命令し(図11の1140)、ホストコンピュータ180に終了報告する(ステップ1270、1280)。その後、当該ディスクアダプタ120は、リードライト処理により、記憶装置150にライトデータを保存する(図11の1110)。
次に、ジャーナル作成処理について説明する。
(1)ホストアダプタAは、ジャーナル論理ボリュームのボリューム状態を調べる(ステップ1310)。ステップ1310の調べで、ジャーナル論理ボリュームのボリューム状態が、“異常”の場合は、ジャーナル論理ボリュームにジャーナルの格納が不可能なため、グループ状態を“異常”に変更し、処理を終了する(ステップ1315)。この場合、ジャーナル論理ボリュームを正常な論理ボリュームに変更する等を行う。
(2)ステップ1310の調べで、ジャーナル論理ボリュームが正常である場合、ジャーナル作成処理を継続する。ジャーナル作成処理は、初期コピー処理内の処理であるか、命令受信処理内の処理であるかによって処理が異なる(ステップ1320)。ジャーナル作成処理が命令受信処理内の処理の場合は、ステップ1330からの処理を行う。ジャーナル作成処理が初期コピー処理内の場合は、ステップ1370からの処理を行う。
(3)ジャーナル作成処理が命令受信処理内の処理の場合、ホストアダプタAは、ライト対象の論理アドレスAが、初期コピー処理の処理対象となったかを調べる(ステップ1330)。論理ボリュームAのペア状態が“コピー未”の場合は、後に初期コピー処理にてジャーナル作成処理が行われるため、ジャーナルを作成せずに処理を終了する(ステップ1335)。論理ボリュームAのペア状態が“コピー中”の場合は、コピー済みアドレスが論理アドレス内位置Aと等しいもしくは、小さい場合は、後に初期コピー処理にてジャーナル作成処理が行われるため、ジャーナルを作成せずに処理を終了する(ステップ1335)。上記以外、つまり、論理ボリュームAのペア状態が“コピー中”かつコピー済みアドレスが論理アドレス内位置A以上の場合もしくは、論理ボリュームAのペア状態が
“正常”の場合は、既に初期コピー処理が完了しているため、ジャーナル作成処理を継続する。
(4)次に、ホストアダプタAは、ジャーナルがジャーナル論理ボリュームに格納可能であるかを調べる。ポインタ情報700を用い、更新情報領域の未使用領域の有無を調べる(ステップ1340)。ポインタ情報700の更新情報最新アドレスと更新情報最古アドレスが等しい場合は、更新情報領域に未使用領域が存在しないため、ジャーナル作成失敗として処理を終了する(ステップ1390)。
ステップ1340の調べで、更新情報領域に未使用領域が存在する場合は、ポインタ情報700を用い、ライトデータ領域にライトデータが格納できるかを調べる(ステップ1345)。ライトデータ最新アドレスとデータ量Aの和が、ライトデータ最古アドレスと等しいもしくは大きい場合は、ライトデータ領域に格納できないため、ジャーナル作成失敗として処理を終了する(ステップ1390)。
(5)ジャーナルが格納可能である場合、ホストアダプタAは、更新番号と更新情報を格納する論理アドレスとライトデータを格納する論理アドレスを取得し、更新情報をキャッシュメモリ130内に作成する。更新番号は、対象グループのグループ情報600から取得し、1を足した数値をグループ情報600の更新番号に設定する。更新情報を格納する論理アドレスは、ポインタ情報700の更新情報最新アドレスであり、更新情報のサイズを足した数値をポインタ情報700の更新情報最新アドレスに設定する。ライトデータを格納する論理アドレスは、ポインタ情報700のライトデータ最新アドレスであり、ライトデータ最新アドレスにデータ量Aを足した数値をポインタ情報700のライトデータ最新アドレスに設定する。
ホストアダプタAは、上記取得した数値とグループ番号、ライト命令を受信した時刻、ライト命令内の論理アドレスA、データ量Aを更新情報に設定する(ステップ1350、図11の1120)。例えば、図6に示すグループ情報600、図7に示すポインタ情報700の状態で、グループ1に属する正論理ボリューム1の記憶領域の先頭から800の位置にデータサイズ100のライト命令を受信した場合、図22に示す更新情報を作成する。グループ情報の更新番号は5、ポインタ情報の更新情報最新アドレスは600(更新情報のサイズは100とする)、ライトデータ最新アドレスは2300となる。
(6)ホストアダプタAは、ディスクアダプタ120に、ジャーナルの更新情報とライトデータを記憶装置150に書き込むことを命令し、正常終了する(ステップ1360、図11の1130、1140、1150)。
(7)ジャーナル作成処理が、初期コピー処理内の処理の場合は、ステップ1370からの処理を行う。ホストアダプタAは、ジャーナルが作成可能であるかを調べる。ポインタ情報700を用い、更新情報領域の未使用領域の有無を調べる(ステップ1370)。ポインタ情報700の更新情報最新アドレスと更新情報最古アドレスが等しい場合は、更新情報領域に未使用領域が存在しないため、ジャーナル作成失敗として処理を終了する(ステップ1390)。本実施例で示した初期コピー処理の場合、ジャーナルのライトデータは、正論理ボリュームからリードし、ライトデータ領域は使用しないため、ライトデータ領域の未使用領域の確認は不要である。
(8)ステップ1370の調べで、ジャーナルが作成可能である場合、ホストアダプタAは、更新情報に設定する数値を取得し、更新情報をキャッシュメモリ130内に作成する。更新番号は、対象グループのグループ情報600から取得し、1を足した数値をグループ情報600の更新番号に設定する。更新情報を格納する論理アドレスは、ポインタ情報700の更新情報最新アドレスの位置であり、更新情報のサイズを足した数値をポインタ情報700の更新情報最新アドレスに設定する。
ホストアダプタAは、上記取得した数値とグループ番号、本処理の開始時刻、初期コピー処理対象の論理アドレス、初期コピーの1回の処理量、ライトデータを格納したジャーナル論理ボリュームの論理アドレスに初期コピー処理対象の論理アドレスを設定する(ステップ1380、図11の1120)。
(9)ホストアダプタAは、ディスクアダプタ120に、更新情報を記憶装置150に書き込むことを命令し、正常終了する(ステップ1385、図11の1140、1160
)。
上記説明では、更新情報をキャッシュメモリ130内に存在するように記載しているが、共有メモリ140内等に格納してもよい。
ライトデータの記憶装置150への書き込みは、非同期、つまり、ステップ1360およびステップ1385の直後でなくともよい。ただし、ホストコンピュータ180が、論理アドレスAにライト命令を再び行った場合、ジャーナルのライトデータが上書きされるため、ホストコンピュータ180からライトデータを受信する前に、ジャーナルのライトデータは、更新情報のジャーナル論理ボリュームの論理アドレスに対応する記憶装置150に書き込む必要がある。もしくは、別のキャッシュメモリに退避し、後に更新情報のジャーナル論理ボリュームの論理アドレスに対応する記憶装置150に書き込みを行ってもよい。
前述したジャーナル作成処理では、ジャーナルを記憶装置150に保存するとしていたが、ジャーナル用に予め一定量のキャッシュメモリ130を用意しておき、当該キャッシュメモリを全て使用してから、記憶装置150にジャーナルを保存してもよい。ジャーナル用のキャッシュメモリ量は、例えば、保守端末から指定する。
リードライト処理220は、ディスクアダプタ120が、ホストアダプタ110もしくはディスクアダプタ120から命令を受け、実施する処理である。実施する処理は、指定されたキャッシュメモリ130のデータを指定された論理アドレスに対応する記憶装置150内の記憶領域に書き込む処理、指定された論理アドレスに対応する記憶装置150内の記憶領域から指定されたキャッシュメモリ130にデータを読み込む処理等である。
図14はジャーナルリード命令を受信した正記憶システム100AのホストアダプタAの動作(ジャーナルリード受信処理)を説明する図、図15はフローチャートである。以下、これらを用いて、正記憶システム100Aが、副記憶システム100Bからジャーナルリード命令を受信した場合の動作について説明する。
(1)正記憶システム100A内のホストアダプタAは、副記憶システム100Bからアクセス命令を受信する。アクセス命令は、ジャーナルリード命令であることを示す識別子、命令対象のグループ番号、リトライ指示の有無を含んでいる。以下、アクセス命令内のグループ番号をグループ番号Aとする(ステップ1220、図14の1410)。
(2)ホストアダプタAは、グループ番号Aのグループ状態が“正常”であるかを調べる(ステップ1510)。ステップ1510の調べで、グループ状態が
“正常”以外、例えば、“障害”の場合は、副記憶システム100Bにグループ状態を通知し、処理を終了する。副記憶システム100Bは、受信したグループ状態に応じて処理を行う。例えば、グループ状態が“障害”の場合は、ジャーナルリード処理を終了する(ステップ1515)。
(3)ステップ1510の調べで、グループ番号Aのグループ状態が“正常”の場合、ホストアダプタAは、ジャーナル論理ボリュームの状態を調べる(ステップ1520)。ステップ1520の調べで、ジャーナル論理ボリュームのボリューム状態が“正常”でない場合は、例えば、“障害”の場合は、グループ状態を“障害”に変更し、副記憶システム100Bにグループ状態を通知し、処理を終了する。副記憶システム100Bは、受信したグループ状態に応じて処理を行う。例えば、グループ状態が“障害”の場合は、ジャーナルリード処理を終了する(ステップ1525)。
(4)ステップ1520の調べで、ジャーナル論理ボリュームのボリューム状態が“正常”の場合は、ジャーナルリード命令がリトライ指示かを調べる(ステップ1530)。
(5)ステップ1530の調べで、ジャーナルリード命令がリトライ指示の場合、ホストアダプタAは、前回送信したジャーナルを再度、副記憶システム100Bに送信する。ホストアダプタAは、キャッシュメモリ130を確保し、ディスクアダプタに、ポインタ情報700のリトライ開始アドレスから、更新情報のサイズの情報をキャッシュメモリに読み込むことを命令する(図14の1420)。
ディスクアダプタのリードライト処理は、記憶装置150から更新情報を読み込み、キャッシュメモリ130に保存し、ホストアダプタAに通知する(図14の1430)。
ホストアダプタAは、更新情報のリード終了の通知を受け、更新情報から、ライトデータの論理アドレスおよびライトデータのサイズを取得し、キャッシュメモリ130を確保し、ディスクアダプタにライトデータをキャッシュメモリに読み込むことを命令する(ステップ1540、図14の1440)。
ディスクアダプタのリードライト処理は、記憶装置150からライトデータを読み込み、キャッシュメモリ130に保存し、ホストアダプタAに通知する(図14の1450)。
ホストアダプタAは、ライトデータのリード終了の通知を受け、更新情報とライトデータを副記憶システム100Bに送信し、ジャーナルを保持しているキャッシュメモリ130を開放し、処理を終了する(ステップ1545、図14の1460)。
(6)ステップ1530の調べで、リトライ指示でない場合、ホストアダプタAは、送信していないジャーナルが存在するかを調べ、存在すれば、ジャーナルを副記憶システム100Bに送信する。ホストアダプタAは、ポインタ情報700のリード開始アドレスと更新情報最新アドレスを比較する(ステップ1550)。
リード開始アドレスが更新情報最新アドレスと等しい場合は、全てのジャーナルを副記憶システム100Bに送信済みであるため、副記憶システム100Bに
“ジャーナル無“を送信し(ステップ1560)、前回のジャーナルリード命令の時に、副記憶システム100Bに送信したジャーナルの記憶領域を開放する(ステップ1590)。
ジャーナルの記憶領域の開放処理は、ポインタ情報700の更新情報最古アドレスに、リトライ開始アドレスを設定する。更新情報最古アドレスがライトデータ領域先頭アドレスとなった場合は、更新情報最古アドレスは0とする。ポインタ情報700のライトデータ最古アドレスは、前回のリードジャーナル命令に応じて送信したライトデータのサイズを足した数値に変更する。ライトデータ最古アドレスが、ジャーナル論理ボリュームの容量以上の論理アドレスとなった場合は、ライトデータ領域先頭アドレスを減じ、補正する。
(7)ステップ1550の調べで、未送信のジャーナルが存在する場合、ホストアダプタAは、キャッシュメモリ130を確保し、ディスクアダプタにポインタ情報700のリード開始アドレスから、更新情報のサイズの情報をキャッシュメモリに読み込むことを命令する(図14の1420)。
ディスクアダプタAのリードライト処理は、記憶装置150から更新情報を読み込み、キャッシュメモリ130に保存し、ホストアダプタに通知する(図14の1430)。
ホストアダプタAは、更新情報のリード終了の通知を受け、更新情報から、ライトデータの論理アドレスおよびライトデータのサイズを取得し、キャッシュメモリ130を確保し、ディスクアダプタAにライトデータをキャッシュメモリに読み込むことを命令する(ステップ1570、図14の1440)。
ディスクアダプタAのリードライト処理は、記憶装置150からライトデータを読み込み、キャッシュメモリ130に保存し、ホストアダプタに通知する(図14の1450)。
ホストアダプタAは、ライトデータのリード終了の通知を受け、更新情報とライトデータを副記憶システム100Bに送信(ステップ1580)し、ジャーナルを保持しているキャッシュメモリ130を開放する(図14の1460)。そして、ポインタ情報700のリトライ開始アドレスにリード開始アドレスを設定し、リード開始アドレスに送信したジャーナルの更新情報サイズを足した数値を設定する。
(8)ホストアダプタAは、前回のジャーナルリード命令の処理時に、副記憶システム100Bに送信したジャーナルの記憶領域を開放する(ステップ1590)。
前述したジャーナルリード受信処理では、正記憶システム100Aは、ジャーナルを一つずつ副記憶システム100Bに送信していたが、複数同時に副記憶システム100Bに送信してもよい。1つのジャーナルリード命令で、送信するジャーナル数は、副記憶システム100Bがジャーナルリード命令内に指定してもよいし、グループ登録の際等に、ユーザが正記憶システム100Aもしくは、副記憶システム100Bに指定してもよい。さらに、正記憶システム100Aと副記憶システム100Bの接続パス200の転送能力もしくは、負荷等により、動的に1つのジャーナルリード命令で送信するジャーナル数を変更してもよい。また、ジャーナル数でなく、ジャーナルのライトデータのサイズを考慮し、ジャーナルの転送量を指定してもよい。
前述したジャーナルリード受信処理では、ジャーナルを記憶装置150からキャッシュメモリ130に読み込んでいたが、キャッシュメモリ130に存在する場合は、当該処理は不要である。
前述したジャーナルリード受信処理内のジャーナルの記憶領域の開放処理は、次のジャーナルリード命令の処理時としたが、副記憶システム100Bにジャーナルを送信した直後に開放してもよい。また、副記憶システム100Bが、ジャーナルリード命令内に開放してよい更新番号を設定し、正記憶システム100Aは、その指示に従って、ジャーナルの記憶領域を開放していもよい。
図16はジャーナルリード命令処理240を説明する図、図17はフローチャート、図18はジャーナル格納処理のフローチャートである。以下、これらを用いて、副記憶システム100BのホストアダプタBが、正記憶システム100Aからジャーナルを読み出し、ジャーナル論理ボリュームに格納する動作について説明する。
(1)副記憶システム100B内のホストアダプタBは、ジャーナルを格納するキャッシュメモリ130を確保し、ジャーナルリード命令であることを示す識別子、命令対象の正記憶システム100Aのグループ番号、リトライ指示の有無を含むアクセス命令を正記憶システム100Aに送信する。以下、アクセス命令内のグループ番号をグループ番号Aとする(ステップ1700、図16の1610)。
(2)ホストアダプタBは、正記憶システム100Aの応答およびジャーナルを受信する(図16の1620)。ホストアダプタBは応答を調べ、正記憶システム100Aからの応答が、“ジャーナル無”の場合は、正記憶システム100Aには、指定したグループのジャーナルが存在しないため、一定時間後、正記憶システム100Aにリードジャーナル命令を送信する(ステップ1720、1725)。
(4)正記憶システム100Aの応答が、“グループ状態は障害”もしくは“グループ状態は未使用”の場合は、副記憶システム100Bのグループ状態を受信した状態に変更し、ジャーナルリード処理を終了する(ステップ1730、1735)。
(5)正記憶システム100Aの応答が、上記以外、つまり、正常終了の場合は、ジャーナル論理ボリュームのボリューム状態を調べる(ステップ1740)。ジャーナル論理ボリュームのボリューム状態が“異常”の場合は、ジャーナル論理ボリュームにジャーナルの格納が不可能なため、グループ状態を“異常”に変更し、処理を終了する(ステップ1745)。この場合、ジャーナル論理ボリュームを正常な論理ボリュームに変更する等を行い、グループの状態を正常に戻す。
(6)ステップ1740の調べで、ジャーナル論理ボリュームのボリューム状態が“正常”の場合は、後述するジャーナル格納処理1800を行う。ジャーナル格納処理1800が正常に終了した場合は、次のジャーナルリード命令を送信する。もしくは、一定時間経過後、次のジャーナルリード命令を送信する(ステップ1760)。次のジャーナル命令を送信するタイミングは、一定の時間間隔で定期的に送信するものでもよく、受信したジャーナルの個数もしくは、接続線200の通信量、副記憶システム100Bが保持しているジャーナルの記憶容量、副記憶システム100Bの負荷等によって決めてもよい。さらに、正記憶システム100Aが保持しているジャーナルの記憶容量、もしくは正記憶システム100Aのポインタ情報を副記憶システム100Bから読み出し、その数値に基づいて決めてもよい。上記情報の転送は、専用のコマンドで行ってもよいし、ジャーナルリード命令の応答に含んでもよい。その後の処理は、ステップ1710以降と同じである。
(7)ステップ1800のジャーナル格納処理が正常に終了しない場合は、ジャーナル論理ボリュームの未使用領域が足りないため、受信したジャーナルを破棄し、一定時間後にリトライ指示のジャーナルリード命令を送信する(ステップ1755)。もしくは、ジャーナルをキャッシュメモリに保持しておき、一定時間後に、再度ジャーナル格納処理を行う。これは、後述するリストア処理250が行われることにより、一定時間後には、ジャーナル論理ボリュームに未使用領域が増える可能性があるためである。この方式の場合は、ジャーナルリード命令にリトライ指示の有無は不要である。
次に、図18に示すジャーナル格納処理1800について説明する。
(1)ホストアダプタBは、ジャーナルがジャーナル論理ボリュームに格納可能であるかを調べる。ポインタ情報700を用い、更新情報領域に未使用領域の有無を調べる(ステップ1810)。ポインタ情報700の更新情報最新アドレスと更新情報最古アドレスが等しい場合は、更新情報領域に未使用領域が存在しないため、ジャーナル作成失敗として処理を終了する(ステップ1820)。
(2)ステップ1810の調べで、更新情報領域に未使用領域が存在する場合は、ポインタ情報700を用い、ライトデータ領域にライトデータが格納できるかを調べる(ステップ1830)。ライトデータ最新アドレスと受信したジャーナルのライトデータのデータ量の和が、ライトデータ最古アドレスと等しいもしくは大きい場合は、ライトデータ領域にライトデータを格納できないため、ジャーナル作成失敗として処理を終了する(ステップ1820)。
(3)ジャーナルが格納可能である場合、ホストアダプタBは、受信した更新情報のグループ番号とジャーナル論理ボリュームの論理アドレスを変更する。グループ番号は、副記憶システム100Bのグループ番号に変更し、ジャーナル論理ボリュームの論理アドレスはポインタ情報700のライトデータ最新アドレスに変更する。ホストアダプタBは、ポインタ情報700の更新情報最新アドレスを更新情報最新アドレスに更新情報のサイズを足した数値に変更する。ホストアダプタBは、ポインタ情報700のライトデータ最新アドレスを、ライトデータ最新アドレスにライトデータのサイズを足した数値に変更する(ステップ1840)。
(4)ホストアダプタBは、ディスクアダプタ120に、更新情報とライトデータを記憶装置150に書き込むことを命令し、ジャーナル作成成功として処理を終了する(ステップ1850、図16の1630)。その後、ディスクアダプタ120は、リードライト処理により、記憶装置150に更新情報とライトデータを書き込み、キャッシュメモリ130を開放する(図16の1640)。
前述したジャーナル格納処理では、ジャーナルを記憶装置150に保存するとしていたが、ジャーナル用に予め一定量のキャッシュメモリ130を用意しておき、当該キャッシュメモリを全て使用してから、記憶装置150にジャーナルを保存してもよい。ジャーナル用のキャッシュメモリ量は、例えば、保守端末から指定する。
図19はリストア処理250を説明する図、図20はフローチャートである。以下、これらを用いて、副記憶システム100BのホストアダプタBが、ジャーナルを利用し、データの更新を行う動作について説明する。リストア処理250は副記憶システム100Bのディスクアダプタ120が処理を行ってもよい。
(1)ホストアダプタBは、グループ番号Bのグループ状態が“正常”であるかを調べる(ステップ2010)。ステップ2010の調べで、グループ状態が“正常”以外、例えば、“障害”の場合は、リストア処理を終了する(ステップ2015)。
(2)ステップ2010の調べで、グループ状態が“正常”の場合は、ジャーナル論理ボリュームのボリューム状態を調べる(ステップ2020)。ステップ2020の調べで、ジャーナル論理ボリュームのボリューム状態が、“異常”の場合は、アクセス不可能なため、グループ状態を“異常”に変更し、処理を終了する(ステップ2025)。
(3)ステップ2020の調べで、ジャーナル論理ボリュームのボリューム状態が、“正常”の場合は、リストア対象のジャーナルが存在するかを調べる。ホストアダプタBは、ポインタ情報700の更新情報最古アドレスと更新情報最新アドレスを取得する。更新情報最古アドレスと更新情報最新アドレスが等しい場合、ジャーナルは存在しないため、リストア処理は一旦終了し、一定時間後、リストア処理を再開する(ステップ2030)。
(4)ステップ2030の調べで、リストア対象のジャーナルが存在する場合、最古(最小)の更新番号を持つジャーナルに対して次の処理を行う。最古(最小)の更新番号を持つジャーナルの更新情報は、ポインタ情報700の更新情報最古アドレスから保存されている。ホストアダプタBは、キャッシュメモリ130を確保し、ディスクアダプタに更新情報最古アドレスから、更新情報のサイズの情報をキャッシュメモリ130に読み込むことを命令する(図19の1910)。
ディスクアダプタのリードライト処理は、記憶装置150から更新情報を読み込み、キャッシュメモリ130に保存し、ホストアダプタBに通知する(図19の1920)。
ホストアダプタBは、更新情報のリード終了の通知を受け、更新情報から、ライトデータの論理アドレスおよびライトデータのサイズを取得し、キャッシュメモリ130を確保し、ディスクアダプタにライトデータをキャッシュメモリに読み込むことを命令する(図19の1930)。
ディスクアダプタのリードライト処理は、記憶装置150からライトデータを読み込み、キャッシュメモリ130に保存し、ホストアダプタに通知する(ステップ2040、図19の1940)。
(5)ホストアダプタBは、更新情報から更新する副論理ボリュームの論理アドレスを求め、ディスクアダプタに副論理ボリュームにライトデータを書き込むことを命令する(ステップ2050、図19の1950)。ディスクアダプタのリードライト処理は、副論理ボリュームの論理アドレスに対応する記憶装置150にデータを書き込み、キャッシュメモリ130を開放し、ホストアダプタに通知する(図19の1960)。
(6)ホストアダプタBは、ディスクアダプタのライト処理完了の通知を受け、ジャーナルの記憶領域を開放する。ジャーナルの記憶領域の開放処理は、ポインタ情報700の更新情報最古アドレスを更新情報のサイズを足した数値に変更する。更新情報最古アドレスが、ライトデータ領域先頭アドレスとなった場合は、ライトデータ領域先頭アドレスは0とする。ポインタ情報700のライトデータ最古アドレスは、ライトデータのサイズを足した数値に変更する。ライトデータ最古アドレスが、ジャーナル論理ボリュームの容量以上の論理アドレスとなった場合は、ライトデータ領域先頭アドレスを減じ、補正する。その後、ホストアダプタBは、次のリストア処理を開始する(ステップ2060)。
前述したリストア処理250では、記憶装置150からキャッシュメモリ130にジャーナルを読み込んでいたが、キャッシュメモリ130に存在する場合は、当該処理は不要である。
前述したジャーナルリード受信処理とジャーナルリード命令処理240では、正記憶システム100Aが送信するジャーナルをポインタ情報700により決めていたが、副記憶システム100Bが送信するジャーナルを決めてもよい。例えば、ジャーナルリード命令に更新番号を追加する。この場合、ジャーナルリード受信処理にて、副記憶システム100Bが指定した更新番号の更新情報の論理アドレスを求めるために、正記憶システム100Aの共有メモリ140内に、更新番号から更新情報を格納した論理アドレスを求めるテーブルもしくは検索方法を設ける。
前述したジャーナルリード受信処理とジャーナルリード命令処理240では、ジャーナルリード命令を用いていたが、通常のリード命令を用いてもよい。例えば、正記憶システム100Aのグループ情報600とポインタ情報700を予め副記憶システム100Bに転送しておき、副記憶システム100Bは、正記憶システム100Aのジャーナル論理ボリュームのデータ(つまり、ジャーナル)をリードする。
前述したジャーナルリード受信処理では、更新番号の順に、正記憶システム100Aから副記憶システム100Bにジャーナルを送信すると説明したが、更新番号の順に送信せずともよい。また、正記憶システム100Aから副記憶システム100Bに複数のジャーナルリード命令を送信してもよい。この場合、リストア処理にて更新番号順にジャーナルを処理するために、副記憶システム100Bに、更新番号から更新情報を格納した論理アドレスを求めるテーブルもしくは検索方法を設ける。
前述した本発明のデータ処理システムでは、正記憶システムがジャーナルを取得し、副記憶システムがデータの複製を行う。これにより、正記憶システムに接続したホストコンピュータは、データの複製に関する負荷を負わない。さらに、正記憶システムと副記憶システム間でジャーナルを転送することにより、正記憶システムと正記憶システムに接続したホストコンピュータの通信線を使用しない。
図23は、第二の実施形態の論理的な構成を示す図である。
ホストコンピュータ180と記憶システム100Cを接続パス190により接続し、記憶システム100Cと正記憶システム100Aを接続パス200により接続し、正記憶システム100Aと副記憶システム100Bを接続パス200により接続した構成である。記憶システム100Cは、記憶システム100Cの論理ボリューム(ORG1)へのデータ更新時、論理ボリューム(ORG1)のデータ更新と正記憶システム100A内の論理ボリューム(DATA1)のデータ更新を行う。
正記憶システム100Aは、第1の実施例で説明した通り、正論理ボリューム(DATA1)へのデータ更新時、前述した命令受信処理210およびリードライト処理220によって、ジャーナル論理ボリューム(JNL1)にジャーナルの保存を行う(2310)。
副記憶システム100Bは、前述したジャーナルリード処理240によって、正記憶システム100Aからジャーナルをリードし、リードライト処理220によって、ジャーナル論理ボリューム(JNL2)にジャーナルを保存する(2320)。
正記憶システム100Aは、副記憶システム100Bからジャーナルをリードする命令を受信すると、命令受信処理210およびリードライト処理220によって、ジャーナル論理ボリューム(JNL1)からジャーナルを読み出し、副記憶システム100Bに送信する(2320)。
副記憶システム100Bは、前述したリストア処理250およびリードライト処理220によって、更新番号に従い、ジャーナル論理ボリューム(JNL2)からジャーナルを読み出し、正論理ボリューム(DATA1)の複製である副論理ボリューム(COPY1)のデータを更新する(2330)。このように、更新番号の順にデータを更新することにより、論理ボリューム間のデータの整合性を保つことが可能となる。
前述した本発明のデータ処理システムでは、正記憶システムがジャーナルを取得し、ジャーナル専用の記憶領域に格納する。さらに、副記憶システムは、正記憶システムから受信したジャーナルをジャーナル専用の記憶領域に格納する。ジャーナル専用の記憶領域はデータ複製対象の記憶領域より少なくすることが可能であり、より少ない記憶容量で、副記憶システムに正記憶システムのデータの複製が可能となる。
図24は、第三の実施形態の論理的な構成を示す図である。
ホストコンピュータ180と記憶システム100Cを接続パス190により接続し、記憶システム100Cと正記憶システム100Aを接続パス200により接続し、正記憶システム100Aと副記憶システム100Bを接続パス200により接続した構成である。記憶システム100Cは、従来技術で説明した通り、記憶システム100Cの論理ボリューム(ORG1)へのデータ更新時、論理ボリューム(ORG1)のデータ更新と正記憶システム100A内の論理ボリューム(DATA1)のデータ更新を行う。
正記憶システム100Aは、記憶システム100Cに対し、正論理ボリューム(DATA1)があるように見せるが、実際の記憶領域、つまり記憶装置150は割り当てない。例えば、ボリューム情報400の物理アドレスに記憶装置150を割り当てていないことを示す数値を設定する。正記憶システム100Aは、記憶システム100Cから正論理ボリューム(DATA1)のデータへのライト命令受信時、前述した命令受信処理210内のステップ1270の処理を行わず、ジャーナル論理ボリューム(JNL1)にジャーナルの保存のみを行う(2410)。
副記憶システム100Bは、前述したジャーナルリード処理240によって、正記憶システム100Aからジャーナルをリードし、リードライト処理220によって、ジャーナル論理ボリューム(JNL2)にジャーナルを保存する(2420)。
正記憶システム100Aは、副記憶システム100Bからジャーナルをリードする命令を受信すると、命令受信処理210およびリードライト処理220によって、ジャーナル論理ボリューム(JNL1)からジャーナルを読み出し、記憶システム100Bに送信する(2420)。
副記憶システム100Bは、前述したリストア処理250およびリードライト処理220によって、更新番号に従い、ジャーナル論理ボリューム(JNL2)からジャーナルを読み出し、論理ボリューム(ORG1)の複製である副論理ボリューム(COPY1)のデータを更新する(2430)。このように、更新番号の順にデータを更新することにより、論理ボリューム間のデータの整合性を保つことが可能となる。
前述した本発明のデータ処理システムでは、記憶システム100Cもしくは、記憶システム100Cに接続したホストコンピュータ180に障害が生じた場合、副記憶システム100Bの論理ボリューム(COPY1)に対し、正記憶システム100A内のジャーナル(JNL1)を反映することにより、記憶システム100Bに接続したホストコンピュータにより最新データの参照、更新が可能となる。さらに、正記憶システム100Aにデータの複製を保持せず、ジャーナルのみを格納することで、データ複製に必要な記憶容量が少なくすることが可能となる。
以上、本発明者によってなされた発明を実施例の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。