(57)【特許請求の範囲】
【請求項１】
データを処理する物理計算機と、
前記物理計算機上に仮想的に構成される正仮想計算機と、
前記物理計算機上に仮想的に構成される１以上の副仮想計算機と、
前記正仮想計算機上で動作すると共に、前記正仮想計算機又は前記副仮想計算機からのアクセス要求を基に記憶装置にアクセスする正ソフトウェアと、
前記副仮想計算機上で動作すると共に、ハイパバイザを介して前記正ソフトウェアと通信を行う１以上の副ソフトウェアと、を有し、
前記副ソフトウェアは、
前記正ソフトウェアとの通信時に、その通信時間を監視し、前記正ソフトウェアとの通信に要する通信時間が、前記正ソフトウェアに設定された正タイムアウト監視時間よりも長い副タイムアウト監視時間を超えたことを条件に、前記ハイパバイザで遅延障害が発生したことを検出することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記副ソフトウェアは、
前記正ソフトウェアと通信を行う過程で、前記正ソフトウェアとの通信に要する通信時間が、前記副タイムアウト監視時間を超えた回数を記録し、前記記録した回数が、タイムアウト閾値を超えたことを条件に、エラーログを出力することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記副ソフトウェアは、
前記エラーログを出力したことを条件に、自副ソフトウェアを閉塞するための処理に遷移することを特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記物理計算機を複数台有し、
前記各物理計算機は、前記正仮想計算機と、前記副仮想計算機から構成され、前記各正仮想計算機は、前記正ソフトウェアを有し、前記各副仮想計算機は、前記各副ソフトウェアを有し、
前記各副ソフトウェアのうち前記ハイパバイザで遅延障害が発生したことを検出した副ソフトウェアは、当該副ソフトウェアが動作する副仮想計算機を管理する物理計算機とは異なる他の物理計算機の副仮想計算機上で動作する副ソフトウェアに、エラーログを送信し、
前記エラーログを受信した副ソフトウェアは、前記エラーログを送信した前記副ソフトウェアの処理を継続することを特徴とする計算機システム。
【請求項５】
データを処理する物理計算機と、
前記物理計算機上に仮想的に構成される正仮想計算機と、
前記物理計算機上に仮想的に構成される１以上の副仮想計算機と、
前記正仮想計算機上で動作すると共に、前記正仮想計算機又は前記副仮想計算機からのアクセス要求を基に記憶装置にアクセスする正ソフトウェアと、
前記副仮想計算機上で動作すると共に、ハイパバイザを介して前記正ソフトウェアと通信を行う１以上の副ソフトウェアと、を有する計算機システムにおける障害処理方法であって、
前記副ソフトウェアは、
前記正ソフトウェアとの通信時に、その通信時間を監視するステップと、
前記正ソフトウェアとの通信に要する通信時間が、前記正ソフトウェアに設定された正タイムアウト監視時間よりも長い副タイムアウト監視時間を超えたことを条件に、前記ハイパバイザで遅延障害が発生したことを検出するステップと、を実行することを特徴とする障害処理方法。
【請求項６】
請求項５に記載の障害処理方法であって、
前記副ソフトウェアは、
前記正ソフトウェアと通信を行う過程で、前記正ソフトウェアとの通信に要する通信時間が、前記副タイムアウト監視時間を超えた回数を記録するステップと、
前記記録した回数が、タイムアウト閾値を超えたことを条件に、エラーログを出力するステップと、を実行することを特徴とする障害処理方法。
【請求項７】
請求項６に記載の障害処理方法であって、
前記副ソフトウェアは、
前記エラーログを出力したことを条件に、自副ソフトウェアを閉塞するための処理に遷移するステップを実行することを特徴とする障害処理方法。
【請求項８】
請求項５に記載の障害処理方法であって、
前記物理計算機を複数台有し、
前記各物理計算機は、前記正仮想計算機と、前記副仮想計算機から構成され、前記各正仮想計算機は、前記正ソフトウェアを有し、前記各副仮想計算機は、前記各副ソフトウェアを有し、
前記各副ソフトウェアのうち前記ハイパバイザで遅延障害が発生したことを検出した副ソフトウェアは、当該副ソフトウェアが動作する副仮想計算機を管理する物理計算機とは異なる他の物理計算機の副仮想計算機上で動作する副ソフトウェアに、エラーログを送信するステップを実行し、
前記エラーログを受信した副ソフトウェアは、前記エラーログを送信した前記副ソフトウェアの処理を継続するステップを実行することを特徴とする障害処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理計算機上に構築される仮想計算機を制御するためのソフトウェアであるハイパバイザにおける障害を検知する機能を有する計算機システム及び障害処理方法に関する。
【背景技術】
【０００２】
基幹システムに利用される計算機システムには、高い可用性が要求される。このため、物理計算機上に構築される複数の仮想計算機を有する仮想計算機システムにおいて、システムを構成するハードウェアで発生した障害が発生した場合、その障害をハイパバイザで検知し、ハイパバイザによって障害部位を仮想計算機システムから切り離し、仮想計算機システムの可用性を向上させる手法が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−３９９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前記従来技術では、ハードウェアで発生した障害をハイパバイザで検知することはできるが、ハイパバイザ自身で発生する障害を検知することが困難である。特に、ハイパバイザの動作速度が慢性的に低下する障害が発生した場合、その障害をハイパバイザ自身で検知することが困難であり、仮想計算機システムの可用性が低下する。
【０００５】
この際、解決方法として、例えば、仮想計算機システムの外部で動作する監視ソフトウェアと、仮想計算機上で動作する監視ソフトウェアとが互いに定期的に通信し、この通信内容を基に、仮想計算機システムの動作速度が低下する障害を検知する方法が、挙げられる。
【０００６】
しかし、上記解決方法では、障害発生から障害検知までに時間を要し、障害発生時間と障害検知時間との間には、最大数１０秒間の開きが生じる。この場合、監視ソフトウェア間の通信間隔を短くすることで、より迅速な障害検知が可能となるが、仮想計算機システム自体の負荷が高くなる。結果として、上記解決方法では、計算機システムの可用性が低下する。
【０００７】
本発明の目的は、ハイパバイザでの障害を確実に検知し、計算機システムの可用性を向上させることにある。
【課題を解決するための手段】
【０００８】
前記目的を達成するために、本発明は、データを処理する物理計算機と、前記物理計算機上に仮想的に構成される正仮想計算機と、前記物理計算機上に仮想的に構成される１以上の副仮想計算機と、前記正仮想計算機上で動作すると共に、前記正仮想計算機又は前記副仮想計算機からのアクセス要求を基に記憶装置にアクセスする正ソフトウェアと、前記副仮想計算機上で動作すると共に、ハイパバイザを介して前記正ソフトウェアと通信を行う１以上の副ソフトウェアと、を有し、前記副ソフトウェアは、前記正ソフトウェアとの通信時に、その通信時間を監視し、前記正ソフトウェアとの通信に要する通信時間が、前記正ソフトウェアに設定された正タイムアウト監視時間よりも長い副タイムアウト監視時間を超えたことを条件に、前記ハイパバイザで遅延障害が発生したことを検出することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ハイパバイザでの障害を確実に検知し、計算機システムの可用性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】計算機システムの全体構成図である。
【図２】仮想計算機の詳細を説明するための構成図である。
【図３】管理テーブルの構成図である。
【図４】管理テーブルの構成図である。
【図５】管理テーブルの構成図である。
【図６】エラーログの構成図である。
【図７】アプリケーションからデータをリード/ライトする際の処理を説明するためのフローチャートである。
【図８】副デバイスドライバのデータ転送処理を説明するためのフローチャートである。
【図９】正デバイスドライバのデータ転送処理を説明するためのフローチャートである。
【図１０】クラスタソフトウェアの処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
（実施例）
以下、本発明の一実施例を図面に基づいて説明する。
【００１２】
図１は、本発明に係る計算機システムの全体構成図である。図１において、計算機システムは、＃１の物理計算機１０と、＃２の物理計算機１０を有し、各物理計算機１０が、LAN（Local  Area  Network）４０を介して互いに接続されるとともに、SAN（Storage  Area  Network）４１を介して、複数のストレージ装置４２に接続される。各ストレージ装置４２は、複数の記憶デバイスを有する記憶装置として構成される。なお、各物理計算機１０は、同一の構成であるため、以下、＃１の物理計算機１０の構成を主に説明する。
【００１３】
＃１の物理計算機１０は、CPU（Central  Processing  Unit）、記憶装置などのコンピュータ資源を有する計算機であって、物理計算機１０上に仮想的に構成される複数の仮想計算機２０、３０と、各仮想計算機の実行を制御するハイパバイザ１４と、FC-HBA（Fibre  Channel−Host  Bus  Adapter）１２と、複数のNIC（Network  Interface  Card）から構成される。
【００１４】
各仮想計算機２０、３０と、ハイパバイザ１４は、図２に示すように、主記憶装置１１に搭載され、FC-HBA１２は、SAN４１を介して各ストレージ装置４２に接続され、各NIC１３は、それぞれLAN４０に接続される。
【００１５】
仮想計算機２０は、各仮想計算機３０からのアクセス要求を処理するI/O（Input/Output）サーバであって、正仮想計算機として機能する。この仮想計算機２０には、正デバイスドライバ２１が動作する。正デバイスドライバ２１は、FC-HBA１２を制御し、FC-HBA１２を介して、各ストレージ装置４２をリードアクセス又はライトアクセスする正ソフトウェアとして機能する。また、正デバイスドライバ２１は、ストレージ装置４２に対するアクセスを実行する際には、管理テーブル２２を参照し、データ転送要求のタイムアウト監視を実行する。
【００１６】
各仮想計算機３０は、仮想計算機２０に対してアクセス要求を発行するI/Oクライアントであって、副仮想計算機として機能する。各仮想計算機３０上では、副デバイスドライバ３１と、アプリケーション３２と、クラスタソフトウェア３３が、それぞれ副ソフトウェアとして動作する。
【００１７】
各副デバイスドライバ３１は、ハイパバイザ１４を介して、正デバイスドライバ２１と通信し、正デバイスドライバ２１に処理を依頼することで、例えば、各ストレージ装置４２にリードアクセスまたはライトアクセスする。また、副デバイスドライバ３１は、正ドライバ２１とハイパバイザ１４を介して通信を行う際に、管理テーブル３４、３５を参照し、データ転送要求のタイムアウト監視を実行し、エラーが発生した際には、リソースおよびエラーの詳細をエラーログ３６に記録する。
【００１８】
各仮想計算機３０のアプリケーション３２は、各副デバイスドライバ３１に対するアクセス要求として、例えば、データのリード要求またはライト要求を発行する。各クラスタソフトウェア３３は、仮想計算機３０の冗長化を行うための処理を実行する。例えば、各クラスタソフトウェア３３は、複数の仮想計算機３０のうちいずれかの仮想計算機上で障害が発生した場合、各クラスタソフトウェア間で互いに通信を行い、フェルオーバ先として、例えば、＃２の物理計算機１０を決定し、その後、系の切り替え指示５０を、NIC１３とLAN４０を介して＃２の物理計算機１０に送信する処理を実施する。
【００１９】
なお、本実施例では、各ストレージ装置４２にアクセスするためのデバイスとして、FC-HBA１２を用いているが、各ストレージ装置４２にアクセス可能なデバイスであれば、任意のインタフェースおよびプロトコルを用いたデバイスが利用可能である。
【００２０】
また、各物理計算機１０上で、２つの仮想計算機３０が動作しているが、仮想計算機３０としては、１つまたは３つ以上の仮想計算機をI/Oクライアントとして動作させることもできる。
【００２１】
また、各物理計算機１０は、LAN４０とSAN４１で互いに接続されているため、全ての物理計算機１０から同一のストレージ装置４２へアクセスすることが可能である。また、同一のLAN４０で各仮想計算機３０が互いに接続されているので、クラスタソフトウェア３３同士で通信を行うことが可能であるとともに、各物理計算機１０をクラスタ構成にすることで、冗長化が可能となる。なお、クラスタソフトウェア３３は、仮想計算機２０上に配置することも可能である。
【００２２】
次に、図３に管理テーブルの構成図を示す。図３において、管理テーブル２２は、正デバイスドライバ２１が、データ転送要求のタイムアウト監視時間を管理するためのテーブルであって、番号フィールド２２Aと、項目フィールド２２Bと、値フィールド２２Cから構成される。
【００２３】
番号は、正デバイスドライバ２１の監視項目を特定する番号である。項目は、正デバイスドライバ２１が監視する項目に関する情報である。この項目フィールド２２Bのエントリには、例えば、データ転送要求のタイムアウト監視を行う場合には、「タイムアウト監視時間」が、正タイムアウト監視時間として格納される。値は、タイムアウト監視時間として設定された固定値である。この値フィールド２２Cのエントリには、例えば、タイムアウト監視時間の固定値として、「１４」が格納される。
【００２４】
次に、図４に、管理テーブル３４の構成図を示す。図４において、管理テーブル３４は、副デバイスドライバ３１が、データ転送要求のタイムアウト監視時間を管理するためのテーブルであって、番号フィールド３４Aと、項目フィールド３４Bと、値フィールド３４Cから構成される。
【００２５】
番号は、副デバイスドライバ３１の監視項目を特定する番号である。項目は、副デバイスドライバ３１の監視項目を特定する情報である。副デバイスドライバ３１が、データ転送要求のタイムアウト監視を行う場合には、この項目フィールド３４Bのエントリには、「タイムアウト監視時間」が、副タイムアウト監視時間として格納される。また、データ転送要求のタイムアウト閾値（タイムアウト回数の閾値）が設定される場合、項目フィールド３４Bのエントリには、「タイムアウト閾値」が格納される。値フィールド３４Cのエントリには、タイムアウト監視時間を示す固定値またはタイムアウト閾値を示す固定値が格納される。
【００２６】
この際、副デバイスドライバ３１のタイムアウト監視時間＝１５であって、正デバイスドライバ２１に設定されたタイムアウト監視時間＝１４よりも長い時間に設定されている。これは、副デバイスドライバ３１がデータ転送要求した場合のデータ転送時間が、正デバイスドライバ２１がデータ転送要求を発行した場合のデータ転送時間よりも、長くかかるためである。
【００２７】
次に、図５に、管理テーブル３５の構成図を示す。図５において、管理テーブル３５は、副デバイスドライバ３１が、タイムアウト回数を管理するためのテーブルであって、番号フィールド３５Aと、項目フィールド３５Bと、値フィールド３５Cから構成される。
【００２８】
番号は、副デバイスドライバ３１が監視する項目を特定する番号である。項目は、副デバイスドライバ３１が監視する項目を特定する情報であり、項目フィールド３５Bのエントリには、例えば、副デバイスドライバ３１がタイムアウトの回数を監視する場合には、「タイムアウト回数」の情報が格納される。値は、副デバイスドライバ３１がタイムアウト回数をカウントした値であって、値フィールド３５Cには副デバイスドライバ３１がタイムアウトを検出する回数毎に更新される値が格納される。
【００２９】
次に、図６に、エラーログ３６の構成図を示す。図６において、エラーログ３６は、副デバイスドライバ３１が、仮想計算機２０、３０に関連するエラーを管理するためのテーブルであって、IDフィールド３６Aと、タイムスタントフィールド３６Bと、リソース名フィールド３６Cと、詳細フィールド３６Dから構成される。
【００３０】
ID（Identifier）は、エラーログを一意に特定するための識別子である。IDフィールド３６Aには、エラーログ４６を特定する識別子として、例えば、「４BE５３A５２」が格納される。
【００３１】
タイムスタンプは、エラーログが発生した時刻を示す情報である。タイムスタンプフィールド３６Bのエントリには、エラーログ３６が発生した時刻に関する情報として、例えば、「０９０３１５００１１」が格納される。
【００３２】
リソース名は、エラーログが発生したリソースを特定する情報である。リソース名フィールド３６Cのエントリには、例えば、エラーログが発生したリソースが、副デバイスドライバ３１である場合には、「副デバイスドライバ」の情報が格納される。
【００３３】
詳細は、エラーが発生した場合、エラーの内容を特定する情報である。詳細フィールド３６Dのエントリには、エラーの詳細として、例えば、「デバイスの閉塞」の情報が格納される。
【００３４】
次に、アプリケーションからデータをリードまたはライトする際の処理を図７のフローチャートに従って説明する。
【００３５】
まず、仮想計算機３０のアプリケーション３２は、データのリード/ライト要求を副デバイスドライバ３１に発行する（S７０１）。副デバイスドライバ３１は、リード/ライト要求を基に、データ転送要求をハイパバイザ１４に対して発行する（S７０２）。この際、副デバイスドライバ３１は、タイムアウト監視を開始する（S７０３）。
【００３６】
ハイパバイザ１４は、データ転送要求を受信したことを条件に、メッセージを副デバイスドライバ３１から転送する（S７０４）。正デバイスドライバ２１は、ハイパバイザ１４からメッセージを受信したことを条件に、ストレージ装置４２に対して、データ転送要求を発行し（S７０５）、タイムアウト監視を開始する（S７０６）。
【００３７】
データ転送要求を受信したストレージ装置４２は、正デバイスドライバ２１に対するデータ転送を実行し（S７０７）、データ転送にエラーが発生したか否かを判定する（S７０８）。ストレージ装置４２は、ステップS７０８で肯定の判定結果を得た場合には、データ転送にエラーが生じたことを示すエラー応答を実行し（S７０９）、ステップS７０８で否定の判定結果を得た場合には、データ転送が完了した旨の応答を実行する（S７１０）。
【００３８】
正デバイスドライバ２１は、ストレージ装置４２からエラー応答または完了応答を受信した場合には、タイムアウト監視を停止し（S７１１）、データ転送結果をハイパバイザ１４に応答する（S７１２）。ハイパバイザ１４は、正デバイスドライバ２１からの応答をメッセージとして副デバイスドライバ３１に転送する（S７１３）。
【００３９】
一方、正デバイスドライバ２１は、タイムアウト監視をする過程で、例えば、データ転送に要する時間が、タイムアウト監視時間＝１４を超えた場合、タイムアウトを検出し（S７１４）、エラーをハイパバイザ１４に応答する（S７１５）。この場合、ハイパバイザ１４は、正デバイスドライバ２１でエラーが発生した旨のメッセージを副デバイスドライバ３１に転送する（S７１６）。
【００４０】
副デバイスドライバ３１は、ハイパバイザ１４からメッセージを受信した場合には、タイムアウト監視を停止し（S７１６）、データ転送に成功したか否かを判定する（S７１８）。
【００４１】
副デバイスドライバ３１は、ステップS７１８で否定の判定結果を得た場合には、エラーハンドリングとして、リトライするための処理を実行し（S７１９）、ステップS７１８で肯定の判定結果を得た場合には、データ転送が完了した旨の応答をアプリケーション３２に出力する（S７２０）。
【００４２】
一方、副デバイスドライバ３１は、タイムアウト監視を実行している過程で、例えば、データ転送に要する時間が、タイムアウト監視時間＝１５を超えた場合、タイムアウトを検出し（S７２１）、タイムアウト回数を＋１とし（S７２２）、タイムアウト回数がタイムアウト閾値を超過したか否かを判定する（S７２３）。
【００４３】
副デバイスドライバ３１は、ステップS７２３で否定の判定結果を得た場合には、エラーハンドリング処理として、リトライを行うための処理を実行し(S７２４)、S７２３で肯定の判定結果を得た場合、即ち、タイムアウト回数が、タイムアウト閾値（＝１０）を超過した場合には、エラーログを出力する（S７２５）。
【００４４】
次に、副デバイスドライバ３１は、受付済みの要求に対してエラー応答し（S７２６）、副デバイスドライバ３１自身をデバイス閉塞状態に遷移させる（S７２７）。
【００４５】
アプリケーション３２は、副デバイスドライバ３１からデータ転送完了の応答を受信した場合、または副デバイスドライバ３１から、受付済みの要求に対するエラー応答を受信した場合、データのリード/ライトの結果を受信する（S７２８）。
【００４６】
一方、エラーログを受信したクラスタソフトウェア３３は、エラーログ３６の中から、デバイス閉塞状態に遷移した旨の情報を検出した場合（S７２９）、系の切り替え処理を実行する（S７３０）。
【００４７】
次に、副デバイスドライバにおけるデータ転送処理を図８のフローチャートに従って説明する。
【００４８】
まず、副デバイスドライバ３１は、ハイパバイザ１４にデータ転送要求を発行し（S８０１）、データ転送要求のタイムアウト監視を開始し（S８０２）、タイムアウトが検出されたか否かを判定する（S８０３）。
【００４９】
副デバイスドライバ３１は、ステップS８０３で否定の判定結果を得た場合には、データ転送の応答を受信したか否かを判定し（S８０４）、ステップS８０４で否定の判定結果を得た場合には、ステップS８０３の処理に戻り、ステップS８０３〜ステップS８０４の処理を繰り返す。ステップS８０４で肯定の判定結果を得た場合には、副デバイスドライバ３１は、タイムアウト監視を停止する（S８０５）。
【００５０】
次に、副デバイスドライバ３１は、データ転送に成功したか否かを判定し（S８０６）、ステップS８０６で否定の判定結果を得た場合には、エラーハンドリングとして、リトライ処理を実行し（S８０７）、その後、このルーチンでの処理を終了し、ステップS８０６で肯定の判定結果を得た場合には、データ転送が完了した旨の応答を実行し（S８０８）、その後、このルーチンでの処理を終了する。
【００５１】
一方、ステップS８０３で肯定の判定結果を得た場合、副デバイスドライバ３１は、タイムアウト回数を＋１として、テーブル３５の値３５Cを更新し（S８０９）、更新したタイムアウト回数が、タイムアウト閾値を超過したか否かを判定する（S８１０）。
【００５２】
副デバイスドライバ３１は、ステップS８１０で否定の判定結果を得た場合には、ステップS８０７の処理に移行し、ステップS８１０で肯定の判定結果を得た場合には、エラーログ３６を出力し（S８１１）、受付済みの要求に対して、全てエラー応答し（S８１２）、副デバイスドライバ３１自身をデバイス閉塞状態に遷移させ（S８１３）、その後、このルーチンでの処理を終了する。
【００５３】
この際、副デバイスドライバ３１は、正デバイスドライバ２１との通信時に、その通信時間を監視し、正デバイスドライバ２１との通信に要する通信時間が、正デバイスドライバ２１に設定されたタイムアウト監視時間よりも長いタイムアウト監視時間を超えたことを条件に、ハイパバイザ１４で遅延障害が発生したことを検出することになる。
【００５４】
次に、正デバイスドライバ２１のデータ転送処理を図９のフローチャートに従って説明する。
【００５５】
正デバイスドライバ２１は、ストレージ装置４２にデータ転送要求を発行し（S９０１）、データ転送要求のタイムアウト監視を開始し（S９０２）、タイムアウトを検出したか否かを判定する（S９０３）。
【００５６】
正デバイスドライバ２１は、ステップS９０３で肯定の判定結果を得た場合には、データ転送応答を受信したか否かを判定し(S９０４)、ステップS９０４で否定の判定結果を得た場合には、ステップS９０３の処理に戻り、ステップS９０３〜ステップS９０４の処理を繰り返す。ステップS９０４で肯定の判定結果を得た場合には、正デバイスドライバ２１は、タイムアウト監視を停止する（S９０５）。
【００５７】
この後、正デバイスドライバ２１は、データ転送結果をストレージ装置４２に応答し（S９０６）、その後、このルーチンでの処理を終了する。
【００５８】
一方、ステップS９０３で否定の判定結果を得た場合、正デバイスドライバ２１は、ストレージ装置４２にエラーを応答し（S９０７）、その後、このルーチンでの処理を終了する。
【００５９】
次に、クラスタソフトウェアの処理を図１０のフローチャートに従って説明する。
【００６０】
クラスタソフトウェア３３は、副デバイスドライバ３１からエラーログを取得し（S１００１）、取得したエラーログの内容からデバイスが閉塞されたか否かを検出する（S１００２）。
【００６１】
クラスタソフトウェア３３は、ステップS１００２で否定の判定結果を得た場合には、ステップS１００１の処理に戻り、ステップS１００１〜ステップS１００２の処理を繰り返す。ステップS１００２で肯定の判定結果を得た場合には、クラスタソフトウェア３３は、系切り替え処理を実行し（S１００３）、その後、このルーチンでの処理を終了する。
【００６２】
本実施例において、副デバイスドライバ３１で用いるタイムアウト監視時間は、正デバイスドライバ２１で用いるタイムアウト監視時間よりも長く設定されているので、正デバイスドライバ２１からタイムアウトのエラーが応答されず、副デバイスドライバ３１でタイムアウトを検出した場合、正デバイスドライバ２１と副デバイスドライバ３１との間、即ち、ハイパバイザ１４に遅延要因があると判断することができる。
【００６３】
従って、副デバイスドライバ３１でタイムアウトを検出した場合、ハイパバイザ１４で遅延障害が発生した判断することができ、結果として、ハイパバイザ１４での障害を確実に検知することができる。ここで、遅延障害とは、単純に処理が遅延している状況と、ハイパバイザ１４が転送するメッセージが欠落し、見かけ上遅延している状況とを含む。
【００６４】
本実施例によれば、ハイパバイザ１４での障害を確実に検知し、計算機システムの可用性を向上させることができる。
【００６５】
また、本実施例によれば、仮想計算機２０、３０の負荷を最小限に留めた上で、ハイパバイザ１４での障害を確実に検知することができる。さらに、ハイパバイザ１４での障害を検知したことを契機として、系の切り替えを実施することで、障害の生じた仮想計算機における処理を、他の物理計算機１０の仮想計算機で継続することができる。
【００６６】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid  State  Drive）等の記録装置、または、ＩＣ（Integrated  Circuit）カード、ＳＤ（Secure  Digital）メモリカード、ＤＶＤ（Digital  Versatile  Disc）等の記録媒体に記録して置くことができる。
【符号の説明】
【００６７】
１０  物理計算機、１１  主記憶装置、１２  FC-HBA、１３  NIC、１４  ハイパバイザ、２０  仮想計算機、２１  正デバイスドライバ、３０  仮想計算機、３１  副デバイスドライバ、３２  アプリケーション、３３  クラスタソフトウェア、４２  ストレージ装置。
【図２】
0005719316.tif 000002
【図３】
0005719316.tif 000003
【図４】
0005719316.tif 000004
【図５】
0005719316.tif 000005
【図６】
0005719316.tif 000006
【図７】
0005719316.tif 000007
【図８】
0005719316.tif 000008
【図９】
0005719316.tif 000009
【図１０】
0005719316.tif 000010
【図１】
0005719316.tif 000011