(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の仮想計算機システムにおいて、前記仮想通信パスは、前記実計算機のメモリ上の所定領域であって、前記所定領域のアドレスが、前記ホストOSの前記第1の構成情報に含まれることを特徴とする仮想計算機システム。
実計算機のホストOSと、前記実計算機で前記ホストOSに制御されたゲストOSが動作し、仮想通信パスを設けた仮想計算機による仮想計算機システムの制御方法であって、
前記ホストOS上で動作する第1の異常予兆検知判断機構は、
前記仮想通信パスから前記ゲストOSの第1の状態情報を読み込み、
読み込んだ前記第1の状態情報、前記ホストOSの第2の状態情報、前記ホストOSの第1の構成情報、および前記ゲストOSの第2の構成情報に基づいた、前記ホストOS及び/又は前記ゲストOSの異常予兆の有無に応じて決定したトレースポイントのON/OFF状態を記録した第1のトレースポイント状態変更テーブルを前記仮想通信パスに格納し、
前記第1のトレースポイント状態変更テーブルの前記ホストOSのトレースポイントのON/OFF状態に基づいて、前記ホストOSのトレースポイントのON/OFF状態を変更し、
前記ゲストOS上で動作する第1の異常予兆検知エージェントは、
前記ゲストOSの前記第1の状態情報を前記仮想通信パスに格納し、前記第1の異常予兆検知判断機構によって前記仮想通信パスに格納された前記第1のトレースポイント状態変更テーブルの前記ゲストOSのトレースポイントのON/OFF状態に基づいて、前記ゲストOSのトレースポイントのON/OFF状態を変更する
ことを特徴とする仮想計算機システムの制御方法。
請求項5に記載の仮想計算機システムの制御方法において、前記仮想通信パスは、前記実計算機のメモリ上の所定領域であって、前記所定領域のアドレスが、前記ホストOSの前記第1の構成情報に含まれることを特徴とする仮想計算機システムの制御方法。
実計算機のホストOSと、前記実計算機で前記ホストOSに制御されたゲストOSが動作し、仮想通信パスを設けた仮想計算機による仮想計算機システムの制御方法であって、
前記ゲストOS上で動作する異常予兆検知判断機構は、
前記仮想通信パスから前記ホストOSの第1の状態情報を読み込み、
読み込んだ前記第1の状態情報、前記ゲストOSの第2の状態情報、前記ゲストOSの第1の構成情報、並びに前記ホストOSの第2の構成情報に基づいた、前記ホストOS及び/又は前記ゲストOSの異常予兆の有無に応じて決定したトレースポイントのON/OFF状態を記録したトレースポイント状態変更テーブルを前記仮想通信パスに格納し、
前記トレースポイント状態変更テーブルの前記ゲストOSのトレースポイントのON/OFF状態に基づいて、前記ゲストOSのトレースポイントのON/OFF状態を変更し、
前記ホストOS上で動作する異常予兆検知エージェントは、
前記ホストOSの前記第1の状態情報を前記仮想通信パスに格納し、
前記異常予兆検知判断機構によって前記仮想通信パスに格納された前記トレースポイント状態変更テーブルの前記ホストOSのトレースポイントのON/OFF状態に基づいて、前記ホストOSのトレースポイントのON/OFF状態を変更する
ことを特徴とする仮想計算機システム。
【発明を実施するための形態】
【実施例1】
【0014】
実施例1では、ゲストOSとホストOSの間でメッセージやデータのやり取りを行うための通信パスと、ゲストOS内の状態を通信パスに保存したり、ゲストOS内のトレースポイントのON状態及びOFF状態の変更を実施したりするエージェントをゲストOS上に設け、ホストOS上に存在する異常予兆検知判断機構がゲストOSの異常予兆を判断したり、異常予兆検知判断機構で検知したホストOSの異常予兆をゲストOSのエージェントに通知したりすることによって、ゲストOSとホストOSの個々の異常予兆に対する動作を連携可能とする効果をもった装置の構成、および方法を示す。
【0015】
図1は、実計算機100の構成図である。CPU101、物理メモリ102、ディスク103が、バス110を介して接続している。実計算機の電源を投入した後、CPU101は、ディスク103の特定領域の内容を物理メモリ102に読み込み、ディスク103に格納されているOSの起動を実施する。以下の説明では、実計算機100の電源投入後にディスク103から起動するOSをホストOSとする。また、CPU101が物理メモリ102に格納されているプログラムを実行することを、ホストOSがホストOS上に存在するプログラムを実行するとして説明する。
【0016】
図2は、仮想計算機200の構成図である。仮想CPU201、仮想物理メモリ202、仮想ディスク203、仮想通信パス204が、仮想バス210を介して接続している。ホストOS上の仮想計算機の起動プログラムを実行すると、仮想CPU201は、仮想ディスク203の特定領域の内容を仮想物理メモリ202に読み込み、仮想ディスク203に格納されているOSを起動する。以下の説明では、仮想計算機の起動プログラム実行後に仮想ディスク203から起動するOSをゲストOSとする。仮想通信パス204は、ゲストOSとホストOSの間でメッセージやデータのやり取りを行うための通信パスである。仮想通信パス204は、やり取りするメッセージやデータを、ゲストOSおよびホストOSが書き込み、読み出しすることにより通信する、仮想計算機に割り当てられたメモリ上の領域である。この仮想通信パス204は、同一実計算機内のゲストOS間のやり取りを行う通信パスとして使用されても良い。
【0017】
次に、ゲストOSとホストOSの個々の異常予兆に対する連携処理について説明する。
図3は、仮想計算機システムの構成図である。本仮想計算機システムは、実計算機100、ホストOS300、仮想計算機200、ゲストOS350から構成される。図では示していないが、仮想計算機200及びゲストOS350は複数存在しても良い。
【0018】
ホストOS300上に、ホストトレースバッファ310、ホストトレースポイント311、異常予兆検知判断機構320、ホストOS構成情報330、ゲストOS構成情報335が存在する。ゲストOS350上には、ゲストトレースバッファ360、ゲストトレースポイント361、異常予兆検知エージェント370が存在する。ホストトレースポイント311及びゲストトレースポイント361は、
図3に1つずつ示されているが、複数存在しても良い。仮想計算機200には、仮想通信パス390が存在する。
【0019】
ホストトレースポイント311及びゲストトレースポイント361は、ホストOS上及びゲストOS上で各々実行される各種プログラムに埋め込まれたプログラムであり、ON状態とOFF状態の2つの状態が存在する。ホストトレースポイント311(ゲストトレースポイント361)がON状態の場合、トレースポイント311(361)を実行すると、トレースデータがホストトレースバッファ310(ゲストトレースバッファ360)に格納される。一方、各トレースポイント311(361)がOFF状態の場合、トレースデータは各トレースバッファ310(360)に格納されない。ホストトレースバッファ310(ゲストトレースバッファ360)は、実際に障害が発生した際に、ホストOS300(ゲストOS350)がどのように動作したかを解析するために利用される。
【0020】
ホストOS構成情報330には、実計算機100のハードウェア構成及びホストOS300の内部構成、ホストOS300のバージョン、実計算機100と仮想計算機200のハードウェア対応情報等、ホストOS300が動作するために必要な情報が格納されている。ゲストOS構成情報335には、仮想計算機200の仮想ハードウェア構成及びゲストOS350の内部構成、ゲストOS350のバージョン等、ゲストOS350を動作させるために必要な情報、および仮想通信パス204のホストOS300から見たアドレスなどホストOS300がゲストOS350を制御するために必要な情報が格納されている。複数の仮想計算機200及びゲストOS350が存在する場合、それらの数に応じたゲストOS構成情報335が存在する。
【0021】
異常予兆検知エージェント370は、ゲストOS350の状態情報(例えば、プロセス群371の状態、ゲストOS350内部の状態、仮想計算機200に接続されている各仮想装置の状態等)を仮想通信パス204に定期的に格納する。ゲストOS350の状態情報の格納した際、仮想通信パス204に状態情報を格納したことをホストOS300の異常予兆検知判断機構320に通知しても良い。
【0022】
異常予兆検知判断機構320は、ホストOS300の状態情報(例えば、プロセス群321の状態や、ホストOS300内部の状態や、実計算機に接続されている各装置の状態等)を監視し、異常の予兆が無いかを判断する。さらに、異常予兆検知判断機構320は、ゲストOS構成情報335に含まれる仮想通信パス204のアドレスを参照して、異常予兆検知エージェント370によって仮想通信パス204に保存されたゲストOS350の状態情報を定期的に読み出し、ゲストOS350の状態情報、ホストOS構成情報330、およびゲストOS構成情報335から、ゲストOS350の異常の有無を判断する。仮想通信パス204よりゲストOS350の状態情報を読み出す際は、ゲストOS350の異常予兆検知エージェント370からの通知に応答して読み込んでも良い。
【0023】
次に、異常予兆検知判断機構320が、ホストOS300の状態情報あるいはゲストOS350の状態情報から、ホストOSあるいはゲストOSに異常の予兆があると判断し、ホストOS及びゲストOSの各トレースポイントをON状態あるいはOFF状態に変更するまでの動作を説明する。
【0024】
図4に、異常予兆検知判断機構320の処理のフローチャートを示す。異常予兆検知判断機構320は、まずホストOS300、及び仮想通信パス204からゲストOS350の状態情報を読み込む(ステップ401)。図示を省略するが、ホストOS300の状態情報は、ホストOS300内にホストOS構成情報330などと同様に格納されている。またゲストOS350の状態情報は、ゲストOS350内に格納されていて、その状態情報をゲストOS350が定期的に仮想通信パス204書き込む。次に、読み込んだ状態情報から異常予兆の有無を判断する(ステップ402)。異常予兆が無い場合はステップ401に戻り、異常予兆が有る場合は、ステップ403に進む。尚、ゲストOS350の異常予兆の有無を判断する場合、ホストOS構成情報330とゲストOS構成情報335も利用する。
【0025】
ホストOS300及びゲストOS350のどのトレースポイントをON状態あるいはOFF状態にするか決定し、
図5に示すようなトレースポイント状態変更テーブル501を作成する(ステップ403)。トレースポイント状態変更テーブル501は、ホストOS300及び/又はゲストOS350の異常予兆の有無に応じて決定した、各々のトレースポイントのON/OFF状態が記録されている。
【0026】
仮想通信パス204を介して、異常予兆検知エージェント370にトレースポイント状態変更テーブル501を送信する(ステップ404)。ゲストOS350が複数存在する場合は、各ゲストOS350にトレースポイント状態変更テーブル501を送信する。尚、送信するデータはステップ403で作成したトレースポイント状態変更テーブル501でも良いし、トレースポイント状態変更テーブル501から送信対象のゲストOS350に関連するエントリ(状態変更テーブル501の行)を抽出したテーブルでも良い。また、トレースポイント状態変更テーブル501を送受信するための仮想通信パス204は、状態情報を格納する仮想通信パスと異なって存在しても良い。
【0027】
次に、トレースポイント状態変更テーブル501のホストOSの行のON/OFF状態と現状のホストトレースポイント311のON/OFF状態を比較する(ステップ405)。比較の結果、ON状態からOFF状態への変更あるいはOFF状態からON状態への変更が必要な場合、トレースポイントのON/OFF状態を変更し(ステップ406)、動作を終了する。一方、変更が必要でない場合、ON/OFF状態を変更せずに動作を終了する。異常予兆判断機構320は以上のように動作する。
【0028】
次に、
図6を用いて、ステップ404で異常予兆判断機構320が仮想通信パス204を介してトレースポイント状態変更テーブル501を送信した後の異常予兆検知エージェント370の処理のフローを説明する。
【0029】
異常予兆検知エージェント370は、異常予兆判断機構320から仮想通信パス204を介してトレースポイント状態変更テーブル501を受信する(ステップ601)。次に、受信したトレースポイント状態変更テーブル501を読み込み、現状のゲストトレースポイント361のON/OFF状態と比較する(ステップ602)。比較の結果、ON/OFF状態の変更が必要な場合、トレースポイントのON/OFF状態を変更し、処理を終える(ステップ603)。変更の必要がない場合、処理を終える。異常予兆検知エージェント370は以上のように動作する。
【0030】
以上により、異常予兆判断機構320をホストOS300上で動作させ、異常予兆検知エージェント370をゲストOS350上で動作させ、ゲストOS350とホストOS300間で仮想通信パス204を利用することで、ゲストOS350とホストOS300の個々の異常予兆を検知し、その異常予兆に沿ってトレースポイントのON/OFF状態の変更が可能となる。
【0031】
本実施例により、例えば、ゲストOS350の状態情報からディスクI/Oの異常予兆を検知した際に、ゲストOS350が使用しているディスク103と仮想ディスク203のトレースポイントをON状態にすることが可能となる。
【実施例2】
【0032】
本実施例では、実施例1で示したホストOS上で動作する異常予兆検知判断機構がゲストOS上で動作する場合を示す。
【0033】
図7は、ホストOS700上で異常予兆エージェント740が動作し、ゲストOS1(750)上に異常予兆検知判断機構770、ホストOS構成情報780及びゲストOS構成情報785が存在し、ゲストOS2(755)上に異常予兆エージェント775が存在する仮想計算機システム構成を示す図である。図には示していないが、さらにゲストOSが動作する場合、そのゲストOSはゲストOS2(755)と同様の構成で、同様に動作する。
【0034】
ゲストOS2(755)上の異常予兆検知エージェント775は、実施例1の異常予兆検知エージェント370と同様に動作し、ゲストOS2(755)の状態情報を仮想通信パス795に定期的に格納する。ゲストOS2(755)の状態情報を格納した際、仮想通信パス795に状態情報を格納したことをホストOSの異常予兆検知エージェント740に通知しても良い。
【0035】
ホストOS700上の異常予兆検知エージェント740は、ホストOS700の状態情報と、仮想通信パス795から読み込んだゲストOS2(755)の状態情報を、仮想通信パス790に定期的に格納する。状態情報を格納した際、格納したことをゲストOS1(750)の異常予兆検知判断機構770に通知しても良い。図示を省略しているが、ホストOS700は仮想通信パス790及び795のアドレス情報を持っている。
【0036】
異常予兆検知判断機構770は、ゲストOS1(750)の状態情報を監視し、異常の予兆が無いか判断する。さらに、異常予兆検知判断機構770は、異常予兆検知エージェント740によって仮想通信パス790に保存されたホストOS700とゲストOS2(755)の状態情報を定期的に読み出し、読みだした状態情報とホストOS構成情報780及びゲストOS構成情報785から、ホストOS700及びゲストOS2(755)に異常が無いか判断する。仮想通信パス790よりホストOS700及びゲストOS2(755)の状態情報を読み出しは、ホストOS700の異常予兆検知エージェント740の通知に応答して読み込んでも良い。
【0037】
ここでは、ゲストOS2(755)の状態情報を、ホストOS700の異常予兆検知エージェント740が一旦読み出してから、仮想通信パス790に読みだした状態情報を格納し、異常予兆検知判断機構770に仮想通信パス790に格納された状態情報を読み込ませることを示したが、ホストOS700の異常予兆検知エージェント740を経由せずに、異常予兆検知判断機構770がゲストOS2(755)の状態情報を読み出すようにしても良い。この場合、ゲストOS1(750)のゲストOS構成情報785に、仮想通信パス795のゲストOS1(750)から見たアドレスを含んでいる。
【0038】
次に、異常予兆検知判断機構770が、ホストOS700の状態情報、ゲストOS1(750)の状態情報、あるいはゲスト2(755)の状態情報から、ホストOS700あるいは各ゲストOS750,755に異常の予兆の有無に応じた、ホストOS700及び各ゲストOS750,755の各トレースポイントをON状態あるいはOFF状態に変更するまでの動作を説明する。
【0039】
図8に、ゲストOS1(750)の異常予兆検知判断機構770の処理のフローチャートを示す。
【0040】
異常予兆検知判断機構770は、ホストOS700及びゲストOS1(750)及びゲストOS2(755)の状態情報を読み込む(ステップ801)。次に、読み込んだ状態情報から異常予兆の有無を判断する(ステップ802)。異常予兆が無い場合はステップ801に戻り、有る場合は、ステップ803に進む。尚、ホストOS700や他のゲストOS755の異常予兆の有無を判断する場合、ホストOS構成情報780及びゲストOS構成情報785も利用する。
【0041】
ホストOS700及びゲストOS1(750)及びゲストOS2(755)のどのトレースポイントをON状態あるいはOFF状態にするか決定し、
図9に示したようなトレースポイント状態変更テーブル901を作成する(ステップ803)。
【0042】
仮想通信パス790を介して、ホストOS700の異常予兆検知エージェント740に、トレースポイント状態変更テーブル901を送信する(ステップ804)。尚、送信するデータはステップ803で作成したトレースポイント状態変更テーブル901でも良いし、トレースポイント状態変更テーブル901からホストOS700及びゲストOS2(755)に関連するエントリ(状態変更テーブル501の行)を抽出したテーブルでも良い。また、トレースポイント状態変更テーブルを送受信するための仮想通信パス790が、状態情報を格納する仮想通信パス790と異なって存在しても良い。さらに、異常予兆検知判断機構770がゲストOS2(755)の異常予兆検知エージェント775にトレースポイント状態変更テーブル901を送信しても良い。
【0043】
次に、トレースポイント状態変更テーブル901のゲストOS1の行のON/OFF状態と現状のゲストトレースポイント761のON/OFF状態を比較する(ステップ805)。比較の結果、ON状態からOFF状態への変更あるいはOFF状態からON状態への変更が必要な場合、トレースポイントのON/OFF状態を変更し(ステップ806)、動作を終了する。一方、変更が必要でない場合、ON/OFF状態を変更せずに動作を終了する。異常予兆判断機構770は以上のように動作する。
【0044】
次に、
図10を用いて、ステップ804で異常予兆判断機構770が仮想通信パス790を介してトレースポイント状態変更テーブル901を送信した後の、ホストOS700の異常予兆検知エージェント740の処理のフローを説明する。
【0045】
異常予兆検知エージェント740は、異常予兆判断機構770から仮想通信パス790を介してトレースポイント状態変更テーブル901を受信する(ステップ1001)。次に、仮想通信パス795を介して、ゲストOS2(755)の異常予兆検知エージェント775に、トレースポイント状態変更テーブル901を送信する(ステップ1002)。ただし、ステップ804でゲストOS1(750)の異常予兆判断機構770からゲストOS2(755)の異常予兆検知エージェント775にトレースポイント状態変更テーブル901を送信した場合、ステップ1002は実行しない。
【0046】
さらに、トレースポイント状態変更テーブル901を読み込み、現状のホストトレースポイント711のON/OFF状態と比較する(ステップ1003)。比較の結果、ON状態からOFF状態への変更あるいはOFF状態からON状態への変更が必要な場合、トレースポイントのON/OFF状態を変更し、処理を終える(ステップ1004)。変更の必要がない場合、処理を終える。ホストOS700の異常予兆検知エージェント740は以上のように動作する。
【0047】
ステップ1002で、ホストOS700の異常予兆検知エージェント740がゲストOS2(755)の異常予兆検知エージェント775に、トレースポイント状態変更テーブル901を送信した後の処理は、
図6のフローと同様である。
【0048】
以上により、異常予兆判断機構770をゲストOS1(750)上で動作させ、異常予兆検知エージェント740及び775をそれぞれホストOS700及びゲストOS755上で動作させ、ゲストOSとホストOS間で仮想通信パス790及び795を利用することで、ゲストOS1(750)、ゲストOS2(755)及びホストOS700の個々の異常予兆を検知し、その異常予兆に沿ってトレースポイントのON/OFF状態の変更が可能となる。
【実施例3】
【0049】
本実施例では、実施例1及び実施例2で示した異常予兆検知判断機構がホストOS上とゲストOS上にそれぞれ存在する場合を示す。
【0050】
図11は、ホストOS1100上、ゲストOS1(1150)上、及びゲストOS2(1155)上に異常予兆検知判断機構が存在するように構成された仮想計算機システム構成を示す図である。図には示していないが、さらにゲストOSが動作する場合、
図11に示したゲストOSと同様の構成をとる。
【0051】
ここでは代表的に、ゲストOS1(1150)上の異常予兆判断機構1170が、ゲストOS1150に異常の予兆があると判断し、ホストOS1100及び各ゲストOSの各トレースポイントをON状態あるいはOFF状態に変更するまでの動作を説明する。
【0052】
図12に、ゲストOS1(1150)の異常予兆検知判断機構1170の処理のフローチャートを示す。
【0053】
異常予兆検知判断機構1170は、ゲストOS1(1150)の状態情報を仮想通信パス1190から読み込む(ステップ1201)。次に、読み込んだ状態情報から異常予兆の有無を判断する(ステップ1202)。異常予兆が無い場合は1101に戻り、有る場合は、ステップ1203に進む。
【0054】
ゲストOS1(1150)のどのトレースポイントをON状態あるいはOFF状態にするか決定し、ゲストOS1のトレースポイント状態変更テーブルを作成する(ステップ1203)。
【0055】
仮想通信パス1190を介して、ホストOS1100の異常予兆検知判断機構1140に、ゲストOS1(1150)の異常予兆内容を送信する(ステップ1204)。
【0056】
次に、ゲストOS1のトレースポイント状態変更テーブルと、現状のゲストトレースポイント1161のON/OFF状態と比較する(ステップ1205)。比較の結果、ON状態からOFF状態への変更あるいはOFF状態からON状態への変更が必要な場合、トレースポイント1161のON/OFF状態を変更し(ステップ1206)、動作を終了する。一方、変更が必要でない場合、ON/OFF状態を変更せずに動作を終了する。異常予兆判断機構1170は以上のように動作する。
【0057】
次に、
図13を用いて、ステップ1204で異常予兆判断機構1170が仮想通信パス1190を介してゲストOS1の異常予兆内容を送信した後の、ホストOS1100の異常予兆検知判断機構1140の処理のフローを説明する。
【0058】
異常予兆検知判断機構1140は、異常予兆判断機構1170から仮想通信パス1190を介してゲストOS1の異常予兆内容を受信する(ステップ1301)。次に、ホストOS構成情報1130と全ゲストOS構成情報1135から、ホストOS1100及びゲストOS2(1155)のトレースポイント状態変更テーブルを
図5あるいは
図9と同様に作成する(ステップ1302)。
【0059】
次に、仮想通信パス1195を介して、ゲストOS2(1155)の異常予兆検知判断機構1175に、ステップ1302で作成したトレースポイント状態変更テーブルを送信する(ステップ1303)。
【0060】
さらに、トレースポイント状態変更テーブルを仮想通信パス1195を介して読み込み、現状のホストトレースポイント1111のON/OFF状態と比較する。(ステップ1304)比較の結果、ON状態からOFF状態への変更あるいはOFF状態からON状態への変更が必要な場合、レースポイントのON/OFF状態を変更し、処理を終える。(ステップ1305)もし、変更の必要がない場合、処理を終える。ホストOS700の異常予兆検知エージェント1140は以上のように動作する。
【0061】
ステップ1303でホストOS1100の異常予兆検知判断機構1140がゲストOS2(1155)の異常予兆検知判断機構1175にトレースポイント状態変更テーブルを送信した後の処理は、
図6のフローで異常予兆検知エージェントの役割を異常予兆検知判断機構が担うものとし、同様のフローである。
【0062】
以上により、異常予兆判断機構1140、1170、1175をそれぞれホストOS1100・ゲストOS1(1150)・ゲストOS2(1155)にもたせ、ゲストOSとホストOS間で仮想通信パス1190及び1195を利用することで、ゲストOS1(750)、ゲストOS2(755)及びホストOS700の個々の異常予兆を検知し、その異常予兆に沿ってトレースポイントのON/OFF状態の変更が可能となる。
【0063】
尚、以上の実施例1〜3で示した方法の一部を組み合わせて、ホストOSあるいは複数のゲストOSの異常予兆検知及びレースポイントのON/OFF状態の変更を実施しても良いものとする。
【0064】
以上の実施形態によれば、仮想計算機システムにおいて、トレースポイントON/OFF状態を、異常予兆の有無に応じて変更できるので、通常時のシステム負荷が抑えられかつ異常発生時の原因解析性も担保できる。