JP2004246439A - クラスタシステムにおけるストール防止方式,方法およびプログラム - Google Patents
クラスタシステムにおけるストール防止方式,方法およびプログラム Download PDFInfo
- Publication number
- JP2004246439A JP2004246439A JP2003033217A JP2003033217A JP2004246439A JP 2004246439 A JP2004246439 A JP 2004246439A JP 2003033217 A JP2003033217 A JP 2003033217A JP 2003033217 A JP2003033217 A JP 2003033217A JP 2004246439 A JP2004246439 A JP 2004246439A
- Authority
- JP
- Japan
- Prior art keywords
- resource
- lock
- shared resource
- host
- cluster system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【解決手段】タイマ監視手段102,202は共有資源に対する資源ロック待ちを監視し、共有資源長時間ロックチェック手段103,203は共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する。プロセス強制停止手段105,205は共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止してプロセスが確保していた共有資源のロックを解放し、ホスト強制停止手段106,206は共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して、ホストがロックしていた共有資源に対する資源ロック要求をパージする。
【選択図】 図1
Description
【発明の属する技術分野】
本発明はクラスタシステムにおけるストール防止方式,方法およびプログラムに関し、特に複数のホストが資源を共有するクラスタシステムにおけるストール防止方式,方法およびプログラムに関する。
【0002】
【従来の技術】
プロセスが何らかの原因(資源の排他制御の待ちなど)により、可動状態にならずに待ちあるいは無限にループしている状態をプロセスのストール状態と呼ぶ。この結果、システムを使う人が実行するジョブが(外見え)待ちになっている状態を「ジョブストール」と呼ぶ。オンラインが待ちになっている場合は「オンラインストール」と呼ぶ。1台のホストであらゆる処理が待ちの状態に見えると「システムストール」と呼ぶ。さらに範囲が広がって、クラスタシステムにおいて、あるプロセスのストールに起因して、ストールが発生したホストだけでなく、クラスタシステムを構成する他ホストでも、同じようなストール状態に陥ったときに「クラスタシステム全体のストール」と呼ぶ。「プログラムが共有資源のロックを確保したまま暴走すること」や「デッドロック」は、「クラスタシステム全体のストール」につながる元になる。
【0003】
また、「デッドロック」の一番簡単な例は、プロセスp1が共有資源Aのロックを確保したまま共有資源Bをロックしようとすると同時に、プロセスp2が共有資源Bのロックを確保したまま共有資源Aをロックしようとすると、プロセスp1およびp2とも確保しようとしたロックで待ちになってしまう。これがホスト間にまたがると、クラスタシステム全体のストールになる。また、デッドロックが一ホスト内に収まっていたとしても、クラスタシステム内の他ホストで共有資源AおよびBをロックしようとすると待ちになり、このホストにストールの影響が波及し、クラスタシステム全体のストールとなる。
【0004】
「プログラムが共有資源のロックを確保したまま暴走すること」の場合は、プロセスp1が共有資源Aのロックを確保したまま暴走するということである。これだけでは、プログラムのストール状態である。さらに、他ホストで共有資源Aをロックしようとするプロセスが現れると、そのホストでもプロセスのストール状態が発生するので、クラスタシステム全体のストールになる。
【0005】
従来のクラスタシステムのストール防止システムは、運用系と待機系とにそれぞれクラスタ管理部およびクラスタ監視部をもつ構成となっていた(例えば、特許文献1参照)。
【0006】
このような構成を有する従来のクラスタシステムのストール防止システムでは、運用系のクラスタ監視部が定期的にクラスタ管理部を監視し、運用系のクラスタ管理部の異常を検出したときに、大規模な異常となる(クラスタシステム停止となる)前に運用系を停止させ、稼動系のクラスタ管理部に切り替えることによりフェールセーフを実現する。
【0007】
【特許文献1】
特開2002−116920号公報(第3−4頁、図1)
【0008】
【発明が解決しようとする課題】
しかし、上述した従来技術には、次のような問題点があった。
【0009】
第1の問題点は、ある1台の運用系のクラスタ管理部で異常を見つけると、その1台は必ず停止するということである。その理由は、クラスタ監視部がクラスタ管理部の異常を見つけると、フェールセーフのために必ずその1台を停止してしまうためである。
【0010】
本発明の目的は、クラスタシステムにおいて、クラスタシステム内で動作するプログラムの暴走やクラスタシステムを構成するホスト間でのデッドロックによるクラスタシステム全体のストールを防止できるクラスタシステムにおけるストール防止方式,方法およびプログラムを提供することにある。
【0011】
【課題を解決するための手段】
本発明のクラスタシステムにおけるストール防止方式は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とする。
【0012】
また、本発明のクラスタシステムにおけるストール防止方式は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段と、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とする。
【0013】
さらに、本発明のクラスタシステムにおけるストール防止方式は、前記共有資源排他制御手段が、共有資源に対する資源ロック要求があったときに当該共有資源に対する資源ロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源ロック完了通知を受け取ると要求元プロセスに通知し、クラスタシステム制御装置から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知があったときに要求元プロセスに通知すると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知がなしにタイムアウトしたときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源アンロック完了通知があったときに要求元プロセスに通知することを特徴とする。
【0014】
さらにまた、本発明のクラスタシステムにおけるストール防止方式は、前記タイマ監視手段が、共有資源排他制御手段から共有資源に対する資源ロック待ち監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならば共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源排他制御手段から共有資源に対する資源ロック待ち監視解除要求があったときにセットしていたタイマをキャンセルし、プロセス強制停止手段からプロセス停止監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならばプロセスの状態を参照し、プロセスが停止していれば当該プロセスがロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段に出すことを特徴とする。
【0015】
また、本発明のクラスタシステムにおけるストール防止方式は、前記共有資源長時間ロックチェック手段が、タイマ監視手段から共有資源長時間ロックチェック要求があったときに他ホストの共有資源長時間ロックチェック手段と通信し、クラスタシステム制御装置からロックエントリを参照して共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査し、共有資源の長時間資源ロック待ちの原因となっているプロセスにプロセス強制停止要求を出すことを特徴とする。
【0016】
一方、本発明のクラスタシステムにおけるストール防止方法は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程とを含み、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とする。
【0017】
また、本発明のクラスタシステムにおけるストール防止方法は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程と、ホスト強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行う工程とを含み、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とする。
【0018】
さらに、本発明のクラスタシステムにおけるストール防止方法は、共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程とを含むことを特徴とする。
【0019】
さらにまた、本発明のクラスタシステムにおけるストール防止方法は、共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程と、プロセス強制停止手段が、プロセス停止監視要求をタイマ監視手段に出す工程と、タイマ監視手段が、タイムアウト後にプロセスの状態を判断し、プロセスが終了していなければ当該プロセスが動作しているホストのホスト強制停止要求をホスト強制停止手段に出す工程と、ホスト強制停止手段が、ホスト強制停止要求に基づいてホストの強制停止を行う工程とを含むことを特徴とする。
【0020】
他方、本発明のプログラムは、コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段,共有資源に対する資源ロック待ちを監視するタイマ監視手段,共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段,ならびに共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段として動作させることを特徴とする。
【0021】
また、本発明のプログラムは、コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段,共有資源に対する資源ロック待ちを監視するタイマ監視手段,共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段,共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段,ならびに共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段として動作させることを特徴とする。
【0022】
図1のような、ホストH01およびH02と、クラスタシステム制御装置300とで構成されているクラスタシステムにおいて、タイマ監視手段102および202により共有資源に対する資源ロック待ちを監視し、共有資源長時間ロックチェック手段103および203により共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査し、プロセス強制停止手段105および205により共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止し、強制停止したプロセスが確保していた共有資源のロックを解放するか、またはホスト強制停止手段106および206により共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止し、強制停止したホストがロックしていた共有資源のパージを行う。このようにして、クラスタシステム全体のストールを防止することを可能にする。
【0023】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0024】
[第1の実施の形態]
図1を参照すると、本発明の第1の実施の形態に係るクラスタシステムにおけるストール防止方式は、プログラム制御により動作するホスト(中央処理装置;プロセッサ;データ処理装置)H01およびH02と、これらのホスト間で共有される共有資源の排他制御を行うクラスタシステム制御装置300とから構成されている。
【0025】
ホストH0k(k=1,2)は、それぞれ同様の構成を有し、共有資源排他制御手段k01と、タイマ監視手段k02と、共有資源長時間ロックチェック手段k03と、ホスト間通信手段k04と、プロセス強制停止手段k05と、ホスト強制停止手段k06とを含んで構成されている。
【0026】
これらの手段は、それぞれ次のように動作する。
【0027】
共有資源排他制御手段k01は、ホストH0kで動作しているプロセスから共有資源に対する資源ロック要求があったときに、資源ロック要求をクラスタシステム制御装置300に送信し、クラスタシステム制御装置300から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先へ進める。クラスタシステム制御装置300から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段k02に出し、この後に、クラスタシステム制御装置300から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先に進めると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段k02に出す。ホストH0kで動作しているプロセスから共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置300に送信し、クラスタシステム制御装置300から資源アンロック完了通知を受け取ると、資源アンロック完了を要求元プロセスに通知してプロセスを先へ進める。タイマ監視手段k02から強制停止したプロセスがロックしていた共有資源に対する資源アンロック要求を受け取ったときに、当該共有資源に対する資源アンロック要求をクラスタシステム制御装置300に送信する。ホスト間通信手段k04を経由して他ホストのホスト強制停止完了通知を受け取ると、当該ホストのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置300に送信する。
【0028】
タイマ監視手段k02は、共有資源排他制御手段k01から共有資源に対する資源ロック待ち監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、当該共有資源で長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段k03に出す。共有資源排他制御手段k01から共有資源に対する資源ロック待ち監視解除要求を受け取ると、セットしていたタイマをキャンセルする。プロセス強制停止手段k05からプロセス停止監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、プロセスの状態を参照し、もしプロセスが停止していれば、当該共有資源に対する資源アンロック要求を共有資源排他制御手段k01に出す。もしプロセスが停止していなければ、ホスト強制停止要求をホスト強制停止手段k06に出す。
【0029】
共有資源長時間ロックチェック手段k03は、タイマ監視手段k02から共有資源長時間ロックチェック要求を受け取ると、他ホストの共有資源長時間ロックチェック手段k03と通信し、さらにクラスタシステム制御装置300からロックエントリを参照して、共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査する。そして、共有資源の長時間資源ロック待ちの原因となっているプロセスのプロセス強制停止要求をプロセス強制停止手段k05に出す。
【0030】
ホスト間通信手段k04は、必要に応じて共有資源長時間ロックチェック手段k03から他ホストの共有資源長時間ロックチェック手段k03に共有資源長時間ロックチェック要求,ホスト強制停止完了通知,ロックプロセス情報通知等を送受信する。
【0031】
プロセス強制停止手段k05は、共有資源長時間ロックチェック手段k03からプロセス強制停止要求を受け取ったときに、プロセスを強制停止させる。プロセスが強制停止した後、プロセス停止監視要求をタイマ監視手段k02に出す。
【0032】
ホスト強制停止手段k06は、タイマ監視手段k02からホスト強制停止要求を受け取ったときに、ホストH0kを強制停止させる。ホストH0kが強制停止した後、ホスト強制停止完了通知をホスト間通信手段k04を経由して他ホストに送信する。
【0033】
図2を参照すると、クラスタシステム制御装置300は、共有資源に対する資源ロック要求毎に、ホストID,プロセスID,資源名および資源ロック状態(資源ロック完了状態または資源ロック待ち状態)からなるロックエントリを記憶する。
【0034】
クラスタシステム制御装置300は、共有資源排他制御手段k01から共有資源に対する資源ロック要求があったときに、当該共有資源に対する資源ロック完了状態のロックエントリがあるかどうかに基づいて当該共有資源がロックされているかどうかを検索する。検索の結果、当該共有資源がロックされていなければ、資源ロック要求元のホストID,プロセスID,資源名および資源ロック完了状態のロックエントリを記憶し、資源ロック完了通知を共有資源排他制御手段k01に返却する。検索の結果、当該共有資源がロックされていれば、資源ロック要求元のホストID,プロセスID,資源名および資源ロック待ち状態のロックエントリを記憶し、資源ロック待ち通知を共有資源排他制御手段k01に返却する。共有資源排他制御手段k01から資源アンロック要求があったときに、クラスタシステム制御装置300は、資源ロック完了状態のホストID,プロセスIDおよび資源名のロックエントリを検索し、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段k01に返却する。消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、そのうちの1つのロックエントリを資源ロック完了状態に更新し、その資源ロック要求があったホストに資源アンロック完了通知を出す。共有資源排他制御手段k01から他ホストの資源パージ要求があったときに、当該ホストのプロセスがロックしていた共有資源を長時間資源ロック待ちしている資源ロック要求のロックエントリをパージする。
【0035】
まず、第1の実施の形態に係るクラスタシステムにおけるストール防止方式における処理の全体の流れについて、図3を参照しながら説明する。
【0036】
あるプロセスから共有資源に対する資源ロック要求または資源アンロック要求がくると、共有資源排他制御手段k01の処理が行われる(処理P1)。共有資源に対する資源アンロック要求のときは処理が完了するため、これより先の処理が動作することはない。共有資源に対する資源ロック要求のときは、共有資源排他制御手段k01は、クラスタシステム制御装置300から資源ロック完了通知を受け取れば、これより先の処理が動作することはない。長時間資源ロック待ちとなり、タイマ監視手段k02からタイムアウト通知を受け取ったときに、共有資源排他制御手段k01は、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段k03に出すので、この先へ処理が進む。
【0037】
共有資源長時間ロックチェック要求を受け取ると、共有資源長時間ロックチェック手段k03の処理が動作する(処理P2)。チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて、共有資源長時間ロックチェック要求を出す(END(1)の方向へ進む)。チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、そのプロセスを強制停止させる必要があるため、共有資源長時間ロックチェック手段k03は、プロセス強制停止要求をプロセス強制停止手段k05に出す(END(2)の方向へ進む)。
【0038】
プロセス強制停止手段k05は、共有資源長時間ロックチェック手段k103によりプロセス強制停止要求されたプロセスの強制停止を試みる(処理P3)。
【0039】
次に、プロセス強制停止手段k05は、プロセス停止監視要求をタイマ監視手段k02に出す(処理P4)。
【0040】
タイムアウト後、タイマ監視手段k02は、プロセスの状態を判断し(処理P5)、プロセスが終了していれば、長時間資源ロック待ちがすべて解放されているので、処理は終了する。プロセスが終了していなければ、タイマ監視手段k02は、ホスト強制停止要求をホスト強制停止手段k06に出す。
【0041】
ホスト強制停止手段k06は、ホストH0kの強制停止を行う(処理P6)。
【0042】
これを検出したクラスタシステム制御装置300は、ホストH0kがロックしていた共有資源に対する資源ロック要求をパージするため、当該共有資源に対する資源ロック待ち状態のロックエントリをすべて消去する。
【0043】
次に、共有資源排他制御手段k01の動作について、図4を参照しながら説明する。
【0044】
まず、共有資源排他制御手段k01は、プロセスが要求した処理が資源ロック要求かどうかをチェックする(ステップS101)。
【0045】
プロセスが要求した処理が資源ロック要求でない、すなわち資源アンロック要求であるならば(ステップS101でいいえ)、共有資源排他制御手段k01は、資源アンロック要求をクラスタシステム制御装置300に送信する(ステップS109)。
【0046】
クラスタシステム制御装置300から資源アンロック完了通知を受け取ると(ステップS110)、共有資源排他制御手段k01は、資源アンロック完了を要求元プロセスに通知して(ステップS111)、要求元プロセスを先へ進める。
【0047】
一方、プロセスが要求した処理が資源ロック要求ならば(ステップS101ではい)、共有資源排他制御手段k01は、資源ロック要求をクラスタシステム制御装置300に送信し(ステップS102)、処理結果を待つ。
【0048】
クラスタシステム制御装置300から処理結果を受信すると(ステップS103)、共有資源排他制御手段k01は、クラスタシステム制御装置300からきた処理結果をチェックする(ステップS104)。
【0049】
処理結果が資源ロック完了通知ならば(ステップS104ではい)、共有資源排他制御手段k01は、資源ロック完了を要求元プロセスに通知して(ステップS112)、要求元プロセスを先へ進める。
【0050】
処理結果が資源ロック完了通知でない、すなわち資源ロック待ち通知ならば(ステップS104でいいえ)、共有資源排他制御手段k01は、資源ロック待ちになったために監視をする必要があるので、資源ロック待ち監視要求をタイマ監視手段k02に出し(ステップS105)、イベント受け取り待ちになる。
【0051】
その内、何らかのイベントを受け取ると(ステップS106)、共有資源排他制御手段k01は、その内容をチェックする(ステップS107)。
【0052】
イベントが資源ロック完了通知ならば(ステップS107ではい)、ステップS104の時点では共有資源をロックしていたプロセスが共有資源をアンロックしたため、本プロセスが共有資源をロックできたことを意味し、監視はもう不要となるので、共有資源排他制御手段k01は、資源ロック待ち監視解除要求をタイマ監視手段k02に出し(ステップS113)、資源ロック完了を要求元プロセスに通知して(ステップS114)、要求元プロセスを先へ進める。
【0053】
イベントが資源ロック完了通知でない、すなわち共有資源に対する資源ロック待ちのタイムアウトならば(ステップS107でいいえ)、共有資源排他制御手段k01は、長時間資源ロック待ちとなっているため、その原因となっているプロセスを調査するために、共有資源長時間ロックチェック要求を自ホストH0kの共有資源長時間ロックチェック手段k03に出す(ステップS108)。このとき、自ホストH0kのホストIDおよび要求元プロセスのプロセスIDも一緒に通知する。この後、共有資源のロックが解放されるのを再度監視するため、共有資源排他制御手段k01は、ステップS105に制御を戻す。
【0054】
次に、タイマ監視手段k02の動作について、図5を参照しながら説明する。
【0055】
タイマ監視手段k02は、共有資源排他制御手段k01およびプロセス強制停止手段k05から受け取った要求をチェックして(ステップS201)、それに応じてタイマをセットしたり、キャンセルしたりする。また、タイマ監視手段k02は、タイムアウト時には、共有資源排他制御手段k01およびプロセス強制停止手段k05にタイムアウト通知を行う。
【0056】
タイマ監視手段k02で処理する要求は、共有資源排他制御手段k01からきた資源ロック待ち監視要求,共有資源排他制御手段k01からきた資源ロック待ち監視解除要求,およびプロセス強制停止手段k05からきたプロセス停止監視要求の3つである。
【0057】
詳しくは、タイマ監視手段k02は、共有資源排他制御手段k01からの資源ロック待ち監視要求に応じて(ステップS201)、タイマをセットし、タイムアウトしたならば共有資源排他制御手段k01にタイムアウト通知を行う(ステップS202)。
【0058】
また、タイマ監視手段k02は、共有資源排他制御手段k01からきた資源ロック待ち監視解除要求に応じて(ステップS201)、セットしたタイマをキャンセルする(ステップS203)。
【0059】
さらに、タイマ監視手段k02は、プロセス強制停止手段k05からきたプロセス停止監視要求に応じて(ステップS201)、タイマをセットし、タイムアウトしたならばプロセス強制停止手段k05にタイムアウト通知を行う(ステップS204)。
【0060】
続いて、共有資源長時間ロックチェック手段k03の動作について、図6を参照しながら詳細に説明する。
【0061】
いま、ホストH0k(=これから共有資源長時間ロックチェック手段k03が動作しようとするホスト)のプロセスpが共有資源長時間ロックチェック要求の対象とする。
【0062】
共有資源長時間ロックチェック手段k03は、ホストH0kのプロセスpに資源ロック待ちの共有資源があるかどうかをチェックする(ステップS301)。
【0063】
ホストH0kのプロセスpに資源ロック待ちの共有資源がなければ(ステップS301でいいえ)、共有資源長時間ロックチェック手段k03は、ホストH0kのプロセスpを他プロセスが長時間資源ロック待ちとしている原因であるので停止させる必要があると判断し、プロセスpに対するプロセス強制停止要求をプロセス強制停止手段k05に出し(ステップS306)、処理を終了する。
【0064】
ホストH0kのプロセスpに資源ロック待ちの共有資源があれば(ステップS301ではい)、共有資源長時間ロックチェック手段k03は、ホストH0kのプロセスpがすでに長時間資源ロック待ちを検出済みのプロセスかどうかをチェックする(ステップS302)。ホストH0kのプロセスpが長時間資源ロック待ちを検出済みのプロセスであれば(ステップS302ではい)、共有資源長時間資源ロック待ちの関係をたどった結果、複数のプロセスからなるループ構成になっている、すなわちデッドロックであるので、これらの複数のプロセスのうち、いずれか1つのプロセスを停止させる必要があるため、共有資源長時間ロックチェック手段k03は、プロセスpに対するプロセス強制停止要求をプロセス強制停止手段k05に出し(ステップS306)、処理を終了する。
【0065】
ホストH0kのプロセスpが長時間資源ロック待ちを検出済みのプロセスでなければ(ステップS302でいいえ)、共有資源長時間ロックチェック手段k03は、ホストH0kのプロセスpが長時間資源ロック待ちとなっている共有資源を、どのホストのどこのプロセスがロックしているかをロックプロセス情報要求として共有資源排他制御手段k01を経由してクラスタシステム制御装置300に問い合わせる(ステップS303)。
【0066】
次に、共有資源長時間ロックチェック手段k03は、クラスタシステム制御装置300から当該共有資源をロックしているホストおよびプロセスのホストIDおよびプロセスIDを含むロックプロセス情報通知を受け取る(ステップS304)。いま、得られたホストIDをh’、プロセスIDをp’とする。
【0067】
ホストH0kのプロセスpの共有資源に対する長時間資源ロック待ちを解除するためには、当該共有資源をロックしているホストH0h’のプロセスp’に対して処置を行う必要があるので、共有資源長時間ロックチェック手段k03は、ホスト間通信手段k04およびh’04を経由して、ホストIDがh’の共有資源長時間ロックチェック手段h’03にプロセスp’の共有資源長時間ロックチェック要求を出し(ステップS305)、処理を終了する。
【0068】
次に、このように構成された第1の実施の形態に係るクラスタシステムにおけるストール防止方式の動作について説明する。
【0069】
まず、ホストH01のプロセスが要求した処理が資源ロック要求であれば(ステップS101ではい)、ホストH01の共有資源排他制御手段101は、資源ロック要求をクラスタシステム制御装置300に送信する(ステップS102)。
【0070】
クラスタシステム制御装置300は、共有資源排他制御手段101から共有資源に対する資源ロック要求があったときに、まず、当該共有資源の資源名で資源ロック完了状態のロックエントリが存在するかどうかに基づいて当該共有資源がロックされているかどうかを検索する。検索の結果、当該共有資源がロックされていなければ、クラスタシステム制御装置300は、資源ロック要求元のホストID,プロセスID,資源名および資源ロック完了状態のロックエントリを記憶し、資源ロック完了通知を共有資源排他制御手段k01に返却する。検索の結果、当該共有資源がロックされていれば、クラスタシステム制御装置300は、資源ロック要求元のホストID,プロセスID,資源名および資源ロック待ち状態のロックエントリを記憶し、資源ロック待ち通知を共有資源排他制御手段k01に返却する。
【0071】
共有資源排他制御手段101は、クラスタシステム制御装置300から資源ロック完了通知を受け取れば(ステップS104ではい)、資源ロック完了を要求元プロセスに通知し(ステップS112)、要求元プロセスを先に進める。
【0072】
一方、クラスタシステム制御装置300から資源ロック待ち通知を受け取れば(ステップS104でいいえ)、共有資源排他制御手段101は、当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段102に出す(ステップS105)。
【0073】
タイマ監視手段102は、共有資源排他制御手段101から共有資源に対する資源ロック待ち監視要求を受け取ると(ステップS201)、タイマをセットする(ステップS202)。
【0074】
次に、共有資源排他制御手段101は、タイムアウトまでにクラスタシステム制御装置300から資源ロック完了通知を受け取れば(ステップS107ではい)、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段102に出し(ステップS113)、資源ロック完了を要求元プロセスに通知し(ステップS114)、要求元プロセスを先に進める。
【0075】
タイマ監視手段102は、共有資源排他制御手段101から共有資源に対する資源ロック待ち監視解除要求を受け取ると(ステップS201)、セットされているタイマをキャンセルする(ステップS203)。
【0076】
共有資源に対する資源ロック待ち監視解除要求が届かずにタイマがタイムアウトした場合は、タイマ監視手段102は、当該共有資源でプロセスが長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段103に出す。
【0077】
続いて、共有資源長時間ロックチェック手段103は、タイマ監視手段102から共有資源長時間ロックチェック要求を受け取ると、当該共有資源のロックプロセス情報要求(ホストIDおよびプロセスID)を共有資源排他制御手段k01を経由してクラスタシステム制御装置300に送信する(ステップS303)。
【0078】
クラスタシステム制御装置300は、当該共有資源のロックプロセス情報要求を受け取ると、当該共有資源のロックエントリを検索して当該共有資源をロックしているホストおよびプロセスのホストIDおよびプロセスIDを含むロックプロセス情報通知を要求元ホストH01の共有資源長時間ロックチェック手段103に返却する。
【0079】
共有資源長時間ロックチェック手段103は、クラスタシステム制御装置300から返却されてきたロックプロセス情報通知のホストIDおよびプロセスIDを参照して、当該共有資源をロックしているホストH02の共有資源長時間ロックチェック手段203に、共有資源長時間ロックチェック要求をホスト間通信手段104および204を経由して送信する(ステップS305)。
【0080】
共有資源長時間ロックチェック要求を受け取ると、ホストH02の共有資源長時間ロックチェック手段203は、当該共有資源をロックしているプロセスの状態を調査し、共有資源に対する資源ロック待ちになっているかどうかを判断する(ステップS301)。
【0081】
共有資源に対する資源ロック待ちになっていれば、共有資源長時間ロックチェック手段203は、当該共有資源のロックプロセス情報要求(ホストIDおよびプロセスID)をクラスタシステム制御装置300に送信する(ステップS303)。
【0082】
以上のような処理を繰り返すうちに、最初に長時間資源ロック待ちを検出したプロセスに戻る場合がある。一番簡単な例は、デッドロックのケースであり、まず、プロセスp1で共有資源Bの長時間資源ロック待ちを検出し、共有資源Bをロックしているのはプロセスp2であれば、プロセスp2は共有資源Aを資源ロック待ちしているので、共有資源Aをロックしているのはプロセスp1であり、最初に検出したプロセスに戻ってくる。このような場合は、デッドロックのため、デッドロックに関係しているプロセスのいずれかを強制停止する必要がある。どのプロセスを止めるかは、たとえばホストIDの一番若いプロセスと決めておく。
【0083】
このようにして決めたプロセスが動作しているホストH0kのプロセス強制停止手段k05に対して、共有資源長時間ロックチェック手段k03は、ホスト間通信手段k04を経由してプロセス強制停止要求を送信する(ステップS306)。
【0084】
もし共有資源に対する資源ロック待ちになっていなければ(ステップS301でいいえ)、共有資源長時間ロックチェック手段k03は、そのホストH0kのプロセス強制停止手段k05にプロセス強制停止要求を出す(ステップS306)。
【0085】
プロセス強制停止手段k05は、共有資源長時間ロックチェック手段k03からプロセス強制停止要求を受け取ると、指定されたプロセスを強制停止する。同時に、プロセス強制停止手段k05は、プロセス停止監視要求をタイマ監視手段k02に出す。
【0086】
タイマ監視手段k02は、プロセス強制停止手段k05からプロセス停止監視要求を受け取ると、一定時間のタイマをセットする(ステップS204)。
【0087】
タイムアウトした後、タイマ監視手段k02は、プロセスの状態を調査する。
【0088】
もしプロセスが停止していれば、タイマ監視手段k02は、当該共有資源に対する資源アンロック要求を共有資源排他制御手段k01を経由してクラスタシステム制御装置300に送信する(ステップS109)。
【0089】
クラスタシステム制御装置300は、共有資源排他制御手段k01から資源アンロック要求を受け取ると、資源ロック完了状態のホストID,プロセスIDおよび資源名のロックエントリを検索する。そして、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段k01に返却する。もし消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、クラスタシステム制御装置300は、そのうちの1つのロックエントリを資源ロック完了状態に更新し、資源ロック要求があったホストH0kの共有資源排他制御手段k01に資源アンロック完了通知を送信する。
【0090】
これにより、資源ロック待ちとなっていたプロセスが順次動作する。
【0091】
もしプロセスの状態を調査したときにプロセスが停止していなければ(処理P5でいいえ)、タイマ監視手段k02は、ホスト強制停止要求をホスト強制停止手段k06に出す(処理P6)。
【0092】
ホスト強制停止手段k06は、タイマ監視手段k02からホスト強制停止要求を受け取ると、ホストH0kを強制停止する。
【0093】
ホストH0kの強制停止が完了した後、ホスト強制停止手段k06は、ホスト間通信手段k04および共有資源長時間ロックチェック手段k03を経由して、ホスト強制停止完了通知を他のホストH0kの共有資源排他制御手段k01に送信する。
【0094】
ホスト強制停止完了通知を受け取ったホストの共有資源排他制御手段k01は、強制停止したホストH0kのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置300に送信する。
【0095】
クラスタシステム制御装置300は、資源パージ要求を受け取ると、強制停止したホストH0kのプロセスがロックしていた共有資源に対する資源ロック要求をパージするため、そのホストIDのロックエントリをすべて消去し、完了したならば資源パージ完了通知を要求元ホストの共有資源排他制御手段k01に返却する。
【0096】
同時に、当該共有資源に対する資源ロック待ち状態のプロセスが動作するホストのロックエントリが存在する場合、クラスタシステム制御装置300は、1つのホストの1つのプロセスからの資源ロック要求に対するロックエントリを資源ロック完了状態にし、資源ロック完了通知を当該ホストの共有資源排他制御手段k01に返却する。
【0097】
当該ホストの共有資源排他制御手段k01は、資源ロック完了通知を受け取ると(ステップS107ではい)、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段k02に出し(ステップS113)、資源ロック完了を要求元プロセスに通知し(ステップS114)、要求元プロセスが動作する。
【0098】
以降、クラスタシステム内の資源ロックを待っていたホストのプロセスも資源ロック待ちが資源ロック完了に順次変わり、資源ロック待ちが順次解除され、処理を再開する。
【0099】
次に、図7ないし図11に示す具体例を用いて詳しく説明する。
【0100】
いま、図7に示すように、ホストH01のプロセスp11が共有資源Aに対する資源ロック待ち状態、ホストH01のプロセスp12が共有資源Aの資源ロック完了状態で、かつ共有資源Bに対する資源ロック待ち状態、ホストH02のプロセスp21が共有資源Bの資源ロック完了状態とする。このような状態で、ホストH01のタイマ監視手段102が、共有資源Aに対する資源ロック待ちのタイムアウトを検出したとする。
【0101】
タイマ監視手段102は、タイムアウトを検出すると、共有資源Aの共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段103に出す。
【0102】
共有資源長時間ロックチェック手段103は、共有資源Aのロックプロセス情報要求を、共有資源排他制御手段101を経由してクラスタシステム制御装置300に送信する(図8(1)参照)。
【0103】
クラスタシステム制御装置300は、いま共有資源AをロックしているのはホストH01のプロセスp12であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を、共有資源排他制御手段101を経由して共有資源長時間ロックチェック手段103に返却する(図8(2)参照)。
【0104】
共有資源長時間ロックチェック手段103は、共有資源AをロックしているのがホストH01のプロセスp12であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を自分自身に通知する(あるいは次の処理を継続して続ける)。
【0105】
次に、共有資源長時間ロックチェック手段103は、ホストH01のプロセスp12の状態を調査する。
【0106】
いま、ホストH01のプロセスp12は共有資源Bに対する資源ロック待ちであるため、共有資源長時間ロックチェック手段103は、共有資源Bのロックプロセス情報要求を、共有資源排他制御手段101を経由してクラスタシステム制御装置300に送信する(図9(1)参照)。
【0107】
クラスタシステム制御装置300は、いま共有資源BをロックしているのはホストH02のプロセスp21であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を、共有資源排他制御手段101を経由して共有資源長時間ロックチェック手段103に返却する(図9(2)参照)。
【0108】
共有資源長時間ロックチェック手段103は、共有資源BをロックしているのがホストH02のプロセスp21であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を、ホストH01のホスト間通信手段104およびホストH02のホスト間通信手段204を経由してホストH02の共有資源長時間ロックチェック手段203に出す(図9(3)参照)。
【0109】
ホストH02の共有資源長時間ロックチェック手段203は、ホストH02のプロセスp21の状態を調査する。
【0110】
いま、プロセスp21は、資源ロック待ちではないため、何らかの原因で共有資源Bのロックを長時間確保したままとなっている。したがって、このプロセスp21がクラスタシステム全体をストールさせている原因となっているため、このプロセスp21を強制停止する必要がある。
【0111】
共有資源長時間ロックチェック手段203は、プロセスp21のプロセス強制停止要求をプロセス強制停止手段205に出す(図10(1)参照)。
【0112】
プロセス強制停止手段205は、プロセスp21の強制停止を行う(図10(2)参照)。
【0113】
同時に、プロセス強制停止手段205は、プロセス停止監視要求をタイマ監視手段202に出す。
【0114】
タイマ監視手段202は、一定時間後にプロセスp21の状態を調査する。
【0115】
プロセスp21が強制停止していれば、タイマ監視手段202は、プロセスp21がロックしていた共有資源Bに対する資源アンロック要求を共有資源排他制御手段201を経由してクラスタシステム制御装置300に送信する(図10(3)参照)。
【0116】
クラスタシステム制御装置300は、プロセスp21がロックしていた共有資源Bに対する資源ロック要求のロックエントリを消去し(図10(4)参照)、共有資源Bの資源アンロック完了通知を共有資源排他制御手段201に返却する(図10(5)参照)。
【0117】
同時に、いまホストH01のプロセスp12が共有資源Bに対して資源ロック待ちになっているため、クラスタシステム制御装置300は、プロセスp12が資源ロック待ちしていた共有資源Bに対する資源ロック要求のロックエントリを資源ロック完了状態にし、共有資源Bの資源ロック完了通知をホストH01の共有資源排他制御手段101に出す(図10(6)参照)。
【0118】
ホストH01の共有資源排他制御手段101は、共有資源Bの資源ロック完了をプロセスp12に通知する(図10(6)参照)。
【0119】
これにより、プロセスp12が動き出すので、そのうち共有資源Aのロックが解放されるため、その時点でプロセスp11も動き出すことができる。
【0120】
もしタイマ監視手段202がプロセスp21の状態を調査したときに、プログラムの暴走などにより強制停止していないケースもありえる。いま、資源ロック待ちになっているプロセスがホスト間でまたがっているならば、「クラスタシステム全体のストール」の状態にあるといえる。もし1台のホスト内で閉じていれば、「システムストール」に過ぎない。しかしながら、このケースでも、長時間ロックされたままの共有資源を他ホストのプロセスからロックしようとすると、プロセスは共有資源に対する資源ロック待ちになり、結果として「クラスタシステム全体のストール」に陥る。本実施の形態では、「クラスタシステム全体のストール」の状態(または、その状態に陥れる)の原因を探し出し、その原因を排除しようとするものである。
【0121】
このケースでは、タイマ監視手段202は、ホスト強制停止要求をホスト強制停止手段206に出す。
【0122】
ホスト強制停止手段206は、ホスト強制停止要求を受け取ると、ホストH02を強制停止させる。
【0123】
ホストH02の強制停止が完了したならば、ホストH02のホスト強制停止完了通知をホスト間通信手段204および104ならびに共有資源長時間ロックチェック手段103を経由して共有資源排他制御手段101に行う(図11(1)参照)。
【0124】
共有資源排他制御手段101は、ホストH02のホスト強制停止完了通知を受け取ると、ホストH02のプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置300に送信する(図11(2)参照)。
【0125】
クラスタシステム制御装置300は、ホストH02のプロセスがロックしていた共有資源に対する資源ロック要求をパージするため、そのホストIDのロックエントリをすべて消去する(図11(3)参照)。
【0126】
いま、共有資源BはホストH01のプロセスp12が資源ロック待ちになっているため、クラスタシステム制御装置300は、プロセスp12の共有資源Bのロックエントリを資源ロック完了状態にし、資源ロック完了通知をホストH01の共有資源排他制御手段101に返却する(図11(4)参照)。
【0127】
ホストH01の共有資源排他制御手段101は、共有資源Bの資源ロック完了をプロセスp12に通知する(図11(4)参照)。
【0128】
プロセスp12が動き出せば、そのうち共有資源Aのロックが解放されるため、その時点でプロセスp11も動き出すことができる。
【0129】
第1の実施の形態によれば、共有資源に対する資源ロック待ちをタイマ監視により検出し、自動的にホスト間通信とクラスタシステム制御装置300とを使ってクラスタシステム全体のストールの原因となっているプロセスを検出し、そのプロセスを強制停止できるため、たとえクラスタシステム内のあるプログラムが共有資源のロックを確保したまま暴走しても、クラスタシステム全体がストール状態に陥ることを防止できる。
【0130】
また、プロセスを強制停止できなかった場合には、当該ホストを強制停止するため、ホストの強制停止によりプログラムの暴走による影響をホスト1台のみに限定することができるので、たとえプロセスを強制停止できず、共有資源のロックを確保したままであっても、クラスタシステム全体がストール状態に陥ることを防止できる。
【0131】
[第2の実施の形態]
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
【0132】
図12を参照すると、本発明の第2の実施の形態に係るクラスタシステムにおけるストール防止方式は、プログラム制御により動作するn(3以上の整数)台のホスト(中央処理装置;プロセッサ;データ処理装置)H01〜H0nと、これらのホスト間で共有する共有資源の排他制御を行うクラスタシステム制御装置300とから構成されている。
【0133】
ホストH0k(k=1〜n)は、それぞれ、共有資源排他制御手段k01と、タイマ監視手段k02と、共有資源長時間ロックチェック手段k03と、ホスト間通信手段k04と、プロセス強制停止手段k05と、ホスト強制停止手段k06とを含む。
【0134】
これらの手段は、それぞれ次のように動作する。
【0135】
共有資源排他制御手段k01は、ホストH0kで動作しているプロセスから共有資源に対する資源ロック要求があったときに、資源ロック要求をクラスタシステム制御装置300に送信し、クラスタシステム制御装置300から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先へ進める。クラスタシステム制御装置300から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段k02に出し、この後に、クラスタシステム制御装置300から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先に進めると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段k02に出す。ホストH0kで動作しているプロセスから共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置300に送信し、クラスタシステム制御装置300から資源アンロック完了通知を受け取ると、資源アンロック完了を要求元プロセスに通知してプロセスを先へ進める。タイマ監視手段k02から強制停止したプロセスがロックしていた共有資源に対する資源アンロック要求を受け取ったときに、当該共有資源に対する資源アンロック要求をクラスタシステム制御装置300に送信する。ホスト間通信手段k04を経由して他ホストのホスト強制停止完了通知を受け取ると、当該ホストのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置300に送信する。
【0136】
タイマ監視手段k02は、共有資源排他制御手段k01から共有資源に対する資源ロック待ち監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、当該共有資源で長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段k03に出す。共有資源排他制御手段k01から共有資源に対する資源ロック待ち監視解除要求を受け取ると、セットしていたタイマをキャンセルする。プロセス強制停止手段k05からプロセス停止監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、プロセスの状態を参照し、もしプロセスが停止していれば、当該共有資源に対する資源アンロック要求を共有資源排他制御手段k01に出す。もしプロセスが停止していなければ、ホスト強制停止要求をホスト強制停止手段k06に出す。
【0137】
共有資源長時間ロックチェック手段k03は、タイマ監視手段k02から共有資源長時間ロックチェック要求を受け取ると、他ホストの共有資源長時間ロックチェック手段k03と通信し、さらにクラスタシステム制御装置300からロックエントリを参照して、共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査する。そして、共有資源の長時間資源ロック待ちの原因となっているプロセスのプロセス強制停止要求をプロセス強制停止手段k05に出す。
【0138】
ホスト間通信手段k04は、必要に応じて共有資源長時間ロックチェック手段k03から他ホストの共有資源長時間ロックチェック手段k03に共有資源長時間ロックチェック要求,ホスト強制停止完了通知,ロックプロセス情報通知等を送受信する。
【0139】
プロセス強制停止手段k05は、共有資源長時間ロックチェック手段k03からプロセス強制停止要求を受け取ったときに、プロセスを強制停止させる。プロセスが強制停止した後、プロセス停止監視要求をタイマ監視手段k02に出す。
【0140】
ホスト強制停止手段k06は、タイマ監視手段k02からホスト強制停止要求を受け取ったときに、ホストH0kを強制停止させる。ホストH0kが強制停止した後、ホスト強制停止完了通知をホスト間通信手段k04を経由して他の1台のホストに送信する。
【0141】
クラスタシステム制御装置300は、共有資源排他制御手段k01から共有資源に対する資源ロック要求があったときに、当該共有資源に対する資源ロック完了状態のロックエントリがあるかどうかに基づいて当該共有資源がロックされているかどうかを検索する。検索の結果、当該共有資源がロックされていなければ、資源ロック要求元のホストID,プロセスID,資源名および資源ロック完了状態のロックエントリを記憶し、資源ロック完了通知を共有資源排他制御手段k01に返却する。検索の結果、当該共有資源がロックされていれば、資源ロック要求元のホストID,プロセスID,資源名および資源ロック待ち状態のロックエントリを記憶し、資源ロック待ち通知を共有資源排他制御手段k01に返却する。共有資源排他制御手段k01から資源アンロック要求があったときに、クラスタシステム制御装置300は、資源ロック完了状態のホストID,プロセスIDおよび資源名のロックエントリを検索し、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段k01に返却する。消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、そのうちの1つのロックエントリを資源ロック完了状態に更新し、その資源ロック要求があったホストに資源アンロック完了通知を出す。共有資源排他制御手段k01から他ホストの資源パージ要求があったときに、当該ホストのプロセスがロックしていた共有資源を長時間資源ロック待ちしている資源ロック要求のロックエントリをパージする。
【0142】
次に、このように構成された第2の実施の形態に係るクラスタシステムにおけるストール防止方式の全体の動作について説明する。
【0143】
まず、ホストH0i(iは1≦i≦nの整数)のプロセスが要求した処理が資源ロック要求であれば(ステップS101ではい)、ホストH0iの共有資源排他制御手段i01は、資源ロック要求をクラスタシステム制御装置300に送信する(ステップS102)。
【0144】
ここで、クラスタシステム制御装置300から資源ロック完了通知を受け取れば(ステップS104ではい)、共有資源排他制御手段i01は、資源ロック完了を要求元プロセスに通知し(ステップS112)、要求元プロセスを先に進める。
【0145】
もしクラスタシステム制御装置300から資源ロック待ち通知を受け取れば(ステップS104でいいえ)、共有資源排他制御手段i01は、共有資源に対する資源ロック待ち監視要求をタイマ監視手段i02に出す(ステップS105)。
【0146】
タイマ監視手段i02は、共有資源に対する資源ロック待ち監視要求を受け取ると(ステップS201)、タイマをセットする(ステップS202)。
【0147】
次に、共有資源排他制御手段i01は、タイムアウトまでにクラスタシステム制御装置300から資源ロック完了通知を受け取れば(ステップS107ではい)、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段i02に出し(ステップS113)、資源ロック完了を要求元プロセスに通知し(ステップS114)、要求元プロセスを先に進める。
【0148】
タイマ監視手段i02は、共有資源排他制御手段i01から共有資源に対する資源ロック待ち監視解除要求を受け取ると(ステップS201)、セットされているタイマをキャンセルする(ステップS203)。
【0149】
共有資源に対する資源ロック待ち監視解除要求が届かずにタイムアウトした場合は、タイマ監視手段i02は、当該共有資源でプロセスが長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段i03に出す。
【0150】
続いて、共有資源長時間ロックチェック手段i03は、タイマ監視手段i02から共有資源長時間ロックチェック要求を受け取ると、当該共有資源のロックプロセス情報要求をクラスタシステム制御装置300に送信する(ステップS303)。
【0151】
クラスタシステム制御装置300は、当該共有資源のロックプロセス情報要求を受け取ると、当該共有資源をロックしているホストおよびプロセスのホストIDおよびプロセスIDを含むロックプロセス情報通知を要求元ホストに返却する。ここで、当該共有資源をロックしているプロセスが動作するホストを、ホストH0j(jは1≦j≦nの整数。ただし、j≠i)とする。
【0152】
共有資源長時間ロックチェック手段i03は、返却されてきたロックプロセス情報通知のホストIDおよびプロセスIDを参照して、共有資源長時間ロックチェック要求をホスト間通信手段i04およびj04を経由してロックを確保しているプロセスが動作するホストH0jに送信する(ステップS305)。
【0153】
共有資源長時間ロックチェック要求を受け取ると、ホストH0jの共有資源長時間ロックチェック手段j03は、当該共有資源をロックしているプロセスの状態を調査し、共有資源に対する資源ロック待ちになっているかどうかを判断する(ステップS301)。
【0154】
共有資源に対する資源ロック待ちになっていれば、共有資源長時間ロックチェック手段j03は、当該共有資源のロックプロセス情報要求をクラスタシステム制御装置300に送信する(ステップS303)。
【0155】
このような処理を繰り返すうちに、最初に長時間資源ロック待ちを検出したプロセスに戻る場合がある。この場合は、デッドロックのため、デッドロックに関係しているプロセスのいずれかを強制停止する必要がある。どのプロセスを止めるかは、たとえばホストIDの一番若いプロセスと決めておく。ここでは、ホストH0jのプロセスであるとする。
【0156】
このようにして決めたプロセスが動作しているホストH0jのプロセス強制停止手段j05に対して、ホストH0iの共有資源長時間ロックチェック手段i03は、プロセス強制停止要求をホスト間通信手段i04およびj04を経由して送信する(ステップS306)。
【0157】
当該共有資源に対する資源ロック待ちになっていなければ(ステップS301でいいえ)、共有資源長時間ロックチェック手段j03は、プロセス強制停止要求をプロセス強制停止手段j05に出す(ステップS306)。
【0158】
プロセス強制停止手段j05は、プロセス強制停止要求を受け取ると、指定されたプロセスを強制停止する。同時に、プロセス強制停止手段j05は、プロセス停止監視要求をタイマ監視手段j02に出す。
【0159】
タイマ監視手段j02は、プロセス停止監視要求を受け取ると、一定時間のタイマをセットする(ステップS204)。
【0160】
タイムアウトした後、タイマ監視手段j02は、プロセスの状態を調査する。
【0161】
もしプロセスが停止していれば、タイマ監視手段j02は、当該プロセスがロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段j01を経由してクラスタシステム制御装置300に送信する(ステップS109)。
【0162】
クラスタシステム制御装置300は、共有資源排他制御手段j01から資源アンロック要求を受け取ると、資源ロック完了状態のホストID,プロセスIDおよび資源名のロックエントリを検索する。そして、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段j01に返却する。もし消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、クラスタシステム制御装置300は、そのうちの1つのロックエントリを資源ロック完了状態に更新し、資源ロック要求があったホストの共有資源排他制御手段に資源アンロック完了通知を送信する。ここでは、資源ロック完了状態にされたロックエントリのプロセスが動作するホストが、ホストH0iであるとする。
【0163】
これにより、資源ロック待ちとなっていたプロセスが順次動作する。
【0164】
もしプロセスの状態を調査したときに、プロセスが停止していなければ(処理P5でいいえ)、タイマ監視手段j02は、ホスト強制停止要求をホスト強制停止手段j06に出す(処理P6)。
【0165】
ホスト強制停止手段j06は、ホスト強制停止要求を受け取ると、ホストH0jを強制停止する。
【0166】
ホストH0jの強制停止が完了した後、ホスト強制停止手段j06は、ホスト間通信手段j04を経由してホスト強制停止完了通知を他ホストに送信する。この送信先のホストは、動作中のホスト1台に限定する。その規則は、ホストIDの順番で1,2,3,…という方法や、ホストH0jの隣のホストH0(j+1),H0(j+2),…という順番で決定する方法もある。ここでは、送信先のホストが、ホストH0iであるとする。
【0167】
ホスト強制停止完了通知を受け取ったホストH0iの共有資源排他制御手段i01は、強制停止したホストH0jのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置300に送信する。
【0168】
クラスタシステム制御装置300は、資源パージ要求を受け取ると、強制停止したホストH0jのプロセスがロックしていた共有資源に対する資源パージ要求をパージするため、そのホストIDのロックエントリをすべて消去し、完了したならば資源パージ完了通知を要求元ホストH0iの共有資源排他制御手段i01に返却する。
【0169】
同時に、当該共有資源に対する資源ロック待ち状態のプロセスが動作するホストのロックエントリが存在する場合、クラスタシステム制御装置300は、1つのホストの1つのプロセスからの資源ロック要求に対するロックエントリを資源ロック完了状態にし、資源ロック完了通知を当該ホストの共有資源排他制御手段に返却する。ここでは、返却先のホストをホストH0m(mは1≦m≦nの整数。ただし、m≠j)であるものとする。
【0170】
ホストH0mの共有資源排他制御手段m01は、資源ロック完了通知を受け取ると(ステップS107ではい)、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段m02に出し(ステップS113)、資源ロック完了を要求元プロセスに通知し(ステップS114)、要求元プロセスが動作する。
【0171】
以降、クラスタシステム内の資源ロックを待っていた各ホストのプロセスも資源ロック待ちが資源ロック完了に順次変わり、資源ロック待ちが順次解除され、処理を再開する。
【0172】
次に、具体例について説明する。
【0173】
いま、ホストH01のプロセスp11が共有資源Aに対する資源ロック待ち状態、ホストH02のプロセスp21が共有資源Aの資源ロック完了状態で、かつ共有資源Bに対する資源ロック待ち状態、ホストH03のプロセスp31が共有資源Bの資源ロック完了状態で、かつ共有資源Cに対する資源ロック待ち状態、ホストH04のプロセスp41が共有資源Cの資源ロック完了状態とする。このような状態で、ホストH01のタイマ監視手段102が、共有資源Aに対する資源ロック待ちのタイムアウトを検出したとする。
【0174】
タイマ監視手段102は、タイムアウトを検出すると、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段103に出す。
【0175】
共有資源長時間ロックチェック手段103は、共有資源Aのロックプロセス情報要求をクラスタシステム制御装置300に送信する。
【0176】
クラスタシステム制御装置300は、いま共有資源AをロックしているのはホストH02のプロセスp21であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を共有資源排他制御手段101を経由して共有資源長時間ロックチェック手段103に返却する。
【0177】
共有資源長時間ロックチェック手段103は、共有資源AをロックしているのがホストH02のプロセスp21であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知をホスト間通信手段104および204を経由してホストH02の共有資源長時間ロックチェック手段203に送信する。
【0178】
次に、ホストH02の共有資源長時間ロックチェック手段203は、ホストH02のプロセスp21の状態を調査する。
【0179】
いまプロセスp21は共有資源Bに対する資源ロック待ちのため、共有資源長時間ロックチェック手段203は、共有資源Bのロックプロセス情報要求をクラスタシステム制御装置300に送信する。
【0180】
クラスタシステム制御装置300は、いま共有資源BをロックしているのはホストH03のプロセスp31であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を共有資源長時間ロックチェック手段203に返却する。
【0181】
共有資源長時間ロックチェック手段203は、共有資源AをロックしているのがホストH03のプロセスp31であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知をホスト間通信手段204およびホスト間通信手段304を経由して共有資源長時間ロックチェック手段303に送信する。
【0182】
いまプロセスp31は共有資源Cに対する資源ロック待ちのため、共有資源長時間ロックチェック手段303は、共有資源Cのロックプロセス情報要求をクラスタシステム制御装置300に送信する。
【0183】
クラスタシステム制御装置300は、いま共有資源CをロックしているのはホストH04のプロセスp41であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知を共有資源長時間ロックチェック手段303に返却する。
【0184】
共有資源長時間ロックチェック手段303は、共有資源CをロックしているのがホストH04のプロセスp41であるため、そのホストIDおよびプロセスIDを含むロックプロセス情報通知をホスト間通信手段304および404を経由して共有資源長時間ロックチェック手段403に送信する。
【0185】
いま、プロセスp41は資源ロック待ちではないため、何らかの原因で共有資源のロックを長時間確保したままとなっている。
【0186】
プロセスp41がクラスタシステム全体をストールさせている原因となっているため、プロセスp41を強制停止する必要がある。
【0187】
共有資源長時間ロックチェック手段403は、プロセスp41のプロセス強制停止要求をプロセス強制停止手段405に出す。
【0188】
プロセス強制停止手段405は、プロセスp41の強制停止を行う。
【0189】
同時に、プロセス強制停止手段405は、プロセス停止監視要求をタイマ監視手段402に出す。
【0190】
タイマ監視手段402は、一定時間後にプロセスp41の状態を調査する。
【0191】
プロセスp41が強制停止していれば、タイマ監視手段402は、プロセスp41がロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段401に出す。
【0192】
共有資源排他制御手段401は、プロセスp41がロックしていた共有資源に対する資源アンロック要求をクラスタシステム制御装置300に送信する。
【0193】
クラスタシステム制御装置300は、プロセスp41が共有資源Cの資源ロックを解放し、共有資源Cの資源アンロック完了通知を共有資源排他制御手段401に返却する。
【0194】
同時に、いま共有資源CはホストH03のプロセスp31が資源ロック待ちになっているため、クラスタシステム制御装置300は、プロセスp31の共有資源Cのロックエントリを資源ロック完了状態にし、資源ロック完了通知をホストH03の共有資源排他制御手段301に返却する。
【0195】
ホストH03の共有資源排他制御手段301は、共有資源Cの資源ロック完了をプロセスp31に通知する(ステップS112)。
【0196】
プロセスp31が動き出せば、そのうち共有資源Bのロックが解放されるため、その時点でプロセスp21も動き出すことができる。
【0197】
さらに、プロセスp21が動き出せば、そのうち共有資源Aのロックが解放されるため、その時点でプロセスp11も動き出すことができる。
【0198】
タイマ監視手段402がプロセスp41の状態を調査したときに、プログラムの暴走などにより強制停止していないケースもあり得る。
【0199】
このケースでは、タイマ監視手段402は、ホスト強制停止要求をホスト強制停止手段406に出す。
【0200】
ホスト強制停止手段406は、ホスト強制停止要求を受け取ると、ホストH04を強制停止させる。
【0201】
ホストH04の制停止が完了したならば、ホスト強制停止手段406は、ホスト間通信手段404および104を経由してホストH04のホスト強制停止完了通知をホストH01の共有資源排他制御手段101に送信する。
【0202】
共有資源排他制御手段101は、ホストH04の強制停止完了通知を受け取ると、ホストH04のプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置300に送信する。
【0203】
クラスタシステム制御装置300は、ホストH04のプロセスがロックしていた共有資源に対する資源ロック要求をパージするため、そのホストIDのロックエントリをすべて消去する。
【0204】
いま、共有資源CはホストH03のプロセスp31が資源ロック待ちになっているため、クラスタシステム制御装置300は、共有資源Cに対するプロセスp31のロックエントリを資源ロック完了状態にし、資源ロック完了通知をホストH03の共有資源排他制御手段301に返却する。
【0205】
ホストH03の共有資源排他制御手段301は、共有資源Cの資源ロック完了をプロセスp31に通知する。
【0206】
プロセスp31が動き出せば、そのうち共有資源Bのロックが解放されるため、その時点でプロセスp21も動き出すことができる。
【0207】
プロセスp21が動き出せば、そのうち共有資源Aのロックが解放されるため、その時点でプロセスp11も動き出すことができる。
【0208】
[第3の実施の形態]
図13は、本発明の第3の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。本実施の形態に係るクラスタシステムにおけるストール防止方式は、図1に示した第1の実施の形態に係るクラスタシステムにおけるストール防止方式のホストH01およびH02に対してストール防止プログラム400を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付してそれらの詳しい説明を省略する。
【0209】
ストール防止プログラム400は、ホストH01およびH02に読み込まれ、ホストH01およびH02の動作を、共有資源排他制御手段101および201,タイマ監視手段102および202,共有資源長時間ロックチェック手段103および203,ホスト間通信手段104および204,プロセス強制停止手段105および205,ならびにホスト強制停止手段106および206として制御する。ストール防止プログラム400の制御によるホストH01およびH02の動作は、第1の実施の形態におけるホストH01およびH02の動作と全く同様になるので、その詳しい説明を割愛する。
【0210】
[第4の実施の形態]
図14は、本発明の第4の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。本実施の形態に係るクラスタシステムにおけるストール防止方式は、図12に示した第2の実施の形態に係るクラスタシステムにおけるストール防止方式のホストH01,…,H0nに対してストール防止プログラム400を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付してそれらの詳しい説明を省略する。
【0211】
ストール防止プログラム400は、ホストH01,…,H0nに読み込まれ、ホストH01,…,H0nの動作を、共有資源排他制御手段101,…,n01,タイマ監視手段102,…,n02,共有資源長時間ロックチェック手段103,…,n03,ホスト間通信手段104,…,n04,プロセス強制停止手段105,…,n05,ならびにホスト強制停止手段106,…,n06として制御する。ストール防止プログラム400の制御によるホストH01,…,H0nの動作は、第2の実施の形態におけるH01,…,H0nの動作と全く同様になるので、その詳しい説明を割愛する。
【0212】
【発明の効果】
第1の効果は、たとえクラスタシステム内のあるプログラムが共有資源のロックを確保したまま暴走しても、クラスタシステム全体のストールに陥ることを防止できることにある。その理由は、資源ロック待ちをタイマ監視により検出し、自動的にホスト間通信とクラスタシステム制御装置とを使ってストールの原因となっているプロセスを検出し、そのプロセスを強制停止できるためである。
【0213】
第2の効果は、たとえプロセスを強制停止できず、共有資源のロックを確保したままであっても、クラスタシステム全体のストールに陥ることを防止できることにある。その理由は、プロセスを強制停止できなかった場合は、当該ホストを強制停止するためである。ホストの強制停止により、プログラムの暴走による影響をホスト1台のみに限定することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【図2】図1中のクラスタシステム制御装置が記憶するロックエントリの内容を示す図である。
【図3】第1の実施の形態に係るクラスタシステムにおけるストール防止方式における処理の全体の流れを示すフローチャートである。
【図4】図1中の共有資源排他制御手段の動作を示すフローチャートである。
【図5】図1中のタイマ監視手段の動作を示すフローチャートである。
【図6】図1中の共有資源長時間ロックチェック手段の動作を示すフローチャートである。
【図7】第1の実施の形態に係るクラスタシステムにおけるストール防止方式の第1の状態遷移図である。
【図8】第1の実施の形態に係るクラスタシステムにおけるストール防止方式の第2の状態遷移図である。
【図9】第1の実施の形態に係るクラスタシステムにおけるストール防止方式の第3の状態遷移図である。
【図10】第1の実施の形態に係るクラスタシステムにおけるストール防止方式の第4の状態遷移図である。
【図11】第1の実施の形態に係るクラスタシステムにおけるストール防止方式の第5の状態遷移図である。
【図12】本発明の第2の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【図13】本発明の第3の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【図14】本発明の第4の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【符号の説明】
H01,H02,H0n ホスト
101,201,n01 共有資源排他制御手段
102,202,n02 タイマ監視手段
103,203,n03 共有資源長時間ロックチェック手段
104,204,n04 ホスト間通信手段
105,205,n05 プロセス強制停止手段
106,206,n06 ホスト強制停止手段
300 クラスタシステム制御装置
400 ストール防止プログラム
Claims (11)
- 複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、
各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とするクラスタシステムにおけるストール防止方式。 - 複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、
各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段と、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とするクラスタシステムにおけるストール防止方式。 - 前記共有資源排他制御手段が、共有資源に対する資源ロック要求があったときに当該共有資源に対する資源ロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源ロック完了通知を受け取ると要求元プロセスに通知し、クラスタシステム制御装置から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知があったときに要求元プロセスに通知すると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知がなしにタイムアウトしたときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源アンロック完了通知があったときに要求元プロセスに通知することを特徴とする請求項1または請求項2記載のクラスタシステムにおけるストール防止方式。
- 前記タイマ監視手段が、共有資源排他制御手段から共有資源に対する資源ロック待ち監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならば共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源排他制御手段から共有資源に対する資源ロック待ち監視解除要求があったときにセットしていたタイマをキャンセルし、プロセス強制停止手段からプロセス停止監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならばプロセスの状態を参照し、プロセスが停止していれば当該プロセスがロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段に出すことを特徴とする請求項1または請求項2記載のクラスタシステムにおけるストール防止方式。
- 前記共有資源長時間ロックチェック手段が、タイマ監視手段から共有資源長時間ロックチェック要求があったときに他ホストの共有資源長時間ロックチェック手段と通信し、クラスタシステム制御装置からロックエントリを参照して共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査し、共有資源の長時間資源ロック待ちの原因となっているプロセスにプロセス強制停止要求を出すことを特徴とする請求項1または請求項2記載のクラスタシステムにおけるストール防止方式。
- 複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、
共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、
タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、
共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、
プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程とを含み、
複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とするクラスタシステムにおけるストール防止方法。 - 複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、
共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、
タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、
共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、
プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程と、
ホスト強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行う工程とを含み、
複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とするクラスタシステムにおけるストール防止方法。 - 共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、
共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、
プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程と
を含むことを特徴とするクラスタシステムにおけるストール防止方法。 - 共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、
共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、
プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程と、
プロセス強制停止手段が、プロセス停止監視要求をタイマ監視手段に出す工程と、
タイマ監視手段が、タイムアウト後にプロセスの状態を判断し、プロセスが終了していなければ当該プロセスが動作しているホストのホスト強制停止要求をホスト強制停止手段に出す工程と、
ホスト強制停止手段が、ホスト強制停止要求に基づいてホストの強制停止を行う工程と
を含むことを特徴とするクラスタシステムにおけるストール防止方法。 - コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段,共有資源に対する資源ロック待ちを監視するタイマ監視手段,共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段,ならびに共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段として動作させることを特徴とするプログラム。
- コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段,共有資源に対する資源ロック待ちを監視するタイマ監視手段,共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段,共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段,ならびに共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段として動作させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003033217A JP2004246439A (ja) | 2003-02-12 | 2003-02-12 | クラスタシステムにおけるストール防止方式,方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003033217A JP2004246439A (ja) | 2003-02-12 | 2003-02-12 | クラスタシステムにおけるストール防止方式,方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004246439A true JP2004246439A (ja) | 2004-09-02 |
Family
ID=33019270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003033217A Pending JP2004246439A (ja) | 2003-02-12 | 2003-02-12 | クラスタシステムにおけるストール防止方式,方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004246439A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007157125A (ja) * | 2005-12-08 | 2007-06-21 | Internatl Business Mach Corp <Ibm> | サーバ内のブロック化された処理を安全に中断するための方法、システム、プログラム |
JP2008282165A (ja) * | 2007-05-09 | 2008-11-20 | Toshiba Mitsubishi-Electric Industrial System Corp | バッチ制御装置及びバッチ制御方法 |
CN100440191C (zh) * | 2004-11-12 | 2008-12-03 | 国际商业机器公司 | 处理复合体访问共享设备的方法和系统 |
CN100461149C (zh) * | 2004-11-18 | 2009-02-11 | 国际商业机器公司 | 支持系统管理设备和管理支持系统的方法 |
EP2075983A2 (en) | 2007-12-27 | 2009-07-01 | Hitachi, Ltd. | Storage subsystem |
US7788517B2 (en) | 2005-03-29 | 2010-08-31 | Nec Corporation | Cluster system and method of controlling power-supply to blade servers included in cluster system |
JP2010211616A (ja) * | 2009-03-11 | 2010-09-24 | Ricoh Co Ltd | データベース管理システム、ロック障害監視方法及びロック障害監視プログラム |
US8776070B2 (en) | 2010-05-25 | 2014-07-08 | International Business Machines Corporation | Method and apparatus having resistance to forced termination attack on monitoring program for monitoring a predetermined resource |
US9003415B2 (en) | 2010-05-25 | 2015-04-07 | International Business Machines Corporation | Method and apparatus having resistance to forced termination attack on monitoring program for monitoring a predetermined resource |
US9323585B2 (en) | 2011-05-12 | 2016-04-26 | Nec Corporation | Deadlock preventing apparatus, deadlock preventing method, and program |
WO2016098142A1 (ja) * | 2014-12-18 | 2016-06-23 | 三菱電機株式会社 | 産業コントローラおよび産業コントローラシステム |
-
2003
- 2003-02-12 JP JP2003033217A patent/JP2004246439A/ja active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100440191C (zh) * | 2004-11-12 | 2008-12-03 | 国际商业机器公司 | 处理复合体访问共享设备的方法和系统 |
CN100461149C (zh) * | 2004-11-18 | 2009-02-11 | 国际商业机器公司 | 支持系统管理设备和管理支持系统的方法 |
US7788517B2 (en) | 2005-03-29 | 2010-08-31 | Nec Corporation | Cluster system and method of controlling power-supply to blade servers included in cluster system |
JP2007157125A (ja) * | 2005-12-08 | 2007-06-21 | Internatl Business Mach Corp <Ibm> | サーバ内のブロック化された処理を安全に中断するための方法、システム、プログラム |
JP2008282165A (ja) * | 2007-05-09 | 2008-11-20 | Toshiba Mitsubishi-Electric Industrial System Corp | バッチ制御装置及びバッチ制御方法 |
EP2075983A2 (en) | 2007-12-27 | 2009-07-01 | Hitachi, Ltd. | Storage subsystem |
JP2009157757A (ja) * | 2007-12-27 | 2009-07-16 | Hitachi Ltd | ストレージサブシステム |
US7817626B2 (en) | 2007-12-27 | 2010-10-19 | Hitachi, Ltd. | Storage subsystem |
JP4639223B2 (ja) * | 2007-12-27 | 2011-02-23 | 株式会社日立製作所 | ストレージサブシステム |
US8340087B2 (en) | 2007-12-27 | 2012-12-25 | Hitachi, Ltd. | Storage subsystem |
JP2010211616A (ja) * | 2009-03-11 | 2010-09-24 | Ricoh Co Ltd | データベース管理システム、ロック障害監視方法及びロック障害監視プログラム |
US8776070B2 (en) | 2010-05-25 | 2014-07-08 | International Business Machines Corporation | Method and apparatus having resistance to forced termination attack on monitoring program for monitoring a predetermined resource |
US9003415B2 (en) | 2010-05-25 | 2015-04-07 | International Business Machines Corporation | Method and apparatus having resistance to forced termination attack on monitoring program for monitoring a predetermined resource |
US9323585B2 (en) | 2011-05-12 | 2016-04-26 | Nec Corporation | Deadlock preventing apparatus, deadlock preventing method, and program |
WO2016098142A1 (ja) * | 2014-12-18 | 2016-06-23 | 三菱電機株式会社 | 産業コントローラおよび産業コントローラシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8370318B2 (en) | Time limited lock ownership | |
CA2629694C (en) | Centralized polling service | |
US6510478B1 (en) | Method and apparatus for coordination of a shared object in a distributed system | |
CN112534776B (zh) | 用于在网络环境中检测网络功能失败和重启的方法及装置 | |
US6314114B1 (en) | Distributed resource management | |
US20050149934A1 (en) | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations | |
US7133891B1 (en) | Method, system and program products for automatically connecting a client to a server of a replicated group of servers | |
US20120137006A1 (en) | Computing system and computing system management method | |
JP2004246439A (ja) | クラスタシステムにおけるストール防止方式,方法およびプログラム | |
EP0920662A1 (en) | Interprocess communication in a distributed computer environment | |
JP2003030165A (ja) | 複数の連結したデータ処理ノードからなるネットワークでのノード状態を決定するための方法及び/又はノード活性を決定する方法 | |
US20080148272A1 (en) | Job allocation program, method and apparatus | |
US7913050B2 (en) | Fencing using a hierarchical relationship | |
CA2606457C (en) | Techniques for handling inconsistencies in enqueue lock information | |
JPH11345131A (ja) | タスク終了を通知する方法および装置 | |
JP4379369B2 (ja) | ファイル管理システム、監視サーバ、監視方法、及び、プログラム | |
US9729436B2 (en) | Data processing system with routing tables | |
US8863149B2 (en) | Message processing apparatus and message processing method | |
JP2009515474A (ja) | 独立したメッセージストアおよびメッセージトランスポートエージェント | |
CN107423454B (zh) | 一种分布式文件系统中文件锁的处理方法、装置及设备 | |
JP2000047890A (ja) | 分散オブジェクト管理システムとそのオブジェクト選択方法およびその処理プログラムを記録した記録媒体 | |
US20050289550A1 (en) | Sharing lock mechanism between protocol layers | |
JPH07152699A (ja) | 情報処理方法及び装置及びシステム | |
JPH08190528A (ja) | システム管理装置 | |
JPH10228450A (ja) | バッチプロセス管理方法およびクライアント/サーバシステムおよびクライアント/サーバコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050124 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050310 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060724 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060808 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060927 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20070119 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070123 |