(57)【要約】【課題】計算機のハードウェアの診断を目的とするハードウェアの操作が、サービス用の仮想計算機からのハードウェアの操作に与える影響を軽減した障害診断装置を得る。【解決手段】計算機で仮想計算機が動作するための仮想環境を提供する仮想計算機モニタ１１０と、計算機において動作するサービス用の運用仮想マシン１２０と、計算機のハードウェア１００を診断する診断仮想マシン１３０と、計算機ハードウェア１００の操作を要求する操作要求を運用仮想マシン１２０から受信してその操作要求で要求された操作を実施し、診断仮想マシン１３０から操作要求を受信したときは、その操作要求で指示された操作対象の計算機ハードウェア１００を予め定められた時間以内に操作していたか否かを判断し、操作していた場合はその操作要求で要求された操作の実施を抑制し、操作していなかった場合はその要求された操作を実施するハードウェア操作代行部１１１とを備えた。【選択図】          図１
2014203181.tif 000002
【特許請求の範囲】
【請求項１】
計算機と、
前記計算機において動作するサービス用の仮想計算機と、
前記計算機で前記仮想計算機が動作するための仮想環境を提供する仮想計算機モニタと、
前記計算機のハードウェアを診断するハードウェア診断部と、
前記ハードウェアの操作を要求する操作要求を前記サービス用の仮想計算機から受信してその操作要求で要求された操作を実施し、前記ハードウェア診断部が前記ハードウェアの診断のために送信した前記操作要求を受信したときは、その操作要求で指示された操作対象の前記ハードウェアを予め定められた時間以内に操作していたか否かを判断し、前記予め定められた時間以内に操作していた場合はその操作要求で要求された操作の実施を抑制し、前記予め定められた時間以内に操作していなかった場合はその要求された操作を実施するハードウェア操作代行部と、
を備えることを特徴とする障害診断装置。
【請求項２】
前記ハードウェア診断部は前記計算機において動作する診断用の仮想計算機であり、
前記ハードウェア操作代行部は前記診断用の仮想計算機から前記操作要求を受けたとき、その操作要求で指示された操作対象の前記ハードウェアを前記予め定められた時間以内に操作していなかった場合は、その操作要求で要求された操作を実施して、操作を実施したことを通知する操作応答を前記診断用の仮想計算機に送信し、前記予め定められた時間以内に操作していた場合は、その操作を行わずにその操作要求に対する前記操作応答を前記診断用の仮想計算機に送信することを特徴とする請求項１に記載の障害診断装置。
【請求項３】
前記ハードウェア操作代行部は前記仮想計算機モニタの一部であり、
前記仮想計算機モニタは前記計算機の前記ハードウェアを操作した操作時刻とその操作に要した操作時間を記録する操作履歴テーブルを備え、
前記ハードウェア操作代行部は、前記ハードウェアを操作したときに前記操作履歴テーブルにそのハードウェアの操作履歴として前記操作時刻と前記操作時間を記録し、前記ハードウェア診断部から受けた前記操作要求で指示された操作対象の前記ハードウェアについて前記操作履歴テーブルに前記予め定められた時間以内に操作した記録がある場合は、その操作要求で要求された操作を行わずに、前記操作履歴テーブルに記録されたそのハードウェアの前記操作時間が経過するのを待って、その操作要求に対する前記操作応答を前記ハードウェア診断部に送信することを特徴とする請求項１もしくは請求項２に記載の障害診断装置。
【請求項４】
複数の仮想計算機が動作する計算機に、
前記計算機のハードウェアの操作を要求する操作要求を、前記計算機において動作する仮想計算機から受信するステップと、
受信した前記操作要求の送信元が前記計算機において動作するサービス用の仮想計算機であるときその操作要求で要求された操作を実施し、受信した前記操作要求の送信元が前記計算機において動作する前記ハードウェアを診断するための診断用の仮想計算機であるとき、その操作要求により指示された操作対象の前記ハードウェアを、予め定められた時間以内に操作していた場合は要求された操作の実施を抑制し、前記予め定められた時間以内に操作をしていなかった場合は前記操作を実施する要求処理ステップと、
を実行させるプログラム。
【請求項５】
受信した前記操作要求で要求された前記計算機の前記ハードウェアの操作を実施するとき、その操作に要した操作時間を測定するステップと、
受信した前記操作要求で要求された前記ハードウェアの操作を実行したとき、その操作したハードウェアの操作履歴として、その操作を実行した時刻である操作時刻と前記操作時間とを前記計算機の記憶媒体に記憶した操作履歴テーブルに記録するステップと、を備え、
前記要求処理ステップは、受信した前記操作要求の送信元が前記計算機において動作するサービス用の仮想計算機であるとき、その操作要求で要求された操作を実行する第１のステップと、
受信した前記操作要求の送信元が前記診断用の仮想計算機であるとき、その操作要求で指示された操作対象の前記ハードウェアについて前記予め定められた時間以内の操作の記録が前記操作履歴テーブルにある場合は要求された操作の実施を抑制し、前記予め定められた時間以内の操作の履歴がない場合は前記操作を実施する第２のステップと、を備えたことを特徴とする請求項４に記載のプログラム。
【請求項６】
受信した前記操作要求で要求された操作を実施したときには、その要求された操作を実施したことを通知する操作応答を、その操作要求の送信元のサービス用もしくは診断用の仮想計算機に送信するステップと、
受信した前記操作要求の送信元が前記診断用の仮想計算機であり、前記操作履歴テーブルにその操作要求で指示された操作対象の前記ハードウェアについて前記予め定められた時間以内の操作の履歴があって、その操作要求で要求された操作の実施を抑制した場合は、前記操作要求を受信してから前記操作履歴テーブルに記録されたそのハードウェアの操作時間が経過した後に前記診断用の仮想計算機に前記操作応答を送信するステップと、
を備えたことを特徴とする請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、計算機の障害を検出する障害診断技術に関する。
【背景技術】
【０００２】
物理的には１つの計算機において、仮想化機構を用いてサービス用と監視用の複数の仮想の計算機（仮想計算機あるいはＶＭ）を動作させ、監視用の仮想計算機からサービス用の仮想計算機を監視する技術が提案されている。
【０００３】
特許文献１には計算機に本番システムの論理計算機と監視システムの論理計算機を作成し、監視システムの論理計算機から本番システムの論理計算機を監視する論理計算機システムが開示されている。この論理計算機システムでは、本番システムの論理計算機で実行されるオペレーティングシステム（ＯＳとも称す）やアプリケーションが取得したログを、論理計算機エージェントが監視システムの論理計算機に送信する。監視システムの論理計算機で実行される論理計算機マネージャはこのログを受信して、本番システムの論理計算機を監視する。
【０００４】
特許文献２には同一の計算機システム上で、第１のＯＳと第２のＯＳを実行させ、第１のＯＳ上でサービスアプリケーションを実行し、また、第２のＯＳ上で解析予測アプリケーションを実行して、第１のＯＳが保持する自ＯＳの状態情報と動作記録情報を第２のＯＳ上で動作する解析予測アプリケーションが解析して、障害の兆候を検出する計算機システムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３０３６３号公報（図１）
【特許文献２】特開２００５−１１５７５１号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のような従来の監視用の仮想計算機によって計算機が備えるハードウェアの障害を検出するとき、監視用の仮想計算機から診断のためのハードウェアの操作を実行すると、サービス用のアプリケーションプログラムが実行される仮想計算機からのハードウェアの操作と競合して、サービス用のアプリケーションプログラムの実行を阻害してしまうという問題があった。
【０００７】
この発明は上記のような問題点を解決するためになされたものであり、計算機のハードウェアの診断を目的とするハードウェアの操作が、サービス用のアプリケーションプログラムが実行される仮想計算機からのハードウェアの操作に対して与える影響を軽減することを目的とする。
【課題を解決するための手段】
【０００８】
この発明の障害診断装置は、計算機と、計算機において動作するサービス用の仮想計算機と、計算機で仮想計算機が動作するための仮想環境を提供する仮想計算機モニタと、計算機のハードウェアを診断するハードウェア診断部と、ハードウェアの操作を要求する操作要求をサービス用の仮想計算機から受信してその操作要求で要求された操作を実施し、ハードウェア診断部がハードウェアの診断のために送信した操作要求を受信したとき、その操作要求で指示された操作対象のハードウェアを予め定められた時間以内に操作していたか否かを判断し、予め定められた時間以内に操作していた場合はその操作要求で要求された操作の実施を抑制し、予め定められた時間以内に操作していなかった場合はその要求された操作を実施するハードウェア操作代行部と、を備えるようにしたものである。
【０００９】
この発明のプログラムは、複数の仮想計算機が動作する計算機に、計算機のハードウェアの操作を要求する操作要求を、計算機において動作する仮想計算機から受信するステップと、受信した操作要求の送信元が計算機において動作するサービス用の仮想計算機であるときその操作要求で要求された操作を実施し、受信した操作要求の送信元が計算機において動作するハードウェアを診断するための診断用の仮想計算機であるとき、その操作要求により指示された操作対象のハードウェアを、予め定められた時間以内に操作していた場合は要求された操作の実施を抑制し、予め定められた時間以内に操作をしていなかった場合は要求された操作を実施する要求処理ステップと、を実行させるようにしたものである。
【発明の効果】
【００１０】
上述のようにこの発明によれば、監視用の仮想計算機による計算機のハードウェア障害検出のためのハードウェアの操作が、サービス用の仮想計算機によるハードウェアの操作に与える影響を軽減した障害診断装置を得ることができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態１の障害診断装置の構成を示すブロック図である。
【図２】この発明の実施の形態１の仮想マシンモニタの操作履歴テーブルのフォーマットである。
【図３】この発明の実施の形態１の定期診断プログラムの処理フローである。
【図４】この発明の実施の形態１の仮想マシンモニタのＨＷ操作代行部の処理フローである。
【発明を実施するための形態】
【００１２】
以下、この発明の実施の形態を、図面を参照して説明する。なお、以下で参照する図面において同一もしくは相当する部分には同一の符号を付している。
実施の形態１．
図１はこの発明の実施の形態１に係る障害診断装置の構成を示すブロック図である。図１において、計算機ハードウェア（以降、ＰＨＷとも称す）１００は現実の計算機のハードウェアである。ＰＨＷ１００は、マイクロプロセッサ１０１、メモリ１０２に加え、例えばディスク装置（ＨＤＤとも称す）１０３、通信インタフェース（ＮＩＣとも称す）１０４などの複数のハードウェアを備えている。また、ＲＴＣ（Ｒｅａl  Ｔｉｍｅ  Ｃｏｕｎｔｅｒ）１０５は現在時刻をカウントするカウンタである。マイクロプロセッサ１０１はカウンタ１０６を備えている。なお、図１は構成例として示すものであり、この発明はＰＨＷ１００が備えるＨＤＤ１０３、ＮＩＣ１０４等のハードウェアの種類および個数を限定するものではない。
【００１３】
一般的に仮想計算機システムは、例えばＸｅｎ（登録商標）などのような仮想計算機モニタ（以降、仮想マシンモニタと称す）と呼ばれるプログラムを用いて構築される。仮想計算機モニタが提供する仮想環境は、物理的には１個の計算機においてで複数の仮想の計算機（仮想計算機もしくは仮想マシンと称す）が動作することを可能にする。図３に示す仮想マシンモニタ（以降、ＶＭＭとも称す）１１０はこのような仮想環境を提供するプログラムであり、ＰＨＷ１００が備えるマイクロプロセッサ１０１が実行するものである。なお、ＶＭＭ１１０はハイパーバイザ型と呼ばれる計算機ハードウェア上で直接実行されるものであっても良いし、ホスト型と呼ばれるオペレーティングシステム上で実行されるものであっても良い。ここでは、ハイパーバイザ型を例として説明する。
【００１４】
ＶＭＭ１１０は、ＰＨＷ１００が備えるＨＤＤ１０３等の各ハードウェアを実際に操作するハードウェア操作代行部（ＨＷ操作代行部）１１１と、ＰＨＷ１００の各ハードウェアに対する操作の履歴を記録する操作履歴テーブル１１２を備えている。操作履歴テーブル１１２は記憶媒体であるメモリ１０２を用いて記憶する。ＨＷ操作代行部１１１はＰＨＷ１００が備える各ハードウェアを操作するとき、操作対象のハードウェアの操作コマンドを用いて操作を行う。例えば、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格の装置であれば、ＡＴＡコマンドを用いて操作を行う。
【００１５】
運用仮想マシン（以降、仮想マシンをＶＭとも称す）１２０と診断仮想マシン１３０はＶＭＭ１１０が提供する仮想環境上で動作する仮想の計算機である。ここで、運用ＶＭは本実施の形態におけるサービス用の仮想計算機である。診断ＶＭ１３０は本実施の形態における診断用の仮想計算機（ハードウェア診断部）である。運用ＶＭ１２０では、アプリケーションプログラム１２３が動作する。アプリケーションプログラム１２３は、例えばファイルサーバ等のサーバ機能や、あるいは会計システムといったエンタープライズアプリケーションなどの処理を提供するプログラムである。運用ＶＭ１２０において、アプリケーションプログラム１２３はオペレーティングシステムであるＯＳ１２２上で実行される。
【００１６】
ＯＳ１２２、アプリケーションプログラム１２３は現実の計算機において実行されるのと同様の動作をする。つまり、これらのプログラムは、運用ＶＭ１２０が備えるプロセッサが実行しているものとして動作する。しかし実際には、運用ＶＭ１２０が備えるプロセッサは存在せず、ＰＨＷ１００が備えるマイクロプロセッサ１０１がこれらのプログラムを実行する。これは診断ＶＭ１３０においても同様である。
【００１７】
仮想ハードウェア（以降、ＶＨＷとも称す）１２１はＯＳ１２２が実行する上述のＡＴＡコマンドなどのハードウェア操作コマンドを受ける仮想的なハードウェアである。ＶＨＷ１２１はＶＭＭ１１０がＰＨＷ１００に相当するハードウェアをソフトウェアで模擬したものである。このため、図３でＶＨＷ１２１は運用ＶＭ１２０とＶＭＭ１１０の両方に属するように示している。
【００１８】
ＶＨＷ１２１は、ＯＳ１２２が出す運用ＶＭ１２０におけるハードウェアの操作コマンドを、ＰＨＷ１００に対するハードウェアの操作コマンドに変換してＨＷ操作代行部１１１に通知する。ＨＷ操作代行部１１１はこの通知を受けて、ＰＨＷ１００に対する操作コマンドを実行する。
【００１９】
診断ＶＭ１３０も運用ＶＭ１２０と同様の構成である。ＶＨＷ１３１は、ＶＨＷ１２１と同様の仮想的なハードウェアである。ＯＳ１３２はＯＳ１２２と同様の診断ＶＭ１３０のオペレーティングシステムであり、ＶＨＷ１３１上で実行される。定期診断プログラム１４０はＯＳ１３２上で実行される、ＰＨＷ１００の異常を検知するための診断プログラムである。
【００２０】
なお、ここでは説明を簡略にするために運用ＶＭ１２０が１個の場合を示しているが、この発明は運用ＶＭ１２０の数を１個に限定するものではなく、複数であって良い。
【００２１】
図２はＶＭＭ１１０の操作履歴テーブル１１２のフォーマットである。このテーブルにはＰＨＷ１００が備える個々のハードウェアを識別するハードウェア情報と、そのハードウェアに対する直近の操作を実行した時刻である最終操作時刻（操作時刻）と、その直近の操作時のハードウェアの操作に要した操作時間を記録する。
【００２２】
計算機システムにおける時刻の管理は、起動時にプロセッサ外部にある時刻管理カウンタから時刻を取得し、以降はプロセッサに内蔵のカウンタを用いて時間経過を測ることで行う方法が一般的に行われており、この実施の形態の障害診断装置においても同様にＲＴＣ１０５とマイクロプロセッサ１０１を用いて行えばよい。
【００２３】
なお、最終操作時刻は例えばマイクロプロセッサ１０１が備えるカウンタ１０６のカウンタ値の形式で記憶し、また、操作時間も同じカウンタ１０６のカウンタ値の増分で記憶するなどしても良い。
【００２４】
次に、この発明の実施の形態１の障害診断装置の動作を説明する。最初に診断ＶＭ１３０が実行する定期診断プログラム１４０による診断処理について説明する。上述のように仮想マシンで実行されるプログラムは、実際にはマイクロプロセッサ１０１が実行するものである。診断ＶＭ１３０で実行される定期診断プログラム１４０等のプログラムも、実際にはマイクロプロセッサ１０１が実行するものである。
【００２５】
図３は定期診断プログラム１４０の処理フローである。定期診断プログラム１４０は、定期的にＰＨＷ１００の診断処理を行うプログラムであり、診断処理を実行するタイミングが来ると診断処理を行い、診断処理を終了すると次回の実行タイミングまでスリープする動作を繰り返す。診断処理を実行する周期については、例えば、１００ミリ秒、１０秒というように、そのシステムに適した周期とすればよい。なお、診断対象のハードウェア毎に異なる診断周期にしても良い。Ｓ１００のスリープ時間の経過判定でスリープ時間の満了を判定すると、スリープから起床して診断処理を実行する。
【００２６】
Ｓ１００の判定処理でスリープから起床すると、定期診断プログラム１４０の処理で診断対象のＰＨＷ１００に対応するＶＨＷ１３１の各ハードウェアに対する診断用の操作を行う。ここで、ハードウェアの操作はＯＳ１３２が提供する各ハードウェアを操作するためのシステムコールを実行することで行う。ここでシステムコールとは、例えばディスク装置に対するファイル操作などのオペレーティングシステムが提供する機能を、オペレーティングシステムの上位層のプログラムが使用するときに実行する関数である。
【００２７】
スリープから起床後にはまず、定期診断プログラム１４０の処理で、定期診断プログラム１４０が行った操作の完了時にそのハードウェアの診断に要した時間（診断時間）を取得するために、ハードウェアの操作を開始するとき（システムコールを実行するとき）の時刻を診断開始時刻として記憶する（Ｓ１１０）。このとき、定期診断プログラム１４０は仮想の計算機の記憶媒体としてＶＨＷ１３１が備えるメモリに記憶するように動作をする。ＶＨＷ１３１は仮想のハードウェアであるので、実際にはＰＨＷ１００のメモリ１０２に記憶される。診断ＶＭ１３０における時刻の管理は、ＶＨＷ１３１がＰＨＷ１００を模擬することにより、上述の現実の計算機の時刻の管理と同様に行うことができる。
【００２８】
Ｓ１１０のあと、診断対象ハードウェアの操作を実施する（Ｓ１２０）。Ｓ１２０で行う定期診断プログラム１４０が行うＶＨＷ１３１の各ハードウェアの操作内容は、診断対象がＰＨＷ１００のＨＤＤ１０３であれば、例えばディスク特定領域への書き込み処理、診断対象がＰＨＷ１００のＮＩＣ１０４であれば、例えば試験用メッセージの送信処理というように予め定めておくこととする。このハードウェア対応の操作内容は診断ＶＭ１３０のメモリ（実際にはメモリ１０２）に記憶しておき、診断実行時には対象のハードウェアに基づいて操作内容を選択するなどすればよい。
【００２９】
Ｓ１２０で定期診断プログラム１４０による処理で実行するＶＨＷ１３１の操作は、図３にＳ３００からＳ３５０で示すフローで、ＯＳ１３２、ＶＨＷ１３１、ＶＭＭ１１０のＨＷ操作代行部１１１によって処理される。これらの処理は定期診断プログラム１４０の処理ではないので、図３では破線の枠で囲んで示している。ＯＳ１３２は定期診断プログラム１４０が実行するシステムコールを受けて、ＶＨＷ１３１の対象ハードウェアにして操作コマンドを発行する（Ｓ３００）。ＶＨＷ１３１はこの操作コマンドを受けて、これをＰＨＷ１００用の操作コマンドに変換してＨＷ操作代行部１１１に通知（操作要求）する（Ｓ３１０）。
【００３０】
ＨＷ操作代行部１１１はこの操作要求を受けて、ＰＨＷ１００に対して操作コマンドを発行する（Ｓ３２０）。そして、ＨＷ操作代行部１１１は発行したコマンドに対するレスポンスをＰＨＷ１００より受信すると、ＶＨＷ１３１にＰＨＷ１００の操作完了を通知（操作応答）する（Ｓ３３０）。ＶＨＷ１３１はＨＷ操作代行部１１１から操作応答を受けるとＯＳ１３２にＳ３１０で受けた操作コマンドのレスポンスを送信する（Ｓ３４０）。ＯＳ１３２はこのレスポンスを受信して発行した操作コマンドの実行の完了を検出して、Ｓ１２０で実行されたシステムコールの処理を完了する（Ｓ３５０）。なお、ＶＭＭ１１０のＨＷ操作代行部１１１の処理フローについては図４を参照して後述する。
【００３１】
定期診断プログラム１４０はＳ１２０で実行したシステムコールの完了を検出して（Ｓ１３０）、この時刻を診断終了時刻とし、診断終了時刻から記憶している診断開始時刻を減算して、そのハードウェアの診断時間を取得する（Ｓ１４０）。そして、取得した診断時間を所定のしきい値と比較する（Ｓ１５０）。このしきい値は、例えば診断対象のハードウェアに応じて予め正常動作時の応答時間を測定して決定することができる。また、過去の診断実行時の診断時間を考慮するようにしても良い。
【００３２】
Ｓ１５０での比較結果がしきい値以下であれば正常、しきい値以上であれば異常と判断する（Ｓ１６０）。正常の場合は次回の実行までスリープする（Ｓ１７０）。また、Ｓ１６０での判定が異常の場合は、異常処理に遷移する。一般的な異常処理として冗長系への切り替えや、装置の再起動などがある。例えば冗長系への切り替えでは、切り替えプログラムを実行して、処理の引き継ぎに必要な情報を予め準備した待機系計算機に転送して、待機系計算機で動作を開始する待機系計算機の運用ＶＭに動作を引き継ぎ、自計算機は動作を停止するという動作を行って、運用ＶＭ１２０が提供するサービスに中断が発生しないようにできる。
【００３３】
なお、図３では処理フローの説明を簡略にするためにＳ１１０からＳ１６０までをそれぞれ１つのステップで記載しているが、実際にはＨＤＤ１０３、ＮＩＣ１０４などの各診断対象ハードウェアに対して実施する。これは、診断対象とするハードウェアをＰＨＷ１００の構成に基づいて設定しておき、定期診断プログラム１４０が処理を実施するときにその設定に基づいて順に行えばよい。
【００３４】
次に運用ＶＭ１２０の動作について説明する。運用ＶＭ１２０において実行されるアプリケーションプログラム１２３が運用ＶＭ１２０のハードウェアであるＶＨＷ１２１を操作するとき、アプリケーションプログラム１２３は診断ＶＭ１３０の場合と同様に、ＯＳ１２２が提供するシステムコールによって操作を行う。運用ＶＭ１２０ではＯＳ１２２、ＶＨＷ１２１が診断ＶＭ１３０の場合と同様の動作をし、そして、ＶＭＭ１１０のＨＷ代行部１１１がＰＨＷ１００に対して操作を実行する。
【００３５】
次に、ＶＨＷ１２１、ＶＨＷ１３１からＰＨＷ１００の操作コマンドの通知を受けたＶＭＭ１１０のＨＷ操作代行部１１１の動作を説明する。ＨＷ操作代行部１１１はＶＨＷ１２１、ＶＨＷ１３１から通知されたＰＨＷ１００の操作コマンドを順に処理する。
【００３６】
図４はＶＭＭ１１０のＨＷ操作代行部１１１の処理フローである。Ｓ２００〜Ｓ２０２の処理については後述する。ＨＷ操作代行部１１１は、Ｓ２００での判定結果が送信待ちの操作応答なしである場合、各ＶＭからのＰＨＷ１００の操作コマンドの通知の有無をチェックする（Ｓ２１０）。ＨＷ操作代行部１１１はＰＨＷ１００の操作コマンドの通知を受けている場合、その操作コマンドが診断ＶＭ１３０からの要求か否かをチェックする（Ｓ２２０）。ＨＷ操作代行部１１１の処理は、操作コマンドの通知を受けていない場合にはＳ２００の処理に戻る。
【００３７】
ＨＷ操作代行部１１１は通知された操作コマンドの送信元ＶＭが診断ＶＭ１３０でない場合、操作対象のハードウェアに対する操作を行う。まず、操作を開始する時点の時刻を取得して、操作開始時刻として記憶媒体であるメモリ１０２に記憶する（Ｓ２３０）。次に通知された操作コマンドをＰＨＷ１００の操作対象ハードウェアに対して発行し、ＰＨＷ１００のハードウェアの操作を実施する（Ｓ２３１）。ここで、ハードウェアに対する操作とは、例えば対象がＨＤＤ１０３であればディスクの書き込み処理や読出し処理等であり、ＮＩＣ１０４であれば送信処理や受信処理等である。
【００３８】
操作コマンドを発行したＰＨＷ１００のハードウェアで処理が完了すると、ＨＷ操作代行部１１１は発行したコマンドに対するレスポンスをＰＨＷ１００から受信する。ＨＷ操作代行部１１１はこのときの時刻を取得して、操作完了時刻とし、操作完了時刻から記憶している操作開始時刻を減算して、このときのハードウェアの操作に要した時間（操作時間）を取得する（Ｓ２３２）。そして、操作コマンドの送信元ＶＭに対してＰＨＷ１００の操作完了を通知（操作応答の送信）する（Ｓ２３３）。次に、ＨＷ操作代行部１１１は図２に示した操作履歴テーブル１１２にハードウェア操作の履歴（ハードウェア情報、最終操作時刻、操作時間）を記録する（Ｓ２３４）。なお、最終操作時刻は、Ｓ２３０で記憶した操作開始時刻とする。
【００３９】
ＨＷ操作代行部１１１は、Ｓ２２０で診断ＶＭ１３０からの操作コマンドの通知と判断した場合には、操作履歴テーブル１１２をチェックする（Ｓ２２１）。そして、通知された操作コマンドの操作対象ハードウェアと同一のハードウェアに対して所定時間内の操作履歴が操作履歴テーブル１１２にあるか否かを判定する（Ｓ２２２）。ここで所定の時間はシステムに応じて決定されるべき時間である。一例としては、定期診断プログラム１４０の診断実行の周期と同じにすると、前回診断時からハードウェアの操作が行われている場合に診断のためのハードウェアの実際の操作を省略するようにできる。
【００４０】
ここで、Ｓ２２０〜Ｓ２３０もしくはＳ２２２までの処理が本実施の形態における要求処理ステップである。
【００４１】
ＨＷ操作代行部１１１は、Ｓ２２２で所定時間内の操作履歴なしと判定した場合には、上述のＳ２３０〜Ｓ２３４の手順で通知された操作コマンドによる操作を実施する。ここで要求された操作とは、定期診断プログラム１４０の処理フローの説明で述べた通り、例えば操作対象がＨＤＤ１０３であれば特定領域の書き込み処理であるとか、あるいは操作対象がＮＩＣ１０４であれば試験用メッセージの送信処理などである。
【００４２】
ＨＷ操作代行部１１１は、Ｓ２２２で所定時間内の操作履歴があると判定した場合には、通知された操作コマンドを実行せずに診断ＶＭ１３０のＶＨＷ１３１に操作応答を返す。ただし、この操作応答を返すタイミングは操作履歴テーブル１１２に記録された当該ハードウェアに対する最後の操作履歴に記録された操作時間を経過後とする。このため、現在時刻に操作履歴テーブル１１２に記録された操作時間を加算した時刻を応答送信時刻として設定し（Ｓ２２３）、診断ＶＭ１３０に対する操作応答を送信待ち操作応答としてメモリ１０２に保存する（Ｓ２２４）。このように応答送信時刻を設定することにより、実際の操作を行った場合と同様の時間間隔を空けて操作応答を診断ＶＭ１３０に返すことが可能となり、定期診断プログラム１４０が実施する診断時間としきい値の比較で、より正確な判断が可能となる。
【００４３】
Ｓ２２４で保存した送信待ち操作応答の診断ＶＭ１３０への送信は、図４のフローのＳ２００〜Ｓ２０２の処理で行う。ＨＷ操作代行部１１１はＳ２００の処理で、送信待ち操作応答があるか否かを判定する。そして、送信待ち操作応答がある場合には、その送信待ち操作応答の応答送信時刻に到達しているか否かを判定する（Ｓ２０１）。
【００４４】
ＨＷ操作代行部１１１は、Ｓ２０１の処理で応答送信時刻に到達していると判定した場合、Ｓ２２３の処理で保存した診断ＶＭ１３０への操作応答を送信する（Ｓ２０２）。なお、応答送信時刻に到達していないと判断した場合には、Ｓ２０１の処理を行わずにＳ２１０の処理を実施する。
【００４５】
上述のように、物理的には１つの計算機で複数の仮想の計算機が動作することを可能にする仮想環境を提供するプログラムである仮想マシンモニタに、計算機が備えるハードウェアに対する仮想計算機からの操作要求を受けて実際にハードウェアの操作を実行するＨＷ操作代行部と、ＨＷ操作代行部によって行ったハードウェアの操作の履歴を個々のハードウェア毎に記録する操作履歴テーブルとを備えて、ＨＷ操作代行部は診断仮想マシンからの計算機ハードウェアに対する操作要求を受けたとき、要求された操作の対象ハードウェアに対する所定時間以内の操作履歴が操作履歴テーブルにある場合には、要求された操作を行わずに操作要求に対応する操作応答を診断仮想マシンに返すようにした。
【００４６】
これにより、運用仮想マシンが計算機のハードウェアの操作を行っているときには、診断仮想マシンによる計算機のハードウェアの操作を実際には実行しないようにすることができ、診断仮想マシンからの診断のための操作が、運用仮想マシンからのハードウェアの操作に与える影響を軽減することができる。また、運用仮想マシンが計算機ハードウェアの操作を行っていないときには、診断仮想マシンからの計算機ハードウェアに対する操作を実際に行うので、計算機ハードウェアに障害が起きている場合には、運用仮想マシンからの計算機ハードウェアの操作で異常が発生する前に診断仮想マシンが計算機ハードウェアの障害を検出することができる。
【符号の説明】
【００４７】
１００  計算機ハードウェア、１０１  マイクロプロセッサ、１０２  メモリ、１０３  ディスク装置、１０４  通信インタフェース、１０５  ＲＴＣ、１０６  カウンタ、１１０  仮想マシンモニタ、１１１  ＨＷ操作代行部、１１２  操作履歴テーブル、１２０  運用仮想マシン、１２１，１３１  仮想ハードウェア、１２２，１３２  オペレーティングシステム、１２３  アプリケーションプログラム、１３０  診断仮想マシン、１４０  定期診断プログラム
【図１】
2014203181.tif 000003
【図２】
2014203181.tif 000004
【図３】
2014203181.tif 000005
【図４】
2014203181.tif 000006