説明

OS障害検出システム、OS障害検出方法、OS障害検出プログラムおよびプログラム記録媒体

【課題】致命的なOS障害が発生した場合にOSの書き換えを行うことなく迅速に復旧処理の実行が可能なOS障害検出システムを提供する。
【解決手段】例えば仮想マシン120上で動作するゲストOS121に発生するOS障害を検出するOS障害検出部113を、仮想マシン120とは独立した外部の仮想マシンモニタ110内に配置し、かつ、OS障害検出部113は、ゲストOS121がOS障害発生時に表示部に出力する画面出力命令をOS障害時動作パターンとしてOS障害時動作パターンデータベース115にあらかじめ記憶し、画面出力命令取得部114にてゲストOS121が表示部に出力した画面出力命令を仮想プロセッサ111から仮想ビデオアダプタ112に出力した画面出力命令として捕捉した際に、該画面出力命令が前記OS障害時動作パターンと一致するか否かに基づいて、ゲストOS121のOS障害が発生したか否かを判定部116にて判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、OS障害検出システム、OS障害検出方法、OS障害検出プログラムおよびプログラム記録媒体に関する。
【背景技術】
【0002】
従来、コンピュータに搭載されているOS(Operating System)が障害の発生を検出した場合、OSは、障害内容を解析して、コンピュータシステムへの影響を判断し、当該障害が深刻なダメージをもたらす致命的な障害である可能性が高い場合には、エラーメッセージの表示部への出力が可能であれば、該エラーメッセージを出力して、OS自らの動作を停止する。一方、OS障害検出システムは、このようなOSの動作を停止させるような致命的な障害の発生を検出し、エラー表示処理や復旧処理を行うためのシステムである。
【0003】
従来のOS障害検出システムの一例が、特許文献1の特開2005−234873号公報「コンピュータ、システム復旧方法、プログラムおよび情報記憶媒体」に記載されている。該特許文献1に記載されたOS障害検出システムは、OSにて致命的なエラーが発生したか否かを判定し、致命的なエラーが発生していると判定した場合には、表示部の背景画面の表示を、致命的なエラーが発生している旨を示すブルースクリーン表示を行う代わりに、正常な動作が可能となるように初期化を行うための復帰処理を実行させることを可能とする仕組みを提供している。
【0004】
つまり、該特許文献1においては、まず、OSの起動前に、OSの書き換えを行い、致命的なエラーが発生しているか否かを判定するカーネルクラッシュ判定モジュールにおいて致命的なエラーの発生を検出した際に、表示部の画面表示をブルースクリーンに設定するブルースクリーン表示モジュールを呼び出す代わりに、復帰処理を実行する復帰処理モジュールを呼び出すように更新する。而して、致命的なエラーであるカーネルクラッシュ(つまりカーネルパニック)が発生した場合、カーネルクラッシュ判定モジュールから迅速に復帰処理モジュールを呼び出して実行させることができる。また、前記特許文献1においては、致命的なエラーであるカーネルクラッシュが発生した場合に、ブルースクリーン表示を行うか、あるいは、復旧処理を行うかをユーザに選択させることも可能としている。
【0005】
従来のOS障害検出システムの別の例が、特許文献2の特開2009−116699号公報「情報処理システム」に記載されている。該特許文献2に記載されたOS障害検出システムは、マスターOSと複数のスレーブOSとから構成される。複数のスレーブOSは、それぞれ、マスターOSの動作状況を監視する。ここで、複数のスレーブOSによるマスターOSの監視は、ウォッチドッグタイマによる正常性の確認や信号の送受信、通信量の監視等によって行う。さらに、複数のスレーブOSによりマスターOSの監視を行うため、精度良くマスターOSの故障を検出することが可能である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−234873号公報(第5−7頁)
【特許文献2】特開2009−116699号公報(第4−6頁)
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、前記特許文献1に記載の技術には、OSメーカ独自の仕様で改造が困難なプロプライエタリ(Proprietary)なOSには適用することが難しいという問題があった。その理由は、OSメーカそれぞれで独自に作成されているOSの書き換えを行うべき場所を検索して、検索した当該場所に適合する正しい形式の書き替え処理を吟味することが必要であり、かかる手順を踏んだ後で、初めて、正しい内容に基づく書き替え処理を行うことによって、モジュールの呼び出し先をブルースクリーン表示モジュールか復帰処理モジュールかのいずれかに変更しなければならないからである。
【0008】
また、前記特許文献2に記載の技術には、マスターOSの障害を検出するまでに時間を要し、致命的な障害に即座に対応することができないという問題があった。その理由は、ウォッチドッグタイマによる監視やあらかじめ定めた時間内における信号の送受信状態、通信量等により監視を行うために、マスターOSの故障と判断するまでには一定の時間が必要となるからである。
【0009】
本発明は、かかる問題に鑑みてなされたものであり、致命的なOS障害が発生した場合に、OSの書き換えを行うことなく、迅速に復旧処理を実行することを可能とするOS障害検出システム、OS障害検出方法、OS障害検出プログラムおよびプログラム記録媒体を提供することを、その目的としている。
【課題を解決するための手段】
【0010】
前述の課題を解決するため、本発明によるOS障害検出システム、OS障害検出方法、OS障害検出プログラムおよびプログラム記録媒体は、次のような特徴的な構成を採用している。
【0011】
(1)コンピュータ上で動作するOS(Operating System)に発生するOS障害を検出するOS障害検出手段を備えたOS障害検出システムであって、前記OS障害検出手段は前記OS障害の監視対象である前記OSとは独立の外部に存在し、かつ、前記OS障害検出手段は、前記OS障害が発生した際に前記OSが表示部に対して出力する画面出力命令をOS障害時動作パターンとしてあらかじめ記憶するOS障害時動作パターンデータベースと、前記OSが前記表示部に出力する画面出力命令を捕捉する画面出力命令取得部と、前記画面出力命令取得部にて捕捉された前記画面出力命令と前記OS障害時動作パターンデータベースにあらかじめ記憶されている前記OS障害時動作パターンとを比較し、一致しているか否かに基づいて、前記OS障害が発生したか否かを判定する判定部とを少なくとも備えていることを特徴とする。
(2)コンピュータ上で動作するOS(Operating System)に発生するOS障害を検出するOS障害検出手段を有するOS障害検出方法であって、前記OS障害検出手段は前記OS障害の監視対象である前記OSとは独立の外部に存在し、かつ、前記OS障害検出手段は、前記OS障害が発生した際に前記OSが表示部に対して出力する画面出力命令をOS障害時動作パターンとしてあらかじめ記憶し、前記OSが前記表示部に出力する画面出力命令を捕捉することにより、捕捉した該画面出力命令とあらかじめ記憶されている前記OS障害時動作パターンとを比較し、一致しているか否かに基づいて、前記OS障害が発生したか否かを判定することを特徴とする。
(3)前記(2)に記載のOS障害検出方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とするOS障害検出プログラム。
【発明の効果】
【0012】
本発明のOS障害検出システム、OS障害検出方法、OS障害検出プログラムおよびプログラム記録媒体によれば、以下のような効果を奏することができる。
【0013】
第1の効果は、致命的なOS障害が発生した場合に、OSの書き換え(改造)を行ったり、OSへ専用ドライバを追加したりすることなく、発生したOS障害を確実に検出して、復旧処理を実行させることができることにある。この結果、OSの書き換え(改造)やドライバの追加が困難なプロプライエタリなOSに対しても、本発明におけるOS障害の検出の仕組みを容易に適用することが可能となる。
【0014】
その理由は、OS障害の監視対象となるOS(例えば、仮想マシン(VM:Virtual Machine)上のゲストOSを監視対象とする場合には、該ゲストOS、ハードウェア内のプロセッサ上で動作するOSを監視対象とする場合には、該OS)の外部に存在するOS障害検出手段(例えば、仮想マシン上のゲストOSを監視する場合には、該仮想マシンとは独立して外部に存在する仮想マシンモニタ(VMM:Virtual Machine Monitor)内に配置したOS障害検出手段、ハードウェア内のプロセッサ上で動作するOSを監視する場合には、該プロセッサとは独立したデバイスとして外部に配置したOS障害検出手段)において、監視対象のOSが表示部に出力する画面出力命令の動作を監視し、当該OSのOS障害時動作パターンと同一の画面出力命令が送出されているか否かを監視することにより、OS障害の有無を検出し、OS障害を検出した場合は、直ちに、復旧処理を起動する仕組みを採用しているためである。
【0015】
第2の効果は、正常動作を監視するためのウォッチドッグタイマや定期的に正常性を示す信号を送受信するハートビート等を用いた場合のような時間を要する監視によってOS障害を検出する場合に比較して、より迅速に、致命的なOS障害を検出することができることにある。
【0016】
その理由は、OS障害の監視対象となるOSに致命的なOS障害が発生した際に、ユーザに通知するために表示部に対して画面出力命令を送出した時点で、かかる画面出力命令の送出動作をモニタリングしているOS障害検出手段にて直ちにOS障害を判定することができるので、ウォッチドッグタイマやハートビート等のようにタイムアウトを待つ必要がないためである。
【図面の簡単な説明】
【0017】
【図1】本発明に係るOS障害検出システムの一構成例を示すシステム構成図である。
【図2】図1に示すOS障害検出システムのOS障害時動作パターンデータベースにOS障害時動作パターンとしてあらかじめ登録されている画面出力命令の動作シーケンスの一例を示す動作パターンテーブルである
【図3】図1に示すOS障害検出システムの動作の一例を説明するためのフローチャートである。
【図4】図1の仮想マシンモニタにおけるOS障害の監視対象である仮想マシン上のゲストOSがWindows(登録商標)OSであった場合のOS障害の検出動作の一例を示すフローチャートである。
【図5】本発明に係るOS障害検出システムの他の構成例を示すシステム構成図である。
【発明を実施するための形態】
【0018】
以下、本発明によるOS障害検出システム、OS障害検出方法、OS障害検出プログラムおよびプログラム記録媒体の好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明によるOS障害検出システムおよびOS障害検出方法について説明するが、かかるOS障害検出方法をコンピュータにより実行可能なOS障害検出プログラムとして実施するようにしても良いし、あるいは、OS障害検出プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。
【0019】
(本発明の特徴)
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、カーネルクラッシュなどの致命的なOSの障害を外部から検出することを可能とする仕組みを実現するものであり、例えば、表示部すなわちビデオアダプタデバイスへの出力を監視して、OSが、致命的な障害を検出した際に、OSからの指示に基づいてビデオアダプタデバイスに対して出力される、致命的な障害を検出した旨のエラーメッセージやブルースクリーン等を画面表示しようとする画面出力命令の動作パターンを検出することによって、致命的なOS障害の発生の有無を判定し、致命的なOS障害の発生と判断した場合、直ちに、適切な復旧処理を起動することを特徴としている。而して、本発明においては、従来のOS障害検出システムのように、OSの改変(書き替え)や専用ドライバ等の導入の必要がなく、プロプライエタリなOSについても適用することが可能であり、かつ、正常動作を監視するためのウォッチドッグタイマや定期的に正常性を示す信号を送受信するハートビート等を用いた場合のような時間を要する監視によることなく、致命的なOSの障害を迅速に検出することができる。
【0020】
(実施形態の構成例)
次に、本発明に係るOS障害検出システムの構成について、その一例を、図1を用いて説明する。図1は、本発明に係るOS障害検出システムの一構成例を示すシステム構成図である。図1に示すOS障害検出システムは、ハードウェア100と、仮想マシンモニタ(VMM:Virtual Machine Monitor)110と、仮想マシン(VM:Virtual Machine)120とを少なくとも含んで構成される。
【0021】
ここで、仮想マシンモニタ110は、仮想マシン120の動作をモニタリングして、仮想マシン120に搭載のゲストOS121の動作異常を監視する仮想的な障害監視手段(または、場合によっては、物理的な障害監視装置)であり、OS障害の監視対象となるOSつまり仮想マシン120上のゲストOS121とは独立した形態で外部に存在しており、仮想プロセッサ111と、仮想ビデオアダプタ112と、OS障害検出部113と、復旧処理部117とを少なくとも備え、仮想マシン120と同一のハードウェア100上(つまり同一ノード内)において動作している。
【0022】
仮想プロセッサ111は、仮想マシン120から見える仮想的なプロセッサリソースである。仮想ビデオアダプタ112は、仮想マシン120から見える仮想的なビデオアダプタデバイスである。仮想プロセッサ111、仮想ビデオアダプタ112は、いずれも、ソフトウェアによって物理的なデバイスのエミュレーションを行っている。なお、仮想マシンモニタ110は、仮想マシン120に搭載のゲストOS121がデバイスに対して出力する加工されていないIO命令例えば画面出力命令の動作を、仮想プロセッサ111から仮想ビデオアダプタ112に対して出力する加工されていないIO命令例えば画面出力命令としてモニタリングしている。
【0023】
また、仮想マシンモニタ110内に配置されたOS障害検出部113は、仮想マシン120に搭載のゲストOS121がデバイスに対して出力する加工されていないIO命令例えば画面出力命令の動作を、前述したように、仮想プロセッサ111から仮想ビデオアダプタ112に対して出力するIO命令例えば画面出力命令としてモニタリングし、該画面出力命令の動作パターンに基づいて、仮想マシン120に搭載のゲストOS121のOS障害の有無を検出する部位であり、画面出力命令取得部114と、OS障害時動作パターンデータベース115と、判定部116とを少なくとも備えている。
【0024】
画面出力命令取得部114は、仮想プロセッサ111からの仮想ビデオアダプタ112に対する画面出力命令を監視して捕捉する。OS障害時動作パターンデータベース115は、OS障害が起こった場合の仮想ビデオアダプタ112に対する画面出力命令の動作パターンをOS障害時動作パターンとしてあらかじめ記憶している。なお、OS障害時動作パターンデータベース115にあらかじめ記憶するOS障害時動作パターンは、一種類のOS障害を検出するための画面出力命令の動作パターンとして、複数の画面出力命令からなる複数種類の動作パターンのセットを登録することもできる。
【0025】
判定部116は、画面出力命令取得部114にて捕捉した画面出力命令をOS障害時動作パターンデータベース115に記憶しているOS障害時動作パターンと比較し、比較結果に応じて、OS障害の発生の有無を判定する。ここで、OS障害時動作パターンデータベース115に登録されている一種類のOS障害を検出するためのOS障害時動作パターンが複数種類の動作パターンのセットからなっている場合には、判定部116は、画面出力命令取得部114にて連続的に捕捉した複数の画面出力命令のすべてがOS障害時動作パターンを構成する複数種類の動作パターンのセットのそれぞれの動作パターンと一致しているか否かに応じて、OS障害が発生しているか否かを判定する。
【0026】
すなわち、判定部116は、画面出力命令取得部114にて最初に捕捉した画面出力命令を、複数種類のOS障害時動作パターンのセットのうち、最初に比較すべきOS障害時動作パターンと比較して一致していた場合には、次のOS障害時動作パターンと同一の画面出力命令が続けて捕捉されるか否かを判定し、捕捉した場合には、さらに次のOS障害時動作パターンと同一の画面出力命令が続けて捕捉されるか否かを判定するという動作を繰り返し、複数種類のOS障害時動作パターンのセットの全てについて一致している画面出力命令が捕捉された場合に、該当するOS障害が発生しているものと判定する。
【0027】
復旧処理部117は、OS障害検出部113内の判定部116によりOS障害の発生を検出した場合に、OS障害検出部113からの通知に基づいて、コンピュータの再起動等の適切な復旧処理を行う。
【0028】
また、仮想マシン120は、ゲストOS121を備えている。ゲストOS121は、仮想マシン120内で動作するOSであり、仮想マシンモニタ110内のOS障害検出部113によってOS障害の発生を監視される対象のOSとなっている。
【0029】
例えば、コンピュータに搭載するOSとして、図1に示すように、仮想マシン120内で動作するゲストOS121であり、かつ、該ゲストOS121がWindows(登録商標)OSであった場合に、ゲストOS121のWindows OSがカーネルパニックを引き起こして、OS障害の発生をユーザに通知するために、表示部にブルースクリーンの画面表示を出力した場合の動作について説明する。かかる仮想マシン120の動作をモニタリングする仮想マシンモニタ110においては、ゲストOS121のWindows OSの動作をモニタリングしており、ゲストOS121のWindows OSにOS障害が発生した場合、仮想プロセッサ111上で動作するWindows OSにおいても、仮想ビデオアダプタ112に対して画面出力命令を連続的に出力して、画面をVGA(Video Graphics Array:低解像度)モードに切り替え、しかる後、画面を青色にクリアし、かつ、エラーメッセージを表示した後、OS動作を停止する。
【0030】
OS障害の発生時にかかる画面出力命令の動作を行う場合、OS障害時動作パターンデータベース115には、例えば、VGAモードへの切り替えの画面出力命令および画面の青色クリアの画面出力命令を、OS障害時動作パターンとしてあらかじめ登録しておく。判定部116は、画面出力命令取得部114にて捕捉されたデバイスすなわち仮想ビデオアダプタ112への画面出力命令について、最初にVGAモードへの切り替えの画面出力命令を検出し、次に、画面の青色クリアの画面出力命令を検出することによって、Windows OSのOS障害時における表示部の画面表示動作としてのブルースクリーン表示動作を検出し、ゲストOS121のWindows OSにおけるOS障害の発生を検出する。
【0031】
(実施形態の動作の説明)
次に、図1に示したOS障害検出システムの動作の一例について、図2の動作テーブルおよび図3のフローシャートを参照しながら詳細に説明する。図2は、図1に示すOS障害検出システムのOS障害時動作パターンデータベース115にOS障害時動作パターンとしてあらかじめ登録されている画面出力命令の動作シーケンスの一例を示す動作パターンテーブルである。図3は、図1に示すOS障害検出システムの動作の一例を説明するためのフローチャートである。
【0032】
本実施形態においては、図2の動作パターンテーブルに示すように、OS障害時動作パターンデータベース115には、障害種別毎の一連の動作パターンのセットがOS障害時動作パターンとしてあらかじめ登録されており、OS障害の発生時に、どのような画面出力命令が連続して発生するかを、各障害種別に対応付けて記憶している。
【0033】
つまり、図2の動作パターンテーブルは、障害種別201、動作パターン1 202−1、動作パターン2 202−2、…から構成されており、障害種別201には、Windows OSの障害時にブルースクリーン表示に切り替えられる場合、VMwareの障害時にパープルスクリーン表示に切り替えられる場合、…などのOS障害の種別に応じた項目が配置され、それぞれのOS障害種別に応じて、仮想ビデオアダプタ112に対して順次出力される画面出力命令の内容が、動作パターン1 202−1、動作パターン2 202−2、…に示すように、OS障害時動作パターンとして順番に配置されている。例えば、Windows OSの障害時の場合は、動作パターン1 202−1、動作パターン2 202−2、…に示すように、仮想ビデオアダプタ112に対する画面出力命令が、VGAモードへの切替命令、画面の青色クリア命令、…の順番に複数出力される旨があらかじめ設定登録されている。
【0034】
次に、動作パターンテーブルとして図2のようなOS障害時動作パターンが設定登録されていた場合における図1のOS障害検出システムの動作例について、図3のフローチャートを用いて説明する。
【0035】
まず、判定部116は、仮想マシン120上で動作しているゲストOS121のOS種別に対応して、OS障害時動作パターンデータベース115の動作パターンテーブルに記憶されているOS障害時動作パターンを読み込む(ステップS301)。例えば、ゲストOS121がWindows OSの場合には、図2の動作パターンテーブルにおける障害種別201にWindowsブルースクリーンとして記憶されている障害種別に対応するOS障害時動作パターンである、VGAモードへの切替命令(動作パターン1 202−1)、画面の青色クリア命令(動作パターン2 202−2)、…が読み込まれる。
【0036】
ここで、仮想マシン120内におけるゲストOS121の実行中においては、仮想マシンモニタ110内のOS障害検出部113は、ゲストOS121の動作をモニタリングしている仮想プロセッサ111からの仮想ビデオアダプタ112に対する画面出力命令を常時監視しており、画面出力命令が出力されると、OS障害検出部113内の画面出力命令取得部114は、出力された画面出力命令を捕捉して、判定部116に送出する(ステップS302)。
【0037】
判定部116は、OS障害時動作パターンデータベース115の動作パターンテーブルからあらかじめ読み込んでおいたOS障害時動作パターンのセットのうち、最初の動作パターン1 202−1としてあらかじめ記憶されている動作パターン(例えば、Windows OS障害時の場合、VGAモードへの切替命令)と、画面出力命令取得部114にて捕捉された画面出力命令とを比較する(ステップS303)。両者の命令が一致していなかった場合は(ステップS303の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS302に復帰し、仮想ビデオアダプタ112に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0038】
一方、両者の命令が一致していた場合(ステップS303の「はい」の場合)、OS障害時に最初に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、ステップS304に移行して、次の画面出力命令の出力を監視・捕捉する動作を行う。画面出力命令取得部114は、次に出力された画面出力命令を捕捉すると、判定部116に送出し(ステップS304)、判定部116は、次の動作パターン2 202−2としてあらかじめ記憶されている動作パターン(例えば、Windows OS障害時の場合、画面の青色クリア命令)と、画面出力命令取得部114にて次に捕捉された画面出力命令とを比較する(ステップS305)。両者の命令が一致していなかった場合は(ステップS305の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS302に復帰し、仮想ビデオアダプタ112に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0039】
一方、両者の命令が一致していた場合(ステップS305の「はい」の場合)、OS障害時に第2番目に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、次の第3番目の画面出力命令の出力を監視する捕捉動作に移行する。かかる動作を、OS障害時動作パターンのセットとしてOS障害時動作パターンデータベース115の動作パターンテーブルに記憶されている複数の動作パターン(画面出力命令)のすべてについて繰り返す。
【0040】
そして、OS障害時動作パターンのセットとしてOS障害時動作パターンデータベース115の動作パターンテーブルにあらかじめ記憶されている最後の第N番目の動作パターンに達して、該最後の第N番目の動作パターンと画面出力命令取得部114にて捕捉された第N番目の画面出力命令との比較結果とが一致していなかった場合は(ステップS306の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS302に復帰し、仮想ビデオアダプタ112に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0041】
一方、両者の命令が一致していた場合(ステップS306の「はい」の場合)、画面出力命令取得部114にて捕捉された一連の画面出力命令とOS障害時動作パターンのセットとしてOS障害時動作パターンデータベース115の動作パターンテーブルに記憶されているすべての動作パターン(画面出力命令)とが一致した場合であり、監視対象のゲストOS121においてOS障害が発生したものと看做すことができる。したがって、ステップS307に移行して、仮想マシン120上のゲストOS121を動作可能な状態に復旧させるために、例えば、仮想マシン120の初期化・再起動を行ったり、あるいは、バックアップファイルからのリストア処理を行ったりすることにより、復旧処理を行う(ステップS307)。
【0042】
次に、図3に示すフローチャートの動作について、OS障害の監視対象である仮想マシン120上のゲストOS121として、Windows OSを使用しているという具体例を用いて、さらに詳細に説明する。図4は、図1の仮想マシンモニタ110におけるOS障害の監視対象である仮想マシン120上のゲストOS121がWindows OSであった場合のOS障害の検出動作の一例を示すフローチャートである。図4(A)は、仮想マシン120上のゲストOS121であるWindows OSのOS障害発生時の動作を示し、図4(B)は、仮想マシンモニタ110上のOS障害検出部113におけるOS障害検出時の動作を示している。
【0043】
ここで、仮想マシン120上のゲストOS121のWindows OSにOS障害が発生した場合、ゲストOS121は、表示部に対して、低解像度モードのVGA(Video Graphics Array)モードへの切替命令というIO命令を送出した後、連続的に、致命的なOS障害が発生した旨をユーザに通知するために青色背景(ブルースクリーン)を表示するための画面の青色クリア命令というIO命令を送出する。したがって、仮想マシン120の動作をモニタリングしている仮想マシンモニタ110においては、仮想プロセッサ111から仮想ビデオアダプタ112に対して、VGAモードへの切替命令を送出した後、連続的に、画面の青色クリア命令を送出する動作が実行される。
【0044】
図4(A)のフローチャートにおいて、仮想マシン120上で動作するゲストOS121のWindows OSにて致命的なOS障害が発生すると(ステップS401)、Windows OSは、まず、表示部の画面を低解像度モードのVGAモードに切り替える切替命令を、表示部に対して出力する(ステップS402)。次に、Windows OSは、画面の背景をブルースクリーン表示に設定するために、表示部の画面の青色クリア命令を、表示部に対して出力する(ステップS403)。さらに、青色の背景に設定された画面上に、OS障害が発生した旨のエラーメッセージを出力する(ステップS404)。しかる後、プロセッサの動作を停止させる(ステップS405)。
【0045】
一方、仮想マシン120上のゲストOS121の動作を監視している仮想マシンモニタ110においては、該仮想マシンモニタ110上のOS障害検出部113におけるOS障害時動作パターンデータベース115に、図2の動作パターンテーブルの動作パターン1 202−1、動作パターン2 202−2に示したように、監視対象のゲストOS121がWindows OSであった場合におけるOS障害時動作パターンとして、仮想ビデオアダプタ112に対する画面出力命令が、VGAモードへの切替命令、画面の青色クリア命令の順番に出力される旨があらかじめ設定登録されている。また、OS障害検出部113における判定部116は、仮想マシン120上のゲストOS121の起動に先立って、図3のフローチャートにて説明したように、OS障害時動作パターンデータベース115からゲストOS121がWindows OSであった場合におけるOS障害時動作パターンをあらかじめ読み込んで保存している。
【0046】
かかる状態において、仮想マシンモニタ110上のOS障害検出部113における画面出力命令取得部114にて、ゲストOS121のWindows OSが画面出力命令を出力すると、該画面出力命令は、仮想プロセッサ111から仮想ビデオアダプタ112に対する画面出力命令として捕捉されて、判定部116に送出される(ステップS411)。
【0047】
判定部116は、OS障害時動作パターンデータベース115からあらかじめ読み込んでいるWindows OSのOS障害時動作パターンのセットのうち、最初のOS障害時動作パターンであるVGAモードへの切替命令と、画面出力命令取得部114にて捕捉された画面出力命令とを比較する(ステップS412)。両者の命令が一致していなく、画面出力命令取得部114にて捕捉された画面出力命令がVGAモードへの切替命令ではなかった場合は(ステップS412の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS411に復帰し、仮想ビデオアダプタ112に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0048】
一方、両者の命令が一致していて、画面出力命令取得部114にて捕捉された画面出力命令がVGAモードへの切替命令であった場合(ステップS412の「はい」の場合)、Windows OS障害時に最初に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、ステップS413に移行して、次の画面出力命令の出力を監視・捕捉する動作を行う。画面出力命令取得部114は、ゲストOS121のWindows OSが次の画面出力命令を出力すると、該画面出力命令は、仮想プロセッサ111から仮想ビデオアダプタ112に対する次の画面出力命令として捕捉されて、判定部116に送出される(ステップS413)。
【0049】
判定部116は、OS障害時動作パターンデータベース115からあらかじめ読み込んでいるWindows OSのOS障害時動作パターンのセットのうち、次のOS障害時動作パターンである画面の青色クリア命令と、画面出力命令取得部114にて捕捉された画面出力命令とを比較する(ステップS414)。両者の命令が一致していなく、画面出力命令取得部114にて捕捉された画面出力命令が画面の青色クリア命令ではなかった場合は(ステップS414の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS411に復帰し、仮想ビデオアダプタ112に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0050】
一方、両者の命令が一致していて、画面出力命令取得部114にて捕捉された画面出力命令が画面の青色クリア命令であった場合(ステップS414の「はい」の場合)、画面出力命令取得部114にて捕捉された一連の画面出力命令とOS障害時動作パターンのセットとしてOS障害時動作パターンデータベース115の動作パターンテーブルに記憶されているすべての動作パターン(画面出力命令)とが一致した場合であり、監視対象のゲストOS121のWindows OSにおいて致命的なOS障害が発生したものと看做すことができる。したがって、ステップS415に移行して、仮想マシン120上のゲストOS121のWindowsOSを動作可能な状態に復旧させるために、例えば、仮想マシン120の初期化・再起動を行ったり、あるいは、バックアップファイルからのリストア処理を行ったりすることにより、適切な復旧処理を行う(ステップS415)。
【0051】
(本実施形態の効果の説明)
以上に詳細に説明したように、本実施形態のOS障害検出システムによれば、次のような効果が得られる。
【0052】
第1の効果は、致命的なOS障害が発生した場合に、OSの書き換え(改造)を行ったり、OSへ専用ドライバを追加したりすることなく、発生したOS障害を確実に検出して、復旧処理を実行させることができることにある。この結果、OSの書き換え(改造)やドライバの追加が困難なプロプライエタリなOSに対しても、本実施形態におけるOS障害の検出の仕組みを容易に適用することが可能となる。
【0053】
その理由は、OS障害の監視対象となるOSつまり仮想マシン(VM:Virtual Machine)120上のゲストOS121の外部に存在する仮想マシンモニタ(VMM:Virtual Machine Monitor)110において、ゲストOS121が表示部に出力する画面出力命令の動作をモニタリングした結果である仮想ビデオアダプタ112への画面出力命令を監視し、OSつまりゲストOS121のOS障害時動作パターンと同一の画面出力命令が送出されているか否かを監視することにより、OS障害の有無を検出して、OS障害を検出した場合は、直ちに、復旧処理を起動する仕組みを採用しているためである。
【0054】
第2の効果は、正常動作を監視するためのウォッチドッグタイマや定期的に正常性を示す信号を送受信するハートビート等を用いた場合のような時間を要する監視によってOS障害を検出する場合に比較して、より迅速に、致命的なOS障害を検出することができることにある。
【0055】
その理由は、OS障害の監視対象となるOSつまり仮想マシン120上のゲストOS121に致命的なOS障害が発生した際に、ユーザに通知するために表示部に対して画面出力命令を送出した時点で、かかる画面出力命令の送出動作をモニタリングしている仮想マシンモニタ110のOS障害検出部113にて直ちにOS障害を判定することができるので、ウォッチドッグタイマやハートビート等のようにタイムアウトを待つ必要がないためである。
【0056】
(他の実施形態の構成例)
次に、本発明に係るOS障害検出システムの他の実施形態として、図1のシステム構成とは異なる構成例について、図5を参照して、詳細に説明する。図5は、本発明に係るOS障害検出システムの他の構成例を示すシステム構成図である。
【0057】
図5に示すOS障害検出システムにおいては、図1における仮想マシン120上で動作するゲストOS121の代わりに、ハードウェア500内のプロセッサ501上で動作するOS520が、OS障害監視対象のOSとして実装されている。また、図1における仮想マシンモニタ110上で動作するOS障害検出部113の代わりに、ハードウェア500内のプロセッサ501とビデオアダプタ502との間に介在させた形態で、デバイスとしてOS障害検出部503が実装されており、該OS障害検出部503には、図1のOS障害検出部113における各機能と同様に、画面出力命令取得部504、OS障害時動作パターンデータベース505、判定部506が少なくとも備えられている。さらに、図1における仮想マシンモニタ110上で動作する復旧処理部117の代わりに、プロセッサ501上で動作するOS520とは別個のファームウェア510内に復旧処理部511が実装されている。
【0058】
図5に示すように、仮想マシン構成によらずに物理的なリアルマシンを用いてOS障害検出システムを構成する場合であっても、プロセッサ501上で動作するOS520におけるOS障害の発生を検出する動作は、前述の実施形態における図3、図4のフローチャートと略同様であり、プロセッサ501上のOS520がビデオアダプタ502に対して送出する画面出力命令を、プロセッサ501とビデオアダプタ502との間に介在するOS障害検出部503にて監視することによって実現することができる。
【0059】
以下に図5に示すOS障害検出システムのOS障害検出動作について、前述した図2の動作テーブルおよび図3のフローシャートを参照しながら詳細に説明する。デバイスとして実装したOS障害検出部503内のOS障害時動作パターンデータベース505は、OS障害検出部503のROM領域やハードディスク等に格納されており、OS障害時動作パターンデータベース505には、図2に示したように、障害種別毎の一連の動作パターンのセットがOS障害時動作パターンとしてあらかじめ登録されており、OS障害の発生時に、どのような画面出力命令が連続して発生するかを、各障害種別に対応付けて記憶している。
【0060】
図3のフローチャートに示したように、本実施形態においても、まず、OS障害検出部503の判定部506は、OS障害時動作パターンデータベース505の動作パターンテーブルにあらかじめ記憶されているOS障害時動作パターンを読み込む(ステップS301)。
【0061】
ここで、プロセッサ501上のOS520の実行中においては、プロセッサ501とビデオアダプタ502との間に介在するOS障害検出部503は、プロセッサ501上のOS520からのビデオアダプタ502に対する画面出力命令を常時監視しており、画面出力命令が出力されると、OS障害検出部503内の画面出力命令取得部504は、出力された画面出力命令を捕捉して、判定部506に送出する(ステップS302)。この場合、画面出力命令取得部504は、プロセッサ501の出力ポートから出力される物理的な信号として画面出力命令を捕捉する。
【0062】
判定部506は、OS障害時動作パターンデータベース505の動作パターンテーブルからあらかじめ読み込んでおいたOS障害時動作パターンのセットのうち、図2に示した最初の動作パターン1 202−1としてあらかじめ記憶されている動作パターン(例えば、Windows OS障害時の場合、VGAモードへの切替命令)と、画面出力命令取得部504にて捕捉された画面出力命令とを比較する(ステップS303)。両者の命令が一致していなかった場合は(ステップS303の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS302に復帰し、ビデオアダプタ502に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0063】
一方、両者の命令が一致していた場合(ステップS303の「はい」の場合)、OS障害時に最初に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、ステップS304に移行して、次の画面出力命令の出力を監視・捕捉する動作を行う。画面出力命令取得部504は、次に出力された画面出力命令を捕捉すると、判定部506に送出し(ステップS304)、判定部506は、図2に示した次の動作パターン2 202−2としてあらかじめ記憶されている動作パターン(例えば、Windows OS障害時の場合、画面の青色クリア命令)と、画面出力命令取得部504にて次に捕捉された画面出力命令とを比較する(ステップS305)。両者の命令が一致していなかった場合は(ステップS305の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS302に復帰し、ビデオアダプタ502に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0064】
一方、両者の命令が一致していた場合(ステップS305の「はい」の場合)、OS障害時に第2番目に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、次の第3番目の画面出力命令の出力を監視する捕捉動作に移行する。かかる動作を、OS障害時動作パターンのセットとしてOS障害時動作パターンデータベース505の動作パターンテーブルに記憶されている複数の動作パターン(画面出力命令)のすべてについて繰り返す。
【0065】
そして、OS障害時動作パターンのセットとしてOS障害時動作パターンデータベース505の動作パターンテーブルにあらかじめ記憶されている最後の第N番目の動作パターンに達して、該最後の第N番目の動作パターンと画面出力命令取得部504にて捕捉された第N番目の画面出力命令との比較結果とが一致していなかった場合は(ステップS306の「いいえ」の場合)、OS障害が発生していない場合と看做して、ステップS302に復帰し、ビデオアダプタ502に対する最初の動作パターン1 202−1に相当する画面出力命令の出力を監視する動作を継続する。
【0066】
一方、両者の命令が一致していた場合(ステップS306の「はい」の場合)、画面出力命令取得部504にて捕捉された一連の画面出力命令とOS障害時動作パターンのセットとしてOS障害時動作パターンデータベース505の動作パターンテーブルに記憶されているすべての動作パターン(画面出力命令)とが一致した場合であり、監視対象のOS520においてOS障害が発生したものと看做すことができる。したがって、ステップS307に移行して、ハードウェア100内のプロセッサ501上で動作するOS520を動作可能な状態に復旧させるために、例えば、プロセッサ501の再起動を行ったり、プロセッサ501やIO関連の初期化やOS520の初期化を行ったり、あるいは、バックアップファイルからのリストア処理を行ったりすることにより、適切な復旧処理を行う(ステップS307)。
【0067】
以上、本発明の好適実施例の構成を説明した。しかし、斯かる実施例は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【0068】
100 ハードウェア
110 仮想マシンモニタ(VMM)
111 仮想プロセッサ
112 仮想ビデオアダプタ
113 OS障害検出部
114 画面出力命令取得部
115 OS障害時動作パターンデータベース
116 判定部
117 復旧処理部
120 仮想マシン(VM)
121 ゲストOS
201 障害種別
202−1 動作パターン1
202−2 動作パターン2
500 ハードウェア
501 プロセッサ
502 ビデオアダプタ
503 OS障害検出部
504 画面出力命令取得部
505 OS障害時動作パターンデータベース
506 判定部506
520 OS
510 ファームウェア
511 復旧処理部

【特許請求の範囲】
【請求項1】
コンピュータ上で動作するOS(Operating System)に発生するOS障害を検出するOS障害検出手段を備えたOS障害検出システムであって、前記OS障害検出手段は前記OS障害の監視対象である前記OSとは独立の外部に存在し、かつ、前記OS障害検出手段は、前記OS障害が発生した際に前記OSが表示部に対して出力する画面出力命令をOS障害時動作パターンとしてあらかじめ記憶するOS障害時動作パターンデータベースと、前記OSが前記表示部に出力する画面出力命令を捕捉する画面出力命令取得部と、前記画面出力命令取得部にて捕捉された前記画面出力命令と前記OS障害時動作パターンデータベースにあらかじめ記憶されている前記OS障害時動作パターンとを比較し、一致しているか否かに基づいて、前記OS障害が発生したか否かを判定する判定部とを少なくとも備えていることを特徴とするOS障害検出システム。
【請求項2】
前記OS障害時動作パターンデータベースにあらかじめ記憶される前記OS障害時動作パターンは、前記OS障害の障害種別ごとに対応付けて用意されていることを特徴とする請求項1に記載のOS障害検出システム。
【請求項3】
前記OSが前記OS障害の障害種別の如何により複数個の画面出力命令を連続的に前記表示部に出力する場合、前記OS障害時動作パターンデータベースにあらかじめ記憶される前記OS障害時動作パターンは、当該OS障害の障害種別に対応付けて複数個の画面出力命令を登録し、前記判定部は、前記画面出力命令取得部にて捕捉された一連の前記画面出力命令と前記OS障害時動作パターンデータベースにあらかじめ記憶されている複数個の画面出力命令からなる前記OS障害時動作パターンのすべてとが一致しているか否かに基づいて、前記OS障害が発生したか否かを判定することを特徴とする請求項2に記載のOS障害検出システム。
【請求項4】
前記OS障害検出手段が仮想マシン上で動作するゲストOSのOS障害を検出する場合、当該仮想マシンの外部に存在し、当該仮想マシンの動作をモニタする仮想マシンモニタ上に前記OS障害検出手段を配置し、前記OS障害検出手段がハードウェア内のプロセッサ上で動作するOSのOS障害を検出する場合、当該プロセッサと前記表示部を駆動するためのビデオアダプタとの間に介在させる形態で前記OS障害検出手段を配置することを特徴とする請求項1ないし3のいずれかに記載のOS障害検出システム。
【請求項5】
コンピュータ上で動作するOS(Operating System)に発生するOS障害を検出するOS障害検出手段を有するOS障害検出方法であって、前記OS障害検出手段は前記OS障害の監視対象である前記OSとは独立の外部に存在し、かつ、前記OS障害検出手段は、前記OS障害が発生した際に前記OSが表示部に対して出力する画面出力命令をOS障害時動作パターンとしてあらかじめ記憶し、前記OSが前記表示部に出力する画面出力命令を捕捉することにより、捕捉した該画面出力命令とあらかじめ記憶されている前記OS障害時動作パターンとを比較し、一致しているか否かに基づいて、前記OS障害が発生したか否かを判定することを特徴とするOS障害検出方法。
【請求項6】
あらかじめ記憶される前記OS障害時動作パターンは、前記OS障害の障害種別ごとに対応付けて用意されていることを特徴とする請求項5に記載のOS障害検出方法。
【請求項7】
前記OSが前記OS障害の障害種別の如何により複数個の画面出力命令を連続的に前記表示部に出力する場合、あらかじめ記憶される前記OS障害時動作パターンとして、当該OS障害の障害種別に対応付けて複数個の画面出力命令を登録し、前記OSが前記表示部に出力する一連の前記画面出力命令を捕捉することにより、捕捉した一連の該画面出力命令とあらかじめ記憶されている複数個の画面出力命令からなる前記OS障害時動作パターンのすべてとが一致しているか否かに基づいて、前記OS障害が発生したか否かを判定することを特徴とする請求項6に記載のOS障害検出方法。
【請求項8】
請求項5ないし7のいずれかに記載のOS障害検出方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とするOS障害検出プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−209829(P2011−209829A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−74755(P2010−74755)
【出願日】平成22年3月29日(2010.3.29)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】