(57)【要約】【課題】障害発生時刻の直前までデータベースの整合性を確保できるストレージシステム、制御方法、及びプログラムを提供する。【解決手段】正系ボリューム３ａから転送された、データベース７ａと基底ジャーナル８ａと障害情報９ａとを記憶する、複製ボリューム５ａと、正系ボリューム３ａ及び副系ボリューム４ａに記憶されている、データベース７ｂと基底ジャーナル８ｂとを更新する、主系サーバ２と、複製ボリューム５ａに記憶された障害情報９ｃに含まれる障害発生時刻を用いて、複製ボリューム５ａに記憶された基底ジャーナル８ｃを参照し、障害発生時刻に実行されたトランザクションに対応するトランザクション開始ＴＳを検出し、複製ボリューム５ａの全てのデータベース７ｃに対してトランザクション開始ＴＳまでロールバック処理を実行する、従系サーバ６と、を有するストレージシステム。【選択図】図１
2019168797.tif 000002
【特許請求の範囲】
【請求項１】
データベースと基底ジャーナルと障害情報とを記憶する、正系ボリュームと、
前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する、副系ボリュームと、
前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する、複製ボリュームと、
前記正系ボリューム及び副系ボリュームを更新する、主系サーバと、
前記複製ボリュームに記憶された障害情報に含まれる障害発生時刻を用いて、前記複製ボリュームに記憶された前記基底ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクション開始を検出し、前記複製ボリュームの全てのデータベースに対して前記トランザクション開始までロールバック処理を実行する、従系サーバと、
を有することを特徴とするストレージシステム。
【請求項２】
データベースと基底ジャーナルと障害情報と累積ジャーナルとを記憶する、正系ボリュームと、
前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する、副系ボリュームと、
前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する、複製ボリュームと、
前記正系ボリューム及び副系ボリュームを更新する、主系サーバと、
前記複製ボリュームに記憶された障害情報に含まれる、障害発生時刻と、障害が発生した記憶媒体を示す障害記憶媒体特定情報とを用いて、前記複製ボリュームに記憶された、前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する前記累積ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出し、前記正系ボリュームにおいて障害が発生した前記記憶媒体に対応する、前記複製ボリュームに存在するデータベースに対して、検出した前記トランザクションレコードからロールフォワード処理を実行する、従系サーバと、
を有することを特徴とするストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記従系サーバは、前記ロールフォワード処理が終了後、前記基底ジャーナルを参照し、前記複製ボリュームの全てのデータベースに対してロールバック処理を実行する
ことを特徴とするストレージシステム。
【請求項４】
データベースと基底ジャーナルと障害情報とを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、前記複製ボリュームを制御する従系サーバと、を有するストレージシステムの制御方法であって、
（Ａ）前記複製ボリュームに記憶された前記障害情報に含まれる障害発生時刻を用いて、前記複製ボリュームに記憶された前記基底ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクション開始を検出する、ステップと、
（Ｂ）前記複製ボリュームの全てのデータベースに対して前記トランザクション開始までロールバック処理を実行する、ステップと、
を有することを特徴とするストレージシステムの制御方法。
【請求項５】
データベースと基底ジャーナルと障害情報と累積ジャーナルとを記憶する正系ボリュー
ムと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、前記複製ボリュームを制御する従系サーバと、を有するストレージシステムの制御方法であって、
（Ｃ）前記複製ボリュームに記憶された障害情報に含まれる、障害発生時刻と、障害が発生した記憶媒体を示す障害記憶媒体特定情報とを用いて、前記複製ボリュームに記憶された、前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する前記累積ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出する、ステップと、
（Ｄ）前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する、前記複製ボリュームのデータベースに対して、検出した前記トランザクションレコードからロールフォワード処理を実行する、ステップと、
を有することを特徴とするストレージシステムの制御方法。
【請求項６】
請求項５に記載のストレージシステムの制御方法であって、
（Ｅ）前記ロールフォワード処理が終了後、前記基底ジャーナルを参照し、前記複製ボリュームの全てのデータベースに対してロールバック処理を実行する、ステップと、
を有することを特徴とするストレージシステムの制御方法。
【請求項７】
データベースと基底ジャーナルと障害情報とを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、を有するストレージシステムに接続されるコンピュータに実行される制御プログラムであって、
前記コンピュータに、
（Ａ）前記複製ボリュームに記憶された前記障害情報に含まれる障害発生時刻を用いて、前記複製ボリュームに記憶された前記基底ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクション開始を検出する、ステップと、
（Ｂ）前記複製ボリュームの全てのデータベースに対して前記トランザクション開始までロールバック処理を実行する、ステップと、
を実行させることを特徴とする制御プログラム。
【請求項８】
データベースと基底ジャーナルと障害情報と累積ジャーナルとを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、を有するストレージシステムに接続されるコンピュータに実行される制御プログラムであって、
前記コンピュータに、
（Ｃ）前記複製ボリュームに記憶された障害情報に含まれる、障害発生時刻と、障害が発生した記憶媒体を示す障害記憶媒体特定情報とを用いて、前記複製ボリュームに記憶された、前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する前記累積ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクションレコードを検出する、ステップと、
（Ｄ）前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する、前記複製ボリュームのデータベースに対して、検出した前記トランザクショ
ンレコードからロールフォワード処理を実行する、ステップと、  を実行させることを特徴とする制御プログラム。
【請求項９】
請求項８に記載の制御プログラムであって、
前記コンピュータに、
（Ｅ）前記ロールフォワード処理が終了後、前記基底ジャーナルを参照し、前記複製ボリュームの全てのデータベースに対してロールバック処理を実行する、ステップと、
を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、制御方法、及びプログラムに関する。特に、ソフトウェアによるボリューム二重化と、遠隔データリプリケーションとを適用したストレージシステム、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェアによるボリューム二重化と、遠隔データリプリケーション（ＲＤＲ：Remote Data Replication）とを適用したストレージシステムが提案されている。このようなストレージシステムは、主系サイト側に、正系サーバと、正系ボリュームを有する正系ストレージ装置と、副系ボリュームを有する副系ストレージ装置とを有する。従系サイト側に、従系サーバと、複製ボリュームを有する複製ストレージ装置とを有する。また、正系ボリュームと複製ボリュームとはネットワークで接続されている。
【０００３】
ところで、上述したストレージシステムにおいては、正系ボリュームに障害が発生している状況で、主系サイト側が被災した場合、障害が発生した正系ボリュームのデータベースは更新されない。そのため、従系サーバは、複製ボリュームのデータベースと基底ジャーナルとを利用して、ロールバック処理を実行しても、データベースの整合性を確保できない。基底ジャーナルとは、トランザクション開始と、トランザクション終了と、データベースの更新前データとを有するジャーナルである。
【０００４】
従って、複製ボリュームのデータベースを利用して業務を再開するためには、静止点を確保した状態で採取されたバックアップからデータベースをリストアしなければならない。その結果、ストレージシステムは、バックアップを採取した時点から、業務を再開することになる。
【０００５】
また、関連する技術として特許文献１には、正系ボリュームに障害が発生した状況でも、副系ボリュームを利用して、複製ボリュームの更新を継続するストレージシステムが開示されている。このストレージシステムによれば、正系ボリュームに障害が発生しても、複製ボリュームのコピー元が副系ボリュームに切り替わるため、複製ボリュームに対して、バックアップからデータベースをリストアしなくてもよい。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２８５３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示されているストレージシステムにおいて、正系サーバは、正系ボリューム及び副系ボリュームに対して、同時に更新要求を行うが、正系ボリューム自体の更新と副系ボリューム自体の更新は記録装置毎に非同期に行われる。そのため、正系ボリュームと副系ボリュームのデータベースと基底ジャーナルとはかならずしも一致しない。
【０００８】
従って、正系ボリュームから副系ボリュームに切り替わった直後は、複製ボリュームと正系ボリュームとの間ではデータベースの整合性が確保されているが、複製ボリュームと副系ボリュームとの間ではデータベースの整合性が確保できていない。そのため、従系サーバは、正系ボリュームから副系ボリュームに切り替わったことを検出した後、複製ボリ
ュームと副系ボリュームのデータベースの整合性が確保されるまで（同期状態になるまで）の間に被災した場合は、やはりバックアップからデータベースをリストアしなくてはならない。
【０００９】
本発明の目的の一例は、障害発生時刻の直前までデータベースの整合性を確保できるストレージシステム、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の一側面におけるストレージシステムは、
データベースと基底ジャーナルと障害情報とを記憶する、正系ボリュームと、
前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する、副系ボリュームと、
前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する、複製ボリュームと、
前記正系ボリューム及び副系ボリュームを更新する、主系サーバと、
前記複製ボリュームに記憶された障害情報に含まれる障害発生時刻を用いて、前記複製ボリュームに記憶された前記基底ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクション開始を検出し、前記複製ボリュームの全てのデータベースに対して前記トランザクション開始までロールバック処理を実行する、従系サーバと、
を有することを特徴とする。
【００１１】
また、上記目的を達成するため、本発明の一側面におけるストレージシステムは、
データベースと基底ジャーナルと障害情報と累積ジャーナルとを記憶する、正系ボリュームと、
前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する、副系ボリュームと、
前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する、複製ボリュームと、
前記正系ボリューム及び副系ボリュームを更新する、主系サーバと、
前記複製ボリュームに記憶された障害情報に含まれる、障害発生時刻と、障害が発生した記憶媒体を示す障害記憶媒体特定情報とを用いて、前記複製ボリュームに記憶された、前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する前記累積ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出し、前記正系ボリュームにおいて障害が発生した前記記憶媒体に対応する、前記複製ボリュームに存在するデータベースに対して、検出した前記トランザクションレコードからロールフォワード処理を実行する、従系サーバと、
を有することを特徴とする。
【００１２】
上記目的を達成するため、本発明の一側面におけるストレージシステムの制御方法は、
データベースと基底ジャーナルと障害情報とを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、前記複製ボリュームを制御する従系サーバと、を有するストレージシステムの制御方法であって、
（Ａ）前記複製ボリュームに記憶された前記障害情報に含まれる障害発生時刻を用いて、前記複製ボリュームに記憶された前記基底ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクション開始を検出する、ステップと、
（Ｂ）前記複製ボリュームの全てのデータベースに対して前記トランザクション開始まで
ロールバック処理を実行する、ステップと、
を有することを特徴とする。 
【００１３】
また、上記目的を達成するため、本発明の一側面におけるストレージシステムの制御方法は、
データベースと基底ジャーナルと障害情報と累積ジャーナルとを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、前記複製ボリュームを制御する従系サーバと、を有するストレージシステムの制御方法であって、
（Ｃ）前記複製ボリュームに記憶された前記障害情報に含まれる、障害発生時刻と、障害が発生した記憶媒体を示す障害記憶媒体特定情報とを用いて、前記複製ボリュームに記憶された、前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する前記累積ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出する、ステップと、
（Ｄ）前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する、前記複製ボリュームのデータベースに対して、検出した前記トランザクションレコードからロールフォワード処理を実行する、ステップと、
を有することを特徴とする。
【００１４】
上記目的を達成するため、本発明の一側面における制御プログラムは、
データベースと基底ジャーナルと障害情報とを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報とを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、を有するストレージシステムに接続されるコンピュータに実行される制御プログラムであって、
前記コンピュータに、
（Ａ）前記複製ボリュームに記憶された前記障害情報に含まれる障害発生時刻を用いて、前記複製ボリュームに記憶された前記基底ジャーナルを参照し、前記障害発生時刻に実行されたトランザクションに対応するトランザクション開始を検出する、ステップと、
（Ｂ）前記複製ボリュームの全てのデータベースに対して前記トランザクション開始までロールバック処理を実行する、ステップと、
を実行させることを特徴とする。
【００１５】
また、上記目的を達成するため、本発明の一側面における制御プログラムは、
データベースと基底ジャーナルと障害情報と累積ジャーナルとを記憶する正系ボリュームと、前記正系ボリュームとともに、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する副系ボリュームと、前記正系ボリュームから転送された、前記データベースと前記基底ジャーナルと前記障害情報と前記累積ジャーナルとを記憶する複製ボリュームと、前記正系ボリューム及び副系ボリュームを更新する主系サーバと、を有するストレージシステムに接続されるコンピュータに実行される制御プログラムであって、
前記コンピュータに、
（Ｃ）前記複製ボリュームに記憶された前記障害情報に含まれる、障害発生時刻と、障害が発生した記憶媒体を示す障害記憶媒体特定情報とを用いて、前記複製ボリュームに記憶された、前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する前記累積ジャーナルを参照し、前記障害発生時刻に実行されたトランザクシ
ョンに対応するトランザクションレコードを検出する、ステップと、
（Ｄ）前記正系ボリュームにおいて障害が発生した前記記憶媒体に存在するデータベースに対応する、前記複製ボリュームのデータベースに対して、検出した前記トランザクションレコードからロールフォワード処理を実行する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１６】
以上のように本発明によれば、障害発生時刻の直前までデータベースの整合性を確保できる。
【図面の簡単な説明】
【００１７】
【図１】図１は、第一の実施の形態における、ストレージシステムの一例を示す図である。
【図２】図２は、主系サーバを有する主系サイト側の一例を示す図である。
【図３】図３は、第一の実施の形態における、従系サイト側の一例を示す図である。
【図４】図４は、第一の実施の形態における、ストレージシステムの動作の一例を示す図である。
【図５】図５は、第一の実施の形態における、従系サーバの動作の一例を示す図である。
【図６】図６は、第一の実施の形態における、ロールバック処理の一例を示す図である。
【図７】図７は、第二の実施の形態における、ストレージシステムの一例を示す図である。
【図８】図８は、第二の実施の形態における、従系サイト側の一例を示す図である。
【図９】図９は、第二の実施の形態における、ストレージシステムの動作の一例を示す図である。
【図１０】図１０は、第二の実施の形態における、従系サーバの動作の一例を示す図である。
【図１１】図１１は、第二の実施の形態における、ロールフォワード処理及びロールバック処理の一例を示す図である。
【図１２】図１２は、従系サーバを実現するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１８】
（第一の実施の形態）
以下、本発明の第一の実施の形態におけるストレージシステムについて、図１から図６を参照しながら説明する。
【００１９】
［システム構成］
最初に、図１を用いて、第一の実施の形態におけるストレージシステムの構成について説明する。図１は、第一の実施の形態における、ストレージシステムの一例を示す図である。
【００２０】
図１に示す第一の実施の形態におけるストレージシステム１は、ソフトウェアによるボリューム二重化と、遠隔データリプリケーションとを適用したシステムである。ストレージシステム１は、主系サーバ２と、正系ボリューム３ａを有する正系ストレージ装置３と、副系ボリューム４ａを有する副系ストレージ装置４と、複製ボリューム５ａを有する複製ストレージ装置５と、従系サーバ６とを有する。正系ボリューム３ａ、又は副系ボリューム４ａ、又は複製ボリューム５ａは、それぞれ複数の記憶媒体を有する。
【００２１】
このうち、主系サーバ２は、ソフトウェアにより二重化された、正系ボリューム３ａと副系ボリューム４ａとを更新する。正系ボリューム３ａは、副系ボリューム４ａは、正系ボリュームとともに、データベース７ａと基底ジャーナル８ａと障害情報９ａとを記憶する。なお、以降において、副系ボリューム４ａに記憶される、データベース７ａをデータベース７ｂ、基底ジャーナル８ａを基底ジャーナル８ｂ、障害情報９ａを障害情報９ｂと呼ぶ。
【００２２】
複製ボリューム５ａは、遠隔データリプリケーションにより、正系ボリューム３ａから転送された、データベース７ａと基底ジャーナル８ａと障害情報９ａとを記憶する。なお、以降において、複製ボリューム５ａに記憶される、データベース７ａをデータベース７ｃ、基底ジャーナル８ａを基底ジャーナル８ｃ、障害情報９ａを障害情報９ｃと呼ぶ。
【００２３】
正系ボリューム３ａにおいて、データベース７ａと、基底ジャーナル８ａと、障害情報９ａとは、正系ボリューム３ａが有する複数の記憶媒体に分散して記憶される。また、副系ボリューム４ａにおいて、データベース７ｂと、基底ジャーナル８ｂと、障害情報９ｂとは、副系ボリューム４ａが有する複数の記憶媒体に分散して記憶される。更に、複製ボリューム５ａにおいて、データベース７ｃと、基底ジャーナル８ｃと、障害情報９ｃとは、複製ボリューム５ａが有する複数の記憶媒体に分散して記憶される。
【００２４】
従系サーバ６は、複製ボリューム５ａに記憶された障害情報に含まれる障害発生時刻を用いて、複製ボリューム５ａに記憶された基底ジャーナル８ｃを参照し、障害発生時刻に実行されたトランザクションに対応するトランザクション開始ＴＳを検出する。その後、従系サーバ６は、複製ボリューム５ａの全てのデータベース７ｃに対して検出したトランザクション開始ＴＳまでロールバック処理を実行する。障害発生時刻は、正系ボリューム３ａが有する記憶媒体に障害が発生した時刻を示す情報である。なお、時刻は、日時などを用いてもよい。
【００２５】
このように、第一の実施の形態では、障害発生時刻に実行されたトランザクションに対応するトランザクション開始ＴＳまで、複製ボリューム５ａの全てのデータベース７ｃに対して、ロールバック処理が実行できる。そのため、正系ボリューム３ａのいずれかの記憶媒体に障害が発生し、障害が発生した記憶媒体のデータが複製ボリューム５ａに複製されていない状況において、更に主系サイト側が被災しても、障害発生時刻の直前まで整合性を確保できる。
【００２６】
続いて、図２、図３を用いて、第一の実施の形態におけるストレージシステム１について具体的に説明する。図２は、主系サーバを有する主系サイト側の一例を示す図である。図３は、第一の実施の形態における、従系サイト側の一例を示す図である。
【００２７】
主系サイト側について説明する。主系サイト側は、図２に示すように、主系サーバ２と、正系ストレージ装置３と、副系ストレージ装置４とを有する。
【００２８】
主系サーバ２は、少なくともトランザクション制御部２１と、データベース制御部２２と、ジャーナル制御部２３と、障害管理部２４と、二重化ボリューム操作部２５とを有する。
【００２９】
トランザクション制御部２１は、トランザクションの開始と終了とを制御する。また、トランザクション制御部２１は、基底ジャーナル８ａを構成する、トランザクションの開始を示すトランザクション開始ＴＳと、トランザクションの終了を示すトランザクション終了ＴＥとを、ジャーナル制御部２３に出力する。
【００３０】
データベース制御部２２は、トランザクションが実行されると、データベース７ａに対して入出力されるデータの入出力を制御する。具体的には、データベース制御部２２は、正系ボリューム３ａ又は副系ボリューム４ａから、二重化ボリューム操作部２５を介して、読み込むデータの入力を、制御する。また、データベース制御部２２は、正系ボリューム３ａ及び副系ボリューム４ａへ書き込むデータを、二重化ボリューム操作部２５へ出力する、制御をする。また、データベース制御部２２は、トランザクションが実行されると、データベース７ａを更新する前のイメージＢＩを生成し、ジャーナル制御部２３へ出力する、制御をする。
【００３１】
ジャーナル制御部２３は、トランザクションごとに取得した、トランザクション開始ＴＳとイメージＢＩとトランザクション終了ＴＥとを、トランザクション開始ＴＳ、イメージＢＩ、トランザクション終了ＴＥの順番に、二重化ボリューム操作部２５へ出力する、制御をする。
【００３２】
障害管理部２４は、正系ボリューム３ａ又は副系ボリューム４ａが有する記憶媒体に障害が発生した場合、正系ストレージ装置３又は副系ストレージ装置４から、二重化ボリューム操作部２５を介して、記憶媒体に障害が発生したことを示す障害通知を受信する。続いて、障害管理部２４は、障害通知を受信すると、受信した障害通知に基づいて障害情報９ａを更新するために更新障害情報を生成して、生成した更新障害情報を二重化ボリューム操作部２５へ出力する。
【００３３】
二重化ボリューム操作部２５は、データベース制御部２２からデータを取得すると、正系ストレージ装置３と副系ストレージ装置４とを操作して、データベース７ａとデータベース７ｂとを更新する。また、二重化ボリューム操作部２５は、ジャーナル制御部２３からトランザクション開始ＴＳとイメージＢＩとトランザクション終了ＴＥとを取得すると、正系ストレージ装置３と副系ストレージ装置４とを操作して、基底ジャーナル８ａと基底ジャーナル８ｂとを更新する。更に、二重化ボリューム操作部２５は、障害管理部２４から更新障害情報を取得すると、正系ストレージ装置３と副系ストレージ装置４とを操作して、障害情報９ａと障害情報９ｂとを更新する。
【００３４】
正系ストレージ装置３及び副系ストレージ装置４は、複数の記憶媒体を有する記憶装置である。正系ストレージ装置３が有する正系ボリューム３ａ及び副系ストレージ装置４が有する副系ボリューム４ａは、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）などの記憶媒体である。データベース７ａと、基底ジャーナル８ａと、障害情報９ａとは、正系ボリューム３ａが有する一つ以上の記憶媒体に記憶される。また、データベース７ｂと、基底ジャーナル８ｂと、障害情報９ｂとは、副系ボリューム４ａが有する一つ以上の記憶媒体に記憶される。
【００３５】
正系ストレージ装置３は、副系ストレージ装置４とともに、主系サーバ２により操作され、データベース７ａと、基底ジャーナル８ａと、障害情報９ａとが更新される。また、正系ストレージ装置３は、遠隔データリプリケーションを実行して、正系ボリューム３ａに記憶されているデータベース７ａと、基底ジャーナル８ａと、障害情報９ａとを、複製ストレージ装置５が有する複製ボリューム５ａに複製する。
【００３６】
副系ストレージ装置４は、正系ストレージ装置３とともに、主系サーバ２により操作され、データベース７ｂと、基底ジャーナル８ｂと、障害情報９ｂとが更新される。
【００３７】
従系サイト側について説明する。第一の実施の形態における、従系サイト側は、図３に示すように、複製ストレージ装置５と、従系サーバ６とを有する。
【００３８】
複製ストレージ装置５は、複数の記憶媒体を有する記憶装置である。複製ストレージ装置５が有する複製ボリューム５ａは、例えば、ＨＤＤ、ＳＳＤなどの記憶媒体である。データベース７ｃと、基底ジャーナル８ｃと、障害情報９ｃとは、複製ボリューム５ａが有する一つ以上の記憶媒体に記憶される。
【００３９】
通常時、複製ボリューム５ａには、正系ボリューム３ａが実行する、遠隔データリプリケーションにより、正系ボリューム３ａに記憶されているデータベース７ａと、基底ジャーナル８ａと、障害情報９ａとが複製される。複製ボリューム５ａは、従系サーバ６により、ロールバック処理が実行される。
【００４０】
従系サーバ６は、複製ボリューム５ａに記憶されている、基底ジャーナル８ｃと障害情報９ｃとを用いて、複製ボリューム５ａに対してロールバック処理を実行する。従系サーバ６は、少なくとも複製ボリューム操作部３１と、ロールバック処理部３２とを有する。
【００４１】
複製ボリューム操作部３１は、複製ストレージ装置５を操作して、基底ジャーナル８ｃと、障害情報９ｃとを取得し、障害情報９ｃをロールバック処理部３２へ出力する。また、複製ボリューム操作部３１は、ロールバック処理部３２からデータベース７ｃを更新するデータを取得し、複製ストレージ装置５を操作して、取得したデータを用いてデータベース７ｃを更新する。
【００４２】
ロールバック処理部３２は、基底ジャーナル８ｃと障害情報９ｃとを参照し、正系ボリューム３ａのいずれかの記憶媒体に障害がなく、かつトランザクションが中断したか否かを判定する。すなわち、ロールバック処理部３２は、トランザクション終了ＴＥがないか否かを判定する。
【００４３】
続いて、ロールバック処理部３２は、正系ボリューム３ａのいずれかの記憶媒体に障害がなく、かつトランザクションが中断した場合、中断されたトランザクションに対応するトランザクション開始ＴＳまで、複製ボリューム５ａの全てのデータベース７ｃに対してロールバック処理を実行する。
【００４４】
また、ロールバック処理部３２は、障害情報９ｃを参照し、正系ボリューム３ａのいずれかの記憶媒体に障害あるか否かを判定する。
【００４５】
続いて、ロールバック処理部３２は、正系ボリューム３ａのいずれかの記憶媒体に障害がある場合、障害情報９ｃに含まれる記憶媒体に障害が発生した障害発生時刻を参照して、障害発生時刻に実行されたトランザクションに対応するトランザクション開始ＴＳを検出する。その後、ロールバック処理部３２は、当該トランザクション開始ＴＳまで、複製ボリューム５ａの全てのデータベースに対してロールバック処理を実行する。
【００４６】
［システム動作］
次に、本発明の第一の実施の形態におけるストレージシステム及び従系サーバの動作について図４、図５、図６を用いて説明する。図４は、第一の実施の形態における、ストレージシステムの動作の一例を示す図である。図５は、第一の実施の形態における、従系サーバの動作の一例を示す図である。図６は、第一の実施の形態における、ロールバック処理の一例を示す図である。以下の説明においては、適宜図１、図２、図３を参酌する。また、第一の実施の形態では、ストレージシステムを動作させることによって、ストレージシステムの制御方法が実施される。よって、第一の実施の形態におけるストレージシステムの制御方法の説明は、以下のストレージシステム及び従系サーバの動作説明に代える。
【００４７】
図４に示す動作の概要を用いて、複製ボリューム５ａに基底ジャーナル８ｃと、障害情
報９ｃとを複製する方法について説明する。なお、副系ストレージ装置４の動作については、正系ストレージ装置３と同じ動作であるので説明を省略する。
【００４８】
主系サーバ２は、トランザクションを開始すると、トランザクション開始ＴＳを、正系ストレージ装置３へ出力する（ステップＡ１）。正系ストレージ装置３は、トランザクション開始ＴＳを取得すると、正系ボリューム３ａが有する基底ジャーナル８ａにトランザクション開始ＴＳを書き込む（ステップＡ２）。続いて、正系ストレージ装置３は、遠隔データリプリケーション処理を実行して、複製ストレージ装置５へトランザクション開始ＴＳを出力する（ステップＡ３）。複製ストレージ装置５は、トランザクション開始ＴＳを取得すると、複製ボリューム５ａが有する基底ジャーナル８ｃにトランザクション開始ＴＳを書き込む（ステップＡ４）。
【００４９】
続いて、正系ストレージ装置３は、トランザクションの一連の処理に応じて、正系ストレージ装置３が有するデータベース７ａからデータを取得して、主系サーバ２に出力する（ステップＡ５）。主系サーバ２は、当該データを取得すると（ステップＡ６）、データベース７ａを更新する前のイメージＢＩを、正系ストレージ装置３へ出力する（ステップＡ７）。正系ストレージ装置３は、イメージＢＩを取得すると、正系ボリューム３ａが有する基底ジャーナル８ａにイメージＢＩを書き込む（ステップＡ８）。続いて、正系ストレージ装置３は、遠隔データリプリケーション処理を実行して、複製ストレージ装置５へイメージＢＩを出力する（ステップＡ９）。複製ストレージ装置５は、イメージＢＩを取得すると、複製ボリューム５ａが有する基底ジャーナル８ｃにイメージＢＩを書き込む（ステップＡ１０）。
【００５０】
続いて、主系サーバ２は、トランザクションの一連の処理に応じて発生した更新データを、正系ストレージ装置３へ出力する（ステップＡ１１）。正系ストレージ装置３は、更新データを取得すると、正系ボリューム３ａが有するデータベース７ａに更新データを書き込む（ステップＡ１２）。続いて、正系ストレージ装置３は、遠隔データリプリケーション処理を実行して、複製ストレージ装置５へ更新データを出力する（ステップＡ１３）。複製ストレージ装置５は、更新データを取得すると、複製ボリューム５ａが有するデータベース７ｃに更新データを書き込む（ステップＡ１４）。なお、トランザクションが継続している場合には、上述したステップＡ５からステップＡ１４の処理を繰り返す。
【００５１】
続いて、主系サーバ２は、トランザクションが終了すると、トランザクション終了ＴＥを、正系ストレージ装置３へ出力する（ステップＡ１５）。正系ストレージ装置３は、トランザクション終了ＴＥを取得すると、正系ボリューム３ａが有する基底ジャーナル８ａにトランザクション終了ＴＥを書き込む（ステップＡ１６）。続いて、正系ストレージ装置３は、遠隔データリプリケーション処理を実行して、複製ストレージ装置５へトランザクション終了ＴＥを出力する（ステップＡ１７）。複製ストレージ装置５は、トランザクション終了ＴＥを取得すると、複製ボリューム５ａが有する基底ジャーナル８ｃにトランザクション終了ＴＥを書き込む（ステップＡ１８）。
【００５２】
ところが、正系ボリューム３ａが有する記憶媒体のいずれかに障害が発生した場合（図４の太字×を参照）、上述したステップＡ１２において、データベース７ａを更新できなくなる。そのため、上述したステップＡ１３において、複製ボリューム５ａが有するデータベース７ｃを更新できなくなる。
【００５３】
そのような場合、主系サーバ２は、正系ボリューム３ａにおいて障害が発生した記憶媒体を示す情報と、その障害が発生した時刻を示す障害発生時刻とを関連付けた更新障害情報を、正系ストレージ装置３へ出力する（ステップＡ１９）。正系ストレージ装置３は、更新障害情報を取得すると、正系ボリューム３ａが有する障害情報９ａに更新障害情報を
書き込む（ステップＡ２０）。続いて、正系ストレージ装置３は、遠隔データリプリケーション処理を実行して、複製ストレージ装置５へ更新障害情報を出力する（ステップＡ２１）。複製ストレージ装置５は、更新障害情報を取得すると、複製ボリューム５ａが有する障害情報９ｃに更新障害情報を書き込む（ステップＡ２２）。
【００５４】
なお、上述した正系ストレージ装置３が、複製ボリューム５ａの更新をするタイミングは、更新する順序を変えなければ、正系ボリューム３ａと同期して実行しなくてもよい。
【００５５】
次に、図５を用いて、正系ボリューム３ａが有する記憶媒体のいずれかに障害が発生しているときに、更に主系サイト側が被災した場合における、従系サーバ６の動作について説明する。
【００５６】
従系サーバ６が有するロールバック処理部３２は、障害情報９ｃを参照し（ステップＢ１）、正系ボリューム３ａのいずれかの記憶媒体に障害があるか否かを判定する（ステップＢ２）。続いて、ロールバック処理部３２は、記憶媒体に障害がある場合（ステップＢ２：Ｙｅｓ）、基底ジャーナル８ｃを参照し、障害発生時刻に実行されたトランザクションに対応するトランザクション開始ＴＳを検出する（ステップＢ３）。そして、ロールバック処理部３２は、複製ボリューム５ａ全てのデータベース７ｃに対して、検出したトランザクション開始ＴＳまで、ロールバック処理を実行する（ステップＢ４）。
【００５７】
図６を用いて具体的に説明する。ステップＢ１、ステップＢ２において、ロールバック処理部３２は、正系ボリューム３ａのいずれかの記憶媒体に障害が発生した場合、障害情報９ｃを参照して、障害発生時刻を検出する。
【００５８】
ステップＢ３において、ロールバック処理部３２は、基底ジャーナル８ｃを参照し、障害発生時刻に実行されたトランザクションｍに対応するトランザクション開始ＴＳｍを検出する。又は、ロールバック処理部３２は、基底ジャーナル８ｃを参照し、障害発生時刻後で、最初に出力されたトランザクション終了ＴＥｍを検出し、当該トランザクション終了ＴＥｍに対応するトランザクション開始ＴＳｍを検出してもよい。
【００５９】
ステップＢ４において、ロールバック処理部３２は、複製ボリューム５ａ全てのデータベース７ｃに対して、検出したトランザクション開始ＴＳｍまで、ロールバック処理を実行する。その結果、障害発生時刻直前のトランザクションｍまで、データベース７ｃを戻すことができる。
【００６０】
なお、ロールバック処理部３２は、記憶媒体に障害がない場合（ステップＢ２：Ｎｏ）、中断されたトランザクションに対応するトランザクション開始ＴＳを検出する（ステップＢ５）。そして、ロールバック処理部３２は、複製ボリューム５ａ全てのデータベース７ｃに対して、検出したトランザクション開始ＴＳまで、ロールバック処理を実行する（ステップＢ６）。
【００６１】
［第一の実施の形態の効果］
以上のように第一の実施の形態によれば、障害発生時刻に実行されたトランザクションに対応するトランザクション開始ＴＳｍまで、複製ボリューム５ａの全てのデータベース７ｃに対して、ロールバック処理を実行できる。そのため、正系ボリューム３ａのいずれかの記憶媒体に障害が発生し、障害が発生した記憶媒体のデータが複製ボリューム５ａに複製されていない状況において、更に主系サイト側が被災しても、障害発生時刻の直前まで整合性を確保できる。
【００６２】
［プログラム］
本発明の第一の実施の形態におけるプログラムは、コンピュータに、図５に示すステップＢ１からＢ６を実行させるプログラムであればよい。このプログラムをコンピュータにインストールし、実行することによって、第一の実施の形態におけるストレージシステムに含まれる従系サーバとその制御方法とを実現することができる。この場合、コンピュータのプロセッサは、複製ボリューム操作部３１と、ロールバック処理部３２として機能し、処理を行なう。
【００６３】
また、第一の実施の形態では、複製ボリューム操作部３１と、ロールバック処理部３２とは、コンピュータに備えられたハードディスクなどの記憶装置に、これらを構成するデータファイルを格納することによって、又はこのデータファイルが格納された記録媒体をコンピュータと接続された読取装置に搭載することによって実現されている。
【００６４】
また、第一の実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されてもよい。この場合は、例えば、各コンピュータが、それぞれ、複製ボリューム操作部３１、ロールバック処理部３２のいずれかとして機能してもよい。
【００６５】
（第二の実施の形態）
次に、本発明の第二の実施の形態におけるストレージシステムについて、図７から図１１を参照しながら説明する。
【００６６】
［システム構成］
最初に、図７を用いて、第二の実施の形態におけるストレージシステムの構成について説明する。図７は、第二の実施の形態における、ストレージシステムの一例を示す図である。
【００６７】
図７に示す第二の実施の形態におけるストレージシステム１は、ソフトウェアによるボリューム二重化と、遠隔データリプリケーションとを適用したシステムである。ストレージシステム１は、主系サーバ２と、正系ボリューム３ａを有する正系ストレージ装置３と、副系ボリューム４ａを有する副系ストレージ装置４と、複製ボリューム５ａを有する複製ストレージ装置５と、従系サーバ６とを有する。正系ボリューム３ａ、又は副系ボリューム４ａ、又は複製ボリューム５ａそれぞれは、複数の記憶媒体を有する。
【００６８】
このうち、第二の実施の形態における主系サーバ２は、ソフトウェアにより二重化された、正系ボリューム３ａと副系ボリューム４ａとを更新する。正系ボリューム３ａは、データベース７ａと基底ジャーナル８ａと障害情報９ａと、更に累積ジャーナル１０ａを記憶する。副系ボリューム４ａは、正系ボリュームとともに、データベース７ｂと基底ジャーナル８ｂと障害情報９ｂと、更に累積ジャーナル１０ａを記憶する。なお、以降において、副系ボリューム４ａに記憶される、累積ジャーナル１０ａを累積ジャーナル１０ｂと呼ぶ。
【００６９】
なお、累積ジャーナル１０ａは、データベース７ａを更新した後のイメージ（トランザクションレコード）を有するジャーナルである。イメージは、トランザクションにおいて実行された操作を記憶した情報である。
【００７０】
複製ボリューム５ａは、遠隔データリプリケーションにより、正系ボリューム３ａから転送された、データベース７ａと基底ジャーナル８ａと障害情報９ａと、更に累積ジャーナル１０ａを記憶する。なお、以降において、複製ボリューム５ａに記憶される、累積ジャーナル１０ａを累積ジャーナル１０ｃと呼ぶ。
【００７１】
正系ボリューム３ａにおいて、データベース７ａと、基底ジャーナル８ａと、障害情報９ａと、累積ジャーナル１０ａとは、正系ボリューム３ａが有する複数の記憶媒体に分散して記憶される。また、副系ボリューム４ａにおいて、データベース７ｂと、基底ジャーナル８ｂと、障害情報９ｂと、累積ジャーナル１０ｂとは、副系ボリューム４ａが有する複数の記憶媒体に分散して記憶される。更に、複製ボリューム５ａにおいて、データベース７ｃと、基底ジャーナル８ｃと、障害情報９ｃと、累積ジャーナル１０ｃとは、複製ボリューム５ａが有する複数の記憶媒体に分散して記憶される。
【００７２】
従系サーバ６は、障害発生時刻と障害記憶媒体特定情報とを用いて、累積ジャーナル１０ｃを参照し、障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出する。障害記憶媒体特定情報は、正系ボリューム３ａにおいて障害が発生した記憶媒体を示す情報である。
【００７３】
その後、従系サーバ６は、正系ボリューム３ａにおいて障害が発生した記憶媒体に対応する、複製ボリューム５ａに存在するデータベース７ｃに対して、検出したトランザクションレコードからロールフォワード処理を実行する。
【００７４】
更に、従系サーバ６は、基底ジャーナル８ｃを参照し、複製ボリューム５ａの全てのデータベース７ｃに対してロールバック処理を実行する。
【００７５】
このように、第二の実施の形態では、正系ボリューム３ａにおいて障害が発生した記憶媒体に対応する、複製ボリューム５ａに存在するデータベース７ｃに対して、検出したトランザクションレコードからロールフォワード処理を実行し、更にロールバック処理が実行できる。そのため、正系ボリューム３ａのいずれかの記憶媒体に障害が発生し、障害が発生した記憶媒体のデータが複製ボリューム５ａに複製されていない状況において、更に主系サイト側が被災しても、主系サイト側が被災した時刻直前まで整合性を確保できる。
【００７６】
続いて、図２、図８を用いて、第二の実施の形態におけるストレージシステム１について具体的に説明する。図８は、第二の実施の形態における、従系サイト側の一例を示す図である。
【００７７】
第一の実施の形態における主系サイト側と、第二の実施の形態における主系サイト側の違いについて説明する。
【００７８】
主系サーバ２は、第二の実施の形態において、少なくともトランザクション制御部２１と、データベース制御部２２と、ジャーナル制御部２３と、障害管理部２４と、二重化ボリューム操作部２５とを有する。
【００７９】
データベース制御部２２は、第二の実施の形態において、更に、トランザクションが実行されると、データベース７ａを更新した後のイメージＡＩを生成し、ジャーナル制御部２３へ出力する、制御をする。
【００８０】
ジャーナル制御部２３は、第二の実施の形態において、更に、イメージＡＩを順番に、二重化ボリューム操作部２５へ出力する、制御をする。
【００８１】
二重化ボリューム操作部２５は、第二の実施の形態において、更に、ジャーナル制御部２３からイメージＡＩを取得すると、正系ストレージ装置３と副系ストレージ装置４とを操作して、累積ジャーナル１０ａと累積ジャーナル１０ｂとを更新する。
【００８２】
正系ストレージ装置３が有する正系ボリューム３ａは、第二の実施の形態において、デ
ータベース７ａと、基底ジャーナル８ａと、障害情報９ａと、累積ジャーナル１０ａとを一つ以上の記憶媒体に記憶する。また、副系ストレージ装置４が有する副系ボリューム４ａは、第二の実施の形態において、データベース７ｂと、基底ジャーナル８ｂと、障害情報９ｂと、累積ジャーナル１０ｂとを一つ以上の記憶媒体に記憶する。
【００８３】
正系ストレージ装置３は、副系ストレージ装置４とともに、主系サーバ２により操作され、データベース７ａと、基底ジャーナル８ａと、障害情報９ａと、累積ジャーナル１０ａとが更新される。また、正系ストレージ装置３は、遠隔データリプリケーションを実行して、正系ボリューム３ａに記憶されているデータベース７ａと、基底ジャーナル８ａと、障害情報９ａと、累積ジャーナル１０ａとを、複製ストレージ装置５が有する複製ボリューム５ａに複製する。
【００８４】
副系ストレージ装置４は、第二の実施の形態において、正系ストレージ装置３とともに、主系サーバ２により操作され、データベース７ｂと、基底ジャーナル８ｂと、障害情報９ｂと、累積ジャーナル１０ｂとが更新される。
【００８５】
従系サイト側について説明する。第二の実施の形態における、従系サイト側は、図８に示すように、複製ストレージ装置５と、従系サーバ６とを有する。
【００８６】
複製ストレージ装置５が有する複製ボリューム５ａは、第二の実施の形態において、データベース７ｃと、基底ジャーナル８ｃと、障害情報９ｃと、累積ジャーナル１０ａとを一つ以上の記憶媒体に記憶する。
【００８７】
通常時、複製ボリューム５ａには、正系ボリューム３ａが実行する、遠隔データリプリケーションにより、正系ボリューム３ａに記憶されているデータベース７ａと、基底ジャーナル８ａと、障害情報９ａと、累積ジャーナル１０ａが複製される。複製ボリューム５ａは、従系サーバ６により、ロールフォワード処理とロールバック処理とが実行される。
【００８８】
従系サーバ６は、第二の実施の形態において、複製ボリューム５ａに記憶されている、基底ジャーナル８ｃと障害情報９ｃと累積ジャーナル１０ｃとを用いて、複製ボリューム５ａに対してロールフォワード処理とロールバック処理を実行する。従系サーバ６は、少なくとも複製ボリューム操作部３１と、ロールフォワード処理８１、ロールバック処理部８２とを有する。
【００８９】
複製ボリューム操作部３１は、第二の実施の形態において、更に、複製ストレージ装置５を操作して、障害情報９ｃと、累積ジャーナル１０ｃとを取得し、障害情報９ｃと、累積ジャーナル１０ｃとをロールフォワード処理部８１へ出力する。また、複製ボリューム操作部３１は、ロールフォワード処理部８１からデータベース７ｃを更新するデータを取得し、複製ストレージ装置５を操作して、取得したデータを用いてデータベース７ｃを更新する。
【００９０】
また、複製ボリューム操作部３１は、ロールフォワード処理終了後、複製ストレージ装置５を操作して、基底ジャーナル８ｃと、障害情報９ｃとを取得し、ロールバック処理部８２へ出力する。また、複製ボリューム操作部３１は、ロールバック処理部８２からデータベース７ｃを更新するデータを取得し、複製ストレージ装置５を操作して、取得したデータを用いてデータベース７ｃを更新する。
【００９１】
ロールフォワード処理部８１は、障害情報９ｃを参照し、正系ボリューム３ａのいずれかの記憶媒体に障害がないか否かを判定する。続いて、ロールフォワード処理部８１は、正系ボリューム３ａのいずれかの記憶媒体に障害がある場合、障害発生時刻と、障害記憶
媒体特定情報とを用いて、累積ジャーナル１０ｃを参照し、障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出する。すなわち、複製ボリューム５ａに記憶された、正系ボリューム３ａにおいて障害が発生した記憶媒体に存在するデータベース（データベース７ｃに含まれるデータベース）に対応する、累積ジャーナル１０ｃを参照し、トランザクションレコードを検出する。
【００９２】
続いて、ロールフォワード処理部８１は、正系ボリューム３ａにおいて障害が発生した記憶媒体に対応する、複製ボリューム５ａに存在するデータベース（データベース７ｃに含まれるデータベース）に対して、検出したトランザクションレコードからロールフォワード処理を実行する。
【００９３】
更に、ロールバック処理部８２は、障害情報９ｃと累積ジャーナル１０ｃとを参照し、正系ボリューム３ａのいずれかの記憶媒体に障害がなく、かつトランザクションが中断したか否かを判定する。すなわち、ロールバック処理部３２は、トランザクション終了ＴＥがないか否かを判定する。
【００９４】
続いて、ロールバック処理部８２は、正系ボリューム３ａのいずれかの記憶媒体に障害なく、かつトランザクションが中断した場合、中断されたトランザクションに対応するトランザクション開始ＴＳまで、複製ボリューム５ａの全てのデータベース７ｃに対してロールバック処理を実行する。
【００９５】
［システム動作］
次に、本発明の第二の実施の形態におけるストレージシステム及び従系サーバの動作について図９、図１０、図１１を用いて説明する。図９は、第二の実施の形態における、ストレージシステムの動作の一例を示す図である。図１０は、第二の実施の形態における、従系サーバの動作の一例を示す図である。図１１は、第二の実施の形態における、ロールフォワード処理及びロールバック処理の一例を示す図である。以下の説明においては、適宜図２、図７、図８を参酌する。また、第二の実施の形態では、ストレージシステムを動作させることによって、ストレージシステムの制御方法が実施される。よって、第二の実施の形態におけるストレージシステムの制御方法の説明は、以下のストレージシステム及び従系サーバの動作説明に代える。
【００９６】
図９に示す動作の概要を用いて、本発明の第二の実施の形態において、複製ボリューム５ａに、累積ジャーナル１０ｃを複製する方法を説明する。なお、副系ストレージ装置４の動作については、正系ストレージ装置３と同じ動作であるので説明を省略する。
【００９７】
累積ジャーナル１０ｃを複製する処理を、図９におけるステップＡ９１からＡ９４に示す。主系サーバ２は、データベース７ａからデータを取得すると、データベース７ａを更新した後のイメージＡＩを、正系ストレージ装置３へ出力する（ステップＡ９１）。正系ストレージ装置３は、イメージＡＩを取得すると、正系ボリューム３ａが有する累積ジャーナル１０ａにイメージＡＩを書き込む（ステップＡ９２）。続いて、正系ストレージ装置３は、遠隔データリプリケーション処理を実行して、複製ストレージ装置５へイメージＡＩを出力する（ステップＡ９３）。複製ストレージ装置５は、イメージＡＩを取得すると、複製ボリューム５ａが有する累積ジャーナル１０ｃにイメージＡＩを書き込む（ステップＡ９４）。なお、ステップＡ９１からＡ９４以外の処理については、第一の実施の形態において説明をしたので、説明を省略する。なお、トランザクションが継続している場合には、上述したステップＡ５からステップＡ１０、ステップＡ９１からステップＡ９４、ステップＡ１１からステップＡ１４の処理を繰り返す。
【００９８】
次に、図１０を用いて、正系ボリューム３ａが有する記憶媒体のいずれかに障害が発生
しているときに、更に主系サイト側が被災した場合における、従系サーバ６の動作について説明する。
【００９９】
従系サーバ６が有するロールフォワード処理部８１は、障害情報９ｃを参照し（ステップＣ１）、正系ボリューム３ａのいずれかの記憶媒体に障害があるか否かを判定する（ステップＣ２）。続いて、ロールフォワード処理部８１は、記憶媒体に障害がある場合（ステップＣ２：Ｙｅｓ）、累積ジャーナル１０ｃを参照し、障害発生時刻に実行されたトランザクションにおけるトランザクションレコードを検出する（ステップＣ３）。そして、ロールフォワード処理部８１は、正系ボリューム３ａにおいて障害が発生した、記憶媒体に対応する、複製ボリューム５ａに存在するデータベースに対して、検出したトランザクションレコードからロールフォワード処理を実行する（ステップＣ４）。
【０１００】
続いて、ロールバック処理部８２は、基底ジャーナル８ｃを参照し、中断されたトランザクションに対応するトランザクション開始ＴＳを検出する（ステップＣ５）。そして、ロールバック処理部８２は、複製ボリューム５ａ全てのデータベース７ｃに対して、検出したトランザクション開始ＴＳまで、ロールバック処理を実行する（ステップＣ６）。
【０１０１】
図１１を用いて具体的に説明する。ステップＣ１、ステップＣ２において、ロールバック処理部３２は、正系ボリューム３ａのいずれかの記憶媒体に障害が発生した場合、障害情報９ｃを参照して、障害発生時刻と、障害ボリューム記憶媒体特定情報とを検出する。
【０１０２】
ステップＣ３において、ロールフォワード処理部８１は、累積ジャーナル１０ｃを参照し、障害発生時刻に実行されたトランザクションｋに対応するイメージＡＩｋｙ又はＡＩｋｚ（トランザクションレコード）を検出する。
【０１０３】
ステップＣ４において、ロールフォワード処理部８１は、正系ボリューム３ａにおいて障害が発生した記憶媒体に対応する、複製ボリューム５ａに存在するデータベースに対して、検出したイメージＡＩｋｙ又はＡＩｋｚ（トランザクションレコード）からロールフォワード処理を実行する。その結果、障害発生時刻直前のトランザクションｋまで、データベース７ｃを戻すことができる。
【０１０４】
ステップＣ５において、ロールバック処理部８２は、基底ジャーナル８ｃを参照し、中断されたトランザクションｎに対応するトランザクション開始ＴＳｎを検出する。
【０１０５】
ステップＣ６において、ロールバック処理部８２は、複製ボリューム５ａ全てのデータベース７ｃに対して、検出したトランザクション開始ＴＳｎまで、ロールバック処理を実行する。その結果、主系サイト側が被災した時刻直前のトランザクションｎまで、データベース７ｃを戻すことができる。
【０１０６】
［第二の実施の形態の効果］
このように、第二の実施の形態では、正系ボリューム３ａにおいて障害が発生した記憶媒体に対応する、複製ボリューム５ａに存在するデータベース７ｃに対して、検出したトランザクションレコードからロールフォワード処理を実行し、更にロールバック処理が実行できる。そのため、正系ボリューム３ａのいずれかの記憶媒体に障害が発生し、障害が発生した記憶媒体のデータが複製ボリューム５ａに複製されていない状況において、更に主系サイト側が被災しても、主系サイト側が被災した時刻直前まで整合性を確保できる。
【０１０７】
［プログラム］
本発明の第二の実施の形態におけるプログラムは、コンピュータに、図１０に示すステップＣ１からＣ６を実行させるプログラムであればよい。このプログラムをコンピュータ
にインストールし、実行することによって、第二の実施の形態におけるストレージシステムに含まれる従系サーバと制御方法とを実現することができる。この場合、コンピュータのプロセッサは、複製ボリューム操作部３１と、ロールフォワード処理部８１と、ロールバック処理部８２として機能し、処理を行なう。
【０１０８】
また、第二の実施の形態では、複製ボリューム操作部３１と、ロールフォワード処理部８１と、ロールバック処理部８２とは、コンピュータに備えられたハードディスクなどの記憶装置に、これらを構成するデータファイルを格納することによって、又はこのデータファイルが格納された記録媒体をコンピュータと接続された読取装置に搭載することによって実現されている。
【０１０９】
また、第二の実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されてもよい。この場合は、例えば、各コンピュータが、それぞれ、複製ボリューム操作部３１、ロールフォワード処理部８１、ロールバック処理部８２のいずれかとして機能してもよい。
【０１１０】
［物理構成］
ここで、第一、第二の実施の形態におけるプログラムを実行することによって、従系サーバを実現するコンピュータについて図１２を用いて説明する。図１２は、本発明の実施の形態における従系サーバを実現するコンピュータの一例を示す図である。
【０１１１】
図１２に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。なお、コンピュータ１１０は、ＣＰＵ１１１に加えて、又はＣＰＵ１１１に代えて、ＧＰＵ（Graphics Processing Unit）、又はＦＰＧＡ（Field-Programmable Gate Array）を備えていてもよい。
【０１１２】
ＣＰＵ１１１は、記憶装置１１３に格納された、第一、第二の実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置である。また、第一、第二の実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、第一、第二の実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであってもよい。
【０１１３】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置があげられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【０１１４】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【０１１５】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）など
の光学記録媒体があげられる。
【０１１６】
なお、第一、第二の実施の形態における従系サーバ６は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、従系サーバ６は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【産業上の利用可能性】
【０１１７】
以上のように本発明によれば、障害が発生した記憶媒体のデータが複製ボリュームに複製されていない状況において、更に主系サイト側が被災しても、従系サーバは、データベースの整合性を確保できる。本発明は、データベースの整合性を確保することが必要な分野において有用である。
【符号の説明】
【０１１８】
１  ストレージシステム
２  主系サーバ
３  正系ストレージ装置
３ａ  正系ボリューム
４  副系ストレージ装置
４ａ  副系ボリューンム
５  複製ストレージ装置
５ａ  複製ボリューム
６  従系サーバ
７ａ、７ｂ、７ｃ  データベース
８ａ、８ｂ、８ｃ  基底ジャーナル
９ａ、９ｂ、９ｃ  障害情報
１０ａ、１０ｂ、１０ｃ  累積ジャーナル
２１  トランザクション制御部
２２  データベース制御部
２３  ジャーナル制御部
２４  障害管理部
２５  二重化ボリューム操作部
３１  複製ボリューム操作部
３２、８２  ロールバック処理部
８１  ロールフォワード処理部
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2019168797.tif 000003
【図２】
2019168797.tif 000004
【図３】
2019168797.tif 000005
【図４】
2019168797.tif 000006
【図５】
2019168797.tif 000007
【図６】
2019168797.tif 000008
【図７】
2019168797.tif 000009
【図８】
2019168797.tif 000010
【図９】
2019168797.tif 000011
【図１０】
2019168797.tif 000012
【図１１】
2019168797.tif 000013
【図１２】
2019168797.tif 000014