(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
実施の形態1.
図1は、実施の形態1に係るログ生成装置の一実施例を示す情報処理装置の構成図である。
図1において、情報処理装置は、計算機1上でホストOS2が動作し、ゲストOS3、仮想マシンモニタ(VMM: Virtual Machine Monitor)4、ホストOSログ生成部5がホストOS2上で動作し、ゲストOSログ生成部7がゲストOS3上で動作する構成とする。また、仮想マシンモニタ(VMM)4は、ホストOS2上で動作するイベント生成部8を備え、さらに、ホストOS2には、マージ部6を備えている。
【0012】
ホストOS2は、計算機上に別の計算機環境を構築する仮想マシンにおいて、仮想マシンのプログラムを動作させている基盤となるOSである。また、ゲストOS3は、ホストOS2上で動作している仮想マシンのOSである。ゲストOS3は、仮想マシンを実現するソフトウェアである仮想マシンモニタ(VMM)4により動作している。ホストOS2、ゲストOS3共に、実行経路や各処理のイベントを追跡してログを生成するホストOSログ生成部5, ゲストOSログ生成部7を備えている。なお、ここで言うイベントは、ホストOS2、ゲストOS3で発生した処理を示しており、ホストOSログ生成部5、ゲストOSログ生成部7によって出力する。また、ホストOSログ生成部2, ゲストOSログ生成部7は、各OSで発生した処理についてのみ追跡することができる。つまり、ホストOS2上のホストOSログ生成部5により、ゲストOS3内で発生した処理について追跡することができない。
【0013】
図2は、実施の形態1に係るログ生成装置の一構成例を示す図である。
図2において、ゲストOSログ生成部7は、発生したログに対して識別子を生成して付与する識別子生成部10と、仮想マシンモニタ(VMM)4に識別子を通知するための識別子通知部11を備えている。また、ゲストOSログ生成部7は、識別子が付与されたログをゲストOSログ12に記録する。
【0014】
仮想マシンモニタ(VMM)4は、イベント生成部8を備えており、ゲストOSログ生成部7の識別子通知部11により識別子の通知を受けた際、イベント生成部8を用いて、ホストOSログ生成部5に、識別子付きのイベント通知を行なう。
【0015】
ホストOSログ生成部5は、ホストOS2上で発生するイベントを、ホストOSログ13に記録する。また、ホストOSログ生成部5は、仮想マシンモニタ(VMM)4のイベント生成部8からの識別子付きイベント通知をもとに、識別子を埋め込んだログを、ホストOSログ13に記録する。
【0016】
マージ部6は、ホストOSログ13に埋め込まれた識別子に対応するログを、ゲストOSログ12から抽出し、ホストOSログ13に埋め込まれた識別子を、ゲストOSログ12から抽出したログに置換し、ゲストOS3とホストOS2のログがマージされたマージログ14を生成する。
【0017】
図3は、ゲストOSログ12、ホストOSログ13、マージログ14の一例を示す図である。
図3において、ゲストOSログ12は、各イベントを一意に識別するための識別子と、イベントが発生した時刻、及びイベントの情報が記録されている。なお、本例では、識別子として、イベント発生毎に数字をインクリメントするようなシーケンス番号の数字を用いているが、一意に識別できるものであれば何でもよく、例えば、識別子に文字列を用いてもよい。ただし、この識別子は、ゲストOS3からホストOS2へ通知を行なうため、識別子の長さが短く、データ量が少ないことが望ましい。また、ホストOSログ13には、イベントが発生した時刻と、イベント、または仮想マシンモニタ(VMM)4のイベント生成部8から通知された識別子が記録されている。これらのゲストOSログ12とホストOSログ13がマージされて、マージログが生成される。
【0018】
次に、実施の形態1におけるログ生成装置の動作について、
図4、
図5を参照して説明する。
図4は、実施の形態1におけるゲストOS3側の処理の流れを示すフローチャートである。
図5は、実施の形態1におけるホストOS2側の処理の流れを示すフローチャートである。
【0019】
以下、
図4を用いて、ゲストOS3側の処理の流れを説明する。
まず、ステップS101において、ゲストOSログ生成部7は、ログ生成の準備をする。ログ生成の準備では、ログの取得条件の設定を行なう。例えば、ログの取得対象として、どのCPUコアを指定するか、あるいは、ログを取得する処理単位として、イベント単位とするか、関数単位とするかなどを設定する。さらにオプション機能として、関数呼び出し関係をトレースできる表示形式で出力するように指定することもできる。
次に、ステップS102において、ゲストOSログ生成部7は、ログを発生するイベントが来るまで待機し、ログを発生するイベントが発生したときに、S103の分岐に進む。
次に、ステップS103において、ゲストOSログ生成部7は、識別子生成部10により、発生したログに対して識別子を付与するとともに、その識別子を、ホストOS2上で動作する仮想マシンモニタ(VMM)4に通知する。
次に、ステップS104において、ゲストOSログ生成部7は、識別子が付与されたログをゲストOSログ12に出力する。ゲストOSログ12への出力書式例は、
図3に示す通りである。
次に、ステップS105において、ゲストOSログ生成部7は、ログの生成の終了条件を満たすまで、ステップS102からステップS105までを繰り返す。ログの生成の終了条件は、例えば、予め設定されたログの取得期間を満たした場合や、ログ取得の終了のシグナルが発生した場合などである。
【0020】
次に、
図5を用いて、ホストOS2側の処理の流れを説明する。
まず、ステップS201において、ホストOSログ生成部5は、ログ生成の準備をする。ログ生成の準備は、ゲストOS3側のステップS101の処理と同様に、ログの取得条件の設定を行なう。
次に、ステップS202において、ホストOSログ生成部5は、ログを発生するイベントか、仮想マシンモニタ(VMM)4からの識別子付きイベント通知が発生するまで待機する。仮想マシンモニタ(VMM)4からの識別子付きイベント通知の処理は、ゲストOSログ生成部7から仮想マシンモニタ(VMM)4に識別子が通知されると、仮想マシンモニタ(VMM)4のイベント生成部8により識別子付きイベントが生成され、ホストOSログ生成部5に通知される。ホストOSログ生成部5は、上記のように待機し、ログを発生するイベントが発生した場合、ステップS203の分岐に進み、識別子付きイベント通知が発生した場合、ステップS204の分岐に進む。
次に、ステップS202でログを発生するイベントが発生した場合、ステップS203において、ホストOSログ生成部5は、発生したログをホストOSログ13に出力する。ホストOSログ13への出力書式例は、
図3に示す通りである。
一方、ステップS202で識別子付きイベント通知が発生した場合は、ステップS204において、ホストOSログ生成部5は、識別子をホストOSログ13に出力する。識別子は、重複なく一意に識別可能なものであればよく、例えばイベント発生毎に数字をインクリメントするようなシーケンス番号でもよい。
次に、ステップS205において、ホストOSログ生成部5は、ログの生成の終了条件を満たすまで、ステップS202からステップS205までを繰り返す。ログの生成の終了条件は、例えば、予め設定されたログの取得期間を満たした場合や、ログ取得の終了のシグナルが発生した場合などである。
次に、ステップS206において、マージ部6は、ゲストOS3のゲストOSログ12と、ホストOS2のホストOSログ13を収集する。
最後に、ステップS206において、マージ部6は、
ホストOSログ13に挿入されている識別子に対応するログを、ホストOSログ13に埋め込まれた識別子に対応するログを、ゲストOSログ12から抽出し、ホストOSログ13に埋め込まれた識別子を、ゲストOSログ12から抽出したログに置換し、ゲストOS3とホストOS2のログがマージされたマージログ14を生成する。
【0021】
以上のように、本実施の形態1の発明は、ゲストOSログ生成部7が識別子生成部10と識別子通知部11を備え、識別子通知部11によって、ゲストOSログ12が生成されたタイミングで、識別子が、仮想マシンモニタ(VMM)4を経由して、ホストOSログ生成部5に通知され、ホストOSログ13と共に記録されることにより、マージ部6で、ホストOSログ13に記録された識別子をもとに、ゲストOSログ12を参照するのみで、イベントのログを発生順に並べて、まとめ上げることができる。これにより、ログのデータの転送の負荷を軽減して、ログをまとめ上げる際にもソートなどの処理が不要になり、複数の環境で生成されたログをまとめる処理の負荷を抑えつつ、イベントのログを発生順に並べることができるようになる。
【0022】
さらに、識別子のみの通知を行なっているため、ログデータの出力書式が変更された場合でも、出力書式のインタフェース変更を考慮する必要なく動作させることができる。
【0023】
実施の形態2.
以上の実施の形態1では、ゲストOS3のイベントが発生するタイミングごとに識別子を通知し、発生順にイベントが並ぶようにしたものであるが、本実施の形態2では、識別子通知による負荷を下げたい場合に、周期的なタイミングで識別子を通知するようにした実施の形態を示す。以下、
図6、
図7を用いて、実施の形態2のログ生成装置9の構成と、ログ生成の処理フローについて説明する。
【0024】
図6は、実施の形態2に係るログ生成装置の一構成例を示す図である。
図6において、ホストOS2に関わる構成は、実施の形態1の
図2と同様であるが、ゲストOS3に関わる構成が異なり、ゲストOS3に周期タイマ部15を追加する。また、ゲストOS3に対して周期割込みを通知する周期割込み発生部18を設ける。さらに、実施の形態1の
図1に記載した識別子生成部10と識別子通知部11をゲストOSログ生成部7に備える代わりに、周期タイマ部15に識別子生成部16と識別子通知部17を備える。
【0025】
周期タイマ部15は、周期割込み発生部18からの割込み通知を受け、周期的に、識別子生成部16と識別子通知部17を実行する。識別子生成部16は、実行される度に識別子を生成し、識別子通知部17が、ゲストOSログ生成部7と、ホストOS2上の仮想マシンモニタ(VMM)4に識別子を通知する。識別子通知部17から識別子の通知を受けたゲストOSログ生成部7は、その識別子をゲストOSログ12に記録する。一方、識別子通知部17から識別子の通知を受けたときのホストOS2側の識別子の記録は、実施の形態1の処理と同様である。マージ部6は、ホストOSログ13に記録された識別子から、ゲストOSログ12に記録された識別子を参照し、次の識別子までのログをまとめ上げて、マージログ14を生成する。
【0026】
本実施の形態2では、ゲストOSログ生成部7が、ゲストOSログ12に識別子を記録するようにしたが、周期タイマ部15の起床タイミングと識別子とが、ログ上で結び付けられればよいため、識別子はゲストOSログ12に記録することに限られない。例えば、タイマの起床タイミングをログとして記録できるゲストOSログ生成部7を用いている場合、そのタイマの起床タイミングのログに識別子を記録する方法でも実現可能である。
【0027】
なお、周期割込み発生部18は、周期的に割込みを発生させることができればよいため、ソフトウェア、または、ハードウェアのどちらで実現してもよい。
【0028】
次に、実施の形態2におけるログ生成装置の動作について、
図7を参照して説明する。
図7は、実施の形態2におけるゲストOS3側の処理の流れを示すフローチャートである。
なお、ホストOS2側の処理フローは、実施の形態1と同様であるため、説明を省略する。
【0029】
まず、ステップS301において、周期タイマ部15は、タイマを設定する。タイマの設定では、ログの取得期間の設定を行なう。
次に、ステップS302において、周期タイマ部15は、周期割込み発生部18により起床させられるまで待機し、起床したとき、ステップS303の分岐に進む。
次に、ステップS303において、周期タイマ部15は、ゲストOSログ生成部7と、ホストOS2の仮想マシンモニタ(VMM)4に識別子を通知する。
次に、ステップS304において、周期タイマ部15は、ログの生成の終了条件を満たすまで、ステップS402からステップS403までを繰り返す。ログの生成の終了条件は、例えば、予め設定されたログの取得期間を満たした場合や、ログ取得の終了のシグナルが発生した場合などである。
【0030】
次に、ゲストOSログ生成部7の処理の流れを説明する。
まず、ステップS401において、ゲストOSログ生成部7は、ログ生成の準備をする。ログ生成の準備は、実施の形態1と同様の処理である。
次に、ステップS402において、ゲストOSログ生成部7は、ログを発生するイベントか、周期タイマ部15からの識別子通知が来るまで待機する。ログを発生するイベントが発生した場合、ステップS403の分岐へ進む。また、周期タイマ部15から識別子通知を受けた場合、ステップS404の分岐へ進む。
次に、ステップS402でログを発生するイベントが発生した場合、ステップS403において、ゲストOSログ生成部7は、発生したログをゲストOSログ12に出力する。ゲストOSログ12への出力書式例は、
図3に示す通りである。
次に、ステップS402で周期タイマ部15から識別子通知を受けた場合、ステップS404において、ゲストOSログ生成部7は、通知を受けた識別子が付与されたログをゲストOSログ12に出力する。
次に、ステップS405において、ゲストOSログ生成部7は、ログの生成の終了条件を満たすまで、ステップS402からステップS405までを繰り返す。ログの生成の終了条件は、例えば、予め設定されたログの取得期間を満たした場合や、ログ取得の終了のシグナルが発生した場合などである。
【0031】
なお、本実施の形態2において、ログのイベント発生順を保証できる精度は、周期タイマ部15が実行される割込み発生間隔によって異なる。例えば、1秒間隔で周期タイマ部15を起動するとしたとき、1秒間隔でイベントが発生した前後関係は保証できるが、1秒間隔以内のイベント発生順については保証することができない。この周期間隔をイベントの発生間隔に近づけた場合、実施の形態1とほぼ同様の処理の負荷となり、また、イベント発生順を保証できる精度も実施の形態1とほぼ同様となる。
【0032】
以上のように、本実施の形態2の発明は、イベント発生毎に識別子通知を行なうのではなく、周期タイマによって識別子を通知し、イベント発生毎よりも識別子の通知頻度を下げることにより、識別子の生成・通知・記録の処理の負荷が軽減されるという効果がある。
【0033】
実施の形態3.
以上の実施の形態1、2では、イベント発生毎に識別子を通知するか、一定周期ごとに識別子を通知するか、で異なる実施形態を示したが、本実施の形態3では、実施の形態1、2を併用することで、処理に要する負荷と、イベント発生順を保証する精度との調整が可能となることを示す。例えば、実施の形態1を用いて発生頻度が稀なイベントに対して、イベント発生毎に識別子を通知させた場合、負荷は非常に低くなるが、識別子を通知しないイベントの発生順を保証する精度が低くなる。このイベント発生毎に識別子を通知する設定に加え、実施の形態2を用いて、発生頻度が稀なイベントより短い間隔で識別子を通知することで、発生頻度が稀なイベントが発生していない場合には、一定周期ごとの識別子を元にイベント発生順の精度を保証することができるようになる。
【0034】
また、実施の形態1では、ゲストOS3で発生する全てのログに対して識別子を生成し、割り当て、通知する必要があったが、実施の形態1、2を併用することで、特定のイベントだけを通知するだけでもログの収集が可能であり、イベントの種類別に発生順を保証する精度を変えることができるようになる。例えば、ディスクにアクセスするイベントとネットワーク通信のイベントを取得しているときに、ディスクにアクセスするイベントのみ識別子を割り当て、通知するようにしたとする。この場合、ディスクにアクセスするイベントは、実施の形態1と同様のイベント毎単位の精度でゲストOSとのログを発生順に並べることができる。一方、ネットワーク通信のイベントは、実施の形態2と同様の精度で、イベント発生順に並べることができる。これにより、ディスクアクセス時にホストOSのログとの時系列を正確に取りつつ、そのときにネットワーク通信が行なわれていたかどうかを判断することができる。
【0035】
以下、
図8、
図9を用いて、実施の形態3のログ生成装置9の構成と、ログ生成の処理フローについて説明する。
図8は、実施の形態3に係るログ生成装置の一構成例を示す図である。
図8において、ホストOS2に関わる構成は、実施の形態1の
図2と同様であるが、ゲストOS3に関わる構成が異なり、ゲストOS3に、識別子調停部19を追加する。
【0036】
識別子調停部19は、識別子を生成すべきタイミングにおいて、周期タイマ部15により周期的に識別子を生成・通知するか、または、ゲストOSログ生成部7によりイベント発生毎に識別子を生成・通知するかの判断を行なう。例えば、ゲストOSログ生成部7が、高頻度で識別子を通知している場合には、識別子調停部19が周期タイマ部15で生成した識別子を通知しないようにして、ゲストOSログ生成部7によりイベント発生毎に識別子を生成・通知すると判断する。一方、ゲストOSログ生成部7が、識別子を通知する頻度が低い場合には、ゲストOSログ生成部7で生成した識別子を通知しないようにして、周期タイマ部15により周期的に生成した識別子を生成・通知すると判断する。
【0037】
次に、本実施の形態3におけるログ生成装置の動作について、
図9を参照して説明する。
図9は、実施の形態3におけるゲストOS3側の処理の流れを示すフローチャートである。
なお、ホストOS2側の処理フローは、実施の形態1と同様であるため、説明を省略する。
【0038】
まず、ステップS501において、周期タイマ部15は、タイマを設定する。タイマの設定では、ログの取得期間の設定を行なう。
次に、ステップS502において、周期タイマ部15は、周期割込み発生部18により起床させられるまで待機し、起床したとき、ステップS503の分岐に進む。
次に、ステップS503において、識別子調停部19は、周期タイマ部15により周期的に識別子の通知をするか否かを決定する。周期タイマ部15により周期的に識別子の通知をする場合は、ステップS504に進み、周期タイマ部15により周期的に識別子の通知をしない場合は、ステップS504をスキップしてステップS505に進む。
次に、ステップS504において、周期タイマ部15は、ゲストOSログ生成部7と、ホストOS2の仮想マシンモニタ(VMM)4に識別子を通知する。
次に、ステップS505において、周期タイマ部15は、ログの生成の終了条件を満たすまで、ステップS402からステップS403までを繰り返す。ログの生成の終了条件は、例えば、予め設定されたログの取得期間を満たした場合や、ログ取得の終了のシグナルが発生した場合などである。
【0039】
次に、ゲストOSログ生成部7の処理の流れを説明する。
まず、ステップS601において、ゲストOSログ生成部7は、ログ生成の準備をする。ログ生成の準備は、実施の形態1と同様の処理である。
次に、ステップS602において、ゲストOSログ生成部7は、ログを発生するイベントか、周期タイマ部15からの識別子通知が来るまで待機する。ログを発生するイベントが発生した場合、ステップS603の分岐へ進む。また、周期タイマ部15から識別子通知を受けた場合、ステップS606の分岐へ進む。
次に、ステップS603において、識別子調停部19は、ゲストOSログ生成部7によりイベント発生毎に識別子を通知するか否かを決定する。ゲストOSログ生成部7によりイベント発生毎に識別子を通知する場合は、ステップS604に進み、ゲストOSログ生成部7によりイベント発生毎に識別子を通知しない場合は、ステップS605に進む。
次に、ステップS604において、ゲストOSログ生成部7は、識別子通知部11により、イベント毎に生成した識別子を、ホストOS2の仮想マシンモニタ(VMM)4に通知する。
次に、ステップS605において、ゲストOSログ生成部7は、ステップS603で識別子を通知すると決定した場合、通知した識別子とログをゲストOSログ12に出力する。一方、ステップS603で識別子を通知しないと決定した場合、識別子を付与していないログをゲストOSログ12に出力する。
次に、ステップS602で周期タイマ部15から識別子通知を受けた場合、ステップS606において、ゲストOSログ生成部7は、識別子が付与されたログをゲストOSログ12に出力する。
次に、ステップS607において、ゲストOSログ生成部7は、ログの生成の終了条件を満たすまで、ステップS602からステップS607までを繰り返す。ログの生成の終了条件は、例えば、予め設定されたログの取得期間を満たした場合や、ログ取得の終了のシグナルが発生した場合などである。
【0040】
以上のように、本実施の形態3の発明は、実施の形態1、2のログ生成装置を単体で用いた場合よりも、識別子調停部19を用いて実施の形態1、2のログ生成装置を併用することにより、ログ生成処理に要する負荷と、イベント発生順を保証する精度の調整が細かく行なえるようになるという効果がある。
【0041】
実施の形態4.
以上の実施の形態1〜3では、ゲストOS3を1つとしたものであるが、次に、本実施の形態4では、ゲストOS3が複数台ある場合の実施の形態を示す。
【0042】
図10は、実施の形態4に係るログ生成装置の一実施例を示す情報処理装置の構成図である。
図10では、実施の形態1に対して、ゲストOS20と、それを動作させている仮想マシンモニタ(VMM)22を追加で1台、配置する。なお、本実施の形態4では、追加で1台配置した例を示したが、2台以上の複数台を配置することもでき、配置できる最大台数は計算機の性能により異なる。また、本実施の形態4では、実施の形態1をもとに示したが、実施の形態2または3においても、ゲストOSと、それを動作させている仮想マシンモニタ(VMM)を複数配置することが可能である。さらに、複数のゲストOSの種類は、異なる種類を用いていてもよい。
【0043】
図11は、実施の形態4に係るログ生成装置の一構成例を示す図である。
図11において、実施の形態4における各構成要素の関係は、ゲストOS3とゲストOS20の2つが動作していることを除き、実施の形態1とほぼ同様である。実施の形態1との相違点は、2台を同時に動作させるために、識別子生成部28が、ゲストOS3とゲストOS20とで重複することなく一意の識別子を生成する必要がある点である。また、ゲストOSが、2台に限らず複数台ある場合には、全てのゲストOSに対して一意の識別子を生成する必要がある。この複数台で一意の識別子は、例えば、計算機名+各計算機内の時刻と組み合わせることで生成することができる。
【0044】
マージ部6は、ホストOSログ13に埋め込まれた識別子を参照する際に、ゲストOSログ12と、ゲストOSログ26の2つから識別子を検索する。その他の各ゲストOSと仮想マシンモニタ(VMM)の個々の動作は、実施の形態1の
図4、
図5と同様である。
【0045】
以上のように、本実施の形態4の発明は、実施の形態1〜3に加え、識別子が全てのゲストOSで一意となるようにすることで、複数台のゲストOSと複数台の仮想マシンモニタ(VMM)を動作させた場合でも、イベントのログを発生順に並べて、まとめ上げることができるようになる。