(57)【要約】【課題】非同期レプリケーションでマスタストレージ装置が破損した場合でも、バックアップストレージ装置にデータを復旧することができる情報処理システムを提供することを目的とする。【解決手段】ホスト計算機１００は、マスタストレージ装置３００ａへ前記データ書き込み要求を出力する際に、書き込み履歴情報として記録装置１２０に保存するための第１の書き込み履歴保存手段と、マスタストレージ装置３００ａが故障した場合に、記録装置１２０に保存されている書き込み履歴情報をバックアップストレージ装置３００ｂに出力する書き込み履歴反映手段とを備え、マスタストレージ装置３００ａは、ホスト計算機１００からのデータ書き込み要求を書き込み履歴情報として記憶装置３３０に保存するための第２の書き込み履歴保存手段と、これに記録された書き込み履歴情報をバックアップストレージ装置３００ｂに出力する出力手段とを備えている。【選択図】図１
2011003030.tif 000002
【特許請求の範囲】
【請求項１】
マスタストレージ装置と、バックアップストレージ装置と、前記マスタストレージ装置にデータを書き込みするためにデータ書き込み要求を前記マスタストレージ装置に出力するホスト計算機とを持つ情報処理システムであって、
前記ホスト計算機は、
前記マスタストレージ装置へ前記データ書き込み要求を出力する際に、このデータ書き込み要求を書き込み履歴情報として第１の記録装置に保存するための第１の書き込み履歴保存手段と、
前記マスタストレージ装置が故障した場合に、前記第１の記録装置に保存されている書き込み履歴情報を前記バックアップストレージ装置に出力する書き込み履歴反映手段とを備え、
前記マスタストレージ装置は、前記ホスト計算機から出力された前記データ書き込み要求に基づいてデータの書き込みをするときに、このデータ書き込み要求を書き込み履歴情報として第２の記録装置に保存するための第２の書き込み履歴保存手段と、
この第２の記録装置に保存されている書き込み履歴情報を前記バックアップストレージ装置に出力するための出力手段とを備え、
前記バックアップストレージ装置は、前記マスタストレージ装置から出力された前記書き込み履歴情報に基づいてデータの書き込みをするバックアップ書き込み手段と、
前記書き込み履歴反映手段によって前記ホスト計算機から出力された書き込み履歴情報に基づいてデータの書き込みをするデータ反映手段と
を備えることを特徴とする情報処理システム。
【請求項２】
前記ホスト計算機は、
前記マスタストレージ装置から前記バックアップストレージ装置へのデータ書き込みが完了している書き込み履歴情報を前記第１の記録装置から削除する書き込み履歴削除手段を備え
たことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
マスタストレージ装置と、バックアップストレージ装置と、前記マスタストレージ装置にデータを書き込みするためにデータ書き込み要求を前記マスタストレージ装置に出力するホスト計算機とを持つ情報処理システムであって、
前記ホスト計算機は、
前記マスタストレージ装置へ前記データ書き込み要求を出力する際に、このデータ書き込み要求を書き込み履歴情報として第１の記録装置に保存するための第１の書き込み履歴保存手段と、
前記マスタストレージ装置が故障した場合に、前記第１の記録装置に保存されている書き込み履歴情報を前記バックアップストレージ装置に出力する書き込み履歴反映手段と、
前記第１の記録装置に保存されている書き込み履歴情報に基づいて、前記マスタストレージ装置から前記バックアップストレージ装置へのデータ書き込みが完了しているかを周期的に確認し、データ書き込みが完了している場合に、当該書き込み履歴情報を前記第１の記録装置から削除する書き込み履歴削除手段を備え、
前記マスタストレージ装置は、前記ホスト計算機から出力された前記書き込み要求に基づいてデータの書き込みをするときに、このデータ書き込み要求を書き込み履歴情報として第２の記録装置に保存するための第２の書き込み履歴保存手段と、
この第２の記録装置に保存されている書き込み履歴情報を前記バックアップストレージ装置に出力する出力手段とを備え、
前記バックアップストレージ装置は、前記マスタストレージ装置から出力された前記書き込み履歴情報に基づいてデータの書き込みをするバックアップ書き込み手段と、
前記書き込み履歴反映手段によって前記ホスト計算機から出力された書き込み履歴情報に基づいてデータの書き込みをするデータ反映手段と
を備えることを特徴とする情報処理システム。
【請求項４】
マスタストレージ装置と、前記マスタストレージ装置のバックアップを保存するバックアップストレージ装置とに、ネットワークを介して接続され、記憶装置を備えたホスト計算機であって、
コンピュータに、
前記マスタストレージ装置へデータ書き込み要求を出力する時に、
前記データ書き込み要求を書き込み履歴情報として前記記録装置に保存する機能と、
前記マスタストレージ装置が故障した場合に、前記記録装置に保存されている書き込み履歴情報に基づき前記バックアップストレージ装置にデータ書き込み要求を出力する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に記憶されたデータのバックアップを実現する情報処理システムに関し、特に非同期レプリケーション機能を用いてデータのバックアップをする情報処理システムに関する。
【背景技術】
【０００２】
データベースの破損に対し、このデータベースを破損直前の状態に復元するため、前日までのデータは光磁気ディスク等のメディアに保存し、当日から損壊直前までのデータは、機器のメモリに保存しておくデータバックアップシステムがある（例えば、特許文献１参照）。
【０００３】
一方、同期型レプリケーションを利用して、データの完全性やシステムの可用性を高めることも行われるようになってきている（例えば、特許文献２参照）。
【０００４】
なお同期型レプリケーションを用いたシステムでは、ホスト計算機によるマスタストレージ装置へのデータ書き込みに対するマスタストレージ装置からの応答時間が、マスタストレージ装置とバックアップストレージ装置との距離に比例して遅くなるという問題があった。これは、マスタストレージ装置がバックアップストレージ装置へのデータ書き込みが完了した後、ホスト計算機へ書き込み完了の通知をするためである。
【０００５】
そこで特許文献２では、非同期レプリケーションを利用したシステムでも実現可能としている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−９１４４６号公報
【特許文献２】特開２００６−１０６８８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非同期レプリケーションは同期型レプリケーションに対して、マスタストレージ装置とバックアップストレージ装置の距離が離れても書き込み性能が低下しないというメリットがある反面、マスタストレージ装置とバックアップストレージ装置に保存されたデータが常に一致しているわけではなく、バックアップストレージ装置に反映されていないデータがあるためマスタストレージ装置の障害によりデータが損失する問題があった。
【０００８】
本発明は、上記した従来の問題点を解決するためになされたもので、非同期レプリケーションでマスタストレージ装置が破損した場合でも、バックアップストレージ装置にデータを復旧することができる情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明による情報処理システムは、
マスタストレージ装置と、バックアップストレージ装置と、前記マスタストレージ装置にデータを書き込みするためにデータ書き込み要求を前記マスタストレージ装置に出力するホスト計算機とを持つ情報処理システムであって、
前記ホスト計算機は、
前記マスタストレージ装置へ前記データ書き込み要求を出力する際に、このデータ書き込み要求を書き込み履歴情報として第１の記録装置に保存するための第１の書き込み履歴保存手段と、
前記マスタストレージ装置が故障した場合に、前記第１の記録装置に保存されている書き込み履歴情報を前記バックアップストレージ装置に出力する書き込み履歴反映手段とを備え、
前記マスタストレージ装置は、前記ホスト計算機から出力された前記データ書き込み要求に基づいてデータの書き込みをするときに、このデータ書き込み要求を書き込み履歴情報として第２の記録装置に保存するための第２の書き込み履歴保存手段と、
この第２の記録装置に保存されている書き込み履歴情報を前記バックアップストレージ装置に出力するための出力手段とを備え、
前記バックアップストレージ装置は、前記マスタストレージ装置から出力された前記書き込み履歴情報に基づいてデータの書き込みをするバックアップ書き込み手段と、
前記書き込み履歴反映手段によって前記ホスト計算機から出力された書き込み履歴情報に基づいてデータの書き込みをするデータ反映手段と
を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ホスト計算機にデータ書き込み履歴が保存されているので、マスタストレージ装置が破損した場合でも、バックアップストレージ装置にデータを復旧させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の情報処理システム全体の構成例を示す図。
【図２】マルチパスドライバ１３０の位置づけを示す図。
【図３】仮想デバイス４００情報の構成例を示すブロック図。
【図４】パス情報４４０の構成例を示すブロック図。
【図５】データ書き込み履歴情報４６０の構成例を示すブロック図。
【図６】データ書き込み履歴のフォーマットの具体例を示す図。
【図７】マルチパスドライバ１３０のデータ読み込み／データ書き込み処理の具体例を示すフローチャート。
【図８】データ書き込み履歴書き込み処理の具体例を示すフローチャート。
【図９】データ書き込み履歴削除処理の具体例を示すフローチャート。
【図１０】データ書き込み履歴定期削除処理の具体例を示すフローチャート。
【図１１】ストレージ装置のベンダ固有ＳＣＳＩコマンドの処理の具体例を示すフローチャート。
【図１２】装置間パス切り替え処理の具体例を示すフローチャート。
【図１３】データ読み込みシーケンス
【図１４】データ書き込みシーケンス
【図１５】データ書き込み履歴削除シーケンス
【図１６】装置間パス切り替え時のデータ読み込み／データ書き込みシーケンス
【発明を実施するための形態】
【００１２】
以下、本発明の実施例について図面を参照して説明する。
【実施例１】
【００１３】
［システム構成］
本発明の情報処理システムの構成例を図１に示す。同図に示すように、本実施形態に係る情報処理システムは、ホスト計算機１００、マスタストレージ装置３００ａ及びバックアップストレージ装置３００ｂから構成されている。ホスト計算機１００は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介してマスタストレージ装置３００ａ、バックアップストレージ装置３００ｂと通信可能に接続されている。
【００１４】
ホスト計算機１００は、マルチパスドライバ１３０、ディスク１２０を備えたコンピュータであって、さらに２台のＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）１１０ａと１１０ｂを搭載し、それぞれがＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）スイッチ２００ａと２００ｂにＦＣケーブルで接続されている。
【００１５】
マルチバスドライバ１３０は、図２に示すようにホスト計算機１００上で動作するオペレーティングシステムのファイルシステムとディスクドライバの間で動作する仮想デバイスドライバであり、ホスト計算機１００と、マスタストレージ装置３００ａおよびバックアップストレージ装置３００ｂとのアクセスパスを切り替えるものである。
【００１６】
ディスク１２０は、ホスト計算機１００からマスタストレージ装置３００ａに出力したデータ書き込み要求の履歴であるデータ書き込み履歴を保存するためのものである。
【００１７】
マスタストレージ装置３００ａは、２つのコントローラ３１０ａ、３１１ａを持つディスクアレイ装置（ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置）である。
【００１８】
コントローラ３１０ａ、３１１ａは、ホスト計算機１００からのデータ書き込み要求に基づいてＬＵ(Ｌｏｇｉｃａｌ  Ｕｎｉｔ)３２０ａにデータを書き込むとともに、この書き込んだデータを非同期に後述するバックアップストレージ装置３００ｂに書き込むために、バックアップストレージ装置３００ｂに対するデータの書き込み要求を出力して非同期レプリケーション機能を実現している。ディスク３３０もＬＵで実現している。
【００１９】
マスタストレージ装置３００ａは、ホスト計算機１００からのデータ書き込み要求の履歴を保存するためのディスク３３０を持つ構成である。
【００２０】
バックアップストレージ装置３００ｂは、２つのコントローラ３１０ｂ、３１１ｂを持つディスクアレイ装置である。
【００２１】
ＦＣスイッチ２００ａと２００ｂは、ＳＡＮを実現するためのスイッチである。
【００２２】
ここでＦＣスイッチ２００ａはコントローラ３１０ａと３１０ｂに、ＦＣスイッチ２００ｂはコントローラ３１１ａと３１１ｂに接続されており、非同期レプリケーションでのコピーの経路はコントローラ３１０ａ―ＦＣスイッチ２００ａ―コントローラ３１０ｂとコントローラ３１１ａ―ＦＣスイッチ２００ｂ―コントローラ３１１ｂの２パターンであり、ホスト計算機１００は経由しない。
【００２３】
一般にＵＮＩＸ（登録商標）オペレーティングシステムでは、1つのＬＵに対して複数のアクセス経路が存在すれば、それらは複数のＬＵとして認識される。
【００２４】
例えば、図１のマスタ側ストレージ３００ａ内のＬＵ３２０ａには、ホスト計算機１００のＨＢＡ１１０ａからＦＣスイッチ２００ａを経由してコントローラ３１０ａと接続する経路ＡとＨＢＡ１１０ｂからＦＣスイッチ２００ｂを経由してコントローラ３１１ａと接続される経路Ｂの２つの経路が存在する。
【００２５】
このように２つの経路が存在する場合は、ＬＵの実体が１つであっても、ホスト計算機からは２つのＬＵが接続されているように認識される。
【００２６】
物理パスとは、これらの経路ごとに認識されたＬＵのデバイスを指す。
【００２７】
したがって、図１の非同期レプリケーションを構成する１組のＬＵはホスト計算機１００から２本ずつの計４本の物理パス、すなわち４つのデバイスとして認識される。
【００２８】
マルチパスドライバ１３０は、後述する仮想デバイス情報４００で示すように、非同期レプリケーションを構成する４本の物理パスを統合して1つの仮想デバイスとして提供している。
【００２９】
非同期レプリケーションを組んだストレージ装置のＬＵにはマスタ属性とバックアップ属性があり、レプリケーションにおけるデータコピー方向は、マスタ属性をもったＬＵからバックアップ属性をもったＬＵへの方向となる。
【００３０】
以降は簡単のために、ストレージ装置内のＬＵは１つとし、マスタ属性のＬＵをもつストレージ装置をマスタストレージ装置３００ａ、バックアップ属性のＬＵをもつストレージ装置をバックアップストレージ装置３００ｂと呼ぶ。
【００３１】
そこで、マスタストレージ装置３００ａはホスト計算機１００からのデータ読み込み／データ書き込みを許可し、バックアップストレージ装置３００ｂからのデータ書き込みは拒否（データ読み込みは許可）する。
【００３２】
逆に、バックアップストレージ装置３００ｂはホスト計算機１００からのデータ読み込みのみを許可し、マスタストレージ装置３００ａからのデータ読み込み／データ書き込みは許可する。
【００３３】
従来の同期型レプリケーションでは、通常時はマスタストレージ装置３００ａのコントローラに対してデータ読み込み／データ書き込みを発行し、マスタストレージ装置３００ａに障害が発生した場合に、ストレージ装置のマスタ属性とバックアップ属性を入れ替え、アクセスパスをマスタストレージ装置（元バックアップストレージ装置）３００ｂに切り替える。
【００３４】
同期型レプリケーションの場合は、２つのストレージ装置間のデータが常時一致しているため、マスタストレージ装置３００ａが全損してもデータ損失が防止できる。
【００３５】
一方、非同期レプリケーションを用いた場合、マスタストレージ装置のＬＵ３２０ａとバックアップストレージ装置のＬＵ３２０ｂ内のデータは常に一致はしてないため、単純にバックアップストレージ装置３００ｂに切り替えるとデータ損失が発生する。
【００３６】
そこで、本発明のマルチパスドライバ１３０はマスタストレージ装置３００ａへ発行したデータ書き込みの履歴をホスト計算機１００のディスク１２０に保存しておき、バックアップストレージ装置３００ｂにアクセスパスを切り替える前に前記データ書き込み履歴をバックアップストレージ装置３００ｂのＬＵ３２０ｂに適用することでデータ損失を防止できる。
【００３７】
なお一般的にストレージ装置は、ストレージ装置間のデータ転送に関して「同期状態」と「スプリット状態」を保持している。「同期状態」は、マスタからバックアップへデータコピーが行われている状態である。「スプリット状態」は、マスタからバックアップへのデータコピーが切断されている状態であり、マスタからのデータ書き込みを拒否し、ホスト計算機からのデータ読み込み／データ書き込みを許可する。マスタからのデータ書き込みがないので、ホスト計算機からデータ書き込みしても不整合は発生しない。
【００３８】
通常は「同期状態」を保っているが、一方のストレージ装置の故障や通信パスの切断など何らかの原因でストレージ装置間の通信ができない状態に陥った場合に、ストレージ装置側が「同期状態」から「スプリット状態」に遷移する。
【００３９】
本実施例ではマスタストレージ装置３００ａの故障なので、これに伴いバックアップストレージ装置３００ｂは「スプリット状態」に遷移する。従って、ホスト計算機からのデータ書き込み履歴の内容をバックアップストレージ装置３００ｂのＬＵ３２０ｂに適用することが可能である。
【００４０】
［データ読み込み／データ書き込みの処理］
まず、データ読み込み／データ書き込みの流れを説明する。
【００４１】
ホスト計算機からストレージ装置上のファイルへのデータの読み書き処理は大きく分けて、オペレーティングシステムのファイルシステムとディスクドライバが処理を提供する。
【００４２】
ここでファイルシステムはディスク上のデータをファイルとして管理する機能であり、ディスクドライバはブロックレベルのデータ読み込み／データ書き込み要求をディスクに対するハードウェアレベルの読み書き命令に変換してハードウェアに発行する機能である。
【００４３】
例えば、ユーザアプリケーションがファイルシステムの管理しているファイルに対してデータ読み込み／データ書き込みシステムコールを実行すると、ファイルシステムがブロックレベルのデータ読み込み／データ書き込み要求に変換し下位のディスクドライバのデータ読み込み／データ書き込み処理を呼び出す。
【００４４】
するとディスクドライバはブロックレベルのデータ読み込み／データ書き込み要求をＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）コマンドに変換して、ＨＢＡに発行する。ＨＢＡはこのＳＣＳＩコマンドをＦＣケーブル経由でストレージ装置のコントローラに転送する。
【００４５】
ストレージ装置のコントローラは、ストレージ内のディスクからデータを読み書きするとＨＢＡに対して書き込み完了の応答を返す。オペレーティングシステムはＨＢＡからの割り込みを受け、その割り込みをトリガとして起動する割り込みハンドラによってデータ読み込み／データ書き込み完了の処理を実行する。
【００４６】
最後に、データ読み込み／データ書き込み完了処理はユーザアプリケーションが実行したデータ読み込み／データ書き込みシステムコールに応答を返し、データ読み込み／データ書き込み処理は終了する。
【００４７】
［マルチパスドライバ］
マルチパスドライバ１３０について説明する。
【００４８】
マルチパスドライバ１３０はＬＵごとに個々のＬＵを個別の仮想デバイスとして対応付けて認識する。ここでのデバイスとは、例えば、一般的なＵＮＩＸ（登録商標）オペレーティングシステムのデバイススペシャルファイルのように、ユーザアプリケーションとオペレーティングシステムが入出力を行うための口を指す。
【００４９】
ＵＮＩＸ（登録商標）ではデバイススペシャルファイルは／ｄｅｖディレクトリ以下に特殊なファイルとして作成され、デバイススペシャルファイルには必ずメジャー番号とマイナー番号のペアが割り当てられる。
【００５０】
メジャー番号はデバイスドライバに割り当てられた一意の番号を指し、マイナー番号はそのデバイスドライバが管理するユニットの番号を指している。
【００５１】
また、メジャー番号とマイナー番号の組み合わせをデバイス番号と呼ぶ。
【００５２】
デバイススペシャルファイルに対してデータ読み込み／データ書き込みシステムコールを実行すると、オペレーティングシステムはデバイススペシャルファイルのメジャー番号からデバイスドライバを特定し、そのデバイスドライバのデータ読み込み／データ書き込み処理を実行する。
【００５３】
したがって、マルチパスドライバ１３０が生成する仮想デバイスに対してデータ読み込み／データ書き込みシステムコールを発行すると、マルチパスドライバがデータ読み込み／データ書き込み処理を実行する。
【００５４】
次にマルチパスドライバ１３０が仮想デバイスごとにメモリに保持する仮想デバイス情報４００を図３に示す。
【００５５】
仮想デバイス情報４００はマルチパスドライバ１３０をオペレーティングシステムにロードしたときに生成する。仮想デバイス情報４００内のデバイス番号４１０は、メジャー番号とマイナー番号の組み合わせの番号であり、オペレーティングシステムに依存するが、例えばデバイス番号が３２ｂｉｔ整数値の場合、上位１６ｂｉｔがメジャー番号、下位１６ｂｉｔがマイナー番号のようになる。
【００５６】
ここでメジャー番号はオペレーティングシステムによってマルチパスドライバ１３０に割り当てられた一意の番号、マイナー番号はＬＵ番号とする。
【００５７】
ＬＵ番号４２０は仮想デバイスに割り当てられたストレージ装置のＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）で、アクティブパス番号４３０はマルチパスドライバ１３０がデータ読み込み／データ書き込みに使用するパス番号（パス番号については後述、初期値はマスタグループに所属する最も若いパス番号とする）である。マスタグループ４５０ａはマスタストレージ装置３００ａについてのパス情報のグループで、バックアップグループ４５０ｂはバックアップストレージ装置３００ｂについてのパス情報のグループである。これらパス情報４４０ａ〜４４０ｄは前記ＬＵの物理パスの情報で、データ書き込み履歴情報４６０はデータ書き込み履歴（後述）を管理するための情報である。
【００５８】
前述のパス情報４４０ａ〜４４０ｄの構成について図４を用いて説明する。パス番号４４１は仮想デバイス情報４００内で一意に割り当てられた番号である。例えば、マスタグループ４５０ａ内のパス番号は０と１、バックアップグループ４５０ｂ内のパス番号は２と３のように割り当てる。デバイス番号４４２は物理パス（後述）のデバイス番号、ステータス４４３はパスの状態を表す整数値（ＧＯＯＤ＝０、ＥＲＲＯＲ＝１）である。
【００５９】
次にマルチパスドライバ１３０を用いたデータ読み込み／データ書き込み処理の流れを図７のフローチャートに従い説明する。前述したようにユーザアプリケーションやファイルシステムが仮想デバイスに対してデータ読み込み／データ書き込みを実行すると、そのデータ読み込み／データ書き込み処理はマルチパスドライバ１３０が実行する。
【００６０】
マルチパスドライバ１３０のデータ読み込み／データ書き込み処理は、まずロック中であるかどうか調べ（Ｓ７０１）、ロック中であればデータ読み込み／データ書き込み要求を保留キューへキューイングして終了する（Ｓ７０２）（ロックの詳細については後述）。ここで保留キューとはマルチパスドライバ１３０がメモリ上で管理しているキュー（先入れ先出し（ＦＩＦＯ：ｆｉｒｓｔ  ｉｎ  ｆｉｒｓｔ  ｏｕｔ）のデータ構造）である。
【００６１】
ロック中でなければ、仮想デバイス情報４００のアクティブパス番号４３０を参照して（Ｓ７０３）、このアクティブパス番号４３０と一致するパス番号を、パス情報４４０ａ〜４４０ｄの中から探し、そのパス情報からデバイス番号４４２を調べる（Ｓ７０４）。
【００６２】
そして、データ読み込みであれば（Ｓ７０５）、デバイス番号４４２にデータ読み込み要求を発行し（Ｓ７０６）、データ書き込みであれば図８のフローチャートで示すデータ書き込み履歴書き込み処理（後述）を実行した後（Ｓ７０７）、デバイス番号４４２にデータ書き込み要求を発行する（Ｓ７０６）。
【００６３】
さらにデバイス番号４４２と関連付けられたディスクドライバがデータ読み込み／データ書き込み処理を実行し、ストレージ装置に対して読み書きする。
【００６４】
以上の処理により、仮想デバイスへデータ読み込み／データ書き込みを実行すると、４本パスのうちアクティブパス（マスタストレージ装置の1本のパス）へデータ読み込み／データ書き込みを発行することになる。
【００６５】
次にホスト計算機１００のマスタストレージ装置３００ａへの非同期レプリケーション機能を用いたデータの読み込みおよび書き込みのシーケンスを図１３および図１４に示す。
【００６６】
図１３に示すように、ホスト計算機１００からマスタストレージ装置３００ａにデータ読み込み要求をすると、マスタストレージ装置３００ａはデータ読み込みを実行し、完了するとホスト計算機１００へ完了を通知する。
【００６７】
図１４に示すように、データ書き込み要求の際は、ホスト計算機１００はまずディスク１２０にデータ書き込み履歴を保存し、その後マスタストレージ装置３００ａへデータ書き込み要求をする。するとマスタストレージ装置３００ａはＬＵ３２０ａへデータを書き込むとともに、そのデータ書き込み要求をデータ書き込み履歴としてディスク３３０に保存する。そしてホスト計算機１００へ完了を通知する。
【００６８】
一方マスタストレージ装置３００ａはディスク３３０に保存されたデータ書き込み履歴のうち、一番古い書き込み履歴を読み出し、このデータ書き込み履歴に基づいてバックアップストレージ装置３００ｂにデータの書き込み要求を出力する。バックアップストレージ装置３００ｂはＬＵ３２０ｂにデータを書き込み、データ書き込みが完了するとバックアップストレージ装置３００ｂはマスタストレージ装置３００ａへ完了を通知する。この完了通知を受け取るとマスタストレージ装置３００ａはバックアップストレージ装置３００ｂに出力した書き込み要求に対応するデータ書き込み履歴をディスク３３０から削除する。
【００６９】
［データ書き込み履歴書き込み処理］
次に、前記したデータ書き込み履歴書き込み処理について説明する。
【００７０】
データ書き込み履歴とは、ホスト計算機がストレージ装置に発行したデータ書き込み要求の履歴として図６に示すフォーマットで順番に記録したデータを指す。
【００７１】
このフォーマットのシーケンス番号４６２とは、データ書き込み要求の順番を表すもので０から順にインクリメントする整数値であり、ＬＵ番号はデータ書き込み発行先のＬＵ番号（仮想デバイス情報４００のＬＵ番号と同一）である。また、書き込みブロック番号はデータを書き込む位置情報（ＬＵのブロック番号）であり、サイズは書き込むデータのブロック数、書き込みデータは実際に書き込むブロックの中のデータである。
【００７２】
ここでブロックとは、オペレーティングシステムとディスク装置との間で読み書きする最小の単位で、一般にディスクセクタ（５１２バイト）の倍数のサイズでなければならないので、ここでは１ブロックは２セクタ（１０２４バイト）とする。
【００７３】
日時はデータ書き込み要求を受信した日時（１９７０年１月１日００：００：００ＵＴＣからの経過時間をｍｓで表す）を指し、最後のチェックサムはシーケンス番号４６２から日時までのバイト列のチェックサムである。
【００７４】
データ書き込み履歴はホスト計算機１００のディスク１２０内に固定サイズのファイルとして書くもので、初期のファイルの内容はオール０とする。マルチパスドライバ１３０はデータ書き込み履歴を管理するために図５に示すデータ書き込み履歴情報４６０を仮想デバイスごとメモリに保持する。
【００７５】
なお、データ書き込み履歴情報４６０はマルチパスドライバ１３０をロードしたときに初期化し、ファイル名４６１にはマルチパスドライバ１３０が固定サイズのファイルであるデータ書き込み履歴に対して付けた名前が入る。
【００７６】
シーケンス番号４６２は次に書き込む前記シーケンス番号４６２が入る。シーケンス番号４６２の初期値は前記ファイル内の最新のレコードを検索し（日時とシーケンス番号で検索可能）、そのレコード内のシーケンス番号４６２をインクリメントした番号とする。ファイルの中身がオール０の場合は０で初期化する。
【００７７】
書き込みポインタ４６３は次にデータ書き込み履歴を書く位置を表す前記ファイルのファイルポインタを入れる。
【００７８】
書き込みポインタの初期値は、前記シーケンス番号を初期化するときに検索したレコードの次のレコードの位置のファイルポインタとする。ファイルの中身がオール０の場合は０で初期化する。
【００７９】
削除ポインタ４６４はデータ書き込み履歴を削除する位置を表す前記ファイルのファイルポインタを入れる。削除ポインタの初期値は、前記ファイルから最も古いレコードを検索し（日時とシーケンス番号で検索可能）、そのレコードの先頭の位置のファイルポインタとする。ファイルの中身がオール０の場合は０で初期化する。
【００８０】
削除周期４６５は後述するデータ書き込み履歴定期削除処理にてデータ書き込み履歴を削除する周期で、削除数４６６は前記削除周期にて削除するデータ書き込み履歴のレコード数である。削除周期と削除数は、ユーザが設定した値で初期化する。
【００８１】
データ書き込み履歴書き込み処理を図８のフローチャートを用いて説明する。
【００８２】
まず、シーケンス番号４６２、ＬＵ番号４２０を仮想デバイス情報４００から取得し、現在日時とデータ書き込み履歴を書き込むファイルのサイズを調べ、マルチパスドライバ１３０に渡されるデータ読み込み／データ書き込み要求から書き込みブロック番号、書き込みデータ、書き込みデータのサイズを抽出する（Ｓ８０１）。
【００８３】
これらのデータを結合したバイト列に対して周知のチェックサムを計算し（Ｓ８０２）、チェックサム計算結果を前記バイト列の末尾に追加する（以後、このデータをレコードと呼ぶ）（Ｓ８０３）。
【００８４】
次にレコードのサイズを計算し（Ｓ８０４、Ｓ８０５）、書き込みポインタ４６３の位置にレコードを書き込み、書き込みポインタ４６３にはレコードの末尾の次のバイトのファイルポインタを格納する（Ｓ８０７）。
【００８５】
なお、データ書き込み履歴を格納するファイルは固定サイズなので、書き込みポインタがファイルの末尾に到達するとファイルの先頭に戻る循環型の書き込みを行うため、古いレコードが新しいレコードで上書きされないように、後述するデータ書き込み履歴定期削除処理にて定期的に古いレコードを削除する。
【００８６】
この削除する位置を指すのが削除ポインタ４６４であるが、データ書き込み要求が多くデータ書き込み履歴定期削除処理による古いレコードの削除が間に合わない場合、書き込みポインタが削除ポインタに追いつく可能性がある。
【００８７】
追いついた場合は、後述するデータ書き込み履歴削除処理（Ｓ８０６）で、上書きする前にマスタ側ストレージに対してそのレコードがバックアップ側ストレージに対してコピー済みであるかを問い合わせて、コピー済みでなければそのデータ書き込み要求をバックアップ側ストレージにコピーするよう要求する。
【００８８】
［データ書き込み履歴削除処理］
前述のデータ書き込み履歴削除処理について説明する。
【００８９】
処理の流れについてフローチャートを図９に、ホスト計算機とマスタストレージ装置とバックアップストレージ装置のデータ書き込み履歴削除シーケンスについて図１５に示す。
【００９０】
まずマルチパスドライバ１３０は、仮想デバイス情報４００からアクティブパス番号４３０とＬＵ番号を取得し、このアクティブパス番号４３０と一致するパス番号をパス情報４４０ａ〜４４０ｄから探し、そのデバイス番号を取得する（Ｓ９０１）。
【００９１】
次にホスト計算機１００のディスク１２０に保存されたファイル名４６１の削除ポインタ４６４の位置からレコードを取り出す（Ｓ９０２）。レコード内の日時フィールドが０の場合（Ｓ９０３）には、無効なデータ（例えば、ファイル内容がオール０や削除ポインタが書き込みポインタに追いついた場合）であるため何もせずに終了する（Ｓ９０４）。
【００９２】
そして、レコード内の日時フィールドが０でない場合には、レコードの書き込みブロック番号とチェックサム（Ｓ９０５）が一致する未コピーのデータ書き込みが存在するかどうかを、マスタストレージ装置３００ａに問い合わせる（Ｓ９０６）。なおホスト計算機１００からストレージ装置に対する問い合わせは、ストレージ装置側で定義するベンダ固有のＳＣＳＩコマンドにて行う。
【００９３】
マルチパスドライバ１３０は、前記書き込みブロック番号とチェックサムの情報をもつベンダ固有のＳＣＳＩコマンドを生成し、前述したデバイス番号に対して発行する。
【００９４】
ストレージ装置がベンダ固有ＳＣＳＩコマンドを受信したときの処理を図１１のフローチャートに示す。
【００９５】
ストレージ装置のコントローラがベンダ固有ＳＣＳＩコマンドを受信すると、ＳＣＳＩコマンドから書き込みブロック番号とチェックサムを抽出し（Ｓ１１０１）、ディスク３３０内のデータ書き込み履歴から書き込みブロック番号とチェックサムが一致するレコードを検索する（Ｓ１１０２）。そのレコードが最も古い場合は（Ｓ１１０３、Ｓ１１０４）、バックアップストレージ装置３００ｂのＬＵ３２０ｂの前記書き込みブロック番号の位置にレコード内の書き込みデータをコピーする（Ｓ１１０５）。
【００９６】
そしてコピーが完了するとホスト計算機に対して成功を返す（Ｓ１１０６）。
【００９７】
もし、ディスク３３０内のデータ書き込み履歴の中で一致するレコードが存在しない場合は（Ｓ１１０３）、何もせずにホスト計算機１００に対して成功を返す（Ｓ１１０６）。バックアップストレージ装置３００ｂにデータがコピー済みだからである。
【００９８】
なお、ディスク３３０内のデータ書き込み履歴の中でそのレコードが最も古いレコードでない場合は（Ｓ１１０３、Ｓ１１０４）、ホスト計算機１００にエラーを返す（Ｓ１１０７）。マスタストレージ装置３００ａにバックアップストレージ装置３００ｂへのコピーが済んでいないデータがあるにもかかわらず、ホスト計算機１００のディスク１２０からデータ書き込み履歴が削除されてしまっているからである。
【００９９】
マルチパスドライバ１３０はストレージ装置に対する問い合わせ（Ｓ９０７）の結果、成功であれば、削除ポインタ４６４の位置の日時フィールドに０を書き込んで（Ｓ９０９）、削除ポインタ４６４を次のレコードの先頭に変更する（Ｓ９１０）。
【０１００】
エラーであれば、何らかの問題でホスト計算機１００とストレージ装置の間で不整合が発生しているため、エラー出力してシステム停止する（Ｓ９０８）。
【０１０１】
また、マルチパスドライバ１３０は前述したようにデータ書き込み履歴定期削除処理で定期的にデータ書き込み履歴を削除する。図１０のフローチャートに添って説明する。
【０１０２】
まず、データ書き込み履歴情報４６０の削除周期４６５と削除数４６６を参照し（Ｓ１１０１）、その削除数４６６の回数だけ、データ書き込み履歴削除処理（図９のフローチャートの処理）を繰り返す（Ｓ１１０２）。データ書き込み履歴削除処理が完了したのち、削除周期４６５の時間だけ待ち（Ｓ１１０３）、再びデータ書き込み処理削除処理を繰り返す。なお、データ書き込み履歴情報４６０の削除周期４６５と削除数４６６はユーザ設定可能なパラメータであり、毎回読み込むことでデータ書き込み履歴を削除するパターンを動的に変えることができる。
【０１０３】
以上が、非同期レプリケーションを使った装置間マルチパスの通常時の動作である。
【０１０４】
［パスの切り替え処理］
次に、ホスト計算機１００とストレージ装置間のパスに障害が発生した場合に、バックアップ側装置にパスを切り替える処理を説明する。
【０１０５】
図１においてホスト計算機１００とマスタストレージ装置３００ａのアクティブパスが１１０ａ―２００ａ―３１０ａの経路であるとする。ＨＢＡ１１０ａまたはＦＣスイッチ２００ａまたはコントローラ３１０ａまたはその間のＦＣケーブルに障害が発生した場合は、アクティブパスを１１０ｂ―２００ｂ―３１１ａに切り替える。この単一ストレージ内でのマルチパスの仕組みについては周知であるため簡単に説明する。
【０１０６】
まず、アクティブパスが切断されると、ホスト計算機１００からマスタストレージ装置３００ａに対して発行したデータ読み込み／データ書き込みがタイムアウトエラーになる。
【０１０７】
タイムアウトエラーが発生すると、オペレーティングシステムのソフト割り込みが発生し、それをトリガとしてマルチパスドライバ１３０の割り込みハンドラが呼ばれる。
【０１０８】
そして、マルチパスドライバ１３０は仮想デバイス情報４００内のアクティブパス番号４３０内のパス番号を４４０ｂ内のパス番号に切り替え、前期のタイムアウトエラーとなったデータ読み込み／データ書き込みをリトライする。
【０１０９】
以上の処理により、以降のデータ読み込み／データ書き込みは１１０ｂ―２００ｂ―３１１ａに発行されるようになる。
【０１１０】
次に、装置をまたがったパス切り替えについて説明する。
【０１１１】
例えば、マスタストレージ装置３００ａのコントローラ３１０ａと３１１ａ両方の故障や、ＬＵ３２０ａの故障等の場合、ホスト計算機１００とマスタストレージ装置３００ａ間のすべてのパスが通信不可能な状態になるので、アクティブパスをバックアップストレージ装置３００ｂに切り替える必要がある。
【０１１２】
この処理の流れを図１２のフローチャートに示す。またホスト計算機１００とマスタストレージ装置３００ａとバックアップストレージ装置３００ｂのシーケンスを図１６に示す。
【０１１３】
装置間パス切り替え処理は、前述の装置内パス切り替えと同様に、データ読み込み／データ書き込みのタイムアウトエラーによるソフト割り込みをトリガとして動作する。
【０１１４】
しかし、装置間パス切り替え処理と同時並行にデータ読み込み／データ書き込み処理を実行するとデータ読み込み／データ書き込み要求の順序性が崩れることによるデータ破壊を招く可能性があるため、パス切り替えの間はデータ読み込み／データ書き込みを一時的に保留する必要がある。
【０１１５】
そのために、まずデータ読み込み／データ書き込み処理をロックする（Ｓ１２０１）。ロックするとフローチャート図７で示すようにデータ読み込み／データ書き込み要求はストレージ装置へ発行されず保留キューへキューイングする。
【０１１６】
次にバックアップストレージ装置３００ｂのパス情報４４０ｃと４４０ｄを仮想デバイス情報４００のマスタグループ４５０ａに、マスタストレージ装置３００ａのパス情報４４０ａと４４０ｂが仮想デバイス情報４００のバックアップグループ４５０ｂになるよう入れ替える。
【０１１７】
さらに、バックアップストレージ装置３００ｂに対してマスタ属性に切り替えるよう要求する（Ｓ１２０２）。
【０１１８】
次にアクティブパス番号を現在のマスタグループ４５０ｂ内の最も若いパス番号にする（Ｓ１２０３）。
【０１１９】
元のバックアップストレージ装置３００ｂがマスタ属性になると、元のマスタストレージ装置３００ａからのデータ書き込みは拒否されるようになる。
【０１２０】
これは、マスタストレージ装置３００ａが停止せずにホスト計算機１００とマスタストレージ装置３００ａ間の経路のみが切断されてパス切り替えが発生した場合に、マスタストレージ装置３００ａからバックアップストレージ装置３００ｂへのデータ書き込みが発生して一貫性が損なわれることを防ぐための措置である。
【０１２１】
次に、データ読み込み／データ書き込みを止めた状態で、データ書き込み履歴からデータ書き込み要求を生成し元のバックアップストレージ装置３００ｂに対して書き込む（Ｓ１２０５）。すると元のバックアップストレージ装置３００ｂにデータが復旧する。
【０１２２】
ここでファイル名４６１の削除ポインタ４６４の位置のデータ書き込み履歴のレコードが最も古いので、削除ポインタ４６４から書き込みポインタ４６３まで順番にレコードを取り出して、データ書き込み要求を生成しアクティブパスのデバイス４３２に発行する。
【０１２３】
ただし、データ書き込み履歴を格納するファイルは固定サイズのため、データ書き込み履歴が循環して書き込まれていることに注意して削除ポインタを移動する（Ｓ１２０４）。また、元のバックアップストレージ装置３００ｂに書き込んだデータ書き込み履歴のレコードは削除し、日付フィールドに０を入れる（Ｓ１２０６）。
【０１２４】
全てのデータ書き込み履歴を書き込むまで繰り返した後、前記タイムアウトエラーになったデータ読み込み／データ書き込み要求および保留キューに溜まっているデータ読み込み／データ書き込みを発行する（Ｓ１２０７）。
【０１２５】
最後にデータ読み込み／データ書き込みのロックを解除して（Ｓ１２０８）、データ読み込み／データ書き込み処理を再開する。以上の処理により、非同期レプリケーションを用いて、マスタストレージ装置３００ａに障害が発生してもデータを損失することなく装置間でアクセスパスを切り替え、バックアップストレージ装置３００ｂにデータを復旧させることが可能となる。
【０１２６】
本発明の実施例１では、非同期レプリケーションでデータ書き込み履歴をホスト計算機にも持たせることにより、マスタストレージ装置本体が全損した場合に、ホスト計算機のデータ書き込み履歴を使ってバックアップストレージ装置にデータを復旧させることができる
なお本実施例ではホスト計算機のＨＢＡが２台、２台のストレージ装置のコントローラが各２個で物理パスが４本の場合について述べたが、ホスト計算機のＨＢＡが１台、２台のストレージ装置のコントローラが各１個で物理パスが２本の場合でも実現できる。
【符号の説明】
【０１２７】
１００・・・ホスト計算機
１１０・・・ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）
１２０・・・ディスク（マスタストレージ装置にしたデータ書き込み要求の履歴を保存）
１３０・・・マルチパスドライバ（１００と１１０のアクセスパスの切り替え）
２００・・・ＦＣスイッチ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌスイッチ）
２００ａ・・・（３１０ａと３１０ｂに接続）
２００ｂ・・・（３１１ａと３１１ｂに接続）
３００・・・ストレージ装置
３００ａ・・・マスタストレージ装置
３００b・・・バックアップストレージ装置
３１０・・・マスタストレージ装置のコントローラ
３１１・・・バックアップストレージ装置のコントローラ
３２０・・・ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）
３２０ａ・・・マスタストレージ装置のＬＵ
３２０ｂ・・・バックアップストレージ装置のＬＵ
３３０・・・ディスク（ホスト計算機からのデータ書き込み要求の履歴を保存）
４００・・・仮想デバイス情報
４１０・・・デバイス番号
４２０・・・ＬＵ番号
４３０・・・アクティブパス番号
４３１・・パス番号（仮想デバイス情報内で一意に割り当てられた番号）
４３２・・・物理パスのデバイス番号
４３３・・・ステータス（パスの状態を表す製数値  Ｇｏｏｄ＝０、Ｅｒｒｏｒ＝１）
４４０・・・パス情報
４４１・・・パス番号
４４２・・・デバイス番号
４４３・・・ステータス
４５０・・・パス情報のグループ
４５０ａ・・・マスタグループ
４５０ｂ・・・バックアップグループ
４６０・・・データ書き込み履歴情報
４６１・・・データ書き込み履歴情報のファイル名
４６２・・・シーケンス番号（データ書き込み要求の順番を表す製数値０〜）
４６３・・・書き込みポインタ
４６４・・・削除ポインタ
４６５・・・削除周期
４６６・・・削除数
【図１】
2011003030.tif 000003
【図２】
2011003030.tif 000004
【図３】
2011003030.tif 000005
【図４】
2011003030.tif 000006
【図５】
2011003030.tif 000007
【図６】
2011003030.tif 000008
【図７】
2011003030.tif 000009
【図８】
2011003030.tif 000010
【図９】
2011003030.tif 000011
【図１０】
2011003030.tif 000012
【図１１】
2011003030.tif 000013
【図１２】
2011003030.tif 000014
【図１３】
2011003030.tif 000015
【図１４】
2011003030.tif 000016
【図１５】
2011003030.tif 000017
【図１６】
2011003030.tif 000018