(57)【特許請求の範囲】
【請求項１】
サーバと、第一のデータ格納領域及び第二のデータ格納領域がミラーリングの関係であるストレージ装置とがネットワークを介して接続するストレージシステムであって、
前記サーバは、ミラーリング処理のソフトウェア制御部を備え、
動作異常が検知されたときに、前記第二のデータ格納領域をミラーリングの関係から切り離す指示情報を前記ストレージ装置に送信し、
前記ストレージ装置は、前記サーバからのライト要求に応じた処理を実行する制御部を備え、
前記サーバから切り離しの前記指示情報を受信したタイミングで、前記第一のデータ格納領域のデータが更新された領域を特定する差分情報をメモリに記録開始し、
前記第二のデータ格納領域に対するライト要求に対して応答がないとき、前記サーバより前記第一のデータ格納領域に対し再送信されたライト要求に関する情報を前記メモリの差分情報として記録し、
前記サーバからミラーリング処理回復の指示を受けて前記差分情報に基づくコピー処理を実行し、該コピー処理実行中に前記サーバから前記第二のデータ格納領域へのライト要求があった場合に、前記差分情報に基づいて前記第二のデータ格納領域へのライト要求の対象領域のコピー処理を先に実行し、コピー完了後に前記第二のデータ格納領域へのライト要求に対するライト動作を実行することを特徴とするストレージシステム。
【請求項２】
前記ストレージ装置は、前記コピー処理の対象の領域を所定の領域毎に区分し、前記コピー処理を実行した領域か否かを前記所定の領域毎に記憶するビットマップ情報を管理し、前記アクセス要求が前記コピー処理を実行した領域を対象とするか否かを、前記ビットマップ情報によって判別することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
サーバと、第一のデータ格納領域及び第二のデータ格納領域がミラーリングの関係であるストレージ装置とがネットワークを介して接続するストレージシステムに適用されるデータ処理方法であって、
前記サーバが、
動作異常を検知したときに、前記第二の格納領域をミラーリングの関係から切り離す指示情報を前記ストレージ装置に送信し、
前記ストレージ装置が、
前記サーバから切り離しの前記指示情報を受信したタイミングで、前記第一のデータ格納領域のデータが更新された領域を特定する差分情報をメモリに記録開始し、
前記第二のデータ格納領域に対するライト要求に対して応答がないとき、前記サーバより前記第一のデータ格納領域に対し再送信されたライト要求に関する情報を前記メモリの差分情報として記録し、
前記サーバからミラーリング処理回復の指示を受けて前記差分情報に基づくコピー処理を実行し、該コピー処理実行中に前記サーバから前記第二のデータ格納領域へのライト要求があった場合に、前記差分情報に基づいて前記第二のデータ格納領域へのライト要求の対象領域のコピー処理を先に実行し、コピー完了後に前記第二のデータ格納領域へのライト要求に対するライト動作を実行することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバに接続し、第一のデータ格納領域および第二のデータ格納領域を有するストレージ装置のデータ処理方法に関する。
【背景技術】
【０００２】
サーバとストレージ装置とをネットワークを介して接続するストレージシステムがある。ストレージシステムは、データの喪失を防ぐためあるいは負荷を分散するため、同じデータをストレージ装置内の複数のデータ格納領域に格納する。複数のデータ格納領域に同じデータを書き込むことをミラーリングという。
【０００３】
複数のデータ格納領域間のミラーリングの関係を切り離す場合がある。ミラーリングの関係を切り離し、再度ミラーリングの関係にする場合、一方のデータ格納領域のデータを他方のデータ格納領域にコピーする必要がある。関連技術として、特許文献１および特許文献２がある。
【０００４】
それぞれのデータ格納領域に格納されたデータは、コピー処理が完了するまで異なる。したがって、サーバはコピー処理が完了するまで、コピー先となるデータ格納領域に格納されたデータにアクセスすることができない。
【特許文献１】特開２００７−３７３０９３号公報
【特許文献２】特開２００７−２４９６５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、複数のデータ格納領域をミラーリングの関係にする処理を実行中であっても、サーバがデータ格納領域にアクセスすることを可能とするストレージ装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様は、サーバと、第一のデータ格納領域及び第二のデータ格納領域がミラーリングの関係であるストレージ装置とがネットワークを介して接続するストレージシステムであって、前記サーバは、ミラーリング処理のソフトウェア制御部を備え、動作異常が検知されたときに、前記第二のデータ格納領域をミラーリングの関係から切り離す指示情報を前記ストレージ装置に送信し、前記ストレージ装置は、前記サーバからのライト要求に応じた処理を実行する制御部を備え、前記サーバから切り離しの前記指示情報を受信したタイミングで、前記第一のデータ格納領域のデータが更新された領域を特定する差分情報をメモリに記録開始し、前記第二のデータ格納領域に対するライト要求に対して応答がないとき、前記サーバより前記第一のデータ格納領域に対し再送信されたライト要求に関する情報を前記メモリの差分情報として記録し、前記サーバからミラーリング処理回復の指示を受けて前記差分情報に基づくコピー処理を実行し、該コピー処理実行中に前記サーバから前記第二のデータ格納領域へのライト要求があった場合に、前記差分情報に基づいて前記第二のデータ格納領域へのライト要求の対象領域のコピー処理を先に実行し、コピー完了後に前記第二のデータ格納領域へのライト要求に対するライト動作を実行することを特徴とするストレージシステムに関する。
【発明の効果】
【０００７】
本データ処理方法により、サーバは、データ格納領域間の全体をミラーリングの関係にする処理の完了を待つことなく、データ格納領域にアクセスすることが可能になる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態を図面を参照しながら説明する。
【０００９】
［ストレージシステム］
図１は、本実施例のストレージシステムである。ストレージシステムは、サーバ１００とストレージ装置２００（第一のストレージ装置）とストレージ装置３００（第二のストレージ装置）とを有する。サーバ１００、ストレージ装置２００、およびストレージ装置３００は、ネットワーク４００を介して接続する。ネットワーク４００は、例えば、ファイバチャネルである。
【００１０】
［ミラーリング］
本実施例のストレージシステムは、ストレージ装置２００のデータ格納領域およびストレージ装置３００のデータ格納領域がミラーリングの関係であるとする。ミラーリングは、一つのデータを複数のデータ格納領域に格納するデータ保存形態である。サーバ１００は、ミラーリングの対象であるストレージ装置２００およびストレージ装置３００に一つのデータを格納する。ストレージ装置２００およびストレージ装置３００は同じデータが格納されるため、一方のストレージ装置に故障した場合でもデータの喪失を回避することが可能になる。なお、本発明のミラーリングは、ストレージ装置の論理ボリューム間のミラーリングである。論理ボリュームは、複数の物理ディスク装置によって構成される領域であり、論理ボリュームが冗長性を有する場合もある。
【００１１】
なお、以降の説明では、「ミラーリング処理」は、各ストレージ装置の対応するデータ格納領域に同じデータが格納されている状態であり、読込み時は一つのデータ格納領域からデータを読み出し、書込み時は、全てのデータ格納領域に同じデータを書き込む処理を示す。また、ミラーリングの関係になるデータ格納領域は、対応付けられているものとする。
【００１２】
また、「ミラー化処理」は、ミラーリング処理が可能になるようにデータ格納領域のデータを更新する処理を示す。ミラー化処理は、ミラーリングの対象の各データ格納領域のデータが異なる場合に実行する。ミラー化処理は、データ格納領域間で異なるデータに関する情報を記憶する処理、およびデータ格納領域間で異なるデータを一致させる処理を含む。
【００１３】
サーバは両方のストレージ装置に対してミラーリング処理を実行する。サーバから片方のストレージ装置に対してのみしかデータの書込みができない場合、データの書込みがされたストレージ装置は、データの書き込みがされた領域の情報を保持する。サーバが両方のストレージ装置に対して再度接続可能になった場合、ストレージ装置はミラー化処理を実行する。
【００１４】
［サーバ１００］
サーバ１００は、制御部１１０、メモリ１２０、および接続部１３０を有する。サーバ１００のメモリ１２０は、ミラーリング管理プログラム１２１を記憶する。サーバ１００の接続部１３０は、ストレージ装置２００およびストレージ装置３００にネットワーク４００を介して接続する端子である。サーバ１００の制御部１１０は、メモリ１２０に格納されたミラーリング処理プログラム１２１を実行することにより、ミラーリングモジュール１１１として機能する。
【００１５】
ミラーリングモジュール１１１は、ストレージ装置２００に格納されたデータとストレージ装置３００に格納されたデータとの間のミラー化処理、およびストレージ装置２００に格納されたデータとストレージ装置３００に格納されたデータとの間のミラーリング処理をストレージ装置２００およびストレージ装置３００と連携して実行する。具体的には、ミラーリングモジュール１１１は、以下の処理を実行する。
【００１６】
ストレージ装置２００およびストレージ装置３００がミラーリングの関係である場合、サーバ１００のミラーリングモジュール１１１は、ミラーリング処理を実行する。具体的には、ミラーリングモジュール１１１は、ストレージ装置２００およびストレージ装置３００へのデータの書込みアクセスおよびデータの読出しアクセスを以下のように実行する。ミラーリングモジュール１１１は、ストレージ装置２００のデータ格納領域およびストレージ装置３００のデータ格納領域にデータを書き込む場合、ストレージ装置２００およびストレージ装置３００にデータ書込命令を送信する。ミラーリングモジュール１１１は、ストレージ装置２００あるいはストレージ装置３００からデータを読み出す場合、ストレージ装置２００あるいはストレージ装置３００にデータ読出命令を送信する。
【００１７】
また、ミラーリングモジュール１１１は、ミラーリングの維持ができなくなったデータ格納領域を検出すると、該当するデータ格納領域をミラーリングの関係から切り離す旨の情報をストレージ装置２００およびストレージ装置３００に送信する。サーバ１００のミラーリングモジュール１１１は、ストレージ装置２００のデータ格納領域およびストレージ装置３００のデータ格納領域をミラーリングの関係にする場合、ストレージ装置２００およびストレージ装置３００にミラー化処理を実行させる。ミラーリングモジュール１１１は、ミラー化処理において、該当するデータ格納領域をミラーリングの関係にする旨の情報をストレージ装置２００およびストレージ装置３００に送信する。ミラーリングモジュール１１１は、例えば、ストレージ装置２００のデータ格納領域に格納されたデータとストレージ装置３００のデータ格納領域に格納されたデータとが異なる場合に、ストレージ装置２００およびストレージ装置３００にミラー化処理を実行させる。
【００１８】
ストレージ装置２００のデータ格納領域のデータとストレージ装置３００のデータ格納領域のデータとが異なるのは、（１）ストレージ装置２００のデータ格納領域とストレージ装置３００のデータ格納領域とを最初にミラーリングの関係にするとき、（２）ストレージ装置２００のデータ格納領域とストレージ装置３００のデータ格納領域とを、一旦ミラーリングの関係から切り離し、再度ミラーリングの関係にするときである。
【００１９】
［ストレージ装置］
次に、ストレージ装置２００とストレージ装置３００について説明する。ストレージ装置２００は、制御部２１０、メモリ２２０、データ格納部２４０、接続部２６０を有する。ストレージ装置３００は、ストレージ装置２００と同じ構成であり、制御部３１０、メモリ３２０、データ格納部３４０、接続部３６０を有する。ストレージ装置２００の制御部２１０、メモリ２２０、データ格納部２４０、および接続部２６０とストレージ装置３００の制御部３１０、メモリ３２０、データ格納部３４０、接続部３６０とは、それぞれ同じ機能である。よって、ストレージ装置２００の制御部２１０、メモリ２２０、データ格納部２４０、接続部２６０を説明し、ストレージ装置３００について説明を省略する。
【００２０】
接続部２６０は、サーバ１００およびストレージ装置３００にネットワーク４００を介して接続するための端子である。メモリ２２０は、制御部２１０が実行するためのデータコピープログラム２２１、データコピー処理の途中結果の情報、ビットマップ情報２３０などを記憶する。メモリ２２０は、例えば、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）等である。
【００２１】
制御部２１０は、メモリ２２０のデータコピープログラム２２１を実行することによりデータコピーモジュール２１１として機能する。データコピーモジュール２１１は、ストレージ装置２００とストレージ装置３００との間でデータのミラー化処理を実行する。
【００２２】
データ格納部２４０は、サーバ１００がアクセスする対象のデータを格納する。ストレージ装置２００は、データ格納部２４０にボリューム２５０を設定する。ボリューム２５０は、サーバ１００が認識可能な一つのまとまったデータ格納領域である。アクセスは、アクセスする対象の位置情報、読込み命令か書込み命令かを識別する情報、および書込む対象のデータ情報を含む。以降の説明では、対象のブロック領域にデータを書き込むアクセスを書込みアクセス、対象のブロック領域からデータを読出すアクセスを読出しアクセスとする。
【００２３】
［ビットマップ情報のビットとボリュームのブロック領域との関係］
ここで、ビットマップ情報２３０のビット２３１とボリューム２５０のブロック領域２５１との関係を説明する。図２は、ビットマップ情報２３０のビット２３１とボリューム２５０のブロック領域２５１との関係を示す図である。本実施例のボリューム２５０は、複数のブロック領域２５１を有する。ブロック領域２５１は、ボリューム２５０を所定の単位の大きさで区切ったデータ格納領域である。データは各ブロック領域２５１に格納される。本実施例では、説明のため、ブロック領域に格納されたデータは「１１」、「２２」、あるいは「３３」とする。データ「１１」は、ストレージ装置に異常が発生する以前に、ボリューム２５０のブロック領域２５１に格納されたデータとボリューム３５０のブロック領域に格納されたデータとが一致するデータである。データ「２２」は、ストレージ装置を切り離した後のストレージ装置への書込みによって更新されたデータである。データ「３３」は、ミラー化処理中に更新されるデータである。
【００２４】
図２のブロック領域に格納されたデータは「１１」あるいは「２２」がある。データ「１１」は、ボリューム２５０のブロック領域２５１に格納されたデータとボリューム３５０のブロック領域に格納されたデータとミラーリングの関係にあるデータである。データ「２２」は、ボリューム２５０のブロック領域２５１に格納されたデータとボリューム３５０のブロック領域に格納されたデータとがミラーリングの関係ではないデータである。
【００２５】
本実施例のビットマップ情報２３０は、ボリューム２５０とボリューム３５０との間のミラーリングの状態を記録する。すなわち、ビットマップ情報２３０は、ボリューム２５０とボリューム３５０とがミラーリングの関係から切り離された状態では、ボリューム２５０とボリューム３５０との間で異なるデータとなっているブロック領域を示す。ビットマップ情報２３０は、ボリューム２５０のデータとボリューム３５０のデータとが異なるブロック領域を示す情報（差分情報）である。また、ビットマップ情報２３０は、ミラー化処理の段階では、ミラー化処理の進行を示す。
【００２６】
ビットマップ情報２３０は、ビット２３１を複数有する。各ビット２３１は、ボリューム２５０内のブロック領域２５１にそれぞれ割り当てられる。各ビット情報２３１は「１」あるいは「０」の値を保持する。値「１」は、ビット情報２３１に対応するブロック領域２５１に含まれるデータとブロック領域２５１にミラーリングの関係になるボリューム３５０のブロック領域３５１に含まれるデータとが異なることを示す。
【００２７】
また、値「０」は、ビット情報２３１に対応するブロック領域２５１に含まれるデータとブロック領域２５１にミラーリングの関係になるボリューム３５０のブロック領域３５１に含まれるデータとが同じであることを示す。ストレージ装置２００は、ブロック領域２５１のデータを更新すると、ブロック領域２５１に対応するビット２３１の値も更新する。ストレージ装置は、後述する切り離し時に、ミラーリングの関係を満たさない状態になったときビット２３１を「０」から「１」に更新する。ストレージ装置は、後述する組み込み時に、ミラーリングの関係を満たす状態になったときビット２３１を「１」から「０」に更新する。
【００２８】
ミラーリングの関係から切り離されたボリューム２５０およびボリューム３５０は、２種類に分類される。一つは、ミラーリングの関係から切り離された以降、データを更新するアクセスをサーバ１００から受けるボリュームである。本実施例では、ボリューム２５０は、ミラーリングの関係から切り離された以降、データを更新するアクセスをサーバ１００から受けるものとする。もう一つは、ミラーリングの関係から切り離された以降、ボリューム内のデータを更新するアクセスをサーバ１００から受けないボリュームである。本実施例では、ボリューム３５０がミラーリングの関係から切り離された以降、データを更新するアクセスをサーバ１００から受けないものとする。
【００２９】
なお、データを更新するアクセスを受けるボリューム２５０は、ミラー化処理において、コピー元ボリュームになる。データを更新するアクセスを受けないボリューム３５０は、ミラー化処理において、コピー先ボリュームになる。
【００３０】
ストレージ装置２００は、ストレージ装置３００のボリューム３５０がミラーリングの関係から切り離された旨の情報をサーバ１００から受信すると、ビットマップ情報２３０をメモリ２２０に作成する。ストレージ装置２００は、ボリューム２５０内のブロック領域２５１内のデータが更新されたことを、ブロック領域２５１に対応するビットマップ情報２３０のビット２３１の値を更新することによって記憶する。ストレージ装置２００は、ビットマップ情報２３０を作成してから再度ミラーリングの関係にする旨の指示をサーバ１００から受信するまで、データが更新されたことをビットマップ情報２３０に記憶する。ストレージ装置２００が作成するビットマップ情報２３０の各ビット２３１の初期値は「０」である。ストレージ装置２００は、サーバ１００から書込みアクセスを受けると、書込みアクセスに対応するブロック領域２５１内のデータを更新する。その後、ストレージ装置２００は、データを更新したブロック領域２５１に対応するビットの値を「１」に変更する。
【００３１】
ビットマップ情報２３０は、ミラー化処理の段階では、ミラー化処理の進行を示す。すなわち、ビットマップ情報２３０の全てのビットの値が「０」のとき、ボリューム２５０とボリューム３５０とはミラーリング処理が可能な関係になる。すなわち、ミラーリング処理が可能な関係は、ミラーリングされた状態（ミラー化処理が不要な状態）である。したがって、ストレージ装置２００は、ビットマップ情報２３０の値が「１」のビット２３１に対応するブロック領域２５１内のデータを、ストレージ装置３００のボリューム３５０の対応するブロック領域３５１にコピーする。ストレージ装置２００は、ブロック領域２５１のコピーが完了すると、ブロック領域２５１に対応するビット２３１の値を「１」から「０」に更新する。
【００３２】
ビットマップ情報２３０は、ストレージ装置２００およびストレージ装置３００が実行するミラー化処理の通信量を更新されたデータのみにすることが可能になる。ストレージ装置２００およびストレージ装置３００でミラー化処理を行う場合、ネットワーク４００を経由してデータをコピーする場合がある。ストレージ装置２００は、ビットマップ情報２３０によって、ボリューム２５０内のミラーリングの関係にすることが必要なブロック領域２５２のみを送信する。この結果、ストレージ装置２００は、ストレージ装置３００に送信するデータの量を、ボリューム２５０の全てのブロック領域２５１のデータを送信するよりも少なくすることが可能になる。
【００３３】
次に、本実施例のストレージシステムの動作について説明する。ストレージシステムでは、ストレージ装置２００とストレージ装置３００とは、ミラーリング処理が可能な状態およびミラーリング処理が不可能な状態になり得る。ストレージシステムのストレージ装置２００のボリューム２５０およびストレージ装置３００のボリューム３５０は、通常時においてミラーリングの状態であるとする。その後、サーバ１００は、ストレージ装置３００に対するアクセスに異常を検出し、ストレージ装置３００をミラーリングの関係から切り離す。サーバ１００は、ストレージ装置２００あるいはストレージ装置３００に書込み命令あるいは読出し命令を送信してから所定の時間を経過しても応答がない場合、アクセスに対して異常があると判定する。サーバ１００が所定の時間を経過してもアクセスに対する応答を受信することができないのは、例えば、ストレージ装置の処理速度が低下した場合、あるいは、サーバ１００とストレージ装置との間のネットワーク４００の経路に故障があった場合である。
【００３４】
ストレージ装置３００をミラーリングの関係から切り離した状態は、ミラーリング処理が不可能な状態である。その後、サーバ１００はストレージ装置２００に対してアクセスする。ストレージ装置２００は、サーバ１００からの書込みアクセスに対して、ストレージ装置３００の異常からの回復後にミラー化処理を可能とするため、ビットマップ情報に更新箇所を記憶する。
【００３５】
その後、ネットワークの不可が軽減する、ネットワーク経路の故障が修復される、ストレージ装置の故障が修復されるなどによって、ストレージ装置３００が異常から回復する。ストレージ装置２００が異常から回復すると、ストレージ装置２００は、ストレージ装置２００とストレージ装置３００とをミラーリングの関係にする処理を実行する。以下、各状態でのサーバ１００、ストレージ装置２００およびストレージ装置３００の動作シーケンスについて説明する。
【００３６】
［通常時］
図３は、ストレージシステムの通常時のミラーリングの動作シーケンス図である。通常時、サーバ１００は、ストレージ装置２００およびストレージ装置３００に対して書き込み命令を発行する。よって、通常時は、サーバ１００がストレージ装置２００およびストレージ装置３００のミラーリングを行う。
【００３７】
図３のＳ０１からＳ０７は、サーバ１００とストレージ装置２００およびストレージ装置３００との間のデータの書込みアクセスの通常時の動作シーケンスである。サーバ１００は、ストレージ装置２００およびストレージ装置３００にデータを書き込む処理を開始する（Ｓ０１）。サーバ１００は、ストレージ装置２００およびストレージ装置３００に対してデータ書き込み命令を送信する（Ｓ０２、Ｓ０３）。ストレージ装置２００およびストレージ装置３００は、受信したデータ書き込み命令に応じた処理を実行する（Ｓ０４、Ｓ０５）。ストレージ装置２００は、受信したデータ書き込み命令に応じた処理が完了すると、完了情報をサーバ１００に送信する（Ｓ０６）。同様に、ストレージ装置３００は、受信したデータ書き込み命令に応じた処理が完了すると、完了情報をサーバ１００に送信する（Ｓ０７）。サーバ１００は、完了情報を受信すると、書き込み処理を終了する。
【００３８】
図３のＳ０８乃至からＳ１１は、サーバ１００とストレージ装置２００との間のデータの読出アクセスの通常時の動作シーケンスである。サーバ１００は、ストレージ装置２００からデータを読み出す処理を開始する（Ｓ０８）。サーバ１００は、ストレージ装置２００に対してデータ読出し命令を送信する（Ｓ０９）。ストレージ装置２００は、受信したデータ読出し命令に応じた処理を実行する（Ｓ１０）。ストレージ装置２００は、データ読出し命令に応じてデータを読み出し、読み出したデータをサーバ１００に送信する（Ｓ１１）。サーバ１００は、データを受信すると、読出し処理を終了する。なお、サーバ１００とストレージ装置３００との間のデータの読出アクセスに関する処理は、サーバ１００とストレージ装置２００との間のデータの読出アクセスに関する処理と同様であるため説明を省略する。
【００３９】
図４は、ストレージ装置間がミラーリングの関係であるときの、ボリューム２５０に格納されたデータとボリューム３５０に格納されたデータとの関係を示す図である。ボリューム２５０の各ブロック領域２５１に格納されたデータは「１１」であり、ボリューム３５０の各ブロック領域３５１に格納されたデータは「１１」である。
【００４０】
［切り離し時］
次に、通常のミラーリングの状態において、サーバ１００からストレージ装置３００に対する書込みアクセスあるいは読出しアクセスに対して異常が発生した場合の動作シーケンスを説明する。サーバ１００は、ストレージ装置２００あるいはストレージ装置３００に書込み命令あるいは読出し命令を送信してから所定の時間を経過しても応答がない場合、アクセスに対して異常があると判定する。サーバ１００が所定の時間を経過してもアクセスに対する応答を受信することができないのは、例えば、ストレージ装置の処理速度が低下した場合、あるいは、サーバ１００とストレージ装置との間のネットワーク４００の経路に故障があった場合である。
【００４１】
サーバ１００からストレージ装置３００へのアクセスに対して、サーバ１００が応答を受信しなかった場合の動作シーケンスについて説明する。図５は、ストレージシステムの故障時のミラーリングの動作シーケンス図である。サーバ１００は、ストレージ装置にデータを書き込む処理を開始する（Ｓ２１）。サーバ１００は、ストレージ装置２００およびストレージ装置３００に対してデータの書込み命令を送信する（Ｓ２２、Ｓ２３）。ストレージ装置２００は、受信したデータの書き込み命令に応じた処理を実行する（Ｓ２４）。ストレージ装置２００は、受信したデータの書き込み命令に応じた処理が完了すると、完了情報をサーバ１００に送信する（Ｓ２５）。一方、サーバ１００は、データの書込み命令を送信してから所定の時間を経過しても、ストレージ装置３００から完了情報を取得しない。完了情報を取得しない原因は、例えば、サーバ１００とストレージ装置３００との間のネットワーク４００の故障、ストレージ装置３００の処理の遅延などがある。
【００４２】
そこで、サーバ１００は、ストレージ装置３００にアクセスができないと判定する（Ｓ２６）。サーバ１００は、ストレージ装置３００をミラーリングの関係から切り離す。
【００４３】
サーバ１００はデータの差分を記憶する処理の開始の指示をストレージ装置２００に送信する（Ｓ２７）。ストレージ装置２００は、サーバ１００から受信したデータの差分を記憶する処理の開始の指示に応じてデータ記憶処理を開始する（Ｓ２８）。ストレージ装置２００は、ビットマップ情報２３０を作成する（Ｓ２９）。ストレージ装置２００は、ビットマップ情報２３０の各ビット２３１を、初期値として、ビット２３１に対応するブロック領域に含まれるデータがボリューム２５０とボリューム３５０との間で同じであることを示す値に設定する。ストレージ装置２００は、ビットマップ情報２３０の作成を完了した旨の情報をサーバ１００に送信する（Ｓ３０）。
【００４４】
図６は、ビットマップ情報２３０が作成されたときのボリューム２５０のブロック領域２５１とビットマップ情報２３０のビット２３１との関係を示す図である。符号は図２と同じであるため説明を省略する。ブロック領域２５１の各データの値は「１１」とする。ビットマップ情報２３０の各ビット２３１の値は、初期値として「０」が格納される。
【００４５】
なお、Ｓ２６で、ストレージ装置３００にアクセスできないとサーバ１００によって判定されたアクセスが書込み命令である場合、ストレージ装置３００のデータは判定されたアクセスによって更新されていない可能性がある。また、サーバ１００は、Ｓ２７の送信処理を実行する前に他の書き込み命令をストレージ装置３００に送信している場合もある。ストレージ装置３００は、書込み命令を実行できず、データを更新していない可能性がある。そこで、サーバ１００は、サーバ１００がストレージ装置３００にアクセスできないと判断する対象となったアクセスを送信してからストレージ装置３００がビットマップ情報２３０を作成するまでに送信した書込み命令を、ストレージ装置２００に再度送信する（Ｓ３１）。この結果、ビットマップ情報２３０は、サーバ１００がストレージ装置３００から応答を受信しなかった書込み命令に関しても、更新があったブロック領域であるとしてビット２３１に記憶する。本実施例のストレージシステムは、ストレージ装置２００とストレージ装置３００とを、データの矛盾を生じさせることなく、再度ミラーリングの関係にすることができる。サーバ１００は、例えば、各ストレージ装置にアクセス命令を送信した時間の順番の情報を記憶しておく機能を有する。この機能により、サーバ１００は、ストレージ装置３００にアクセスできないと判断する対象となったアクセスを送信してからストレージ装置３００がビットマップ情報２３０を作成するまでに送信した書込み命令を検出することが可能になる。なお、Ｓ２６で、サーバ１００が判定の対象としたアクセスが読出し命令の場合、ストレージ装置２００のボリューム２５０のデータは更新されないため、特別な処理は不要である。
【００４６】
ここで、ストレージ装置２００が、ストレージ装置２００とストレージ装置３００とがミラーリングの関係から切り離された以降に実行する処理を説明する。図７は、ストレージ装置２００とストレージ装置３００とがミラーリングの関係から切り離された以降に実行する処理のフローチャートである。
【００４７】
ストレージ装置２００は、サーバ１００からデータの書込み命令あるいは読出し命令を受信する（Ｓ３２）。ストレージ装置２００は、書込み命令あるいは読出し命令に応じた処理を実行する（Ｓ３３）。ストレージ装置２００は、受信した命令が書き込み命令か否かを判別する（Ｓ３４）。受信した命令が書込み命令の場合（Ｓ３４：Ｙｅｓ）、ストレージ装置２００は、サーバ１００から受信した書き込み命令の対象のブロック領域２５１を、ブロック領域２５１に対応するビットマップ情報２３０のビット２３１の値をコピー処理が完了していないことを示す値に変更する（Ｓ３５）。具体的には、仮想化スイッチ装置２００は、書込み命令の対象のブロック領域２５１に対応するビット２３１の値を「１」に更新する。受信した命令が読出し命令の場合（Ｓ３４：Ｙｅｓ）およびＳ３５の処理の実行後、ストレージ装置２００は、サーバ１００に処理結果の情報を送信する（Ｓ３６）。サーバ１００は、処理結果を受信することにより、書込み処理を終了する。
【００４８】
以上の処理により、サーバ１００は、ストレージ装置３００がミラーリングの関係から切り離されている間であっても、ストレージ装置２００に対してデータの読み出し、あるいはデータの書き込みを実行することが可能になる。
【００４９】
図８は、ミラーリングの関係から切り離した後のビットマップ情報２３０、ボリューム２５０、およびボリューム３５０の関係を示す図である。ストレージ装置２００とストレージ装置３００とをミラーリングの関係から切り離した後、サーバ１００は、ストレージ装置２００に書込み命令を送信することで、ストレージ装置２００に格納されたデータは更新される。図８の２５２は、更新されたブロック領域を示す。本実施例のサーバ１００の書込み命令は、データの値を「１１」から「２２」に更新するものであるとする。また、図８の２３２は、ビット２３１の内、値が「１」のビットを示す。ビット２３２はブロック領域２５２に対応する。ストレージ装置３００に格納されたデータは、ミラーリングの関係から切り離されたときのデータのままであるため、データの値は「１１」のままである。
【００５０】
［組み込み時］
次に、ストレージ装置２００のボリューム２５０とストレージ装置３００のボリューム３５０とを再度ミラーリングの関係にするときの処理を説明する。図９は、ミラー化処理時の動作シーケンス図である。ミラー化処理は、二つの段階に分けることが可能である。第一の段階は、論理コピーを実行する段階であり、第二の段階は、物理コピーを実行する段階である。ミラー化処理での論理コピーは、ビットマップ情報をストレージ装置間でコピーする処理である。また、ミラー化処理での物理コピーは、コピー元ボリュームに格納されたデータをコピー先ボリュームにコピーする処理である。
【００５１】
最初に論理コピー時の動作について説明する。論理コピーは、Ｓ５１からＳ５９までの動作によって実現する。ストレージシステムは、サーバ１００がストレージ装置３００に正常にアクセスできる状態になると、ストレージ装置２００のボリューム２５０とストレージ装置３００のボリューム３５０とを再度ミラーリングの関係にする。正常にアクセスできる状態か否かは、例えば管理者が判断する。サーバ１００は、ボリューム２５０とボリューム３５０とを再度ミラーリングの関係にする旨の指示情報を、例えば管理者の情報の入力により取得する（Ｓ５１）。
【００５２】
サーバ１００は、ミラー化処理を開始する（Ｓ５２）。サーバ１００は、ボリューム２５０とボリューム３５０との間のミラー化処理の開始の命令を、ストレージ装置２００に送信する（Ｓ５３）。ストレージ装置２００は、サーバ１００からミラー化処理の開始の命令を受信すると、ミラー化処理を開始する（Ｓ５４）。
【００５３】
ストレージ装置２００は、ミラー化処理を開始する旨の情報をストレージ装置３００に送信する（Ｓ５５）。ミラー化処理を開始する旨の情報は、ミラーリングの対象のボリュームを識別する情報、ビットマップ情報２３０を含む。ストレージ装置２００およびストレージ装置３００は、複数のボリュームを有する場合があり、ミラー化処理を行う対象を特定するために、ミラーリングの対象のボリュームを識別する情報をストレージ装置３００に送信する。
【００５４】
ストレージ装置３００は、ミラー化処理を開始する旨の情報を受信するとミラー化処理を開始する（Ｓ５６）。ストレージ装置３００は、ストレージ装置２００から受信したビットマップ情報２３０をメモリ３２０にビットマップ情報３３０として保持する（Ｓ５７）。
【００５５】
ストレージ装置２００はビットマップ情報２３０を有し、ストレージ装置３００はビットマップ情報３３０を有する。ストレージ装置２００は、ストレージ装置３００へのビットマップ情報３３０のコピーが完了した旨の情報をストレージ装置３００から受信すると（Ｓ５８）、サーバ１００に論理コピーの完了を通知する（Ｓ５９）。サーバ１００は、Ｓ５９においてストレージ装置２００から論理コピーの終了を受信した以降、ストレージ装置２００およびストレージ装置３００に対してデータ書込み命令あるいはデータ読込み命令を送信する。
【００５６】
図１０は、論理コピーが完了した時点のビットマップ情報３３０とボリューム３５０との関係を示す図である。ビットマップ情報３３０は、ビットマップ情報２３０をビットマップ情報３３０としてコピーしたものとする。そのため、ビットマップ３３０の更新箇所（ビットの値が「１」）は、ストレージ装置２００にデータの更新があったことを示す。したがって、ビットマップ情報３３０を用いることにより、ストレージ装置３００にアクセスがあった場合、物理コピーが必要な領域か否かをストレージ装置３００で判断することが可能になる。３３２は、ビット３３１の内、値が「１」のビットを示す。ビットマップ情報２３０の各ビット２３１の値とビットマップ情報３３０の各ビット３３１の値とは等しい。
【００５７】
次に、ストレージ装置２００およびストレージ装置３００で実行されるミラー化処理の物理コピー処理について説明する。ミラー化処理の物理コピー処理は、ビットマップ情報２３０のビット２３１およびビットマップ情報３３０のビット３３１に対応するブロック領域２５１およびブロック領域３５１を単位として実行する。ストレージ装置２００は物理コピーの実行を開始する（Ｓ６０）。また、ストレージ装置３００も物理コピーの実行を開始する（Ｓ６２）。ストレージ装置２００は、ボリューム２５０のブロック領域２５２のデータをボリューム３５０のブロック領域３５１に物理コピーする（Ｓ６１）。物理コピーの対象になるブロック領域は、ビットマップ情報のビットの値が「１」に対応するブロック領域である。なお、サーバ１００は、Ｓ５９においてストレージ装置２００から論理コピーの終了を受信している。したがって、サーバ１００は、ストレージ装置２００およびストレージ装置３００が物理コピー中であっても、ストレージ装置２００およびストレージ装置３００にデータ書込み命令あるいはデータ読込み命令を送信する。サーバ１００は、物理コピーが完了した領域か否かに関わらずアクセスするため、物理コピーの状態に応じて、アクセスに対する処理は変わる。
【００５８】
ここで、ミラー化処理中にサーバ１００からのアクセスがあった場合の処理について説明する。
【００５９】
図１１は、ストレージ装置２００にサーバ１００からのアクセスがあった場合の処理のフローチャートである。ストレージ装置２００は、サーバ１００からのアクセスを受信する（Ｓ１０１）。ストレージ装置２００は、アクセスの対象のブロック領域に対する物理コピーが完了したか否かを判別する（Ｓ１０２）。具体的には、アクセスの対象のブロック領域に対応するビットマップ情報２３０のビット２３１の値が「１」であるか「０」であるかを判別する。
【００６０】
アクセスの対象のブロック領域の物理コピーが完了している場合（Ｓ１０２：Ｙｅｓ）、ストレージ装置２００は、アクセスに応じた処理を実行する（Ｓ１０６）。物理コピーが完了しているブロック領域は、ボリューム２５０とボリューム３５０との間でミラーリングの関係であり、アクセス後に物理コピーによるデータの更新はない。サーバ１００が物理コピーの完了している領域のミラーリングを行うため、ストレージ装置２００あるいはストレージ装置３００は、物理コピーが完了しているブロック領域のミラーリングを実行する必要はない。したがって、ストレージ装置２００はアクセスに応じた処理を実行可能である。
【００６１】
一方、アクセスの対象のブロック領域の物理コピーが完了していない場合（Ｓ１０２：Ｎｏ）、ストレージ装置２００は、サーバ１００から受信したアクセスが書込み命令か否かを判別する（Ｓ１０３）。アクセスが書込み命令ではない場合、すなわちアクセスが読込み命令の場合（Ｓ１０３：Ｎｏ）、ストレージ装置２００は、アクセスに応じた処理を実行する（Ｓ１０６）。ストレージ装置２００のボリューム２５０は、コピー元ボリュームであり、物理コピーによるデータの更新はない。したがって、ストレージ装置２００はアクセスに応じた処理を実行可能である。
【００６２】
一方、アクセスが書込み命令の場合（Ｓ１０３：Ｙｅｓ）、ストレージ装置２００は、アクセスの対象のブロック領域に対応するボリューム２５０のブロック領域２５２のデータを、ボリューム３５０のブロック領域３５１にコピーする（Ｓ１０４）。ストレージ装置２００は、コピーしたブロック領域２５２に対応するビットマップ情報２３０のビット２３１の値を「０」に更新する（Ｓ１０５）。コピー先のストレージ装置３００は、コピーしたブロック領域３５１に対応するビットマップ情報３３０のビット３３１の値を「０」に更新する。したがって、ストレージ装置２００が書込み命令を受信してから、ストレージ装置３００がビットマップ情報３３０を更新するまでは、ストレージ装置３００へのサーバ１００からの書込み命令は停止する必要がある。その後、ストレージ装置２００はアクセスに応じた処理を実行する（Ｓ１０６）。ストレージ装置２００は、アクセスに応じた処理が完了すると、完了した旨の情報をサーバ１００に送信する（Ｓ１０７）。その後、ストレージ装置２００は、物理コピー処理を再開する。
【００６３】
ストレージ装置２００は、物理コピーが完了していないブロック領域２５２に対する書込み命令を受信すると、物理コピーを実行した後で、書き込み命令に対する処理を実行する。なお、ストレージ装置２００は、すでにストレージ装置３００がサーバからの書き込み命令を完了したと判断した場合に、ストレージ装置３００に対して物理コピーを実行する。ストレージ装置３００がサーバ１００からの書込み命令を実行した後で、ストレージ装置２００からの物理コピーを実行すると、データの不整合が生じるためである。サーバ１００の書込み命令の対象のブロック領域のミラー化処理が完了した後で、ストレージ装置２００およびストレージ装置３００は、書き込み命令を実行する。
【００６４】
なお、ストレージ装置２００は、物理コピーが完了していないブロック領域への書込み命令の場合には、物理コピーを実行することなく、ビットマップ情報のビットの値を「０」に更新するのみで対応することも可能である。例えば、ストレージ装置２００はストレージ装置３００のビットマップ情報３３０のビットの値を「０」に更新する情報をストレージ装置３００に送信する。サーバ１００は、ストレージ装置２００とストレージ装置３００とはミラーリングの関係であるとしており、サーバ１００はストレージ装置２００およびストレージ装置３００に書込み命令を送信するためである。この構成によれば、サーバ１００によるミラーリングによって、ストレージ装置２００およびストレージ装置３００のアクセスの対象のデータのミラー化が可能になるため、ストレージ装置間のミラー化処理が不要になる効果がある。
【００６５】
図１２は、ストレージ装置３００にサーバ１００からのアクセスがあった場合の処理のフローチャートである。ストレージ装置３００は、サーバ１００からのアクセスを受信する（Ｓ１１１）。ストレージ装置３００は、アクセスの対象のブロック領域に対する物理コピーが完了したか否かを判別する（Ｓ１１２）。具体的には、アクセスの対象のブロック領域に対応するビットマップ情報３３０のビット３３１の値が「１」であるか「０」であるか判別する。
【００６６】
アクセスの対象のブロック領域の物理コピーが完了している場合（Ｓ１１２：Ｙｅｓ）、ストレージ装置３００は、アクセスに応じた処理を実行する（Ｓ１１６）。物理コピーが完了しているブロック領域はミラーリングの関係であり、アクセス後に物理コピーによるデータの更新はない。したがって、ストレージ装置２００はアクセスに応じた処理を実行可能である。
【００６７】
アクセスの対象のブロック領域の物理コピーが完了していない場合（Ｓ１１２：Ｎｏ）、ストレージ装置３００は、アクセスのブロック領域に対応するボリューム２５０のブロック領域２５２のデータを、ボリューム３５０のブロック領域３５１にコピーする（Ｓ１１３）。具体的には、ストレージ装置３００は、アクセスのブロック領域に対応するボリューム２５０のブロック領域２５２のデータの転送要求をストレージ装置２００に行う。ストレージ装置２００は受信した転送要求に対応する物理コピーを優先して行う。
【００６８】
ストレージ装置３００は、コピーしたブロック領域３５１に対応するビットマップ情報３３０のビット３３１の値を「０」に更新する（Ｓ１１４）。なお、コピー元のストレージ装置２００は、ブロック領域２５２に対応するビットマップ情報２３０のビット２３２の値を「０」に更新する。その後、ストレージ装置３００はアクセスに応じた処理を実行する（Ｓ１１５）。ストレージ装置３００は、アクセスに応じた処理が完了すると、完了した旨の情報をサーバ１００に送信する（Ｓ１１６）。その後、ストレージ装置２００は、物理コピー処理を再開する。
【００６９】
ストレージ装置３００は、読出し命令か書込み命令かを判別しない点が、ストレージ装置２００と異なる。ストレージ装置２００のボリューム２５０内のデータはミラー化処理によって変更することがないためである。
【００７０】
なお、ストレージ装置３００は、物理コピーが完了していないブロック領域への書込み命令の場合には、物理コピーを実行することなく、ビットマップ情報のビットの値を「０」に更新するのみで対応することも可能である。この場合、ストレージ装置３００は、読出し命令か書込み命令かを判別する。この構成によれば、サーバ１００によるミラーリングによって、ストレージ装置２００およびストレージ装置３００のアクセスの対象のデータのミラー化が可能になるため、処理が単純化する効果がある。
【００７１】
一方、ストレージ装置３００のボリューム３５０内のデータはミラー化処理によって変更する可能性があるためである。
【００７２】
図１３および図１４で具体例を説明する。図１３は、ストレージ装置２００とストレージ装置３００との間の物理コピー中のボリュームとビットマップ情報を示す図である。
【００７３】
サーバ１００がブロック領域２５４、ブロック領域３５４にアクセスする場合を説明する。ブロック領域２５４は、ブロック領域２５１の内、サーバ１００によるアクセスの対象となるブロック領域である。２３４は、ブロック領域２５４に対応するビット２３１である。ブロック領域３５４は、ブロック領域２５４に対応するボリューム３５０のブロック領域である。３３４は、ブロック領域３５４に対応するビット３３１である。ブロック領域２５４のデータとブロック領域３５４のデータとは同じである。また、ブロック領域２５４に対応するビット２３４の値およびブロック領域３５４に対応するビット３３４の値は共に「０」である。
【００７４】
サーバ１００がボリューム２５０のブロック領域２５４に読出しアクセスした場合、ストレージ装置２００は、ブロック領域２５４のデータをサーバ１００に送信する。サーバ１００がボリューム２５０のブロック領域２５４に書込みアクセスした場合、ストレージ装置２００は、ブロック領域２５４のデータを書込みアクセスに応じて更新する。サーバ１００がボリューム３５０のブロック領域３５４に読出しアクセスした場合、ストレージ装置３００は、ブロック領域３５４のデータをサーバ１００に送信する。サーバ１００がボリューム２５０のブロック領域３５４に書込みアクセスした場合、ストレージ装置３００は、ブロック領域３５４のデータを書込みアクセスに応じて更新する。
【００７５】
次に、サーバ１００がブロック領域２５５、ブロック領域３５５にアクセスする場合を説明する。ブロック領域２５５は、ブロック領域２５１の内、サーバ１００によるアクセスの対象となるブロック領域である。２３５は、ブロック領域２５５に対応するビット２３１である。ブロック領域３５５は、ブロック領域２５５に対応するボリューム３５０のブロック領域である。３３５は、ブロック領域３５５に対応するビット３３１である。ブロック領域２５５のデータは「２２」であり、ブロック領域３５５のデータは「１１」であるため、ブロック領域２５５のデータとブロック領域３５５のデータとは異なる。また、ブロック領域２５５に対応するビット２３５の値およびブロック領域３５５に対応するビット３３５の値は共に「１」である。
【００７６】
サーバ１００がボリューム２５０のブロック領域２５５に読出しアクセスした場合、ストレージ装置２００は、ブロック領域２５５のデータをサーバ１００に送信する。
【００７７】
サーバ１００がボリューム２５０のブロック領域２５５に書込みアクセスした場合、ストレージ装置２００は、ブロック領域２５５のデータをブロック領域３５５にコピーする。そして、ストレージ装置２００はビット２３５の値を「０」にする。そして、ストレージ装置２００はブロック領域２５５のデータを書込みアクセスに応じて更新する。なお、ストレージ装置３００は、ビット３３５の値を「０」にする。図１４は、サーバ１００からストレージ装置２００のブロック領域２５５に対する書込みアクセスが完了したときのボリュームとビットマップ情報を示す。図１４では、ブロック領域２５５のデータは「３３」に更新されたものとする。なお、ストレージ装置３００のブロック領域３５５は、サーバ１００からストレージ装置３００への書き込みアクセスによって「３３」に更新される。なお、ストレージ装置２００およびストレージ装置３００は、物理コピー中のブロック領域に対するサーバ１００からのアクセスに対しては、物理コピーが完了した後でアクセスに応じた処理を実行する。
【００７８】
なお、サーバ１００がボリューム２５０のブロック領域２５５に書込みアクセスした場合、ストレージ装置２００およびストレージ装置３００は、物理コピーを実行しない処理も可能である。具体的には、ストレージ装置２００およびストレージ装置３００は、ビットマップ情報２３０およびビットマップ情報３３０のビットの値を「０」に更新する。この構成によれば、サーバ１００によるミラーリングによって、ストレージ装置２００およびストレージ装置３００のアクセスの対象のデータのミラー化が可能になるため、処理が単純化する効果がある。
【００７９】
サーバ１００がボリューム３５０のブロック領域３５５に読出しアクセスした場合、ストレージ装置３００は、ボリューム２５０のブロック領域２５５のデータをブロック領域３５５に物理コピーする。その後、ストレージ装置３００はブロック領域３５５のデータをサーバ１００に送信する。
【００８０】
サーバ１００がボリューム３５０のブロック領域３５５に書込みアクセスした場合、ストレージ装置３００は、ボリューム２５０のブロック領域２５５のデータをブロック領域３５５に物理コピーする。そして、ストレージ装置３００は、書込みアクセスに応じてブロック領域３５５のデータを更新する。なお、ストレージ装置２００はビット２３５の値を「０」に更新し、ストレージ装置３００はビット３３５の値を「０」に更新することにしてもよい。ストレージ装置２００のブロック領域２５５は、サーバ１００からストレージ装置２００への書き込みアクセスによって「３３」に更新される。図１４は、サーバ１００からストレージ装置３００のブロック領域３５５に対する書込みアクセスが完了したときのボリュームとビットマップ情報を示す。図１４では、ブロック領域３５５のデータは「３３」に更新されたものとする。
【００８１】
図９の説明に戻る。ストレージ装置２００は、ボリューム２５０の全てのブロック領域の物理コピーが完了すると、メモリ２２０内のビットマップ情報２３０を開放する（Ｓ６３）。ボリューム２５０の全てのブロック領域が完了するのは、ビットマップ情報２３０のビット２３１の値が全て「０」になったときである。ストレージ装置３００は、ボリューム３５０の全てのブロック領域の物理コピーが完了すると、メモリ３２０内のビットマップ情報３３０を開放する（Ｓ６４）。ボリューム３５０の全てのブロック領域が完了するのは、ビットマップ情報３３０のビット３３１の値が全て「０」になったときである。
【００８２】
なお、ボリューム２５０とボリューム３５０とを最初にミラーリングの関係にする場合、例えば、ストレージ装置２００は、図９のＳ５４において、全てのビット２３１の値が「１」のビットマップ情報２３０を作成する。その後、Ｓ５５以降の処理を実行すればよい。
【００８３】
以上の説明では、複数のストレージ装置を有し、それぞれのストレージ装置がデータ格納領域を管理する構成について説明した。なお、一つのストレージ装置は複数のデータ格納領域を管理する場合もある。図１５は、ストレージ装置２００のデータ格納部２４０に複数のデータ格納領域（ボリューム）を有する場合のストレージシステムである。
【００８４】
本実施例は、一つのストレージ装置内の複数のボリューム間のミラーリングについても適用可能である。ストレージ装置２００内のボリューム２６０とボリューム２７０との間でミラーリングをする場合、ボリューム間の物理コピー処理時に、ネットワーク４００に負荷をかけることがない。
【００８５】
ストレージ装置２００は、以下の処理を実行する。ストレージ装置２００は、ボリューム２７０を切り離す指示を受けるとビットマップ情報２３０を作成する。ストレージ装置２００は、ボリューム２７０を切り離したときからのボリューム２６０のデータが更新された領域をビットマップ情報２３０のビット２３１を変更することにより記憶する。ストレージ装置２００は、ボリューム２７０の再接続の実行を行う場合、サーバ１００に論理コピーの完了を送信する。その後、ビットマップ情報２３０のビット２３１に対応するボリューム２６０のブロック領域のデータをボリューム２７０に物理コピーする。
【００８６】
本実施例の適用前のミラーリング管理方法は、サーバがミラーリングの関係にするための情報を有していた。サーバは、ストレージ装置をミラーリングの関係から切り離してから再度接続するまでの差分データを記録し、ミラーリングの関係にするときに差分データの更新を行う方法もあった。しかし、差分データの量が増加すればミラーリングの関係にする時間はそれだけ多くかかる問題、および、差分データをコピーしている間はファイバチャネルの経路やサーバにコピー処理のための負荷が発生する問題があった。
【００８７】
本実施例では、ストレージ装置が物理コピーの処理を新しいアドバンストコピー機能によって実行し、サーバ１００は物理コピーの実行を意識しない。このため、サーバ１００は、物理コピーの処理を実行中のストレージ装置にアクセスすることが可能となる。
【００８８】
［アドバンスト・コピー機能］
ここで、ストレージ装置２００およびストレージ装置３００が有するアドバンストコピー機能について説明する。アドバンスト・コピー機能は、ストレージ装置２００が、サーバ１００を使用することなくストレージ装置２００とストレージ装置３００との間でデータのコピー実行を可能とする機能である。具体的には、ストレージ装置２００の制御部２１０は、ある時点のストレージ装置２００内のボリューム２５０のブロック領域２５１のデータを、ストレージ装置３００内のボリューム３５０のブロック領域３５１にコピーする。アドバンスト・コピー機能は、二重化切り離し方式（Ｅｑｕｉｖａｌｅｎｔ  Ｃｏｐｙ（以下ＥＣとする））、バックグラウンド・コピー方式（Ｏｎｅ  Ｐｏｉｎｔ  Ｃｏｐｙ（以下ＯＰＣとする））等がある。また、ＯＰＣには、同領域に対する二回目以降のコピーを前回のＯＰＣ処理から更新されたデータについてのみ実行する、高速バックグラウンド・コピー方式（Ｑｕｉｃｋ  Ｏｎｅ  Ｐｏｉｎｔ  Ｃｏｐｙ（以下ＱｕｉｃｋＯＰＣとする））がある。
【００８９】
ＯＰＣについて説明する。ストレージ装置２００およびストレージ装置３００は、ＯＰＣにおいて、論理コピーと物理コピーの２つのコピー処理を実行する。論理コピーは、コピー処理の進行状態を示すビットマップ情報を生成する処理である。ストレージ装置２００は、論理コピーが完了すると、コピー処理の完了をサーバ１００に送信する。一般的に、論理コピーは数秒程度で完了する。物理コピーは、論理コピーの完了後にストレージ装置２００とストレージ装置３００との間で実施される実際のコピー処理である。物理コピーにおいて、ストレージ装置２００およびストレージ装置３００は、ビットマップ情報の各ビットとブロック領域とを対応付け、ストレージ装置２００内のボリューム２５０のブロック領域２５１のデータを、ストレージ装置３００内のボリューム３５０のブロック領域３５１にコピーする。
【００９０】
サーバ１００は、論理コピーの完了後にコピー処理の完了通知をストレージ装置２００から受信している。物理コピーはストレージ装置２００とストレージ装置３００との間で行われるため、サーバ１００は、ストレージ装置２００とストレージ装置３００とが物理コピーの処理中であっても、ストレージ装置２００およびストレージ装置３００に対してアクセスする。したがって、ストレージ装置２００およびストレージ装置３００は、物理コピー中にサーバ１００からのアクセスがあると、物理コピーの進行状態に応じた処理を実行する必要がある。具体的には、各ストレージ装置は、物理コピーの進行状態に応じて、以下のように異なる処理を実行する。（１）ストレージ装置は、ＯＰＣ処理の未実施のブロック領域でコピー元のブロック領域にデータの書込みアクセスがあった場合、該当するブロック領域に対してＯＰＣ処理の実施した後、書込みアクセスに応じてデータを書き込む。（２）ストレージ装置は、ＯＰＣ処理の未実施のブロック領域でコピー元のブロック領域にデータの読出しアクセスがあった場合、そのまま読み出す。（３）ストレージ装置は、ＯＰＣ処理の未実施のブロック領域でコピー先のブロック領域にデータの書込みアクセスがあった場合、該当するブロック領域に対してＯＰＣ処理の実施した後、書込みアクセスに応じてデータを書き込む。（４）ストレージ装置は、ＯＰＣ処理の未実施のブロック領域でコピー先のブロック領域にデータの読出しアクセスがあった場合、該当するブロック領域に対してＯＰＣ処理の実施した後、読出しアクセスに応じてデータを読み出す。（５）ストレージ装置は、ＯＰＣ処理の未実施のブロック領域では、そのままデータを読み出す。
【００９１】
ＯＰＣにより、サーバ１００はストレージ装置２００とストレージ装置３００との間のコピー処理が完了しているように見えるため、サーバ１００は、ストレージ装置２００およびストレージ装置３００へのアクセスを継続して実行することが可能になる。
【００９２】
次にＱｕｉｃｋＯＰＣについて説明する。ＱｕｉｃｋＯＰＣにおいて、ストレージ装置２００は、初回にボリューム２５０のデータをストレージ装置３００のボリューム３５０にコピー（初期コピー）する。その後、ストレージ装置２００は、ボリューム２５０内の更新されたデータのみをボリューム３５０にコピー（差分コピー）する。ＱｕｉｃｋＯＰＣにおいて、ストレージ装置は、ＯＰＣのボリューム間のコピー処理に加え、更新されたデータの状態を取得する差分情報取得処理を実行する。ストレージ装置は、コピー処理および差分情報取得処理により、異なるデータのみをボリューム間で物理コピーすることが可能になる。
【００９３】
ストレージ装置は、最初にＱｕｉｃｋＯＰＣの処理を開始すると、コピー状態を表現する転送用ビットマップ情報と更新状態を表す更新用ビットマップ情報とを生成する。ストレージ装置は、転送用ビットマップ情報および更新用ビットマップ情報を生成すると、初期コピーの論理コピーを完了する。ストレージ装置は、初期コピーの論理コピー完了後、コピー元のボリュームのデータをコピー先のボリュームにブロック領域毎に物理コピーを実行する。ストレージ装置は、物理コピーに該当するブロック領域に対応する転送用ビットマップ情報のビットを「コピー完了」に変更する。ストレージ装置は、ボリューム内のブロック領域の物理コピーが完了した場合でも、ＱｕｉｃｋＯＰＣの処理を継続する。
【００９４】
ストレージ装置は、論理コピーの完了後、コピー元領域およびコピー先領域に対するサーバ１００からの書込アクセスを受信した場合、更新用ビットマップ情報に更新箇所を記録する。ストレージ装置は、コピー元のボリュームの物理コピーの完了していないブロック領域に対するサーバ１００からの書込みアクセスを受信した場合、アクセスに対応するブロック領域２５１のデータを対応するブロック領域３５１にコピーする。その後、ストレージ装置は、書込アクセスに対する処理を実行する。ストレージ装置は、アクセスに対応する転送用ビットマップ情報のビットを「コピー完了」に変更し、アクセスに対応する更新用ビットマップ情報のビットを「更新有り」に変更する。ストレージ装置は、サーバ１００からＱｕｉｃｋＯＰＣの実行の指示を受けると、更新用ビットマップ情報内の更新されたことを示すビットに対応するコピー元のブロック領域２５１のデータをコピー先のブロック領域３５１にコピーする。ストレージ装置は、差分コピーにおいても論理コピーおよび物理コピーを実行する。サーバ１００は、ストレージ装置の論理コピー処理の終了後、コピー元領域またはコピー先領域にアクセスが可能になる。
【００９５】
次にＥＣについて説明する。ＥＣはコピー元のボリューム内のブロック領域内のデータを、コピー先のボリュームのブロック領域にコピーすることにより、コピー元とコピー先のデータの二重化状態を作る。ストレージ装置は、ボリューム間の二重化状態を切り離すことによって、ある時点のデータのコピーを取得する。また、Ｓｕｓｐｅｎｄは二重化状態の一時停止であり、切り離しを示す。Ｒｅｓｕｍｅは二重化状態への復旧を示す。復旧時は、切り離した時点からのコピー元の更新されたデータのみをコピー先のボリュームに反映する。
【００９６】
ストレージ装置は、二重化状態でサーバからの書込みアクセスがあると、書込みアクセスは両ボリュームに対して実行する。各ストレージ装置は、コピー元のボリュームとコピー先のボリュームとの間のデータの等価状態を保持する。サーバ１００からコピー作成の指示を受けると、各ストレージ装置は、ボリューム間の等価状態を切り離す（Ｓｔｏｐ）。あるいは、各ストレージ装置は、ボリューム間の等価状態を一時停止（Ｓｕｓｐｅｎｄ）にする。サーバ１００は、等価状態切り離すあるいは一時停止された各ボリュームに対して、独立してアクセスすることができる。二重化状態への復旧時は、ストレージ装置は、二重化状態への復旧をサーバ１００からのアクセスよりも優先して実行する。したがって、サーバ１００は、ＥＣの復旧処理時に各ボリュームに対してアクセスすることができない。
【００９７】
本実施例のミラー化処理は、ＯＰＣ、ＱｕｉｃｋＯＰＣ、およびＥＣとは、（１）ミラーリングの関係を切り離したときから、差分データを取得する点、（２）ミラー化処理の時点で、ビットマップ情報は完成している点、（３）ミラー化処理の段階で、サーバ１００に対して、論理コピーの完了を通知する点、（４）ミラー化処理の段階では、サーバ１００は、読込みアクセスおよび書込みアクセスを各ボリュームに対して実行する点で異なる。
【図面の簡単な説明】
【００９８】
【図１】本実施例のストレージシステム１である。
【図２】ビットマップ情報２３０のビット２３１とボリューム２５０のブロック領域２５１との関係を示す図である。
【図３】ストレージシステムの通常時のミラーリングの動作シーケンス図である。
【図４】ストレージ装置間がミラーリングの関係であるときの、ボリューム２５０に格納されたデータとボリューム３５０に格納されたデータとの関係を示す図である。
【図５】ストレージシステムの故障時のミラーリングの動作シーケンス図である。
【図６】ビットマップ情報２３０が作成されたときのボリューム２５０のブロック領域２５１とビットマップ情報２３０のビット２３１との関係を示す図である。
【図７】ストレージ装置２００とストレージ装置３００とがミラーリングの関係から切り離された以降に実行する処理のフローチャートである。
【図８】ミラーリングの関係から切り離した後のビットマップ情報２３０、ボリューム２５０、およびボリューム３５０の関係を示す図である。
【図９】ミラー化処理時の動作シーケンス図である。
【図１０】論理コピーが完了した時点のビットマップ情報とボリュームとの関係を示す図である。
【図１１】ストレージ装置２００にサーバ１００からのアクセスがあった場合の処理のフローチャートである。
【図１２】ストレージ装置３００にサーバ１００からのアクセスがあった場合の処理のフローチャートである。
【図１３】ストレージ装置２００とストレージ装置３００との間の物理コピー中のボリュームとビットマップ情報を示す図である。
【図１４】サーバ１００からストレージ装置２００のブロック領域２５５に対する書込みアクセスが完了したときのボリュームとビットマップ情報を示す図である。
【図１５】ストレージ装置２００のデータ格納部２４０に複数のデータ格納領域を有する場合のストレージシステムである。
【符号の説明】
【００９９】
１００  サーバ
１１０  制御部
１２０  メモリ
１３０  接続部
２００  ストレージ装置
２１０  制御部
２２０  メモリ
２３０  ビットマップ情報
２４０  データ格納部
２６０  接続部
３００  ストレージ装置
３１０  制御部
３２０  メモリ
３３０  ビットマップ情報
３４０  データ格納部
３６０  接続部
４００  ネットワーク
【図１】
0005194962.tif 000002
【図２】
0005194962.tif 000003
【図３】
0005194962.tif 000004
【図４】
0005194962.tif 000005
【図５】
0005194962.tif 000006
【図６】
0005194962.tif 000007
【図７】
0005194962.tif 000008
【図８】
0005194962.tif 000009
【図９】
0005194962.tif 000010
【図１０】
0005194962.tif 000011
【図１１】
0005194962.tif 000012
【図１２】
0005194962.tif 000013
【図１３】
0005194962.tif 000014
【図１４】
0005194962.tif 000015
【図１５】
0005194962.tif 000016