以下、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、ストレージ装置1,2を有する。
ストレージ装置1は、記憶領域11a,11bを有する。記憶領域11a,11bは、例えば、ストレージ装置1に搭載されたHDD(Hard Disk Drive)やSSD(Solid State Drive)などの1つ以上の記憶装置によって実現される。一方、ストレージ装置2は、記憶領域21a,21bを有する。記憶領域21a,21bは、例えば、ストレージ装置2に搭載されたHDDやSSDなどの1つ以上の記憶装置によって実現される。
ストレージ装置1,2は、一方が運用状態となり、他方が待機状態となる。ストレージ装置1は、運用状態のとき、図示しない外部の情報処理装置からの記憶領域11aへのアクセスを受け付ける。一方、ストレージ装置2は、運用状態のとき、情報処理装置からの記憶領域21aへのアクセスを受け付ける。
以下、ストレージ装置1が運用状態であり、ストレージ装置2が待機状態であるものとして、説明を続ける。
ストレージ装置1は、運用状態のとき、記憶領域11aのデータを記憶領域11bへコピーする。これにより、記憶領域11aのデータが破壊された場合でも、ストレージ装置1は、他のストレージ装置からではなく、同じストレージ装置1内の記憶領域11bに格納されたバックアップデータを用いて、記憶領域11aのデータをリストアすることが可能となる。
また、ストレージ装置1は、運用状態のとき、記憶領域11aのデータと記憶領域21aのデータとが同期するように、記憶領域11aのデータを記憶領域21aへコピーする。これにより、フェイルオーバが行われたとき、運用状態に遷移したストレージ装置2が、記憶領域11aの代わりに記憶領域21aに対する情報処理装置からのアクセスを受け付けることで、情報処理装置での処理を継続することができる。
さらに、ストレージ装置1は、運用状態のとき、記憶領域11bのデータと記憶領域21bのデータとが同期するように、記憶領域11bのデータを記憶領域21bへコピーする。これにより、フェイルオーバが行われたとき、ストレージ装置2では、記憶領域21aのバックアップデータが記憶領域21bに格納された状態となり、データの安全性が向上する。
一方、ストレージ装置2は、記憶部22および制御部23を有する。記憶部22は、例えば、ストレージ装置2内のRAM(Random Access Memory)やHDDなどの記憶装置によって実現される。制御部23は、例えば、ストレージ装置2が備えるプロセッサ、または、ストレージ装置2内の図示しない制御装置が備えるプロセッサとして実現される。
記憶部22は、記憶領域21aのデータを記憶領域21bへコピーする処理を実行するための設定情報22aを記憶する。設定情報22aは、少なくとも、ストレージ装置2が待機状態から運用状態に遷移するより前に、図示しない管理装置などから記憶部22に設定される。
図1の上側に示すように、ストレージ装置2が待機状態のとき、制御部23は、設定情報22aに基づくコピー処理を実行しない。そして、図1の下側に示すように、フェイルオーバが行われてストレージ装置2が待機状態から運用状態に遷移すると、制御部23は、設定情報22aに基づいて記憶領域21aのデータを記憶領域21bへコピーする。なお、設定情報22aに基づくコピー処理は、ストレージ装置2が運用状態に遷移した後の任意のタイミングで実行されてもよい。
このように、ストレージ装置2が運用状態に遷移したときに記憶領域21aのデータが記憶領域21bへコピーされることにより、フェイルオーバ後に情報処理装置からの要求によって生じた記憶領域21aのデータ更新内容が、記憶領域21bのバックアップデータにも反映されるようになる。したがって、フェイルオーバ後の運用時におけるデータの安全性が向上する。
これとともに、ストレージ装置2が運用状態に遷移する前に記憶部22に設定情報22aが記憶されていることにより、ストレージ装置2は運用状態に遷移した後、設定情報22aを参照することでいつでも記憶領域21aのデータを記憶領域21bにコピーできる。このため、記憶領域21aのデータを記憶領域21bへコピーする処理を、この処理を実行するための設定操作を管理者が行うことなく、実行することができる。したがって、情報処理装置によって記憶領域21aのデータ更新が可能になってから短時間で、記憶領域21aのデータを記憶領域21bにバックアップして、記憶領域21aのデータの安全性を高めることが可能になる。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムの構成例を示す図である。図2に示すストレージシステムは、ストレージ装置100,200、業務サーバ300、管理サーバ400および端末装置500を含む。ストレージ装置100,200、業務サーバ300、管理サーバ400および端末装置500は、例えば、LAN(Local Area Network)51を介して接続されている。また、ストレージ装置100,200と業務サーバ300とは、例えば、SAN(Storage Area Network)52を介して接続されている。
なお、ストレージ装置100は、図1のストレージ装置1の一例であり、ストレージ装置200は、図1のストレージ装置2の一例である。
ストレージ装置100は、その内部に定義された論理ボリュームに対する業務サーバ300からのアクセスを制御する。ストレージ装置200も同様に、その内部に定義された論理ボリュームに対する業務サーバ300からのアクセスを制御する。
ストレージ装置100,200のうち、一方がアクティブ状態のとき、他方はスタンバイ状態となり、アクティブ状態のストレージ装置が業務サーバ300からのアクセスを受け付ける。また、アクティブ状態のストレージ装置は、自装置内の論理ボリュームのデータをスタンバイ状態のストレージ装置にバックアップする。そして、フェイルオーバの発生によりスタンバイ状態のストレージ装置がアクティブ状態に遷移すると、アクティブ状態に遷移したストレージ装置は、バックアップデータが記憶された論理ボリュームに対する業務サーバ300からのアクセスを受け付ける。これにより、一方のストレージ装置が障害の発生などによって動作を停止しても、他方のストレージ装置を用いて業務サーバ300での業務処理を継続可能になる。
なお、本実施の形態では、ストレージ装置100をプライマリとし、ストレージ装置200をセカンダリとして、運用開始時の状態では、ストレージ装置100がアクティブ状態となり、ストレージ装置200がスタンバイ状態になるものとする。
業務サーバ300は、各種の業務に関する処理を行うサーバコンピュータである。業務サーバ300は、SAN52を介して、ストレージ装置100,200のうちアクティブ状態のストレージ装置に定義された論理ボリュームにアクセスする。
管理サーバ400は、ストレージ装置100,200の運用を管理するためのサーバコンピュータである。管理サーバ400は、例えば、端末装置500に対して管理者によって入力された内容に応じて、ストレージ装置100,200に対する各種の設定処理を行う。
端末装置500は、ストレージシステムの管理者が利用するクライアントコンピュータである。管理者は、端末装置500への入力操作により、例えば、管理サーバ400を介してストレージ装置100,200に各種の設定を行ったり、業務サーバ300に各種の設定を行うことができる。
図3は、ストレージ装置のハードウェア構成例を示す図である。ストレージ装置100は、CM(Controller Module)101およびDE(Drive Enclosure)102を有する。なお、ストレージ装置100は、複数のCMを有していてもよいし、2台以上のDEを有していてもよい。
DE102は、業務サーバ300からのアクセス対象のデータを記憶する複数の記憶装置を有する。DE102に搭載される記憶装置は、例えば、HDD、SSDなどである。CM101は、業務サーバ300からのアクセス要求に応じてDE102内の記憶装置にアクセスする。
CM101は、プロセッサ103によって装置全体が制御されている。プロセッサ103は、マルチプロセッサであってもよい。プロセッサ103は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ103は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
プロセッサ103には、バスを介して、RAM104と複数の周辺機器が接続されている。
RAM104は、CM101の主記憶装置として使用される。RAM104には、プロセッサ103に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM104には、プロセッサ103による処理に必要な各種データが格納される。
バスに接続されている周辺機器としては、SSD105、読み取り装置106、CA(Channel Adapter)107、DI(Drive Interface)108およびLANインタフェース109がある。
SSD105は、CM101の補助記憶装置として使用される。SSD105には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、HDDなどの他の種類の不揮発性記憶装置を使用することもできる。
読み取り装置106には、可搬型の記録媒体106aが脱着される。読み取り装置106は、可搬型の記録媒体106aに記録されたデータを読み取ってプロセッサ103に送信する。可搬型の記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
CA107は、SAN52を介して業務サーバ300およびストレージ装置200と通信するためのインタフェースである。DI108は、DE102内の記憶装置と通信するためのインタフェースである。LANインタフェース109は、LAN51を介して管理サーバ400と通信するためのインタフェースである。
なお、ストレージ装置200もストレージ装置100と同様のハードウェア構成により実現できる。すなわち、ストレージ装置200は、CMとDEとを有し、ストレージ装置200のDEは、複数の記憶装置を有する。
また、以下の説明において、ストレージ装置100がアクティブ状態またはスタンバイ状態であるとは、ストレージ装置100内のCM101がアクティブ状態またはスタンバイ状態であることと同義である。同様に、ストレージ装置200がアクティブ状態またはスタンバイ状態であるとは、ストレージ装置200内のCMがアクティブ状態またはスタンバイ状態であることと同義である。
図4は、業務サーバのハードウェア構成例を示す図である。業務サーバ300は、プロセッサ301によって装置全体が制御されている。プロセッサ301は、マルチプロセッサであってもよい。プロセッサ301は、例えば、CPU、MPU、DSP、ASIC、またはPLDである。また、プロセッサ301は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
プロセッサ301には、バスを介して、RAM302と複数の周辺機器が接続されている。
RAM302は、業務サーバ300の主記憶装置として使用される。RAM302には、プロセッサ301に実行させるOSプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM302には、プロセッサ301による処理に必要な各種データが格納される。
バスに接続されている周辺機器としては、HDD303、画像信号処理部304、入力信号処理部305、読み取り装置306および通信インタフェース307,308がある。
HDD303は、業務サーバ300の補助記憶装置として使用される。HDD303には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSDなどの他の種類の不揮発性記憶装置を使用することもできる。
画像信号処理部304には、ディスプレイ304aが接続される。画像信号処理部304は、プロセッサ301からの命令にしたがって、画像をディスプレイ304aに表示させる。ディスプレイ304aとしては、液晶ディスプレイや、有機EL(ElectroLuminescence)ディスプレイなどがある。
入力信号処理部305には、入力デバイス305aが接続される。入力信号処理部305は、入力デバイスに対する入力操作に応じた信号をプロセッサ301に送信する。入力デバイス305aとしては、例えば、キーボード、マウス、タッチパッド、トラックボールなどがある。
読み取り装置306には、可搬型の記録媒体306aが脱着される。読み取り装置306は、可搬型の記録媒体306aに記録されたデータを読み取ってプロセッサ301に送信する。可搬型の記録媒体306aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
通信インタフェース307は、LAN51を介して管理サーバ400、端末装置500と通信するためのインタフェースである。通信インタフェース308は、SAN52を介してストレージ装置100,200と通信するためのインタフェースである。
なお、管理サーバ400および端末装置500も業務サーバ300と同様のハードウェアにより実現できる。
次に、図5は、ストレージ装置で実行されるコピー処理の概要について説明するための図である。図5では、例として、ストレージ装置100がアクティブ状態であり、ストレージ装置200がスタンバイ状態であるとする。また、以下の説明では、識別番号「X」の論理ボリュームを「LUN#X」と表記する場合がある。本実施の形態では、ストレージ装置100にはLUN#0,LUN#1が設定され、ストレージ装置200にはLUN#2,LUN#3が設定されるものとする。
ストレージ装置100,200は、フェイルオーバを可能とする筐体ペアとしてクラスタ化されている。クラスタ化されたストレージ装置100,200の間では、互いのストレージ装置に設定された論理ボリューム同士が「リモートコピーペア」として登録されることで、それらの論理ボリュームのデータを同期させることができる。すなわち、リモートコピーペアとして登録された論理ボリュームのうち、アクティブ状態のストレージ装置の論理ボリュームの内容が更新されると、その更新内容が他方の論理ボリュームに即座に反映される。例えば、アクティブ状態のストレージ装置のあるデータが新たなデータに更新されると、新たなデータがスタンバイ状態のストレージ装置に送信され、新たなデータによって他方の論理ボリュームの対応する位置のデータが更新される。以下、リモートコピーペアとして登録された論理ボリューム間で行われるコピー処理を、「リモートコピー」と記載する場合がある。
本実施の形態では、LUN#0とLUN#2とがリモートコピーペア61aとして登録され、LUN#1とLUN#3とがリモートコピーペア61bとして登録されるものとする。図5に示すように、ストレージ装置100がアクティブ状態の場合には、LUN#0のデータがLUN#2へリモートコピーされ、LUN#1のデータがLUN#3へリモートコピーされる。
また、アクティブ状態のストレージ装置100では、LUN#0とLUN#1とがローカルコピーペア62aとして登録され、LUN#0のデータがLUN#1にコピーされる。以下、ローカルコピーペアとして登録された一方の論理ボリュームから他方の論理ボリュームへのコピー処理を、「ローカルコピー」と記載する場合がある。アクティブ状態のストレージ装置100において業務サーバ300からのアクセス対象のLUN#0のデータが別のLUN#1にローカルコピーされることで、他のストレージ装置200のデータを用いずに、ストレージ装置100内のLUN#1を用いてリストアすることが可能となる。
ここで、本実施の形態において、ローカルコピーとは、コピー元ボリュームのスナップショットに対応する実データをコピー先ボリュームに記録する処理である。しかも、コピー元ボリュームからコピー先ボリュームへデータをコピーする処理は、業務サーバ300からの要求に応じたコピー元ボリュームに対するアクセス制御処理が継続された状態のまま、そのアクセス制御処理のバックグラウンドで実行される。さらに、2回目以降のローカルコピーでは、前回のローカルコピー開始後に業務サーバ300から更新されたデータのみが、コピー先ボリュームにコピーされる。
以下、このようなローカルコピーの手順について具体的に説明する。なお、ローカルコピー、リモートコピーの両方とも、論理ボリュームを同じサイズに分割した分割領域を単位として実行される。
ローカルコピーの実行のためには、コピー管理情報として、コピービットマップとトラッキングビットマップとが利用される。コピービットマップは、分割領域ごとに、ローカルコピーが実行済みか否かを示すビット値が対応付けられた管理情報である。ローカルコピーが未実行の場合「1」が登録され、実行済みの場合「0」が登録される。トラッキングビットマップは、分割領域ごとに、ローカルコピーが開始された後に業務サーバ300からの要求によりデータが更新されたか否かを示すビット値が対応付けられた管理情報である。データが更新されていない場合「0」が登録され、更新された場合「1」が登録される。
図6は、ローカルコピーの一例を示す図である。LUN#0からLUN#1への1回目のローカルコピーが要求されると、ストレージ装置100は、コピービットマップ71の全ビットを「1」にし、トラッキングビットマップ72の全ビットを「0」にする。そして、ストレージ装置100は、コピービットマップ71のビットが「1」の分割領域について、LUN#0からLUN#1にコピーするとともに、コピービットマップ71における当該ビットを「0」に更新する。
ここで、図6の上側には、LUN#0の各分割領域に記録されたデータA〜Iのうち、データA〜DがLUN#1にコピーされた状態を示す。この状態で、LUN#0のデータGをデータG1に更新する要求が業務サーバ300から送信されたとする。この場合、図6の下側に示すように、ストレージ装置100は、更新前のデータGをLUN#0からLUN#1にコピーした後、新たなデータG1によってLUN#0のデータGを更新する。また、ストレージ装置100は、トラッキングビットマップ72のビットのうち、データが更新された分割領域に対応するビットを「0」から「1」に更新するとともに、コピービットマップ71における同じ分割領域に対応するビットを「1」から「0」に更新する。これにより、LUN#0に対する業務サーバ300からのアクセスを継続しながら、コピー先のLUN#1にローカルコピーが要求された時点のデータを確実にバックアップすることができる。
また、図示しないが、ストレージ装置100は、コピービットマップ71が「1」であるすべての分割領域のデータをLUN#0からLUN#1にコピーしてローカルコピーが完了した後も、業務サーバ300からの要求に応じてLUN#0の分割領域のデータが更新されると、その分割領域に対応するトラッキングビットマップ72のビットを「0」から「1」に更新する。その後、再度ローカルコピーが要求されると、ストレージ装置100は、トラッキングビットマップ72の全ビットの値をコピービットマップ71にコピーした後、トラッキングビットマップ72の全ビットを「0」に更新する。そして、ストレージ装置100は、LUN#0のデータをLUN#1へローカルコピーするが、その際、LUN#0の分割領域のうち、コピービットマップ71のビットが「1」の分割領域のデータのみをLUN#1へコピーする。これにより、LUN#0の分割領域のうち、前回ローカルコピーが要求されてから1回以上データが更新された分割領域についてのみ、LUN#0からLUN#1へデータをコピーする「差分コピー」が実行され、ローカルコピーに要する時間が短縮される。
次に、図7は、フェイルオーバ発生時の問題点について説明する図である。図5に示したようにリモートコピーおよびローカルコピーが行われる構成において、ストレージ装置100の動作が障害の発生などによって停止した場合、フェイルオーバが行われる。これにより、ストレージ装置200がアクティブ状態になり、業務サーバ300からのアクセス対象はLUN#0からLUN#2に移る。
しかし、図7の上側に示すように、フェイルオーバの前では、スタンバイ状態のストレージ装置200においてはLUN#2からLUN#3へのローカルコピーが行われていないので、このため、フェイルオーバの後にストレージ装置200においてLUN#2のデータをLUN#3にローカルコピーしようとすると、管理者は、図7の下側に示すように、ローカルコピーペア62bの設定など、ローカルコピーを実行させるための各種の設定操作を行う必要がある。したがって、管理者によるデータバックアップの運用管理作業の効率が低いという問題がある。
また、例えば、ストレージ装置100においてローカルコピーが実行されている途中でフェイルオーバが発生した場合、ストレージ装置200は、ローカルコピーがどこまで進捗しているかを認識できない。このため、ストレージ装置200は、ローカルコピーを途中から引き継ぐことができない。
さらに、ストレージ装置100においてローカルコピーの実行が完了した状態でフェイルオーバが発生した場合でも、ストレージ装置200は、直近のローカルコピーの開始後からLUN#0のどの分割領域が更新されたかを認識できない。このため、ストレージ装置200は、LUN#2からLUN#3への差分コピーを実行できず、LUN#2の全データを再度LUN#3へコピーする必要が生じる。
このような問題に対し、第2の実施の形態では、次の図8および図9に示すような処理が行われる。
図8は、第2の実施の形態におけるローカルコピーペアの設定処理について説明する図である。本実施の形態では、ストレージ装置100,200の両方においてローカルコピーペアがあらかじめ設定される。すなわち、ストレージ装置100内のLUN#0とLUN#1とがローカルコピーペア62aとして設定されるとともに、ストレージ装置200内のLUN#2とLUN#3とがローカルコピーペア62bとして設定される。そして、ローカルコピーペアの設定に基づくローカルコピーは、アクティブ状態のストレージ装置でのみ実行される。
図9は、第2の実施の形態におけるコピー処理の運用について説明する図である。図9の上側では、例として、ストレージ装置100がアクティブ状態であるとする。この状態では、ストレージ装置100では、ローカルコピーペア62aの設定に基づいてLUN#0からLUN#1へのローカルコピーが実行される。しかし、スタンバイ状態のストレージ装置200では、ローカルコピーペア62bの設定に基づくLUN#2からLUN#3へのローカルコピーは実行されない。
また、リモートコピーペア61aの設定に基づくLUN#0からLUN#2へのリモートコピー、および、リモートコピーペア61bの設定に基づくLUN#1からLUN#3へのリモートコピーも実行される。これとともに、LUN#0からLUN#1へのローカルコピー用のコピービットマップおよびトラッキングビットマップも、ストレージ装置100からストレージ装置200に対してリモートコピーされ、ストレージ装置100とストレージ装置200との間で同期される。
この後、フェイルオーバが行われると、図9の下側に示すように、ストレージ装置200がアクティブ状態に遷移するのに伴って、ローカルコピーペア62bの設定が有効化される。これにより、管理者によるローカルコピーペア62bの設定を行うことなく、ストレージ装置200がローカルコピーの要求を受けたときにLUN#2からLUN#3へのローカルコピーが実行される。したがって、管理者によるデータバックアップの運用管理効率が向上する。
また、ストレージ装置200は、フェイルオーバ前にストレージ装置100からリモートコピーされていたコピービットマップおよびトラッキングビットマップを、フェイルオーバ後に参照することができる。このため、ストレージ装置100でのLUN#0からのLUN#1へのローカルコピーの実行中にフェイルオーバが行われた場合でも、ストレージ装置200は、リモートコピーされたコピービットマップに基づいて、LUN#2におけるコピー未実行の分割領域のみからデータをLUN#3へコピーすることができる。したがって、ストレージ装置200は、ローカルコピーを途中から正確に引き継ぐことができる。
さらに、ストレージ装置100でLUN#0からLUN#1へのローカルコピーが完了した状態でフェイルオーバが行われた場合でも、ストレージ装置200は、リモートコピーされたトラッキングビットマップを用いて、LUN#2におけるデータ更新済みの分割領域を引き続き正確に管理できる。このため、ストレージ装置200でのその後のローカルコピー処理において、差分コピーを正確に実行できる。
次に、図10は、ストレージシステム内の処理機能の構成例を示すブロック図である。
まず、ストレージ装置100のCM101は、記憶部110、アクセス制御部120およびコピー制御部130を有する。記憶部110は、例えば、CM101のRAM104またはSSD105の記憶領域として実現される。アクセス制御部120およびコピー制御部130の処理は、例えば、CM101のプロセッサ103によって所定のプログラムが実行されることで実現される。
記憶部110には、各種の設定情報が記憶される。設定情報としては、ローカルコピーペアに関する情報やリモートコピーペアに関する情報が含まれる。
アクセス制御部120は、ストレージ装置100がアクティブ状態のとき、業務サーバ300からのLUN#0へのアクセス要求を受信し、アクセス要求に応じたアクセス制御処理を実行する。
コピー制御部130は、ストレージ装置100がアクティブ状態のとき、LUN#0からLUN#1へのローカルコピー、リモートコピーペア情報に基づくLUN#0,LUN#1の各データのCM201への送信の各処理を実行する。また、コピー制御部130は、ストレージ装置100がスタンバイ状態のとき、ストレージ装置200から送信されたLUN#2のデータによってLUN#0を更新する処理、ストレージ装置200から送信されたLUN#3のデータによってLUN#1を更新する処理を実行する。
ストレージ装置200のCM201は、記憶部210、アクセス制御部220およびコピー制御部230を有する。記憶部210は、例えば、CM201が備えるRAMまたはSSDの記憶領域として実現される。アクセス制御部220およびコピー制御部230の処理は、例えば、CM201が備えるプロセッサによって所定のプログラムが実行されることで実現される。
記憶部210には、各種の設定情報が記憶される。設定情報としては、ローカルコピーペアに関する情報やリモートコピーペアに関する情報が含まれる。
アクセス制御部220は、ストレージ装置200がアクティブ状態のとき、業務サーバ300からのLUN#2へのアクセス要求を受信し、アクセス要求に応じたアクセス制御処理を実行する。
コピー制御部230は、ストレージ装置200がアクティブ状態のとき、LUN#2からLUN#3へのローカルコピー、リモートコピーペア情報に基づくLUN#2,LUN#3の各データのCM101への送信の各処理を実行する。また、コピー制御部230は、ストレージ装置200がスタンバイ状態のとき、ストレージ装置100から送信されたLUN#0のデータによってLUN#2を更新する処理、ストレージ装置100から送信されたLUN#1のデータによってLUN#3を更新する処理を実行する。
業務サーバ300は、記憶部310、アクセス処理部320およびコピー管理部330を有する。記憶部310は、例えば、業務サーバ300のRAM302またはHDD303の記憶領域によって実現される。アクセス処理部320およびコピー管理部330の処理は、例えば、業務サーバ300のプロセッサ301が所定のプログラムを実現することによって実現される。
記憶部310には、アクセス処理部320およびコピー管理部330によって参照される各種の情報が記憶される。アクセス処理部320は、ストレージ装置100のLUN#0またはストレージ装置200のLUN#2に対してアクセスする。コピー管理部330は、端末装置500からのコピー要求に応じて、ストレージ装置100,200のうちのアクティブ状態のストレージ装置に対してローカルコピーの実行を要求する。
管理サーバ400は、設定処理部410を有する。設定処理部410の処理は、例えば、管理サーバ400が備えるプロセッサが所定のプログラムを実行することによって実現される。設定処理部410は、端末装置500からの要求に応じて、ストレージ装置100,200を運用するための各種の情報をストレージ装置100,200および業務サーバ300に設定する。
図11は、ストレージ装置に設定される情報の例を示す図である。ストレージ装置100のCM101の記憶部110は、グループ管理テーブル111、ローカルコピー管理テーブル112およびリモートコピー管理テーブル113を記憶する。また、ストレージ装置200のCM201の記憶部210は、グループ管理テーブル211、ローカルコピー管理テーブル212およびリモートコピー管理テーブル213を記憶する。
グループ管理テーブル111には、ストレージ装置100が属するグループに関する情報が登録される。グループ管理テーブル211には、ストレージ装置200が属するグループに関する情報が登録される。グループ管理テーブル111,211は、グループID、利用ステータス、動作ステータス、相手筐体ID、ポートIDおよびLUNの項目を有する。
グループIDの項目には、グループの識別番号が登録される。利用ステータスの項目には、対応するストレージ装置がプライマリとセカンダリのどちらであるかを示す情報が登録される。動作ステータスの項目には、対応するストレージ装置がアクティブ状態とスタンバイ状態のどちらであるかを示す情報が登録される。
相手筐体IDの項目には、対応するストレージ装置とともにクラスタ化された他方のストレージ装置の識別番号が登録される。ポートIDの項目には、対応するストレージ装置がアクティブ状態のときの通信先CAの識別番号と、対応するストレージ装置がスタンバイ状態のときの通信先のCA(すなわち、他方のストレージ装置のCA)の識別番号とが登録される。LUNの項目には、対応するストレージに設定された、グループに属する論理ボリュームの識別番号が登録される。
グループ管理テーブル111,211によれば、相手筐体IDの項目に互いのストレージ装置の識別番号が登録されることで、互いのストレージ装置がクラスタ化されていることが登録される。また、LUNの項目に登録される論理ボリュームは、他方のストレージ装置の論理ボリュームとの間でリモートコピーが行われる論理ボリュームとなる。
ローカルコピー管理テーブル112には、ストレージ装置100において実行されるローカルコピーの設定情報が登録される。ローカルコピー管理テーブル212には、ストレージ装置200において実行されるローカルコピーの設定情報が登録される。ローカルコピー管理テーブル112,212は、セッションID、コピービットマップ、トラッキングビットマップ、コピー元LUNおよびコピー先LUNの項目を有する。
セッションIDの項目は、ローカルコピー処理を識別するための識別番号が登録される。コピービットマップの項目には、ローカルコピーの実行時に利用されるコピービットマップが登録される。トラッキングビットマップの項目には、ローカルコピーの実行時に利用されるトラッキングビットマップが登録される。コピー元LUNの項目には、ローカルコピー元の論理ボリュームの識別番号が登録される。コピー先LUNの項目には、ローカルコピー先の論理ボリュームの識別番号が登録される。コピー元LUNおよびコピー先LUNの各項目に登録される論理ボリュームは、グループ管理テーブル111,221のLUNの項目に登録された論理ボリュームである。
ローカルコピー管理テーブル112,212に登録された情報に基づくローカルコピーは、対応するストレージ装置がアクティブ状態の場合のみ実行される。また、アクティブ状態のストレージ装置内のローカルコピー管理テーブルにおけるコピービットマップおよびトラッキングビットマップは、他方のストレージ装置内のローカルコピー管理テーブルにおけるコピービットマップおよびトラッキングビットマップの各項目にリモートコピーされる。これにより、ストレージ装置間でコピービットマップおよびトラッキングビットマップが同期される。
リモートコピー管理テーブル113には、ストレージ装置100において実行されるリモートコピーの設定情報が登録される。リモートコピー管理テーブル213には、ストレージ装置200において実行されるリモートコピーの設定情報が登録される。リモートコピー管理テーブル113,213の各レコードは、セッションID、コピー元LUNおよびコピー先LUNの項目を有する。
セッションIDの項目には、リモートコピー処理を識別するための識別番号が登録される。コピー元LUNの項目には、リモートコピー元の論理ボリュームの識別番号が登録される。コピー先LUNの項目には、他方のストレージ装置に設定されたリモートコピー先の論理ボリュームの識別番号が登録される。
本実施の形態では、リモートコピー管理テーブル113,213の両方とも、2つのレコードが登録される。また、リモートコピー管理テーブルに登録された情報に基づくリモートコピーは、対応するストレージ装置がアクティブ状態の場合のみ実行される。
図12は、業務サーバに設定される情報の例を示す図である。業務サーバ300の記憶部310には、筐体ペア管理テーブル311およびボリューム管理テーブル312が登録される。
筐体ペア管理テーブル311は、クラスタ化されたストレージ装置のペアに関する情報を保持する。筐体ペア管理テーブル311は、筐体ペアID、プライマリID、セカンダリIDおよびアクティブ筐体IDの項目を有する。
筐体ペアIDの項目には、クラスタ化されたストレージ装置のペアを識別するための番号が登録される。プライマリIDの項目には、プライマリのストレージ装置の識別番号が登録される。セカンダリIDの項目には、セカンダリのストレージ装置の識別番号が登録される。アクティブ筐体IDの項目には、クラスタ化されたストレージ装置のうち、アクティブ状態のストレージ装置の識別番号が登録される。
ボリューム管理テーブル312は、業務サーバ300からアクセス可能な論理ボリュームに関する情報を保持する。ボリューム管理テーブル312は、ボリューム名、筐体ID、LUNおよびブロックサイズの項目を有する。
ボリューム名の項目には、業務サーバ300のOSが提供するボリュームの識別情報が登録される。筐体IDの項目には、ストレージ装置の識別番号が登録される。LUNの項目には、論理ボリュームの識別番号が登録される。ブロックサイズの項目には、論理ボリュームのサイズが登録される。
ボリューム管理テーブル312においては、1つのボリューム名には、プライマリおよびセカンダリのそれぞれについての筐体IDおよびLUNが登録される。これにより、業務サーバ300は、プライマリとセカンダリのストレージ装置のうち、アクティブ状態のストレージ装置におけるアクセス先の論理ボリュームの識別番号(LUN)を判別することができる。
次に、本実施の形態のストレージシステムにおける処理手順について、シーケンス図を用いて説明する。
図13は、ストレージ装置に対する設定処理の例を示すシーケンス図である。
まず、端末装置500に対する管理者の入力操作に応じて、管理サーバ400によるストレージ装置100,200の設定処理が行われる。
[ステップS11]管理サーバ400の設定処理部410は、ストレージ装置100のCM101に対してグループ管理テーブル111、ローカルコピー管理テーブル112およびリモートコピー管理テーブル113の設定を行う。
[ステップS12]設定処理部410は、ストレージ装置200のCM201に対してグループ管理テーブル211、ローカルコピー管理テーブル212およびリモートコピー管理テーブル213の設定を行う。
なお、以上のステップS11,S12の設定処理は、業務サーバ300からストレージ装置100,200に対して行われてもよい。
続いて、端末装置500に対する管理者の入力操作に応じて、業務サーバ300の設定処理が行われる。
[ステップS13]業務サーバ300は、ストレージ装置100からグループ管理テーブル111、ローカルコピー管理テーブル112およびリモートコピー管理テーブル113に設定された情報を取得する。
[ステップS14]業務サーバ300は、ストレージ装置200からグループ管理テーブル211、ローカルコピー管理テーブル212およびリモートコピー管理テーブル213に設定された情報を取得する。
[ステップS15]業務サーバ300は、ステップS13,S14で取得された情報に基づいて、筐体ペア管理テーブル311およびボリューム管理テーブル312の設定を行う。
図14は、業務サーバからストレージ装置への書き込み要求が発生した場合の処理例を示すシーケンス図である。図14では例として、ストレージ装置100がアクティブ状態であり、ストレージ装置200がスタンバイ状態であるとする。
[ステップS21]業務サーバ300のアクセス処理部320は、ストレージ装置100のLUN#0に対するデータの書き込み要求をストレージ装置100へ送信する。
[ステップS22]ストレージ装置100のアクセス制御部120は、LUN#0(ローカルコピー元の論理ボリューム)における書き込み要求先のデータを、業務サーバ300から受信した書き込みデータによって更新する。
[ステップS23]ストレージ装置100のコピー制御部130は、ステップS22で更新されたデータをストレージ装置200へ送信して、LUN#2へのリモートコピーを要求する。
[ステップS24]ストレージ装置200のコピー制御部230は、LUN#2(ローカルコピー元の論理ボリューム)における対応するデータを、ストレージ装置100から受信したデータによって更新する。
[ステップS25]コピー制御部230は、リモートコピーが完了したことを示す応答をストレージ装置100へ送信する。
[ステップS26]ストレージ装置100のコピー制御部130は、ステップS24で更新したデータに対応する分割領域について、トラッキングビットマップのビットを「1」に更新するようにストレージ装置200へ要求する。
[ステップS27]ストレージ装置200のコピー制御部230は、トラッキングビットマップにおける該当ビットを「1」に更新する。
[ステップS28]コピー制御部230は、トラッキングビットの更新が完了したことを示す応答をストレージ装置100へ送信する。
[ステップS29]ストレージ装置100のコピー制御部130は、ステップS22で更新したデータに対応する分割領域について、トラッキングビットマップのビットを「1」に更新する。
[ステップS30]ストレージ装置100のアクセス制御部120は、データの書き込みが完了したことを示す応答を業務サーバ300へ送信する。
図15は、ローカルコピーが要求された場合の処理例を示すシーケンス図である。図15では例として、ストレージ装置100がアクティブ状態であり、ストレージ装置200がスタンバイ状態であるとする。
[ステップS41]管理者は、端末装置500への入力操作により、業務サーバ300に対してローカルコピーの実行を指示する。指示を受けた業務サーバ300は、アクティブ状態のストレージ装置100に対してローカルコピーの実行を要求する。なお、ローカルコピーの実行は、例えば、管理サーバ400から指示されてもよい。
[ステップS42]ストレージ装置100のコピー制御部130は、業務サーバ300に対してローカルコピーが完了したことを示す応答を送信する。
[ステップS43]ストレージ装置100のコピー制御部130は、コピービットマップの全ビットを、トラッキングビットマップの対応するビットの値によって更新する。そして、コピー制御部130は、トラッキングビットマップの全ビットを「0」に更新する。
[ステップS44]ステップS53のループ端までの処理が、コピービットマップのビット値が「1」である分割領域ごとに繰り返し実行される。
[ステップS45]コピー制御部130は、LUN#0の該当分割領域のデータをLUN#1の同じ分割領域にローカルコピーする。
[ステップS46]コピー制御部130は、ステップS45でLUN#1を更新したデータをストレージ装置200へ送信して、LUN#3へのリモートコピーを要求する。
[ステップS47]ストレージ装置200のコピー制御部230は、LUN#3(ローカルコピー先の論理ボリューム)における対応する分割領域のデータを、ストレージ装置100から受信したデータによって更新する。
[ステップS48]コピー制御部230は、リモートコピーが完了したことを示す応答をストレージ装置100へ送信する。
[ステップS49]ストレージ装置100のコピー制御部130は、ステップS47で更新したデータに対応する分割領域について、コピービットマップのビットを「0」に更新するようにストレージ装置200へ要求する。
[ステップS50]ストレージ装置200のコピー制御部230は、コピービットマップにおける該当ビットを「0」に更新する。
[ステップS51]コピー制御部230は、コピービットマップの更新が完了したことを示す応答をストレージ装置100に送信する。
[ステップS52]ストレージ装置100のコピー制御部130は、ステップS45で更新したデータに対応する分割領域について、コピービットマップのビットを「0」に更新する。
[ステップS53]コピービットマップのビットが「1」であるすべての分割領域についての処理が終了すると、ローカルコピー処理が完了する。
図16は、ローカルコピーの実行中にデータ更新が要求された場合の処理例を示す図である。図16では例として、ストレージ装置100がアクティブ状態であり、ストレージ装置200がスタンバイ状態であるとする。図16の処理は、図15の処理中に割り込みによって実行される。
[ステップS61]業務サーバ300のアクセス処理部320は、ストレージ装置100のLUN#0に対するデータの書き込み要求をストレージ装置100へ送信する。
[ステップS62]ストレージ装置100のコピー制御部130は、LUN#0における書き込みが要求された分割領域に格納されている更新前データを、LUN#1の対応する分割領域へローカルコピーする。
[ステップS63]コピー制御部130は、ステップS62でLUN#1を更新したデータ(すなわち、LUN#0における更新前データ)をストレージ装置200へ送信して、LUN#3へのリモートコピーを要求する。
[ステップS64]ストレージ装置200のコピー制御部230は、LUN#3(ローカルコピー先の論理ボリューム)における対応する分割領域のデータを、ストレージ装置100から受信したデータによって更新する。
[ステップS65]コピー制御部230は、リモートコピーが完了したことを示す応答をストレージ装置100へ送信する。
[ステップS66]ストレージ装置100のコピー制御部130は、ステップS62で更新したデータに対応する分割領域について、コピービットマップのビットを「0」に更新するようにストレージ装置200へ要求する。
[ステップS67]ストレージ装置200のコピー制御部230は、コピービットマップにおける該当ビットを「0」に更新する。
[ステップS68]コピー制御部230は、コピービットマップの更新が完了したことを示す応答をストレージ装置100に送信する。
[ステップS69]ストレージ装置100のコピー制御部130は、ステップS62で更新したデータに対応する分割領域について、コピービットマップのビットを「0」に更新する。
[ステップS70]ストレージ装置100のアクセス制御部120は、LUN#0(ローカルコピー元の論理ボリューム)における書き込み要求先のデータを、業務サーバ300から受信した書き込みデータによって更新する。
[ステップS71]ストレージ装置100のコピー制御部130は、ステップS70で更新したデータに対応する分割領域について、トラッキングビットマップのビットを「1」に更新するようにストレージ装置200へ要求する。
[ステップS72]ストレージ装置200のコピー制御部230は、トラッキングビットマップにおける該当ビットを「1」に更新する。
[ステップS73]コピー制御部230は、トラッキングビットマップの更新が完了したことを示す応答をストレージ装置100へ送信する。
[ステップS74]ストレージ装置100のコピー制御部130は、ステップS70で更新したデータに対応する分割領域について、トラッキングビットマップのビットを「1」に更新する。
[ステップS75]ストレージ装置100のアクセス制御部120は、データの書き込みが完了したことを示す応答を業務サーバ300へ送信する。
図17は、フェイルオーバが行われた場合の処理例を示すシーケンス図である。図17では例として、フェイルオーバによってストレージ装置200がスタンバイ状態からアクティブ状態に遷移する場合について説明する。
[ステップS81]ストレージ装置100は、自装置の障害発生を検知すると、ストレージ装置200に対してフェイルオーバを通知するとともに、アクティブ状態からスタンバイ状態に遷移する。なお、これ以外に例えば、管理サーバ400がストレージ装置100の障害発生を検知することで、ストレージ装置200にフェイルオーバが通知されてもよい。
[ステップS82]ストレージ装置200のCM201は、フェイルオーバの通知に応じて、スタンバイ状態からアクティブ状態に遷移する。なお、これ以外に例えば、ストレージ装置200は、ストレージ装置100と定期的に通信し、ストレージ装置100との通信が不能になったことを検知したときにアクティブ状態に遷移してもよい。
[ステップS83]ストレージ装置200のコピー制御部230は、ローカルコピー管理テーブル212を参照し、コピービットマップを各ビットの値をチェックする。このコピービットマップは、フェイルオーバ前までストレージ装置100側のコピービットマップと同期されていた情報である。
[ステップS84]コピー制御部230は、コピービットマップのビットが「1」の分割領域があるかを判定する。ビットが「1」の分割領域がある場合、ストレージ装置100でローカルコピーを実行中にフェイルオーバが発生したと判断される。この場合、ステップS85の処理が実行される。ビットが「1」の分割領域がない場合、フェイルオーバに伴う処理は終了する。
[ステップS85]コピー制御部230は、ローカルコピー管理テーブル212の登録内容に基づき、ステップS88のループ端までの処理を、ビットが「1」の分割領域ごとに繰り返し実行する。
[ステップS86]コピー制御部230は、LUN#2の該当分割領域のデータをLUN#3の同じ分割領域にローカルコピーする。
[ステップS87]コピー制御部230は、該当分割領域についてのコピービットマップのビットを「0」に更新する。
[ステップS88]コピービットマップのビットが「1」であるすべての分割領域についての処理が終了すると、ローカルコピー処理が完了する。
以上の図17の処理によれば、アクティブ状態に遷移したストレージ装置200は、あらかじめ設定されていたローカルコピー管理テーブル212の登録情報に基づいて、管理者による設定操作を行うことなく、LUN#2からLUN#3へのローカルコピーを実行できる。また、ストレージ装置200は、フェイルオーバ前にストレージ装置100側のコピービットマップと同期されていたコピービットマップを参照することで、ストレージ装置100で実行されていたローカルコピー処理を、途中から正確に引き継ぐことができる。
また、フェイルオーバが行われた時点で、ストレージ装置200のローカルコピー管理テーブル212には、フェイルオーバ前までストレージ装置100側のトラッキングビットマップと同期されていたトラッキングビットマップが記録されている。ストレージ装置200は、フェイルオーバ後、業務サーバ300からLUN#2に対する書き込み要求を受信すると、図14のステップS22,S29,S30と同様の手順で、LUN#2に対するデータ更新とともにトラッキングビットマップの更新を行う。また、ストレージ装置100から引き継いだローカルコピーの実行中に業務サーバ300からのLUN#2に対する書き込み要求を受信した場合、ストレージ装置200は、図16のステップS62,S69,S70,S74,S75と同様の手順で処理を行う。これにより、ストレージ装置100から引き継がれたトラッキングビットマップが更新される。
そして、LUN#2のローカルコピーが業務サーバ300からあらためて要求されると、ストレージ装置200のコピー制御部230は、トラッキングビットマップの全ビットをコピービットマップにコピーする。コピー制御部230は、コピービットマップのビットが「1」の分割領域についてのみ、LUN#2からLUN#3へデータをコピーする。これにより、フェイルオーバ後のストレージ装置200においても、次のローカルコピーの実行時に差分コピーを正確に行うことが可能になる。
図18は、ストレージ装置が復旧した場合の処理例を示すシーケンス図である。図18では例として、ストレージ装置100が停止状態から復旧する場合について説明する。なお、以下の処理の実行前に、例えば、管理者による端末装置500への操作入力に応じた管理サーバ400からの処理によって、ストレージ装置100ではグループ管理テーブル111、ローカルコピー管理テーブル112およびリモートコピー管理テーブル113が再設定される。
[ステップS91]ストレージ装置100は、自装置の動作が復旧したことをストレージ装置200に通知する。
[ステップS92]ストレージ装置200のコピー制御部230は、LUN#2のデータをストレージ装置100に送信して、LUN#0(すなわち、ローカルコピー元の論理ボリューム)をリストアする。
[ステップS93]コピー制御部230は、LUN#3のデータをストレージ装置100に送信して、LUN#1(すなわち、ローカルコピー先の論理ボリューム)をリストアする。
[ステップS94]コピー制御部230は、ローカルコピー管理テーブル212内のコピービットマップをストレージ装置100に送信して、コピービットマップの更新を指示する。
[ステップS95]ストレージ装置100のコピー制御部130は、受信したコピービットマップによって、ローカルコピー管理テーブル112内のコピービットマップを更新する。
[ステップS96]ストレージ装置200のコピー制御部230は、ローカルコピー管理テーブル212内のトラッキングビットマップをストレージ装置100に送信して、トラッキングビットマップの更新を指示する。
[ステップS97]ストレージ装置100のコピー制御部130は、受信したトラッキングビットマップによって、ローカルコピー管理テーブル112内のトラッキングビットマップを更新する。
なお、図18では、ステップS92〜S94,S96の処理に対するストレージ装置100からの完了応答については省略している。また、ステップS92,S93の処理順、および、ステップS94,S96の処理順は、それぞれ逆にすることもできる。
[第2の実施の形態の変形例]
次に、第2の実施の形態のストレージシステムの処理の一部を変形した変形例について説明する。
様々な場合に、アクティブ状態のストレージ装置とスタンバイ状態のストレージ装置との接続が切断されることがある。例えば、スタンバイ状態のストレージ装置が故障などによって停止した場合が考えられる。あるいは、アクティブ状態のストレージ装置の停止によってフェイルオーバが行われ、スタンバイ状態のストレージ装置がアクティブ状態に遷移した場合が考えられる。さらに、ストレージ装置間の通信経路の異常によりアクティブ状態のストレージ装置とスタンバイ状態のストレージ装置との接続が切断される場合も考えられる。
アクティブ状態のストレージ装置では、スタンバイ状態のストレージ装置との接続が切断された状態において、新たなローカルコピーペアが設定されてそのペア間でのローカルコピーが開始されることがある。このようなローカルコピーの開始後にスタンバイ状態のストレージ装置との接続が回復した場合、スタンバイ状態のストレージ装置には、新たなローカルコピーペアに関する情報が設定されていない。このため、その後にフェイルオーバが行われ、スタンバイ状態のストレージ装置がアクティブ状態に遷移した場合には、アクティブ状態に遷移したストレージ装置においてローカルコピーを引き継ぐことができない。引き継ぎを可能にするためには、アクティブ状態に遷移したストレージ装置に対するローカルコピーペアの設定操作が必要であり、そのためにストレージ装置の運用再開までに時間がかかってしまう。
また、スタンバイ状態のストレージ装置の異常発生により、スタンバイ状態のストレージ装置に設定されていたローカルコピーペアに関する情報が消えてしまうこともあり得る。この場合にも、スタンバイ状態のストレージ装置の動作が再開し、その後にフェイルオーバによってスタンバイ状態のストレージ装置がアクティブ状態に遷移した場合には、アクティブ状態に遷移したストレージ装置においてローカルコピーを引き継ぐことができない。
さらに、アクティブ状態のストレージ装置では、スタンバイ状態のストレージ装置との接続が切断された状態において、既存のローカルコピーペアの設定が削除される場合もある。ローカルコピーペアの設定の削除後に、スタンバイ状態のストレージ装置との接続が回復した場合、スタンバイ状態のストレージ装置には、削除されたローカルコピーペアに対応する情報が設定されたままになってしまう。
そこで、以下の変形例では、スタンバイ状態のストレージ装置との接続が回復したときに、アクティブ状態のストレージ装置は、互いに設定された管理テーブルを照合し、その照合結果に基づいて管理テーブルの追加や削除を自動的に実行する。
図19は、ストレージ装置に設定される情報の例を示す図である。図19では、図11と同様の構成要素には同じ符号を付して示している。
ストレージ装置100a,200aは、次の点で第2の実施の形態のストレージ装置100,200と相違する。ストレージ装置100aの記憶部110にはグループ管理テーブル111aが記憶され、ストレージ装置200aの記憶部210には、グループ管理テーブル211aが記憶される。グループ管理テーブル111a,211aには、第2の実施の形態のグループ管理テーブル111,211に対してコピーステータスの項目が追加されている。
コピーステータスの項目には、NORMALまたはHALTが登録される。NORMALは、他方のストレージ装置と通信可能な状態であることを示す。そのため、NORMALが登録されている場合は、ストレージ装置100a,200aの間でリモートコピーが可能である。HALTは、他方のストレージ装置と通信できない状態であることを示す。例えば、ストレージ装置100a,200aのいずれかが故障した場合や通信異常が発生した場合、コピーステータスの項目にHALTが登録される。
ストレージ装置100a,200aは、アクティブ状態においてコピーステータスがHALTである場合には、ローカルコピーの実行を継続するものの、リモートコピーの実行を停止する。そして、ストレージ装置100a,200aは、コピーステータスがNORMALに変化すると、リモートコピーの実行を開始する。
なお、ローカルコピー管理テーブルは、ローカルコピーペアごとに設定されるものとする。したがって、新たなローカルコピーペアが設定された場合、そのローカルコピーペアに対応するローカルコピー管理テーブルが新たに作成されて記憶される。また、リモートコピー管理テーブルも、対応するローカルコピーペアごとに設定されるものとする。したがって、1つのリモートコピー管理テーブルには、セッションID、コピー元LUNおよびコピー先LUNの登録情報が2組登録される。そして、新たなローカルコピーペアが設定された場合、そのローカルコピーペアの情報をリモートコピーするための新たなリモートコピー管理テーブルが作成されて記憶される。
図20は、他方のストレージ装置との接続が回復した場合の処理例を示すフローチャート図である。図20では例として、ストレージ装置100aがアクティブ状態、ストレージ装置200aがスタンバイ状態であるものとして説明する。なお、図20の処理前は、グループ管理テーブル111a,211aのコピーステータスの項目にHALTが登録されている。HALTの登録は、例えば、通信できないことを検知したコピー制御部130,230によって行われる。
[ステップS101]コピー制御部130は、ストレージ装置200aと再接続したことを検知する。例えば、ストレージ装置200aが停止状態になっていた場合、コピー制御部130は、ストレージ装置200aから動作が復旧した旨の通知を受信することで、再接続を検知する。または、通信異常が発生している場合、コピー制御部130は、ストレージ装置200aに対してポーリングを実行し、通信異常から復旧したことを検知する。
[ステップS102]コピー制御部130は、ストレージ装置200aに記憶されたすべてのローカルコピー管理テーブルを、ストレージ装置200aから取得する。
[ステップS103]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブルと対になるテーブルが、ストレージ装置200aにすべて存在するか否かを判定する。
ローカルコピー管理テーブルと対になるテーブルとは、フェイルオーバによってストレージ装置200aがアクティブ状態に遷移した場合に、そのローカルコピー管理テーブルに基づくローカルコピーを引き継ぐことを可能にするローカルコピー管理テーブルである。これはすなわち、コピービットマップおよびトラッキングビットマップが同期されるローカルコピー管理テーブルである。図19の例では、ローカルコピー管理テーブル112と対になるテーブルは、ローカルコピー管理テーブル212である。
記憶部110に記憶されたローカルコピー管理テーブルと対になるテーブルのうち、少なくとも1つがストレージ装置200aに存在しない場合、処理をステップS104に進める。このケースは、ストレージ装置200aとの接続が切断されている間に、記憶部110に対して新たなローカルコピー管理テーブルおよびリモートコピー管理テーブルが設定され、このローカルコピー管理テーブルに基づくローカルコピーの実行が開始されたケースである。または、ストレージ装置200aとの接続が切断されている間に、記憶部110に記憶されたローカルコピー管理テーブルと対になるテーブルがストレージ装置200aから消えてしまった場合である。
一方、記憶部110に記憶されたローカルコピー管理テーブルと対になるテーブルが、ストレージ装置200aにすべて存在する場合、処理をステップS107に進める。
[ステップS104]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブルの中から、対になるテーブルがストレージ装置200aに存在していないローカルコピー管理テーブルを特定する。コピー制御部130は、特定したローカルコピー管理テーブルと対になるローカルコピー管理テーブルを作成する。また、コピー制御部130は、記憶部110に記憶されたリモートコピー管理テーブルの中から、特定したローカルコピー管理テーブルに対応するリモートコピー管理テーブルを特定する。コピー制御部130は、特定したリモートコピー管理テーブルと対になるリモートコピー管理テーブルを作成する。
特定したリモートコピー管理テーブルと対になるリモートコピー管理テーブルは、特定したリモートコピー管理テーブルとセッションIDが同じで、コピー元LUNとコピー先LUNとが逆になっているリモート管理テーブルとして作成される。なお、図19の例では、ローカルコピー管理テーブル112に対応するリモートコピー管理テーブルは、リモートコピー管理テーブル113であり、リモートコピー管理テーブル113と対になるテーブルはリモートコピー管理テーブル213である。
特定したローカルコピー管理テーブルと対になるローカルコピー管理テーブルに登録されるコピー元LUNとコピー先LUNは、特定したローカルコピー管理テーブルに登録されたコピー元LUNおよびコピー先LUNと、特定したリモートコピー管理テーブルに登録されたコピー元LUNおよびコピー先LUNとの関係に基づいて決定される。なお、作成されるローカルコピー管理テーブルのコピービットマップおよびトラッキングビットマップの欄には、この段階では値が登録されていなくてよい。
コピー制御部130は、作成したローカルコピー管理テーブルとリモートコピー管理テーブルをストレージ装置200aに送信し、それらの登録を指示する。また、作成したローカルコピー管理テーブルに設定されたコピー元LUNとコピー先LUNは新たな論理ボリュームを示すので、コピー制御部130は、これらの新たな論理ボリュームの情報(サイズなど)をストレージ装置200aに送信して、論理ボリュームの設定を指示する。
[ステップS105]コピー制御部130は、ストレージ装置200aに設定されたローカルコピー元の論理ボリュームをリストアする。具体的には、コピー制御部130は、ストレージ装置100aにおいてローカルコピー元として設定された論理ボリュームのデータをストレージ装置200aに送信して、ストレージ装置200aにおいてローカルコピー元として設定された論理ボリュームに記憶させる。
[ステップS106]コピー制御部130は、ストレージ装置200aに設定されたローカルコピー先の論理ボリュームをリストアする。具体的には、コピー制御部130は、ストレージ装置100aにおいてローカルコピー先として設定された論理ボリュームのデータをストレージ装置200aに送信して、ストレージ装置200aにおいてローカルコピー先として設定された論理ボリュームに記憶させる。
[ステップS107]コピー制御部130は、ストレージ装置200aに記憶されたローカルコピー管理テーブルの中に、対になるローカルコピー管理テーブルが記憶部110に存在しないテーブルがあるかを判定する。この条件に合致するテーブルが存在する場合、処理をステップS108に進める。このケースは、ストレージ装置200aとの接続が切断されている間に、記憶部110に設定されていた少なくとも1つのローカルコピー管理テーブルと、これに対応するリモートコピー管理テーブルとが削除されたケースである。一方、上記の条件に合致するテーブルが存在しない場合、処理をステップS109に進める。
[ステップS108]コピー制御部130は、ストレージ装置200aに記憶されたローカルコピー管理テーブルのうち、対になるローカルコピー管理テーブルが記憶部110に存在しないテーブルを削除するよう、ストレージ装置200aに指示する。
[ステップS109]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブル内のコピービットマップをストレージ装置200aに送信して、ストレージ装置200aに記憶された対応するローカルコピー管理テーブル内のコピービットマップの更新を指示する。
[ステップS110]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブル内のトラッキングビットマップをストレージ装置200aに送信して、ストレージ装置200aに記憶された対応するローカルコピー管理テーブル内のトラッキングビットマップの更新を指示する。
[ステップS111]コピー制御部130は、記憶部110に記憶されたグループ管理テーブル111aのコピーステータスを、HALTからNORMALに更新する。このとき、ローカルコピー元やローカルコピー先の論理ボリュームの変更がある場合には、コピー制御部130は、その変更内容をグループ管理テーブル111aのLUNの項目に反映させる。
また、コピー制御部130は、ストレージ装置200aに記憶されたグループ管理テーブル211aのコピーステータスを、HALTからNORMALに更新するよう、ストレージ装置200aに指示する。このとき、ローカルコピー元やローカルコピー先の論理ボリュームの変更がある場合には、コピー制御部130は、その変更内容をグループ管理テーブル211aのLUNの項目に反映させるよう、ストレージ装置200aに指示する。
このように、図20の処理によれば、スタンバイ状態のストレージ装置との接続が回復したとき、アクティブ状態のストレージ装置の制御により、ストレージ装置間でローカルコピー管理テーブルおよびリモートコピー管理テーブルの整合がとられるようにテーブル設定が行われる。リモートコピー管理テーブルの整合がとられることで、接続の回復後に、管理者による設定操作を必要とせずに、リモートコピーを開始できる。また、ローカルコピー管理テーブルの整合がとられることで、その後にフェイルオーバが行われた場合に、管理者による設定操作を必要とせずに、アクティブ状態に遷移したストレージ装置がローカルコピーを引き継ぐことができる。
図21は、接続が回復した場合の処理の一例を示すシーケンス図である。図21では例として、ストレージ装置100aがアクティブ状態のときに、ストレージ装置200aが停止して接続が切断され、接続が切断されている間にストレージ装置100aに新たなローカルコピーペアが設定された場合を想定する。
[ステップS121]ストレージ装置200aは、自装置の動作が復旧したことをストレージ装置100aに通知する。
[ステップS122]ストレージ装置100aのコピー制御部130は、ローカルコピー管理テーブルおよびリモートコピー管理テーブルの送信をストレージ装置200aに要求する。
[ステップS123]ストレージ装置200aのコピー制御部230は、記憶部210に記憶されたローカルコピー管理テーブルおよびリモートコピー管理テーブルをストレージ装置100aに送信する。
[ステップS124]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブルと対になるテーブルの一部が、ストレージ装置200aに記憶されていないと判定する。
[ステップS125]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブルの中から、対になるテーブルがストレージ装置200aに記憶されていないローカルコピー管理テーブルを特定する。コピー制御部130は、特定したローカルコピー管理テーブルと対になるローカルコピー管理テーブルを作成する。また、コピー制御部130は、記憶部110に記憶されたリモートコピー管理テーブルの中から、特定したローカルコピー管理テーブルに対応するリモートコピー管理テーブルを特定する。コピー制御部130は、特定したリモートコピー管理テーブルと対になるリモートコピー管理テーブルを作成する。コピー制御部130は、作成したローカルコピー管理テーブルおよびリモートコピー管理テーブルを、ストレージ装置200aに送信する。
[ステップS126]コピー制御部230は、ローカルコピー管理テーブルおよびリモートコピー管理テーブルを受信して、記憶部210に設定する。
[ステップS127]コピー制御部130は、ストレージ装置200aに設定されたローカルコピー元の論理ボリュームをリストアする。
[ステップS128]コピー制御部130は、ストレージ装置200aに設定されたローカルコピー先の論理ボリュームをリストアする。
[ステップS129]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブル内のコピービットマップをストレージ装置200aに送信して、コピービットマップの更新を指示する。
[ステップS130]コピー制御部230は、受信したコピービットマップによって、記憶部210に記憶されたローカルコピー管理テーブル内のコピービットマップを更新する。
[ステップS131]コピー制御部130は、記憶部110に記憶されたローカルコピー管理テーブル内のトラッキングビットマップをストレージ装置200aに送信して、トラッキングビットマップの更新を指示する。
[ステップS132]コピー制御部230は、受信したトラッキングビットマップによって、記憶部210に記憶されたローカルコピー管理テーブル内のトラッキングビットマップを更新する。
[ステップS133]コピー制御部130は、記憶部110に記憶されたグループ管理テーブル111aのコピーステータスを、HALTからNORMALに更新する。
[ステップS134]コピー制御部130は、グループ管理テーブル211aのコピーステータスをHALTからNORMALに更新するよう、ストレージ装置200aに指示する。また、コピー制御部130は、グループ管理テーブル211aのLUNの項目に対する情報の追加を指示する。追加される情報とは、ステップS125で送信されたローカルコピー管理テーブルのコピー元LUNおよびコピー先LUNの各項目に登録されたLUNである。
[ステップS135]コピー制御部230は、ストレージ装置100aからの指示に応じてグループ管理テーブル211aを更新する。
なお、ステップS127,S128の処理順、および、ステップS129,S131の処理順は、それぞれ逆にすることもできる。
なお、上記の各実施の形態に示した装置(例えば、ストレージ装置1,2、CM101,201、業務サーバ300、管理サーバ400)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc−Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MOなどがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。