(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-19
(45)【発行日】2024-02-28
(54)【発明の名称】排他制御装置、排他制御システム、制御方法及びプログラム
(51)【国際特許分類】
G06F 9/52 20060101AFI20240220BHJP
G06F 9/48 20060101ALI20240220BHJP
G06F 16/182 20190101ALI20240220BHJP
G06F 16/28 20190101ALI20240220BHJP
【FI】
G06F9/52 120A
G06F9/48 300C
G06F16/182
G06F16/28
(21)【出願番号】P 2021038114
(22)【出願日】2021-03-10
【審査請求日】2022-07-08
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100106909
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】松村 聖子
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2018-101343(JP,A)
【文献】特開2014-164647(JP,A)
【文献】特開2000-172659(JP,A)
【文献】特開2020-144616(JP,A)
【文献】特開2003-030166(JP,A)
【文献】特開平02-040761(JP,A)
【文献】特開昭62-196761(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
G06F 9/48
G06F 16/182
G06F 16/28
(57)【特許請求の範囲】
【請求項1】
共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理を行う機能を有する排他制御装置であって、
前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行う排他制御手段と、
デッドロックチェックを実行するデッドロックチェック手段と、
前記排他制御手段による前記デッドロックチェック手段へのデッドロックチェックの要求を保持するキューである要求キューと、
を備え、
前記排他制御手段は、再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、前記デッドロックチェック手段へデッドロックチェックを要求し、
前記デッドロックチェック手段は、前記デッドロックチェックを要求された前記ロック待ちの情報をデッドロックチェックテーブルへ登録し、
前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行し、
前記排他制御手段は、前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付
け、
前記デッドロックチェック手段は、前記再構築処理中にデッドロックを検出すると、それ以降、前記排他制御手段がデッドロックチェックの実行を要求しても、前記再構築処理が終了するまで、当該要求に係るロック待ち情報の前記デッドロックチェックテーブルへの登録を中断し、
前記要求キューは、前記デッドロックチェック手段が前記デッドロックチェックテーブルへの登録を中断している間も、前記排他制御手段からの前記要求を取得し続ける、
排他制御装置。
【請求項2】
前記デッドロックチェック手段は、前記再構築処理が終了すると、前記要求キューから前記要求を取り出して、その要求に係る処理を実行する、
請求項
1に記載の排他制御装置。
【請求項3】
共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理を行う機能を有する排他制御装置であって、
前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行う排他制御手段と、
デッドロックチェックを実行するデッドロックチェック手段と、
を備え、
前記排他制御手段は、再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、前記デッドロックチェック手段へデッドロックチェックを要求し、
前記デッドロックチェック手段は、前記デッドロックチェックを要求された前記ロック待ちの情報をデッドロックチェックテーブルへ登録し、
前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行し、
前記排他制御手段は、前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付
け、
前記デッドロックチェック手段は、前記再構築処理中にデッドロックチェックの結果を前記排他制御手段に送信せず、前記再構築処理の完了後に前記デッドロックチェックの結果を前記排他制御手段へ送信する、
排他制御装置。
【請求項4】
共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理を行う機能を有する排他制御装置であって、
前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行う排他制御手段と、
デッドロックチェックを実行するデッドロックチェック手段と、
を備え、
前記排他制御手段は、再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、前記デッドロックチェック手段へデッドロックチェックを要求し、
前記デッドロックチェック手段は、前記デッドロックチェックを要求された前記ロック待ちの情報をデッドロックチェックテーブルへ登録し、
前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行し、
前記排他制御手段は、前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付
け、
前記再構築処理が完了し、前記排他制御システムの運用が再開されると、前記排他制御手段は、前記デッドロックチェック手段からデッドロック発生の応答を受信し、前記排他制御テーブルからデッドロックが発生したロック待ちの情報を削除し、前記ホストコンピュータへデッドロック発生を通知する、
排他制御装置。
【請求項5】
共有資源と、
ホストコンピュータと、
前記ホストコンピュータから前記共有資源へのアクセスに対する排他制御を行う請求項1から請求項
4の何れか1項に記載の排他制御装置と、
を備える排他制御システム。
【請求項6】
共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理における制御方法であって、
前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行うステップと、
再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、デッドロックチェックを要求するステップと、
前記デッドロックチェックの要求に対し、前記ロック待ちの情報をデッドロックチェックテーブルに登録するステップと、
前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行するステップと、
前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付けるステップと、
前記要求を保持するキューである要求キューが、前記要求を取得するステップと、
を含み、
前記再構築処理中にデッドロックを検出すると、前記デッドロックチェックテーブルに登録するステップでは、それ以降、前記デッドロックチェックを要求するステップにてデッドロックチェックの実行を要求しても、前記再構築処理が終了するまで、当該要求に係るロック待ち情報の前記デッドロックチェックテーブルへの登録を中断し、前記要求を取得するステップでは、前記デッドロックチェックテーブルに登録するステップにて前記デッドロックチェックテーブルへの登録を中断している間も、前記要求を取得し続ける、
を含む制御方法。
【請求項7】
共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理を制御するコンピュータに、
前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行うステップと、
再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、デッドロックチェックを要求するステップと、
前記デッドロックチェックの要求に対し、前記ロック待ちの情報をデッドロックチェックテーブルに登録するステップと、
前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行するステップと、
前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付けるステップと、
前記要求を保持するキューである要求キューが、前記要求を取得するステップと、
を有し、
前記再構築処理中にデッドロックを検出すると、前記デッドロックチェックテーブルに登録するステップでは、それ以降、前記デッドロックチェックを要求するステップにてデッドロックチェックの実行を要求しても、前記再構築処理が終了するまで、当該要求に係るロック待ち情報の前記デッドロックチェックテーブルへの登録を中断し、前記要求を取得するステップでは、前記デッドロックチェックテーブルに登録するステップにて前記デッドロックチェックテーブルへの登録を中断している間も、前記要求を取得し続ける処理、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、排他制御装置、排他制御システム、制御方法及びプログラムに関する。
【背景技術】
【0002】
複数のコンピュータから共有資源へアクセスする場合、排他制御を行う必要がある。複数の排他制御装置から構成される排他制御システムによって排他制御を実施する場合がある。排他制御システムでは、排他制御装置群の1台を切り離す、または組み込むといった排他制御装置群の再構築を行う機能を備えるものがある。排他制御装置群の再構築を行う機能をSWRと呼ぶ。ホストコンピュータ上のタスク(プログラム)が共有資源へアクセスする場合、共有資源へのアクセス権を取得するため、排他制御装置へロック要求を行う。SWRが動作している間は、排他制御装置群の運用が一時中断されるため、共有資源のアクセス権が獲得できず、再構築が完了し、運用が再開されるまでホストコンピュータのタスク処理は待ち状態となる。この待ち時間が長くなると、オンライン処理等がタイムアウトし、システムが停止するおそれがある。そのため、SWRの開始後は、速やかに排他制御装置群の運用を再開する必要がある。
【0003】
このため、SWRが開始され、排他制御装置が初期化された後は、運用の再開に必須である排他制御テーブルのみを再生し、運用を再開することが一般的である。その一方で、ネットワーク経由で再生が必要なデッドロックチェックテーブルを再生することは、運用の再開を遅らせる原因となるため実施されていなかった。
【0004】
また、SWR中にデッドロックチェックテーブルの再生を行わないもう一つの理由として次のような理由がある。デッドロックチェックをロック要求の延長で行わず、一定時間経過してもロック待ちの状態が継続する場合にデッドロックチェックを実施する遅延デッドロックチェックの場合(特許文献1)、SWR中にデッドロックチェックテーブルの再生を行うと、再生中にデッドロックを検出してしまう可能性がある。再生中にデッドロックを検出した場合、再生中の排他制御テーブルやホストコンピュータの保持している再生の元データも更新が必要となり、再構築が長時間化するおそれがある。
【0005】
ところで、一定時間以上ロック待ち状態になっているロック要求については、ホストが、再度ロック要求する(リトライ)するという取り決めが存在する。例えば、デッドロックが発生している場合、関係するロック要求は、ロック待ちから解除されないので、ホストは必ずリトライを実施する。上述のように、一般的なSWRの開始後、デッドロックチェックテーブルについては再生が行われない。すると、SWR開始以降のデッドロックチェックテーブルについては、排他制御装置群の運用再開後に、ホストコンピュータが、上記の取り決めに従って、再びロック要求を行ったときに、デッドロックチェックテーブルに順次、デッドロックのチェック要求が登録され再生される仕組みになっている。このような一般的なSWR時の動作においても、デッドロックが発生していれば、いずれはデッドロックが検出されるが、上記のように、デッドロックに関係する全てのロック要求がリトライされるまでデッドロックチェックテーブルが再生されない(テーブルにデータが揃わない)。従って、それまでの間、デッドロックが検出されず、デッドロックの検出が遅れてしまう。デッドロックの検出が遅れると関係するロック待ち要求はロック待ちから解除されないため、その間ホストコンピュータの処理も停滞してしまう。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
SWRの実行によるデッドロック検出の遅れを防止する方法が求められている。
【0008】
そこでこの発明は、上述の課題を解決する排他制御装置、排他制御システム、制御方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【0009】
本発明の一態様によれば、排他制御装置は、共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理を行う機能を有する排他制御装置であって、前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行う排他制御手段と、デッドロックチェックを実行するデッドロックチェック手段と、前記排他制御手段による前記デッドロックチェック手段へのデッドロックチェックの要求を保持するキューである要求キューと、を備え、前記排他制御手段は、再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、前記デッドロックチェック手段へデッドロックチェックを要求し、前記デッドロックチェック手段は、前記デッドロックチェックを要求された前記ロック待ちの情報をデッドロックチェックテーブルへ登録し、前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行し、前記排他制御手段は、前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付け、前記デッドロックチェック手段は、前記再構築処理中にデッドロックを検出すると、それ以降、前記排他制御手段がデッドロックチェックの実行を要求しても、前記再構築処理が終了するまで、当該要求に係るロック待ち情報の前記デッドロックチェックテーブルへの登録を中断し、前記要求キューは、前記デッドロックチェック手段が前記デッドロックチェックテーブルへの登録を中断している間も、前記排他制御手段からの前記要求を取得し続ける。
【0010】
本発明の一態様によれば、排他制御システムは、共有資源と、ホストコンピュータと、前記ホストコンピュータから前記共有資源へのアクセスに対する排他制御を行う上記の排他制御装置と、を備える。
【0011】
本発明の一態様によれば、排他制御方法は、共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理における制御方法であって、前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行うステップと、再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、デッドロックチェックを要求するステップと、前記デッドロックチェックの要求に対し、前記ロック待ちの情報をデッドロックチェックテーブルに登録するステップと、前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行するステップと、前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付けるステップと、前記要求を保持するキューである要求キューが、前記要求を取得するステップと、を含み、前記再構築処理中にデッドロックを検出すると、前記デッドロックチェックテーブルに登録するステップでは、それ以降、前記デッドロックチェックを要求するステップにて、デッドロックチェックの実行を要求しても、前記再構築処理が終了するまで、当該要求に係るロック待ち情報の前記デッドロックチェックテーブルへの登録を中断し、前記要求を取得するステップでは、前記デッドロックチェックテーブルに登録するステップにて前記デッドロックチェックテーブルへの登録を中断している間も、前記要求を取得し続ける。
【0012】
本発明の一態様によれば、プログラムは、共有資源への排他制御を行う複数の排他制御装置から構成される排他制御システムの再構築処理を制御するコンピュータに、前記再構築処理中にホストコンピュータから排他制御情報の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行うステップと、再生要求を受けた前記排他制御情報がロック待ちの場合、当該ロック待ちについて、デッドロックチェックを要求するステップと、前記デッドロックチェックの要求に対し、前記ロック待ちの情報をデッドロックチェックテーブルに登録するステップと、前記ロック待ちの情報を前記デッドロックチェックテーブルに登録した後にデッドロックチェックを実行するステップと、前記デッドロックチェックの結果を受け取ることなく、次の前記再生要求を受け付けるステップと、前記要求を保持するキューである要求キューが、前記要求を取得するステップと、を有し、前記再構築処理中にデッドロックを検出すると、前記デッドロックチェックテーブルに登録するステップでは、それ以降、前記デッドロックチェックを要求するステップにて、デッドロックチェックの実行を要求しても、前記再構築処理が終了するまで、当該要求に係るロック待ち情報の前記デッドロックチェックテーブルへの登録を中断し、前記要求を取得するステップでは、前記デッドロックチェックテーブルに登録するステップにて前記デッドロックチェックテーブルへの登録を中断している間も、前記要求を取得し続ける処理、を実行させる。
【発明の効果】
【0013】
本発明によれば、SWRの実行によるデッドロック検出の遅れを防止することができる。
【図面の簡単な説明】
【0014】
【
図1】実施形態に係る排他制御システムのブロック図である。
【
図2】実施形態に係る運用中の排他制御について説明する図である。
【
図3】実施形態に係るデッドロックチェックの概要について説明する図である。
【
図4】実施形態に係る再生処理について説明する図である。
【
図5】一般的な再生処理について説明する図である。
【
図6】実施形態に係る排他制御手段の処理の一例を示す第1のフローチャートである。
【
図7】実施形態に係る排他制御手段の処理の一例を示す第2のフローチャートである。
【
図8】実施形態に係るデッドロックチェック手段の処理の一例を示すフローチャートである。
【
図9】実施形態の再構築処理に関する通信の一覧を示す図である。
【
図10】最小構成を有する排他制御装装置の構成を示すブロック図である。
【
図11】最小構成を有する排他制御装装置の処理を示すフローチャートである。
【
図12】実施形態による排他制御装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0015】
<実施形態>
以下、本発明の一実施形態に係る排他制御システムについて図面を参照して説明する。以下の説明に用いる図面において本発明に関係ない部分の構成については、記載を省略し、図示しない場合がある。
【0016】
(構成)
図1は、実施形態に係る排他制御システムのブロック図である。
図1に示すように、排他制御システム1は、複数のホストコンピュータ10-0~10-mと、共有資源20と、複数の排他制御装置200-0~200-nと、を備える疎結合コンピュータシステムである。複数のホストコンピュータ10-0~10-mについて、区別が必要ない場合には、ホストコンピュータ10と記載することがある。排他制御装置200-0~200-nについて、区別が必要ない場合には、排他制御装置200と記載することがある。
【0017】
共有資源20は、ファイルやデータベース、プリンタなどであり、ホストコンピュータ10の間で共有される。共有資源20は、ホストコンピュータ10が実行するタスクやプロセスによりアクセスされる。共有資源20は、参照など複数のタスクで同時にアクセスされても良い場合と、更新など排他的にアクセスされることが必要な場合がある。ホストコンピュータ10は、共有資源20を使用する場合、排他制御装置200へロック要求を行い、その資源のアクセス権(ロック)を獲得する必要がある。排他制御装置200は、共有資源20の排他制御を行う。排他制御装置200-0~200-nの各々は、複数の共有資源20のうち、事前に割り当てられた1以上の共用資源を対象に排他制御を行う。
【0018】
排他制御装置200は、排他制御機能を担う排他制御手段300と、デッドロックチェック機能を担うデッドロックチェック手段400と、ホスト通信手段250と、装置間通信手段260と、排他制御システム1の運用状態を記憶する動作モード記憶部210と、複数の排他制御装置200のうち、マスタ装置として動作する排他制御装置200の識別情報を記憶するマスタ装置記憶部220と、を備える。排他制御手段300は、排他制御テーブル310を備える。デッドロックチェック手段400は、デッドロックチェックテーブル410と、要求キュー420と、再開フラグ430と、を備える。
【0019】
図示するように、例えば、排他制御装置200-0が備える排他制御手段300を、排他制御手段300-0のように記載するが、区別の必要が無い場合には、単に排他制御手段300と記載する。排他制御装置200が備える他の構成(210、220、250、260、310、400、410、420、430)についても同様である。
【0020】
排他制御システム1では、複数の排他制御装置200は、ネットワークにより接続され、1つのシステムとして排他制御を行うよう構成されている。また、複数の排他制御装置200のうち何れか1台がマスタ装置として動作する。マスタ装置とそれ以外の装置が備える構成は同一のものであるが、マスタ装置ではデッドロックチェック手段400が機能として動作し、マスタ装置以外ではデッドロックチェック手段400の機能が停止しているという違いがある。本実施形態では、排他制御装置200-0がマスタ装置であるとする。それぞれの排他制御装置200は並行して排他制御を実行できる。これにより、共有資源20の増減に対する拡張性や負荷分散を実現し、システムの規模や性能要件に則した柔軟なシステムが構築可能となる。
【0021】
それぞれの排他制御装置200は、複数の排他制御装置200による排他制御を実現するにあたって、システムを停止せずに1台または複数台の排他制御装置200を切り離したり、組み込んだりすることにより、高可用性な排他制御システム1の運用を可能にするSWR機能を有している。SWRとは、排他制御システム1を構成する排他制御装置200群を再構築する機能である。SWR(再構築)を実行すると、ホストコンピュータ10が排他制御装置200群の使用を一時的に中断し(システムの運用中断)、排他制御装置200群を初期化し、新たな排他制御装置200群によって排他制御システム1が再構築される、その際、初期化が終了すると、ホストコンピュータ群が保持している“ロック要求の結果”、つまりロック成功やロック待ちなどの情報が再構築された排他制御装置200群に再生される。再生とは、排他制御テーブル310にロック成功やロック待ちの情報を登録すること、デッドロックチェックテーブル410にロック待ちについてのデッドロックチェック要求の情報(例えば、ロックを要求するタスクとタスクがロックを要求する資源の情報)を登録することである。SWRが実行されると、デッドロックチェックの遅延が生じがちになるが、本実施形態では、SWR実行時のデッドロックチェックの遅延を低減する方法を提供する。
【0022】
動作モード記憶部210は、排他制御システム1の動作モードを記憶する。具体的には、動作モード記憶部210は、装置の起動時は“運用中”と記憶し、ホストコンピュータ10からSWRの開始を通知されたら“SWR中”と記憶し、運用再開が通知されたら“運用中”と記憶する。排他制御手段300やデッドロックチェック手段400は、この値に基づいて動作を切り替える。
【0023】
マスタ装置記憶部220は、排他制御装置200群のうちマスタ装置と設定された装置の識別情報を記憶する。例えば、それぞれの排他制御装置200のマスタ装置記憶部220は、マスタ装置である排他制御装置200-0の識別情報を記憶している。
【0024】
排他制御手段300は、マスタ装置記憶部220に記憶されている排他制御装置200-0のデッドロックチェック手段400-0にデッドロックチェックを要求する。デッドロックチェックとは、ホストコンピュータ10によってロック要求された共有資源20がデッドロック状態であるかどうかをチェックすることである。
【0025】
デッドロックチェック手段400は、自装置がマスタ装置の場合にデッドロックチェックを実施する。マスタ装置以外のデッドロックチェック手段400は動作しない。マスタ装置の設定については任意の方法で実施することができる。例えば、最初に起動した排他制御装置200がマスタ装置として設定される方法や、ホストコンピュータ10が排他制御装置200群内の1台をマスタ装置に指定する方法などが提供されている。
【0026】
ホスト通信手段250は、ホストコンピュータ10から受信した要求を、排他制御手段300に出力し、排他制御手段300から応答や通知を取得して、その応答や通知をホストコンピュータ10へ送信する。
【0027】
装置間通信手段260は、デッドロックチェック要求などの送受信を行う。非マスタ装置では、装置間通信手段260は、同じ装置の排他制御手段300が要求したデッドロックチェックの要求を取得し、マスタ装置(排他制御装置200-0)のデッドロックチェック手段400-0宛にこの要求を送信する。マスタ装置では、装置間通信手段260-0が、ネットワーク経由でデッドロックチェック要求を受信し、受信した要求をデッドロックチェック手段400-0の要求キュー420-0に登録する。
【0028】
排他制御手段300は、“運用中”は、ホストコンピュータ10からのロック要求を排他制御テーブル310に登録し、ロック成功かロック待ちかの結果をホストコンピュータ10へ送信する。ロック待ちの場合は、マスタ装置のデッドロックチェック手段400-0へデッドロックチェック要求を行い、チェック結果の応答を待つ。チェック結果がデッドロック発生の場合、排他制御テーブル310から登録したロック要求を削除し、ホストコンピュータ10へデッドロックの発生を報告する。チェック結果がデッドロック発生ではない場合、ホストコンピュータ10へロック待ちを送信する。なお、デッドロックチェックは、上記のようにロック要求の延長で実施される場合と、ロック要求はロック待ちとして応答し、一定時間経過後にデッドロックチェックを実施する遅延ロック要求の場合がある。
【0029】
“運用中”にSWRの開始通知を受けた場合、排他制御手段300は、動作モード記憶部210に“SWR中”を設定し、デッドロックチェック手段400-0に初期化指示を行う。“SWR中”に、ホストコンピュータ10からの再生データ(SWRの開始前に当該ホストコンピュータ10が保持していたロック成功、ロック待ちなどの情報)を受け取ったら、再生データを排他制御テーブル310に登録する。登録したデータがロック待ちだった場合はデッドロックチェック手段400-0にデッドロックチェック要求を行うとともに、ホストコンピュータ10に再生完了を応答する。この処理については後に詳しく説明する。
【0030】
“SWR中”に、運用再開通知を受けた場合、排他制御手段300は、動作モード記憶部210に“運用中”を設定する。“運用中”にデッドロックチェック手段400-0からデッドロック検出の通知を受けたら、排他制御手段300は、排他制御テーブル310からロック待ちを削除し、ホストコンピュータ10にデッドロックが発生したためロック待ちを解除したことを通知する。排他制御テーブル310は、ロック要求を保持し、ロックの可否の結果(ロック成功又はロック待ち)を記録しておくテーブルである。
【0031】
デッドロックチェック手段400-0は、要求キュー420-0から取り出したデッドロックチェック要求の内容をデッドロックチェックテーブル410-0に登録し、デッドロックチェックを行う。“運用中”の場合、デッドロックチェック手段400-0は、デッドロックチェックの結果を要求元に応答するが、“SWR中”に行われたチェック要求に対しては“SWR中”に結果を応答しない。“SWR中”にデッドロックを検出しない場合、デッドロックチェック手段400-0は、要求キュー420-0からデッドロックチェックの要求を順番に取り出してデッドロックチェックを行う。“SWR中”にデッドロックを検出した場合、デッドロックチェック手段400-0は、動作モード210-0が“運用中”になるまで処理を中断し、“運用中”になったらデッドロック検出を排他制御手段300へ通知する。その後、デッドロックチェック手段400-0は、要求キュー420-0から次のデッドロックチェック要求の取り出しを再開し、デッドロックチェックを行う。
【0032】
また、デッドロックチェック手段400-0は、“運用中”に初期化指示を受けたらデッドロックチェックテーブル410-0を初期化するとともに、再開フラグ430-0をセットする。“SWR中”に再開通知を受け取ったら、デッドロックチェック手段400-0は、再開フラグ430-0をリセットする。再開フラグがセットされている間、デッドロックチェック手段400-0は、要求キュー420から取り出したデッドロックチェック要求に対する応答は返さず、デッドロックを検出した場合のみデッドロック検出通知を行う。デッドロックチェック手段400-0は、“運用中”、“SWR中”に関わらず、デッドロックを検出した場合は、デッドロックチェックテーブル410-0のデッドロック状態を解除するため、そのチェック要求で登録したデータを削除する。そして、デッドロック発生の通知または応答を行う。デッドロックチェックテーブル410-0は、排他制御手段300から取得したデッドロックチェックの要求を登録し、デッドロックが発生しているか確認するテーブルである。
【0033】
要求キュー420は、デッドロックチェック要求、初期化指示や再開通知を登録するキューである。デッドロックチェック手段400は、要求キュー420に登録された要求や通知を取り出し、順次、処理を行う。要求キュー420への要求や通知の登録は、装置間通信手段260が行う。再開フラグ430は、デッドロックチェック手段400により、初期化指示でセットされ、再開通知でリセットされる。
【0034】
次に
図2を参照して、“運用中”にホストコンピュータ10がロック要求を行った場合の処理の概略を説明する。
図2は、実施形態に係る運用中の排他制御について説明する図である。
図2の上段にロック要求の場合の処理を、下段に遅延ロック要求の場合の処理を示す。
【0035】
(“運用中”におけるロック要求時の処理の流れ)
ホストコンピュータ10は、共有資源20を使用する場合、使用可否の排他制御装置200へロック要求として問い合わせる(A1)。排他制御装置200では、排他制御手段300が、ロック要求を行ったタスクを排他制御テーブル310に登録し(A2)、ロック可否を判定する(A3)。排他制御手段300は、排他制御テーブル310を参照して、要求があった共有資源20を他の主体が使用していないか確認する。資源とはシステムで共有するデータや機器のことで、主体とは資源を使用するタスクやプロセスなどを指す。排他制御テーブル310には、共有資源20ごとに、その資源を利用しているタスクや待ち状態のタスクの識別情報が登録されている。資源を利用中のタスクについてはロック成功が登録され、待ち状態のタスクについてはロック待ちが登録される。ロック否の場合、つまり、他の主体が既に資源を利用している場合、排他制御手段300は、排他制御テーブル310に登録した今回のロック要求に係るタスクについて、ロック待ちを登録し、マスタ装置のデッドロックチェック手段400-0にデッドロックチェックを要求する(A4、A5)。マスタ装置では、装置間通信手段260-0が要求を受け取り、要求キュー420-0に登録する(A6の0.)。デッドロックチェック手段400-0は、要求キュー420-0から要求を取り出し(A6の1.)、デッドロックチェックテーブルにチェック要求を登録する(A6の2.)。次にデッドロックチェック手段400-0は、要求があった資源についてデッドロックチェックを実施する(A6の3.)。デッドロックが発生していれば、デッドロックチェック手段400-0は、デッドロックチェックテーブルに登録したチェック要求を削除し、チェック要求を行った排他制御手段300に通知する(A6の4.)。この図の例では、デッドロックは発生していないとする。この場合、デッドロックチェック手段400-0は、デッドロック検出なしを排他制御手段300に応答する(A7)。排他制御手段300は、ホストコンピュータにロック待ちを報告する(A8)。
【0036】
(“運用中”における遅延ロック要求時の処理の流れ)
遅延ロック要求の場合も同様に、ホストコンピュータ10は、遅延ロック要求を排他制御装置200へ問い合わせる(B1)。排他制御装置200では、排他制御手段300が、遅延ロック要求を行ったタスクを排他制御テーブル310に登録し(A2)、ロック可否を判定する(B3)。排他制御手段300は、判定結果を応答する。この例では、ロック待ちとなったとする。排他制御手段300は、ホストコンピュータ10へ、ロック待ちを応答する(B4)。一定時間経過してもロック待ちが解除されない場合、排他制御手段300とデッドロックチェック手段400-0は、デッドロックチェックを実施する(B5)。具体的には、排他制御手段300がデッドロックチェックを要求する(B6)。デッドロックチェック手段400-0は、デッドロックチェックを行う。デッドロックが検出された場合(B7)、デッドロックチェック手段400-0は、排他制御手段300へデッドロック検出を応答する(B8)。排他制御手段300は、排他制御テーブル310に登録したロック待ちを削除し(B9)、ホストコンピュータ10へデッドロックの発生を通知する(B10)。
【0037】
(“運用中”のデッドロックチェック処理)
次に
図3を用いて“運用中”のデッドロックチェックについて説明する。
図3は、実施形態に係るデッドロックチェックの概要について説明する図である。
主体T2が資源B2を使用中(ロック成功)で、主体T1が資源B1を使用中(ロック成功)の状態であるとする。ここに、資源B2を主体T1がロック要求した場合、資源B2は、主体T2が使用中のためロック待ちとなる。ロック待ちになったので排他制御手段300-2は、デッドロックチェック手段400-0にデッドロックチェックを要求する(C1)。この時点ではデッドロックは発生していないためデッドロックは発生していなことが報告される(C2)。
次に、資源B1を主体T2がロック要求した場合、資源B1は主体T1によって使用中のためロック待ちとなる。ロック待ちになったので排他制御手段300-1はデッドロックチェック手段400-0にデッドロックチェックを要求する(C3)。この時点で主体T1と主体T2が互いに相手を待たせている(待つと待たせるの関係の輪ができる)ためデッドロック発生となる。デッドロックを検出したデッドロックチェック手段400-0は、デッドロックチェックテーブル410-0に登録した資源B1の情報を削除し(C4)、排他制御手段300-1にデッドロックの発生を報告する(C5)。排他制御手段301-1は、排他制御テーブル310-1から主体T2の待ち情報を削除して、ホストコンピュータ10にデッドロックが発生したためロック待ちが解除されたことを通知する(C6)。
【0038】
(再生処理)
次に
図4を用いて、本実施形態に係る再生処理の流れを説明する。
図4は、実施形態に係る再生処理について説明する図である。再生処理とは、SWRによって排他制御装置200群が再構築されるときに、再構築前に登録されたロック成功、ロック待ちなど等の情報を再構築された排他制御装置200群へ再現・反映する処理である。
まず、何れかのホストコンピュータ10から各排他制御装置200へのSWR開始要求が発行される(D1、D2)。排他制御装置200の排他制御手段300は、SWR開始要求を受信すると、SWR開始完了応答を送信する(D1、D2)。次に全てのホストコンピュータ10からそれぞれの排他制御装置200へ再生要求が発行される(D3、D9)。排他制御装置200は、排他制御テーブル310にロック成功、ロック待ちなどを登録後(D4、D10)、デッドロックチェックを要求し(D5~D6、D11~D12)、すぐにホストコンピュータ10へ再生完了を応答する(D8、D13)。これを、ホストコンピュータが保持するロック中、ロック待ちの全ての情報を再生するまで繰り返す。
【0039】
また、マスタ装置では、デッドロックチェック要求を受信すると、装置間通信手段260-0がこの要求を要求キュー420-0に登録する(D7の0.)。デッドロックチェック手段400-0は、要求キュー420-0から要求を取り出し、デッドロックチェックテーブルにチェック要求を登録する(D7の1.)。次にデッドロックチェック手段400-0は、デッドロックチェックを実施する(D7の2.)。デッドロックが発生していなければ、デッドロックチェック手段400-0は、次の要求を要求キュー420-0から取り出し(D7の3.)、デッドロックチェックするという工程を繰り返す。デッドロックが発生していれば、デッドロックチェック手段400-0は、次の要求を要求キュー420-0から取り出さず、“運用中”になるのを待つ(D7の4.)。
【0040】
全てのホストコンピュータ10の再生が完了したら、何れかのホストコンピュータ10が運用再開を要求する(D14、D15)。排他制御手段300は、運用再開を受信すると、再開完了応答を送信する(D14、D15)。再生中にデッドロックが検出されていたら運用再開後にデッドロックを通知する(D16)。デッドロック通知を受信した排他制御手段300は、排他制御テーブル310からデッドロックした資源に関するロック成功、ロック待ちの情報を削除して(D18)、ホストコンピュータ10へデッドロックの発生通知を行う(D19)。
また、マスタ装置では、デッドロックを検出済みであれば、デッドロック発生を通知し(D16)、要求キュー420-0に溜った残りのチェック要求を取り出して処理する(D17)。
【0041】
(一般的な再生処理)
比較のため、
図5に一般的な再生処理を示す。
図5は、一般的な再生処理について説明する図である。主に
図4で説明した本実施形態の再生処理と異なる点について説明する。
何れかのホストコンピュータ10から排他制御装置200へのSWR開始要求が発行され(E1、E2)、これに対し、SWR開始完了応答が送信される(E1、E2)。次にホストコンピュータ10から排他制御装置200へ再生要求が発行される(E3、E9)。
排他制御手段300は、ホストコンピュータ10から再生要求に対し(E3,E9)、排他制御テーブル310に登録するが、デッドロックチェック手段400-0へのデッドロックチェックの要求は行わない。排他制御手段300は、再生完了応答をホストコンピュータ10へ送信する(E8,E13)。これを、ホストコンピュータが保持するロック中、ロック待ちの全ての情報を再生するまで繰り返す。
【0042】
全てのホストコンピュータ10の再生が完了したら、何れかのホストコンピュータ10が運用再開を要求する(E14、E15)。排他制御手段300は、運用再開を受信すると、再開完了応答を送信する(E14、E15)。運用再開後、ロック待ちが解除されないと、一定時間後にホストコンピュータ10から再度ロック要求(リトライ)される(E20)。これに対し、
図2を用いて説明したように、排他制御手段300によって、排他制御テーブルに登録(A2)、ロック可否を判定(A3)、ロック待ちならデッドロックチェックを要求(A4)、デッドロックチェック要求(A5)が実行され、デッドロックチェック手段400-0がデッドロック検出を行い(A6)、デッドロックが検出された場合、デッドロック検出応答が、排他制御手段300へ通知される。この場合、排他制御手段300は、排他制御テーブル310から、ロック待ちを削除して、ロック待ちが解除されたことをホストコンピュータ10へ応答するこの場合、排他制御手段300は、排他制御テーブル310に登録したロック待ちを削除し(A9)、ホストコンピュータ10へデッドロックの発生を通知する(A10)。
【0043】
図5に示すように一般的な再生処理では、デッドロックが生じているロック要求が全て再度ロック要求(リトライ)されたときに、デッドロックが検出される。この間、ロック要求を行ったホストコンピュータ10では、処理待ちとなってしまう。これに対して、
図4に例示した本実施形態の再生処理では、再生処理中にもデッドロックチェックテーブルへのチェック要求の登録、デッドロックチェックを行うので、一般的な再生処理に比べ遅延が生じにくい。また、本実施形態の再生処理の場合、デッドロックチェック中にデッドロックが検出されると、一旦、デッドロックチェック処理が中断されるが、運用再開後は速やかにデッドロックチェックが再開され、
図5の処理のようにロック要求がリトライされるまでデッドロック処理が開始されないようなことが無い。
【0044】
また、再生処理中にデッドロックが検出された場合、デッドロックを検出したことをホストコンピュータ10へ応答してしまうと、この過程で、排他制御テーブル310の登録内容やホストコンピュータ10が保持するロック成功、ロック待ちの情報が変更になり、例えば、再生処理をやり直すなどをしなければならなくなる。これに対し、本実施形態の処理によれば、再生処理中にデッドロックが検出された場合には、デッドロックチェック手段400は、デッドロック応答を行わず、処理を中断し、再生処理が完了するまで待機する。これにより、データと齟齬が生じるようなことが無く、速やかに再生処理を完了することができる。
【0045】
(通信一覧)
次に
図9を参照して、ホストコンピュータ10と、排他制御手段300と、デッドロックチェック手段400との間の信号の流れについて整理する。
【0046】
図9は、実施形態の再生処理に関する通信の一覧を示す図である。
(1)ホストコンピュータ10から排他制御手段300へのロック要求に対して、排他制御手段300からロック待ち応答、ロック成功応答、デッドロック発生応答の何れかの応答が行われる。
(2)排他制御手段300からデッドロックチェック手段400へのデッドロックチェック要求に対し、デッドロック応答(検出)、デッドロック応答(検出なし)、の何れかの応答が行われる。
(3)SWRの再生処理中にデッドロックを検出した場合や遅延ロック要求の延長でデッドロックを検出した場合は、デッドロックチェック手段400から排他制御手段300へデッドロック検出通知が通知され、排他制御手段300がホストコンピュータにデッドロック発生を通知する。
(4)ホストコンピュータ10から排他制御手段300へのSWRの開始要求と、排他制御手段300からホストコンピュータ10への開始完了応答とは対になっている。つまり、排他制御手段300は、SWR開始要求を受信すると、開始完了応答をホストコンピュータ10へ通知する。排他制御手段300は、SWR開始要求を受けたらデッドロックチェック手段400へ初期化通知を行う。
(5)ホストコンピュータ10から排他制御手段300への運用再開要求と、排他制御手段300からホストコンピュータ10への再開完了応答とは対になっている。つまり、排他制御手段300は、運用再開要求を受信すると、再開完了応答をホストコンピュータ10へ通知する。排他制御手段300は、運用再開要求を受けたらデッドロックチェック手段400へ再開通知を行う。
【0047】
(動作)
次に
図6~
図8を用いて、
図4を用いて説明した排他制御システム1の動作について、さらに詳細に説明する。
図6、
図7は、それぞれ実施形態に係る排他制御手段の処理の一例を示す第1、第2のフローチャートである。
図8は、実施形態に係るデッドロックチェック手段の処理の一例を示すフローチャートである。
【0048】
1.SWR開始要求に関連する処理(
図4のD1、D2)
排他制御装置200-0がマスタ装置、他の排他制御装置200はマスタ装置ではなく、デッドロックチェック手段400は休止しているとする。
まず、
図4のSWR開始要求について説明する。SWRを開始するために何れかのホストコンピュータ10が、SWR開始要求を全ての排他制御装置200に送信する。各排他制御装置200では、ホスト通信手段250がSWR開始要求を受信し、排他制御手段300へ出力する。ここで
図6のフローチャートの処理が開始される。
【0049】
排他制御手段300は、受信待ち状態から解除され、SWR開始通知を受信し(ステップS6-1)、動作モード記憶部210が記憶する動作モードが“運用中”であることを確認し(ステップS6-2)、通常処理(ステップS6-3)へ進む。通常処理を
図7に示す。排他制御手段300は、要求を確認する(ステップS7-1)し、SWR開始要求の処理を開始する。まず、排他制御手段300は、動作モード記憶部210に“SWR中”を設定する(ステップS7-10)。排他制御手段300は、再生の準備として、自身の排他制御テーブル310を初期化する(ステップS7-11)。次に、排他制御手段300は、マスタ装置記憶部220を確認して自身がマスタ装置か否かを判定する(ステップS7-12)。自身がマスタ装置の場合(ステップS7-12;Yes)、自装置(=排他制御装置200-0)のデッドロックチェック手段400-0へ初期化指示を送信する(ステップS7-14)。初期化指示は要求キュー420-0に格納される。排他制御手段300-0は、ホスト通信手段250-0経由で、ホストコンピュータ10にSWR開始完了応答を送信する(ステップS7-13)。次に
図8を参照する。デッドロックチェック手段400-0は、要求キュー420-0から要求を取り出し(ステップS8-1)、要求を確認する(ステップS8-2)。要求は初期化指示なので、デッドロックチェック手段400-0は、デッドロックチェックテーブル410-0を初期化し(ステップS8-3)、と再開フラグ430-0のセットを行う(ステップS8-11)。
【0050】
自身がマスタ装置ではない場合(ステップS7-12;No)、排他制御手段300は、ホスト通信手段250経由で、ホストコンピュータ10にSWR開始完了応答を送信する(ステップS7-13)。
【0051】
2.再生要求に関連する処理(
図4のD3~D13)
ホストコンピュータ10は、全ての排他制御装置200から開始完了応答を受け取ったら、再生要求を行う。どの排他制御装置200にどの資源の排他制御情報(ロック成功、ロック待ち等)を再生するかは、複数のホストコンピュータ10間で予め取り決められている。ホストコンピュータ10は、再生する資源ごとに排他制御装置200へ排他制御情報の再生を要求する。
【0052】
排他制御装置200では、ホスト通信手段250が、再生要求を受け取り、排他制御手段300へ出力する。排他制御手段300は、受信待ち状態(ステップS6-1)から解除され処理を開始する。まず、排他制御手段300は、動作モード記憶部210が記憶する動作モードを確認し(ステップS6-2)、動作モードが“SWR中”であることを確認し、続いて要求の確認を行う(ステップS6-4)。要求が再生要求であることを確認すると、排他制御手段300は、再生要求の内容(ロック成功、ロック待ち)を排他制御テーブル310に登録し(ステップS6-5)、ロック待ちか否かを判断する(ステップS6-6)。ロック成功の場合(ステップS6-6;No)、排他制御手段300は、再生完了応答をホスト通信手段250経由でホストコンピュータ10に応答する(ステップS6-8)。ロック待ちの場合(ステップS6-6;Yes)、排他制御手段300は、デッドロックチェック要求をマスタ装置のデッドロックチェック手段400-0へ要求する(ステップS6-7)。排他制御手段300は、再生完了応答をホスト通信手段250経由でホストコンピュータ10に応答する(ステップS6-8)。
【0053】
次に
図8を参照する。ステップS6-7にて排他制御手段300から送信されたデッドロックチェック要求は、装置間通信手段260-0により、要求キュー420-0へ登録される。デッドロックチェック手段400-0は、要求キュー420-0からデッドロックチェック要求を取り出す(ステップS8-1)。デッドロックチェック手段400-0は、要求を確認する(ステップS8-2)。要求がデッドロックチェック要求の場合、デッドロックチェック手段400-0は、デッドロックチェック要求をデッドロックチェックテーブル410に登録し(ステップS8-4)、デッドロックチェックを実施する(ステップS8-5)。次にデッドロックチェック手段400-0は、デッドロックチェックの結果を判定する(ステップS8-6)。デッドロックが発生していない場合(ステップS8-6;No)、デッドロックチェック手段400-0は、まず、動作モードを確認する(ステップS8-14)。動作モード記憶部210に“SWR中”が登録されているので、デッドロックチェック手段400-0は、何もせず、次の要求の取り出しに戻る(ステップS8-1)。
【0054】
デッドロックチェックの結果、デッドロックが検出された場合(ステップS8-6;Yes)、デッドロックチェック手段400-0は、今回の要求により登録したデッドロックチェック要求をデッドロックチェックテーブル410-0から削除する(ステップS8-7)。次にデッドロックチェック手段400-0は、動作モードを確認する(ステップS8-8)。動作モード記憶部210の設定内容が“SWR中”なので、デッドロックチェック手段400-0は、要求キュー420に登録された各種の要求を取り出して処理する動作をいったん中断し、動作モード記憶部210に設定される運転モードが“運用中”になるまで待ち合わせる(ステップS8-12)。デッドロックチェック手段400-0が、動作モードが“SWR中”から“運用中”へ変更されるのを待ち合わせている間も、排他制御手段300は、継続して再生要求を処理し(
図6のステップS6-5~S6-8)、ロック待ちが発生すれば、そのたびにデッドロックチェック手段400-0にデッドロックチェック要求を行う。これらのデッドロックチェック要求は要求キュー420-0に登録される。そして、全てのホストコンピュータ10の再生要求が完了したら、ホストコンピュータ10から運用再開要求(
図4のD14、D15)が行われる。
【0055】
3.再開要求に関連する処理(
図4のD14~D19)
排他制御システム1の運用を再開するために何れかのホストコンピュータ10が運用再開要求を全ての排他制御装置に送信する。排他制御装置200のホスト通信手段250が運用再開要求を受信し、排他制御手段300に出力する。排他制御手段300は、受信待ち状態(ステップS6-1)から解除され処理を開始する。動作モード記憶部210に設定された動作モードは“SWR中”で(ステップS6-2)、要求は運用再開要求のため(ステップS6-4)、排他制御手段300は、動作モード記憶部210の設定内容を“運用中”に変更する(ステップS6-9)。次に、排他制御手段300は、マスタ装置記憶部220を確認して自身がマスタ装置か否かを判定する(ステップS6-10)。自身がマスタ装置の場合(ステップS6-10;Yes)、排他制御手段300-0は、デッドロックチェック手段400-0へ再開通知を送信し(ステップS6-11)、最後にホストコンピュータ10へホスト通信手段250-0経由で再開完了の応答を送信する(ステップS6-12)。
【0056】
自身がマスタ装置ではない場合(ステップS6-10;No)、排他制御手段300は、ホスト通信手段250-0経由で再開完了の応答を送信する(ステップS6-12)。
【0057】
ステップS6-11でデッドロックチェック手段400-0へ送信された再開通知は、要求キュー420-0に保存される。デッドロックチェック手段400-0は、要求キュー420-0から再開通知をとりだして再開フラグをリセットする(ステップS8-17)。以降に要求キュー420-0からとりだされるデッドロックチェック要求は運用再開後に排他制御手段300が行ったものとなる。
【0058】
ステップS6-9にて、排他制御手段300により動作モード記憶部210が“運用中”に変更されると、
図8のステップS8-12において待ち合わせになっていた処理について、デッドロックチェック手段400-0は、
図8のステップS8-8の判定にて“運用中”と判定する。これによって待ち合わせが解除される。デッドロックチェック手段400-0は、ステップS8-9の判定にて、再開通知が要求キュー420-0から取り出されて再開フラグがリセットされるまでは、再開フラグ430-0がセットされていると判定する。これにより、デッドロックチェック手段400-0は、検出済みのデッドロックをデッドロック検出通知として要求元の排他制御手段300に通知し(ステップS8-13)、次の要求を取り出し(ステップS8-1)、溜まっている要求の処理を行う。
【0059】
取り出した要求がデッドロックチェック要求の場合、デッドロックチェックテーブル410-0へ登録し、デッドロックチェックを実行する(ステップS8-4~S8-5)、デッドロックが発生した場合(ステップS8-6;Yes)、デッドロックチェックテーブル410-0から登録データを削除する(ステップS8-7)。このとき動作モード記憶部210の設定内容が”運用中“で再開フラグ430-0がリセットされていれば(ステップS8-9;リセット)、デッドロックを検出した旨のデッドロック応答を排他制御手段300へ送信し(ステップS8-10)、再開フラグ430-0がセットされていれば(ステップS8-9;セット)、デッドロック検出通知を排他制御手段300に通知する(ステップS8-13)。デッドロック検出通知を受信した排他制御手段300は、運転モードが“運転中”のため(ステップS6-2)、通常処理を行い、要求の種類がデッドロックチェック検出通知のため(ステップS7-1)、排他制御テーブル310からデッドロックとなったロック待ちを削除し(ステップS7-15)、当該再生要求を行ったホストコンピュータ10へ、デッドロック発生通知をホスト通信手段250経由で送信する(ステップS7-16)。
【0060】
デッドロックが発生していなければ(ステップS8-6;No)、デッドロックチェック手段400-0は、動作モード記憶部210-0が“運用中”のため(ステップS8-14;運用中)、再開フラグ430-0を確認し、リセット状態の場合のみ(ステップS8-14;リセット)、デッドロック検出なしのデッドロック応答を排他制御手段300に送信し(ステップS8-16)、要求キューからの要求の取り出し(ステップS8-1)に戻る。再開フラグ430-0がセットされている場合は、何もせずに、要求キュー420-0からの要求の取り出し(ステップS8-1)に戻る。
【0061】
排他制御手段300は、デッドロックチェック手段400-0からデッドロックチェック応答を受け取ったら、運転モードが“運転中”のため(ステップS6-2)、
図7に示す通常処理を行う。具体的には、排他制御手段300は、要求の種類を判定し(ステップS7-1)、デッドロックチェック応答のためデッドロックが発生したかどうかを判定する(ステップS7-6)。デッドロックが発生していなければ(ステップS7-6;No)、排他制御手段300は、ロック要求を行ったホストコンピュータ10へロック待ち応答をホスト通信手段250経由で送信する(ステップS7-7)。デッドロックが発生していれば(ステップS7-6;Yes)、排他制御手段300は、排他制御テーブル310からデッドロックとなったロック待ちを削除する(ステップS7-8)。排他制御手段300は、デッドロック発生応答をホスト通信手段250経由でロック要求を行ったホストコンピュータ10へ送信する(ステップS7-9)。
【0062】
4.通常運用中の処理
次に
図2の通常運用中の処理について簡単に説明する。排他制御手段300は、ホストコンピュータ10からロック要求を受信すると、ステップS6-2の判定により、
図7の通常処理のステップS7-2~S7-5の処理を行う。一方、デッドロックチェック手段400-0は、排他制御手段300からのデッドロックチェック要求に対して、
図8のステップS8-4~8-16の処理を行う。この場合、ステップS8-8、S8-14の判定では動作モードは“運用中”となり、ステップS8-9、S8-15の判定では再開フラグがリセットとなる。
【0063】
(効果)
以上説明したように本実施形態によれば、SWR(再構築)実行時に、運用再開までの時間を担保しつつ、以下を実現することができる。
(1)排他制御情報の再生時に、ロック待ちのデータであれば、デッドロックチェックテーブル410に登録するためデッドロックチェック手段400へ送信する。ただし、これに対するデッドロックチェックの結果を待ち合わせないで、ホストコンピュータ10へ登録完了を応答し(ステップS6-5~S6-8)、次の再生データを受け付けることで(ステップS6-1)、排他制御情報の再構築を遅滞なく実施することができる。また、再生処理中に(デッドロックが検出されるまでは)デッドロックチェックテーブルへの登録、デッドロックチェックを進めることができる。その結果、一般的なSWRに比べ、デッドロックチェックを早いタイミングで開始することができるので、デッドロックチェックの結果を速やかにホストコンピュータ10へ応答することができる。これにより、ホストコンピュータ10における処理遅延を防ぐことができる。
【0064】
(2)デッドロックチェック要求は要求キュー420に順次登録され、デッドロックチェック手段400は、登録された要求を取り出してデッドロックチェックテーブル410に登録し(ステップS8-4)、デッドロックチェックを実施する(ステップS8-5)。また、再生処理中はチェック結果の応答を返さない。再生処理中にデッドロックを検出したら、再生処理が完了し、通常の運用(動作モード“運用中“)に戻るまで要求キュー420から要求の取り出しを中断し、運用が再開されるまで待機する(ステップS8-12)。この間もデッドロックチェック要求は要求キューに登録されつづける。
これにより、再生処理が阻害されることなく、一般的なSWRを実行する場合と同様の時間で再生処理を終えることができる。
【0065】
例えば、SWR開始要求前にデッドロックが発生していた場合(例えば、遅延デッドロックチェック機能でデッドロックチェック未実施のタイミングでSWRが開始されたケース)、デッドロック検出により登録したロック要求を排他制御テーブルから削除し、ホストコンピュータ10の保持する再構築用のデータを更新する必要がある。しかし、デッドロック検出の通知を運用再開までデッドロックチェック手段400で保留することにより、再生中のデータ及びホストが保持している再構築用のデータを更新する必要がなく、排他制御テーブル310の再構築はこれまで通りの時間で実施が可能となる。
【0066】
(3)そして、SWRが完了し、排他制御システム1の運用が再開されると、再生処理中にデッドロックを検出していれば、デッドロック検出通知が排他制御手段300に通知され(ステップS8-13)、排他制御テーブル310から該当するデータを削除し(ステップS7-15)、デッドロックが発生し、ロック待ちが解除されたことをホストコンピュータ10へ通知する(ステップS7-16)。また、運用再開後、デッドロックチェック手段400は、要求キュー420の要求を取り出し、デッドロックチェックテーブルへの登録とデッドロックチェックを再開する(ステップS8-4、S8-5)。
これにより、一般的なSWRでは、運用再開後にロック要求のリトライがされてからデッドロックチェックが実施されるのに比べ、速やかにデッドロックチェックを行い、そのチェック結果をホストコンピュータ10へ応答することができる。
【0067】
(4)また、運用再開後のロック要求でデッドロック状態が発生した場合、再開時点でデッドロックチェックテーブルが完成している(または登録が進んでいる)ので、ロック要求時にデッドロックを検出することができ、速やかにデッドロック状態を解消することができる。
【0068】
(最小構成)
図10は、最小構成を有する排他制御装置の構成を示すブロック図である。
排他制御装置500は、共有資源への排他制御を行う。排他制御装置500は、複数の排他制御装置500から構成される排他制御システムの再構築処理を行う機能を有する。排他制御装置500は、排他制御手段501と、デッドロックチェック手段502と、を備える。
排他制御手段501は、再構築処理中にホストコンピュータから排他制御情報(ロック成功、ロック待ち)の再生要求を受け付け、当該排他制御情報を排他制御テーブルに登録することによって前記排他制御情報の再生を行う。排他制御手段501は、再生要求を受けた排他制御情報がロック待ちの場合、当該ロック待ちについて、デッドロックチェック手段502へデッドロックチェックを要求する。排他制御手段501は、デッドロックチェックの結果を受け取ることなく、次の再生要求を受け付ける。
デッドロックチェック手段502は、ロック待ちについてデッドロックチェックを実行する。デッドロックチェック手段502は、デッドロックチェックを要求されたロック待ちの情報をデッドロックチェックテーブルへ登録する。
【0069】
図11は、最小構成を有する排他制御装置の処理を示すフローチャートである。
図11に再構築処理における再生処理の流れを示す。
始めに、排他制御手段501がホストコンピュータから再生要求を受け付ける(ステップS1)。排他制御手段501は再生要求を受けた排他制御情報を排他制御テーブルに登録する(ステップS2)。排他制御情報がロック待ちの場合、排他制御手段501はデッドロックチェック手段502へデッドロックチェックを要求する(ステップS3)。デッドロックチェック手段502は、ロック待ちをデッドロックチェックテーブルへ登録する(ステップS4)。排他制御手段501はホストコンピュータから次の再生要求を受け付ける(ステップS5)。
【0070】
図12は、実施形態による排他制御装置のハードウェア構成の一例を示す図である。
コンピュータ900は、CPU901、主記憶装置902、補助記憶装置903、入出力インタフェース904、通信インタフェース905を備える例えばPC(Personal Computer)やサーバ端末装置である。上述の排他制御装置200、500の各々の少なくとも一部は、コンピュータ900に実装される。そして、上述した各処理は、プログラムの形式で補助記憶装置903に記憶されている。CPU901は、プログラムを補助記憶装置903から読み出して主記憶装置902に展開し、当該プログラムに従って上記処理を実行する。また、CPU901は、プログラムに従って、記憶領域を主記憶装置902に確保する。また、CPU901は、プログラムに従って、処理中のデータを記憶する記憶領域を補助記憶装置903に確保する。
【0071】
なお、少なくとも1つの実施形態において、補助記憶装置903は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、入出力インタフェース904を介して接続される磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ900に配信される場合、配信を受けたコンピュータ900が当該プログラムを主記憶装置902に展開し、上記処理を実行しても良い。また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置903に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0072】
また、上述した実施形態における排他制御装置200、500の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。排他制御装置200、500の各機能部は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0073】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。また、本発明の一態様は、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。また、上記各実施形態や変形例に記載された要素であり、同様の効果を奏する要素同士を置換した構成も含まれる。
【符号の説明】
【0074】
1・・・排他制御システム
10・・・ホストコンピュータ
20・・・共有資源
200,500・・・排他制御装置
250・・・ホスト通信手段
260・・・装置間通信手段
210・・・動作モード記憶部
220・・・マスタ装置記憶部
300・・・排他制御手段
310・・・排他制御テーブル
400・・・デッドロックチェック手段
410・・・デッドロックチェックテーブル
420・・・要求キュー
430・・・再開フラグ
900・・・コンピュータ
901・・・CPU
902・・・主記憶装置
903・・・補助記憶装置
904・・・入出力インタフェース
905・・・通信インタフェース