(57)【特許請求の範囲】
【請求項１】
仮想計算機を実現する仮想計算機管理機構を搭載し，前記仮想計算機管理機構の制御によりデバイスドライバ用仮想計算機を介してデバイスとの通信を行うユーザ仮想計算機を動作させる計算機装置であって，
デバイスとの通信に用いられるデバイスドライバの障害が仮想計算機において検出された際に，当該障害が検出されたデバイスドライバの種別と当該検出された障害の種別とを含む障害検出情報を，当該障害を検出した仮想計算機から受信する障害検出情報受信部と，
デバイスドライバの種別と当該デバイスドライバで生じ得る障害の種別とに対応付けて，当該障害が生じた場合に復旧処理の実行対象となる仮想計算機の種別と当該種別の仮想計算機において実行する復旧処理の内容とが定義された障害復旧制御情報を記憶する障害復旧制御情報記憶部と，
前記障害復旧制御情報から，前記受信した障害検出情報に示されるデバイスドライバの種別と障害の種別とに対応する，仮想計算機の種別と復旧処理の内容とを取得する復旧方法決定部と，
前記取得した仮想計算機の種別に基づいて特定される仮想計算機に対して，前記取得した復旧処理の内容を実行させる復旧指示を送信する復旧指示送信部とを備える
ことを特徴とする計算機装置。
【請求項２】
デバイスとの通信経路となるデバイスドライバ用仮想計算機と，当該デバイスドライバ用仮想計算機を介して当該デバイスを使用するユーザ仮想計算機との対応を示すデバイス使用情報を記憶するデバイス使用情報記憶部をさらに備え，
前記復旧指示送信部は，前記取得した仮想計算機の種別がユーザ仮想計算機を示す場合に，前記デバイス使用情報から，前記受信した障害検出情報に示される前記デバイスドライバの識別情報に基づいて特定されるデバイスドライバ用仮想計算機に対応するユーザ仮想計算機を特定し，当該特定したユーザ仮想計算機に対して前記復旧指示を送信する
ことを特徴とする請求項１に記載の計算機装置。
【請求項３】
仮想計算機を実現する仮想計算機管理機構を搭載し，前記仮想計算機管理機構の制御によりデバイスドライバ用仮想計算機を介してデバイスとの通信を行うユーザ仮想計算機を動作させる計算機装置のコンピュータに実行させるためのプログラムであって，
前記コンピュータに，
デバイスとの通信に用いられるデバイスドライバの障害が仮想計算機において検出された際に，当該障害が検出されたデバイスドライバの種別と当該検出された障害の種別とを含む障害検出情報を，当該障害を検出した仮想計算機から受信する手順と，
デバイスドライバの種別と当該デバイスドライバで生じ得る障害の種別とに対応付けて，当該障害が生じた場合に復旧処理の実行対象となる仮想計算機の種別と当該種別の仮想計算機において実行する復旧処理の内容とが定義された障害復旧制御情報から，前記受信した障害検出情報に示されるデバイスドライバの種別と障害の種別とに対応する，仮想計算機の種別と復旧処理の内容とを取得する手順と，
前記取得した仮想計算機の種別に基づいて特定される仮想計算機に対して，前記取得した復旧処理の内容を実行させる復旧指示を送信する手順とを
実行させるための障害復旧制御プログラム。
【請求項４】
仮想計算機を実現する仮想計算機管理機構を搭載し，前記仮想計算機管理機構の制御によりデバイスドライバ用仮想計算機を介してデバイスとの通信を行うユーザ仮想計算機を動作させる計算機装置のコンピュータが実行する障害復旧制御方法であって，
前記コンピュータが，
デバイスとの通信に用いられるデバイスドライバの障害が仮想計算機において検出された際に，当該障害が検出されたデバイスドライバの種別と当該検出された障害の種別とを含む障害検出情報を，当該障害を検出した仮想計算機から受信する過程と，
デバイスドライバの種別と当該デバイスドライバで生じ得る障害の種別とに対応付けて，当該障害が生じた場合に復旧処理の実行対象となる仮想計算機の種別と当該種別の仮想計算機において実行する復旧処理の内容とが定義された障害復旧制御情報から，前記受信した障害検出情報に示されるデバイスドライバの種別と障害の種別とに対応する，仮想計算機の種別と復旧処理の内容とを取得する過程と，
前記取得した仮想計算機の種別に基づいて特定される仮想計算機に対して，前記取得した復旧処理の内容を実行させる復旧指示を送信する過程とを実行する
ことを特徴とする障害復旧制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想化技術が導入された計算機装置に関するものであり，発生したデバイスドライバ障害の復旧を行う計算機装置，障害復旧制御プログラムおよび障害復旧制御方法に関するものである。
【背景技術】
【０００２】
物理的な１台の計算機で，仮想的な複数の計算機を動作させる仮想化技術がある。仮想化技術によって仮想化された計算機は，仮想計算機や仮想マシンなどと呼ばれる。
【０００３】
仮想化技術が導入された計算機では，計算機に搭載または接続されたデバイスを，計算機上で動作する複数の仮想マシンが共有する。このとき，各仮想マシンに，各デバイスを利用するためのデバイスドライバが必要となる。
【０００４】
近年，複数の仮想マシンでデバイスやそのデバイスドライバの共通利用が可能となるように，デバイスドライバをフロントエンドとバックエンドとに分離して仮想マシンに配置するスプリットドライバと呼ばれる技術が提案されている。この技術では，実際にデバイスを制御するバックエンドのデバイスドライバを専用の仮想マシンに配置し，デバイスを使用したい各仮想マシンは，そのデバイスドライバが配置された専用の仮想マシンを介して，デバイスを使用する。この技術を導入することにより，各仮想マシン向けのドライバ開発の負担を軽減することが可能となる。
【０００５】
このような仮想化技術が導入された計算機において，デバイスドライバの障害が発生した場合に，例えば，仮想マシンモニタを含む仮想化システム全体を再起動することにより，障害の復旧を図ることが可能である。
【０００６】
なお，ユーザが利用するユーザ用論理区画と，Ｉ／Ｏデバイスを有するＩ／Ｏ用論理区画とを独立して構成することにより，Ｉ／Ｏデバイスの障害の影響がユーザ用論理区画に波及することを防止する技術が知られている。また，障害管理ＶＭとしてのホストＯＳにゲストＯＳからの障害発生の情報を集約する技術が知られている。また，システム内の構成要素で障害が発生したときに，代替構成要素を探索し，障害が発生した構成要素の代替処理を実行させる技術が知られている。また，ハイパーバイザが物理Ｉ／Ｏデバイスの障害監視を行い，障害発生時には障害を管理用仮想計算機に通知し，通知を受けた管理用仮想計算機が物理Ｉ／Ｏデバイスの障害リカバリ処理を行う技術が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−８５５４３号公報
【特許文献２】特開２００９−１５１５０９号公報
【特許文献３】特開平０６―２３０９９２号公報
【特許文献４】特開２００８−１８６２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述の仮想化システム全体を再起動する方法では，障害が発生したデバイスドライバに関係しないアプリケーションプログラムや仮想マシンまでをも停止して，再起動を行わなければならないという問題がある。また，仮想化システム全体の再起動には，非常に時間がかかるという問題がある。
【０００９】
また，上述したような仮想化システムにおけるデバイスドライバの構成では，デバイスドライバ障害の復旧処理を行う適切な仮想マシンの範囲や，障害の復旧方法などは，仮想マシンの構成や，デバイスの種類，発生した障害の種類などにより異なる。そのため，デバイスドライバ障害の検出や，障害と関係がない処理に影響を及ぼさない範囲に限定した障害の復旧は，容易ではない。
【００１０】
本発明は，上記の問題点の解決を図り，仮想化技術が導入された計算機において，仮想化システムを継続動作させたまま，発生したデバイスドライバ障害を速やかに復旧することが可能となる技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
仮想計算機を実現する仮想計算機管理機構を搭載し，仮想計算機管理機構の制御によりデバイスドライバ用仮想計算機を介してデバイスとの通信を行うユーザ仮想計算機を動作させる計算機装置は，デバイスとの通信に用いられるデバイスドライバの障害が仮想計算機において検出された際に，当該障害が検出されたデバイスドライバの種別と当該検出された障害の種別とを含む障害検出情報を，当該障害を検出した仮想計算機から受信する障害検出情報受信部と，デバイスドライバの種別と当該デバイスドライバで生じ得る障害の種別とに対応付けて，当該障害が生じた場合に復旧処理の実行対象となる仮想計算機の種別と当該種別の仮想計算機において実行する復旧処理の内容とが定義された障害復旧制御情報を記憶する障害復旧制御情報記憶部と，障害復旧制御情報から，受信した障害検出情報に示されるデバイスドライバの種別と障害の種別とに対応する，仮想計算機の種別と復旧処理の内容とを取得する復旧方法決定部と，取得した仮想計算機の種別に基づいて特定される仮想計算機に対して，取得した復旧処理の内容を実行させる復旧指示を送信する復旧指示送信部とを備える。
【発明の効果】
【００１２】
上記の技術によって，デバイスドライバの種別や，発生したデバイスドライバ障害の種別に応じて，復旧処理を行う適切な仮想マシンの範囲や，障害の復旧方法を決定し，適切な障害復旧の制御を行うことができる。これにより，障害に関係がないアプリケーションや仮想マシンを継続動作させたまま，速やかにデバイスドライバ障害の復旧を行うことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態による計算機装置の構成例を示す図である。
【図２】本実施の形態の管理ＶＭ障害管理部による障害復旧制御処理フローチャートである。
【図３】本実施例による計算機装置の構成例を示す図である。
【図４】本実施例による障害復旧制御情報の例を示す図である。
【図５】本実施例による障害復旧制御情報の具体的なデータ構造・定数の定義の例を示す図である。
【図６】本実施例によるデバイス使用情報の例を示す図である。
【図７】本実施例による障害復旧制御の通信で用いられる情報のデータ構造の例を示す図である。
【図８】本実施例によるデバイスドライバ障害発生時における障害復旧制御の処理シーケンスの例を示す図である。
【発明を実施するための形態】
【００１４】
以下，本実施の形態について，図を用いて説明する。
【００１５】
図１は，本実施の形態による計算機装置の構成例を示す図である。
【００１６】
計算機装置１は，仮想化技術が導入されたコンピュータであり，計算機装置１上では，複数の仮想化された計算機が動作する。仮想化された計算機は，仮想マシンや仮想計算機などと呼ばれる。以下では，仮想マシンをＶＭ（Virtual Machine ）とも呼ぶ。図１に示す計算機装置１において，管理ＶＭ１０，ドライバＶＭ２０，ゲストＶＭ３０は，仮想マシンである。
【００１７】
仮想マシンモニタ４０は，ハイパーバイザや仮想化ＯＳなどとも呼ばれ，１つの計算機装置１を複数の仮想マシンとして使用するための制御を行う仮想マシン管理機構である。仮想マシンモニタ４０は，仮想マシン間通信の制御など，計算機装置１上で動作する仮想マシンの制御を行う。
【００１８】
計算機装置１は，ハードウェア５０として，ＣＰＵ（Central Processing Unit ）５１，ＲＡＭ（Random Access Memory）等のメモリ５２，ＨＤＤ（Hard Disk Drive ）等の記憶装置５３，その他様々なデバイス５５などを備える。
【００１９】
管理ＶＭ１０，ドライバＶＭ２０，ゲストＶＭ３０，仮想マシンモニタ４０は，計算機装置１のコンピュータが備えるＣＰＵ５１，メモリ５２等のハードウェア５０と，ソフトウェアプログラムとによって実現することが可能である。計算機装置１のコンピュータが実行可能なプログラムは，記憶装置５３に記憶され，その実行時にメモリ５２に読み出され，ＣＰＵ５１により実行される。
【００２０】
なお，計算機装置１のコンピュータは，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。また，計算機装置１のコンピュータは，サーバコンピュータからプログラムが転送されるごとに，逐次，受け取ったプログラムに従った処理を実行することもできる。さらに，このプログラムは，計算機装置１のコンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００２１】
管理ＶＭ１０は，仮想化システム全体の管理を行う管理ＯＳが動作する仮想マシンである。例えば，管理ＶＭ１０は，計算機装置１の電源ＯＮ時に他のＶＭより先に起動され，他のＶＭの起動・停止の制御や，ＶＭ間のアクセス関係の管理などを行う。
【００２２】
管理ＶＭ１０は，管理ＶＭ障害管理部１００，デバイス使用情報記憶部１１０，通信処理部１２０を備える。
【００２３】
管理ＶＭ障害管理部１００は，デバイスドライバの動作を監視し，デバイスドライバに障害が発生しているか否かの判断を行う。
【００２４】
また，管理ＶＭ障害管理部１００は，デバイスドライバの障害を検出した場合に，または他のＶＭからデバイスドライバの障害検出の通知を受けた場合に，障害が発生したデバイスドライバの復旧方法の決定や指示などの障害復旧制御を行う。管理ＶＭ障害管理部１００は，デバイスドライバ障害の復旧制御を行う機能部として，障害検出情報受信部１０１，復旧方法決定部１０２，障害復旧制御情報記憶部１０３，復旧指示送信部１０４を備える。
【００２５】
障害検出情報受信部１０１は，デバイスドライバの障害を検出したＶＭから，障害検出情報を受信する。管理ＶＭ１０自身がデバイスドライバ障害を検出したときには，障害検出情報受信部１０１は，障害を検出した自身の管理ＶＭ障害管理部１００から障害検出情報を得る。他のＶＭがデバイスドライバ障害を検出したときには，障害検出情報受信部１０１は，仮想マシンモニタ４０を介したＶＭ間通信によって，障害を検出したＶＭから障害検出情報を得る。
【００２６】
障害検出情報には，障害種別の情報とデバイス種別の情報とが含まれる。障害種別は，デバイスドライバで生じ得る障害の種別を示す。障害検出情報に含まれる障害種別の情報は，検出された障害の種別を示す情報である。また，デバイス種別は，計算機装置１に搭載または接続されるデバイス５５の種別を示す。デバイス５５の利用には，そのデバイス５５に対応するデバイスドライバが必要となる。障害検出情報に含まれるデバイス種別の情報は，障害が検出されたデバイスドライバの種別を示す情報である。
【００２７】
復旧方法決定部１０２は，障害復旧制御情報記憶部１０３に記憶された障害復旧制御情報から，受信した障害検出情報に含まれている障害種別とデバイス種別とに対応する，障害復旧範囲と障害復旧方法とを取得する。障害復旧範囲は，障害の復旧処理の実行対象となるＶＭの種別を含む，障害の復旧処理を行うコンポーネントの範囲を示す。ＶＭの種別は，ドライバＶＭ２０，ゲストＶＭ３０など，ＶＭの用途や特徴等に応じて分類されたＶＭの種別を示す。障害復旧方法は，障害復旧範囲のＶＭに実行させる復旧処理の内容を示す。
【００２８】
障害復旧制御情報記憶部１０３は，障害復旧制御情報が記憶された，コンピュータがアクセス可能な記憶装置である。障害復旧制御情報は，障害種別とデバイス種別とに対応する，障害復旧範囲と障害復旧方法とが定義された情報である。例えば，本実施の形態による障害復旧制御情報は，デバイスドライバの種別とそのデバイスドライバで生じ得る障害の種別との組合せに対応する，障害の復旧処理の実行対象となるＶＭの種別とその種別のＶＭに実行させる復旧処理の内容との組合せが定義された情報である。
【００２９】
復旧指示送信部１０４は，取得された障害復旧範囲から障害復旧対象のＶＭを特定し，特定した障害復旧対象のＶＭに対して，取得された障害復旧方法の実行を指示する障害復旧指示情報を送信する。障害復旧指示情報は，取得された障害復旧方法に示された復旧処理の内容を障害復旧対象のＶＭに実行させる復旧指示の情報である。
【００３０】
デバイス使用情報記憶部１１０は，デバイス使用情報を記憶する，コンピュータがアクセス可能な記憶装置である。デバイス使用情報は，計算機装置１で使用される各デバイス５５について，デバイス５５に対応するデバイスドライバを有するドライバＶＭ２０と，該ドライバＶＭ２０を介して該デバイス５５を使用するゲストＶＭ３０との対応関係を示す情報である。
【００３１】
デバイス使用情報記憶部１１０に記憶されたデバイス使用情報は，本実施の形態による障害復旧の制御にのみに利用される情報ではなく，初期化処理時，終了処理時，通常動作時などに各デバイスドライバの状態を参照，更新する際に利用される一般的な情報である。
【００３２】
復旧指示送信部１０４は，取得された障害復旧範囲にゲストＶＭ３０が含まれる場合に，デバイス使用情報から，障害検出情報に示されるデバイス種別に基づいて特定されるドライバＶＭ２０に対応するゲストＶＭ３０を，障害復旧対象のＶＭとして特定する。復旧指示送信部１０４は，障害復旧対象のＶＭとして特定したゲストＶＭ３０に対して，障害復旧指示情報を送信する。デバイス使用情報を用いることにより，障害復旧対象のＶＭを容易に特定することができる。
【００３３】
通信処理部１２０は，ドライバＶＭ２０やゲストＶＭ３０との間の，障害検出の報告や障害復旧の指示などに関するメッセージ通信の処理を行う。
【００３４】
ドライバＶＭ２０は，デバイス５５を制御するデバイスドライバを動作させるデバイスドライバ用仮想マシンである。デバイス５５の種別ごとに，ドライバＶＭ２０を複数起動することも可能である。ドライバＶＭ２０は，バックエンドドライバ２１，ドライバＶＭ障害管理部２２，通信処理部２３を備える。
【００３５】
バックエンドドライバ２１は，ゲストＶＭ３０のフロントエンドドライバ３１からのデバイス制御要求を受けて，実際にデバイス５５の制御を行うバックエンドのデバイスドライバである。
【００３６】
ドライバＶＭ障害管理部２２は，デバイスドライバの動作を監視し，デバイスドライバに障害が発生しているか否かの判断を行う。デバイスドライバの障害を検出した場合には，ドライバＶＭ障害管理部２２は，管理ＶＭ１０の管理ＶＭ障害管理部１００に対して障害検出情報を送信する。また，ドライバＶＭ障害管理部２２は，管理ＶＭ１０から受信した障害復旧指示情報の指示に従って，障害の復旧処理を実行する。
【００３７】
通信処理部２３は，管理ＶＭ１０との間の，障害検出の報告や障害復旧の指示などに関するメッセージ通信の処理を行う。
【００３８】
ゲストＶＭ３０は，ユーザが使用するアプリケーションの動作が可能なゲストＯＳが動作するユーザ仮想マシンである。計算機装置１の使用形態に応じて，ゲストＶＭ３０を複数起動することも可能である。ゲストＶＭ３０は，フロントエンドドライバ３１，ゲストＶＭ障害管理部３２，通信処理部３３を備える。
【００３９】
フロントエンドドライバ３１は，ゲストＶＭ３０においてデバイス５５への制御が発生した場合に，デバイス制御要求によってデバイス５５への制御をドライバＶＭ２０のバックエンドドライバ２１に依頼する，フロントエンドのデバイスドライバである。
【００４０】
ゲストＶＭ障害管理部３２は，デバイスドライバの動作を監視し，デバイスドライバに障害が発生しているか否かの判断を行う。デバイスドライバの障害を検出した場合には，ゲストＶＭ障害管理部３２は，管理ＶＭ１０の管理ＶＭ障害管理部１００に対して障害検出情報を送信する。また，ゲストＶＭ障害管理部３２は，管理ＶＭ１０から受信した障害復旧指示情報の指示に従って，障害の復旧処理を実行する。
【００４１】
通信処理部３３は，管理ＶＭ１０との間の，障害検出の報告や障害復旧の指示などに関するメッセージ通信の処理を行う。
【００４２】
ここで，図１に示す計算機装置１におけるゲストＶＭ３０からデバイス５５への制御について，説明する。
【００４３】
図１に示す計算機装置１では，計算機装置１に搭載または接続された各種デバイス５５を，計算機装置１上で動作する複数のゲストＶＭ３０が共有する。各種デバイス５５を利用するためには，各種デバイス５５に応じたデバイスドライバが必要となる。このとき，ゲストＶＭ３０ごとに各種デバイス５５のデバイスドライバを用意すると，各ゲストＶＭ３０に割り当てられたリソースが，それぞれ多数のデバイスドライバで使用されることになる。
【００４４】
図１に示す計算機装置１では，複数のゲストＶＭ３０でデバイス５５やそのデバイスドライバの共通利用が可能となるように，デバイスドライバをフロントエンドドライバ３１とバックエンドドライバ２１とに分離するスプリットドライバと呼ばれる技術が導入されている。
【００４５】
この技術では，実際にデバイス５５を制御する処理を行う，プログラム規模が大きいバックエンドドライバ２１が，ドライバＶＭ２０に配置される。各ゲストＶＭ３０には，バックエンドドライバ２１にデバイス５５への制御を依頼する処理を行う，プログラム規模が小さいフロントエンドドライバ３１が配置される。各ゲストＶＭ３０は，各自のフロントエンドドライバ３１を介して，ドライバＶＭ２０のバックエンドドライバ２１を共用する。
【００４６】
この技術により，図１に示す計算機装置１では，デバイスドライバの実装によるゲストＶＭ３０のリソース負荷を軽減している。
【００４７】
図１において，破線の矢印は，デバイス制御に関する通信を示す。ゲストＶＭ３０は，デバイス５５の使用時に，直接にデバイス５５を制御せずに，フロントエンドドライバ３１から，ドライバＶＭ２０のバックエンドドライバ２１に対して，デバイス制御の要求を送る。ドライバＶＭ２０において，バックエンドドライバ２１は，ゲストＶＭ３０のフロントエンドドライバ３１からのデバイス制御の要求に応じて，実際にデバイス５５を制御する処理を行う。
【００４８】
次に，図１に示す計算機装置１において，デバイスドライバの障害発生時の障害復旧制御について，説明する。
【００４９】
図１に示す計算機装置１において，デバイスドライバの障害が発生した場合に，仮想マシンモニタ４０を含む仮想化システム全体を再起動することにより，障害の復旧を図ることが可能である。しかし，仮想化システム全体の再起動をすると，障害が発生したデバイスドライバに関係しないアプリケーションプログラムやゲストＶＭ３０までをも停止して，再起動を行わなければならないという問題がある。また，仮想化システム全体の再起動には，非常に時間がかかるという問題がある。
【００５０】
図１に示す計算機装置１において，障害が発生したデバイスドライバに関係しないアプリケーションプログラムやゲストＶＭ３０については，障害復旧の制御による影響を受けないように，継続して動作させたい。また，デバイスドライバ障害の検出から復旧までの制御を，時間をかけずに，速やかに実行したい。しかし，上述したような仮想化システムにおけるデバイスドライバの構成では，１つのデバイスドライバが複数のＶＭに関係するので，デバイスドライバ障害の検出や，障害と関係がない処理に影響を及ぼさない範囲に限定した障害復旧の制御は，容易ではない。
【００５１】
以下，このような問題を解決した本実施の形態による障害復旧の制御について説明する。図１において，太線の矢印は，障害の検出・復旧の制御に関する通信を示す。
【００５２】
図１に示す計算機装置１では，各ＶＭが，それぞれデバイスドライバの動作を監視し，障害発生の判断を行う障害検出機能部を備える。管理ＶＭ障害管理部１００，ドライバＶＭ障害管理部２２，ゲストＶＭ障害管理部３２は，それぞれ管理ＶＭ１０，ドライバＶＭ２０，ゲストＶＭ３０における障害検出機能部である。
【００５３】
各ＶＭの障害検出機能部は，デバイスドライバ障害を検出すると，そのデバイスドライバ障害に関する障害検出情報を管理ＶＭ１０の障害復旧制御部に報告する。管理ＶＭ１０の管理ＶＭ障害管理部１００は，障害検出機能部と障害復旧制御部とを兼ねている。
【００５４】
図２は，本実施の形態の管理ＶＭ障害管理部による障害復旧制御処理フローチャートである。
【００５５】
管理ＶＭ１０の管理ＶＭ障害管理部１００において，障害検出情報受信部１０１は，デバイスドライバの障害を検出したＶＭから，通信処理部１２０を介して，障害検出情報を受信する（ステップＳ１０）。
【００５６】
復旧方法決定部１０２は，障害検出情報に含まれる情報から，発生した障害の種別と，障害が発生したデバイスドライバの種別とを特定する（ステップＳ１１）。障害検出情報には，発生した障害の種別を示す情報や，障害が発生したデバイスドライバの種別を示す情報，障害を検出して通知したＶＭの情報，デバイスドライバ障害が発生したドライバＶＭ２０の情報などが含まれている。
【００５７】
復旧方法決定部１０２は，障害復旧制御情報記憶部１０３に記憶された障害復旧制御情報から，特定された障害種別とデバイス種別との組合せに対応する，障害復旧範囲と障害復旧方法との組合せを取得する（ステップＳ１２）。デバイスドライバの種別や，発生した障害の種別によって，復旧処理を行うＶＭの範囲や，行われる復旧処理の内容が異なる。障害復旧制御情報には，デバイスドライバの種別や発生した障害の種別と，復旧処理を行うＶＭの範囲や行われる復旧処理の内容との対応が，あらかじめ定義されている。
【００５８】
復旧指示送信部１０４は，取得された障害復旧範囲の情報から，障害復旧対象のＶＭを特定する（ステップＳ１３）。例えば，復旧指示送信部１０４は，障害復旧範囲がデバイスドライバ障害が発生したドライバＶＭ２０のバックエンドドライバ２１である場合に，デバイスドライバ障害が発生したドライバＶＭ２０を障害復旧対象のＶＭとする。また，例えば，障害復旧範囲が，障害が発生したデバイスドライバを共用するゲストＶＭ３０である場合に，デバイス使用情報記憶部１１０に記憶されたデバイス使用情報から，障害が発生したデバイスドライバを共用するゲストＶＭ３０をすべて抽出し，障害復旧対象のＶＭとする。
【００５９】
復旧指示送信部１０４は，通信処理部１２０を介して，特定された障害復旧対象のＶＭに，取得された障害復旧方法の情報に示された復旧処理の実行を指示する障害復旧指示情報を送信する（ステップＳ１４）。
【００６０】
障害復旧指示情報を受けた障害復旧対象のＶＭでは，障害復旧指示情報の指示に従って，障害の復旧処理が行われる。
【００６１】
このような本実施の形態による障害復旧制御によって，仮想化システムにおいてデバイスドライバ障害が発生した場合に，検出された障害に応じた適切な範囲のＶＭに限定して，検出された障害に応じた適切な障害の復旧処理を行わせることができる。
【００６２】
これにより，障害が発生したデバイスドライバに関係しないアプリケーションプログラムやゲストＶＭ３０を停止させずに，システムを継続動作させることが可能となり，システムの信頼性が向上する。
【００６３】
また，デバイスドライバ障害の種別，デバイスドライバの種別に応じて詳細な障害復旧方法を変化させることが可能となるため，障害からの復旧時間を短縮することが可能となる。
【００６４】
〔実施例〕
以下では，本実施の形態によるデバイスドライバの障害復旧制御の具体的な実施例を説明する。
【００６５】
図３は，本実施例による計算機装置の構成例を示す図である。
【００６６】
図３に示す計算機装置１ａは，図１に示す計算機装置１の一例である。ここでは，計算機装置１ａは，例えば携帯電話機などの携帯端末であるものとする。
【００６７】
近年，ＣＰＵ性能の向上やメモリの大容量化など，組込み機器や携帯端末のハードウェア資源が向上している。そのため，組込み機器や携帯端末に，１台の装置で複数のＯＳを動作させる仮想化技術を導入することも可能となっている。
【００６８】
このような組込み機器や携帯端末では，様々な種類のデバイスを扱う必要があり，導入されるデバイスドライバも多種類に渡る。組込み機器や携帯端末の開発サイクルは短期化が著しく，新規のデバイスに対応するデバイスドライバを短期間で開発して動作検証し，システムに組み込んで出荷することが求められる。
【００６９】
デバイスドライバのプログラム規模は大きく，デバイスドライバがシステムプログラム全体に占める割合も大きくなる傾向にある。新しいデバイスに対応して新規に開発され，短期間の検証しか行われていないデバイスドライバは，他のモジュールに比べると信頼性が低い傾向にある。このため，デバイスドライバに障害が発生した場合を想定して，そのようなケースでもシステム全体が安定して動作する仕組みを考える必要がある。
【００７０】
このような状況を踏まえて，図３に示す計算機装置１ａでは，デバイスドライバの障害が発生した際に，システムを継続動作させた状態での，速やかな障害の復旧制御が行われる。
【００７１】
仮想化技術が導入された携帯端末である計算機装置１ａは，管理ＶＭ１０，２つのドライバＶＭ２０，２つのゲストＶＭ３０，仮想マシンモニタ４０を備える。図３に示す計算機装置１ａにおいて，各ＶＭおよび仮想マシンモニタ４０の構成は，図１に示す計算機装置１と同様である。なお，図示省略されているが，図３に示す計算機装置１ａにおける管理ＶＭ１０の管理ＶＭ障害管理部１００は，障害復旧制御情報記憶部１０３以外にも，障害検出情報受信部１０１，復旧方法決定部１０２，復旧指示送信部１０４を備える。
【００７２】
計算機装置１ａは，ハードウェア５０として，無線ＬＡＮデバイス５５ａ，ＳＤメモリデバイス５５ｂの，２つのデバイス５５を備える。なお，図示省略されているが，図３に示す計算機装置１ａは，図１に示すハードウェア５０におけるＣＰＵ５１，メモリ５２，記憶装置５３等も備えている。
【００７３】
計算機装置１ａでは，２つのデバイス５５に応じて，それらのデバイス５５を制御するための２つのドライバＶＭ２０が用意されている。ドライバＶＭ２０ａは，無線ＬＡＮデバイス５５ａを制御するドライバＶＭ２０である。ドライバＶＭ２０ａが備えるバックエンドドライバ２１は，無線ＬＡＮデバイス５５ａに対応するデバイスドライバのバックエンドドライバ（無線ＬＡＮ）２１ａである。ドライバＶＭ２０ｂは，ＳＤメモリデバイス５５ｂを制御するドライバＶＭ２０である。ドライバＶＭ２０ｂが備えるバックエンドドライバ２１は，ＳＤメモリデバイス５５ｂに対応するデバイスドライバのバックエンドドライバ（ＳＤメモリ）２１ｂである。
【００７４】
計算機装置１ａでは，２つのゲストＶＭ３０が動作している。ゲストＶＭ３０ａは，ＳＤメモリデバイス５５ｂを利用する。ゲストＶＭ３０ａが備えるフロントエンドドライバ３１は，ＳＤメモリデバイス５５ｂに対応するデバイスドライバのフロントエンドドライバ（ＳＤメモリ）３１ａである。なお，ゲストＶＭ３０ａは，無線ＬＡＮデバイス５５ａを利用しない。ゲストＶＭ３０ｂは，無線ＬＡＮデバイス５５ａとＳＤメモリデバイス５５ｂとを利用する。ゲストＶＭ３０ｂが備えるフロントエンドドライバ３１は，無線ＬＡＮデバイス５５ａに対応するデバイスドライバのフロントエンドドライバ（無線ＬＡＮ）３１ｂ1 と，ＳＤメモリデバイス５５ｂに対応するデバイスドライバのフロントエンドドライバ（ＳＤメモリ）３１ｂ2 である。このように，ＳＤメモリデバイス５５ｂは，ゲストＶＭ３０ａとゲストＶＭ３０ｂとで共用されている。
【００７５】
なお，図３において，各ＶＭのドメインＩＤは，各ＶＭをそれぞれ一意に識別する識別情報である。管理ＶＭ１０のドメインＩＤは，“０”である。ドライバＶＭ２０ａのドメインＩＤは，“１”である。ドライバＶＭ２０ｂのドメインＩＤは，“２”である。ゲストＶＭ３０ａのドメインＩＤは，“３”である。ゲストＶＭ３０ｂのドメインＩＤは，“４”である。
【００７６】
図４は，本実施例による障害復旧制御情報の例を示す図である。
【００７７】
図３に示す計算機装置１ａにおいて，障害復旧制御情報記憶部１０３には，図４に示す障害復旧制御情報１５０が記憶されているものとする。
【００７８】
図４に示す障害復旧制御情報１５０には，障害種別，デバイス種別，障害復旧範囲，障害復旧方法のエントリが存在する。
【００７９】
障害種別は，デバイスドライバの障害を分類した情報である。図４に示す障害復旧制御情報１５０では，“バックエンドドライバ無応答”と“メモリ保護違反”の２種類の障害種別が示されている。“バックエンドドライバ無応答”は，ゲストＶＭ３０が，自身のフロントエンドドライバ３１からドライバＶＭ２０上のバックエンドドライバ２１にデバイス操作の要求を送信したときに，そのバックエンドドライバ２１から応答が返ってこないという障害である。ゲストＶＭ３０のゲストＶＭ障害管理部３２は，デバイス操作の要求に対するバックエンドドライバ２１からの応答が，一定時間を超えても返って来ない場合に，“バックエンドドライバ無応答”の障害が発生したと判断する。“メモリ保護違反”は，デバイスドライバが不正なメモリアクセスを行った結果として発生する障害である。“メモリ保護違反”の障害発生時には，仮想マシンモニタ４０から該当ＶＭに対して例外が通知される。この通知により，該当ＶＭの障害管理部は，障害発生を検出する。
【００８０】
デバイス種別のエントリには，計算機装置１ａで使用されているデバイス５５の種別が示される。図４に示す障害復旧制御情報１５０では，無線ＬＡＮデバイス５５ａ，ＳＤメモリデバイス５５ｂの２種類のデバイス５５が示されている。なお，デバイスドライバの障害という観点において，デバイス５５の種別は，間接的にそのデバイス５５に対応するデバイスドライバの種別を示している。
【００８１】
障害復旧範囲のエントリには，障害発生時に復旧処理を行うコンポーネントの範囲が示されている。図４に示す障害復旧制御情報１５０の障害復旧範囲のエントリでは，復旧処理を行うＶＭの種別と，括弧書きでそのＶＭにおいて復旧の対象となる範囲が示されている。ＶＭの種別は，ドライバＶＭ２０，ゲストＶＭ３０などの種別である。
【００８２】
例えば，計算機装置１ａにおいて，無線ＬＡＮデバイス５５ａに対応するデバイスドライバで，“バックエンドドライバ無応答”の障害が発生したものとする。図４に示す障害復旧制御情報１５０では，“無線ＬＡＮ”と“バックエンドドライバ無応答”との組合せに対応する障害復旧範囲として，無線ＬＡＮデバイス５５ａに対応するドライバＶＭ２０ａのバックエンドドライバ（無線ＬＡＮ）２１ａの復旧処理を行う必要があることが示されている。また，同様に，無線ＬＡＮデバイス５５ａを使用するゲストＶＭ３０ｂのフロントエンドドライバ（無線ＬＡＮ）３１ｂ1 の復旧処理を行う必要があることが示されている。
【００８３】
障害復旧方法のエントリには，それぞれの障害復旧範囲に対する障害からの復旧方法が示されている。図４に示す障害復旧制御情報１５０の障害復旧方法のエントリでは，障害復旧範囲のＶＭで実行する復旧処理と，括弧書きでデバイス５５の初期化が必要であるかのオプションの指定が示されている。復旧方法決定部１０２は，デバイスドライバ障害の発生時に，障害復旧制御情報１５０の障害復旧方法のエントリを参照して，復旧方法を決定する。
【００８４】
例えば，計算機装置１ａにおいて，ゲストＶＭ３０ａがＳＤメモリデバイス５５ｂを操作しているときに，ドライバＶＭ２０ｂ上のバックエンドドライバ（ＳＤメモリ）２１ｂからの応答が一定時間返ってこなかったものとする。このとき，図４に示す障害復旧制御情報１５０から決定された障害復旧方法により，ドライバＶＭ２０ｂのバックエンドドライバ（ＳＤメモリ）２１ｂの再起動が行われる。この場合には，障害復旧方法のオプションにより，ＳＤメモリデバイス５５ｂの初期化は行われない。また，これに対応して，ゲストＶＭ３０ａ上のフロントエンドドライバ（ＳＤメモリ）３１ａと，ゲストＶＭ３０ｂ上のフロントエンドドライバ（ＳＤメモリ）３１ｂ2 のデタッチ処理，アタッチ処理が行われる。
【００８５】
障害種別，デバイス種別によっては，デバイスドライバの再起動時に，デバイス５５の初期化が不要なケースもある。このようなケースでは，障害復旧制御情報１５０の障害復旧方法のオプションで指定しておくことにより必要のない処理を省くことができ，より高速なデバイスドライバの復旧処理が可能となる。
【００８６】
図５は，本実施例による障害復旧制御情報の具体的なデータ構造・定数の定義の例を示す図である。
【００８７】
図５では，障害復旧制御情報１５０をＣコードで実装する場合のデータ構造や，各エントリに記録される定数の定義が示されている。
【００８８】
障害種別の定義部分では，“バックエンドドライバ無応答”に対して“１”の値が定義されている。また，“メモリ保護違反”に対して“２”の値が定義されている。
【００８９】
デバイス種別の定義部分では，“無線ＬＡＮ”に対して“１”が定義されている。また，“ＳＤメモリ”に対して“２”が定義されている。また，“ＬＣＤ（Liquid Crystal Display）”に対して“３”が定義されている。また，“キーパッド”に対して“４”が定義されている。
【００９０】
障害復旧範囲の定義部分では，“ドライバＶＭのバックエンドドライバ”に対して“１”が定義されている。また，“ドライバＶＭの全体”に対して“２”が定義されている。また，“ゲストＶＭの全体”に対して“３”が定義されている。また，“ゲストＶＭのフロントエンドドライバ”に対して“４”が定義されている。
【００９１】
障害復旧方法の定義部分では，“ドライバの再アタッチ”に対して“１”が定義されている。また，“ドライバ再起動”に対して“２”が定義されている。また，“ＶＭ再起動”に対して“３”が定義されている。また，“システム再起動”に対して“４”が定義されている。
【００９２】
障害復旧方法オプションの定義部分では，“デバイス初期化不要”に“１”が定義されている。
【００９３】
なお，以下の説明では，図５で定義された数値を用いて，障害復旧制御に関する通信が行われるものとする。
【００９４】
図６は，本実施例によるデバイス使用情報の例を示す図である。
【００９５】
図３に示す計算機装置１ａにおいて，デバイス使用情報記憶部１１０には，図６に示すデバイス使用情報１５１が記憶されているものとする。図６に示すデバイス使用情報１５１には，計算機装置１ａの仮想化システム内で使用している各デバイス５５に応じたデバイスドライバの，バックエンドドライバ２１が動作するドライバＶＭ２０と，フロントエンドドライバ３１が動作するゲストＶＭ３０との対応関係が記録されている。
【００９６】
デバイス使用情報１５１は，障害復旧制御の処理時以外にも，初期化処理時，終了処理時，通常動作時などに各デバイスドライバの状態を参照，更新する際に用いられる一般的な制御情報である。障害復旧制御の処理時には，管理ＶＭ１０がどのゲストＶＭに対して障害復旧の指示を出すべきかを決定するために用いられる。
【００９７】
図６に示すデバイス使用情報１５１には，デバイス種別，フロントエンドＶＭ，バックエンドＶＭ，ステータスのエントリが存在する。
【００９８】
デバイス種別のエントリには，計算機装置１ａで使用されているデバイス５５の種別が示される。図６に示すデバイス使用情報１５１では，無線ＬＡＮデバイス５５ａ（Device ID ＝１），ＳＤメモリデバイス５５ｂ（Device ID ＝２）の２種類のデバイス５５が示されている。なお，デバイスドライバの障害という観点において，デバイス５５の種別は，間接的にそのデバイス５５に対応するデバイスドライバの種別を示している。
【００９９】
フロントエンドＶＭのエントリには，そのデバイス５５に対応するデバイスドライバのフロントエンドドライバ３１を備えるゲストＶＭ３０が示されている。
【０１００】
バックエンドＶＭのエントリには，そのデバイス５５に対応するデバイスドライバのバックエンドドライバ２１を備えるドライバＶＭ２０が示されている。
【０１０１】
ステータスのエントリには，そのデバイス５５に対応するデバイスドライバの，ゲストＶＭ３０のフロントエンドドライバ３１と，ドライバＶＭ２０のバックエンドドライバ２１との接続関係の状態が示されている。ステータスが“connected ”であれば，ゲストＶＭ３０のフロントエンドドライバ３１と，ドライバＶＭ２０のバックエンドドライバ２１の初期化が完了し，デバイス操作の要求に関する処理が実行できる状態であることを示している。
【０１０２】
例えば，図６に示すデバイス使用情報１５１において，Device ID ＝１の無線ＬＡＮデバイス５５ａに関して，ドメインＩＤ＝１のドライバＶＭ２０ａ上でバックエンドドライバ（無線ＬＡＮ）２１ａが動作することが示されている。また，ドメインＩＤ＝４のゲストＶＭ３０ｂ上でフロントエンドドライバ（無線ＬＡＮ）３１ｂ1 が動作することが示されている。さらに，バックエンドドライバ（無線ＬＡＮ）２１ａとフロントエンドドライバ（無線ＬＡＮ）３１ｂ1 の両者が，接続したステータスであることが示されている。
【０１０３】
また，例えば，図６に示すデバイス使用情報１５１において，Device ID ＝２のＳＤメモリデバイス５５ｂに関して，ドメインＩＤ＝２のドライバＶＭ２０ｂ上でバックエンドドライバ（ＳＤメモリ）２１ｂが動作することが示されている。また，ドメインＩＤ＝３のゲストＶＭ３０ａ上でフロントエンドドライバ（ＳＤメモリ）３１ａが，ドメインＩＤ＝４のゲストＶＭ３０ｂ上でフロントエンドドライバ（ＳＤメモリ）３１ｂ2 が動作することが示されている。さらに，バックエンドドライバ（ＳＤメモリ）２１ｂと，各フロントエンドドライバ３１とが，接続したステータスであることが示されている。
【０１０４】
例えば，無線ＬＡＮデバイス５５ａに対応するデバイスドライバで，障害が発生したものとする。このとき，図６に示すデバイス使用情報１５１から，無線ＬＡＮデバイス５５ａを使用しているゲストＶＭ３０が，ドメインＩＤ＝４のゲストＶＭ３０ｂの１つだけであることがわかる。このことから，ゲストＶＭ３０への障害復旧指示情報は，ドメインＩＤ＝４のゲストＶＭ３０ｂに対してのみ，送ればよいことがわかる。
【０１０５】
また，例えば，ＳＤメモリデバイス５５ｂに対応するデバイスドライバで障害が発生したものとする。このとき，図６に示すデバイス使用情報１５１から，ＳＤメモリデバイス５５ｂを使用しているゲストＶＭ３０が，ドメインＩＤ＝３のゲストＶＭ３０ａとドメインＩＤ＝４のゲストＶＭ３０ｂとの２つであることがわかる。このことから，ゲストＶＭ３０への障害復旧指示情報は，ドメインＩＤ＝３のゲストＶＭ３０ａとドメインＩＤ＝４のゲストＶＭ３０ｂとに，送ればよいことがわかる。
【０１０６】
図７は，本実施例による障害復旧制御の通信で用いられる情報のデータ構造の例を示す図である。
【０１０７】
図７（Ａ）は，障害検出情報のデータ構造の例を示す。障害検出情報は，デバイスドライバの障害が検出されたときに，障害を検出したＶＭから管理ＶＭ１０に対して，仮想マシンモニタ４０を介したＶＭ間通信により送られる情報である。
【０１０８】
障害検出情報は，通知元ドメインＩＤ，障害発生元ドメインＩＤ，障害種別，デバイス種別の情報を持つ。通知元ドメインＩＤは，デバイスドライバ障害を検出した，障害検出情報の送信元ＶＭのドメインＩＤである。障害発生元ドメインＩＤは，デバイスドライバ障害が発生したＶＭのドメインＩＤである。障害種別は，検出された障害の種別である。デバイス種別は，障害が発生したデバイスドライバに対応するデバイス５５の種別である。
【０１０９】
図７（Ｂ）は，障害復旧指示情報のデータ構造の例を示す。障害復旧指示情報は，管理ＶＭ１０において障害復旧方法が決定された際に，管理ＶＭ１０から障害復旧対象のＶＭに対して，仮想マシンモニタ４０を介したＶＭ間通信により送られる情報である。
【０１１０】
障害復旧指示情報は，障害復旧範囲，障害復旧方法，障害復旧方法オプション，デバイス種別の情報を持つ。障害復旧範囲は，障害の復旧処理を行うコンポーネントの範囲である。障害復旧方法は，障害復旧対象のＶＭに実行させる復旧処理の内容を示す。障害復旧方法オプションは，障害復旧方法に関するオプションの指定情報である。ここでは，障害復旧方法オプションとして，デバイス５５の初期化の要・不要が指定される。デバイス種別は，障害が発生したデバイスドライバに対応するデバイス５５の種別である。
【０１１１】
図７（Ｃ）は，障害復旧結果情報のデータ構造の例を示す。障害復旧結果情報は，障害復旧対象のＶＭが，指示された障害の復旧処理の実行後に，管理ＶＭ１０に対して，仮想マシンモニタ４０を介したＶＭ間通信により送られる情報である。
【０１１２】
障害復旧結果情報は，通知元ドメインＩＤ，デバイス種別，障害復旧結果の情報を持つ。通知元ドメインＩＤは，障害の復旧処理を実行した，障害復旧結果情報の障害検出情報の送信元ＶＭのドメインＩＤである。デバイス種別は，障害が発生したデバイスドライバに対応するデバイス５５の種別である。障害復旧結果は，障害の復旧が成功したか失敗したかを示す。
【０１１３】
図８は，本実施例によるデバイスドライバ障害発生時における障害復旧制御の処理シーケンスの例を示す図である。
【０１１４】
ここでは，図３に示す計算機装置１ａにおいて，ゲストＶＭ３０ｂが，無線ＬＡＮデバイス５５ａを使用するときに，“バックエンドドライバ無応答”の障害を検知した場合の障害復旧制御の例を説明する。
【０１１５】
ゲストＶＭ３０ｂ上のフロントエンドドライバ（無線ＬＡＮ）３１ｂ1 は，ドライバＶＭ２０ａのバックエンドドライバ（無線ＬＡＮ）２１ａに対して，例えばデータの読み出し要求などのデバイス操作要求を発行する（ステップＳ１００）。このとき，フロントエンドドライバ（無線ＬＡＮ）３１ｂ1 は，ゲストＶＭ障害管理部３２ｂにタイマ設定要求を送り（ステップＳ１０１），ゲストＶＭ障害管理部３２ｂにデバイス操作要求の発行時刻を登録する。
【０１１６】
ゲストＶＭ３０ｂのゲストＶＭ障害管理部３２ｂは，デバイス操作要求の発行時刻から一定時間，バックエンドドライバ（無線ＬＡＮ）２１ａからの応答の受信がない場合に，“バックエンドドライバ無応答”の障害が発生したと判断する（ステップＳ１０２）。
【０１１７】
ゲストＶＭ３０ｂのゲストＶＭ障害管理部３２ｂは，仮想マシンモニタ４０を介して，管理ＶＭ１０の管理ＶＭ障害管理部１００に，障害検出情報を送信する（ステップＳ１０３）。ここで送信される障害検出情報は，通知元ドメインＩＤ＝４（＝ゲストＶＭ３０ｂ），障害発生元ドメインＩＤ＝１（＝ドライバＶＭ２０ａ），障害種別＝１（＝“バックエンドドライバ無応答”），デバイス種別＝１（＝“無線ＬＡＮ”）の情報である。
【０１１８】
障害検出情報を受け取った管理ＶＭ１０の管理ＶＭ障害管理部１００は，障害復旧制御処理を実行する（ステップＳ１０４）。例えば，管理ＶＭ障害管理部１００は，障害検出情報に含まれる情報で障害復旧制御情報記憶部１０３に記憶された障害復旧制御情報１５０を参照し，障害復旧範囲と障害復旧方法とを決定する。
【０１１９】
また例えば，図５に示す数値の定義に基づいて，図４に示す障害復旧制御情報１５０のエントリを検索して，障害種別＝１，デバイス種別＝１と一致するエントリを見つける。ここでは，障害復旧制御情報１５０から，（障害種別，デバイス種別，障害復旧範囲，障害復旧方法，障害復旧方法オプション）＝（１，１，１，２，０），（１，１，４，１，０）の２つのエントリが見つかる。これにより，無線ＬＡＮデバイス５５ａに対応するドライバＶＭ２０ａと，該当ドライバＶＭ２０ａのバックエンドドライバ（無線ＬＡＮ）２１ａを使用しているゲストＶＭ３０ｂに対して障害復旧を行う必要があることがわかる。
【０１２０】
また，管理ＶＭ障害管理部１００は，図６に示すデバイス使用情報１５１を参照し，障害復旧対象のＶＭを特定する。デバイス種別＝１（＝“無線ＬＡＮ”）に対応するドライバＶＭ２０がドメインＩＤ＝１のドライバＶＭ２０ａであることがわかる。また，デバイス種別＝１（＝“無線ＬＡＮ”）に対応するゲストＶＭ３０がドメインＩＤ＝４のゲストＶＭ３０ｂであることがわかる。
【０１２１】
管理ＶＭ障害管理部１００は，障害復旧対象のドライバＶＭ２０ａに対して，障害復旧指示情報を送信する（ステップＳ１０５）。ここで送信される障害復旧指示情報は，障害復旧範囲＝１（＝“バックエンドドライバ”），障害復旧方法＝２（＝“ドライバ再起動”），障害復旧方法オプション＝０（＝“デバイス初期化要”），デバイス種別＝１（＝“無線ＬＡＮ”）の情報である。すなわち，ドライバＶＭ２０ａに対して出された指示は，無線ＬＡＮデバイス５５ａの初期化を含む，バックエンドドライバ（無線ＬＡＮ）２１ａの再起動である。
【０１２２】
また，管理ＶＭ障害管理部１００は，障害復旧対象のゲストＶＭ３０ｂに対して，障害復旧指示情報を送信する（ステップＳ１０６）。ここで送信される障害復旧指示情報は，障害復旧範囲＝４（＝“フロントエンドドライバ”），障害復旧方法＝１（＝“ドライバ再アタッチ”），障害復旧方法オプション＝０（＝“デバイス初期化要”），デバイス種別＝１（＝“無線ＬＡＮ”）の情報である。すなわち，ドライバＶＭ２０ａに対して出された指示は，フロントエンドドライバ（無線ＬＡＮ）３１ｂ1 の再アタッチである。
【０１２３】
障害復旧指示情報を受けたドライバＶＭ２０ａのドライバＶＭ障害管理部２２ａは，バックエンドドライバ（無線ＬＡＮ）２１ａの再起動を実行する（ステップＳ１０７）。
【０１２４】
障害復旧指示情報を受けたゲストＶＭ３０ｂのゲストＶＭ障害管理部３２ｂは，障害が発生したデバイスドライバをデタッチする（ステップＳ１０８）。
【０１２５】
バックエンドドライバ（無線ＬＡＮ）２１ａの再起動が終わると，ドライバＶＭ２０ａのドライバＶＭ障害管理部２２ａは，障害復旧結果情報を管理ＶＭ障害管理部１００に通知する（ステップＳ１０９）。ここで送信される障害復旧指示情報は，通知元ドメインＩＤ＝１（＝ドライバＶＭ２０ａ），デバイス種別＝１（＝“無線ＬＡＮ”），障害復旧結果＝１（＝成功）の情報である。
【０１２６】
障害復旧結果情報を受けた管理ＶＭ障害管理部１００は，さらにゲストＶＭ３０ｂに対して，障害復旧結果情報を通知する（ステップＳ１１０）。ここで送信される障害復旧結果情報は，通知元ドメインＩＤ＝０（＝管理ＶＭ１０），デバイス種別＝１（＝“無線ＬＡＮ”），障害復旧結果＝１（＝成功）の情報である。
【０１２７】
障害復旧結果情報を受けたゲストＶＭ３０ｂのゲストＶＭ障害管理部３２ｂは，障害から復旧したデバイスドライバをアタッチする（ステップＳ１１１）。以後，無線ＬＡＮデバイス５５ａのデバイスドライバが利用可能となる。
【０１２８】
以上説明した本実施の形態による障害復旧制御によって，仮想化システムにおいてデバイスドライバ障害が発生した場合に，その障害を検出し，適切な復旧手段を選択してシステムを継続動作させ，システムの信頼性を向上させることができる。また，デバイスドライバ障害の種別，デバイス種別に応じて詳細な障害復旧方法を変化させることができるため，障害からの復旧時間を短縮することができる。
【０１２９】
本実施の形態による障害復旧制御は，特に携帯電話機の仮想化においてより効果的である。携帯電話機に実装されるデバイスの種類は近年増加しており，それら多種のデバイスを制御するデバイスドライバの機能もより高度化，複雑化している。また，携帯電話機の開発サイクルが短いため，デバイスドライバの障害は発生しやすい状況にある。そのため，携帯電話機では，新規に開発されるデバイスドライバを含めたシステムを安定して動作させる必要がある。
【０１３０】
本実施の形態による障害復旧制御によれば，仮想化された携帯システム上のデバイスドライバに障害が発生した場合でも，その障害を速やかに検出し，必要最小限の範囲を再起動させる等により障害を効率良く復旧させ，仮想化システム全体を継続動作させることが可能である。
【０１３１】
以上，本実施の形態について説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。
【０１３２】
例えば，本実施の形態では，障害復旧制御の各機能部が管理ＶＭ１０に備えられているが，必ずしもこれに限るものではない。例えば，障害復旧制御の各機能部を，管理ＶＭ１０から独立した専用のＶＭが備えるようにしてもよい。
【符号の説明】
【０１３３】
１  計算機装置
１０  管理ＶＭ
１００  管理ＶＭ障害管理部
１０１  障害検出情報受信部
１０２  復旧方法決定部
１０３  障害復旧制御情報記憶部
１０４  復旧指示送信部
１１０  デバイス使用情報記憶部
１２０  通信処理部
２０  ドライバＶＭ
２１  バックエンドドライバ
２２  ドライバＶＭ障害管理部
２３  通信処理部
３０  ゲストＶＭ
３１  フロントエンドドライバ
３２  ゲストＶＭ障害管理部
３３  通信処理部
４０  仮想マシンモニタ
５０  ハードウェア
５１  ＣＰＵ
５２  メモリ
５３  記憶装置
５５  デバイス
【図１】
0005494298.tif 000002
【図２】
0005494298.tif 000003
【図３】
0005494298.tif 000004
【図４】
0005494298.tif 000005
【図５】
0005494298.tif 000006
【図６】
0005494298.tif 000007
【図７】
0005494298.tif 000008
【図８】
0005494298.tif 000009