(57)【要約】【課題】仮想計算機システムの保守性を向上させるため、占有ＰＣＩデバイス、共有ＰＣＩデバイス、仮想ＰＣＩデバイスで発生した障害を適切に報告できるしくみを提供する。【解決手段】ＰＣＩデバイス障害を監視する障害監視アプリケーションとハイパバイザとの間でＰＣＩデバイス構成情報を受け渡す手段を用意し、ユーザ仮想計算機、および制御用仮想計算機で障害監視アプリケーションを稼動させて、前記ＰＣＩデバイス構成情報を元に、ユーザ仮想計算機で動作する障害監視アプリケーションでは占有ＰＣＩデバイス障害および仮想ＰＣＩデバイス障害を、制御用仮想計算機で動作する障害監視アプリケーションでは共有ＰＣＩデバイス障害をそれぞれ監視することにより、占有ＰＣＩデバイス、共有ＰＣＩデバイス、仮想ＰＣＩデバイスの障害を重複なく適切に報告する。【選択図】図１
2008269194.tif 000002
【特許請求の範囲】
【請求項１】
実計算機上で仮想計算機制御手段の制御により複数の仮想計算機が動作する仮想計算機システムにおいて、占有デバイスとして１つのユーザ仮想計算機のみから使用される実デバイスと、共有デバイスとして複数のユーザ仮想計算機から制御用仮想計算機を介して共通に使用される実デバイスとを有し、前記ユーザ仮想計算機及び前記制御用仮想計算機は使用している実デバイスの障害を監視する障害監視手段を各々が備え、前記仮想計算機制御手段は各仮想計算機対応に各仮想計算機に割当てるデバイスの構成情報を保持し、各障害監視手段はデバイス障害検出時の障害情報に対応するデバイス構成情報に従ってシステム管理者へデバイス障害を通知することを特徴とする仮想計算機システム。
【請求項２】
各障害監視手段は前記仮想計算機制御手段が保持しているデバイス構成情報を読み出す手段を備え、起動時またはデバイス構成変更時に前記デバイス構成情報を読み出すことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記デバイス構成情報は当該デバイス構成情報を使用している仮想計算機がユーザ仮想計算機か制御用仮想計算機かを示す識別フラグを含むことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
前記デバイス構成情報は当該デバイス構成情報を使用している仮想計算機に割当てられているデバイスが占有デバイスか共有デバイスかを示すデバイス種別を含むことを特徴とする請求項３記載の仮想計算機システム。
【請求項５】
前記仮想計算機システムは前記仮想計算機制御手段により制御される実デバイスを有しない仮想デバイスを有し、前記デバイス構成情報の前記デバイス種別には仮想デバイスを示す情報が含まれ、前記障害監視手段は前記情報を元に障害が発生したデバイスが仮想デバイスであるか否かを判定し、仮想デバイス障害である場合には、実デバイスの障害ではなく前記仮想計算機制御手段の障害として仮想計算機システムのシステム管理者へ通知することを特徴とする請求項４記載の仮想計算機システム。
【請求項６】
前記デバイスはPCIデバイスであることを特徴とする請求項１乃至５いずれかに記載の仮想計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムのデバイス障害の監視方式に係り、特に実計算機上で複数の仮想計算機が走行する仮想計算機システムにおけるPCIデバイス障害の監視技術に関するものである。
【背景技術】
【０００２】
計算機システムの保守性を向上させるためには、障害が発生した部位を正しくシステム管理者に通知することが必要である。障害監視アプリケーションがオペレーティングシステム（ＯＳ)上で発生するイベントを定期的に監視し、障害発生を示すイベントを検出した場合に障害発生の警告を発する障害監視方法が、特開２０００−２２２２４７号公報に記載されている。
【０００３】
【特許文献１】特開２０００−２２２２４７公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら実計算機上で複数の仮想計算機が走行する仮想計算機システムにおいて、それぞれの仮想計算機上で前記イベント監視方法を使用して、ＯＳのデバイスドライバが発生させるイベントを定期的に監視し、PCIデバイス障害の検知を行う障害監視方法では、次のような問題がある。
【０００５】
第１に、１つの実PCIデバイスを複数の仮想計算機が使用する共有ＰＣＩデバイスに対する障害の監視において、実PCIデバイスで障害が発生した場合には、共有ＰＣＩデバイスを使用しているそれぞれの仮想計算機上で動作しているＯＳのデバイスドライバが障害のイベントを発生させるため、それぞれの仮想計算機で動作している障害監視アプリケーションが障害を検知し、結果として複数個の障害として仮想計算機システムのシステム管理者に対して通知される。実際には１つの実ＰＣＩデバイスの障害として報告される必要がある。
【０００６】
第２に、実PCIデバイスを有しないハイパバイザが仮想的に作り出した仮想PCIデバイスに対する障害の監視において、ハイパバイザの仮想ＰＣＩデバイス処理の異常により、仮想ＰＣＩデバイスで障害が発生した場合には、仮想ＰＣＩデバイスに使用している仮想計算機上で動作しているＯＳのデバイスドライバが、障害のイベントを発生させるため障害監視アプリケーションで障害を検知し、結果としてＰＣＩデバイス障害の発生として仮想計算機システムのシステム管理者に対して通知される。実際にはハイパバイザの異常として報告される必要がある。
【課題を解決するための手段】
【０００７】
上記の問題点を解決するため、本発明は以下により達成される。
【０００８】
実計算機上で仮想計算機制御手段の制御により複数の仮想計算機が動作する仮想計算機システムにおいて、占有デバイスとして１つのユーザ仮想計算機のみから使用される実デバイスと、共有デバイスとして複数のユーザ仮想計算機から制御用仮想計算機を介して共通に使用される実デバイスとを有し、前記ユーザ仮想計算機及び前記制御用仮想計算機は使用している実デバイスの障害を監視する障害監視手段を各々が備え、前記仮想計算機制御手段は各仮想計算機対応に各仮想計算機に割当てるデバイスの構成情報を保持し、各障害監視手段はデバイス障害検出時の障害情報に対応するデバイス構成情報に従ってシステム管理者へデバイス障害を通知する。
【発明の効果】
【０００９】
本発明のＰＣＩデバイス障害監視技術により、実計算機上に複数の仮想計算機が走行する仮想計算機システムにおいて、実ＰＣＩデバイスを複数の仮想計算機が使用する共有ＰＣＩデバイスの障害を、仮想計算機システムのシステム管理者へ重複なく報告することが可能となる。また、ハイパバイザで仮想的に作り出された仮想ＰＣＩデバイスの障害を、実ＰＣＩデバイスの障害ではなくハイパバイザの障害として、仮想計算機システムのシステム管理者へ適切に報告することが可能となる。以上により、仮想計算機システムの保守性を向上させる効果がある。
【発明を実施するための最良の形態】
【００１０】
以下、図面を使用して本発明を実施する場合の一形態を具体的に説明をする。
【００１１】
図１は、本発明実施の一形態を示すシステム構成図である。実計算機（１００）でハイパバイザ（仮想計算機制御プログラム）（１７０）が走行し、仮想計算機（１１０）（１１１）（１１２）を作り出す。このうち仮想計算機（１１０）は、仮想計算機システムを制御するために使用する制御用仮想計算機であり、仮想計算機システムのユーザにはこの仮想計算機の存在を隠蔽する。
【００１２】
仮想計算機（１１１）（１１２）はユーザが使用することの出来るユーザ仮想計算機である。それぞれの仮想計算機上ではＯＳ（１６０）（１６１）（１６２）が走行し、ユーザ仮想計算機（１１１）（１１２）ではユーザアプリケーション（１３０）（１３１）が走行している。ユーザアプリケーション（１３０）（１３１）はデバイスドライバ（１４１）（１４２）（１４３）（１４４）を利用し、ＰＣＩデバイスに対してアクセスを行う。
【００１３】
占有ＰＣＩデバイス（１８１）は１つのユーザ仮想計算機のみが使用できる実ＰＣＩデバイスである。仮想ＰＣＩデバイス（１８２）はハイパバイザ（１７０）が仮想的に作り出した実ＰＣＩデバイスを有しないＰＣＩデバイスであり、ユーザアプリケーション（１３１）からデバイスドライバ（１４４）に対して行われた、仮想ＰＣＩデバイスに対するアクセスをハイパバイザが受け取り、ハイパバイザの仮想ＰＣＩデバイス（１８２）が要求に対するエミュレーションを行い結果を返す。仮想ＰＣＩデバイス（１８２）としては例えば、仮想ＮＩＣがあり、これは仮想計算機システム内に作られた複数の仮想計算機間でネットワーク通信を行う目的で用意されるものである。
【００１４】
共有ＰＣＩデバイス（１８０）は複数のユーザ仮想計算機が使用することのできる実ＰＣＩデバイスであり、ユーザ仮想計算機（１１１）（１１２）で走行するユーザアプリケーション（１３０）（１３１）から、デバイスドライバ（１４１）（１４３）に対して行われた共有ＰＣＩデバイス（１８０）に対するアクセス要求を、ハイパバイザ（１７０）が受け取り、制御用仮想計算機（１１０）に割当てられた仮想ＰＣＩデバイス（１８３）に要求を渡す。仮想ＰＣＩデバイス（１８３）と共有ＰＣＩデバイス（１８０）はＯＳ（１６０）の機能であるブリッジ（１５０）により相互接続されており、この仮想ＰＣＩデバイス（１８３）への要求は、ブリッジ（１５０）により共有ＰＣＩデバイス（１８０）へ渡され、共有ＰＣＩデバイス（１８０）は要求に対する処理を行ない結果を返す。それぞれの仮想計算機（１１０）（１１１）（１１２）では障害監視アプリケーション（１２０）が走行しており、ＯＳのイベントを定期的に監視してＰＣＩデバイス障害の検知を行う。
【００１５】
なお同図では、簡略化のため制御用仮想計算機は１つ、ユーザ仮想計算機は２つ、共有ＰＣＩデバイスは１つ、占有ＰＣＩデバイスは１つ、仮想ＰＣＩデバイスは２つとして記述しているが、本発明において制御用仮想計算機、ユーザ仮想計算機、共有ＰＣＩデバイス、占有ＰＣＩデバイス、仮想ＰＣＩデバイスはそれぞれ複数個とされ、この数に限定されるものではないことは勿論である。
【００１６】
図２は、仮想化計算機システムでのハードウエア仮想化方式を示した図である。ハイパバイザ（１７０）は物理プロセッサ（２００）、物理ＰＣＩデバイス（２０５）、物理メモリ（２１０）、および物理ＢＭＣ（Baseboard Management Controller）（２１５）をタイムスライスにより時分割、もしくは物理ハードウエア資源を分割することにより、論理プロセッサ（２２０）、論理ＰＣＩデバイス（２２５）、論理メモリ（２３０）、および論理ＢＭＣ（２３５）で構成される仮想計算機を作り出す。前述の通り、この仮想計算機には役割に応じて制御用仮想計算機（１１０）とユーザ仮想計算機（１１１）があり、制御用仮想計算機（１１０）上ではＯＳ（１６０）と障害監視アプリケーション（１２０）が、ユーザ仮想計算機（１１１）上ではＯＳ（１６１）、障害監視アプリケーション（１２０）、およびユーザアプリケーション（１３０）が、ハイパバイザが作り出した論理的なハードウエア資源を利用して動作をする。
【００１７】
図３は障害監視アプリケーションが、デバイスドライバが出力する障害のイベントを監視する処理を示した図である。物理PCIデバイスで障害が発生した場合、占有PCIデバイス（１８１）として使用されていた場合には、占有ＰＣＩデバイスを使用している仮想計算機上で動作しているＯＳのデバイスドライバ（１４２）が異常を検知し、障害情報を作成して障害のイベント（２８０）としてＯＳのログ（２８５）に書き込む。また、物理ＰＣＩデバイスが共有ＰＣＩデバイス（１８０）として使用されていた場合には、共有ＰＣＩデバイスを使用している全ての仮想計算機上で動作しているＯＳのデバイスドライバ（１４１）が異常を検知し、障害情報を作成して障害のイベント（２８０）としてＯＳのログ（２８５）に書き込む。
【００１８】
一方、仮想ＰＣＩデバイス（１８２）は、ハイパバイザで仮想的に作り出したものであるので、ハイパバイザの仮想ＰＣＩデバイスのエミュレーション処理で異常が発生すると、仮想ＰＣＩデバイスを使用している仮想計算機上で動作しているＯＳのデバイスドライバ（１４４）が異常を検知し、障害情報を作成して障害のイベントとしてＯＳのログ（２８５）に書き込む。障害監視アプリケーション（１２０）は、発生したイベントが記録されるログ（２８５）を定期的に読み出して、デバイスドライバ（１４１）（１４２）（１４４）が出力する障害のイベント（２８０）を監視し、ＰＣＩデバイス障害を示すイベントを検知した場合には、ＰＣＩデバイス障害の発生をシステム管理者へ報告（２９０）する。
【００１９】
図４は障害監視アプリケーションが、ハイパバイザからPCIデバイス構成情報を読み出す処理を示した図である。ＰＣＩデバイス構成情報とは、仮想計算機へのＰＣＩデバイスの割り当てを示す情報のことであり、ハイパバイザが管理し自身が使用するメモリ上に保持している。これは仮想計算機毎に存在するものである。
【００２０】
障害監視アプリケーション（１２０）は、起動時もしくは仮想計算機で使用しているＰＣＩデバイスの構成が変更されたことを検出した時に、ＯＳ（１６１）のＩＰＭＩドライバ（３１０）に対してＰＣＩ構成情報読み出しのＯＥＭ  ＩＰＭＩコマンド（３００）を発行する。ＩＰＭＩとは計算機の管理インタフェースであるIntelligent Platform Management Interfaceのことであり、ＰＣＩ構成情報読み出しのＯＥＭ  ＩＰＭＩコマンド（３００）は本発明で新たに追加するものである。障害監視アプリケーション（１２０）が発行したＯＥＭ  ＩＰＭＩコマンド（３００）は、論理ＢＭＣ（２３５）が受け取る。ハイパバイザ（１７０）は、論理ＢＭＣ（３２０）に対してＰＣＩデバイス構成情報読み出しのＯＥＭ  ＩＰＭＩコマンド（３００）が来たことを認識すると、ＰＣＩデバイス構成情報（３３０）を論理ＢＭＣ（２３５）へ渡し、該ＰＣＩデバイス構成情報（３３０）が、ＩＰＭＩドライバ（３１０）を経由して応答データ（３０１）として障害監視アプリケーション（１２０）へ届く。
【００２１】
図５はＰＣＩデバイス構成情報（３３０）の詳細を説明する図である。ＰＣＩデバイス数（４００）は、障害監視アプリケーションが走行している仮想計算機で使用できるＰＣＩデバイス数を示し、仮想計算機識別フラグ（４１０）には、障害監視アプリケーションが走行している仮想計算機が、ユーザ仮想計算機か制御用仮想計算機かを示す情報が格納される。
【００２２】
ＰＣＩデバイス情報（４２０）は各ＰＣＩデバイスの情報であり、ＰＣＩデバイス数（４００）で示される数分のエントリが存在する。１エントリ分情報（４３０）は、ＰＣＩデバイス情報（４２０）の１エントリの内容を示したものである。この１エントリで１つのＰＣＩデバイスを示しており、バス番号（４４０）、デバイス番号（４４１）、ファンクション番号（４４２）はこのＰＣＩデバイスが割当てられているPCIコンフィグ空間アドレスを意味し、ＰＣＩデバイス種別（４４３）にはこのＰＣＩデバイスが占有ＰＣＩデバイスか、共有ＰＣＩデバイスか、または仮想ＰＣＩデバイスであることを示す情報が格納される。
【００２３】
図６は障害監視アプリケーションが、PCIデバイス障害を検知した時のフロチャートである。まずＰＣＩデバイス障害を示すイベントには障害が発生したＰＣＩデバイスが割当てられているＰＣＩコンフィグ空間アドレス（バス番号、デバイス番号、ファンクション番号で示される）が格納されており、これを読み出す（Ｓ１）。
【００２４】
次に、この障害が発生したＰＣＩデバイスが割当てられているＰＣＩコンフィグ空間アドレスをキーにして、前記ＰＣＩデバイス構成情報（３３０）のＰＣＩデバイス情報（４２０）をサーチし、障害が発生したＰＣＩデバイスに対応するエントリを探し出して、PCIデバイス種別（４４３）を読み出す（Ｓ２）。
【００２５】
このＰＣＩデバイス種別を元に、障害が発生したＰＣＩデバイスが共有ＰＣＩデバイスであるかの判定を行う（Ｓ３）。障害が発生したＰＣＩデバイスが共有ＰＣＩデバイスであった場合には、前記ＰＣＩデバイス構成情報（３３０）の仮想計算機識別フラグ（４１０）を読み出し、自身が制御用仮想計算機で走行しているかの判定を行う（Ｓ４）。この判定の結果、制御用仮想計算機で動作している場合には、共有ＰＣＩデバイスで障害が発生したことをシステム管理者に報告する（Ｓ５）。また、自身が制御用仮想計算機で走行しているかの判定（Ｓ４）を行った結果、ユーザ仮想計算機で走行している場合には、システム管理者へ障害が発生したことの報告は行わない。
【００２６】
一方、障害が発生したＰＣＩデバイスが共有ＰＣＩデバイスであるかの判定（Ｓ３）を行った結果、障害が発生したＰＣＩデバイスが共有ＰＣＩデバイスでない場合には、障害が発生したＰＣＩデバイスが仮想ＰＣＩデバイスであるかの判定（Ｓ６）を行い、仮想ＰＣＩデバイスであった場合には、ハイパバイザで障害が発生したことをシステム管理者に報告（Ｓ８）をする。共有ＰＣＩデバイスでもなく、仮想ＰＣＩデバイスでもない場合、すなわち占有ＰＣＩデバイスであった場合には、占有ＰＣＩデバイスで障害が発生したことをシステム管理者に報告（Ｓ７）する。
【００２７】
以上述べたように、本実施例によれば、実計算機上で複数の仮想計算機が走行する仮想計算機システムにおいて、複数の仮想計算機から使用される共有ＰＣＩデバイスの障害を１つのＰＣＩデバイス障害としてシステム管理者に報告することが出来、また実デバイスを有しないハイパバイザで作り出された仮想ＰＣＩデバイスの障害は、ハイパバイザの障害として報告する方法を提供することが出来る。
【図面の簡単な説明】
【００２８】
【図１】本発明の仮想計算機システムでＰＣＩデバイス障害監視方式を実現する構成の一例を示す図である。
【図２】仮想計算機システムでのハードウエア仮想化方式の一例を示す図である。
【図３】障害監視アプリケーションがデバイスドライバの出力するイベントを監視する動作の一例を示す図である。
【図４】障害監視アプリケーションがハイパバイザからＰＣＩデバイス構成情報を読み出す動作の一例を示す図である。
【図５】ＰＣＩデバイス構成情報の一例を示す図である。
【図６】障害監視アプリケーションがＰＣＩデバイス障害を検知した時に行う処理を示すフロチャートである。
【符号の説明】
【００２９】
１００  実計算機
１１０  制御用仮想計算機
１１１、１１２  ユーザ仮想計算機
１２０  障害監視アプリケーション
１３０、１３１  ユーザアプリケーション
１４０、１４１、１４２、１４３、１４４、１４５  デバイスドライバ
１５０  ブリッジ
１６０、１６１、１６２  オペレーティングシステム（ＯＳ）
１７０  ハイパバイザ
１８０  共有ＰＣＩデバイス
１８１  占有ＰＣＩデバイス
１８２、１８３  仮想ＰＣＩデバイス
２００  物理プロセッサ
２０５  物理ＰＣＩデバイス
２１０  物理メモリ
２１５  物理ＢＭＣ
２２０  論理プロセッサ
２２５  論理ＰＣＩデバイス
２３０  論理メモリ
２３５  論理ＢＭＣ
２８０  障害イベント発生通知
２８５  ログ
２９０  障害発生通知
３００  ＩＰＭＩ  ＯＥＭコマンド
３０１  応答データ
３１０  ＩＰＭＩドライバ
３３０  ＰＣＩデバイス構成情報
４００  ＰＣＩデバイス数
４１０  仮想計算機識別フラグ
４２０  ＰＣＩデバイス情報
４３０  １エントリ分情報
４４０  バス番号
４４１  デバイス番号
４４２  ファンクション番号
４４３  ＰＣＩデバイス種別
【図１】
2008269194.tif 000003
【図２】
2008269194.tif 000004
【図３】
2008269194.tif 000005
【図４】
2008269194.tif 000006
【図５】
2008269194.tif 000007
【図６】
2008269194.tif 000008