(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-18
(45)【発行日】2023-07-26
(54)【発明の名称】疎結合システム
(51)【国際特許分類】
G06F 11/20 20060101AFI20230719BHJP
G06F 9/52 20060101ALI20230719BHJP
【FI】
G06F11/20 617
G06F9/52 120Z
G06F11/20 633
G06F11/20 630
(21)【出願番号】P 2019216419
(22)【出願日】2019-11-29
【審査請求日】2022-10-05
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】100124811
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】岩竹 勝平
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2009-058998(JP,A)
【文献】特開2012-212280(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/20
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続された稼働系排他制御装置および待機系排他制御装置と、を備え、
前記稼働系排他制御装置および前記待機系排他制御装置のそれぞれは、排他制御機能とホスト間通信のためのメッセージ転送機能とを備え、
前記複数のホストのそれぞれは、
稼働系排他制御装置および待機系排他制御装置のうち特別I/Fとして選択された排他制御装置の情報を記憶するテーブルと、
待機系排他制御装置が組み込まれるまでの期間は稼働系排他制御装置を特別I/Fとして選択し、待機系排他制御装置が組み込まれた後の期間は待機系排他制御装置を特別I/Fとして選択するように前記テーブルを更新し、前記稼働系排他制御装置の障害時、ホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行するMSCPリリーフ制御部と、
前記MSCPリリーフ制御部からメッセージ送信要求を受信すると、特別I/Fの使用を指定した通信要求を生成し、前記MSCPリリーフ制御部以外の要求元からメッセージ送信要求を受信すると、特別I/Fの使用を指定しない通信要求を生成するホスト間通信部と、
前記特別I/Fの使用を指定した通信要求に従って、前記テーブルの情報によって前記特別I/Fとして選択された排他制御装置に対して前記通信要求を送信し、前記特別I/Fの使用を指定しない通信要求に従って、稼働系排他制御装置に対して前記通信要求を送信するI/O制御部と、
を備える
疎結合システム。
【請求項2】
前記ホスト間通信部は、前記MSCPリリーフ制御部からのメッセージ送信要求が、特別I/F変更要求に係るものか否かを判断し、特別I/F変更要求に係るものでなければ特別I/Fの使用を指定した通信要求を生成し、特別I/F変更要求に係るものであれば特別I/Fの使用を指定しない通信要求を生成するように構成されている、
請求項
1に記載の疎結合システム。
【請求項3】
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続され、排他制御機能とホスト間通信のためのメッセージ転送機能とを有する稼働系排他制御装置および待機系排他制御装置と、を備えた疎結合システムが実行するリカバリ方法であって、
前記複数のホストのそれぞれは
、
待機系排他制御装置が組み込まれるまでの期間は稼働系排他制御装置を特別I/Fとして選択し、待機系排他制御装置が組み込まれた後の期間は待機系排他制御装置を特別I/Fとして選択するように、稼働系排他制御装置および待機系排他制御装置のうち特別I/Fとして選択された排他制御装置の情報を記憶するテーブルを更新し、
業務処理を実行するアプリケーションからホスト間通信要求を受信すると、特別I/Fの使用を指定しない通信要求を生成し、MSCPリリーフを実行するMSCPリリーフ制御部からメッセージ送信要求を受信すると、特別I/Fの使用を指定した通信要求を生成し、
前記特別I/Fの使用を指定した通信要求に従って、前記テーブルの情報によって前記特別I/Fとして選択された排他制御装置に対して前記通信要求を送信し、前記特別I/Fの使用を指定しない通信要求に従って、稼働系排他制御装置に対して前記通信要求を送信し、
前記稼働系排他制御装置の障害時、ホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行する、
リカバリ方法。
【請求項4】
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続され、排他制御機能とホスト間通信のためのメッセージ転送機能とを有する稼働系排他制御装置および待機系排他制御装置と、を備えた疎結合システムにおける前記ホストを構成するコンピュータであって、
稼働系排他制御装置および待機系排他制御装置のうち特別I/Fとして選択された排他制御装置の情報を記憶するテーブルと、
待機系排他制御装置が組み込まれるまでの期間は稼働系排他制御装置を特別I/Fとして選択し、待機系排他制御装置が組み込まれた後の期間は待機系排他制御装置を特別I/Fとして選択するように前記テーブルを更新し、前記稼働系排他制御装置の障害時、ホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行するMSCPリリーフ制御部と、
前記MSCPリリーフ制御部からメッセージ送信要求を受信すると、特別I/Fの使用を指定した通信要求を生成し、前記MSCPリリーフ制御部以外の要求元からメッセージ送信要求を受信すると、特別I/Fの使用を指定しない通信要求を生成するホスト間通信部と、
前記特別I/Fの使用を指定した通信要求に従って、前記テーブルの情報によって前記特別I/Fとして選択された排他制御装置に対して前記通信要求を送信し、前記特別I/Fの使用を指定しない通信要求に従って、稼働系排他制御装置に対して前記通信要求を送信するI/O制御部と、
を備えるコンピュータ。
【請求項5】
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続され、排他制御機能とホスト間通信のためのメッセージ転送機能とを有する稼働系排他制御装置および待機系排他制御装置と、を備えた疎結合システムにおける前記ホストを構成するコンピュータに、
待機系排他制御装置が組み込まれるまでの期間は稼働系排他制御装置を特別I/Fとして選択し、待機系排他制御装置が組み込まれた後の期間は待機系排他制御装置を特別I/Fとして選択するように、稼働系排他制御装置および待機系排他制御装置のうち特別I/Fとして選択された排他制御装置の情報を記憶するテーブルを更新する処理と、
業務処理を実行するアプリケーションからホスト間通信要求を受信すると、特別I/Fの使用を指定しない通信要求を生成し、MSCPリリーフを実行するMSCPリリーフ制御部からメッセージ送信要求を受信すると、特別I/Fの使用を指定した通信要求を生成する処理と、
前記特別I/Fの使用を指定した通信要求に従って、前記テーブルの情報によって前記特別I/Fとして選択された排他制御装置に対して前記通信要求を送信し、前記特別I/Fの使用を指定しない通信要求に従って、稼働系排他制御装置に対して前記通信要求を送信する処理と、
前記稼働系排他制御装置の障害時、ホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行する処理と、
を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、疎結合システム、リカバリ方法、コンピュータ、および、プログラムに関する。
【背景技術】
【0002】
複数のホスト(Host-Computer、ホストコンピュータ)間で共用される共用資源を、MSCP(Multi-System Control Processor、排他制御装置)を用いて排他制御しながら複数の処理を行う疎結合システム(Loosely-Coupled System)がある。そのような疎結合システムにおいて、ホストから稼働系MSCPに送信したロックもしくはアンロックを要求するコマンドをホスト側でも保持し、稼働系MSCPが故障した場合、ホストに保持するコマンドに基づいて、故障した稼働系MSCPが保持していた排他制御情報を待機系MSCPに再生することにより、システムの運用を継続させる技術がある(例えば、特許文献1参照)。ホスト間の排他制御に使われるMSCPの稼働系障害時に待機系MSCPに切り替えを行うことをMSCPリリーフと呼ぶ。複数のホストは、MSCPリリーフを行うときに相互に同期をとりながら連携して動作しなければならない。一般に、そのような同期はホスト間通信によって実現されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第3134864号
【文献】特許第3157513号
【発明の概要】
【発明が解決しようとする課題】
【0004】
複数のホストを備えた疎結合システムにおいて、拡張記憶装置を使用してホスト間通信を行う構成がある(例えば特許文献2参照)。しかしながら、複数のホストと複数のMSCPとを備えた疎結合システムにおいて、拡張記憶装置を使用してホスト間通信を行う場合、システムを構成する装置の種類および個数が増大し、コストが嵩む。
【0005】
本発明の目的は、上述した課題を解決する疎結合システムを提供することにある。
【課題を解決するための手段】
【0006】
本発明の一形態に係る疎結合システムは、
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続された稼働系排他制御装置および待機系排他制御装置と、を備え、
前記稼働系排他制御装置および前記待機系排他制御装置のそれぞれは、排他制御機能とホスト間通信のためのメッセージ転送機能とを備え、
前記複数のホストのそれぞれは、前記稼働系排他制御装置の障害時、前記待機系排他制御装置を使用するホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行するように構成されている。
【0007】
また、本発明の他の形態に係るリカバリ方法は、
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続され、排他制御機能とホスト間通信のためのメッセージ転送機能とを有する稼働系排他制御装置および待機系排他制御装置と、を備えた疎結合システムが実行するリカバリ方法であって、
前記複数のホストのそれぞれは、前記稼働系排他制御装置の障害時、前記待機系排他制御装置を使用するホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行する、
ように構成されている。
【0008】
また、本発明の他の形態に係るコンピュータは、
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続された、排他制御機能とホスト間通信のためのメッセージ転送機能とを有する稼働系排他制御装置および待機系排他制御装置と、を備えた疎結合システムにおける前記ホストを構成するコンピュータであって、
前記稼働系排他制御装置の障害時、前記待機系排他制御装置を使用するホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行するMSCPリリーフ制御部、
を備えるように構成されている。
【0009】
また、本発明の他の形態に係るプログラムは、
複数のホストと、前記複数のホストで共用する共用資源と、前記複数のホストそれぞれに対して信号線を通じて接続され、排他制御機能とホスト間通信のためのメッセージ転送機能とを有する稼働系排他制御装置および待機系排他制御装置と、を備えた疎結合システムにおける前記ホストを構成するコンピュータに、
待機系排他制御装置が組み込まれるまでの期間は稼働系排他制御装置を特別I/Fとして選択し、待機系排他制御装置が組み込まれた後の期間は待機系排他制御装置を特別I/Fとして選択するように、稼働系排他制御装置および待機系排他制御装置のうち特別I/Fとして選択された排他制御装置の情報を記憶するテーブルを更新する処理と、
業務処理を実行するアプリケーションからホスト間通信要求を受信すると、特別I/Fの使用を指定しない通信要求を生成し、MSCPリリーフを実行するMSCPリリーフ制御部からメッセージ送信要求を受信すると、特別I/Fの使用を指定した通信要求を生成する処理と、
前記特別I/Fの使用を指定した通信要求に従って、前記テーブルの情報によって前記特別I/Fとして選択された排他制御装置に対して前記通信要求を送信し、前記特別I/Fの使用を指定しない通信要求に従って、稼働系排他制御装置に対して前記通信要求を送信する処理と、
前記稼働系排他制御装置の障害時、ホスト間通信によって前記複数のホスト間で同期を取りながら、前記共用資源の排他制御に使用する排他制御装置を稼働系排他制御装置から待機系排他制御装置に切り替えるMSCPリリーフを実行する処理と、
を行わせるように構成されている。
【発明の効果】
【0010】
本発明は、上述した構成を有することにより、疎結合システムを構成する装置の種類および個数を削減でき、その分、コストを抑えることができる。
【図面の簡単な説明】
【0011】
【
図1】本発明の第1の実施形態に係る疎結合システムのブロック図である。
【
図2】本発明の第1の実施形態におけるロックデータテーブルの一例を示す図である。
【
図3】本発明の第1の実施形態における受信状況テーブルの一例を示す図である。
【
図4A】本発明の第1の実施形態において、待機系MSCPが組み込まれる前のMSCP構成管理テーブルの一例を示す図である。
【
図4B】本発明の第1の実施形態において、待機系MSCPが組み込まれた後のMSCP構成管理テーブルの一例を示す図である。
【
図5】本発明の第1の実施形態におけるホスト間通信のための受信制御テーブルの一例を示す図である。
【
図6】本発明の第1の実施形態におけるホスト間通信メッセージの形式例を示す図である。
【
図7】本発明の第1の実施形態におけるホスト間通信部の処理の一例を示すフローチャートである。
【
図8】本発明の第1の実施形態におけるI/O制御部の処理の一例を示すフローチャートである。
【
図9】本発明の第1の実施形態において待機系MSCPをシステムに組み込む指示がオペレータからホストに入力されたときにMSCPリリーフ制御部が実行する処理の一例を示すフローチャートである。
【
図10】本発明の第1の実施形態において稼働系MSCPが正常に動作している状態でホスト上のAPから共用資源の排他要求が出されたときのシステムの動作を示すフローチャートである。
【
図11】本発明の第1の実施形態におけるMSCPリリーフ動作の一例を示すフローチャートである。
【
図12】本発明の第2の実施形態に係る疎結合システムのブロック図である。
【発明を実施するための形態】
【0012】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態に係る疎結合システム100は、2台のホスト1、2と、ホスト1,2間で共用される共用資源3と、稼働系MSCP4と、待機系MSCP5とを備えている。ホスト1は、信号線61、62、63を通じて、共用資源3、稼働系MSCP4、待機系MSCP5に通信可能に接続されている。またホスト2は、信号線64、65、66を通じて、共用資源3、稼働系MSCP4、待機系MSCP5に通信可能に接続されている。また稼働系MSCP4と待機系MSCP5は、信号線67を通じて互いに通信可能に接続されている。
【0013】
共用資源3は、ホスト1,2間で共用する資源(リソース)である。共用資源3は、例えばディスク装置などの記憶装置、或いは記憶装置に記憶されたファイルなどであってよい。
【0014】
ホスト1は、オンライン処理やバッチ処理などの業務処理を実行する情報処理装置である。ホスト1は、演算処理部11と記憶部12と入出力装置13とを含んで構成されている。
【0015】
入出力装置13は、キーボードなどの入力装置と、液晶ディスプレイなどの画面表示装置とを含んで構成されている。記憶部12は、ハードディスクやメモリなどの記憶装置からなり、演算処理部11での各種処理に必要な処理情報およびプログラム121を記憶するように構成されている。プログラム121は、演算処理部11に読み込まれて実行されることにより各種処理部を実現するプログラムであり、入出力装置13などのデータ入出力機能を介して外部装置(図示せず)や記録媒体(図示せず)から予め読み込まれて記憶部12に保存される。記憶部12で記憶される主な処理情報として、ロックデータテーブル122と受信状況テーブル123とMSCP構成管理テーブル124と受信制御テーブル125とがある。
【0016】
ロックデータテーブル122は、ホスト1から稼働系MSCP4に対して送信された共用資源3をロックもしくはアンロックするコマンドを保持するテーブルである。
図2は、ロックデータテーブル122の一例を示す。この例のロックデータテーブル122は、ロックデータを格納するエントリを複数備えている。それぞれのエントリは、MSCP_ID、コマンドイメージ、結果、通番の各項目を有する。MSCP_IDの項目には、稼働系MSCP4を一意に識別する識別情報が記録される。コマンドイメージの項目には、ロックコマンドもしくはアンロックコマンドのコマンドイメージが記録される。コマンドイメージは、例えば、ロックか、アンロックの何れであるかを示す要求種別、対象となる共用資源3の識別情報、ロックもしくはアンロックを要求したホストのアプリケーションプロセス(タスクとも称す)を一意に識別する識別情報などを含んで構成されていてよい。結果の項目には、ロックコマンドもしくはアンロックコマンドの実行結果が記録される。実行結果には、例えば、ロック成功、ロック待ち、アンロック成功などがある。通番の項目には、ロックコマンドもしくはアンロックコマンドの実行結果に対して稼働系MSCP4側で採番された通し番号が記録される。
【0017】
受信状況テーブル123は、待機系MSCP5における稼働系MSCP4からのロックデータの受信状況を記録するテーブルである。
図3は、受信状況テーブル123の一例を示す。この例の受信状況テーブル123は、稼働系MSCP_IDと待機系MSCP_IDと受信完了通番の各項目を有する1つのエントリを備えている。稼働系MSCP_IDの項目には、稼働系MSCP4の識別情報が記録される。待機系MSCP_IDの項目には、待機系MSCP5の識別情報が記録される。受信完了通番の項目には、待機系MSCP5が稼働系MSCP4から最後に受信したロックデータに含まれる通番が記録される。受信完了通番は、稼働系MSCP4から待機系MSCP5への転送が完了した最新のロックデータに含まれる通番であるとも言える。
【0018】
MSCP構成管理テーブル124は、ホストに接続されている稼働系MSCPおよび待機系MSCPに関する情報、特別I/Fとして選択されているMSCPに関する情報を記憶するテーブルである。
【0019】
図4Aは、MSCP構成管理テーブル124および後述するMSCP構成管理テーブル224の一例を示す。
図4Aに示す例は、ホスト1、2に対して稼働系MSCP4が接続され、待機系MSCP5が未だ接続されていないときのものである。MSCP構成管理テーブルの1つのエントリは、ホスト_IDとMSCP情報と特別I/F情報の各項目から構成される。ホスト_IDの項目には、ホストの識別情報が記録される。MSCP情報の項目には、ホストに接続されているMSCPの識別情報と種別(稼働系または待機系)が記録される。特別I/F情報の項目には、当該MSCPが特別I/Fに選択されているか否かを示す情報が記録される。
図4Aに示すMSCP構成管理テーブル124の1行目のエントリは、ホスト1に稼働系MSCP4が接続されていること、その稼働系MSCP4が特別I/Fに選択されていることを表している。また、
図4Aに示すMSCP構成管理テーブル224の1行目のエントリは、ホスト2に稼働系MSCP4が接続されていること、その稼働系MSCP4が特別I/Fに選択されていることを表している。
【0020】
図4Bは、MSCP構成管理テーブル124およびMSCP構成管理テーブル224の他の例を示す。
図4Bに示す例は、ホスト1、2に対して稼働系MSCP4および待機系MSCP5が接続されているときのものである。
図4Bに示すMSCP構成管理テーブル124の1行目のエントリは、ホスト1に稼働系MSCP4が接続されていること、その稼働系MSCP4が特別I/Fに選択されていないことを表している。また、
図4Bに示すMSCP構成管理テーブル124の2行目のエントリは、ホスト1に待機系MSCP5が接続されていること、その待機系MSCP5が特別I/Fに選択されていることを表している。また、
図4Bに示すMSCP構成管理テーブル224の1行目のエントリは、ホスト2に稼働系MSCP4が接続されていること、その稼働系MSCP4が特別I/Fに選択されていないことを表している。また、
図4Bに示すMSCP構成管理テーブル224の2行目のエントリは、ホスト2に待機系MSCP5が接続されていること、その待機系MSCP5が特別I/Fに選択されていることを表している。
【0021】
受信制御テーブル125は、ホスト1が他のホストからホスト間通信メッセージを受信する制御に使用するテーブルである。
図5は、受信制御テーブル125の一例を示す。この例の受信制御テーブル125は、送信元利用者_IDと送信元ホスト_IDと通知先と受信バッファの各項目を有する1以上のエントリを備えている。送信元利用者_IDの項目には、送信元となる利用者の識別情報が記録される。送信元ホスト_IDの項目には、送信元となるホストの識別情報が記録される。通知先の項目には、ホスト間通信メッセージの通知先セマフォが記録される。受信バッファの項目には、受信したメッセージを格納する受信バッファの情報が記録される。例えば、1行目のエントリは、ホスト2のAP211からホスト間通信メッセージを受信した場合、受信バッファB101に格納し、セマフォ(AP111)に通知することを表している。また、2行目のエントリは、ホスト2のMSCPリリーフ制御部218からホスト間通信メッセージを受信した場合、受信バッファB102に格納し、セマフォ(MSCPリリーフ制御部118)に通知することを表している。ここで、セマフォ(AP111)、セマフォ(MSCPリリーフ制御部118)は、AP111、MSCPリリーフ制御部118が指定した通知先セマフォを意味している。
【0022】
演算処理部11は、CPUなどのマイクロプロセッサとその周辺回路を有し、記憶部12からプログラム121を読み込んで実行することにより、上記ハードウェアとプログラム121とを協働させて各種処理部を実現するように構成されている。演算処理部11で実現される主な処理部として、AP(アプリケーションプロセス)111、排他制御部112、I/O制御部113、ロックデータ保持部114、ホスト間通信部115、受信状況問合せ部116、障害検出部117、および、MSCPリリーフ制御部118がある。
【0023】
AP111は、オンライン処理やバッチ処理などの業務処理を実行するように構成されている。AP111は、共用資源3に対してアクセスする前に共用資源3のロックを要求する排他要求(ロック要求)を排他制御部112に対して発行し、ロック成功のコマンド実行結果が排他制御部112から通知された後、共用資源3をアクセスするように構成されている。またAP111は、共用資源3に対するアクセスを終えると、共用資源3のアンロックを要求する排他要求(アンロック要求)を排他制御部112に対して発行するように構成されている。また、AP111は、ホスト2のAP211との間でホスト間通信を行うために、事前に、AP211から受信するメッセージを格納するための受信バッファを確保した上で、ホスト間通信部115に対して、AP211の識別情報、通知先セマフォ、確保した受信バッファの情報を通知するように構成されている。
【0024】
排他制御部112は、AP111から排他要求(ロック要求、アンロック要求)が発行されると、その排他要求に応じたコマンド(ロックコマンド、アンロックコマンド)を生成し、当該コマンドを稼働系MSCP4に対して送信(発行)するようI/O制御部113に要求するように構成されている。また排他制御部112は、上記コマンドの応答としてI/O制御部113からコマンド実行結果と通番とを受信すると、そのコマンド実行結果を要求元のAP111へ報告し、また、稼働系MSCP4の識別番号とI/O制御部113に対して発行したコマンドのイメージとI/O制御部113から受信したコマンド実行結果と通番とをロックデータ保持部114へ通知するように構成されている。
【0025】
I/O制御部113は、ホスト1と外部装置(MSCP、共用資源など)との間のI/O制御を司る。例えば、I/O制御部113は、排他制御部112からの要求に応じて、コマンド(ロックコマンド、アンロックコマンド)を、信号線62を通じて稼働系MSCP4に対して発行する。またI/O制御部113は、上記発行したコマンドの実行結果と通番とを信号線62を通じて稼働系MSCP4から受信すると、そのコマンド実行結果と通番とを排他制御部112に伝達する。その他、I/O制御部113は、ホスト間通信や受信状況問合せなどのためにホスト1とMSCP4、5との間のI/O制御を実施する。
【0026】
ロックデータ保持部114は、ロックデータをロックデータテーブル122に保存するように構成されている。例えば、ロックデータ保持部114は、稼働系MSCP4の識別番号とI/O制御部113に対して発行したコマンドのイメージとI/O制御部113から受信したコマンド実行結果と通番とを排他制御部112から通知されると、それらを1つのロックデータとしてロックデータテーブル122に確保した1つの空きエントリに記録する。
【0027】
ホスト間通信部115は、ホスト間通信を行う利用者(AP111やMSCPリリーフ制御部118など)とI/O制御部113との間に介在して、ホスト間通信の制御を行うように構成されている。ホスト間通信部115は、利用者から、送信元利用者の識別情報、通知先セマフォ、確保した受信バッファの情報が通知されると、それらの項目を記載した新たなエントリを受信制御テーブル125に追加するように構成されている。また、ホスト間通信部115は、利用者からホスト間通信メッセージの送信要求を受信すると、I/O制御部113を通じて稼働系MSCP4または待機系MSCP5にホスト間通信のためのI/Oを発行するように依頼するように構成されている。また、ホスト間通信部115は、I/O制御部113を通じて稼働系MSCP4または待機系MSCP5からホスト間通信メッセージを受信すると、事前に確保しているバッファに格納し、通知先に登録されたセマフォに通知を行うように構成されている。
【0028】
図6は、ホスト間通信メッセージの形式の一例を示す。この例では、ホスト間通信メッセージは、送信元ホスト_IDと送信元利用者_IDと宛先ホスト_IDとメッセージの各項目から構成されている。
【0029】
受信状況問合せ部116は、待機系MSCP5に対して、稼働系MSCP4からのロックデータの受信状況を問合せるように構成されている。また受信状況問合せ部116は、待機系MSCP5から受信状況の問合せ結果を受信すると、受信した問合せ結果に従って、受信状況テーブル123を更新するように構成されている。後述するように、受信状況の問合せ結果には、待機系MSCP5が稼働系MSCP4から最後に受信したロックデータに含まれる通番が含まれている。受信状況問合せ部116は、受信状況の問合せ結果に含まれる通番により、受信状況テーブルの受信完了通番の項目を上書きするように構成されている。
【0030】
障害検出部117は、システムの運用中、MSCP4、5の故障(障害)を検出するように構成されている。故障検出手法は任意である。例えば、障害検出部117は、一定周期でMSCP4、5に対して何らかの問合せを行い、その問合せに対して一定時間内にMSCP4、5から応答がなかった場合、MSCP4、5に故障が発生したことを検出してよい。
【0031】
MSCPリリーフ制御部118は、システムの運用中に障害検出部117によって稼働系MSCP4の故障が検出された場合、故障したMSCP4が保持していた排他制御情報を待機系MSCP5に再生した後、待機系MSCP5を新たに稼働系MSCPとして動作させてシステムの運用を継続させるように構成されている。即ち、MSCPリリーフ制御部118は、MSCPリリーフの制御を行うように構成されている。MSCPリリーフ制御部118は、MSCPリリーフを行うときに他ホストのMSCPリリーフ制御部218と相互に同期をとりながら連携して動作するように構成されている。また、MSCPリリーフ制御部118は、そのような同期をホスト間通信によって行うように構成されている。MSCPリリーフ制御部118は、ホスト2のMSCPリリーフ制御部218との間でホスト間通信を行うために、事前に、MSCPリリーフ制御部218から受信するメッセージを格納するための受信バッファを確保した上で、ホスト間通信部115に対して、MSCPリリーフ制御部218の識別情報、通知先セマフォ、確保した受信バッファの情報を通知するように構成されている。
【0032】
ホスト2は、ホスト1と同じくオンライン処理やバッチ処理などの業務処理を実行する情報処理装置である。ホスト2は、ホスト1と同様な構成および機能を有している。即ち、ホスト2は、ホスト1の演算処理部11と記憶部12と入出力装置13と同様な演算処理部21と記憶部22と入出力装置23とを含んで構成されている。また記憶部22は、ホスト1のプログラム121、ロックデータテーブル122、受信状況テーブル123、MSCP構成管理テーブル124、および、受信制御テーブル125と同様な、プログラム221、ロックデータテーブル222、受信状況テーブル223、MSCP構成管理テーブル224、および、受信制御テーブル225を記憶するように構成されている。また演算処理部21は、ホスト1のAP111、排他制御部112、I/O制御部113、ロックデータ保持部114、ホスト間通信部115、受信状況問合せ部116、障害検出部117、および、MSCPリリーフ制御部118と同様なAP211、排他制御部212、I/O制御部213、ロックデータ保持部214、ホスト間通信部215、受信状況問合せ部216、障害検出部217、および、MSCPリリーフ制御部218を含んで構成されている。
【0033】
稼働系MSCP4は、通常時に共用資源3の排他制御を実行する情報処理装置である。稼働系MSCP4は、演算処理部41と記憶部42とを含んで構成されている。
【0034】
記憶部42は、ハードディスクやメモリなどの記憶装置からなり、演算処理部41での各種処理に必要な処理情報およびプログラム421を記憶するように構成されている。プログラム421は、演算処理部41に読み込まれて実行されることにより各種処理部を実現するプログラムであり、入出力装置(図示せず)などのデータ入出力機能を介して外部装置(図示せず)や記録媒体(図示せず)から予め読み込まれて記憶部42に保存される。記憶部42で記憶される主な処理情報として、排他制御テーブル422と通信領域424とがある。
【0035】
排他制御テーブル422は、ホスト1およびホスト2からのロックコマンドおよびアンロックコマンドに基づいた共用資源3の排他制御状態を管理するテーブルである。例えば、排他制御テーブル422は、共用資源毎に、共用資源ID、その共用資源をロックしているホスト上のタスクIDの情報を含むロックリスト、その共用資源でロック待ちしているタスクIDの情報を含むロック待ちリストなどを管理する。
【0036】
通信領域424は、ホスト1とホスト2間で稼働系MSCP4を通じて行われるホスト間通信のために共用される通信領域である。
【0037】
演算処理部41は、CPUなどのマイクロプロセッサとその周辺回路を有し、記憶部42からプログラム421を読み込んで実行することにより、上記ハードウェアとプログラム421とを協働させて各種処理部を実現するように構成されている。演算処理部41で実現される主な処理部として、排他制御部411、通番制御部412、ロックデータ送信部413、および、メッセージ転送部414がある。
【0038】
排他制御部411は、ホスト1,2間で共用される共用資源3の排他制御を、排他制御テーブル422を生成・更新しながら実行するように構成されている。
【0039】
例えば、排他制御部411は、ホスト1、2からロックを要求するコマンドを受信すると、排他制御テーブル422に記録された共用資源のロック状態から、ロック要求された共用資源をロックすることが可能か否かを判定する。ロック可であれば、排他制御部411は、ロックを要求したタスクがその共用資源をロックしている情報を排他制御テーブル422に登録し、ロック要求を行ったホスト上のタスクに対してロック成功のコマンド実行結果と通番制御部412から取得した通番とを送信する。また排他制御部411は、稼働系MSCP4の識別情報と上記ロックを要求するコマンドのイメージと上記実行結果と上記通番とをロックデータ送信部413へ通知する。
【0040】
ロック不可であれば、排他制御部411は、ロック待ちの情報を排他制御テーブル422に登録し、ロック要求を行ったホスト上のタスクに対してロック待ちのコマンド実行結果と通番制御部412から取得した通番とを送信する。また排他制御部411は、稼働系MSCP4の識別情報と上記ロックを要求するコマンドのイメージと上記実行結果と上記通番とをロックデータ送信部413へ通知する。
【0041】
また排他制御部411は、ホスト1,2からアンロックを要求するコマンドを受信すると、アンロック要求に該当するタスクのロック情報を排他制御テーブル422から削除し、アンロック要求を行ったホスト上のタスクに対してアンロック成功のコマンド実行結果と通番制御部412から取得した通番を送信する。また排他制御部411は、稼働系MSCP4の識別情報と上記アンロックを要求するコマンドのイメージと上記実行結果と上記通番とをロックデータ送信部413へ通知する。
【0042】
さらに、アンロックされた共用資源に対してロック待ちしているタスクがあれば、排他制御部411は、排他制御テーブル422から当該ロック待ちの情報を削除した後、排他制御テーブル422にそのタスクがその共用資源をロックしている情報を登録し、ロック待ちしていたホスト上のタスクに対してロック成功の実行結果と排他IDと通番制御部412から取得した通番とを含む通知を送信する。以降、この通知をアテンション通知と呼ぶ。上記排他IDは、ロック待ちになっていたロックコマンドを特定できる情報であり、例えば、ロックコマンドに含まれるホスト上のタスクIDおよび共用資源IDから構成されていてよい。また排他制御部411は、稼働系MSCP4の識別情報とアテンション通知とをロックデータ送信部413へ通知する。
【0043】
通番制御部412は、排他制御部411から通番の取得が要求されると、排他制御部411に最後に通知した通番の次の通番を排他制御部411に通知するように構成されている。
【0044】
ロックデータ送信部413は、稼働系MSCP4の識別情報とロックもしくはアンロックを要求するコマンドのイメージと当該コマンドの実行結果と通番とが排他制御部411から通知されると、それらを1つのロックデータとして、信号線67を通じて待機系MSCP5へ送信するように構成されている。またロックデータ送信部413は、稼働系MSCP4の識別情報とアテンション通知とが排他制御部411から通知されると、それらを1つのロックデータとして、信号線67を通じて待機系MSCP5へ送信するように構成されている。ロックデータ送信部413は、1つのロックデータが発生する毎に、その発生したロックデータを、信号線67を通じて待機系MSCP5へ送信するように構成されていてよい。或いはロックデータ送信部413は、発生したロックデータを送信バッファに蓄積し、蓄積量が閾値を超えるか、或いは最も過去に蓄積したロックデータの蓄積時刻からの経過時間が一定時間を超えると、送信バッファに蓄積された全てのロックデータを、信号線67を通じて一括して待機系MSCP5へ送信するように構成されていてよい。
【0045】
メッセージ転送部414は、稼働系MSCP4を通じて行われるホスト間通信のメッセージの転送を行うように構成されている。例えば、メッセージ転送部414は、信号線62を通じてホスト1から受信したホスト2宛てのメッセージを、通信領域424に一時的に保持し、その後、通信領域424に保持したホスト2宛てのメッセージを、信号線65を通じてホスト2へ送信するように構成されている。またメッセージ転送部414は、信号線65を通じてホスト2から受信したホスト1宛てのメッセージを、通信領域424に一時的に保持し、その後、通信領域424に保持したホスト1宛てのメッセージを、信号線62を通じてホスト1へ送信するように構成されている。
【0046】
待機系MSCP5は、稼働系MSCP4が故障した場合に稼働系MSCP4に代わって共用資源3の排他制御を実行する情報処理装置である。待機系MSCP5は、演算処理部51と記憶部52とを含んで構成されている。
【0047】
記憶部52は、ハードディスクやメモリなどの記憶装置からなり、演算処理部51での各種処理に必要な処理情報およびプログラム521を記憶するように構成されている。プログラム521は、演算処理部51に読み込まれて実行されることにより各種処理部を実現するプログラムであり、入出力装置(図示せず)などのデータ入出力機能を介して外部装置(図示せず)や記録媒体(図示せず)から予め読み込まれて記憶部52に保存される。記憶部52で記憶される主な処理情報として、排他制御テーブル522とロックデータテーブル523と通信領域524とがある。
【0048】
ロックデータテーブル523は、稼働系MSCP4から受信したロックデータを保持するテーブルである。
【0049】
排他制御テーブル522は、MSCPリリーフによって再生された排他制御テーブルである。その構成は、排他制御テーブル422と同じである。
【0050】
通信領域524は、ホスト1とホスト2間で待機系MSCP5を通じて行われるホスト間通信のために共用される通信領域である。
【0051】
演算処理部51は、CPUなどのマイクロプロセッサとその周辺回路を有し、記憶部52からプログラム521を読み込んで実行することにより、上記ハードウェアとプログラム521とを協働させて各種処理部を実現するように構成されている。演算処理部51で実現される主な処理部として、メッセージ転送部514、ロックデータ受信部515、排他制御テーブル再生部516、および、受信状況応答部517がある。
【0052】
ロックデータ受信部515は、稼働系MSCP4のロックデータ送信部413から送信されたロックデータを、信号線67を通じて受信するように構成されている。ロックデータ受信部515は、受信したロックデータをロックデータテーブル523に保存するように構成されている。またロックデータ受信部515は、稼働系MSCP4から最後に受信したロックデータに含まれる通番を受信状況応答部517に通知するように構成されている。さらにロックデータ受信部515は、MSCPリリーフ時、ホスト1、2のMSCPリリーフ制御部118から送信されたロックデータ(後述する不足ロックデータ)を、信号線63、66を通じて受信し、ロックデータテーブル523に保存するように構成されている。
【0053】
受信状況応答部517は、ロックデータ受信部515から通知された、稼働系MSCP4から最後に受信したロックデータに含まれる通番を保持するように構成されている。また受信状況応答部517は、ホスト1、2の受信状況問合せ部116、216から受信状況の問合せ要求を受信すると、最後に保持した通番を問合せ元に送信するように構成されている。
【0054】
排他制御テーブル再生部516は、MSCPリリーフ時、ロックデータテーブル523に保持されたロックデータに基づいて、故障した稼働系MSCP4の排他制御テーブル422を排他制御テーブル522として再生するように構成されている。
【0055】
メッセージ転送部514は、待機系MSCP5を通じて行われるホスト間通信のメッセージの転送を行うように構成されている。例えば、メッセージ転送部514は、信号線63を通じてホスト1から受信したホスト2宛てのメッセージを、通信領域524に一時的に保持し、その後、通信領域524に保持したホスト2宛てのメッセージを、信号線66を通じてホスト2へ送信するように構成されている。またメッセージ転送部514は、信号線66を通じてホスト2から受信したホスト1宛てのメッセージを、通信領域524に一時的に保持し、その後、通信領域524に保持したホスト1宛てのメッセージを、信号線63を通じてホスト1へ送信するように構成されている。
【0056】
次に、上述のように構成された疎結合システム100の動作を説明する。
【0057】
先ず、ホスト間通信に関連する動作を説明する。以下では、ホスト間通信部115について説明するが、ホスト間通信部215も同様の動作となる。
【0058】
図7は、ホスト間通信部115が利用者からホスト間通信メッセージの送信要求を受信したときに実行する処理の一例を示すフローチャートである。
図7を参照すると、ホスト間通信部115は、AP111またはMSCPリリーフ制御部118などからホスト間通信メッセージの送信要求を受信すると、送信元利用者_IDの項目(
図6参照)に記録されたIDに基づいて、要求元がMSCPリリーフ制御部118か否かを判断する(ステップS11)。次に、ホスト間通信部115は、要求元がMSCPリリーフ制御部118であれば、メッセージの項目(
図6参照)に記載されたメッセージを解析して、特別I/Fの変更を要求するメッセージか否かを判断する(ステップS129)。次に、ホスト間通信部115は、特別I/Fの変更を要求するメッセージでなければ、特別I/Fの使用を指定した送信要求を生成し(ステップS13)、I/O制御部113に対して、上記生成した送信要求に基づくI/O発行を要求する(ステップS16)。また、ホスト間通信部115は、要求元がMSCPリリーフ制御部118でないか、或いは要求元がMSCPリリーフ制御部118であっても特別I/Fの変更を要求するメッセージでなければ、MSCPリリーフ実行中か否かを判断し(ステップS14)、MSCPリリーフ実行中でなければ、特別I/Fの使用を指定しない送信要求を生成し(ステップS15)、I/O制御部113に対して、上記生成した送信要求に基づくI/O発行を要求する(ステップS16)。また、ホスト間通信部115は、MSCPリリーフ実行中であれば、受信したホスト間通信メッセージ要求に基づくI/O発行をMSCPリリーフが完了するまで待ち合わせる(ステップS17)。
【0059】
このようにホスト間通信部115は、MSCPリリーフ制御部118からホスト間通信メッセージの送信要求を受信すると、一部の例外(即ち特別I/F変更要求)を除き、特別I/Fの使用を指定した送信要求に基づくI/O発行をI/O制御部113に要求し、MSCPリリーフ制御部118以外のAP111などからホスト間通信メッセージの送信要求を受信すると、特別I/Fの使用を指定しない送信要求に基づくI/O発行をI/O制御部113に要求する。
【0060】
MSCPリリーフ制御部118から特別I/F変更要求のホスト間通信が出されたときに、特別I/Fの使用を指定した送信要求を生成しない理由は、以下の通りである。即ち、待機系MSCP5に障害が発生した場合、MSCP構成管理テーブル124、224を
図4Bに示す状態から
図4Aに示す状態に変更するために、MSCPリリーフ制御部118とMSCPリリーフ制御部218との間で特別I/F変更要求を授受する。このとき、ホスト間通信の要求元がMSCPリリーフ制御部であるので、ステップS12が存在しないと、特別I/Fの使用を指定した送信要求が生成され、
図8のステップS22において障害の発生した待機系MSCP5が選択されてしまう。そのため、特別I/Fを待機系MSCP5から稼働系MSCP4へ変更する特別I/F変更要求のホスト間通信が、稼働系MSCP4経由で実行されるようにしている。
【0061】
また、上記の説明では、ホスト間通信部115、215は、MSCPリリーフ実行中、MSCPリリーフ制御部以外のAPなどからのホスト間通信を待ち合わせるようにした。しかし、
図7のステップS14を省略し、ステップS11でNOと判断した場合、および、ステップS12でYESと判断した場合、ステップS15の処理に進むようにしてもよい。
【0062】
図8は、I/O制御部113がホスト間通信部115から送信要求に基づくI/O発行要求を受信したときに実行する処理の一例を示すフローチャートである。
図8を参照すると、先ず、I/O制御部113は、特別I/Fの使用を指定した送信要求か否かを判断する(ステップS21)。次に、I/O制御部113は、特別I/Fの使用を指定した送信要求であれば、ホスト間通信に使用するMSCPとして、MSCP構成管理テーブル124において特別I/Fに設定されたMSCPを選択する(ステップS22)。また、I/O制御部113は、特別I/Fの使用を指定しない送信要求であれば、ホスト間通信に使用するMSCPとして、MSCP構成管理テーブル124において稼働系MSCPとして設定されたMSCPを選択する(ステップS23)。次に、I/O制御部113は、ステップS21またはS22で選択されたMSCPに基づいて、I/Oのパスを決定する(ステップS24)。即ち、I/O制御部113は、ステップS22またはS23で選択されたMSCPが稼働系MSCP4であれば、ホスト1と稼働系MSCP4とを接続する信号線62をI/Oのパスに決定し、待機系MSCP5であれば、ホスト1と待機系MSCP5とを接続する信号線63をI/Oのパスに決定する。次に、I/O制御部113は、受信した送信要求に付随するホスト間通信メッセージを上記決定したパスを通じて該当するMSCPに対して送信する(ステップS25)。
【0063】
このようにI/O制御部113は、特別I/Fの使用を指定した送信要求であれば、稼働系MSCP4および待機系MSCP5のうち特別I/Fに選択されたMSCPに対してホスト間通信メッセージを送信し、特別I/Fの使用を指定しない送信要求であれば、稼働系MSCP4に対してホスト間通信メッセージを送信する。従って、ホスト1、2に稼働系MSCP4が接続され、待機系MSCP5が接続されていないため、MSCP構成管理テーブル124、224が
図4Aに示した状態にある場合、I/O制御部113は、特別I/Fの使用を指定するか否かに関係なく、常に、稼働系MSCP4に対してホスト間通信メッセージを送信することになる。一方、ホスト1、2に稼働系MSCP4および待機系MSCP5が接続され、MSCP構成管理テーブル124、224が
図4Bに示した状態にある場合、I/O制御部113は、特別I/Fの使用を指定した送信要求であれば、待機系MSCP5に対してホスト間通信メッセージを送信し、特別I/Fの使用を指定しない送信要求であれば、稼働系MSCP4に対してホスト間通信メッセージを送信することになる。前述したように、ホスト間通信部115は、ホスト間通信の送信元がMSCPリリーフ制御部118であれば一部の例外を除き、特別I/Fの使用を指定した送信要求を生成し、ホスト間通信の送信元がMSCPリリーフ制御部118以外であれば、特別I/Fの使用を指定しない送信要求を生成する。その結果、待機系MSCP5経由のホスト間通信パスは、MSCPリリーフ専用とすることができる。
【0064】
図9は、待機系MSCP5をシステムに組み込む指示がオペレータからホスト1に入力されたときにMSCPリリーフ制御部118が実行する処理の一例を示すフローチャートである。
図9を参照すると、先ず、MSCPリリーフ制御部118は、待機系MSCP5の組み込み通知をホスト間通信によってホスト2のMSCPリリーフ制御部218に対して送信し(ステップS31)、ホスト1における待機系MSCP5の装置状態をUNAVAILからSPAREに変更し(ステップS32)、全ホストが待機系MSCP5の組み込みを完了するのを待ち合わせる(ステップS33)。待機系MSCP5を組み込む前の時点では、MSCP構成管理テーブル124、224は
図4Aに示す状態にあるため、ホスト1からホスト2へのホスト間通信は、稼働系MSCP4経由で行われる。
【0065】
ホスト2のMSCPリリーフ制御部218は、待機系MSCP5の組み込み通知を受信すると(ステップS34)、ホスト2における待機系MSCP5の装置状態をUNAVAILからSPAREに変更し(ステップS35)、その組み込み完了通知をホスト間通信によってホスト1のMSCPリリーフ制御部118へ送信する(ステップS36)。
【0066】
ホスト1のMSCPリリーフ制御部118は、全ホストが待機系MSCP5の組み込みを完了すると、特別I/Fを稼働系MSCP4から待機系MSCP5へ変更する要求(特別I/F変更要求)をホスト間通信によってホスト2のMSCPリリーフ制御部218へ送信し(ステップS37)、
図4Aに示す状態のMSCP構成管理テーブル124を
図4Bに示す状態に変更し(ステップS38)、全ホストの変更完了を待ち合わせる(ステップS39)。ホスト2のMSCPリリーフ制御部218は、特別I/Fを稼働系MSCP4から待機系MSCP5へ変更する要求を受信すると(ステップS40)、
図4Aに示す状態のMSCP構成管理テーブル224を
図4Bに示す状態に変更し(ステップS41)、変更完了をホスト間通信によってホスト1のMSCPリリーフ制御部118へ送信する(ステップS42)。ホスト1のMSCPリリーフ制御部118は、全ホストで変更が完了すると、システム状態をMSCPリリーフ有効な状態として管理する(ステップS43)。一方、何らかの障害が原因でホスト2からの変更完了通知が届かないなどの事象が発生し、全ホストでの変更完了を確認できない場合、システム状態をMSCPリリーフ無効な状態として管理する(ステップS44)。
【0067】
このようにオペレータから待機系MSCP5の組み込み指示が入力されると、各ホストのMSCPリリーフ制御部118、218は、ホスト間通信によって連絡を取り合って、待機系MSCP5を各ホストに組み込み、特別I/Fを稼働系MSCP4から待機系MSCP5へ変更する。これより以降、全ホストは、同じ待機系MSCP5を特別I/Fとして使用したホスト間通信を行うことができるようになる。また、その後、稼働系MSCP4に障害が発生すると、MSCPリリーフが実施され、障害に係る稼働系MSCP4はシステムから切り離され、待機系MSCP5が新たな稼働系MSCPとして動作する。このとき、MSCPリリーフ制御部118、218は、ホスト間通信によって連絡を取り合って、MSCP構成管理テーブル124、224を更新し、新たな稼働系になったMSCP5を特別I/Fに選択する。また、稼働系MSCP4に障害が発生する前に待機系MSCP5に障害が発生すると、MSCPリリーフ制御部118、218は、ホスト間通信によって連絡を取り合って、MSCP構成管理テーブル124、224を
図4Bの状態から
図4Aの状態に更新する。このとき、MSCPリリーフ制御部118からMSCPリリーフ制御部218に対して出されるホスト間通信は、要求元がMSCPリリーフ制御部118であり、メッセージが特別I/Fの変更要求であるため、特別I/Fの使用を指定しない送信要求がホスト間通信部で生成され、その結果、I/O制御部113は障害の発生した待機系MSCP5を使用せずに稼働系MSCP4に対してメッセージを送信することになる。
【0068】
次に、MSCPリリーフ制御部118からMSCPリリーフ制御部218へのホスト間通信を例にして、MSCPリリーフ中のホスト間通信の手順を説明する。
【0069】
MSCPリリーフは、MSCPリリーフ制御部118、218により実行される。MSCPリリーフ制御部118、218は、ホスト間通信によって相互に同期をとりながら連携して動作する。このMSCPリリーフ時に行われるホスト間通信は、特別I/Fに選択された待機系MSCP5を使用して以下のように実施される。
【0070】
先ず、MSCPリリーフ制御部118は、
図6に示す送信元ホスト_IDにホスト1のIDを、送信元利用者_IDにMSCPリリーフ制御部118のIDを、宛先ホスト_IDにホスト2のIDを、メッセージに通知する情報を、それぞれ記録したホスト間通信メッセージの送信要求をホスト間通信部115へ送出する。ホスト間通信部115は、ホスト間通信の要求元がMSCPリリーフ制御部118であり、メッセージが特別I/F変更要求ではないので、特別I/Fの使用を指定した送信要求を生成する。このため、I/O制御部113は、
図4BのMSCP構成管理テーブル124に基づき、信号線63を通じて待機系MSCP5に対してホスト間通信メッセージを送信する。待機系MSCP5のメッセージ転送部514は、上記メッセージを受信すると、受信したメッセージを通信領域524に記憶する。次に、メッセージ転送部514は、メッセージの宛先ホスト_IDに従って、通信領域524から読み出したメッセージを、信号線66を通じてホスト2へ送信する。ホスト2のホスト間通信部215は、上記メッセージをI/O制御部213を通じてメッセージ転送部514から受信し、メッセージ中の送信元ホスト_IDおよび送信元利用者_IDに一致する送信元ホスト_IDおよび送信元利用者_IDを有する受信制御テーブル225のエントリの受信バッファの項目に記録された受信バッファにメッセージを格納し、通知先の項目に記録されたセマフォを通じてMSCPリリーフ制御部218へ通知を行う。MSCPリリーフ制御部218は、受信バッファに格納されたメッセージを読み込むことにより、MSCPリリーフ制御部118から送信されたメッセージの内容を確認することができる。MSCPリリーフ中のMSCPリリーフ制御部218からMSCPリリーフ制御部118へのMSCPリリーフ中のホスト間通信も、上記手順と基本的に同様の手順により、特別I/Fとして選択された待機系MSCP5を使用して実施される。
【0071】
続いて、稼働系MSCP4が正常に動作している状態で何れかのホストのAPから共用資源3の排他要求が出されたときのシステムの動作を説明する。一例として、ホスト1のAP111から排他要求が出された場合について説明するが、ホスト2のAP211から排他要求が出された場合も同様の動作となる。
【0072】
図10は、稼働系MSCP4が正常に動作している状態でホスト1上のAP111から共用資源3の排他要求が出されたときのシステムの動作を示すフローチャートである。
図10を参照すると、AP111から共用資源3の排他要求(ロック要求もしくはアンロック要求)が出されると(ステップS101)、排他制御部112は排他コマンド(ロックコマンドもしくはアンロックコマンド)を生成し(ステップS102)、I/O制御部113は、排他コマンドを、信号線62を通じて稼働系MSCP4に対して送信(発行)する(ステップS103)。
【0073】
稼働系MSCP4の排他制御部411は、ホスト1から排他コマンドを受信すると(ステップS104)、排他処理を実行し(ステップS105)、その実行結果(ロック成功、ロック待ち、アンロック成功)に対して通番制御部412から取得した通番を付与する(ステップS106)。次に排他制御部411は、実行結果と通番とを要求元のホスト1へ返却する(ステップS107)。またロックデータ送信部413は、排他制御部411から稼働系MSCP4の識別情報と上記排他コマンドのイメージとその実行結果と通番とを受け取り、それらを1つのロックデータとして信号線67を通じて待機系MSCP5へ送信する(ステップS108)。
【0074】
ホスト1のI/O制御部113は、排他コマンドに対するコマンド結果と通番とを信号線62を通じて稼働系MSCP4から受信する(ステップS109)。次にロックデータ保持部114は、稼働系MSCP4の識別情報と上記発行された排他コマンドのイメージとその実行結果と通番とを1つのロックデータとしてロックデータテーブル122に保存する(ステップS110)。また排他制御部112は、上記コマンド結果を要求元のAP111へ通知する(ステップS111)。一方、待機系MSCP5のロックデータ受信部515は、稼働系MSCP4から送信されたロックデータを、信号線67を通じて受信し(ステップS112)、ロックデータテーブル523に保存する(ステップS113)。
【0075】
また稼働系MSCP4の排他制御部411は、ホスト1から受信した排他コマンドがアンロックコマンドである場合、アンロックされた共用資源に対してロック待ちしているタスクがあれば(ステップS114)、そのロック待ちをロック成功に変更し(ステップS115)、そのロック成功の実行結果に通番制御部412から取得した通番を付与し(ステップS116)、ロック成功のコマンド実行結果と排他IDと通番とを含むアテンション通知をホストへ送信する(ステップS117)。またロックデータ送信部413は、稼働系MSCP4の識別情報と上記アテンション通知とを1つのロックデータとして信号線67を通じて待機系MSCP5へ送信する(ステップS118)。
【0076】
ホスト1のI/O制御部113は、上記アテンション通知を受信する(ステップS119)。次にロックデータ保持部114は、稼働系MSCP4の識別情報と上記アテンション通知とを1つのロックデータとしてロックデータテーブル122に保存する(ステップS120)。また排他制御部112は、アテンション通知の排他IDで特定されるAP111へロック成功のコマンド結果を通知する(ステップS121)。一方、待機系MSCP5のロックデータ受信部515は、稼働系MSCP4から送信されたアテンション通知を含むロックデータを、信号線67を通じて受信し(ステップS122)、ロックデータテーブル523に保存する(ステップS123)。
【0077】
上述したように、稼働系MSCP4が正常に動作している場合、稼働系MSCP4は、何れかのホスト1、2から送信された共用資源3をロックもしくはアンロックするコマンドに従って排他処理を行い、コマンド実行結果と該コマンド実行結果に付与した通番とを送信元のホスト1、2に送信し、且つ、稼働系MSCP4の識別情報とコマンドイメージとその実行結果と通番とを含むロックデータを待機系MSCP5に送信する。また、それぞれのホスト1、2は、稼働系MSCP4に送信したコマンドと稼働系MSCP4から受信したコマンド実行結果と通番とを含むロックデータをロックデータテーブル122に保持する。さらに待機系MSCP5は、稼働系MSCP4から受信したロックデータをロックデータテーブル523に保存する。このような動作が行われることにより、ホスト1、2から稼働系MSCP4に対して送信された排他コマンドとその実行結果とが、ホスト側のロックデータテーブル122、222に保存されると共に、待機系MSCP5側のロックデータテーブル523に保存されることになる。但し、稼働系MSCP4が、ステップS107の実行直後もしくはステップS117の実行直後に故障した場合、稼働系MSCP4からホスト1,2へ送信されたコマンド実行結果やアテンション通知は稼働系MSCP4に送信されない。また、ロックデータ送信部413が、過去一定期間もしくは一定量のロックデータを送信バッファに蓄積後、一括して信号線67を通じてロックデータ受信部515へ送信する場合、送信前に稼働系MSCP4が故障すると、送信バッファに蓄積された全てのロックデータが待機系MSCP5へ送信されない。稼働系MSCP4故障時にホスト1、2のロックデータテーブル122、222に保存されているロックデータのうち、待機系MSCP5のロックデータテーブル523に存在しないロックデータを、不足ロックデータと呼ぶことがある。
【0078】
次に、稼働系MSCP4の故障時にホスト間の排他制御に使われるMSCPを待機系MSCPに切り替えるMSCPリリーフ動作について説明する。
【0079】
図11はMSCPリリーフ動作の一例を示すフローチャートである。
図11を参照すると、ホスト1の障害検出部117が稼働系MSCP4の障害を検出すると(ステップS131)、ホスト1が代表ホストとなって、MSCPリリーフ制御部118によりMSCPリリーフ動作が開始される。
【0080】
先ず、MSCPリリーフ制御部118は、ホスト間通信部115によるホスト間通信を使用して、他の全ホストのMSCPリリーフ制御部に対して、稼働系MSCP4に故障が発生した旨の通知を送信する(ステップS132)。その後、MSCPリリーフ制御部118は、AP111から共用資源3に対する新たな排他要求(ロック要求もしくはアンロック要求)が出されてもそれを保留するように排他制御部112を制御し、他の全ホストからの新規排他要求抑止完了通知の受信を待ち合わせる(ステップS134)。
【0081】
ホスト2のMSCPリリーフ制御部218は、ホスト間通信によって稼働系MSCP4に故障が発生した旨の通知を代表ホストから受信すると(ステップS135)、AP211から共用資源3に対する新たな排他要求(ロック要求もしくはアンロック要求)が出されてもそれを保留するように排他制御部212を制御し(ステップS136)、ホスト間通信部215によるホスト間通信を使用して、要求元のホスト1のMSCPリリーフ制御部118に新規排他要求抑止完了通知を送信する(ステップS137)。
【0082】
代表ホスト1のMSCPリリーフ制御部118は、他の全ホストから新規排他要求抑止完了通知を受信すると(ステップS138)、ホスト間通信部115によるホスト間通信を使用して、他の全ホストのMSCPリリーフ制御部に対して、不足ロックデータ送信要求を送信する(ステップS139)。その後、MSCPリリーフ制御部118は、ロックデータテーブル122に保存されているロックデータのうち、待機系MSCP5のロックデータテーブル523に保存されていないロックデータ(不足ロックデータ)をロックデータテーブル122から取得し、信号線63を通じて待機系MSCP5へ送信し(ステップS140)、他の全ホストからの不足ロックデータ送信完了通知の受信を待ち合わせる(ステップS141)。なお、MSCPリリーフ制御部118は、不足ロックデータが存在しない場合、待機系MSCP5への不足ロックデータの送信は行わず、ステップS141の処理へと進む。ここで、MSCPリリーフ制御部118は、不足ロックデータを次のようにして取得する。
【0083】
先ず、MSCPリリーフ制御部118は、受信状況問合せ部116に対して受信完了通番の問合せを依頼する。受信状況問合せ部116は、その依頼に応じて待機系MSCP5の受信状況応答部517へ受信完了通番を問合せる。その問合せに応じて受信状況応答部517は、稼働系MSCP4から最後に受信したロックデータに含まれる通番を受信完了通番として受信状況問合せ部116へ送信する。受信状況問合せ部116は、受信した受信完了通番をMSCPリリーフ制御部118へ通知する。MSCPリリーフ制御部118は、通知された受信完了通番以降の通番を有するロックデータを不足ロックデータとしてロックデータテーブル122から取得する。
【0084】
ホスト2のMSCPリリーフ制御部218は、ホスト間通信によって不足ロックデータ送信要求を受信すると(ステップS142)、ロックデータテーブル222に保存されているロックデータのうち、待機系MSCP5のロックデータテーブル523に保存されていないロックデータを不足ロックデータとしてロックデータテーブル222から取得し、信号線66を通じて待機系MSCP5へ送信し(ステップS143)、ホスト間通信部215のホスト間通信を使用して、代表ホスト1のMSCPリリーフ制御部118に対して不足ロックデータ送信完了通知を送信する(ステップS144)。なお、MSCPリリーフ制御部218は、不足ロックデータが存在しない場合、待機系MSCP5への不足ロックデータの送信は行わず、ステップS144の処理へと進む。また、MSCPリリーフ制御部218は、不足ロックデータの取得では、MSCPリリーフ制御部118と同様の方法で受信完了通番を取得し、受信完了通番以降の通番を有するロックデータをロックデータテーブル523から取得する。
【0085】
待機系MSCP5のロックデータ受信部515は、ホスト1のMSCPリリーフ制御部118から送信された不足ロックデータを、信号線63を通じて受信すると、ロックデータテーブル523へ保存する(ステップS145)。また待機系MSCP5のロックデータ受信部515は、ホスト2のMSCPリリーフ制御部218から送信された不足ロックデータを、信号線66を通じて受信すると、ロックデータテーブル523へ保存する(ステップS145)。
【0086】
代表ホスト1のMSCPリリーフ制御部118は、他の全ホストから不足ロックデータ送信完了通知を受信すると(ステップS146)、信号線63を通じて待機系MSCP5の排他制御テーブル再生部516に対して排他情報再生要求を送信する(ステップS147)。
【0087】
待機系MSCP5の排他制御テーブル再生部516は、排他情報再生要求を受信すると(ステップS148)、ロックデータテーブル523から通番順にロックデータを読み出し、ロックデータに含まれるコマンド、コマンド実行結果、および、アテンション通知に基づいて、障害が発生した稼働系MSCP4の排他制御テーブル422と実質的に同じ内容の排他制御テーブル522を再生する(ステップS149)。そして、排他制御テーブル再生部516は、排他制御テーブル522の再生が完了すると、信号線63を通じて再生完了通知を代表ホスト1のMSCPリリーフ制御部118へ送信し(ステップS150)、新稼働系MSCPとして動作を開始する。
【0088】
代表ホスト1のMSCPリリーフ制御部118は、待機系MSCP5の排他制御テーブル再生部516から再生完了通知を受信すると(ステップS151)、ホスト間通信部115のホスト間通信を使用して、他の全ホストのMSCPリリーフ制御部に対して運用再開要求を送信する(ステップS152)。運用再開要求を受信したホスト2のMSCPリリーフ制御部218、および、運用再開要求を送信したホスト1のMSCPリリーフ制御部118は、以後、MSCP5を新稼働系MSCPとしてシステムの運用を再開する。
【0089】
このように本実施形態では、稼働系MSCP4が故障した場合、ホスト1、2のそれぞれは、ロックデータテーブルに保存されているロックデータのうち待機系MSCP5が稼働系MSCP4から受信したロックデータに含まれる通番の最新のもの以降の通番のロックデータ(不足ロックデータ)を待機系MSCP5へ送信し、待機系MSCP5は、稼働系MSCP4が正常に動作しているときに稼働系MSCP4から受信したロックデータとホスト1,2のそれぞれから受信した不足ロックデータとに基づいて、故障した稼働系MSCP4の排他制御テーブル422の排他制御情報を排他制御テーブル522に再生する。
【0090】
上記説明では、待機系MSCP5の排他制御テーブル再生部516は、ロックデータテーブル523に保存されたロックデータを通番の順に処理することによって、故障時点の排他制御テーブル422を排他制御テーブル522に再生した。しかし、排他制御テーブルの再生方法は上記に限定されない。故障時点の排他制御テーブル422を再生できるのであれば、他の方法を使用してもよい。例えば、次のような方法であってもよい。
【0091】
待機系MSCP5の排他制御テーブル再生部516は、ロックデータテーブル523に対して、先ず、以下の処理1、2をその順に行う。
処理1:アテンション通知の前提となるロック待ちのロックデータにおけるロック待ちをロック成功に変更し、当該アテンション通知のロックデータを削除する。
処理2:アンロック成功のロックデータとその前提となるロック成功のロックデータとをロックデータテーブル523から削除する。
【0092】
次に排他制御テーブル再生部516は、ロックデータテーブル523からロック成功のロックデータを全て抽出し、それぞれのコマンドイメージに従って、ロックコマンドに応じた排他制御を行って排他制御テーブル522を更新する。次に排他制御テーブル再生部516は、ロックデータテーブル523からロック待ちのロックデータを全て抽出し、それぞれのコマンドイメージに従って、ロックコマンドに応じた排他制御を行って排他制御テーブル522を更新する。以上の処理により、故障時点の排他制御テーブル422を排他制御テーブル522に再生することができる。
【0093】
また、上記説明では、待機系MSCP5の排他制御テーブル再生部516は、MSCPリリーフの開始後にホストから受信した排他情報再生要求を契機に排他制御テーブル522の再生処理を開始した。しかし、排他制御テーブル再生部516は、稼働系MSCP4が正常に動作している最中に、稼働系MSCP4から受信したロックデータに基づいて、排他制御テーブル522の再生処理を行うようにしてもよい。
【0094】
また、上記説明では、ホスト1、2のMSCPリリーフ制御部118、218は、不足ロックデータ全体を待機系MSCP5へ送信し、排他制御テーブル再生部516は、受信したロックデータに基づいて排他制御テーブル522の再生を行った。しかし、ホスト1、2のMSCPリリーフ制御部118、218は、不足ロックデータに含まれるロック成功したロックコマンド、ロック待ちしたロックコマンドを待機系MSCP5に対して発行し、排他制御テーブル再生部516は、発行されたロックコマンドに基づく排他制御処理を行うことによって、排他制御テーブル522の再生を行うようにしてもよい。
【0095】
このように本実施形態によれば、疎結合システムを構成する装置の種類および個数を削減でき、その分、コストを抑えることができる。その理由は、MSCPを使ってホスト間通信を行うようにしているためである。
【0096】
また本実施形態によれば、各ホストのホスト間通信部115、215は、MSCPリリーフ制御部118、218からホスト間通信要求を受信すると、特別I/Fの使用を指定した通信要求を生成し、MSCPリリーフ制御部以外のAP111、211などからホスト間通信要求を受信すると、特別I/Fの使用を指定しない通信要求を生成し、I/O制御部113、213は、待機系MSCP5がシステムに組み込まれた状態では、特別I/Fの使用を指定した通信要求に従って特別I/Fとして選択された待機系MSCP5に対して通信要求を送信し、特別I/Fの使用を指定しない通信要求に従って稼働系MSCP4に対して通信要求を送信する。そのため、MSCPリリーフ制御部118とMSCPリリーフ制御部218との間のホスト間通信に待機系MSCP5を専用に使用することができる。そのため、MSCPリリーフ制御部118、218は、MSCPリリーフに関連しない他のホスト間通信による影響を受けることなく、相互に同期をとりながら連携してMSCPリリーフ動作を実行することができる。
【0097】
また、本実施形態によれば、ホスト1、2が稼働系MSCP4に送信したロックコマンド、アンロックコマンドをロックデータテーブル122、222に大量に保持している状況で稼働系MSCP4が故障した場合であっても、故障した稼働系MSCP4が排他制御テーブル422に保持していた排他制御情報を待機系MSCP5の排他制御テーブル522に速やかに再生することができる。その理由は、稼働系MSCP4は、ホスト1、2から送信された共用資源をロックもしくはアンロックするコマンドに従って排他処理を行い、上記コマンドと上記コマンド実行結果とを含むロックデータを待機系MSCP5に送信し、待機系MSCP5は、稼働系MSCP4からロックデータを受信し、稼働系MSCP4が故障した場合、稼働系MSCP4から受信したロックデータに基づいて、故障した稼働系MSCP4の排他制御情報を再生するためである。
【0098】
[第2の実施形態]
次に本発明の第2の実施形態に係る疎結合システム200について説明する。
図12を参照すると、疎結合システム200は、複数のホスト201と、複数のホスト201で共用する共用資源202と、稼働系MSCP203と、待機系MSCP204と、を備えている。また、稼働系MSCP203および待機系MSCP204のそれぞれは、排他制御機能とホスト間通信のためのメッセージ転送機能とを備えている。また、複数のホスト201のそれぞれは、稼働系MSCP203の障害時、待機系MSCP204を使用するホスト間通信によって複数のホスト201間で同期を取りながら、共用資源の排他制御に使用するMSCPを稼働系MSCP203から待機系MSCP204に切り替えるMSCPリリーフを実行するように構成されている。
【0099】
このように構成された疎結合システム200は、以下のように機能する。即ち、複数のホスト201は、複数のホスト201で共用する共用資源202を、稼働系MSCP203を用いて排他制御しながら複数の処理を実行し、稼働系MSCP203に障害が発生すると、待機系MSCP204を使用するホスト間通信によって複数のホスト201間で同期を取りながら、共用資源202の排他制御に使用するMSCPを稼働系MSCP203から待機系MSCP204に切り替えるMSCPリリーフを実行する。
【0100】
上記のように構成され、動作する疎結合システム200によれば、疎結合システムを構成する装置の種類および個数を削減でき、その分、コストを抑えることができる。その理由は、MSCPを使ってホスト間通信を行うようにしているためである。
【0101】
以上、上記各実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【0102】
例えば、第1の実施形態では、稼働系MSCP4は、それぞれのホスト1、2から送信された共用資源3をロックもしくはアンロックするコマンドに従って排他処理を行い、上記コマンドと上記コマンド実行結果とを含むロックデータを待機系MSCP5に送信し、待機系MSCP5は、稼働系MSCP4が故障した場合、稼働系MSCP4から受信したロックデータおよびホスト1,2から受信した不足ロックデータに基づいて、故障した稼働系MSCP4の排他制御情報を再生した。しかし、故障した稼働系MSCP4の排他制御情報を再生する方法は、上記した方法に限定されない。例えば、特許文献1に記載される再生方法、即ち、故障した稼働系MSCP4の排他制御情報の再生に必要な全てのロックコマンドをホストから待機系MSCPへ送信する再生方法であってもよい。
【産業上の利用可能性】
【0103】
本発明は、複数のホスト間で共用される資源を、MSCPを用いて排他制御しながら複数の処理を行う疎結合システムに利用できる。
【符号の説明】
【0104】
1…ホスト
2…ホスト
3…共用資源
4…稼働系MSCP
5…待機系MSCP