〔A〕関連例
図1は、関連例としてのストレージシステム600の通常運用処理を説明する図である。
ストレージシステム600は、業務サーバ6,2つのストレージ装置7,監視サーバ8及び2つのスイッチ9を備える。
業務サーバ6は、2つのHost Bus Adapter(HBA)を介して、2つのストレージ装置7にそれぞれ接続される。業務サーバ6は、2つのストレージ装置7に対してIOを発行する。
スイッチ9は、業務サーバ6とストレージ装置7との間の通信、及び、2つのストレージ装置7の間の通信を中継する。
ストレージ装置7は、ストレージ#A又はストレージ#Bとも表記される。ストレージ#Aは、Vol#A及び#Bを含むプライマリのボリュームグループを有する。ストレージ#Bは、Vol#A’及び#B’を含むセカンダリのボリュームグループを有する。
ストレージ装置7は、Communication Adapter(CA)を介してスイッチ9に接続されて、業務サーバ6との通信を行なう。ストレージ装置7は、Remote Adapter(RA)を介してスイッチ9に接続されて、他系のストレージ装置7と通信を行なう。
監視サーバ8は、ストレージ装置7の状態を監視する。
図1に示すようなストレージシステム600の通常運用の際には、IOを受け付けるストレージ#AのボリュームグループがActiveに設定され、IOを受け付けていないストレージ#BのボリュームグループがStandbyに設定されている。すなわち、符号A1に示すように、セカンダリのストレージ#BのCAは、リンクダウン状態となっている。
符号A2に示すように、Active側のストレージ#Aで受けたライトIOが筐体間コピー経路でミラーされ、筐体間のデータ同期が実施される。
図2は、図1に示したストレージシステム600におけるストレージ装置7の故障の際の処理を説明する図である。
符号A3に示すようにActiveのボリューム側でストレージ装置7が故障や停電等によりダウンしてアウセスできなくなった場合には、符号A4に示すようにStandbyでIOアクセスを受け付けていなかったストレージ装置7のCAがリンクアップされる。
これにより、スイッチ9に2つのストレージ装置7のペアボリュームが同じLogical Unit Number Identifier(LUNID)に見えた場合に、対象ボリュームに対してアクセス不可となるDuplicate WWNを回避することができる。
図1及び図2に示したようなActive-Standby制御では、通常時はStandby側のポートは休止しているため、フェールオーバの際にポートがリンクアップしない可能性がある。また、リンクアップが成功した場合においても、特にiSCSIではログイン等に時間がかかり、業務が中断してしまうおそれがある。そこで、2つのストレージ装置7のポートをリンクアップしたままの状態にしておくことが想定される。
図3は、関連例としてのストレージシステム600におけるストレージクラスタのActive-Standby制御における双方向のミラー処理を説明する図である。
図3に示すストレージシステム600では、2つの業務サーバ6(別言すれば、業務サーバA及び業務サーバB)上で動作するVirtual Machine ware(VMware)に対して利用者がそれぞれIOを発行する。
ストレージ#AはプライマリのボリュームグループA及びセカンダリのボリュームBを備え、ストレージ#BはセカンダリのボリュームグループA及びプライマリのボリュームBを備える。
ストレージ#AのプライマリのボリュームグループAにおけるVol#Aは、業務サーバAからのIOを受け付け、ストレージ#BのセカンダリのボリュームグループAにおけるVol#A’に対してミラー処理を行なう。また、ストレージ#BのプライマリのボリュームグループBにおけるVol#Cは、業務サーバBからのIOを受け付け、ストレージ#AのセカンダリのボリュームグループBAにおけるVol#C’に対してミラー処理を行なう。
このようなストレージシステム600では、プライマリのボリュームグループでエラーが発生した場合に、セカンダリのボリュームグループに対してリンクアップ行なわれる。そして、符号B1に示すように、フェールオーバの際のリンクアップのためのCAが必要となり、ストレージ装置7におけるCAの数が図1及び図2に示した場合と比較して倍増する。
図4は、関連例としてのストレージシステム600におけるストレージクラスタのActive- Active制御における接続形態の制限例を説明する図である。
図4に示す例では、ストレージ#A及び#Bの両方のポートがリンクアップされたままで、どちらのストレージ装置7でライトIOを受け付けても双方向で同期コピーが実施される。これにより、符号B2に示すように、ストレージ#BのセカンダリのボリュームグループAにおいて、リンクアップの失敗の心配が無く、ログインが早く完了すると共に、CAのポート数が最低限で済む。
しかしながら、業務サーバA及びストレージ#AがサイトAに位置し、業務サーバB及びストレージ#BがサイトBに位置するような場合には、サイトAの業務サーバAがサイトBのストレージ#Bに常時アクセスすることになる。これにより、符号B3に示すように、遠隔のアクセスルートによって性能劣化が発生する。
図5は、図4に示したストレージシステム600におけるストレージ装置7の故障例を説明する図である。
図5に示すように、遠隔のアクセスルートによる性能劣化を避けるため、サイトAの業務サーバAはサイトAのストレージ#Aに限って接続し、サイトBの業務サーバBはサイトBの業務サーバ6に限って接続する接続形態が想定される。
しかしながら、このような接続形態では、符号B4に示すようにストレージ#Aが故障等によってダウンした場合には、符号B5に示すように業務サーバAはストレージ#Bへのアクセスパスがないため業務継続ができない。
図6は、図4に示したストレージシステム600における同期エラーの第1の例を説明する図である。
図6に示すように、ストレージクラスタのActive-Active制御方式の場合には、両方のストレージ#A及び#BのボリュームグループAにおいて同領域へデータが同時に受け付けられることがある。このような場合には、符号B6に示すように、ミラー処理がストレージ#A及び#Bの筐体間ですれ違い、データが食い違う可能性がある。
図7は、図4に示したストレージシステム600における同期エラーの第2の例を説明する図である。
図7に示すように、ストレージクラスタのActive-Active制御方式の場合には、ストレージ#A及び#Bの両側へのリュームアクセスされていた場合に、符号B7に示すように、データを受け付けた後にコピー経路切れが発生してしまうことが想定される。このような場合には、符号B8に示すように、ストレージ#A及び#Bの間でデータが食い違ってしまう。
〔B〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔B-1〕構成例
図8は、実施形態の一例におけるストレージシステム100におけるIOアクセス処理を説明する図である。
ストレージシステム100は、2つの業務サーバ1、2つのストレージ装置2a,2b、監視サーバ3及び2つのスイッチ4を備える。
業務サーバ1(別言すれば、業務サーバA及び業務サーバB)は、2つのHBAを介して、2つのストレージ装置7にそれぞれ接続される。業務サーバA及び業務サーバB上で動作するVMwareに対して、利用者がそれぞれIOを発行する。
スイッチ4は、業務サーバ1とストレージ装置2との間の通信、及び、2つのストレージ装置2の間の通信を中継する。
ストレージ装置2aはストレージ#Aとも表記され、ストレージ装置2bはストレージ#Bとも表記される。ストレージ#Aは、Vol#A及び#C’を含むプライマリのボリュームグループを有する。ストレージ#Bは、Vol#A’及び#Cを含むセカンダリのボリュームグループを有する。
ストレージ装置2は、CA23(図11を用いて後述)を介してスイッチ4に接続されて、業務サーバ1との通信を行なう。ストレージ装置2は、RA24(図11を用いて後述)を介してスイッチ4に接続されて、他系のストレージ装置2と通信を行なう。
ストレージ#AはプライマリのボリュームグループA及びセカンダリのボリュームBを備え、ストレージ#BはセカンダリのボリュームグループA及びプライマリのボリュームBを備える。
ストレージ#AのプライマリのボリュームグループAにおけるVol#Aは、業務サーバAからのIOを受け付け、ストレージ#BのセカンダリのボリュームグループAにおけるVol#A’に対してミラー処理を行なう。また、ストレージ#BのプライマリのボリュームグループBにおけるVol#Cは、業務サーバBからのIOを受け付け、ストレージ#AのセカンダリのボリュームグループBにおけるVol#C’に対してミラー処理を行なう。
監視サーバ3は、ストレージ装置2の状態を監視する。
業務サーバA及びストレージ#AはサイトAに位置し、業務サーバB及びストレージ#BはサイトBに位置する。
サイトAのストレージ#Aは、業務サーバAからはプライマリ(別言すれば、Optimize)として認識され、業務サーバBからはセカンダリ(別言すれば、non-Optimize)として認識される。一方、サイトBのストレージ#Bは、業務サーバAからはセカンダリ(別言すれば、non-Optimize)として認識され、業務サーバBからはプライマリ(別言すれば、Optimize)として認識される。
これにより、符号C1に示すように、業務サーバ1からは近いサイト側のストレージ装置2へのIOアクセスが優先される。
図9は、図8に示したストレージシステム100における同時アクセス処理を説明する図である。
セカンダリ(別言すれば、non-Optimize)側のストレージ装置#Bで受け付けたライトIOについては、符号C2に示すように、ストレージ装置#A,#Bの筐体間通信にてプライマリ側のストレージ装置#Aに対象領域のライトIOアクセスの排他を獲得後、両筐体でミラー処理が行なわれる。
プライマリ側のストレージ#AでライトIOのアクセス中であった場合は、セカンダリ側のストレージ装置#Bで受け付けられたライトIOは、プライマリ側のストレージ装置#AでライトIOの完了まで待たされる。一方、プライマリ側のストレージ装置#AでライトIOのアクセス中でない場合には、排他完了後はプライマリ側のストレージ装置#Aへの同領域へのライトIOは、セカンダリのストレージ装置#BにおけるライトIOの完了まで待たされる。
これにより、ストレージ#A及び#Bの両側で同領域へデータを同時に受け付けてしまい、筐体間の書き込みのすれ違いで、筐体間のデータの食い違いが発生するという事態を防ぐことができる。
図10は、図9に示した同時アクセス処理の際のコピー経路異常を説明する図である。
ストレージ装置2a,2bの各ボリュームグループでは、プライマリ(別言すれば、Optimize)及びセカンダリ(別言すれば、non-Optimize)の状態とは別に、Active及びnon-Activeの状態が保持されてよい。符号C3に示すように、ストレージ#A及び#Bの間のコピー経路が切れた場合には、プライマリ(別言すれば、Optimize)側及びセカンダリ(別言すれば、non-Optimize)側の両方がIO抑止状態に遷移させられる。
符号C4に示すように、プライマリのストレージ#Aは、監視サーバ3経由でセカンダリのストレージ#Bとネゴシエーションする。セカンダリのボリュームグループへアクセス可能な場合には、プライマリのボリュームグループがActiveに設定され、セカンダリのボリュームグループがnon-Activeに設定される。以降、セカンダリ側のボリュームグループへのアクセスが不可とされ、IO抑止状態が解除される。一方、セカンダリ側のボリュームグループへアクセス不可の場合には、プライマリのボリュームグループがnon-Activeに遷移させられる。
セカンダリ側のストレージ#Bは、監視サーバ3経由でプライマリ側のストレージ#Aからのネゴシエーションを受け付けられなかった場合には、セカンダリのボリュームグループをActiveに遷移させて、IO抑止状態が解除される。セカンダリのボリュームグループへアクセス不可な場合は、プライマリのボリュームグループがnon-Activeに遷移させられる。
これにより、ストレージ#A,#B間のコピー経路が切れた場合、且つ、ストレージ#A及び#Bの両側へライトIOが発生した場合でも、片側のストレージ#A又は#Bに限ったアクセスとなる。そして、その後にストレージ#A又は#Bがダウンしてもデータの食い違いは発生しない。
図11は、図8~図10に示したストレージ装置2a,2bのハードウェア構成例を模式的に示すブロック図である。
ストレージ装置2a,2bは、複数のController Module(CM)20及びDisk Enclosure(DE)26を備える。
DE26は、冗長化のために各CM20のぞれぞれとアクセスパスで通信可能に接続されており、複数のドライブ27を備える。ドライブ27は、データを読み書き可能に記憶する装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD),Storage Class Memory(SCM)が用いられてよい。プライマリのストレージ装置2aのドライブ27は業務ボリュームのデータを格納し、セカンダリのストレージ装置2bのドライブ27はバックアップボリュームのデータを格納する。
CM20は、Central Processing Unit(CPU)21,メモリ22,CA23,RA24及びDevice Adaptor(DA)25を備える。
メモリ22は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。RAMは、例えばDynamic RAM(DRAM)であってよい。メモリ22のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ22のソフトウェアプログラムは、CPU21に適宜に読み込まれて実行されてよい。また、メモリ22のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。メモリ22は、一次バッファやアドレス情報等を保持する。
CA23は、業務サーバ1をストレージ装置2a,2bと通信可能に接続するインタフェースである。
RA24は、ストレージ装置2a,2b同士を接続するためのインタフェースであり、データ転送やアドレス情報の転送を実施する。
DA25は、CM20とDE26とを通信可能に接続するためのインタフェースであり、例えばFiber Channel(FC)アダプタである。
CPU21は、例示的に、種々の制御や演算を行なう処理装置であり、メモリ22に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
なお、種々の機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではCPU21)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
種々の機能を実現する際には、内部記憶装置(本実施形態ではメモリ22)に格納されたプログラムがコンピュータ(本実施形態ではCPU21)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
図12は、図8~図10に示したストレージシステム100のソフトウェア構成例を模式的に示すブロック図である。
プライマリのストレージ装置2aのCPU21は、コピー経路閉塞監視処理部211,プライマリフェールオーバ処理部212,プライマリ監視サーバ通信処理部213及びIO処理部215として機能する。また、プライマリのストレージ装置2aのメモリ22は、アクセスパス設定テーブル214に関する情報を保持する。
コピー経路閉塞監視処理部211は、セカンダリのストレージ装置2bとの間のコピー経路の閉塞を監視する。コピー経路閉塞監視処理部211は、第1のストレージ装置2bと第2のストレージ装置2aとの間におけるコピー同期処理のための経路ついての異常を検出すると、業務サーバ1からのアクセスの受付を抑止する。
プライマリフェールオーバ処理部212は、コピー経路閉塞監視処理部211によるコピー経路の閉塞が検出されると、フェールオーバ処理を実行する。
プライマリ監視サーバ通信処理部213は、監視サーバ3との通信を実行する。
アクセスパス設定テーブル214は、業務サーバ1と各ストレージ装置2a,2bとの間のアクセスパスの構成を管理する。
IO処理部215は、業務サーバ1との間の通信を実行する。IO処理部215は、優先権が付与されていない第1のストレージ装置2bにおいて受け付けられたアクセスについては、優先権が付与されている第2のストレージ装置2aにおける対象領域の書き込みアクセスの排他権を獲得する排他獲得部の一例として機能する。IO処理部225は、排他権の獲得後に、第1のストレージ装置2bから第2のストレージ装置2aへのデータのコピー同期処理を実行する同期処理部の一例として機能する。
セカンダリのストレージ装置2bのCPU21は、コピー経路閉塞監視処理部221,セカンダリフェールオーバ処理部222,セカンダリ監視サーバ通信処理部223,IO処理部225,監視サーバ通信監視処理部226,コピー経路復旧監視部227及びネゴシエーション処理部228として機能する。また、セカンダリのストレージ装置2bのメモリ22は、アクセスパス設定テーブル224に関する情報を保持する。
コピー経路閉塞監視処理部221は、プライマリのストレージ装置2aとの間のコピー経路の閉塞を監視する。コピー経路閉塞監視処理部221は、第1のストレージ装置2bと第2のストレージ装置2aとの間におけるコピー同期処理のための経路ついての異常を検出すると、業務サーバ1からのアクセスの受付を抑止する抑止処理部の一例として機能する。
セカンダリフェールオーバ処理部222は、コピー経路閉塞監視処理部221によるコピー経路の閉塞が検出されると、フェールオーバ処理を実行する。
セカンダリ監視サーバ通信処理部223は、監視サーバ3との通信を実行する。
アクセスパス設定テーブル224は、業務サーバ1と各ストレージ装置2a,2bとの間のアクセスパスの構成を管理する。
IO処理部225は、業務サーバ1との間の通信を実行する。IO処理部225は、優先権が付与されていない第1のストレージ装置2bにおいて受け付けられたアクセスについては、優先権が付与されている第2のストレージ装置2aにおける対象領域の書き込みアクセスの排他権を獲得する排他獲得部の一例として機能する。IO処理部225は、排他権の獲得後に、第1のストレージ装置2bから第2のストレージ装置2aへのデータのコピー同期処理を実行する同期処理部の一例として機能する。
監視サーバ通信監視処理部226は、セカンダリのストレージ装置2bと監視サーバ3との間の通信を監視する。
コピー経路復旧監視部227は、コピー経路の復旧を監視する。コピー経路復旧監視部227は、経路の復旧を検出すると、プライマリとして機能するストレージ装置2aとセカンダリとして機能するストレージ装置2bとのいずれにも優先権が付与されていない場合に、アクセスの受付の抑止を解除する抑止解除部の一例として機能する。また、コピー経路復旧監視部227は、経路の復旧を検出すると、プライマリとして機能するストレージ装置2aとセカンダリとして機能するストレージ装置2bとの間のデータの差分コピーが完了している場合に、アクセスの受付の抑止を解除する抑止解除部の一例としても機能する。
ネゴシエーション処理部228は、コピー経路復旧監視部227によるコピー経路の復旧の検出によって、プライマリのストレージ装置2aとセカンダリのストレージ装置2bとの間のコピー経路のネゴシエーションを実行する。
監視サーバ3の不図示のCPUは、ストレージ送受信処理部31として機能する。
ストレージ送受信処理部31は、ストレージ装置2a,2bとの間でデータの送受信を実行する。
図13は、TFOグループテーブル及び監視サーバ通信インタフェーステーブルのパラメタを説明するテーブルである。
TFOグループテーブルは、パラメタとして、Primary/Secondary,Optimize/Non-Optimize,State,IO抑止、Phase,等価及びコピー経路状態を含む。
Primary/Secondaryは、値として、配下のボリュームがデフォルトでOptimizeであることを示すPrimarilyと、配下のボリュームがデフォルトでNon-Optimizeあることを示すSecondaryとを含む。
Optimize/Non-Optimizeは、値として、配下のボリュームがIOを優先的に受け付ける状態を示すOptimizeと、配下のボリュームがIOを優先的に受け付ける状態でないことを示すNon-Optimizeとを含む。
Stateは、値として、配下のボリュームがIOを受け付けられる状態を示すActiveと、配下のボリュームがIOを受け付けない状態を示すNon-Activeとを含む。
IO抑止は、値として、配下のボリュームがリトライ期待のセンスを業務サーバ1に応答する状態を示すオンと、配下のボリュームがリトライ期待のセンスを業務サーバ1に応答する状態にないことを示すオフとを含む。
Phaseは、値として、NormalとMonitoring Server DisconnectedとDisconnectedとを含む。Normalは、TFOグループの同期ができている状態であり、フェールオーバ可能であることを示す。Monitoring Server Disconnectedは、TFOグループの監視サーバ経路の同期ができない状態であり、フェールオーバ不可であることを示す。Disconnectedは、TFOグループのコピー経路の同期ができない状態であり、フェールオーバ不可であることを示す。
等価は、値として、配下のボリュームの差分コピーが完了している状態を示す等価と、配下のボリュームの差分コピーが完了していない状態を示す等価でないと、を含む。
コピー経路状態は、配下のボリュームがデータをコピーできる状態を示す正常と、配下のボリュームがデータをコピーできない状態を示す異常を含む。
監視サーバ通信インタフェーステーブルは、パラメタとして、IO抑止通知とIO抑止応答とを含む。
IO抑止通知は、値として、セカンダリのストレージ装置2bをIO抑止にする通知がオンであることを示すオンと、セカンダリのストレージ装置2bをIO抑止にする通知がオフであることを示すオフとを含む。
IO抑止応答は、セカンダリのストレージ装置2bをIO抑止にした応答がオンであることを示すオンと、セカンダリのストレージ装置2bをIO抑止にした応答がオフであることを示すオフとを含む。
〔B-2〕動作例
図12に示したプライマリフェールオーバ処理部212における処理を、図14に示すフローチャート(ステップS1~S6)に従って説明する。
プライマリフェールオーバ処理部212は、プライマリのストレージ装置2aのコピー経路閉塞監視処理部211のコピー経路の閉塞の検出によって呼び出されると、プライマリのストレージ装置2aと監視サーバ3との間の経路異常があるかを判定する(ステップS1)。
プライマリのストレージ装置2aと監視サーバ3との間の経路異常がない場合には(ステップS1のNoルート参照)、プライマリフェールオーバ処理部212は、業務サーバ1からのIO抑止中であるかを判定する(ステップS2)。
IO抑止中である場合には(ステップS2のYesルート参照)、処理はステップS3へ進む。
一方、IO抑止中でない場合には(ステップS2のNoルート参照)、処理はステップS6へ進む。
ステップS1において、プライマリのストレージ装置2aと監視サーバ3との間の経路異常がある場合には(ステップS1のYESルート参照)、プライマリフェールオーバ処理部212は、TFOグループテーブルのStateをNon-Activeに遷移させる(ステップS3)。
プライマリフェールオーバ処理部212は、業務サーバ1からのIOを抑止する(ステップS4)。
プライマリフェールオーバ処理部212は、プライマリのストレージ装置2aをNon-Optimizeに遷移させる(ステップS5)、
プライマリフェールオーバ処理部212は、TFOグループのPhaseをDisconnectedにする(ステップS6)。そして、プライマリフェールオーバ処理部212における処理は、終了する。
次に、図12に示したセカンダリフェールオーバ処理部222における処理を、図15に示すフローチャート(ステップS11~S16)に従って説明する。
セカンダリフェールオーバ処理部222は、セカンダリのストレージ装置2bにおけるコピー経路閉塞監視処理部221におけるコピー経路の閉塞検知によって呼び出され、TFOグループテーブルのPhaseにおける接続状態はNormalであるかを判定する(ステップS11)。
接続形態がNormalでない場合には(ステップS11のNoルート参照)、セカンダリフェールオーバ処理部222における処理は終了する。
接続状態がNormalである場合には(ステップS11のYesルート参照)、セカンダリフェールオーバ処理部222は、TFOグループテーブルのPhaseをDisconnectedに設定する(ステップS12)。
セカンダリフェールオーバ処理部222は、プライマリのストレージ装置2aと監視サーバ3との間の経路が正常であるかを判定する(ステップS13)。
プライマリのストレージ装置2aと監視サーバ3との間の経路が正常でない場合には(ステップS13のNoルート参照)、セカンダリフェールオーバ処理部222における処理は終了する。
一方、プライマリのストレージ装置2aと監視サーバ3との間の経路が正常である場合には(ステップS13のYESルート参照)、セカンダリフェールオーバ処理部222は、セカンダリのストレージ装置2bと監視サーバ3との間の経路が正常であるかを判定する(ステップS14)。
セカンダリのストレージ装置2bと監視サーバ3との間の経路が正常でない場合には(ステップS14のNoルート参照)、セカンダリフェールオーバ処理部222における処理は終了する。
一方、セカンダリのストレージ装置2bと監視サーバ3との間の経路が正常である場合には(ステップS14のYESルート参照)、セカンダリフェールオーバ処理部222は、TFOグループテーブルにおいてセカンダリのストレージ装置2をOptimizeに遷移させる(ステップS15)。
セカンダリフェールオーバ処理部222は、TFOグループテーブルのStateをActiveに設定する(ステップS16)。そして、セカンダリフェールオーバ処理部222における処理は終了する。
次に、図12に示したプライマリのストレージ装置2aのコピー経路閉塞監視処理部211における処理を、図16に示すフローチャート(ステップS21~S25)に従って説明する。
プライマリのストレージ装置2aにおけるコピー経路閉塞監視処理部211は、コピー経路において異常があるかを判定する(ステップS21)。
コピー経路において異常がない場合には(ステップS21のNoルート参照)、ステップS21における判定を繰り返す。
一方、コピー経路において異常がある場合には(ステップS21のYESルート参照)、コピー経路閉塞監視処理部211は、TFOグループテーブルにおいてプライマリのストレージ装置2aがOptimizeに設定されているかを判定する(ステップS22)。
プライマリのストレージ装置2aがOptimizeに設定されていない場合には(ステップS22のNoルート参照)、処理はステップS21へ戻る。
一方、プライマリのストレージ装置2aがOptimizeに設定されている場合には(ステップS22のYesルート参照)、コピー経路閉塞監視処理部211は、TFOグループテーブルのPhaseの値がNormalであるかを判定する(ステップS23)。
TFOグループテーブルのPhaseの値がNormalでない場合には(ステップS23のNoルート参照)、処理はステップS21へ戻る。
一方、TFOグループテーブルのPhaseの値がNormalである場合には(ステップS23のYesルート参照)、コピー経路閉塞監視処理部211は、プライマリのストレージ装置2aをIO抑止状態に設定する。そして、コピー経路閉塞監視処理部211は、プライマリのストレージ装置2aを、数ミリ秒毎にリトライを繰り返すIOリトライセンス応答状態に遷移させる(ステップS24)。
コピー経路閉塞監視処理部211は、プライマリのストレージ装置2aにおけるIO抑止監視を行なう(ステップS25)。そして、プライマリのストレージ装置2aのコピー経路閉塞監視処理部211における処理は終了する。
次に、図12に示したセカンダリのストレージ装置2bのコピー経路閉塞監視処理部221における処理を、図17に示すフローチャート(ステップS31~S35)に従って説明する。
セカンダリのストレージ装置2bのコピー経路閉塞監視処理部211は、コピー経路において異常があるかを判定する(ステップS31)。
コピー経路において異常がない場合には(ステップS31のNoルート参照)、ステップS31における判定を繰り返し行なう。
一方、コピー経路において異常がある場合には(ステップS31のYesルート参照)、コピー経路閉塞監視処理部221は、TFOグループテーブルにおいてプライマリのストレージ装置2aがNon-Optimize且つNormalに設定されているかを判定する(ステップS32)。
プライマリのストレージ装置2aがNon-Optimizeに設定されていないかNormalに設定されていない場合には(ステップS32のNoルート参照)、処理はステップS31へ戻る。
一方、プライマリのストレージ装置2aがNon-Optimize且つNormalに設定されている場合には(ステップS32のYesルート参照)、コピー経路閉塞監視処理部221は、プライマリのストレージ装置2bをIO抑止状態に設定する。そして、コピー経路閉塞監視処理部221は、プライマリのストレージ装置2bを、数ミリ秒毎にリトライを繰り返すIOリトライセンス応答状態に遷移させる(ステップS33)。
コピー経路閉塞監視処理部221は、TFOグループテーブルStateをNon-Activeに設定する(ステップS34)。
コピー経路閉塞監視処理部221は、セカンダリのストレージ装置2bをIO抑止させる(ステップS35)。そして、セカンダリのストレージ装置2bのコピー経路閉塞監視処理部221における処理は終了する。
次に、図12に示したプライマリ監視サーバ通信処理部213における処理を、図18に示すフローチャート(ステップS41~S47)に従って説明する。
プライマリ監視サーバ通信処理部213は、セカンダリのストレージ装置2bからIO抑止応答を受信したかを判定する(ステップS41)。
IO抑止応答を受信していない場合には(ステップS41のNoルート参照)、処理はステップS43へ進む。
一方、IO抑止応答を受信した場合には(ステップS41のYesルート参照)、プライマリ監視サーバ通信処理部213は、プライマリのストレージ装置2aにおけるIO抑止を解除する(ステップS42)。
プライマリ監視サーバ通信処理部213は、監視サーバインタフェーステーブルにおいてIO抑止通知がオンの状態に設定されているかを判定する(ステップS43)。
IO抑止通知がオンの状態に設定されていない場合には(ステップS43のNoルート参照)、処理はステップS45へ進む。
一方、IO抑止通知がオンの状態に設定されている場合には(ステップS43のYesルート参照)、プライマリ監視サーバ通信処理部213は、監視サーバインタフェーステーブルにおけるIO抑止通知ビットをオンに設定する(ステップS44)。
プライマリ監視サーバ通信処理部213は、監視サーバ3へ通信応答を行なう(ステップS45)。
プライマリ監視サーバ通信処理部213は、監視サーバ3への経路がすべて正常であるかを判定する(ステップS46)。
プライマリ監視サーバ通信処理部213は、監視サーバ3への経路で正常でないものがある場合には(ステップS46のNoルート参照)、プライマリ監視サーバ通信処理部213における処理は終了する。
一方、監視サーバ3への経路がすべて正常である場合には(ステップS46のYesルート参照)、プライマリ監視サーバ通信処理部213は、TFOグループテーブルのStateをNormalに設定する(ステップS47)。そして、プライマリ監視サーバ通信処理部213における処理は終了する。
次に、図12に示した監視サーバ3のストレージ送受信処理部31における処理を、図19に示すフローチャート(ステップS51~S53)に従って説明する。
ストレージ送受信処理部31は、プライマリのストレージ装置2a及びセカンダリのストレージ装置2bからの受信情報に基づき、送信情報を設定する(ステップS51)。
ストレージ送受信処理部31は、設定した送信情報をプライマリのストレージ装置2a及びセカンダリのストレージ装置2bへ送信する(ステップS52)。
ストレージ送受信処理部31は、受信タイマの監視をリセットして起動する(ステップS53)。そして、監視サーバ3のストレージ送受信処理部31における処理は終了する。
次に、図12に示したセカンダリ監視サーバ通信処理部223における処理を、図20に示すフローチャート(ステップS61~S66)に従って説明する。
セカンダリ監視サーバ通信処理部223は、監視サーバ3からIO抑止通知を受信し、且つ、TFOグループテーブルのPhaseがNormalであるかを判定する(ステップS61)。
IO抑止通知を受信していないか、PhaseがNormalでない場合には(ステップS61のNoルート参照)、処理はステップS64へ進む。
一方、IO抑止通知を受信し、且つ、PhaseがNormalである場合には(ステップS61のYesルート参照)、セカンダリ監視サーバ通信処理部223は、TFOグループテーブルのPhaseをDisconnectedに設定する(ステップS62)。
セカンダリ監視サーバ通信処理部223は、監視サーバ通信インタフェーステーブルにおけるIO抑止応答ビットをオンに設定する(ステップS63)。
セカンダリ監視サーバ通信処理部223は、監視サーバ3への経路がすべて正常であるかを判定する(ステップS64)。
監視サーバ3への経路で正常でないものがある場合には(ステップS64のNoルート参照)、セカンダリ監視サーバ通信処理部223における処理は終了する。
一方、監視サーバ3への経路がすべて正常である場合には(ステップS64のYesルート参照)、セカンダリ監視サーバ通信処理部223は、TFOグループテーブルのPhaseをNormalに設定する(ステップS65)。
セカンダリ監視サーバ通信処理部223は、監視サーバ3との通信開始を開始する(ステップS66)。そして、セカンダリ監視サーバ通信処理部223における処理は終了する。
次に、図12に示したプライマリのストレージ装置2aのアクセスパス設定テーブル214に対する設定処理を、図21に示すフローチャート(ステップS71~S73)に従って説明する。図22は、図12に示したプライマリのストレージ装置2aのアクセスパス設定テーブル214の一例である。
プライマリのストレージ装置2aのIO処理部215は、TFOグループテーブルのPhaseをDisconnectedに設定する(ステップS71)。
IO処理部215は、TFOグループテーブルにおいて、Non-Optimizeに設定し、State をnon-Activeに設定する(ステップS72)。図22示す例においては、業務サーバAに接続されるプライマリのTFOグループAはOptimizeの設定が維持される一方、業務サーバBに接続されるセカンダリのTFOグループBはNon-Optimizeに設定される。
IO処理部215は、業務サーバ1からのIOを抑止する(ステップS73)。そして、プライマリのストレージ装置2aのアクセスパス設定テーブル214に対する設定処理は終了する。
次に、図12に示したセカンダリのストレージ装置2bのアクセスパス設定テーブル224に対する設定処理を、図23に示すフローチャート(ステップS81~S88)に従って説明する。図24は、図12に示したセカンダリのストレージ装置2bのアクセスパス設定テーブル214の一例である。
セカンダリのストレージ装置2bのIO処理部225は、TFOグループテーブルのPhaseをDisconnectedに設定する(ステップS81)。
IO処理部225は、前回の処理でOptimizeに設定されているかを判定する(ステップS82)。
前回の処理でOptimizeに設定されている場合には(ステップS82のYESルート参照)、IO処理部225は、TFOグループテーブルにおいて配下のボリュームをOptimizeに設定する(ステップS83)。図24示す例においては、業務サーバBに接続されるプライマリのTFOグループBはOptimizeに設定される。
IO処理部225は、TFOグループテーブルにおいて配下のボリュームのStateをActiveに設定する(ステップS84)。
IO処理部225は、初回のTFOセッションを起動する(ステップS85)。そして、セカンダリのストレージ装置2bのアクセスパス設定テーブル224に対する設定処理は終了する。
ステップS82において、前回の処理でOptimizeに設定されていない場合には(ステップS82のNoルート参照)、IO処理部225は、配下のボリュームをNon-Optimizeに設定する(ステップS86)。図24示す例においては、業務サーバAに接続されるセカンダリのTFOグループAはNon-Optimizeに設定される。
IO処理部225は、業務サーバ1からのIOを抑止する(ステップS87)。
IO処理部225は、TFOグループテーブルにおいて配下のボリュームのStateをNon-Activeに設定する(ステップS88)。そして、処理はステップS85へ進む。
次に、図12に示したセカンダリのストレージ装置2bのコピー経路復旧監視部227における処理を、図25に示すフローチャート(ステップS91~S100)に従って説明する。
コピー経路復旧監視部227は、コピー経路が復旧したかを判定する(ステップS91)。
コピー経路が復旧していない場合には(ステップS91のNoルート参照)、処理はステップS93へ進む。
一方、コピー経路が復旧した場合には(ステップS91のYESルート参照)、コピー経路復旧監視部227は、プライマリのストレージ装置2aとの間でコピー処理を再開する(ステップS92)。
コピー経路復旧監視部227は、ネゴシエーション処理を起動する(ステップS93)。
コピー経路復旧監視部227は、セカンダリのストレージ装置2bがOptimizeに設定されているかを判定する(ステップS94)。
セカンダリのストレージ装置2bがOptimizeに設定されている場合には(ステップS94のYesルート参照)、処理はステップS98へ進む。
一方、セカンダリのストレージ装置2bがOptimizeに設定されていない場合には(ステップS94のNoルート参照)、コピー経路復旧監視部227は、プライマリのストレージ装置2aがOptimizeに設定されているかを判定する(ステップS95)。
プライマリのストレージ装置2aがOptimizeに設定されている場合には(ステップS95のYesルート参照)、処理はステップS98へ進む。
一方、プライマリのストレージ装置2aがOptimizeに設定されていない場合には(ステップS95のNoルート参照)、プライマリのストレージ装置2aにおけるTFOグループテーブルのStateをActiveに設定する(ステップS96)。
コピー経路復旧監視部227は、業務サーバ1からのIO抑止を解除する(ステップS97)。
コピー経路復旧監視部227は、TFOセッションが等価であるかを判定する(ステップS98)。
TFOセッションが等価でない場合には(ステップS98のNoルート参照)、セカンダリのストレージ装置2bのコピー経路復旧監視部227における処理は終了する。
一方、TFOセッションが等価である場合には(ステップS98のYesルート参照)、コピー経路復旧監視部227は、TFOセッション先のTFOグループテーブルにおけるStateをActiveに設定する(ステップS99)。
コピー経路復旧監視部227は、業務サーバ1からのIO抑止を解除する(ステップS100)。そして、セカンダリのストレージ装置2bのコピー経路復旧監視部227における処理は終了する。
次に、図12に示したセカンダリのストレージ装置2bのネゴシエーション処理部228における処理を、図26に示すフローチャート(ステップS101~S106)に従って説明する。
ネゴシエーション処理部228は、セカンダリのストレージ装置2bにおけるTFOグループテーブルのPhaseがDisconnectedであるかを判定する(ステップS101)。
セカンダリのストレージ装置2bにおけるPhaseがDisconnectedでない場合には(ステップS101のNoルート参照)、処理はステップS103へ進む。
一方、セカンダリのストレージ装置2bにおけるPhaseがDisconnectedである場合には(ステップS101のYesルート参照)、ネゴシエーション処理部228は、プライマリのストレージ装置2aにおけるTFOグループテーブルのPhaseをDisconnectedに設定する(ステップS102)。
ネゴシエーション処理部228は、プライマリのストレージ装置2aにおけるTFOグループテーブルのPhaseがDisconnectedであるかを判定する(ステップS103)。
プライマリのストレージ装置2aにおけるPhaseがDisconnectedでない場合には(ステップS103のNoルート参照)、処理はステップS105へ進む。
一方、プライマリのストレージ装置2aにおけるPhaseがDisconnectedである場合には(ステップS103のYesルート参照)、ネゴシエーション処理部228は、プライマリのストレージ装置2aのPhaseをMonitoring Server Disconnectedに設定する(ステップS104)。
ネゴシエーション処理部228は、プライマリのストレージ装置2aにおけるPhaseがNormalであるかを判定する(ステップS105)。
プライマリのストレージ装置2aにおけるPhaseがNormalでない場合には(ステップS105のNoルート参照)、セカンダリのストレージ装置2bのネゴシエーション処理部228における処理は終了する。
一方、プライマリのストレージ装置2aにおけるPhaseがNormalである場合には(ステップS105のYesルート参照)、ネゴシエーション処理部228は、セカンダリのストレージ装置2bのPhaseをMonitoring Server Disconnectedに設定する(ステップS106)。そして、セカンダリのストレージ装置2bのネゴシエーション処理部228における処理は終了する。
次に、図12に示したセカンダリのストレージ装置2bの監視サーバ通信監視処理部226における処理を、図27に示すフローチャート(ステップS111及びS112)に従って説明する。
監視サーバ通信監視処理部226は、監視サーバ3とセカンダリのストレージ装置2bとの間の通信がタイムアウトしたかを判定する(ステップS111)。
監視サーバ3とセカンダリのストレージ装置2bとの間の通信がタイムアウトしていない場合には(ステップS111のNoルート参照)、セカンダリのストレージ装置2bの監視サーバ通信監視処理部226における処理は終了する。
一方、監視サーバ通信監視処理部226は、監視サーバ3とセカンダリのストレージ装置2bとの間の通信がタイムアウトした場合には(ステップS111のYesルート参照)、監視サーバ通信監視処理部226は、セカンダリのストレージ装置2bにおけるTFOグループテーブルのPhaseをDisconnectedに設定する(ステップS112)。そして、セカンダリのストレージ装置2bの監視サーバ通信監視処理部226における処理は終了する。
次に、Optimize側のストレージ装置2a,2bのIO処理部215,225における処理を、図28に示すフローチャート(ステップS121~S126)に従って説明する。
Optimize側のIO処理部215,225は、業務サーバ1からライトIOを受け付ける(ステップS121)。
IO処理部215,225は、Non-Optimize排他が設定されているかを判定する(ステップS122)。
Non-Optimize排他が設定されている場合には(ステップS122のYesルート参照)、IO処理部215,225は、排他待ちをする(ステップS123)。そして、Optimize側のストレージ装置2a,2bのIO処理部215,225における処理は終了する。
一方、Non-Optimize排他が設定されていない場合には(ステップS123のNoルート参照)、IO処理部215,225は、コピー先筐体へデータをコピーする(ステップS124)。
IO処理部215,225は、コピー元筐体へデータをライトする(ステップS125)。
IO処理部215,225は、排他待ちキックを行なう(ステップS126)。そして、Optimize側のストレージ装置2a,2bのIO処理部215,225における処理は終了する。
次に、Non-Optimize側のストレージ装置2a,2bのIO処理部215,225における処理を、図29に示すフローチャート(ステップS131~S137)に従って説明する。
Non-Optimize側のIO処理部215,225は、業務サーバ1からのライトIOを受け付ける(ステップS131)。
IO処理部215,225は、Optimize側へ筐体間通信を行なう(ステップS132)。
IO処理部215,225は、Optimize側がライト処理中であるかを判定する(ステップS133)。
Optimize側がライト処理中である場合には(ステップS133のYesルート参照)、IO処理部215,225は、排他待ちを行なう(ステップS134)。そして、Non-Optimize側のストレージ装置2a,2bのIO処理部215,225における処理は終了する。
一方、Optimize側がライト処理中でない場合には(ステップS133のNoルート参照)、IO処理部215,225は、コピー先筐体へデータをコピーする(ステップS135)。
IO処理部215,225は、排他待ちキックを行なう(ステップS136)。
IO処理部215,225は、コピー元筐体へデータをライトする(ステップS137)。そして、Non-Optimize側のストレージ装置2a,2bのIO処理部215,225における処理は終了する。
〔B-3〕効果
上述した実施形態の一例における制御装置20及び制御方法によれば、例えば、以下の作用効果を奏することができる。
ストレージクラスタは、プライマリとして機能するストレージ装置2aとセカンダリとして機能するストレージ装置2bとのそれぞれのポートがアクティブに設定され、同一のサイト内に位置する業務サーバ1とストレージ装置2a,2bとが優先的にアクセスするようにアクセスパスが設定される。IO処理部215,225は、優先権が付与されていない第1のストレージ装置2bにおいて受け付けられたアクセスについては、優先権が付与されている第2のストレージ装置2aにおける対象領域の書き込みアクセスの排他権を獲得する。IO処理部215,225は、排他権の獲得後に、第1のストレージ装置2bから第2のストレージ装置2aへのデータのコピー同期処理を実行する。
これにより、Active制御方式の両ストレージ装置2a,2bへ同時にアクセスが可能な構成であった場合に、ストレージ装置2a,2b内又はストレージ装置2a,2b間で異常が発生した場合においても、ストレージ装置2a,2b間のデータの同期を確保することができる。
コピー経路閉塞監視処理部211,221は、第1のストレージ装置2bと第2のストレージ装置2aとの間におけるコピー同期処理のための経路ついての異常を検出すると、業務サーバ1からのアクセスの受付を抑止する。これにより、ストレージ装置2a,2b間のコピー経路が切れた場合、且つ、ストレージ装置2a,2bの両側へライトIOが発生した場合でも、片側のストレージ装置2a,2bに限ったアクセスとなる。そして、その後にストレージ装置2a,2bがダウンしてもデータの食い違いは発生しない。
コピー経路復旧監視部227は、経路の復旧を検出すると、プライマリとして機能するストレージ装置2aとセカンダリとして機能するストレージ装置2bとのいずれにも優先権が付与されていない場合に、アクセスの受付の抑止を解除する。コピー経路復旧監視部227は、経路の復旧を検出すると、プライマリとして機能するストレージ装置2aとセカンダリとして機能するストレージ装置2bとの間のデータの差分コピーが完了している場合に、アクセスの受付の抑止を解除する。これにより、コピー経路の復旧後に、正常に業務サーバ1からのIOを受け付けることができる。
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
〔D〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
プライマリとして機能するストレージ装置とセカンダリとして機能するストレージ装置とのそれぞれのポートがアクティブに設定され、同一のサイト内に位置するサーバとストレージ装置とが優先的にアクセスするようにアクセスパスが設定されたストレージクラスタにおいて、優先権が付与されていない第1のストレージ装置において受け付けられたアクセスについては、前記優先権が付与されている第2のストレージ装置における対象領域の書き込みアクセスの排他権を獲得する排他獲得部と、
前記排他獲得部による前記排他権の獲得後に、前記第1のストレージ装置から前記第2のストレージ装置へのデータのコピー同期処理を実行する同期処理部と、
を備える、制御装置。
(付記2)
前記第1のストレージ装置と前記第2のストレージ装置との間における前記コピー同期処理のための経路ついての異常を検出すると、前記サーバからのアクセスの受付を抑止する抑止処理部
を更に備える、付記1に記載の制御装置。
(付記3)
前記経路の復旧を検出すると、前記プライマリとして機能するストレージ装置と前記セカンダリとして機能するストレージ装置とのいずれにも前記優先権が付与されていない場合に、前記アクセスの受付の抑止を解除する抑止解除部
を更に備える、付記2に記載の制御装置。
(付記4)
前記経路の復旧を検出すると、前記プライマリとして機能するストレージ装置と前記セカンダリとして機能するストレージ装置との間のデータの差分コピーが完了している場合に、前記アクセスの受付の抑止を解除する抑止解除部
を更に備える、付記2又は3に記載の制御装置。
(付記5)
プライマリとして機能するストレージ装置とセカンダリとして機能するストレージ装置とのそれぞれのポートがアクティブに設定され、同一のサイト内に位置するサーバとストレージ装置とが優先的にアクセスするようにアクセスパスが設定されたストレージクラスタにおいて、優先権が付与されていない第1のストレージ装置において受け付けられたアクセスについては、前記優先権が付与されている第2のストレージ装置における対象領域の書き込みアクセスの排他権を獲得し、
前記排他権の獲得後に、前記第1のストレージ装置から前記第2のストレージ装置へのデータのコピー同期処理を実行する、
処理をコンピュータが実行する、制御方法。
(付記6)
前記第1のストレージ装置と前記第2のストレージ装置との間における前記コピー同期処理のための経路ついての異常を検出すると、前記サーバからのアクセスの受付を抑止する、
処理を前記コンピュータが実行する、付記5に記載の制御方法。
(付記7)
前記経路の復旧を検出すると、前記プライマリとして機能するストレージ装置と前記セカンダリとして機能するストレージ装置とのいずれにも前記優先権が付与されていない場合に、前記アクセスの受付の抑止を解除する、
処理を前記コンピュータが実行する、付記6に記載の制御方法。
(付記8)
前記経路の復旧を検出すると、前記プライマリとして機能するストレージ装置と前記セカンダリとして機能するストレージ装置との間のデータの差分コピーが完了している場合に、前記アクセスの受付の抑止を解除する、
処理を前記コンピュータが実行する、付記6又は7に記載の制御方法。