(57)【要約】【課題】クラスタシステム内で動作するプログラムの暴走や、クラスタシステムを構成するホスト間でのデッドロックによるクラスタシステム全体のストールを防止する。【解決手段】タイマ監視手段１０２，２０２は共有資源に対する資源ロック待ちを監視し、共有資源長時間ロックチェック手段１０３，２０３は共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する。プロセス強制停止手段１０５，２０５は共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止してプロセスが確保していた共有資源のロックを解放し、ホスト強制停止手段１０６，２０６は共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して、ホストがロックしていた共有資源に対する資源ロック要求をパージする。【選択図】  図１
2004246439.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、
各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とするクラスタシステムにおけるストール防止方式。
【請求項２】
複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、
各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段と、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とするクラスタシステムにおけるストール防止方式。
【請求項３】
前記共有資源排他制御手段が、共有資源に対する資源ロック要求があったときに当該共有資源に対する資源ロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源ロック完了通知を受け取ると要求元プロセスに通知し、クラスタシステム制御装置から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知があったときに要求元プロセスに通知すると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知がなしにタイムアウトしたときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源アンロック完了通知があったときに要求元プロセスに通知することを特徴とする請求項１または請求項２記載のクラスタシステムにおけるストール防止方式。
【請求項４】
前記タイマ監視手段が、共有資源排他制御手段から共有資源に対する資源ロック待ち監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならば共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源排他制御手段から共有資源に対する資源ロック待ち監視解除要求があったときにセットしていたタイマをキャンセルし、プロセス強制停止手段からプロセス停止監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならばプロセスの状態を参照し、プロセスが停止していれば当該プロセスがロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段に出すことを特徴とする請求項１または請求項２記載のクラスタシステムにおけるストール防止方式。
【請求項５】
前記共有資源長時間ロックチェック手段が、タイマ監視手段から共有資源長時間ロックチェック要求があったときに他ホストの共有資源長時間ロックチェック手段と通信し、クラスタシステム制御装置からロックエントリを参照して共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査し、共有資源の長時間資源ロック待ちの原因となっているプロセスにプロセス強制停止要求を出すことを特徴とする請求項１または請求項２記載のクラスタシステムにおけるストール防止方式。
【請求項６】
複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、
共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、
タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、
共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、
プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程とを含み、
複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とするクラスタシステムにおけるストール防止方法。
【請求項７】
複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、
共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、
タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、
共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、
プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程と、
ホスト強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行う工程とを含み、
複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とするクラスタシステムにおけるストール防止方法。
【請求項８】
共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、
共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、
プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程と
を含むことを特徴とするクラスタシステムにおけるストール防止方法。
【請求項９】
共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、
共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、
プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程と、
プロセス強制停止手段が、プロセス停止監視要求をタイマ監視手段に出す工程と、
タイマ監視手段が、タイムアウト後にプロセスの状態を判断し、プロセスが終了していなければ当該プロセスが動作しているホストのホスト強制停止要求をホスト強制停止手段に出す工程と、
ホスト強制停止手段が、ホスト強制停止要求に基づいてホストの強制停止を行う工程と
を含むことを特徴とするクラスタシステムにおけるストール防止方法。
【請求項１０】
コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段，共有資源に対する資源ロック待ちを監視するタイマ監視手段，共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段，ならびに共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段として動作させることを特徴とするプログラム。
【請求項１１】
コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段，共有資源に対する資源ロック待ちを監視するタイマ監視手段，共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段，共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段，ならびに共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段として動作させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はクラスタシステムにおけるストール防止方式，方法およびプログラムに関し、特に複数のホストが資源を共有するクラスタシステムにおけるストール防止方式，方法およびプログラムに関する。
【０００２】
【従来の技術】
プロセスが何らかの原因（資源の排他制御の待ちなど）により、可動状態にならずに待ちあるいは無限にループしている状態をプロセスのストール状態と呼ぶ。この結果、システムを使う人が実行するジョブが（外見え）待ちになっている状態を「ジョブストール」と呼ぶ。オンラインが待ちになっている場合は「オンラインストール」と呼ぶ。１台のホストであらゆる処理が待ちの状態に見えると「システムストール」と呼ぶ。さらに範囲が広がって、クラスタシステムにおいて、あるプロセスのストールに起因して、ストールが発生したホストだけでなく、クラスタシステムを構成する他ホストでも、同じようなストール状態に陥ったときに「クラスタシステム全体のストール」と呼ぶ。「プログラムが共有資源のロックを確保したまま暴走すること」や「デッドロック」は、「クラスタシステム全体のストール」につながる元になる。
【０００３】
また、「デッドロック」の一番簡単な例は、プロセスｐ１が共有資源Ａのロックを確保したまま共有資源Ｂをロックしようとすると同時に、プロセスｐ２が共有資源Ｂのロックを確保したまま共有資源Ａをロックしようとすると、プロセスｐ１およびｐ２とも確保しようとしたロックで待ちになってしまう。これがホスト間にまたがると、クラスタシステム全体のストールになる。また、デッドロックが一ホスト内に収まっていたとしても、クラスタシステム内の他ホストで共有資源ＡおよびＢをロックしようとすると待ちになり、このホストにストールの影響が波及し、クラスタシステム全体のストールとなる。
【０００４】
「プログラムが共有資源のロックを確保したまま暴走すること」の場合は、プロセスｐ１が共有資源Ａのロックを確保したまま暴走するということである。これだけでは、プログラムのストール状態である。さらに、他ホストで共有資源Ａをロックしようとするプロセスが現れると、そのホストでもプロセスのストール状態が発生するので、クラスタシステム全体のストールになる。
【０００５】
従来のクラスタシステムのストール防止システムは、運用系と待機系とにそれぞれクラスタ管理部およびクラスタ監視部をもつ構成となっていた（例えば、特許文献１参照）。
【０００６】
このような構成を有する従来のクラスタシステムのストール防止システムでは、運用系のクラスタ監視部が定期的にクラスタ管理部を監視し、運用系のクラスタ管理部の異常を検出したときに、大規模な異常となる（クラスタシステム停止となる）前に運用系を停止させ、稼動系のクラスタ管理部に切り替えることによりフェールセーフを実現する。
【０００７】
【特許文献１】
特開２００２−１１６９２０号公報（第３−４頁、図１）
【０００８】
【発明が解決しようとする課題】
しかし、上述した従来技術には、次のような問題点があった。
【０００９】
第１の問題点は、ある１台の運用系のクラスタ管理部で異常を見つけると、その１台は必ず停止するということである。その理由は、クラスタ監視部がクラスタ管理部の異常を見つけると、フェールセーフのために必ずその１台を停止してしまうためである。
【００１０】
本発明の目的は、クラスタシステムにおいて、クラスタシステム内で動作するプログラムの暴走やクラスタシステムを構成するホスト間でのデッドロックによるクラスタシステム全体のストールを防止できるクラスタシステムにおけるストール防止方式，方法およびプログラムを提供することにある。
【００１１】
【課題を解決するための手段】
本発明のクラスタシステムにおけるストール防止方式は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とする。
【００１２】
また、本発明のクラスタシステムにおけるストール防止方式は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおいて、各ホストが、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段と、共有資源に対する資源ロック待ちを監視するタイマ監視手段と、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段と、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段と、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段とを有し、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とする。
【００１３】
さらに、本発明のクラスタシステムにおけるストール防止方式は、前記共有資源排他制御手段が、共有資源に対する資源ロック要求があったときに当該共有資源に対する資源ロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源ロック完了通知を受け取ると要求元プロセスに通知し、クラスタシステム制御装置から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知があったときに要求元プロセスに通知すると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段に出し、クラスタシステム制御装置から資源ロック完了通知がなしにタイムアウトしたときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置に送信し、クラスタシステム制御装置から資源アンロック完了通知があったときに要求元プロセスに通知することを特徴とする。
【００１４】
さらにまた、本発明のクラスタシステムにおけるストール防止方式は、前記タイマ監視手段が、共有資源排他制御手段から共有資源に対する資源ロック待ち監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならば共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出し、共有資源排他制御手段から共有資源に対する資源ロック待ち監視解除要求があったときにセットしていたタイマをキャンセルし、プロセス強制停止手段からプロセス停止監視要求があったときに一定時間のタイマをセットし、タイマによるイベントが通知されたならばプロセスの状態を参照し、プロセスが停止していれば当該プロセスがロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段に出すことを特徴とする。
【００１５】
また、本発明のクラスタシステムにおけるストール防止方式は、前記共有資源長時間ロックチェック手段が、タイマ監視手段から共有資源長時間ロックチェック要求があったときに他ホストの共有資源長時間ロックチェック手段と通信し、クラスタシステム制御装置からロックエントリを参照して共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査し、共有資源の長時間資源ロック待ちの原因となっているプロセスにプロセス強制停止要求を出すことを特徴とする。
【００１６】
一方、本発明のクラスタシステムにおけるストール防止方法は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程とを含み、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止することを特徴とする。
【００１７】
また、本発明のクラスタシステムにおけるストール防止方法は、複数のホストと、各ホストが接続されたクラスタシステム制御装置とで構成されているクラスタシステムにおけるストール防止方法において、共有資源排他制御手段が、クラスタシステム制御装置と通信して共有資源の排他制御を行う工程と、タイマ監視手段が、共有資源に対する資源ロック待ちを監視する工程と、共有資源長時間ロックチェック手段が、共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する工程と、プロセス強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放する工程と、ホスト強制停止手段が、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行う工程とを含み、複数のホストで連携してクラスタシステム全体のストールの原因となっているプロセスを特定して当該プロセスを強制停止し、当該プロセスの強制停止ができなかった場合は当該プロセスが動作しているホストを強制停止することを特徴とする。
【００１８】
さらに、本発明のクラスタシステムにおけるストール防止方法は、共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程とを含むことを特徴とする。
【００１９】
さらにまた、本発明のクラスタシステムにおけるストール防止方法は、共有資源排他制御手段が、タイマ監視手段からタイムアウト通知を受け取ったときに共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段に出す工程と、共有資源長時間ロックチェック手段が、共有資源長時間ロックチェック要求があったときに、チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて共有資源長時間ロックチェック要求を出し、チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、当該プロセスのプロセス強制停止要求をプロセス強制停止手段に出す工程と、プロセス強制停止手段が、共有資源長時間ロックチェック手段によりプロセス強制停止要求されたプロセスの強制停止を試みる工程と、プロセス強制停止手段が、プロセス停止監視要求をタイマ監視手段に出す工程と、タイマ監視手段が、タイムアウト後にプロセスの状態を判断し、プロセスが終了していなければ当該プロセスが動作しているホストのホスト強制停止要求をホスト強制停止手段に出す工程と、ホスト強制停止手段が、ホスト強制停止要求に基づいてホストの強制停止を行う工程とを含むことを特徴とする。
【００２０】
他方、本発明のプログラムは、コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段，共有資源に対する資源ロック待ちを監視するタイマ監視手段，共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段，ならびに共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段として動作させることを特徴とする。
【００２１】
また、本発明のプログラムは、コンピュータを、クラスタシステム制御装置と通信して共有資源の排他制御を行う共有資源排他制御手段，共有資源に対する資源ロック待ちを監視するタイマ監視手段，共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査する共有資源長時間ロックチェック手段，共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止して当該プロセスが確保していた共有資源のロックを解放するプロセス強制停止手段，ならびに共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して当該ホストのプロセスがロックしていた共有資源のパージ要求を行うホスト強制停止手段として動作させることを特徴とする。
【００２２】
図１のような、ホストＨ０１およびＨ０２と、クラスタシステム制御装置３００とで構成されているクラスタシステムにおいて、タイマ監視手段１０２および２０２により共有資源に対する資源ロック待ちを監視し、共有資源長時間ロックチェック手段１０３および２０３により共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査し、プロセス強制停止手段１０５および２０５により共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止し、強制停止したプロセスが確保していた共有資源のロックを解放するか、またはホスト強制停止手段１０６および２０６により共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止し、強制停止したホストがロックしていた共有資源のパージを行う。このようにして、クラスタシステム全体のストールを防止することを可能にする。
【００２３】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２４】
［第１の実施の形態］
図１を参照すると、本発明の第１の実施の形態に係るクラスタシステムにおけるストール防止方式は、プログラム制御により動作するホスト（中央処理装置；プロセッサ；データ処理装置）Ｈ０１およびＨ０２と、これらのホスト間で共有される共有資源の排他制御を行うクラスタシステム制御装置３００とから構成されている。
【００２５】
ホストＨ０ｋ（ｋ＝１，２）は、それぞれ同様の構成を有し、共有資源排他制御手段ｋ０１と、タイマ監視手段ｋ０２と、共有資源長時間ロックチェック手段ｋ０３と、ホスト間通信手段ｋ０４と、プロセス強制停止手段ｋ０５と、ホスト強制停止手段ｋ０６とを含んで構成されている。
【００２６】
これらの手段は、それぞれ次のように動作する。
【００２７】
共有資源排他制御手段ｋ０１は、ホストＨ０ｋで動作しているプロセスから共有資源に対する資源ロック要求があったときに、資源ロック要求をクラスタシステム制御装置３００に送信し、クラスタシステム制御装置３００から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先へ進める。クラスタシステム制御装置３００から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段ｋ０２に出し、この後に、クラスタシステム制御装置３００から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先に進めると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段ｋ０２に出す。ホストＨ０ｋで動作しているプロセスから共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置３００に送信し、クラスタシステム制御装置３００から資源アンロック完了通知を受け取ると、資源アンロック完了を要求元プロセスに通知してプロセスを先へ進める。タイマ監視手段ｋ０２から強制停止したプロセスがロックしていた共有資源に対する資源アンロック要求を受け取ったときに、当該共有資源に対する資源アンロック要求をクラスタシステム制御装置３００に送信する。ホスト間通信手段ｋ０４を経由して他ホストのホスト強制停止完了通知を受け取ると、当該ホストのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置３００に送信する。
【００２８】
タイマ監視手段ｋ０２は、共有資源排他制御手段ｋ０１から共有資源に対する資源ロック待ち監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、当該共有資源で長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段ｋ０３に出す。共有資源排他制御手段ｋ０１から共有資源に対する資源ロック待ち監視解除要求を受け取ると、セットしていたタイマをキャンセルする。プロセス強制停止手段ｋ０５からプロセス停止監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、プロセスの状態を参照し、もしプロセスが停止していれば、当該共有資源に対する資源アンロック要求を共有資源排他制御手段ｋ０１に出す。もしプロセスが停止していなければ、ホスト強制停止要求をホスト強制停止手段ｋ０６に出す。
【００２９】
共有資源長時間ロックチェック手段ｋ０３は、タイマ監視手段ｋ０２から共有資源長時間ロックチェック要求を受け取ると、他ホストの共有資源長時間ロックチェック手段ｋ０３と通信し、さらにクラスタシステム制御装置３００からロックエントリを参照して、共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査する。そして、共有資源の長時間資源ロック待ちの原因となっているプロセスのプロセス強制停止要求をプロセス強制停止手段ｋ０５に出す。
【００３０】
ホスト間通信手段ｋ０４は、必要に応じて共有資源長時間ロックチェック手段ｋ０３から他ホストの共有資源長時間ロックチェック手段ｋ０３に共有資源長時間ロックチェック要求，ホスト強制停止完了通知，ロックプロセス情報通知等を送受信する。
【００３１】
プロセス強制停止手段ｋ０５は、共有資源長時間ロックチェック手段ｋ０３からプロセス強制停止要求を受け取ったときに、プロセスを強制停止させる。プロセスが強制停止した後、プロセス停止監視要求をタイマ監視手段ｋ０２に出す。
【００３２】
ホスト強制停止手段ｋ０６は、タイマ監視手段ｋ０２からホスト強制停止要求を受け取ったときに、ホストＨ０ｋを強制停止させる。ホストＨ０ｋが強制停止した後、ホスト強制停止完了通知をホスト間通信手段ｋ０４を経由して他ホストに送信する。
【００３３】
図２を参照すると、クラスタシステム制御装置３００は、共有資源に対する資源ロック要求毎に、ホストＩＤ，プロセスＩＤ，資源名および資源ロック状態（資源ロック完了状態または資源ロック待ち状態）からなるロックエントリを記憶する。
【００３４】
クラスタシステム制御装置３００は、共有資源排他制御手段ｋ０１から共有資源に対する資源ロック要求があったときに、当該共有資源に対する資源ロック完了状態のロックエントリがあるかどうかに基づいて当該共有資源がロックされているかどうかを検索する。検索の結果、当該共有資源がロックされていなければ、資源ロック要求元のホストＩＤ，プロセスＩＤ，資源名および資源ロック完了状態のロックエントリを記憶し、資源ロック完了通知を共有資源排他制御手段ｋ０１に返却する。検索の結果、当該共有資源がロックされていれば、資源ロック要求元のホストＩＤ，プロセスＩＤ，資源名および資源ロック待ち状態のロックエントリを記憶し、資源ロック待ち通知を共有資源排他制御手段ｋ０１に返却する。共有資源排他制御手段ｋ０１から資源アンロック要求があったときに、クラスタシステム制御装置３００は、資源ロック完了状態のホストＩＤ，プロセスＩＤおよび資源名のロックエントリを検索し、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段ｋ０１に返却する。消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、そのうちの１つのロックエントリを資源ロック完了状態に更新し、その資源ロック要求があったホストに資源アンロック完了通知を出す。共有資源排他制御手段ｋ０１から他ホストの資源パージ要求があったときに、当該ホストのプロセスがロックしていた共有資源を長時間資源ロック待ちしている資源ロック要求のロックエントリをパージする。
【００３５】
まず、第１の実施の形態に係るクラスタシステムにおけるストール防止方式における処理の全体の流れについて、図３を参照しながら説明する。
【００３６】
あるプロセスから共有資源に対する資源ロック要求または資源アンロック要求がくると、共有資源排他制御手段ｋ０１の処理が行われる（処理Ｐ１）。共有資源に対する資源アンロック要求のときは処理が完了するため、これより先の処理が動作することはない。共有資源に対する資源ロック要求のときは、共有資源排他制御手段ｋ０１は、クラスタシステム制御装置３００から資源ロック完了通知を受け取れば、これより先の処理が動作することはない。長時間資源ロック待ちとなり、タイマ監視手段ｋ０２からタイムアウト通知を受け取ったときに、共有資源排他制御手段ｋ０１は、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段ｋ０３に出すので、この先へ処理が進む。
【００３７】
共有資源長時間ロックチェック要求を受け取ると、共有資源長時間ロックチェック手段ｋ０３の処理が動作する（処理Ｐ２）。チェック対象のプロセスが資源ロック待ちで、かつ長時間資源ロック待ちとして検出されていなければ、この資源ロック待ちとなっている共有資源をロックしているホストのプロセスについて、共有資源長時間ロックチェック要求を出す（ＥＮＤ（１）の方向へ進む）。チェック対象のプロセスが資源ロック待ちになっていないか、または資源ロック待ちにはなっているがすでに長時間資源ロック待ちとして検出済みならば、そのプロセスを強制停止させる必要があるため、共有資源長時間ロックチェック手段ｋ０３は、プロセス強制停止要求をプロセス強制停止手段ｋ０５に出す（ＥＮＤ（２）の方向へ進む）。
【００３８】
プロセス強制停止手段ｋ０５は、共有資源長時間ロックチェック手段ｋ１０３によりプロセス強制停止要求されたプロセスの強制停止を試みる（処理Ｐ３）。
【００３９】
次に、プロセス強制停止手段ｋ０５は、プロセス停止監視要求をタイマ監視手段ｋ０２に出す（処理Ｐ４）。
【００４０】
タイムアウト後、タイマ監視手段ｋ０２は、プロセスの状態を判断し（処理Ｐ５）、プロセスが終了していれば、長時間資源ロック待ちがすべて解放されているので、処理は終了する。プロセスが終了していなければ、タイマ監視手段ｋ０２は、ホスト強制停止要求をホスト強制停止手段ｋ０６に出す。
【００４１】
ホスト強制停止手段ｋ０６は、ホストＨ０ｋの強制停止を行う（処理Ｐ６）。
【００４２】
これを検出したクラスタシステム制御装置３００は、ホストＨ０ｋがロックしていた共有資源に対する資源ロック要求をパージするため、当該共有資源に対する資源ロック待ち状態のロックエントリをすべて消去する。
【００４３】
次に、共有資源排他制御手段ｋ０１の動作について、図４を参照しながら説明する。
【００４４】
まず、共有資源排他制御手段ｋ０１は、プロセスが要求した処理が資源ロック要求かどうかをチェックする（ステップＳ１０１）。
【００４５】
プロセスが要求した処理が資源ロック要求でない、すなわち資源アンロック要求であるならば（ステップＳ１０１でいいえ）、共有資源排他制御手段ｋ０１は、資源アンロック要求をクラスタシステム制御装置３００に送信する（ステップＳ１０９）。
【００４６】
クラスタシステム制御装置３００から資源アンロック完了通知を受け取ると（ステップＳ１１０）、共有資源排他制御手段ｋ０１は、資源アンロック完了を要求元プロセスに通知して（ステップＳ１１１）、要求元プロセスを先へ進める。
【００４７】
一方、プロセスが要求した処理が資源ロック要求ならば（ステップＳ１０１ではい）、共有資源排他制御手段ｋ０１は、資源ロック要求をクラスタシステム制御装置３００に送信し（ステップＳ１０２）、処理結果を待つ。
【００４８】
クラスタシステム制御装置３００から処理結果を受信すると（ステップＳ１０３）、共有資源排他制御手段ｋ０１は、クラスタシステム制御装置３００からきた処理結果をチェックする（ステップＳ１０４）。
【００４９】
処理結果が資源ロック完了通知ならば（ステップＳ１０４ではい）、共有資源排他制御手段ｋ０１は、資源ロック完了を要求元プロセスに通知して（ステップＳ１１２）、要求元プロセスを先へ進める。
【００５０】
処理結果が資源ロック完了通知でない、すなわち資源ロック待ち通知ならば（ステップＳ１０４でいいえ）、共有資源排他制御手段ｋ０１は、資源ロック待ちになったために監視をする必要があるので、資源ロック待ち監視要求をタイマ監視手段ｋ０２に出し（ステップＳ１０５）、イベント受け取り待ちになる。
【００５１】
その内、何らかのイベントを受け取ると（ステップＳ１０６）、共有資源排他制御手段ｋ０１は、その内容をチェックする（ステップＳ１０７）。
【００５２】
イベントが資源ロック完了通知ならば（ステップＳ１０７ではい）、ステップＳ１０４の時点では共有資源をロックしていたプロセスが共有資源をアンロックしたため、本プロセスが共有資源をロックできたことを意味し、監視はもう不要となるので、共有資源排他制御手段ｋ０１は、資源ロック待ち監視解除要求をタイマ監視手段ｋ０２に出し（ステップＳ１１３）、資源ロック完了を要求元プロセスに通知して（ステップＳ１１４）、要求元プロセスを先へ進める。
【００５３】
イベントが資源ロック完了通知でない、すなわち共有資源に対する資源ロック待ちのタイムアウトならば（ステップＳ１０７でいいえ）、共有資源排他制御手段ｋ０１は、長時間資源ロック待ちとなっているため、その原因となっているプロセスを調査するために、共有資源長時間ロックチェック要求を自ホストＨ０ｋの共有資源長時間ロックチェック手段ｋ０３に出す（ステップＳ１０８）。このとき、自ホストＨ０ｋのホストＩＤおよび要求元プロセスのプロセスＩＤも一緒に通知する。この後、共有資源のロックが解放されるのを再度監視するため、共有資源排他制御手段ｋ０１は、ステップＳ１０５に制御を戻す。
【００５４】
次に、タイマ監視手段ｋ０２の動作について、図５を参照しながら説明する。
【００５５】
タイマ監視手段ｋ０２は、共有資源排他制御手段ｋ０１およびプロセス強制停止手段ｋ０５から受け取った要求をチェックして（ステップＳ２０１）、それに応じてタイマをセットしたり、キャンセルしたりする。また、タイマ監視手段ｋ０２は、タイムアウト時には、共有資源排他制御手段ｋ０１およびプロセス強制停止手段ｋ０５にタイムアウト通知を行う。
【００５６】
タイマ監視手段ｋ０２で処理する要求は、共有資源排他制御手段ｋ０１からきた資源ロック待ち監視要求，共有資源排他制御手段ｋ０１からきた資源ロック待ち監視解除要求，およびプロセス強制停止手段ｋ０５からきたプロセス停止監視要求の３つである。
【００５７】
詳しくは、タイマ監視手段ｋ０２は、共有資源排他制御手段ｋ０１からの資源ロック待ち監視要求に応じて（ステップＳ２０１）、タイマをセットし、タイムアウトしたならば共有資源排他制御手段ｋ０１にタイムアウト通知を行う（ステップＳ２０２）。
【００５８】
また、タイマ監視手段ｋ０２は、共有資源排他制御手段ｋ０１からきた資源ロック待ち監視解除要求に応じて（ステップＳ２０１）、セットしたタイマをキャンセルする（ステップＳ２０３）。
【００５９】
さらに、タイマ監視手段ｋ０２は、プロセス強制停止手段ｋ０５からきたプロセス停止監視要求に応じて（ステップＳ２０１）、タイマをセットし、タイムアウトしたならばプロセス強制停止手段ｋ０５にタイムアウト通知を行う（ステップＳ２０４）。
【００６０】
続いて、共有資源長時間ロックチェック手段ｋ０３の動作について、図６を参照しながら詳細に説明する。
【００６１】
いま、ホストＨ０ｋ（＝これから共有資源長時間ロックチェック手段ｋ０３が動作しようとするホスト）のプロセスｐが共有資源長時間ロックチェック要求の対象とする。
【００６２】
共有資源長時間ロックチェック手段ｋ０３は、ホストＨ０ｋのプロセスｐに資源ロック待ちの共有資源があるかどうかをチェックする（ステップＳ３０１）。
【００６３】
ホストＨ０ｋのプロセスｐに資源ロック待ちの共有資源がなければ（ステップＳ３０１でいいえ）、共有資源長時間ロックチェック手段ｋ０３は、ホストＨ０ｋのプロセスｐを他プロセスが長時間資源ロック待ちとしている原因であるので停止させる必要があると判断し、プロセスｐに対するプロセス強制停止要求をプロセス強制停止手段ｋ０５に出し（ステップＳ３０６）、処理を終了する。
【００６４】
ホストＨ０ｋのプロセスｐに資源ロック待ちの共有資源があれば（ステップＳ３０１ではい）、共有資源長時間ロックチェック手段ｋ０３は、ホストＨ０ｋのプロセスｐがすでに長時間資源ロック待ちを検出済みのプロセスかどうかをチェックする（ステップＳ３０２）。ホストＨ０ｋのプロセスｐが長時間資源ロック待ちを検出済みのプロセスであれば（ステップＳ３０２ではい）、共有資源長時間資源ロック待ちの関係をたどった結果、複数のプロセスからなるループ構成になっている、すなわちデッドロックであるので、これらの複数のプロセスのうち、いずれか１つのプロセスを停止させる必要があるため、共有資源長時間ロックチェック手段ｋ０３は、プロセスｐに対するプロセス強制停止要求をプロセス強制停止手段ｋ０５に出し（ステップＳ３０６）、処理を終了する。
【００６５】
ホストＨ０ｋのプロセスｐが長時間資源ロック待ちを検出済みのプロセスでなければ（ステップＳ３０２でいいえ）、共有資源長時間ロックチェック手段ｋ０３は、ホストＨ０ｋのプロセスｐが長時間資源ロック待ちとなっている共有資源を、どのホストのどこのプロセスがロックしているかをロックプロセス情報要求として共有資源排他制御手段ｋ０１を経由してクラスタシステム制御装置３００に問い合わせる（ステップＳ３０３）。
【００６６】
次に、共有資源長時間ロックチェック手段ｋ０３は、クラスタシステム制御装置３００から当該共有資源をロックしているホストおよびプロセスのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を受け取る（ステップＳ３０４）。いま、得られたホストＩＤをｈ’、プロセスＩＤをｐ’とする。
【００６７】
ホストＨ０ｋのプロセスｐの共有資源に対する長時間資源ロック待ちを解除するためには、当該共有資源をロックしているホストＨ０ｈ’のプロセスｐ’に対して処置を行う必要があるので、共有資源長時間ロックチェック手段ｋ０３は、ホスト間通信手段ｋ０４およびｈ’０４を経由して、ホストＩＤがｈ’の共有資源長時間ロックチェック手段ｈ’０３にプロセスｐ’の共有資源長時間ロックチェック要求を出し（ステップＳ３０５）、処理を終了する。
【００６８】
次に、このように構成された第１の実施の形態に係るクラスタシステムにおけるストール防止方式の動作について説明する。
【００６９】
まず、ホストＨ０１のプロセスが要求した処理が資源ロック要求であれば（ステップＳ１０１ではい）、ホストＨ０１の共有資源排他制御手段１０１は、資源ロック要求をクラスタシステム制御装置３００に送信する（ステップＳ１０２）。
【００７０】
クラスタシステム制御装置３００は、共有資源排他制御手段１０１から共有資源に対する資源ロック要求があったときに、まず、当該共有資源の資源名で資源ロック完了状態のロックエントリが存在するかどうかに基づいて当該共有資源がロックされているかどうかを検索する。検索の結果、当該共有資源がロックされていなければ、クラスタシステム制御装置３００は、資源ロック要求元のホストＩＤ，プロセスＩＤ，資源名および資源ロック完了状態のロックエントリを記憶し、資源ロック完了通知を共有資源排他制御手段ｋ０１に返却する。検索の結果、当該共有資源がロックされていれば、クラスタシステム制御装置３００は、資源ロック要求元のホストＩＤ，プロセスＩＤ，資源名および資源ロック待ち状態のロックエントリを記憶し、資源ロック待ち通知を共有資源排他制御手段ｋ０１に返却する。
【００７１】
共有資源排他制御手段１０１は、クラスタシステム制御装置３００から資源ロック完了通知を受け取れば（ステップＳ１０４ではい）、資源ロック完了を要求元プロセスに通知し（ステップＳ１１２）、要求元プロセスを先に進める。
【００７２】
一方、クラスタシステム制御装置３００から資源ロック待ち通知を受け取れば（ステップＳ１０４でいいえ）、共有資源排他制御手段１０１は、当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段１０２に出す（ステップＳ１０５）。
【００７３】
タイマ監視手段１０２は、共有資源排他制御手段１０１から共有資源に対する資源ロック待ち監視要求を受け取ると（ステップＳ２０１）、タイマをセットする（ステップＳ２０２）。
【００７４】
次に、共有資源排他制御手段１０１は、タイムアウトまでにクラスタシステム制御装置３００から資源ロック完了通知を受け取れば（ステップＳ１０７ではい）、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段１０２に出し（ステップＳ１１３）、資源ロック完了を要求元プロセスに通知し（ステップＳ１１４）、要求元プロセスを先に進める。
【００７５】
タイマ監視手段１０２は、共有資源排他制御手段１０１から共有資源に対する資源ロック待ち監視解除要求を受け取ると（ステップＳ２０１）、セットされているタイマをキャンセルする（ステップＳ２０３）。
【００７６】
共有資源に対する資源ロック待ち監視解除要求が届かずにタイマがタイムアウトした場合は、タイマ監視手段１０２は、当該共有資源でプロセスが長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段１０３に出す。
【００７７】
続いて、共有資源長時間ロックチェック手段１０３は、タイマ監視手段１０２から共有資源長時間ロックチェック要求を受け取ると、当該共有資源のロックプロセス情報要求（ホストＩＤおよびプロセスＩＤ）を共有資源排他制御手段ｋ０１を経由してクラスタシステム制御装置３００に送信する（ステップＳ３０３）。
【００７８】
クラスタシステム制御装置３００は、当該共有資源のロックプロセス情報要求を受け取ると、当該共有資源のロックエントリを検索して当該共有資源をロックしているホストおよびプロセスのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を要求元ホストＨ０１の共有資源長時間ロックチェック手段１０３に返却する。
【００７９】
共有資源長時間ロックチェック手段１０３は、クラスタシステム制御装置３００から返却されてきたロックプロセス情報通知のホストＩＤおよびプロセスＩＤを参照して、当該共有資源をロックしているホストＨ０２の共有資源長時間ロックチェック手段２０３に、共有資源長時間ロックチェック要求をホスト間通信手段１０４および２０４を経由して送信する（ステップＳ３０５）。
【００８０】
共有資源長時間ロックチェック要求を受け取ると、ホストＨ０２の共有資源長時間ロックチェック手段２０３は、当該共有資源をロックしているプロセスの状態を調査し、共有資源に対する資源ロック待ちになっているかどうかを判断する（ステップＳ３０１）。
【００８１】
共有資源に対する資源ロック待ちになっていれば、共有資源長時間ロックチェック手段２０３は、当該共有資源のロックプロセス情報要求（ホストＩＤおよびプロセスＩＤ）をクラスタシステム制御装置３００に送信する（ステップＳ３０３）。
【００８２】
以上のような処理を繰り返すうちに、最初に長時間資源ロック待ちを検出したプロセスに戻る場合がある。一番簡単な例は、デッドロックのケースであり、まず、プロセスｐ１で共有資源Ｂの長時間資源ロック待ちを検出し、共有資源Ｂをロックしているのはプロセスｐ２であれば、プロセスｐ２は共有資源Ａを資源ロック待ちしているので、共有資源Ａをロックしているのはプロセスｐ１であり、最初に検出したプロセスに戻ってくる。このような場合は、デッドロックのため、デッドロックに関係しているプロセスのいずれかを強制停止する必要がある。どのプロセスを止めるかは、たとえばホストＩＤの一番若いプロセスと決めておく。
【００８３】
このようにして決めたプロセスが動作しているホストＨ０ｋのプロセス強制停止手段ｋ０５に対して、共有資源長時間ロックチェック手段ｋ０３は、ホスト間通信手段ｋ０４を経由してプロセス強制停止要求を送信する（ステップＳ３０６）。
【００８４】
もし共有資源に対する資源ロック待ちになっていなければ（ステップＳ３０１でいいえ）、共有資源長時間ロックチェック手段ｋ０３は、そのホストＨ０ｋのプロセス強制停止手段ｋ０５にプロセス強制停止要求を出す（ステップＳ３０６）。
【００８５】
プロセス強制停止手段ｋ０５は、共有資源長時間ロックチェック手段ｋ０３からプロセス強制停止要求を受け取ると、指定されたプロセスを強制停止する。同時に、プロセス強制停止手段ｋ０５は、プロセス停止監視要求をタイマ監視手段ｋ０２に出す。
【００８６】
タイマ監視手段ｋ０２は、プロセス強制停止手段ｋ０５からプロセス停止監視要求を受け取ると、一定時間のタイマをセットする（ステップＳ２０４）。
【００８７】
タイムアウトした後、タイマ監視手段ｋ０２は、プロセスの状態を調査する。
【００８８】
もしプロセスが停止していれば、タイマ監視手段ｋ０２は、当該共有資源に対する資源アンロック要求を共有資源排他制御手段ｋ０１を経由してクラスタシステム制御装置３００に送信する（ステップＳ１０９）。
【００８９】
クラスタシステム制御装置３００は、共有資源排他制御手段ｋ０１から資源アンロック要求を受け取ると、資源ロック完了状態のホストＩＤ，プロセスＩＤおよび資源名のロックエントリを検索する。そして、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段ｋ０１に返却する。もし消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、クラスタシステム制御装置３００は、そのうちの１つのロックエントリを資源ロック完了状態に更新し、資源ロック要求があったホストＨ０ｋの共有資源排他制御手段ｋ０１に資源アンロック完了通知を送信する。
【００９０】
これにより、資源ロック待ちとなっていたプロセスが順次動作する。
【００９１】
もしプロセスの状態を調査したときにプロセスが停止していなければ（処理Ｐ５でいいえ）、タイマ監視手段ｋ０２は、ホスト強制停止要求をホスト強制停止手段ｋ０６に出す（処理Ｐ６）。
【００９２】
ホスト強制停止手段ｋ０６は、タイマ監視手段ｋ０２からホスト強制停止要求を受け取ると、ホストＨ０ｋを強制停止する。
【００９３】
ホストＨ０ｋの強制停止が完了した後、ホスト強制停止手段ｋ０６は、ホスト間通信手段ｋ０４および共有資源長時間ロックチェック手段ｋ０３を経由して、ホスト強制停止完了通知を他のホストＨ０ｋの共有資源排他制御手段ｋ０１に送信する。
【００９４】
ホスト強制停止完了通知を受け取ったホストの共有資源排他制御手段ｋ０１は、強制停止したホストＨ０ｋのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置３００に送信する。
【００９５】
クラスタシステム制御装置３００は、資源パージ要求を受け取ると、強制停止したホストＨ０ｋのプロセスがロックしていた共有資源に対する資源ロック要求をパージするため、そのホストＩＤのロックエントリをすべて消去し、完了したならば資源パージ完了通知を要求元ホストの共有資源排他制御手段ｋ０１に返却する。
【００９６】
同時に、当該共有資源に対する資源ロック待ち状態のプロセスが動作するホストのロックエントリが存在する場合、クラスタシステム制御装置３００は、１つのホストの１つのプロセスからの資源ロック要求に対するロックエントリを資源ロック完了状態にし、資源ロック完了通知を当該ホストの共有資源排他制御手段ｋ０１に返却する。
【００９７】
当該ホストの共有資源排他制御手段ｋ０１は、資源ロック完了通知を受け取ると（ステップＳ１０７ではい）、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段ｋ０２に出し（ステップＳ１１３）、資源ロック完了を要求元プロセスに通知し（ステップＳ１１４）、要求元プロセスが動作する。
【００９８】
以降、クラスタシステム内の資源ロックを待っていたホストのプロセスも資源ロック待ちが資源ロック完了に順次変わり、資源ロック待ちが順次解除され、処理を再開する。
【００９９】
次に、図７ないし図１１に示す具体例を用いて詳しく説明する。
【０１００】
いま、図７に示すように、ホストＨ０１のプロセスｐ１１が共有資源Ａに対する資源ロック待ち状態、ホストＨ０１のプロセスｐ１２が共有資源Ａの資源ロック完了状態で、かつ共有資源Ｂに対する資源ロック待ち状態、ホストＨ０２のプロセスｐ２１が共有資源Ｂの資源ロック完了状態とする。このような状態で、ホストＨ０１のタイマ監視手段１０２が、共有資源Ａに対する資源ロック待ちのタイムアウトを検出したとする。
【０１０１】
タイマ監視手段１０２は、タイムアウトを検出すると、共有資源Ａの共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段１０３に出す。
【０１０２】
共有資源長時間ロックチェック手段１０３は、共有資源Ａのロックプロセス情報要求を、共有資源排他制御手段１０１を経由してクラスタシステム制御装置３００に送信する（図８（１）参照）。
【０１０３】
クラスタシステム制御装置３００は、いま共有資源ＡをロックしているのはホストＨ０１のプロセスｐ１２であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を、共有資源排他制御手段１０１を経由して共有資源長時間ロックチェック手段１０３に返却する（図８（２）参照）。
【０１０４】
共有資源長時間ロックチェック手段１０３は、共有資源ＡをロックしているのがホストＨ０１のプロセスｐ１２であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を自分自身に通知する（あるいは次の処理を継続して続ける）。
【０１０５】
次に、共有資源長時間ロックチェック手段１０３は、ホストＨ０１のプロセスｐ１２の状態を調査する。
【０１０６】
いま、ホストＨ０１のプロセスｐ１２は共有資源Ｂに対する資源ロック待ちであるため、共有資源長時間ロックチェック手段１０３は、共有資源Ｂのロックプロセス情報要求を、共有資源排他制御手段１０１を経由してクラスタシステム制御装置３００に送信する（図９（１）参照）。
【０１０７】
クラスタシステム制御装置３００は、いま共有資源ＢをロックしているのはホストＨ０２のプロセスｐ２１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を、共有資源排他制御手段１０１を経由して共有資源長時間ロックチェック手段１０３に返却する（図９（２）参照）。
【０１０８】
共有資源長時間ロックチェック手段１０３は、共有資源ＢをロックしているのがホストＨ０２のプロセスｐ２１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を、ホストＨ０１のホスト間通信手段１０４およびホストＨ０２のホスト間通信手段２０４を経由してホストＨ０２の共有資源長時間ロックチェック手段２０３に出す（図９（３）参照）。
【０１０９】
ホストＨ０２の共有資源長時間ロックチェック手段２０３は、ホストＨ０２のプロセスｐ２１の状態を調査する。
【０１１０】
いま、プロセスｐ２１は、資源ロック待ちではないため、何らかの原因で共有資源Ｂのロックを長時間確保したままとなっている。したがって、このプロセスｐ２１がクラスタシステム全体をストールさせている原因となっているため、このプロセスｐ２１を強制停止する必要がある。
【０１１１】
共有資源長時間ロックチェック手段２０３は、プロセスｐ２１のプロセス強制停止要求をプロセス強制停止手段２０５に出す（図１０（１）参照）。
【０１１２】
プロセス強制停止手段２０５は、プロセスｐ２１の強制停止を行う（図１０（２）参照）。
【０１１３】
同時に、プロセス強制停止手段２０５は、プロセス停止監視要求をタイマ監視手段２０２に出す。
【０１１４】
タイマ監視手段２０２は、一定時間後にプロセスｐ２１の状態を調査する。
【０１１５】
プロセスｐ２１が強制停止していれば、タイマ監視手段２０２は、プロセスｐ２１がロックしていた共有資源Ｂに対する資源アンロック要求を共有資源排他制御手段２０１を経由してクラスタシステム制御装置３００に送信する（図１０（３）参照）。
【０１１６】
クラスタシステム制御装置３００は、プロセスｐ２１がロックしていた共有資源Ｂに対する資源ロック要求のロックエントリを消去し（図１０（４）参照）、共有資源Ｂの資源アンロック完了通知を共有資源排他制御手段２０１に返却する（図１０（５）参照）。
【０１１７】
同時に、いまホストＨ０１のプロセスｐ１２が共有資源Ｂに対して資源ロック待ちになっているため、クラスタシステム制御装置３００は、プロセスｐ１２が資源ロック待ちしていた共有資源Ｂに対する資源ロック要求のロックエントリを資源ロック完了状態にし、共有資源Ｂの資源ロック完了通知をホストＨ０１の共有資源排他制御手段１０１に出す（図１０（６）参照）。
【０１１８】
ホストＨ０１の共有資源排他制御手段１０１は、共有資源Ｂの資源ロック完了をプロセスｐ１２に通知する（図１０（６）参照）。
【０１１９】
これにより、プロセスｐ１２が動き出すので、そのうち共有資源Ａのロックが解放されるため、その時点でプロセスｐ１１も動き出すことができる。
【０１２０】
もしタイマ監視手段２０２がプロセスｐ２１の状態を調査したときに、プログラムの暴走などにより強制停止していないケースもありえる。いま、資源ロック待ちになっているプロセスがホスト間でまたがっているならば、「クラスタシステム全体のストール」の状態にあるといえる。もし１台のホスト内で閉じていれば、「システムストール」に過ぎない。しかしながら、このケースでも、長時間ロックされたままの共有資源を他ホストのプロセスからロックしようとすると、プロセスは共有資源に対する資源ロック待ちになり、結果として「クラスタシステム全体のストール」に陥る。本実施の形態では、「クラスタシステム全体のストール」の状態（または、その状態に陥れる）の原因を探し出し、その原因を排除しようとするものである。
【０１２１】
このケースでは、タイマ監視手段２０２は、ホスト強制停止要求をホスト強制停止手段２０６に出す。
【０１２２】
ホスト強制停止手段２０６は、ホスト強制停止要求を受け取ると、ホストＨ０２を強制停止させる。
【０１２３】
ホストＨ０２の強制停止が完了したならば、ホストＨ０２のホスト強制停止完了通知をホスト間通信手段２０４および１０４ならびに共有資源長時間ロックチェック手段１０３を経由して共有資源排他制御手段１０１に行う（図１１（１）参照）。
【０１２４】
共有資源排他制御手段１０１は、ホストＨ０２のホスト強制停止完了通知を受け取ると、ホストＨ０２のプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置３００に送信する（図１１（２）参照）。
【０１２５】
クラスタシステム制御装置３００は、ホストＨ０２のプロセスがロックしていた共有資源に対する資源ロック要求をパージするため、そのホストＩＤのロックエントリをすべて消去する（図１１（３）参照）。
【０１２６】
いま、共有資源ＢはホストＨ０１のプロセスｐ１２が資源ロック待ちになっているため、クラスタシステム制御装置３００は、プロセスｐ１２の共有資源Ｂのロックエントリを資源ロック完了状態にし、資源ロック完了通知をホストＨ０１の共有資源排他制御手段１０１に返却する（図１１（４）参照）。
【０１２７】
ホストＨ０１の共有資源排他制御手段１０１は、共有資源Ｂの資源ロック完了をプロセスｐ１２に通知する（図１１（４）参照）。
【０１２８】
プロセスｐ１２が動き出せば、そのうち共有資源Ａのロックが解放されるため、その時点でプロセスｐ１１も動き出すことができる。
【０１２９】
第１の実施の形態によれば、共有資源に対する資源ロック待ちをタイマ監視により検出し、自動的にホスト間通信とクラスタシステム制御装置３００とを使ってクラスタシステム全体のストールの原因となっているプロセスを検出し、そのプロセスを強制停止できるため、たとえクラスタシステム内のあるプログラムが共有資源のロックを確保したまま暴走しても、クラスタシステム全体がストール状態に陥ることを防止できる。
【０１３０】
また、プロセスを強制停止できなかった場合には、当該ホストを強制停止するため、ホストの強制停止によりプログラムの暴走による影響をホスト１台のみに限定することができるので、たとえプロセスを強制停止できず、共有資源のロックを確保したままであっても、クラスタシステム全体がストール状態に陥ることを防止できる。
【０１３１】
［第２の実施の形態］
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【０１３２】
図１２を参照すると、本発明の第２の実施の形態に係るクラスタシステムにおけるストール防止方式は、プログラム制御により動作するｎ（３以上の整数）台のホスト（中央処理装置；プロセッサ；データ処理装置）Ｈ０１〜Ｈ０ｎと、これらのホスト間で共有する共有資源の排他制御を行うクラスタシステム制御装置３００とから構成されている。
【０１３３】
ホストＨ０ｋ（ｋ＝１〜ｎ）は、それぞれ、共有資源排他制御手段ｋ０１と、タイマ監視手段ｋ０２と、共有資源長時間ロックチェック手段ｋ０３と、ホスト間通信手段ｋ０４と、プロセス強制停止手段ｋ０５と、ホスト強制停止手段ｋ０６とを含む。
【０１３４】
これらの手段は、それぞれ次のように動作する。
【０１３５】
共有資源排他制御手段ｋ０１は、ホストＨ０ｋで動作しているプロセスから共有資源に対する資源ロック要求があったときに、資源ロック要求をクラスタシステム制御装置３００に送信し、クラスタシステム制御装置３００から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先へ進める。クラスタシステム制御装置３００から資源ロック待ち通知を受け取ると当該共有資源に対する資源ロック待ち監視要求をタイマ監視手段ｋ０２に出し、この後に、クラスタシステム制御装置３００から資源ロック完了通知を受け取ると、資源ロック完了を要求元プロセスに通知してプロセスを先に進めると同時に当該共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段ｋ０２に出す。ホストＨ０ｋで動作しているプロセスから共有資源に対する資源アンロック要求があったときに当該共有資源に対する資源アンロック要求をクラスタシステム制御装置３００に送信し、クラスタシステム制御装置３００から資源アンロック完了通知を受け取ると、資源アンロック完了を要求元プロセスに通知してプロセスを先へ進める。タイマ監視手段ｋ０２から強制停止したプロセスがロックしていた共有資源に対する資源アンロック要求を受け取ったときに、当該共有資源に対する資源アンロック要求をクラスタシステム制御装置３００に送信する。ホスト間通信手段ｋ０４を経由して他ホストのホスト強制停止完了通知を受け取ると、当該ホストのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置３００に送信する。
【０１３６】
タイマ監視手段ｋ０２は、共有資源排他制御手段ｋ０１から共有資源に対する資源ロック待ち監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、当該共有資源で長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段ｋ０３に出す。共有資源排他制御手段ｋ０１から共有資源に対する資源ロック待ち監視解除要求を受け取ると、セットしていたタイマをキャンセルする。プロセス強制停止手段ｋ０５からプロセス停止監視要求を受け取ると、一定時間のタイマをセットする。タイマによるイベントが通知されたならば、プロセスの状態を参照し、もしプロセスが停止していれば、当該共有資源に対する資源アンロック要求を共有資源排他制御手段ｋ０１に出す。もしプロセスが停止していなければ、ホスト強制停止要求をホスト強制停止手段ｋ０６に出す。
【０１３７】
共有資源長時間ロックチェック手段ｋ０３は、タイマ監視手段ｋ０２から共有資源長時間ロックチェック要求を受け取ると、他ホストの共有資源長時間ロックチェック手段ｋ０３と通信し、さらにクラスタシステム制御装置３００からロックエントリを参照して、共有資源の長時間資源ロック待ちの原因となっているホストおよびプロセスを調査する。そして、共有資源の長時間資源ロック待ちの原因となっているプロセスのプロセス強制停止要求をプロセス強制停止手段ｋ０５に出す。
【０１３８】
ホスト間通信手段ｋ０４は、必要に応じて共有資源長時間ロックチェック手段ｋ０３から他ホストの共有資源長時間ロックチェック手段ｋ０３に共有資源長時間ロックチェック要求，ホスト強制停止完了通知，ロックプロセス情報通知等を送受信する。
【０１３９】
プロセス強制停止手段ｋ０５は、共有資源長時間ロックチェック手段ｋ０３からプロセス強制停止要求を受け取ったときに、プロセスを強制停止させる。プロセスが強制停止した後、プロセス停止監視要求をタイマ監視手段ｋ０２に出す。
【０１４０】
ホスト強制停止手段ｋ０６は、タイマ監視手段ｋ０２からホスト強制停止要求を受け取ったときに、ホストＨ０ｋを強制停止させる。ホストＨ０ｋが強制停止した後、ホスト強制停止完了通知をホスト間通信手段ｋ０４を経由して他の１台のホストに送信する。
【０１４１】
クラスタシステム制御装置３００は、共有資源排他制御手段ｋ０１から共有資源に対する資源ロック要求があったときに、当該共有資源に対する資源ロック完了状態のロックエントリがあるかどうかに基づいて当該共有資源がロックされているかどうかを検索する。検索の結果、当該共有資源がロックされていなければ、資源ロック要求元のホストＩＤ，プロセスＩＤ，資源名および資源ロック完了状態のロックエントリを記憶し、資源ロック完了通知を共有資源排他制御手段ｋ０１に返却する。検索の結果、当該共有資源がロックされていれば、資源ロック要求元のホストＩＤ，プロセスＩＤ，資源名および資源ロック待ち状態のロックエントリを記憶し、資源ロック待ち通知を共有資源排他制御手段ｋ０１に返却する。共有資源排他制御手段ｋ０１から資源アンロック要求があったときに、クラスタシステム制御装置３００は、資源ロック完了状態のホストＩＤ，プロセスＩＤおよび資源名のロックエントリを検索し、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段ｋ０１に返却する。消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、そのうちの１つのロックエントリを資源ロック完了状態に更新し、その資源ロック要求があったホストに資源アンロック完了通知を出す。共有資源排他制御手段ｋ０１から他ホストの資源パージ要求があったときに、当該ホストのプロセスがロックしていた共有資源を長時間資源ロック待ちしている資源ロック要求のロックエントリをパージする。
【０１４２】
次に、このように構成された第２の実施の形態に係るクラスタシステムにおけるストール防止方式の全体の動作について説明する。
【０１４３】
まず、ホストＨ０ｉ（ｉは１≦ｉ≦ｎの整数）のプロセスが要求した処理が資源ロック要求であれば（ステップＳ１０１ではい）、ホストＨ０ｉの共有資源排他制御手段ｉ０１は、資源ロック要求をクラスタシステム制御装置３００に送信する（ステップＳ１０２）。
【０１４４】
ここで、クラスタシステム制御装置３００から資源ロック完了通知を受け取れば（ステップＳ１０４ではい）、共有資源排他制御手段ｉ０１は、資源ロック完了を要求元プロセスに通知し（ステップＳ１１２）、要求元プロセスを先に進める。
【０１４５】
もしクラスタシステム制御装置３００から資源ロック待ち通知を受け取れば（ステップＳ１０４でいいえ）、共有資源排他制御手段ｉ０１は、共有資源に対する資源ロック待ち監視要求をタイマ監視手段ｉ０２に出す（ステップＳ１０５）。
【０１４６】
タイマ監視手段ｉ０２は、共有資源に対する資源ロック待ち監視要求を受け取ると（ステップＳ２０１）、タイマをセットする（ステップＳ２０２）。
【０１４７】
次に、共有資源排他制御手段ｉ０１は、タイムアウトまでにクラスタシステム制御装置３００から資源ロック完了通知を受け取れば（ステップＳ１０７ではい）、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段ｉ０２に出し（ステップＳ１１３）、資源ロック完了を要求元プロセスに通知し（ステップＳ１１４）、要求元プロセスを先に進める。
【０１４８】
タイマ監視手段ｉ０２は、共有資源排他制御手段ｉ０１から共有資源に対する資源ロック待ち監視解除要求を受け取ると（ステップＳ２０１）、セットされているタイマをキャンセルする（ステップＳ２０３）。
【０１４９】
共有資源に対する資源ロック待ち監視解除要求が届かずにタイムアウトした場合は、タイマ監視手段ｉ０２は、当該共有資源でプロセスが長時間資源ロック待ちとなっているため、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段ｉ０３に出す。
【０１５０】
続いて、共有資源長時間ロックチェック手段ｉ０３は、タイマ監視手段ｉ０２から共有資源長時間ロックチェック要求を受け取ると、当該共有資源のロックプロセス情報要求をクラスタシステム制御装置３００に送信する（ステップＳ３０３）。
【０１５１】
クラスタシステム制御装置３００は、当該共有資源のロックプロセス情報要求を受け取ると、当該共有資源をロックしているホストおよびプロセスのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を要求元ホストに返却する。ここで、当該共有資源をロックしているプロセスが動作するホストを、ホストＨ０ｊ（ｊは１≦ｊ≦ｎの整数。ただし、ｊ≠ｉ）とする。
【０１５２】
共有資源長時間ロックチェック手段ｉ０３は、返却されてきたロックプロセス情報通知のホストＩＤおよびプロセスＩＤを参照して、共有資源長時間ロックチェック要求をホスト間通信手段ｉ０４およびｊ０４を経由してロックを確保しているプロセスが動作するホストＨ０ｊに送信する（ステップＳ３０５）。
【０１５３】
共有資源長時間ロックチェック要求を受け取ると、ホストＨ０ｊの共有資源長時間ロックチェック手段ｊ０３は、当該共有資源をロックしているプロセスの状態を調査し、共有資源に対する資源ロック待ちになっているかどうかを判断する（ステップＳ３０１）。
【０１５４】
共有資源に対する資源ロック待ちになっていれば、共有資源長時間ロックチェック手段ｊ０３は、当該共有資源のロックプロセス情報要求をクラスタシステム制御装置３００に送信する（ステップＳ３０３）。
【０１５５】
このような処理を繰り返すうちに、最初に長時間資源ロック待ちを検出したプロセスに戻る場合がある。この場合は、デッドロックのため、デッドロックに関係しているプロセスのいずれかを強制停止する必要がある。どのプロセスを止めるかは、たとえばホストＩＤの一番若いプロセスと決めておく。ここでは、ホストＨ０ｊのプロセスであるとする。
【０１５６】
このようにして決めたプロセスが動作しているホストＨ０ｊのプロセス強制停止手段ｊ０５に対して、ホストＨ０ｉの共有資源長時間ロックチェック手段ｉ０３は、プロセス強制停止要求をホスト間通信手段ｉ０４およびｊ０４を経由して送信する（ステップＳ３０６）。
【０１５７】
当該共有資源に対する資源ロック待ちになっていなければ（ステップＳ３０１でいいえ）、共有資源長時間ロックチェック手段ｊ０３は、プロセス強制停止要求をプロセス強制停止手段ｊ０５に出す（ステップＳ３０６）。
【０１５８】
プロセス強制停止手段ｊ０５は、プロセス強制停止要求を受け取ると、指定されたプロセスを強制停止する。同時に、プロセス強制停止手段ｊ０５は、プロセス停止監視要求をタイマ監視手段ｊ０２に出す。
【０１５９】
タイマ監視手段ｊ０２は、プロセス停止監視要求を受け取ると、一定時間のタイマをセットする（ステップＳ２０４）。
【０１６０】
タイムアウトした後、タイマ監視手段ｊ０２は、プロセスの状態を調査する。
【０１６１】
もしプロセスが停止していれば、タイマ監視手段ｊ０２は、当該プロセスがロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段ｊ０１を経由してクラスタシステム制御装置３００に送信する（ステップＳ１０９）。
【０１６２】
クラスタシステム制御装置３００は、共有資源排他制御手段ｊ０１から資源アンロック要求を受け取ると、資源ロック完了状態のホストＩＤ，プロセスＩＤおよび資源名のロックエントリを検索する。そして、該当するロックエントリを消去して資源アンロック完了通知を共有資源排他制御手段ｊ０１に返却する。もし消去したロックエントリが資源ロック完了状態で、かつ他に資源ロック待ち状態のロックエントリが存在すれば、クラスタシステム制御装置３００は、そのうちの１つのロックエントリを資源ロック完了状態に更新し、資源ロック要求があったホストの共有資源排他制御手段に資源アンロック完了通知を送信する。ここでは、資源ロック完了状態にされたロックエントリのプロセスが動作するホストが、ホストＨ０ｉであるとする。
【０１６３】
これにより、資源ロック待ちとなっていたプロセスが順次動作する。
【０１６４】
もしプロセスの状態を調査したときに、プロセスが停止していなければ（処理Ｐ５でいいえ）、タイマ監視手段ｊ０２は、ホスト強制停止要求をホスト強制停止手段ｊ０６に出す（処理Ｐ６）。
【０１６５】
ホスト強制停止手段ｊ０６は、ホスト強制停止要求を受け取ると、ホストＨ０ｊを強制停止する。
【０１６６】
ホストＨ０ｊの強制停止が完了した後、ホスト強制停止手段ｊ０６は、ホスト間通信手段ｊ０４を経由してホスト強制停止完了通知を他ホストに送信する。この送信先のホストは、動作中のホスト１台に限定する。その規則は、ホストＩＤの順番で１，２，３，…という方法や、ホストＨ０ｊの隣のホストＨ０（ｊ＋１），Ｈ０（ｊ＋２），…という順番で決定する方法もある。ここでは、送信先のホストが、ホストＨ０ｉであるとする。
【０１６７】
ホスト強制停止完了通知を受け取ったホストＨ０ｉの共有資源排他制御手段ｉ０１は、強制停止したホストＨ０ｊのプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置３００に送信する。
【０１６８】
クラスタシステム制御装置３００は、資源パージ要求を受け取ると、強制停止したホストＨ０ｊのプロセスがロックしていた共有資源に対する資源パージ要求をパージするため、そのホストＩＤのロックエントリをすべて消去し、完了したならば資源パージ完了通知を要求元ホストＨ０ｉの共有資源排他制御手段ｉ０１に返却する。
【０１６９】
同時に、当該共有資源に対する資源ロック待ち状態のプロセスが動作するホストのロックエントリが存在する場合、クラスタシステム制御装置３００は、１つのホストの１つのプロセスからの資源ロック要求に対するロックエントリを資源ロック完了状態にし、資源ロック完了通知を当該ホストの共有資源排他制御手段に返却する。ここでは、返却先のホストをホストＨ０ｍ（ｍは１≦ｍ≦ｎの整数。ただし、ｍ≠ｊ）であるものとする。
【０１７０】
ホストＨ０ｍの共有資源排他制御手段ｍ０１は、資源ロック完了通知を受け取ると（ステップＳ１０７ではい）、共有資源に対する資源ロック待ち監視解除要求をタイマ監視手段ｍ０２に出し（ステップＳ１１３）、資源ロック完了を要求元プロセスに通知し（ステップＳ１１４）、要求元プロセスが動作する。
【０１７１】
以降、クラスタシステム内の資源ロックを待っていた各ホストのプロセスも資源ロック待ちが資源ロック完了に順次変わり、資源ロック待ちが順次解除され、処理を再開する。
【０１７２】
次に、具体例について説明する。
【０１７３】
いま、ホストＨ０１のプロセスｐ１１が共有資源Ａに対する資源ロック待ち状態、ホストＨ０２のプロセスｐ２１が共有資源Ａの資源ロック完了状態で、かつ共有資源Ｂに対する資源ロック待ち状態、ホストＨ０３のプロセスｐ３１が共有資源Ｂの資源ロック完了状態で、かつ共有資源Ｃに対する資源ロック待ち状態、ホストＨ０４のプロセスｐ４１が共有資源Ｃの資源ロック完了状態とする。このような状態で、ホストＨ０１のタイマ監視手段１０２が、共有資源Ａに対する資源ロック待ちのタイムアウトを検出したとする。
【０１７４】
タイマ監視手段１０２は、タイムアウトを検出すると、共有資源長時間ロックチェック要求を共有資源長時間ロックチェック手段１０３に出す。
【０１７５】
共有資源長時間ロックチェック手段１０３は、共有資源Ａのロックプロセス情報要求をクラスタシステム制御装置３００に送信する。
【０１７６】
クラスタシステム制御装置３００は、いま共有資源ＡをロックしているのはホストＨ０２のプロセスｐ２１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を共有資源排他制御手段１０１を経由して共有資源長時間ロックチェック手段１０３に返却する。
【０１７７】
共有資源長時間ロックチェック手段１０３は、共有資源ＡをロックしているのがホストＨ０２のプロセスｐ２１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知をホスト間通信手段１０４および２０４を経由してホストＨ０２の共有資源長時間ロックチェック手段２０３に送信する。
【０１７８】
次に、ホストＨ０２の共有資源長時間ロックチェック手段２０３は、ホストＨ０２のプロセスｐ２１の状態を調査する。
【０１７９】
いまプロセスｐ２１は共有資源Ｂに対する資源ロック待ちのため、共有資源長時間ロックチェック手段２０３は、共有資源Ｂのロックプロセス情報要求をクラスタシステム制御装置３００に送信する。
【０１８０】
クラスタシステム制御装置３００は、いま共有資源ＢをロックしているのはホストＨ０３のプロセスｐ３１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を共有資源長時間ロックチェック手段２０３に返却する。
【０１８１】
共有資源長時間ロックチェック手段２０３は、共有資源ＡをロックしているのがホストＨ０３のプロセスｐ３１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知をホスト間通信手段２０４およびホスト間通信手段３０４を経由して共有資源長時間ロックチェック手段３０３に送信する。
【０１８２】
いまプロセスｐ３１は共有資源Ｃに対する資源ロック待ちのため、共有資源長時間ロックチェック手段３０３は、共有資源Ｃのロックプロセス情報要求をクラスタシステム制御装置３００に送信する。
【０１８３】
クラスタシステム制御装置３００は、いま共有資源ＣをロックしているのはホストＨ０４のプロセスｐ４１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知を共有資源長時間ロックチェック手段３０３に返却する。
【０１８４】
共有資源長時間ロックチェック手段３０３は、共有資源ＣをロックしているのがホストＨ０４のプロセスｐ４１であるため、そのホストＩＤおよびプロセスＩＤを含むロックプロセス情報通知をホスト間通信手段３０４および４０４を経由して共有資源長時間ロックチェック手段４０３に送信する。
【０１８５】
いま、プロセスｐ４１は資源ロック待ちではないため、何らかの原因で共有資源のロックを長時間確保したままとなっている。
【０１８６】
プロセスｐ４１がクラスタシステム全体をストールさせている原因となっているため、プロセスｐ４１を強制停止する必要がある。
【０１８７】
共有資源長時間ロックチェック手段４０３は、プロセスｐ４１のプロセス強制停止要求をプロセス強制停止手段４０５に出す。
【０１８８】
プロセス強制停止手段４０５は、プロセスｐ４１の強制停止を行う。
【０１８９】
同時に、プロセス強制停止手段４０５は、プロセス停止監視要求をタイマ監視手段４０２に出す。
【０１９０】
タイマ監視手段４０２は、一定時間後にプロセスｐ４１の状態を調査する。
【０１９１】
プロセスｐ４１が強制停止していれば、タイマ監視手段４０２は、プロセスｐ４１がロックしていた共有資源に対する資源アンロック要求を共有資源排他制御手段４０１に出す。
【０１９２】
共有資源排他制御手段４０１は、プロセスｐ４１がロックしていた共有資源に対する資源アンロック要求をクラスタシステム制御装置３００に送信する。
【０１９３】
クラスタシステム制御装置３００は、プロセスｐ４１が共有資源Ｃの資源ロックを解放し、共有資源Ｃの資源アンロック完了通知を共有資源排他制御手段４０１に返却する。
【０１９４】
同時に、いま共有資源ＣはホストＨ０３のプロセスｐ３１が資源ロック待ちになっているため、クラスタシステム制御装置３００は、プロセスｐ３１の共有資源Ｃのロックエントリを資源ロック完了状態にし、資源ロック完了通知をホストＨ０３の共有資源排他制御手段３０１に返却する。
【０１９５】
ホストＨ０３の共有資源排他制御手段３０１は、共有資源Ｃの資源ロック完了をプロセスｐ３１に通知する（ステップＳ１１２）。
【０１９６】
プロセスｐ３１が動き出せば、そのうち共有資源Ｂのロックが解放されるため、その時点でプロセスｐ２１も動き出すことができる。
【０１９７】
さらに、プロセスｐ２１が動き出せば、そのうち共有資源Ａのロックが解放されるため、その時点でプロセスｐ１１も動き出すことができる。
【０１９８】
タイマ監視手段４０２がプロセスｐ４１の状態を調査したときに、プログラムの暴走などにより強制停止していないケースもあり得る。
【０１９９】
このケースでは、タイマ監視手段４０２は、ホスト強制停止要求をホスト強制停止手段４０６に出す。
【０２００】
ホスト強制停止手段４０６は、ホスト強制停止要求を受け取ると、ホストＨ０４を強制停止させる。
【０２０１】
ホストＨ０４の制停止が完了したならば、ホスト強制停止手段４０６は、ホスト間通信手段４０４および１０４を経由してホストＨ０４のホスト強制停止完了通知をホストＨ０１の共有資源排他制御手段１０１に送信する。
【０２０２】
共有資源排他制御手段１０１は、ホストＨ０４の強制停止完了通知を受け取ると、ホストＨ０４のプロセスがロックしていた共有資源に対する資源パージ要求をクラスタシステム制御装置３００に送信する。
【０２０３】
クラスタシステム制御装置３００は、ホストＨ０４のプロセスがロックしていた共有資源に対する資源ロック要求をパージするため、そのホストＩＤのロックエントリをすべて消去する。
【０２０４】
いま、共有資源ＣはホストＨ０３のプロセスｐ３１が資源ロック待ちになっているため、クラスタシステム制御装置３００は、共有資源Ｃに対するプロセスｐ３１のロックエントリを資源ロック完了状態にし、資源ロック完了通知をホストＨ０３の共有資源排他制御手段３０１に返却する。
【０２０５】
ホストＨ０３の共有資源排他制御手段３０１は、共有資源Ｃの資源ロック完了をプロセスｐ３１に通知する。
【０２０６】
プロセスｐ３１が動き出せば、そのうち共有資源Ｂのロックが解放されるため、その時点でプロセスｐ２１も動き出すことができる。
【０２０７】
プロセスｐ２１が動き出せば、そのうち共有資源Ａのロックが解放されるため、その時点でプロセスｐ１１も動き出すことができる。
【０２０８】
［第３の実施の形態］
図１３は、本発明の第３の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。本実施の形態に係るクラスタシステムにおけるストール防止方式は、図１に示した第１の実施の形態に係るクラスタシステムにおけるストール防止方式のホストＨ０１およびＨ０２に対してストール防止プログラム４００を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付してそれらの詳しい説明を省略する。
【０２０９】
ストール防止プログラム４００は、ホストＨ０１およびＨ０２に読み込まれ、ホストＨ０１およびＨ０２の動作を、共有資源排他制御手段１０１および２０１，タイマ監視手段１０２および２０２，共有資源長時間ロックチェック手段１０３および２０３，ホスト間通信手段１０４および２０４，プロセス強制停止手段１０５および２０５，ならびにホスト強制停止手段１０６および２０６として制御する。ストール防止プログラム４００の制御によるホストＨ０１およびＨ０２の動作は、第１の実施の形態におけるホストＨ０１およびＨ０２の動作と全く同様になるので、その詳しい説明を割愛する。
【０２１０】
［第４の実施の形態］
図１４は、本発明の第４の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。本実施の形態に係るクラスタシステムにおけるストール防止方式は、図１２に示した第２の実施の形態に係るクラスタシステムにおけるストール防止方式のホストＨ０１，…，Ｈ０ｎに対してストール防止プログラム４００を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付してそれらの詳しい説明を省略する。
【０２１１】
ストール防止プログラム４００は、ホストＨ０１，…，Ｈ０ｎに読み込まれ、ホストＨ０１，…，Ｈ０ｎの動作を、共有資源排他制御手段１０１，…，ｎ０１，タイマ監視手段１０２，…，ｎ０２，共有資源長時間ロックチェック手段１０３，…，ｎ０３，ホスト間通信手段１０４，…，ｎ０４，プロセス強制停止手段１０５，…，ｎ０５，ならびにホスト強制停止手段１０６，…，ｎ０６として制御する。ストール防止プログラム４００の制御によるホストＨ０１，…，Ｈ０ｎの動作は、第２の実施の形態におけるＨ０１，…，Ｈ０ｎの動作と全く同様になるので、その詳しい説明を割愛する。
【０２１２】
【発明の効果】
第１の効果は、たとえクラスタシステム内のあるプログラムが共有資源のロックを確保したまま暴走しても、クラスタシステム全体のストールに陥ることを防止できることにある。その理由は、資源ロック待ちをタイマ監視により検出し、自動的にホスト間通信とクラスタシステム制御装置とを使ってストールの原因となっているプロセスを検出し、そのプロセスを強制停止できるためである。
【０２１３】
第２の効果は、たとえプロセスを強制停止できず、共有資源のロックを確保したままであっても、クラスタシステム全体のストールに陥ることを防止できることにある。その理由は、プロセスを強制停止できなかった場合は、当該ホストを強制停止するためである。ホストの強制停止により、プログラムの暴走による影響をホスト１台のみに限定することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【図２】図１中のクラスタシステム制御装置が記憶するロックエントリの内容を示す図である。
【図３】第１の実施の形態に係るクラスタシステムにおけるストール防止方式における処理の全体の流れを示すフローチャートである。
【図４】図１中の共有資源排他制御手段の動作を示すフローチャートである。
【図５】図１中のタイマ監視手段の動作を示すフローチャートである。
【図６】図１中の共有資源長時間ロックチェック手段の動作を示すフローチャートである。
【図７】第１の実施の形態に係るクラスタシステムにおけるストール防止方式の第１の状態遷移図である。
【図８】第１の実施の形態に係るクラスタシステムにおけるストール防止方式の第２の状態遷移図である。
【図９】第１の実施の形態に係るクラスタシステムにおけるストール防止方式の第３の状態遷移図である。
【図１０】第１の実施の形態に係るクラスタシステムにおけるストール防止方式の第４の状態遷移図である。
【図１１】第１の実施の形態に係るクラスタシステムにおけるストール防止方式の第５の状態遷移図である。
【図１２】本発明の第２の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【図１３】本発明の第３の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【図１４】本発明の第４の実施の形態に係るクラスタシステムにおけるストール防止方式の構成を示すブロック図である。
【符号の説明】
Ｈ０１，Ｈ０２，Ｈ０ｎ  ホスト
１０１，２０１，ｎ０１  共有資源排他制御手段
１０２，２０２，ｎ０２  タイマ監視手段
１０３，２０３，ｎ０３  共有資源長時間ロックチェック手段
１０４，２０４，ｎ０４  ホスト間通信手段
１０５，２０５，ｎ０５  プロセス強制停止手段
１０６，２０６，ｎ０６  ホスト強制停止手段
３００  クラスタシステム制御装置
４００  ストール防止プログラム
【図１】
2004246439.tif 000003
【図２】
2004246439.tif 000004
【図３】
2004246439.tif 000005
【図４】
2004246439.tif 000006
【図５】
2004246439.tif 000007
【図６】
2004246439.tif 000008
【図７】
2004246439.tif 000009
【図８】
2004246439.tif 000010
【図９】
2004246439.tif 000011
【図１０】
2004246439.tif 000012
【図１１】
2004246439.tif 000013
【図１２】
2004246439.tif 000014
【図１３】
2004246439.tif 000015
【図１４】
2004246439.tif 000016