(57)【要約】【課題】準仮想化技術を適用した仮想計算機システムにおいて、模擬した障害をゲスト計算機の障害判定部により検出可能とすることを目的とする。【解決手段】模擬が要求される障害の情報が定義されたＨ／Ｗ障害情報４４１入力するＨ／Ｗ障害操作ツール３１０を備え、ゲストＯＳ４００のフロントエンドドライバ４２０は、仮想マシンモニタ２１０と共有する共有メモリ４３０と、共有メモリ４３０に記憶される障害情報テーブル４４０と、障害情報テーブル４４０にＨ／Ｗ障害情報４４１が設定されているか否かを判定する障害判定部４５０と、障害判定部４５０により設定されていると判定された場合に、Ｈ／Ｗ障害情報４４１に基づいて、障害を模擬する障害模擬部４５１とを備える。【選択図】図２
2014167683.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムにおいて、
前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力する障害模擬要求入力部を備え、
前記ゲスト計算機は、
前記仮想ハードウェアを操作するゲスト側ドライバを備え、
前記ゲスト側ドライバは、
記憶装置に記憶される障害情報テーブルであって、前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報が設定される障害情報テーブルと、
前記障害情報テーブルに前記障害定義情報が設定されているか否かを処理装置により判定する障害判定部と、
前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、前記仮想ハードウェアの障害を模擬する障害模擬部と
を備えることを特徴とする仮想計算機システム。
【請求項２】
前記障害模擬要求入力部は、
前記障害定義情報として、障害の種別を特定する障害種別情報と、障害の内容を特定する障害内容情報とを含み、
前記障害模擬部は、
前記障害情報テーブルに設定されている前記障害定義情報に含まれる前記障害種別情報と前記障害内容情報とにより特定される障害を模擬し、
前記ゲスト側ドライバは、さらに、
前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害定義情報に含まれる前記障害種別情報と前記障害内容情報とを含む情報を通知する障害通知部を備える
ことを特徴とする請求項１に記載の仮想計算機システム。
【請求項３】
前記仮想計算機システムは、
前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報を入力し、入力した前記障害定義情報を前記障害情報テーブルに書き込む障害情報設定部を備えることを特徴とする請求項１または２に記載の仮想計算機システム。
【請求項４】
前記ゲスト側ドライバは、
前記仮想計算機モニタと共有する共有記憶領域を備え、
前記障害情報テーブルは、
前記共有記憶領域に記憶され、
前記仮想計算機モニタは、
前記ゲスト計算機に割り当てた前記仮想ハードウェアを操作するとともに前記障害情報設定部が搭載されたモニタ側ドライバを備え、
前記仮想計算機システムは、さらに、
前記仮想計算機モニタが組み込まれたホスト計算機を備え、
前記ホスト計算機は、
前記障害模擬要求入力部から前記障害模擬要求を入力し、入力した前記障害模擬要求を前記仮想計算機モニタの前記モニタ側ドライバに搭載された前記障害情報設定部に入力し、
前記障害情報設定部は、
入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの前記共有記憶領域に記憶されている前記障害情報テーブルに設定する
ことを特徴とする請求項３に記載の仮想計算機システム。
【請求項５】
前記ホスト計算機は、
前記障害模擬要求入力部から入力された前記障害模擬要求を前記仮想計算機モニタに入力するインタフェース部を備え、
前記障害情報設定部は、
前記障害模擬要求入力部から入力された前記障害模擬要求を前記ホスト計算機の前記インタフェース部を介して入力する
ことを特徴とする請求項４に記載の仮想計算機システム。
【請求項６】
前記ゲスト側ドライバは、
前記障害情報テーブルが記憶される障害情報記憶領域を備えるとともに、前記障害情報設定部を搭載し、
前記障害情報設定部は、
前記障害模擬要求入力部から前記障害模擬要求を入力し、入力した前記障害模擬要求に含まれる前記障害定義情報を、前記障害情報記憶領域に記憶された前記障害情報テーブルに設定する
ことを特徴とする請求項３に記載の仮想計算機システム。
【請求項７】
前記ゲスト計算機は、
前記障害情報設定部を備える障害設定モジュールを備え、
前記ゲスト側ドライバは、
前記障害情報テーブルが記憶される障害情報記憶領域を備え、
前記障害情報設定部は、
前記障害模擬要求入力部から前記障害模擬要求を入力し、入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの備える前記障害情報テーブルに設定する
ことを特徴とする請求項３に記載の仮想計算機システム。
【請求項８】
前記ゲスト側ドライバは、
前記仮想計算機モニタと共有する共有記憶領域を備え、
前記障害情報テーブルは、
前記共有記憶領域に記憶され、
前記仮想計算機モニタは、
前記ゲスト計算機に割り当てた前記仮想ハードウェアを操作するとともに前記障害情報設定部が搭載されたモニタ側ドライバを備え、
前記仮想計算機システムは、さらに、
前記仮想計算機モニタと前記障害模擬要求入力部とがアプリケーションプログラムとして動作するホスト計算機を備え、
前記ホスト計算機は、
前記障害模擬要求入力部により入力した前記障害模擬要求を前記仮想計算機モニタに入力し、
前記仮想計算機モニタの前記モニタ側ドライバに搭載された前記障害情報設定部は、
前記ホスト計算機から入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの前記共有記憶領域に記憶されている前記障害情報テーブルに設定する
ことを特徴とする請求項３に記載の仮想計算機システム。
【請求項９】
前記ゲスト側ドライバは、
前記仮想計算機モニタと共有する共有記憶領域を備え、
前記障害情報テーブルは、前記共有記憶領域に記憶され、
前記仮想計算機モニタは、
前記ゲスト計算機に割り当てた前記仮想ハードウェアを操作するとともに前記障害情報設定部が搭載されたモニタ側ドライバを備え、
前記仮想計算機システムは、さらに、
前記障害模擬要求入力部を動作させる入力用計算機を備え、
前記入力用計算機は、
前記障害模擬要求入力部により前記障害模擬要求を入力し、入力した前記障害模擬要求を前記仮想計算機モニタに入力し、
前記仮想計算機モニタの前記モニタ側ドライバに搭載された前記障害情報設定部は、
前記入力用計算機から入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの前記共有記憶領域に記憶されている前記障害情報テーブルに設定する
ことを特徴とする請求項３に記載の仮想計算機システム。
【請求項１０】
仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムの障害模擬方法において、
障害模擬要求入力部が、前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力し、
障害情報設定部が、前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報を入力し、入力した前記障害定義情報を、前記ゲスト計算機の備える障害情報テーブルに設定し、
障害判定部が、前記障害情報テーブルに前記障害定義情報が設定されているか否かを判定し、
障害模擬部が、前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、前記仮想ハードウェアの障害を模擬する
ことを特徴とする仮想計算機システムの障害模擬方法。
【請求項１１】
仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムが搭載されたコンピュータの障害模擬プログラムにおいて、
障害模擬要求入力部が、前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力する障害模擬要求入力処理と、
障害情報設定部が、前記障害模擬要求入力処理により入力された前記障害模擬要求に含まれる前記障害定義情報を入力し、入力した前記障害定義情報を、前記ゲスト計算機の備える障害情報テーブルに設定する障害情報設定処理と、
障害判定部が、前記障害情報テーブルに前記障害定義情報が設定されているか否かを判定する障害判定処理と、
障害模擬部が、前記障害判定処理により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、前記仮想ハードウェアの障害を模擬する障害模擬処理と
を前記仮想計算機システムが搭載されたコンピュータに実行させることを特徴とする障害模擬プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、準仮想化を利用した仮想計算機における仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラムに関する。特に、準仮想化を利用したゲスト計算機においてハードウェア障害を模擬し、障害処理機能の動作確認を行う仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラムに関する。
【背景技術】
【０００２】
仮想化技術を用いて複数の計算機を集約することはサーバリソースの有効活用や運用コストダウンの面で有用であり、近年、仮想化技術を用いてサーバの集約を行う事例が増加している。このような事例の増加に伴い、重要となるのが仮想計算機の信頼性である。
【０００３】
１台の計算機上に複数の仮想計算機を集約した構成は、ホスト計算機の障害がゲスト計算機に大きな影響を与えることとなるため、ホスト計算機に障害が発生した場合のゲスト計算機及びゲスト計算機上のアプリケーションの動作検証を行うことは重要である。
このような背景のもと、仮想化環境上でハードウェア障害を模擬し、ゲストアプリケーションの動作確認が行われるようになってきている。
【０００４】
仮想化環境において、Ｉ／Ｏポート、メモリマップドＩ／Ｏ、あるいは割り込みに関する情報を模擬し、仮想化環境に構築したシステムの障害処理機能の正常性を確認できるようにする技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２２７７００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想化環境では、デバイスエミュレーションの方式が２通りある。
１つ目は完全仮想化と呼ばれる方式で、実デバイスの動作をデバイスレジスタまで含めて全て再現するものである。完全仮想化では実デバイスが完全に再現されるため、ゲストＯＳ（Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ）のデバイスドライバは実計算機で動作する時と同じものが使用可能である。しかし、デバイスエミュレーションが大きなオーバヘッドとなるため、ゲストＯＳのデバイスＩ／Ｏ性能は高くない。
【０００７】
それに対し、２つ目の準仮想化と呼ばれる方式では、デバイスエミュレーションを簡略化し、ホストＯＳ−ゲストＯＳ間のインタフェース（以下Ｉ／Ｆ）を仮想化環境に都合の良いように実装したものである。
準仮想化方式ではデバイスＩ／Ｏは、ホストＯＳ−ゲストＯＳ間の共有メモリを用いたアドレス渡しによるゼロコピーＩ／Ｏとなるため、完全仮想化方式に比べて高速なデバイスＩ／Ｏが可能となる。また、デバイスエミュレーションなどの処理が簡略化されるため、準仮想化方式ではＣＰＵ使用率を低減可能である。
【０００８】
特許文献１に示されている技術は、完全仮想化方式を対象としたものである。準仮想化技術を適用した仮想化環境においては、ゲストＯＳのデバイスドライバは、共有メモリを使用したデバイスＩ／Ｏに対応するための専用の実装となっている。そのため、準仮想化技術を適用した際のゲストＯＳのデバイスドライバでは、デバイスドライバ自体に障害を検出する機能が備わっていないため、模擬した障害をゲストＯＳにて検出することができないという課題がある。
【０００９】
本発明は、このような課題を解決するためになされたもので、準仮想化を適用した仮想化環境において、仮想マシンモニタで模擬したハードウェア障害をゲストＯＳ上のデバイスドライバで検出可能とし、検出したハードウェア障害をゲストＯＳまたはゲストのアプリケーションへと通知する仕組みを持つ仮想計算機システムを得ることを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る仮想計算機システムは、
仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムにおいて、
前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力する障害模擬要求入力部を備え、
前記ゲスト計算機は、
前記仮想ハードウェアを操作するゲスト側ドライバを備え、
前記ゲスト側ドライバは、
記憶装置に記憶される障害情報テーブルであって、前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報が設定される障害情報テーブルと、
前記障害情報テーブルに前記障害定義情報が設定されているか否かを処理装置により判定する障害判定部と、
前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、
前記仮想ハードウェアの障害を模擬する障害模擬部とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の一の態様に係る仮想計算機システムによれば、準仮想化技術を適用した仮想計算機システムにおいても、模擬した障害をゲスト計算機の障害判定部により検出可能となり、障害が発生した際のゲスト計算機の動作確認を行うことが可能となるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る仮想計算機システム８００のシステム構成を示す図である。
【図２】実施の形態１に係る仮想計算機システム８００のブロック構成図である。
【図３】実施の形態１に係るＨ／Ｗ障害情報テーブル４４０の構成の一例を示す図である。
【図４】実施の形態１に係る実計算機１００のハードウェア構成の一例を示す図である。
【図５】実施の形態１に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図６】実施の形態１に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図７】実施の形態１に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図８】実施の形態２に係る仮想計算機システム８０１のブロック構成図である。
【図９】実施の形態２に係る仮想計算機システム８０１のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図１０】実施の形態３に係る仮想計算機システム８０２のブロック構成図である。
【図１１】実施の形態３に係る仮想計算機システム８０２のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図１２】実施の形態４に係る仮想計算機システム８０３のブロック構成図である。
【図１３】実施の形態４に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図１４】実施の形態５に係る仮想計算機システム８０４のシステム構成を示す一例を示す図である。
【図１５】実施の形態５に係る仮想計算機システム８０４のブロック構成を示す図である。
【図１６】実施の形態５に係る仮想計算機システム８０４のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【図１７】実施の形態６に係る仮想計算機システム８０５のシステム構成を示す一例を示す図である。
【図１８】実施の形態６に係る仮想計算機システム８０５のブロック構成図である。
【図１９】実施の形態６に係る仮想計算機システム８０５のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
本実施の形態に係る仮想計算機システム８００は、準仮想化を利用した仮想計算機（ゲスト計算機）において模擬したハードウェア障害を、ゲストＯＳのデバイスドライバで検出し、ゲストＯＳ及びゲストアプリケーションへの障害通知を行うものである。
【００１４】
図１は、本実施の形態に係る仮想計算機システム８００のシステム構成を示す図である。
図１を用いて、本実施の形態に係る仮想計算機システム８００のシステム構成について説明する。
【００１５】
図１は、準仮想化技術を用いた仮想計算機システム８００の構成例を示したものであり、ホストＯＳ組み込み型のホストＯＳ型仮想マシンモニタを用いた構成である。
仮想計算機システム８００は、実計算機１００、ホストＯＳ２００、仮想計算機３００、ゲストＯＳ４００、ゲストＡＰＰ（Ａｐｐｌｉｃａｔｉｏｎ）５００（ゲストアプリケーション）を備える。
【００１６】
実計算機１００は、コンピュータであり、仮想計算機システム８００を動作させるための物理ハードウェアである。実計算機１００は、ＣＰＵ、メモリ、割込みコントローラなどを備える。
【００１７】
ホストＯＳ２００（ホスト計算機）は、実計算機１００上で動作するソフトウェアであり、ＣＰＵやメモリなどのハードウェア資源を抽象化してアプリケーションに提供する。本実施の形態に係るホストＯＳ２００には、仮想マシンモニタ２１０（仮想計算機モニタ）が組み込まれている。
【００１８】
仮想マシンモニタ２１０は、実計算機１００上で複数のＯＳを動作させるためのソフトウェアであり、仮想計算機３００を作成しゲストＯＳ４００に提供する。ゲストＯＳ４００が動作する仮想計算機３００はゲスト計算機の一例である。
【００１９】
本実施の形態に係る仮想マシンモニタ２１０は、ホストＯＳ型仮想マシンモニタである。
ホストＯＳ型仮想マシンモニタとは、実計算機１００上でホストＯＳ２００が動作しており、ホストＯＳ２００上で仮想マシンモニタ２１０及びゲストＯＳ４００が動作するものである。そして、ゲストＯＳ４００上においてゲストＡＰＰ５００が動作する。
【００２０】
特に本実施の形態では、仮想マシンモニタ２１０が、ホストＯＳ２００の中にＣＰＵやメモリなどのハードウェア資源を直接コントロールするカーネルモジュールとして組み込まれた形態の仮想計算機システム８００を一例として示す。
【００２１】
本実施の形態では、仮想マシンモニタ２１０及びゲストＯＳ４００には準仮想化技術が適用されているものとする。
準仮想化技術とは、仮想計算機システム８００向けのデバイスＩ／Ｏ高速化技術である。準仮想化技術を適用した環境では、ゲストＯＳ４００のデバイスドライバが仮想マシンモニタ２１０との間に共有メモリ４３０を備える。
【００２２】
準仮想化技術を適用した仮想計算機システム８００では、この共有メモリ４３０を用いることで高速なデバイスＩ／Ｏが可能となる。
また、仮想マシンモニタ２１０でのデバイスエミュレーションが簡略化されるため、実計算機１００のＣＰＵ負荷を低減することが可能である。
準仮想化技術では、仮想マシンモニタ２１０によりゲストＯＳ４００に対し、仮想Ｈ／Ｗ（仮想ハードウェア）が割り当てられる。準仮想化技術を利用するためには、ゲストＯＳ４００及び仮想マシンモニタ２１０が準仮想化に対応した専用のドライバであって、仮想Ｈ／Ｗを操作するためのドライバを備えていることが必要となる。
【００２３】
図１に示すように、ゲストＯＳ４００には、準仮想化に対応したドライバとして、フロントエンドドライバ４２０（ゲスト側ドライバの一例）が組み込まれる。また、仮想マシンモニタ２１０には、準仮想化に対応したドライバとして、バックエンドドライバ２２０（モニタ側ドライバの一例）が組み込まれる。
【００２４】
図２は、本実施の形態に係る仮想計算機システム８００のブロック構成図である。図２を用いて、本実施の形態に係る仮想計算機システム８００のブロック構成について説明する。
【００２５】
図２に示すように、仮想計算機システム８００は、さらに、Ｈ／Ｗ障害操作ツール３１０、仮想マシンモニタ管理用ＡＰＩ２３０、Ｈ／Ｗ障害情報設定部３２０、障害判定部４５０、障害模擬部４５１、障害通知部４５２、通常処理部４５３、Ｈ／Ｗ障害情報テーブル４４０を備える。Ｈ／Ｗ障害情報テーブル４４０は、共有メモリ４３０（共有記憶領域）に記憶されている。「Ｈ／Ｗ」とは、「Ｈａｒｄｗａｒｅ（ハードウェア）」の略である。「ＡＰＩ」とは、「Ａｐｐｌｉｃａｔｉｏｎ・Ｐｒｏｇｒａｍｍｉｎｇ・Ｉｎｔｅｒｆａｃｅ」の略である。
【００２６】
Ｈ／Ｗ障害操作ツール３１０は、ホストＯＳ２００上で動作するアプリケーションである。Ｈ／Ｗ障害操作ツール３１０は、ユーザがＨ／Ｗ障害を操作するときのユーザインタフェースとなる。
仮想計算機システム８００は、Ｈ／Ｗ障害を模擬し、Ｈ／Ｗ障害に対するシステムの機能を確認する障害模擬システムの一例である。
Ｈ／Ｗ障害操作ツール３１０は、仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を、例えば、ユーザから入力する。Ｈ／Ｗ障害操作ツール３１０は、障害模擬要求入力部の一例である。
【００２７】
仮想マシンモニタ管理用ＡＰＩ２３０は、仮想計算機３００（仮想マシン）の仮想メモリや仮想ネットワークを管理するライブラリである。
本実施の形態では、一例として仮想マシンモニタ管理用ＡＰＩ２３０を使用するが、仮想マシンモニタ２１０を外部から操作可能なモジュールであれば仮想マシンモニタ管理用ＡＰＩ２３０に限るものではない。
【００２８】
Ｈ／Ｗ障害情報設定部３２０（障害情報設定部）は、フロントエンドドライバ４２０−バックエンドドライバ２２０間で使用可能な共有メモリ４３０領域に構築されたＨ／Ｗ障害情報テーブル４４０（障害情報テーブル）に対し、Ｈ／Ｗ障害情報４４１（障害定義情報）を書き込む機能モジュールである。
本実施の形態では、Ｈ／Ｗ障害情報設定部３２０は、仮想マシンモニタ２１０のバックエンドドライバ２２０に搭載されている。
【００２９】
図３は、本実施の形態に係るＨ／Ｗ障害情報テーブル４４０の構成の一例を示す図である。図３を用いて、本実施の形態に係るＨ／Ｗ障害情報テーブル４４０の構成について説明する。
【００３０】
Ｈ／Ｗ障害情報テーブル４４０は、模擬を実行するＨ／Ｗ障害についての情報が設定されるテーブルである。Ｈ／Ｗ障害情報テーブル４４０には、Ｈ／Ｗ障害操作ツール３１０により入力された障害内容指示（障害模擬要求）に含まれるＨ／Ｗ障害情報４４１（障害定義情報）が設定される。Ｈ／Ｗ障害情報４４１には、障害の種別を特定する障害種別情報と、障害の内容を特定する障害内容情報とが含まれる。
【００３１】
図３に示すように、Ｈ／Ｗ障害情報テーブル４４０には、デバイス毎にＨ／Ｗ障害情報４４１が設定されている。例えば、デバイスＡのＨ／Ｗ障害情報４４１ａ、デバイスＢのＨ／Ｗ障害情報４４１ｂ、・・・等のように構成される。
【００３２】
Ｈ／Ｗ障害情報４４１には、Ｈ／Ｗ情報、障害の種別、障害の内容、レジスタの値などの情報（Ｈ／Ｗ情報、障害の種別、障害の内容、レジスタの値などをまとめて、以下、Ｈ／Ｗ障害情報４４１とする）を持つ。このＨ／Ｗ障害情報４４１は、ゲストＯＳ４００の仮想デバイス１つにつき１つずつ存在する。
【００３３】
「Ｈ／Ｗ情報」は、Ｈ／Ｗ障害を生成する対象の仮想デバイスを示す情報が設定される。設定されたＨ／Ｗ情報から、Ｈ／Ｗ障害を生成する対象のゲストＯＳ４００や仮想デバイスが特定される。
「Ｈ／Ｗ情報」には、例えば、ブロックデバイスであればホストＯＳ２００上でのファイルのパスなどが設定される。ネットワークデバイスであればＭＡＣアドレスなどの仮想Ｈ／Ｗを特定することのできる情報が設定される。
【００３４】
「障害の種別」は、模擬を行う障害を示す情報である。「障害の種別」は、Ｈ／Ｗ障害生成が指示されていないときと、Ｈ／Ｗ障害生成が指示されているときと、を明確に区別することが可能なものとする。
本実施の形態では、例えば、「障害の種別」の値が０の場合はＨ／Ｗ障害の生成指示なし、０以外の場合をＨ／Ｗ障害生成の指示がある場合とする。また、０以外の値が設定されていた場合、設定されている値によって生成するＨ／Ｗ障害を判別可能であるものとする。例えば、「障害の種別」の値が１だった場合は仮想デバイスの応答遅延を模擬する、「障害の種別」の値が２だった場合は仮想デバイスの無応答状態を模擬するなどである。
【００３５】
「障害の内容」は、「障害の種別」で指定したＨ／Ｗ障害を模擬するための具体的な処理方法を指示するための値である。
生成する（模擬する）Ｈ／Ｗ障害が仮想デバイスの応答遅延だった場合を例とする。この場合、「障害の内容」に応答を遅延させる時間を設定する。「障害の内容」に設定する遅延時間は、任意に指定可能とする。
また、生成するＨ／Ｗ障害が仮想デバイスの無応答だった場合を例とする。この場合は、「障害の内容」に仮想デバイスの応答を破棄する回数を指定することで、「障害の内容」で指定された回数分だけ仮想デバイスが無応答になるように障害を模擬する。
【００３６】
「レジスタ値」は、仮想デバイスのデバイスレジスタの値として設定したい値を格納する。デバイスレジスタとは、ゲストＯＳ４００とデバイスとを通信させるための情報が格納されているレジスタである。
仮想計算機システム８００に準仮想化を適用した場合は、仮想マシンモニタ２１０によってデバイスレジスタが模擬されないため、実際には仮想デバイスのデバイスレジスタは存在しない。しかし、後述する障害模擬部４５１あるいは障害通知部４５２等が、ゲストＯＳ４００またはゲストＡＰＰ５００（ゲストアプリケーション）に対し、Ｈ／Ｗ障害を通知する際にデバイスレジスタの値を渡さなければならない場合がある。このような場合、障害模擬部４５１あるいは障害通知部４５２等は、「レジスタ値」に格納されている値を使用する。また、Ｈ／Ｗ障害発生時にゲストＯＳ４００からデバイスレジスタの参照依頼があった際にも、「レジスタ値」に任意の値を格納して渡すことが可能である。ゲストＯＳ４００からのデバイスレジスタの参照依頼とは、例えば、該デバイスにアクセスがあった場合などである。
【００３７】
障害判定部４５０は、仮想マシンモニタ２１０からの仮想割込みが入った場合に、フロントエンドドライバ４２０内の割込みハンドラから呼び出される。障害判定部４５０は、共有メモリ４３０内のＨ／Ｗ障害情報テーブル４４０に従い、障害の模擬が指示されているかどうかの判定を行う。
障害判定部４５０は、Ｈ／Ｗ障害情報テーブル４４０内の「障害の種別」の値が０にクリアされているか、０以外の値が設定されているかを処理装置により判定することで、Ｈ／Ｗ障害生成の指示の有無の判定を実行する。
【００３８】
障害模擬部４５１は、共有メモリ４３０のＨ／Ｗ障害情報テーブル４４０の内容に基づいて、Ｈ／Ｗ障害を模擬する。障害模擬部４５１は、ゲストＯＳ４００及びゲストＡＰＰ５００が必要とする障害内容、障害情報の模擬を行う。
【００３９】
障害通知部４５２は、Ｈ／Ｗで発生した障害をゲストＯＳ４００またはゲストＡＰＰ５００に通知する。
【００４０】
通常処理部４５３は、デバイスＩ／Ｏ、デバイスＩ／Ｏ完了処理などのデバイスドライバとしての通常機能を果たす部分である。
【００４１】
図４は、実計算機１００のハードウェア構成の一例を示す図である。
【００４２】
図４において、実計算機１００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００４３】
実計算機１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、処理装置の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ：磁気ディスク装置）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【００４４】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【００４５】
通信ボード９１５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００４６】
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００４７】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【００４８】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００４９】
次に、仮想計算機システム８００におけるＨ／Ｗ障害模擬方式を実現するための動作について説明する。
図５は、本実施の形態に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。図５では、ユーザがＨ／Ｗ障害操作ツール３１０を使用してＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするまでのシーケンスを示す。
図６は、本実施の形態に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。図６は、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされているときのゲストＯＳ４００の動作を示したものである。
図７は、本実施の形態に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。図７は、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていないときのゲストＯＳ４００の動作を示したものである。
【００５０】
図５を用いて、ユーザがＨ／Ｗ障害操作ツール３１０を使用してＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするまでのシーケンスについて説明する。
まず、仮想計算機システム８００のユーザがＨ／Ｗ障害模擬方式を利用する場合、実計算機１００のディスプレイ等（入力装置）から、Ｈ／Ｗ障害操作ツール３１０に対して、Ｈ／Ｗ情報、障害の種別、障害の内容などのＨ／Ｗ障害情報４４１の元となる情報を入力する。
つまり、ユーザがＨ／Ｗ障害操作ツール３１０を用いて仮想マシンモニタ管理用ＡＰＩ２３０に対してＨ／Ｗ障害の生成を指示する。
【００５１】
Ｓ１００において、Ｈ／Ｗ障害操作ツール３１０は、仮想マシンモニタ管理用ＡＰＩ２３０に対し、ユーザにより入力されたＨ／Ｗ障害の内容情報を出力し、Ｈ／Ｗ障害の生成を指示するＨ／Ｗ障害生成指示を出力する。このＨ／Ｗ障害生成指示には、Ｈ／Ｗ障害模擬の対象とするゲストＯＳ４００、仮想デバイス、Ｈ／Ｗ障害の種別、Ｈ／Ｗ障害の内容、デバイスレジスタの値などの情報が含まれる。
【００５２】
Ｓ１０１において、仮想マシンモニタ管理用ＡＰＩ２３０は、Ｈ／Ｗ障害操作ツール３１０からＨ／Ｗ障害生成指示を入力する。仮想マシンモニタ管理用ＡＰＩ２３０は、Ｈ／Ｗ障害生成指示を入力すると、仮想マシンモニタ２１０内のＨ／Ｗ障害情報設定部３２０に対してＨ／Ｗ障害生成命令を発行（出力）する。
【００５３】
Ｓ１０２において、Ｈ／Ｗ障害情報設定部３２０は、仮想マシンモニタ管理用ＡＰＩ２３０からＨ／Ｗ障害生成命令を入力する。このＨ／Ｗ障害生成命令には、Ｈ／Ｗ障害模擬の対象とするゲストＯＳ４００（以下、模擬対象ゲストＯＳ４００ａとする）、仮想デバイス、Ｈ／Ｗ障害の種別、Ｈ／Ｗ障害の内容、デバイスレジスタの値などの情報が含まれる。
Ｈ／Ｗ障害情報設定部３２０は、Ｈ／Ｗ障害生成命令を入力すると、入力したＨ／Ｗ障害生成命令に基づいて、共有メモリ４３０のＨ／Ｗ障害情報テーブル４４０の模擬対象ゲストＯＳ４００ａのＨ／Ｗ障害情報４４１ａに、Ｈ／Ｗ障害の情報をセットする。
【００５４】
Ｈ／Ｗ障害情報設定部３２０は、Ｈ／Ｗ障害生成命令により指定された模擬対象ゲストＯＳ４００ａのＨ／Ｗ障害情報４４１ａに、Ｈ／Ｗ障害の情報をセットする。
そして、Ｈ／Ｗ障害情報設定部３２０によるＨ／Ｗ障害情報４４１ａへのＨ／Ｗ障害の情報のセットの直後、バックエンドドライバ２２０は、模擬対象ゲストＯＳ４００ａに対して仮想割り込みを上げる。
つまり、Ｈ／Ｗ障害情報設定部３２０がＨ／Ｗ障害情報４４１ａへＨ／Ｗ障害の情報の設定を実行するとともに、バックエンドドライバ２２０が模擬対象ゲストＯＳ４００ａに対して仮想割り込み信号を送信する。
【００５５】
Ｓ１０３に示すように、共有メモリ４３０のＨ／Ｗ障害情報テーブル４４０のＨ／Ｗ障害情報４４１ａに、正常にＨ／Ｗ障害の情報がセットされると書込完了信号がＨ／Ｗ障害情報設定部３２０に出力される。
Ｓ１０４において、Ｈ／Ｗ障害情報設定部３２０は、共有メモリ４３０から書込完了信号を受信すると、Ｈ／Ｗ障害生成命令に対応するＨ／Ｗ障害生成応答を仮想マシンモニタ管理用ＡＰＩ２３０に送信する。
Ｓ１０５において、仮想マシンモニタ管理用ＡＰＩ２３０は、Ｈ／Ｗ障害情報設定部３２０からＨ／Ｗ障害生成応答を受信すると、Ｈ／Ｗ障害生成指示に対応するＨ／Ｗ障害生成指示応答をＨ／Ｗ障害操作ツール３１０に送信する。
Ｈ／Ｗ障害操作ツール３１０は、仮想マシンモニタ管理用ＡＰＩ２３０からＨ／Ｗ障害生成指示応答を受信すると、ユーザからのＨ／Ｗ障害生成の指示に対応するＨ／Ｗ障害生成の完了通知を実計算機１００のディスプレイなどに出力するとしてもよい。
【００５６】
図６は、Ｈ／Ｗ障害情報テーブル４４０のＨ／Ｗ障害情報４４１がセットされているときのゲストＯＳ４００の動作を示したものである。
【００５７】
まず、Ｓ２００において、バックエンドドライバ２２０から模擬対象のゲストＯＳ４００のフロントエンドドライバ４２０に仮想割り込みが上がってくる（図５のＳ１０２の処理の記載を参照）と、まず、フロントエンドドライバ４２０内の割込みハンドラから障害判定部４５０に処理が入る。
【００５８】
Ｓ２０１において、障害判定部４５０は、共有メモリ４３０内のＨ／Ｗ障害情報テーブル４４０を参照し、Ｈ／Ｗ障害情報４４１がセットされているかどうかを処理装置により判定する。
ここではＨ／Ｗ障害情報４４１がセットされているため、障害判定部４５０は、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていると判定し、Ｈ／Ｗ障害情報４４１を読み込む（Ｓ２０２）。
【００５９】
次に、処理は障害模擬部４５１及び障害通知部４５２に移る（Ｓ２０３及びＳ２０５）。
【００６０】
Ｓ２０３において、障害判定部４５０は、例えば、読み込んだＨ／Ｗ障害情報４４１を含む障害模擬信号を障害模擬部４５１に送信する。
障害模擬部４５１は、障害判定部４５０から障害模擬信号を受信すると、障害模擬信号に含まれるＨ／Ｗ障害情報４４１に基づいて、Ｈ／Ｗ障害を模擬的に発生させる。
また、障害模擬部４５１は、ゲストＯＳ４００またはゲストＡＰＰ５００から障害内容の参照があった場合には、障害判定部４５０から受信した障害模擬信号に含まれるＨ／Ｗ障害情報４４１を元にＨ／Ｗ障害の内容を模擬し、その内容をゲストＯＳ４００またはゲストＡＰＰ５００へ返答する。この際模擬される内容は、例えばデバイスレジスタの内容などである。
【００６１】
Ｓ２０４において、障害模擬部４５１は、Ｈ／Ｗ障害の模擬が完了すると、障害模擬信号に対する障害模擬完了信号を障害判定部４５０に送信する。
【００６２】
Ｓ２０５において、障害判定部４５０は、障害模擬部４５１から障害模擬完了信号を受信すると、ゲストＯＳ４００またはゲストＡＰＰ５００に対してＨ／Ｗ障害の通知を指示する障害通知指示を、障害通知部４５２に送信する。
【００６３】
Ｓ２０６において、障害通知部４５２は、障害判定部４５０から障害通知指示を受信すると、ゲストＯＳ４００またはゲストＡＰＰ５００に対してＨ／Ｗ障害が発生したことを通知する。障害通知部４５２は、ゲストＯＳ４００に備えられた障害通知機能を用いて、Ｈ／Ｗ障害の通知を実行する。これにより、Ｈ／Ｗ障害が実際に発生していない場合であっても、ゲストＯＳ４００に備えられた障害通知機能が正常に機能するかどうかの検証をすることができる。
ここでは、模擬したＨ／Ｗ障害の通知を受けたゲストＯＳ４００またはゲストＡＰＰ５００の動作については、特に言及しない。ゲストＯＳ４００に備えられた障害通知機能によるＨ／Ｗ障害の通知がドライバから上がってくるという構成は、実計算機システムでのＨ／Ｗ障害発生時の障害通知動作と同様である。ゲストＯＳ４００の障害通知機能は、例えば、ディスプレイなどにＨ／Ｗ障害メッセージを表示するなどの動作を行う。
【００６４】
Ｓ２０７において、ゲストＯＳ４００の障害通知機能は、ディスプレイなどにＨ／Ｗ障害メッセージを表示するなどの障害通知動作が完了したか否かについて、障害通知動作応答を障害通知部４５２に送信する。例えば、ゲストＯＳ４００の障害通知機能が正常に動作しなかった場合などには、ゲストＯＳ４００の障害通知機能は、エラーメッセージを表示したり、ゲストＯＳ４００をダウンさせるなどして、ゲストＯＳ４００の障害通知機能が正常に動作しないことを障害通知動作応答によりユーザに通知するなどしてもよい。
【００６５】
Ｓ２０８において、障害通知部４５２は、ゲストＯＳ４００から障害通知動作応答を受信すると、障害判定部４５０に対して障害通知動作応答の内容に基づいて、障害判定部４５０に対して障害通知指示応答を送信する。
障害通知部４５２は、障害判定部４５０によりＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１が設定されていると判定された場合に、Ｈ／Ｗ障害情報４４１に含まれる障害種別情報と障害内容情報とを含む情報を通知する。
【００６６】
障害判定部４５０は、障害通知部４５２からの障害通知指示応答を受信する。障害判定部４５０は、例えば、受信した障害通知指示応答の内容に基づいて、ユーザに対してＨ／Ｗ障害時の動作についての結果を発行する。
例えば、障害判定部４５０は、模擬したＨ／Ｗ障害と、その後のゲストＯＳ４００あるいはゲストＡＰＰ５００の動作を対応付けた一覧をディスプレイに表示するなどしてもよい。
【００６７】
図７は、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていないときのゲストＯＳ４００の動作を示したものである。仮想計算機システム８００において、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていない場合に、デバイスに対してアクセスなどがあった際には、通常動作を実行することになる。
【００６８】
ここでは一例として、ゲストＯＳ４００がフロントエンドドライバ４２０に対してデバイスの操作を指示したときのゲストＯＳ４００（仮想計算機システム８００）の動作について説明する。
【００６９】
Ｓ３００において、ゲストＯＳ４００は、フロントエンドドライバ４２０に対して呼び出しがあると、まず障害判定部４５０に処理が入る。
Ｓ３０１において、障害判定部４５０は、共有メモリ４３０内のＨ／Ｗ障害情報テーブル４４０を参照し、Ｈ／Ｗ障害情報４４１がセットされているか否かを処理装置により判定（確認）する。
【００７０】
ここでは、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていないものとする。
Ｓ３０２において、障害判定部４５０は、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていないと判定する。
【００７１】
すると、障害判定部４５０は、Ｓ３０３において、処理を通常処理部４５３へ移す。通常処理部４５３は、フロントエンドドライバ４２０の通常の処理を実行する。ここでは、ゲストＯＳ４００から指示されたデバイス操作の処理を実行する。
【００７２】
以上のように、本実施の形態に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式は、ホストＯＳ型仮想マシンモニタ２１０を使用した仮想計算機システム８００のＨ／Ｗ障害模擬方式であり、以下の（ａ）〜（ｅ）の手段を備える。また、コンピュータである仮想計算機システム８００上において、以下の（ａ）〜（ｅ）の手順を備えるＨ／Ｗ障害模擬プログラムが実行される。
（ａ）Ｈ／Ｗ障害を模擬するためのＨ／Ｗ障害情報テーブル４４０が格納された共有メモリ４３０。
（ｂ）Ｈ／Ｗ障害情報テーブル４４０を登録、更新するためのＨ／Ｗ障害情報設定部３２０。
（ｃ）Ｈ／Ｗ障害情報テーブル４４０をもとにゲストＯＳ４００の準仮想化ドライバ内の処理を分岐させる障害判定部４５０。
（ｄ）Ｈ／Ｗ障害情報テーブル４４０をもとにＨ／Ｗ障害の模擬を行う障害模擬部４５１。
（ｅ）ゲストＯＳ４００またはゲストＡＰＰ５００に対してＨ／Ｗ障害の通知を行う障害通知部４５２。
【００７３】
以上のように、本実施の形態に係る仮想計算機システム８００のＨ／Ｗ障害模擬方式によれば、フロントエンドドライバ４２０−バックエンドドライバ２２０間の共有メモリ４３０に作成したＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするかしないかによって、Ｈ／Ｗ障害の発生の有無をフロントエンドドライバ４２０に検知させることができる。そして、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていた場合に、障害模擬及び障害通知を行わせることで、準仮想化を適用した仮想環境においてＨ／Ｗ障害の検出及び障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、Ｈ／Ｗ障害発生時のゲストＯＳ４００またはゲストＡＰＰ５００の動作確認を行うことが可能となる。
【００７４】
実施の形態２．
本実施の形態では、主に、実施の形態１との差異について説明する。
図８は、本実施の形態に係る仮想計算機システム８０１のブロック構成図である。
図８は、実施の形態１において説明した図２に対応する図であり、同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
【００７５】
本実施の形態では、図１に示す仮想マシンモニタ２１０がホストＯＳ２００に組み込まれた形態のホストＯＳ型仮想マシンモニタ２１０を用いた仮想マシン環境を対象とする。
本実施の形態に係る仮想計算機システム８０１は、実施の形態１で説明した仮想計算機システム８００の派生形である。実施の形態１で説明した仮想計算機システム８００との差分は、Ｈ／Ｗ障害を生成する際の命令の経路から仮想マシン管理用ＡＰＩ２３０（図２参照）を排したことである。
つまり、Ｈ／Ｗ障害操作ツール３１０は、Ｈ／Ｗ障害情報設定部３２０に対し、Ｈ／Ｗ障害生成命令を直接入力する。
【００７６】
図９は、本実施の形態に係る仮想計算機システム８０１のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。図９では、ユーザがＨ／Ｗ障害操作ツール３１０を使用してＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするまでのシーケンスを示す。
【００７７】
図９に示すように、ユーザがＨ／Ｗ障害操作ツール３１０に対してＨ／Ｗ障害生成を指示した後のシーケンスが異なる。
Ｓ４００において、Ｈ／Ｗ障害操作ツール３１０は、ユーザにより入力されたＨ／Ｗ障害の内容情報に基づいて、Ｈ／Ｗ障害情報設定部３２０に対してＨ／Ｗ障害生成命令を発行（出力）する。
本実施の形態では、Ｈ／Ｗ障害操作ツール３１０から仮想マシンモニタ２１０のＨ／Ｗ障害情報設定部３２０が直接呼び出される構成となる。
【００７８】
その他の構成、処理シーケンス（Ｓ４０１，Ｓ４０２）は、実施の形態１（Ｓ１０２，Ｓ１０３）と同様である。
また、Ｓ４０５において、Ｈ／Ｗ障害情報設定部３２０は、共有メモリ４３０から書込完了信号を受信すると、Ｈ／Ｗ障害生成指示に対応するＨ／Ｗ障害生成指示応答をＨ／Ｗ障害操作ツール３１０に送信する。
【００７９】
本実施の形態に係る仮想計算機システム８０１のＨ／Ｗ障害模擬方式におけるその後（Ｈ／Ｗ障害情報設定後）のシーケンスは、実施の形態１と同様である。
【００８０】
以上のように、本実施の形態に係る仮想計算機システム８０１のＨ／Ｗ障害模擬方式は、ホストＯＳ型仮想マシンモニタ２１０を使用した仮想計算機システム８０１のＨ／Ｗ障害模擬方式であり、以下の（ａ）の手段を備えることを特徴とする。また、コンピュータである仮想計算機システム８０１上において、以下の（ａ）の手順を備えるＨ／Ｗ障害模擬プログラムが実行される。
（ａ）Ｈ／Ｗ障害操作ツール３１０が仮想マシンモニタ管理用ＡＰＩ２３０を経由せずに、Ｈ／Ｗ障害情報設定部３２０に対して直接Ｈ／Ｗ障害生成命令を発行する。
【００８１】
以上のように、本実施の形態に係る仮想計算機システム８０１によれば、フロントエンドドライバ４２０−バックエンドドライバ２２０間の共有メモリ４３０に作成したＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするかしないかによって、Ｈ／Ｗ障害の発生の有無をフロントエンドドライバ４２０に検知させる。そして、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていた場合に障害模擬および障害通知を行わせることで、準仮想化を適用した仮想環境においてＨ／Ｗ障害の検出および障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、Ｈ／Ｗ障害発生時のゲストＯＳ４００またはゲストＡＰＰ５００の動作確認を行うことが可能となる。
【００８２】
また、本実施の形態に係る仮想計算機システム８０１によれば、仮想マシンモニタ管理用ＡＰＩ２３０（実施の形態１参照）を通さず直接バックエンドドライバ２２０を操作することができる。したがって、仮想マシンモニタ管理用ＡＰＩ２３０分の処理を省略することができ、Ｈ／Ｗ障害発生の処理を高速化することが可能となる。また、仮想マシン管理用ＡＰＩ２３０を使用する場合に比べ、Ｈ／Ｗ障害操作ツール３１０およびＨ／Ｗ障害情報設定部３２０のインタフェースを自由に設計・実装することが可能となる。
【００８３】
実施の形態３．
本実施の形態では、主に、実施の形態１，２との差異について説明する。
図１０は、本実施の形態に係る仮想計算機システム８０２のブロック構成図である。
図１０は、実施の形態１において説明した図２に対応する図であり、同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
【００８４】
本実施の形態に係る仮想計算機システム８０２について図１０を用いて説明する。
本実施の形態では、図１に示す仮想マシンモニタ２１０がホストＯＳ２００に組み込まれた形態のホストＯＳ型仮想マシンモニタ２１０を用いた仮想マシン環境を対象とする。
【００８５】
実施の形態１で説明した仮想計算機システム８００との差分は、Ｈ／Ｗ障害操作ツール３１０をゲストのアプリケーションとし、Ｈ／Ｗ障害情報設定部３２０をフロントエンドドライバ４２０の内部に配置（搭載）したことである。
Ｈ／Ｗ障害情報設定部３２０をフロントエンドドライバ４２０の内部に配置したことにより、Ｈ／Ｗ障害情報テーブル４４０（Ｈ／Ｗ障害情報４４１）は共有メモリ４３０上に置く必要がない。したがって、本実施の形態に係る仮想計算機システム８０２では、障害情報保持領域４８０（障害情報記憶領域）をフロントエンドドライバ４２０内で確保し、Ｈ／Ｗ障害情報テーブル４４０（Ｈ／Ｗ障害情報４４１）を障害情報保持領域４８０へ格納する。
【００８６】
図１１は、本実施の形態に係る仮想計算機システム８０２のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。図１１では、ユーザがＨ／Ｗ障害操作ツール３１０を使用して障害情報保持領域４８０のＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１を書き込むまでのシーケンスを示す。
【００８７】
Ｓ５００の処理は、図９のＳ４００の処理と同様である。ただし、本実施の形態では、Ｈ／Ｗ障害操作ツール３１０はゲストのアプリケーションであり、Ｈ／Ｗ障害情報設定部３２０はフロントエンドドライバ４２０の内部に配置されている。
【００８８】
Ｓ５０１において、Ｈ／Ｗ障害情報設定部３２０は、Ｈ／Ｗ障害生成命令を受信すると、受信したＨ／Ｗ障害生成命令に基づいて、障害情報保持領域４８０のＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットする。
Ｓ５０２，Ｓ５０３の処理は、Ｓ４０２，Ｓ４０３の処理と同様である。
【００８９】
本実施の形態に係る仮想計算機システム８０２のＨ／Ｗ障害模擬方式におけるその後（Ｈ／Ｗ障害情報設定後）のシーケンスは、実施の形態１と同様である。
【００９０】
以上のように、本実施の形態に係る仮想計算機システム８０２のＨ／Ｗ障害模擬方式は、ホストＯＳ型仮想マシンモニタ２１０を使用した仮想計算機システム８０２のＨ／Ｗ障害模擬方式であり、以下の（ａ）〜（ｆ）の手段を備える。また、コンピュータである仮想計算機システム８０２上において、以下の（ａ）〜（ｆ）の手順を備えるＨ／Ｗ障害模擬プログラムが実行される。
（ａ）ユーザが入力したＨ／Ｗ障害に関する情報を元に、Ｈ／Ｗ障害情報設定部３２０に対してＨ／Ｗ障害生成を指示するＨ／Ｗ障害操作ツール３１０。
（ｂ）Ｈ／Ｗ障害を模擬するためのＨ／Ｗ障害情報テーブル４４０が格納された障害情報保持領域４８０。
（ｃ）Ｈ／Ｗ障害情報テーブル４４０を登録、更新するためのＨ／Ｗ障害情報設定部３２０。
（ｄ）Ｈ／Ｗ障害情報テーブル４４０をもとにゲストＯＳ４００の準仮想化ドライバ内の処理を分岐させる障害判定部４５０。
（ｅ）Ｈ／Ｗ障害情報テーブル４４０をもとにＨ／Ｗ障害の模擬を行う障害模擬部４５１。
（ｆ）ゲストＯＳ４００またはゲストＡＰＰ５００に対してＨ／Ｗ障害の通知を行う障害通知部４５２。
【００９１】
以上のように、本実施の形態に係る仮想計算機システム８０２のＨ／Ｗ障害模擬方式によれば、フロントエンドドライバ４２０内の障害情報保持領域４８０に作成したＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするかしないかによって、Ｈ／Ｗ障害の発生の有無をフロントエンドドライバ４２０に検知させることができる。そして、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていた場合に障害模擬および障害通知を行わせることで、準仮想化を適用した仮想環境においてＨ／Ｗ障害の検出および障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、Ｈ／Ｗ障害発生時のゲストＯＳ４００またはゲストＡＰＰ５００の動作確認を行うことが可能となる。
【００９２】
また、本実施の形態に係る仮想計算機システム８０２のＨ／Ｗ障害模擬方式によれば、ゲストＯＳ４００側のみにＨ／Ｗ障害の模擬・検出・通知の処理を実装するため、ホストＯＳ２００側には変更の必要がない。また、ハイパーバイザ型やホストＯＳ型などの仮想マシンモニタの方式によらず使用が可能である。
【００９３】
実施の形態４．
本実施の形態では、主に、実施の形態３との差異について説明する。
図１２は、本実施の形態に係る仮想計算機システム８０３のブロック構成図である。
図１２は、実施の形態３において説明した図１０に対応する図であり、同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
【００９４】
本実施の形態では、図１に示す仮想マシンモニタ２１０がホストＯＳ２００に組み込まれた形態のホストＯＳ型仮想マシンモニタ２１０を用いた仮想マシン環境を対象とする。
本実施の形態に係る仮想計算機システム８０３は、実施の形態３で説明した仮想計算機システム８０２の派生形である。
実施の形態３で説明した仮想計算機システム８０２との差分は、Ｈ／Ｗ障害情報設定部３２０がフロントエンドドライバ４２０ではなく、フロントエンドドライバ４２０とは別のカーネルモジュールであるＨ／Ｗ障害設定モジュール４９０（障害設定モジュール）に配置したことである。
その他の構成は、実施の形態３で説明したものと同様である。
【００９５】
図１３は、本実施の形態に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。図１３では、ユーザがＨ／Ｗ障害操作ツール３１０を使用してＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１を書き込むまでのシーケンスを示す。
【００９６】
図１３は、Ｈ／Ｗ障害操作ツール３１０に対してＨ／Ｗ障害生成の指示を与えてから、障害情報保持領域４８０にＨ／Ｗ障害情報４４１が設定されるまでのシーケンスを示すものである。
Ｓ６００において、Ｈ／Ｗ障害操作ツール３１０は、Ｈ／Ｗ障害情報設定モジュール４９０に対してＨ／Ｗ障害生成の命令を発行する。
Ｓ６０１において、Ｈ／Ｗ障害情報設定モジュール４９０のＨ／Ｗ障害情報設定部３２０は、フロントエンドドライバ内の障害情報保持領域４８０に対してＨ／Ｗ障害情報を設定する。
【００９７】
このように、図１３と、実施の形態３で説明した図１１との差異は、Ｈ／Ｗ障害情報設定部３２０はＨ／Ｗ障害情報設定モジュール４９０内に配置されている点である。これ以外の処理（Ｓ６００〜Ｓ６０３）は、実施の形態３で説明したＳ５００〜Ｓ５０３と同様である。
【００９８】
本実施の形態に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式におけるその後（Ｈ／Ｗ障害情報設定後）のシーケンスは、実施の形態１〜３と同様である。
【００９９】
以上のように、本実施の形態に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式は、ホストＯＳ型仮想マシンモニタ２１０を使用した仮想計算機システム８０３のＨ／Ｗ障害模擬方式であり、以下の（ａ）〜（ｃ）の手段を備えることを特徴とする。また、コンピュータである仮想計算機システム８０３上において、以下の（ａ）〜（ｃ）の手順を備えるＨ／Ｗ障害模擬プログラムが実行される。
（ａ）ゲストＯＳ４００に、Ｈ／Ｗ障害情報設定部３２０を含むＨ／Ｗ障害情報設定モジュール４９０がインストールされている。
（ｂ）Ｈ／Ｗ障害操作ツール３１０が、ユーザが入力したＨ／Ｗ障害に関する情報を元に、Ｈ／Ｗ障害設定モジュール４９０内のＨ／Ｗ障害情報設定部３２０に対してＨ／Ｗ障害の生成を指示する。
（ｃ）Ｈ／Ｗ障害設定モジュール４９０内のＨ／Ｗ障害情報設定部３２０が、フロントエンドドライバ４２０内の障害情報保持領域４８０に対してＨ／Ｗ障害情報４４１をセットする。
【０１００】
以上のように、本実施の形態に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式によれば、フロントエンドドライバ４２０内の障害情報保持領域４８０に作成したＨ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１をセットするかしないかによって、Ｈ／Ｗ障害の発生の有無をフロントエンドドライバ４２０に検知させることができる。そして、Ｈ／Ｗ障害情報テーブル４４０にＨ／Ｗ障害情報４４１がセットされていた場合に、障害模擬および障害通知を行わせることで、準仮想化を適用した仮想環境においてＨ／Ｗ障害の検出および障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、Ｈ／Ｗ障害発生時のゲストＯＳ４００またはゲストＡＰＰ５００の動作確認を行うことが可能となる。
【０１０１】
また、本実施の形態に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式によれば、ゲストＯＳ４００側のみにＨ／Ｗ障害の模擬・検出・通知の処理を実装するため、ホストＯＳ２００側には変更の必要がない。また、ベアメタル型やホストＯＳ型などの仮想マシンモニタ２１０の方式によらずに使用が可能である。
【０１０２】
さらに、本実施の形態に係る仮想計算機システム８０３のＨ／Ｗ障害模擬方式によれば、Ｈ／Ｗ障害情報設定部３２０をフロントエンドドライバ４２０とは別のゲストＯＳ４００のカーネルモジュールとして分離したことにより、フロントエンドドライバ４２０の処理負荷の低減が可能となる。また、フロントエンドドライバ４２０にはブロックデバイス用、ネットワークデバイス用など複数の種類が存在する。本実施の形態を採用することで、各デバイス用のフロントエンドドライバ４２０で使用するＨ／Ｗ障害情報設定部３２０を、ＡＰＩとして共用することができるようになるため、各フロントエンドドライバの実装を簡易化・容易化することが可能である。
【０１０３】
実施の形態５．
本実施の形態では、主に、実施の形態１〜４との差異について説明する。
図１４は、本実施の形態に係る仮想計算機システム８０４のシステム構成を示す一例を示す図である。図１４を用いて、本実施の形態に係る仮想計算機システム８０４のシステム構成について説明する。
【０１０４】
本実施の形態では、実施の形態１〜４において説明した構成と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
【０１０５】
図１４は、準仮想化技術を用いた仮想計算機システム８０４の構成例を示したものである。図１４に示す準仮想化技術を用いた仮想計算機システム８０４は、ホストＯＳ組み込み型の仮想マシンモニタ２１０（実施の形態１で説明したもの）ではなく、ホストＯＳ２００上でアプリケーションとして動作するホストＯＳ型仮想マシンモニタ２１０ａを用いた構成である。
【０１０６】
実計算機１００は、仮想計算機システム８０４を動作させるための物理ハードウェアであり、ＣＰＵ、メモリ、割込みコントローラなどを備える。
ホストＯＳ２００は、実計算機１００上で動作するソフトウェアであり、ＣＰＵやメモリなどのハードウェア資源を抽象化してアプリケーションに提供する。
【０１０７】
仮想マシンモニタ２１０ａは、実計算機１００上で複数のＯＳを動作させるためのソフトウェアであり、仮想計算機３００を作成しゲストＯＳ４００に提供する。ホストＯＳ型仮想マシンモニタ２１０ａとは、実計算機１００上でホストＯＳ２００が動作しており、ホストＯＳ２００上で仮想マシンモニタ２１０ａおよびゲストＯＳ４００が動作するものである。
特に、本実施の形態では、仮想マシンモニタ２１０ａがホストＯＳ２００上のアプリケーションとして動作する仮想計算機システム８０４を例として示す。
【０１０８】
本実施の形態においても、仮想マシンモニタ２１０ａおよびゲストＯＳ４００には準仮想化技術が適用されているものとする。
準仮想化技術については、実施の形態１にて説明したため、ここでは、その説明を省略する。
【０１０９】
図１５は、本実施の形態に係る仮想計算機システム８０４のブロック構成を示す図である。
図１５は、実施の形態２において説明した図８に対応する図であり、実施の形態２との差分は、仮想マシンモニタ２１０ａがホストＯＳ２００上で動作するアプリケーションとなっている点である。仮想マシンモニタ２１０ａは、バックエンドドライバ２２０ａを備え、バックエンドドライバ２２０ａには、Ｈ／Ｗ障害情報設定部３２０が搭載されている。バックエンドドライバ２２０ａ及びＨ／Ｗ障害情報設定部３２０の機能構成については、実施の形態２と同様である。また、その他の構成についても実施の形態２と同様である。
【０１１０】
図１６は、本実施の形態に係る仮想計算機システム８０４のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
図１６に、Ｈ／Ｗ障害操作ツール３１０に対して障害生成の指示を与えてから共有メモリ４３０にＨ／Ｗ障害情報４４１がセットされるまでのシーケンスを示す。
まず、Ｓ７００において、Ｈ／Ｗ障害操作ツール３１０に対して障害生成の指示を与えると、Ｈ／Ｗ障害操作ツール３１０から仮想マシンモニタ２１０ａのＨ／Ｗ障害情報設定部３２０に対して、生成するＨ／Ｗ障害についての内容が指示される。
この際のプロセス間通信の方法については特に言及しないが、例えばメッセージパッシングやシグナル、ソケット通信などを利用する。
【０１１１】
Ｓ７０１において、Ｈ／Ｗ障害生成の指示を受けたＨ／Ｗ障害情報設定部３２０は、共有メモリ４３０に対してＨ／Ｗ障害情報４４１を設定し、ゲストＯＳ４００に対して仮想割り込みを上げる。
以降のシーケンスは、実施の形態１と同様であり、図６及び図７に示したシーケンスとなる。
また、Ｓ７０２〜Ｓ７０３のシーケンスは、図９に示すＳ４０２〜Ｓ４０３のシーケンスと同様である。
【０１１２】
以上のように、本実施の形態に係る仮想計算機システム８０４のＨ／Ｗ障害模擬方式は、仮想マシンモニタ２１０ａがホストＯＳ２００のアプリケーションとして動作するホストＯＳ型仮想マシンモニタ２１０ａを使用した仮想計算機システム８０４のＨ／Ｗ障害模擬方式である。仮想計算機システム８０４のＨ／Ｗ障害模擬方式は、以下の（ａ）〜（ｅ）の手段を備える。また、コンピュータである仮想計算機システム８０４上において、以下の（ａ）〜（ｅ）の手順を備えるＨ／Ｗ障害模擬プログラムが実行される。
（ａ）Ｈ／Ｗ障害を模擬するためのＨ／Ｗ障害情報テーブル４４０が格納された共有メモリ４３０。
（ｂ）Ｈ／Ｗ障害情報テーブル４４０を登録、更新するためのＨ／Ｗ障害情報設定部３２０。
（ｃ）Ｈ／Ｗ障害情報テーブル４４０をもとにゲストＯＳ４００の準仮想化ドライバ内の処理を分岐させる障害判定部４５０。
（ｄ）Ｈ／Ｗ障害情報テーブル４４０をもとにＨ／Ｗ障害の模擬を行う障害模擬部４５１。
（ｅ）ゲストＯＳ４００またはゲストＡＰＰ５００に対してＨ／Ｗ障害の通知を行う障害通知部４５２。
【０１１３】
実施の形態１〜４では、ホストＯＳ２００に仮想マシンモニタ２１０が組み込まれた仮想化環境を対象としていたのに対し、本実施の形態では、以上のような構成とすることで、仮想マシンモニタ２１０ａがホストＯＳ２００上のアプリケーションとして動作する仮想化環境においても、準仮想化技術を適用したゲストＯＳ４００上においてＨ／Ｗ障害の検出および通知が可能となる。これによって、準仮想化技術を適用した仮想化環境上において、Ｈ／Ｗ障害発生時のゲストＯＳ４００またはゲストＡＰＰ５００の動作確認を行うことが可能となる。
【０１１４】
実施の形態６．
本実施の形態では、主に、実施の形態１〜５との差異について説明する。
図１７は、本実施の形態に係る仮想計算機システム８０５のシステム構成を示す一例を示す図である。図１７を用いて、本実施の形態に係る仮想計算機システム８０５のシステム構成について説明する。
【０１１５】
本実施の形態では、実施の形態１〜５において説明した構成と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
【０１１６】
本実施の形態に係る仮想計算機システム８０５は、ハイパーバイザ型仮想マシンモニタ２１０ｂを用いた構成である。
実計算機１００は、仮想計算機システム８０５を動作させるための物理ハードウェアであり、ＣＰＵ、メモリ、割込みコントローラなどを備える。
仮想マシンモニタ２１０ｂは、実計算機上で複数のＯＳを動作させるためのソフトウェアであり、仮想計算機３００を作成しゲストＯＳ４００に提供する。
【０１１７】
ハイパーバイザ型仮想マシンモニタ２１０ｂとは、実計算機１００上で直接仮想マシンモニタが動作する形態の仮想マシンモニタ２１０ｂである。仮想マシンモニタ２１０ｂの模擬した仮想計算機３００の上でゲストＯＳ４００が動作する。
【０１１８】
本実施の形態においても、仮想マシンモニタ２１０ｂおよびゲストＯＳ４００には準仮想化技術が適用されているものとする。
準仮想化技術については、実施の形態１にて説明したため、ここでは、その説明を省略する。
【０１１９】
図１８は、本実施の形態に係る仮想計算機システム８０５のブロック構成図である。
本実施の形態に係る仮想計算機システム８０５は、上述したハイパーバイザ型仮想マシンモニタ２１０ｂを用いたシステムである。
【０１２０】
図１８は、実施の形態２において説明した図８に対応する図であり、実施の形態２との差分は、仮想マシンモニタ２１０ｂがハイパーバイザ型仮想マシンモニタである点である。仮想マシンモニタ２１０ｂは、バックエンドドライバ２２０ｂを備え、バックエンドドライバ２２０ｂには、Ｈ／Ｗ障害情報設定部３２０が搭載されている。バックエンドドライバ２２０ａ及びＨ／Ｗ障害情報設定部３２０の機能構成については、実施の形態２と同様である。
また、さらに実施の形態２と異なる点としては、本実施の形態に係る仮想計算機システム８０５は、試験対象とするゲストＯＳ４００の他に、Ｈ／Ｗ障害操作ツール３１０を使用してＨ／Ｗ障害を管理するためのゲストＯＳｕ４００ｕを仮想マシンモニタ２１０ｂ上に配置する点である。
【０１２１】
ゲストＯＳｕ４００ｕには、アプリケーションとしてＨ／Ｗ障害操作ツール３１０を配置し、Ｈ／Ｗ障害操作用のユーザインタフェースとする。
その他の構成については、ホストＯＳ２００が存在しないこと以外は実施の形態２と同様である。
【０１２２】
図１９は、本実施の形態に係る仮想計算機システム８０５のＨ／Ｗ障害模擬方式の動作を示すシーケンス図である。
図１９に、Ｈ／Ｗ障害操作ツール３１０に対して障害生成の指示を与えてから共有メモリ４３０にＨ／Ｗ障害情報４４１がセットされるまでのシーケンスを示す。
【０１２３】
まず、Ｓ８００において、Ｈ／Ｗ障害操作ツール３１０に対して障害生成の指示を与えると、Ｈ／Ｗ障害操作ツール３１０から仮想マシンモニタ２１０ｂのＨ／Ｗ障害情報設定部３２０に対して、生成するＨ／Ｗ障害についての内容が指示される。
この際のゲストＯＳ−ゲストＯＳ１間のＯＳ間通信の方法については特に言及しないが、例えば、パケット通信などを利用する。
【０１２４】
Ｓ８０１において、Ｈ／Ｗ障害生成の指示を受けたＨ／Ｗ障害情報設定部３２０は、共有メモリ４３０に対してＨ／Ｗ障害情報４４１を設定し、ゲストＯＳ４００に対して仮想割り込みを上げる。
以降のシーケンスは、実施の形態１と同様であり、図６及び図７に示したシーケンスとなる。
また、Ｓ８０２〜Ｓ８０３のシーケンスは、図９に示すＳ４０２〜Ｓ４０３のシーケンスと同様である。
【０１２５】
以上のように、本実施の形態に係る仮想計算機システム８０４のＨ／Ｗ障害模擬方式は、ハイパーバイザ型仮想マシンモニタ２１０ｂを使用した仮想計算機システム８０５のＨ／Ｗ障害模擬方式である。仮想計算機システム８０５のＨ／Ｗ障害模擬方式は、以下の（ａ）〜（ｅ）の手段を備える。また、コンピュータである仮想計算機システム８０５上において、以下の（ａ）〜（ｅ）の手順を備えるＨ／Ｗ障害模擬プログラムが実行される。
（ａ）Ｈ／Ｗ障害を模擬するためのＨ／Ｗ障害情報テーブル４４０が格納された共有メモリ４３０。
（ｂ）Ｈ／Ｗ障害情報テーブル４４０を登録、更新するためのＨ／Ｗ障害情報設定部３２０。
（ｃ）Ｈ／Ｗ障害情報テーブル４４０をもとにゲストＯＳ４００の準仮想化ドライバ内の処理を分岐させる障害判定部４５０。
（ｄ）Ｈ／Ｗ障害情報テーブル４４０をもとにＨ／Ｗ障害の模擬を行う障害模擬部４５１。
（ｅ）ゲストＯＳ４００またはゲストＡＰＰ５００に対してＨ／Ｗ障害の通知を行う障害通知部４５２。
【０１２６】
以上のように、本実施の形態に係る仮想計算機システム８０５のＨ／Ｗ障害模擬方式によれば、実計算機１００上で直接仮想マシンモニタ２１０ｂが動作する形態の仮想化環境においても、準仮想化技術を適用したゲストＯＳ４００上においてＨ／Ｗ障害の検出および通知が可能となる。
これによって、準仮想化技術を適用したハイパーバイザ型仮想マシンモニタ２１０ｂを用いた仮想化環境上においても、Ｈ／Ｗ障害発生時のゲストＯＳ４００またはゲストＡＰＰ５００の動作確認を行うことが可能となる。
【０１２７】
実施の形態１〜６に係る仮想計算機システム（仮想計算機障害模擬システム、仮想計算機障害模擬方法及び仮想計算機障害模擬プログラム）は、ゲストＯＳ及びホストＯＳから参照可能な共有メモリにＨ／Ｗ障害に関する情報を格納し、ホストＯＳ側から当該共有メモリに設定したＨ／Ｗ障害に関する情報に応じて、ゲストＯＳ上で当該Ｈ／Ｗ障害を検出・通知を行うという構成を備えた。このような構成により、準仮想化技術を適用した仮想計算機環境において、仮想マシンモニタ内にて模擬したハードウェア障害をゲストＯＳのデバイスドライバから検出可能とし、ゲストＯＳのデバイスドライバは該ハードウェア障害に関する通知をゲストＯＳまたはゲストアプリケーションに対して行うことが可能となる。これによって、準仮想化技術を適用した仮想計算機環境上において、ハードウェア障害が発生した際のゲストアプリケーションの動作確認を行うことが可能となる。
【０１２８】
また、実施の形態１〜６に係る仮想計算機システム（仮想計算機障害模擬システム、仮想計算機障害模擬方法及び仮想計算機障害模擬プログラム）は、準仮想化方式用のデバイスドライバを備えた仮想化環境であり、障害模擬の指示を与える手段を持つ構成であれば、仮想化環境の構築方式の違いによらず実現できる。例えば、ホストＯＳ組み込み型の仮想マシンモニタだけではなく、ホストＯＳをアプリケーションとして動作させる種類の仮想マシンモニタや、ハードウェア上で直接動作させるハイパーバイザ型の仮想マシンモニタにも適用可能である。
【０１２９】
上記実施の形態１〜６の説明では、例えば、「Ｈ／Ｗ障害情報設定部」、「障害判定部」、「障害模擬部」、「障害通知部」、「通常処理部」がそれぞれ独立した機能ブロックとして構成されている。しかし、これに限られるわけではなく、例えば、「障害判定部」、「障害模擬部」、「障害通知部」をひとつの機能ブロックで実現し、「通常処理部」をひとつの機能ブロックで実現しても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで構成しても構わない。
【０１３０】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１３１】
１００  実計算機、２００  ホストＯＳ、２１０，２１０ａ，２１０ｂ  仮想マシンモニタ、２２０  バックエンドドライバ、２３０  仮想マシンモニタ管理用ＡＰＩ、３００  仮想計算機、３１０  Ｈ／Ｗ障害操作ツール、３２０  Ｈ／Ｗ障害情報設定部、４００  ゲストＯＳ、４２０  フロントエンドドライバ、４３０  共有メモリ、４４０  Ｈ／Ｗ障害情報テーブル、４４１  Ｈ／Ｗ障害情報、４５０  障害判定部、４５１  障害模擬部、４５２  障害通知部、４５３  通常処理部、５００  ゲストＡＰＰ、８００，８０１，８０２，８０３，８０４，８０５  仮想計算機システム、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2014167683.tif 000003
【図２】
2014167683.tif 000004
【図３】
2014167683.tif 000005
【図４】
2014167683.tif 000006
【図５】
2014167683.tif 000007
【図６】
2014167683.tif 000008
【図７】
2014167683.tif 000009
【図８】
2014167683.tif 000010
【図９】
2014167683.tif 000011
【図１０】
2014167683.tif 000012
【図１１】
2014167683.tif 000013
【図１２】
2014167683.tif 000014
【図１３】
2014167683.tif 000015
【図１４】
2014167683.tif 000016
【図１５】
2014167683.tif 000017
【図１６】
2014167683.tif 000018
【図１７】
2014167683.tif 000019
【図１８】
2014167683.tif 000020
【図１９】
2014167683.tif 000021