【文献】
技術基礎講座,NTT技術ジャーナル,日本,社団法人電気通信協会,2009年 8月 1日,第21巻 第8号,82−86ページ
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
実施の形態1
図1は実施の形態1に係る計算機システムのハードウェア構成の一例を示すブロック図である。計算機システムはサーバ装置(情報処理装置)1、端末装置2を含む。サーバ装置1と端末装置2とはネットワークNを介して通信を行う。端末装置2は計算機システムのユーザが使用する端末装置である。ユーザは端末装置2を用いてサーバ装置が提供する各種の情報処理サービスを利用する。
【0009】
サーバ装置1はCPU(Central Processing Unit)30、ROM(Read Only Memory)31、RAM(Read Only Memory)32、大容量記憶装置33、通信部34、読み取り部35を含む。CPU30はROM31又は大容量記憶装置33に記憶された制御プログラム31aに従いハードウェア各部を制御する。RAM32は例えばSRAM(Static RAM)、DRAM(Dynamic RAM)、フラッシュメモリ等である。RAM32はCPU30によるプログラムの実行時に発生する種々のデータを一時的に記憶する。大容量記憶装置33は例えばハードディスク、SSD(Solid State Drive)である。大容量記憶装置33はVMM(Virtual Machine Monitor)プログラム、ゲストOS、アプリケーションや、各種のデータを格納している。各プログラムはCPU30が読み出して実行する制御プログラム31aであって、CPU30によりRAM32に読み出されて実行される。なお、各プログラムはROM31に格納されていても良い。通信部34はネットワークNを介して端末装置2と通信を行う。読み取り部35はCD(Compact Disk)−ROM、DVD(Digital Versatile Disc)−ROM等の記憶媒体41を読み取る。制御プログラム31aは記憶媒体41より読み取り部35が読み取り、大容量記憶装置33に記憶することとしても良い。また、ネットワークNを介して他のコンピュータから制御プログラム31aをダウンロードしても良い。さらにまた、半導体メモリ51から制御プログラム31aを読み込むこととしても良い。
【0010】
端末装置2はCPU20、ROM21、RAM22、通信部23、読み取り部24を含む。CPU20はROM21に記憶された制御プログラム21aに従いハードウェア各部を制御する。RAM22は例えばSRAM、DRAM、フラッシュメモリ等である。RAM22はCPU20によるプログラムの実行時に発生する種々のデータを一時的に記憶する。通信部23はネットワークNを介してサーバ装置1と通信を行う。読み取り部24はCD−ROM、DVD−ROM等の記憶媒体42を読み取る。制御プログラム21aは記憶媒体42より読み取り部24が読み取り、RAM22に記憶して実行することとしても良い。また、ネットワークNを介して他のコンピュータから制御プログラム21aをダウンロードしても良い。さらにまた、半導体メモリ52から制御プログラム21aを読み込むこととしても良い。
【0011】
VMMプログラムは、サーバ装置1でVM(Virtual Machine)の動作を可能にする仮想化環境を提供するためのソフトウェアプログラムである。CPU30がVMMプログラムを実行することにより、VMMとしての動作が開始する。CPU30がVMMプログラムをVMMとして動作させることにより、サーバ装置1には、複数のVMが独立して動作が可能な仮想化環境が提供される。
【0012】
ゲストOSプログラムは、VM上でOSを実行させるソフトウェアプログラムである。ゲストOSプログラムは、VMが起動した後、CPU30がゲストOSプログラムを実行することによりOS(以下、「ゲストOS」と記す。)としての動作を開始する。
【0013】
アプリケーションプログラムは、ゲストOSのそれぞれによって実行されるソフトウェアプログラムである。
【0014】
本実施の形態に係るサーバ装置1においては、VMMは完全仮想化環境を提供する。完全仮想化環境とはハードウェアを完全にエミュレートする仮想化環境である。ハードウェアを完全にエミュレートしているため、VMで動作するゲストOSは仮想化環境のための改変が不要という利点がある。しかしながら、一部の命令は直接物理CPU上では実行できないため、VMMの介在が必要となる。この一部の命令のことをセンシティブ命令という。センシティブ命令はVM上のプログラムが実行すると実計算機の動作に影響を与えてしまう命令や、VM上で実行すると、実計算機上で実行した時と結果が異なるため、不都合が生じる命令である。そこで、完全仮想化環境においては、VMによるセンシティブ命令の実行をCPUが検知し、VMMに処理を渡す仕組みとなっている。処理を渡されたVMMはセンシティブ命令をCPUに実行させ、VMに処理を戻す。本実施の形態ではセンシティブ命令の検知による例外の発生と、それに対するVMMでの例外処理の仕組みを利用してVM(ゲストOS)からVMM(ホストOS)へのデータ転送を実現する。
【0015】
図2はサーバ装置1が有する機能を示すブロック図である。CPU30が各プログラムを実行することにより、サーバ装置1ではVMM10(収集部)が動作し、VMM10上ではVM11(仮想計算機)が動作する。VMM10は起動したVM11にサーバ装置1のリソース(CPU30、ROM31、RAM32等)を割り当てる。リソースが割り当てられた後、VM11上ではゲストOSの動作が開始する。なお、
図2においてVM11は2つしか記載していないが、3つ以上起動しても良いし、1つのみ起動するのでも良い。
【0016】
VM11ではゲストOS120上で転送プログラム110が動作し、VMM10とのデータ転送を実現する。VM11は設定記憶部130(記憶部)、データ記憶部140、戻り値記憶部150を含む。これらの記憶部はVMM10から割り当てられたリソース(CPU30のレジスタ)により実現される。転送プログラム110は記憶部111(書込部)、設定部112(決定部、第2書込部)、実行部113、算出部114、判定部115(読出部)、生成部116の各機能部を有している。
【0017】
記憶部111はデータ転送を行うデータをデータ記憶部140に書き込む。設定部112はデータ転送を行う際の設定情報(データ転送を示す特定値、転送状況、転送データ量)を設定記憶部130に書き込む。実行部113はVMM10に処理を渡すためにセンシティブ命令を実行する。算出部114はデータ転送実行時に転送済データのデータ量、未転送データのデータ量の算出を行う。判定部115は戻り値記憶部150に記憶されたVMM10から戻り値を読み出し、データ転送が正常に行われたか否かを判定する。生成部116は算出部114が算出した未転送データのデータ量、判定部115の判定結果から、転送状況(転送中、終了など)を生成する。
【0018】
VMM10はVM11を管理する機能に加えて、VM11とデータ転送を実現するための各種の機能部、特定値判定部10a(判定部)、状況判定部10b(第2読出部)、取得部10c(第3読出部)、結果設定部10d(第3書込部)、終了部10eを備える。特定値判定部10aは設定記憶部130より特定値を読み出し、データ転送のためにVM11より処理が渡されたのか否かを判定する。状況判定部10bは設定記憶部130に記憶された転送状況を読み出し、データ転送の状況を判定する。取得部10cはデータ記憶部140に記憶された転送データを取得する。結果設定部10dはVMM10でのデータ転送処理の結果を示す戻り値を戻り値記憶部150に書き込む。終了部10eは例外処理を終了する命令を実行し、処理をVM11に戻す。
【0019】
次に転送プログラム110を用いて行うVMM10、VM11間でのデータ転送処理について説明する。以下に述べる例では、VM11よりVMM10へデータを送信する場合について述べる。
【0020】
また、設定記憶部130、データ記憶部140、戻り値記憶部150はCPU30の汎用レジスタを用いて実現するものとする。例外発生によりVM11からVMM10に処理が移る場合、CPU30の汎用レジスタの状態は保たれている。あるいは、汎用レジスタの状態は退避領域に退避される。退避された値はVMM10からアクセス可能である。以下の説明において、汎用レジスタはR0からR15まで16個あるものとし、R0を設定記憶部130(記憶部)として、R1からR14までの14個をデータ記憶部140、R15を戻り値記憶部150として利用するものとする。
【0021】
図3は汎用レジスタR0のフォーマット例を示す説明図である。
図4は転送状況の一例を示す一覧表である。
図5は戻り値の一例を示す一覧表である。
図3に示すように設定記憶部130であるR0は3つの領域R00、R01、R02に分けて用いる。特定値領域R00はデータ転送を示す値である特定値(マジックナンバー、特定情報)を記憶する。CPU30で実行される命令で設定されない値とし、予め定めておく。転送状況領域R01はデータ転送の状況(index、状況情報)を記憶する。使用レジスタ数領域R02は転送に用いるレジスタの個数(転送するデータのデータ量)を記憶する。汎用レジスタR1からR14までを用いることとしたので、レジスタ個数は0から14までのいずれかの値が記憶される。
図4に示すようにデータ転送の状況は転送中を1、完了を0で表すものとする。
図5に示すように正常を示す戻り値は1、異常を示す戻り値0とする。
【0022】
図6から
図8はVMM10、VM11で行うデータ転送の処理手順を示すフローチャートである。VM11は転送するデータの準備を行う(ステップS1)。準備の処理は転送プログラム110が行なっても良いし、転送プログラム110を呼び出す他のアプリケーションプログラムが行なっても良い。VM11(記憶部111)は転送するデータを汎用レジスタR1からRx(x=2〜14)に設定する(ステップS2)。VM11(設定部112)は汎用レジスタR0の特定値領域R00にデータ転送を示す特定値(マジックナンバーともいう)、汎用レジスタR0の転送状況領域R01に転送中を示す値1、使用レジスタ数領域R02に使用するデータ記憶の用いる汎用レジスタの個数(x)を設定する(ステップS3)。VM11(実行部113)はセンシティブ命令を発行し、例外を発生させる(ステップS4)。なお、実行するセンシティブ命令は予め定めておくものとする。ここではhalt命令であるとする。処理がVM11からVMM10に移る。
【0023】
VMM10(特定値判定部10a)は例外要因が予め定めた要因(halt命令実行)によるものかを調べる(ステップS5)。例外要因が予め定めたものである場合(ステップS5でYES)、VMM10(特定値判定部10a)は汎用レジスタR0の特定値領域R00に設定されている値を読み出し、その値が特定値であるか否かを判定する(ステップS6)。特定値が設定されている場合(ステップS6でYES)、VMM10(状況判定部10b)は汎用レジスタR0の転送状況領域R01に設定されている値を読み出し、その値が転送中を示す値であるか否かを判定する(ステップS7)。転送中を示す値である場合(ステップS7でYES)、VMM10(取得部10c)は汎用レジスタR0の使用レジスタ領域R02に設定されている値(使用レジスタ数)を読み出し、その値に従って汎用レジスタR1からR14に設定されているデータを取得する(ステップS8)。例えば、使用レジスタ数が14であれば、VMM10(取得部10c)は汎用レジスタR1からR14までの14個のレジスタから値を取得する。使用レジスタ数が5であれば、VMM10(取得部10c)は汎用レジスタR1からR5までの5個のレジスタから値を取得する。VMM10(結果設定部10d)は戻り値記憶部150としての汎用レジスタR15に正常を示す戻り値を設定する(ステップS9)。VMM10(終了部10e)は例外処理終了命令を実行する(ステップS10)。処理がVMM10からVM11に戻る。
【0024】
例外要因が予め定めた要因ではない場合(ステップS5でNO)、VMM10は要因別に定められた例外処理を実行する(ステップS11)。例外要因が予め定めたものであるが特定値領域R00に格納された値が特定値ではない場合(ステップS6でNO)、データ転送処理による例外ではないので、VMM10は要因別に定められた例外処理を行う(ステップS11)。転送状況領域R01に設定されている値が転送中を示す値ではない場合(ステップS7でNO)、VMM10(状況判定部10b)は送信完了を示す値であるか否かを判定する(ステップS12)。送信完了を示す値である場合(ステップS12でYES)、VMM10(状況判定部10b)は処理をステップS9に移す。送信完了を示す値ではない場合(ステップS12でNO)、VMM10(結果設定部10d)は汎用レジスタR15にエラーを示す戻り値を設定する(ステップS13)。VMM10(結果設定部10d)は処理をステップS10に移す。処理がVMM10からVM11に戻る。
【0025】
VM11(判定部115)は戻り値記憶部150としての汎用レジスタR15に設定された値を読み取り、その値(戻り値)が正常を示す値であるか否か判定する(ステップS14)。戻り値が正常である場合(ステップS14でYES)、VM11(算出部114)は未転送データがあるか否か判定する(ステップS16)。この判定は例えば、次のように行う。転送対象となっているデータの全データ量を算出しておく。データ転送を行う度に、転送済データのデータ量を加算しておき、加算した転送済データのデータ量が全データ量と等しいか、それを超える値になったかを判定する。等しいかそれを超える値になれば未転送データはない。または、汎用レジスタを用いてデータ転送をしていることから、汎用レジスタ単位で管理しても良い。転送開始時に転送するデータは汎用レジスタ何個分のデータ量かを算出しておく。データ転送をするたびに転送データを設定したレジスタの個数を減算していき、その値が0になれば未転送データはないこととなる。未転送データがある場合(ステップS16でYES)、VM11(算出部114)は処理をステップS2に戻す。ステップS2以降の処理は上述のとおりである。
【0026】
VMM10からの戻り値が正常ではない場合(ステップS14でNO)、VM11(判定部115)は転送が完了しているか否かを判定する(ステップS15)。転送が完了したか否かの判定は、すでに転送完了をVMM10に送信したか否かで判定する。例えば、フラグ領域を設けておき、フラグが立っていれば転送完了と判定し、フラグがクリアされていれば転送完了でないと判定する。転送が完了していない場合(ステップS15でNO)、VM11(判定部115)は処理をステップS2に戻し、データの再送を行う。転送が完了している場合(ステップS15でYES)、VM11(判定部115)は処理をステップS18へ移す。VM11(設定部112)は汎用レジスタR0の特定値領域R00にデータ転送を示す特定値、汎用レジスタR0の転送状況領域R01に転送完了を示す値0を設定する(ステップS18)。VM11(設定部112)は処理をステップS4へ移す。ステップS4以降の処理は上述したとおりである。
【0027】
未転送データがない場合(ステップS16でNO)、VM11(判定部115)は転送完了をVMM10に送信済みか否かを判定する(ステップS17)。この判定は例えば、上述したようにフラグを用いて行う。転送完了をVMM10に送信済みである場合(ステップS17でYES)、VM11(判定部115)はデータ転送処理を終了する。転送完了を送信済みでない場合(ステップS17でNO)、VM11(判定部115)は処理をステップS18へ移す。ステップS18以降の処理は上述したとおりである。
【0028】
本実施の形態においては、例外処理を用いてVM11からVMM10へのデータ転送を行うこととし、VM11に転送プログラム110をインストールする。データ転送のためにVM11はVMM10に管理者権限を開放する必要がないので、VM11のセキュリティを保ちつつ、データ転送が可能となる。
また、VM11に転送プログラム110をインストールという軽微な変更で済むので、サーバ装置1が運用開始した後でも、データ転送機能を実現することが可能となる。
【0029】
実施の形態1において、VM11からVMM10へ転送するデータの例としては、性能情報、リソース情報、環境情報などが考えられる。それらの情報を分析することにより、運用管理精度、キャパシティ管理精度を上げることが可能となる。また、動作ログを収集しておくことにより、障害発生時の調査が容易となる。
【0030】
なお、転送プログラム110が起動するタイミングは転送するデータの性質に応じて定めれば良い。定期的に収集が必要なデータについては、タイマにより所定時間毎(週に一回、日に一回、一時間に一回)に転送プログラム110を起動する。イベントが発生した場合に収集が必要となるデータは、イベント監視プログラムがイベントを検知した場合に、転送プログラム110を起動するようにすれば良い。
【0031】
実施の形態2
実施の形態1ではセンシティブ命令の実行による例外処理についてデータ転送を実現する。そのため、データ転送処理を行なっている場合に、関係のない他の処理により同じ要因の例外が発生すると不都合である。本実施の形態ではその点を考慮する。なお、ハードウェア構成は実施の形態1と同様であるので、説明を省略する。
【0032】
図9は実施の形態2に係るサーバ装置1が有する機能を示すブロック図である。VMM10の備える機能部に例外管理部10f(許可部)が含まれている。例外管理部10fは例外処理をマスクするか否かを管理する機能を担う。
図9に示すその他の構成は実施の形態1と同様であるから、説明を省略する。
【0033】
図10は実施の形態2に係るVMM10、VM11で行うデータ転送の処理手順を示すフローチャートである。本実施の形態におけるデータ転送の処理は、一部を除き
図6、
図7又は
図8で示した処理と同様であるので、
図10は異なるVMM10での処理を記載し、他の部分は記載を省略している。
図10において、
図6、
図7又は
図8と同様な処理については同じ符号を付している。
【0034】
データ転送処理において、VM11はセンシティブ命令を発行し(ステップS4)、例外を発生させる。例外の発生により、処理がVMM10に移る。VMM10は、例外の発正要因がデータ転送のために予め定めた要因であるか否かを判定する(ステップS5)。発生要因が予め定めたものであり(ステップS5でYES)、汎用レジスタR0の特定値領域R00に特定値が設定されていた場合(ステップS6でYES)、同一の要因による例外(ここではhalt命令実行による例外)が多重に発生しないように、VMM10(例外管理部10f)は例外をマスクする(ステップS21)。例外をマスクするには例えば次のように行う。例外の要因毎にマスクが設定可能となっているマスクレジスタの所定のビット(ここではhalt命令に対応するビット)を1にすることにより、マスクが設定される。例外をマスクした以降の処理、ステップS7、S8、S9、S12、S13については実施の形態1と同様であるから、説明を省略する。ステップS11についても同様であるので、説明を省略する。ステップS9又はステップS13で戻り値を設定した後に、VMM10(例外管理部10f)は例外のマスクを解除する(ステップS22)。上述の例ではhalt命令に対応するマスクビットを0に設定する。VMM10は例外処理を終了する(ステップS10)。処理がVM11へ戻る。その後の処理ステップS14以降は、実施の形態1と同様であるから、説明を省略する。
【0035】
実施の形態3
上述の実施の形態1及び2においては、VMM10とデータ転送を行うVM11は単一であることを前提としている。本実施の形態においては、複数のVM11とVMM10とがデータ転送処理を行う場合について述べる。サーバ装置1のハードウェア構成、サーバ装置1が有する機能は実施の形態1及び2と同様であるので、説明を省略する。
【0036】
図11は実施の形態3に係る汎用レジスタR0のフォーマット例を示す説明図である。汎用レジスタR0を4つの領域に分けている。特定値領域R00、転送状況領域R01、使用レジスタ数領域R02は実施の形態1と同様の役割を果たすので、説明を省略する。実施の形態3に係る汎用レジスタR0ではVMID領域R03が追加されている。VMID領域R03はVM11毎に付与された識別情報を記憶するための領域である。VMIDR03を設けることにより、VMM10は同時に複数のVM11とデータ転送処理を行うことが可能となる。
【0037】
VMM10、VM11で実行されるデータ転送処理は一部を除き、
図6、
図7、
図8、又は
図10に示した処理と同様であるので、ここでは相違する点を主に説明する。
VM11のゲストOS120が起動する際、VMM10はVM11を一位に識別するID(識別情報)を発行し、VM11に付与する。ゲストOS120はRAM32等の記憶領域にIDを書き込む。
【0038】
データ転送処理において、IDを用いることより、VMM10は同時に複数のVM11とやり取りを行なっていても、どのVM11からデータが転送されてきたか識別することが可能となる。VM11(設定部112)はステップS3において、特定値、状況、個数の設定に加えて、汎用レジスタR0のVMID領域R03に自らのIDを設定する。VMM10(取得部10c)はステップS8において、データを取得する際に汎用レジスタR0のVM識別IDR03に設定されているVM11のIDを取得する。取得したVM11のIDと汎用レジスタR1からRx(x=2〜14)より取得したデータとを紐付けてVMM10は管理する。それにより、データ解析などを行う場合に、VM11毎に解析を行うことが可能となる。
【0039】
また、VM11(設定部112)はステップS3において、特定値、状況に加えて、汎用レジスタR0のVM識別領域R03に自らのIDを設定する。VMM10(取得部10c)はステップS12で送信完了したか否かを判定する際、汎用レジスタR0のVM識別領域R03に設定されているVM11のIDを取得する。取得したIDによりどのVM11とのデータ転送処理が終了したのか、VMM10(状況判定10b)は判定することが可能となる。
【0040】
上述したように実施の形態3においては、設定記憶部130であるところの汎用レジスタR0にVMID領域R03を設けることしたので、VMM10は、データ転送処理にて取得したデータがどのVM11からのデータなのか容易に識別可能となる。また、識別可能となるので、VMM10は同時にVM11とデータ転送処理を行うことが可能となる。
【0041】
実施の形態4
上述の実施の形態1から3におけるデータ転送処理では、データ記憶部140として用いる汎用レジスタのビット数と、汎用レジスタの数により、一回の例外処理により転送できるデータ量が規定される。したがって、転送するデータの総量が一回の例外処理で転送可能なデータ量が規定より大きい場合、例外処理の実行回数が多くなるため、サーバ装置1のCPU30に係る負荷が大きくなる。本実施の形態では転送データ総量に関わらず、例外処理の発生回数を一定とする処理を実現する。
【0042】
図12は実施の形態4に係る転送状況の一例を示す一覧表である。
図12に示すように本実施の形態においては、転送状況に「転送開始」が追加されている。
図13は実施の形態4に係るサーバ装置1が有する機能を示すブロック図である。実施の形態4に係るサーバ装置1は上述した実施の形態1から3のサーバ装置1が備える機能部以外に、VM11に第2判定部117、転送部118が追加されている。VMM10に発行部10g、削除部10hが追加されている。第2判定部117は転送データ全体の容量からデータ転送の方式を判定する。転送部118はファイル転送コマンドでデータの転送を行う。発行部10gはデータ転送用の一時アカウントを発行する機能を持つ。削除部10hは発行部10gが発行した一時アカウントを削除する機能を持つ。
【0043】
図14から
図16は実施の形態4に係るVMM10、VM11で行うデータ転送の処理手順を示すフローチャートである。VM11は転送するデータの準備を行う(ステップS31)。準備の処理は転送プログラム110が行なっても良いし、転送プログラム110を呼び出す他のアプリケーションプログラムが行なっても良い。VM11(第2判定部)は転送データ全体の容量が予め定めた所定量(閾値)以上であるか否かを判定する(ステップS32)。転送データの全体容量が所定量未満である場合(ステップS32でNO)、繰返し転送を行う(ステップS33)。繰返し転送とは実施の形態1から3に示した転送方式である。その処理の内容は
図6、
図7、
図8又は
図10に示した内容と同様であるので、説明を省略する。転送データの全体容量が所定量以上である場合(ステップS32でYES)、VM11(設定部112)は転送用一時アカウントの請求を行うための設定を行う。すなわち、VM11(設定部112)は汎用レジスタR0の特定値領域R00にデータ転送を示す特定値、汎用レジスタR0の転送状況領域R01に転送開始を示す値2、汎用レジスタR0のVMID領域R03に自らのIDを設定する(ステップS34)。VM11(実行部113)はセンシティブ命令を実行し、例外を発生させる(ステップS34)。処理がVM11からVMM10に移る。
【0044】
VMM10(特定値判定部10a)は例外要因が予め定めた要因によるものか調べる(ステップS36)。VMM10例外要因が予め定めたものである場合(ステップS36でYES)、VMM10(特定値判定部10a)は汎用レジスタR0の特定値領域R00に設定されている値を読み出し、その値が特定値であるか否かを判定する(ステップS37)。特定値が設定されている場合(ステップS37でYES)、VMM10(例外管理部10f)は例外をマスクする(ステップS38)。VMM10(状況判定部10b)は汎用レジスタR0の転送状況領域R01に設定されている値を読み出し、その値が転送中を示す値であるか否かを判定する(ステップS39)。転送中を示す値でない場合(ステップS39でNO)、VMM10(状況判定部10b)は転送状況領域R01に設定されている値が転送開始を示す値であるか否かを判定する(ステップS40)。転送開始である場合(ステップS40でYES)、VMM10(発行部10g)は一時アカウントを発行する(ステップS41)。すなわち、ユーザ名とパスワード(接続情報)を発行し、汎用レジスタRx(接続情報記憶部)に設定する。例えば、ユーザ名を汎用レジスタR1に、パスワードを汎用レジスタR2に設定する。どの汎用レジスタに設定するかについては、予め定めておくものとする。VM11(結果設定部10d)は戻り値に正常を設定する(ステップS42)。
【0045】
転送開始でないと判定された場合(ステップS40でNO)、VMM10(状況判定部10b)は転送状況領域R01に設定されている値が転送完了を示す値であるか否かを判定する(ステップS45)。転送完了である場合(ステップS45でYES)、VMM10(削除部10h)は一時アカウントを削除する(ステップS46)。転送完了でない場合(ステップS45でNO)、VMM10(結果設定部10d)は戻り値にエラーを設定する(ステップS47)。
【0046】
汎用レジスタR0の転送状況領域R01に設定されている値が転送中を示す値である場合(ステップS39でYES)、VMM10(取得部10c)は汎用レジスタRxからデータを取得する(ステップS44)。上述したステップS8と同様の処理である。VM11(結果設定部10d)は戻り値に正常を設定する(ステップS42)。
【0047】
例外要因が予め定めた要因ではない場合(ステップS36でNO)、VMM10は要因別に定められた例外処理を実行する(ステップS43)。例外要因が予め定めたものであるが特定値領域R00に格納された値が特定値ではない場合(ステップS37でNO)、データ転送処理による例外ではないので、VMM10は要因別に定められた例外処理を行う(ステップS43)。VM11(結果設定部10d)は戻り値に正常を設定する(ステップS42)。
【0048】
VMM10(例外管理部10f)は例外のマスクを解除する(ステップS48)。VMM10(終了部10e)は例外処理を終了する(ステップS49)。処理がVM11へ戻る。
【0049】
VM11(判定部115)は戻り値が正常であるか否かを判定する(ステップS50)。戻り値が正常でない場合(ステップ50でNO)、VM11(判定部115)は処理をステップS34に戻し、データの再送を行う。戻り値が正常である場合(ステップS50でYES)、VM11(判定部115)はデータ転送が完了済みであるか否かを判定する(ステップS51)。転送済みか否かはフラグ等により管理すれば良い。データ転送が完了済みである場合(ステップS51でYES)、VM11は処理を終了する。データ転送が完了済みでない場合(ステップS51でNO)、VM11(転送部119)は汎用レジスタRxに設定されたアカウント(ユーザ名、パスワード)を取得する(ステップS52)。VM11(転送部119)は取得したアカウントを用いてVMM11にデータ転送を行う(ステップS53)。例えば、ftp(file transfer protocol)コマンドを用いる。VM11(転送部119)はデータ転送が正常に終了したか否かを判定する(ステップS54)。正常終了していない場合(ステップS54でNO)、VM11(転送部119)は再度、データ転送を行う(ステップS53)。正常終了した場合(ステップS54でYES)、VM11(設定部112)は汎用レジスタR0の特定値領域R00にデータ転送を示す特定値、汎用レジスタR0の転送状況領域R01に転送完了を示す値0を設定する(ステップS55)。VM11(設定部112)は処理をステップS35へ移す。ステップS35以降の処理は上述したとおりである。
【0050】
上述したように、実施の形態4ではデータ転送のアカウント取得時と、データ転送の完了時の2回のみ例外処理を発生させれば良い。データの転送自体は取得したアカウントを用いて、ftpなどを用いて行うので、転送データの総量が大きい場合であっても、例外処理の回数が一定となるので、効率的にデータ転送が可能となる。
また、実施の形態1と同様に、VM11に転送プログラム110をインストールという軽微な変更で済むので、サーバ装置1が運用開始した後でも、データ転送機能を実現することが可能となる。データ転送に用いるアカウントはデータ転送開始時に発行し、データ転送完了後に削除するので、VM11のセキュリティを保ちつつ、データ転送が可能となる。
【0051】
上述の実施の形態1から実施の形態4において、VM11からVMM10に転送されるデータの例を以下に述べる。
図2に示したようにVM11は一台のサーバ装置1を共有し、切り替わって動作している。そのため、各VM11の単体で性能解析を行っても有効な結果は得られない。そこで、サーバ装置1単位で一元的に集約したデータ採取や俯瞰的な解析が必要となる。上述の実施の形態1から実施の形態4に示したデータ転送方法により、VMM10が各VM11より性能解析に必要なデータ(性能情報、リソース情報、環境情報など)を収集することにより、サーバ装置1全体、サーバ装置1で動作する各VM11の性能解析を正しく行うことが可能となる。
【0052】
そして、各VM11より収集したリソース情報や環境情報と、サーバ装置1で測定したリソース変化や性能イベントの測定データとを突き合わせることにより、一元的に正確な性能解析や挙動把握、リソース状況把握が可能となる。それにより、予兆監視、性能管理、プロビジョニング、VMのライブマイグレーション先の決定、キャパシティプランニングといった運用管理に非常に有用なデータが得られることが可能となる。
【0053】
各実施の形態で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0054】
以上の実施の形態に関し、更に以下の付記を開示する。
【0055】
(付記1)
複数の仮想計算機を動作させる情報処理装置において、
例外処理を実行し、前記複数の仮想計算機からデータを収集する収集部と、
該収集部及び前記仮想計算機の間のデータ転送を示す特定情報、前記データ転送の状況を示す状況情報及び転送するデータのデータ量を記憶する記憶部と、
転送するデータを記憶するデータ記憶部と、
戻り値を記憶する戻り値記憶部とを備え、
前記仮想計算機は
転送するデータを前記データ記憶部に書き込む書込部と、
例外を発生する命令を実行し、前記収集部に例外処理を実行させる実行部と、
転送済データのデータ量から未転送データのデータ量を算出する算出部と、
前記戻り値記憶部より、戻り値を読み出す読出部と、
前記算出部が算出した未転送データのデータ量及び前記読出部により読み出した戻り値より、データ転送の状況を示す状況情報及び転送するデータのデータ量を決定する決定部と、
前記記憶部に前記特定情報、決定した状況情報及び転送するデータのデータ量を書き込む第2書込部と
を有し、
前記収集部は
前記記憶部に前記特定情報が記憶されているか否かを判定する判定部と、
前記記憶部から状況情報を読み出す第2読出部と、
読み出した状況情報が転送中である場合、前記データ記憶部よりデータを読み出す第3読出部と、
該第3読出部が前記データ記憶部より読み出したデータのデータ量が前記記憶部に記憶されているデータ量と一致している場合、所定の戻り値を戻り値記憶部に書き込む第3書込部とを有する
ことを特徴とする情報処理装置。
【0056】
(付記2)
前記収集部は
前記判定部が前記記憶部に前記特定情報が記憶されていると判定した場合に、新たな例外の発生を不許可にし、
前記第3書込部が処理結果を戻り値記憶部に書き込んだ後に、新たな例外の発生を許可する許可部を有する
ことを特徴とする付記1に記載の情報処理装置。
【0057】
(付記3)
前記記憶部には前記仮想計算機を識別する識別情報が記憶されており、
前記第2書込部は前記記憶部に前記特定情報、前記識別情報、前記状況情報及び前記転送するデータのデータ量を記憶し、
前記第3読出部は前記記憶部から前記識別情報を読み出す
ことを特徴とする付記1又は2に記載の情報処理装置。
【0058】
(付記4)
前記情報処理装置は
前記収集部に接続しデータ転送命令を実行するための接続情報を記憶する接続情報記憶部を備え、
前記仮想計算機は
前記転送データの全体量が予め定めた閾値以上であると判定した場合、前記決定部に転送開始を示す転送状況を生成させる第2判定部と、
前記接続情報記憶部から前記アカウント情報を読み出し、読み出した接続情報を用いて前記収集部に接続しデータ転送を行い、データ転送が終了した場合、前記決定部に状況情報を転送終了と決定させる転送部とを有し、
前記収集部は
前記第2読出部が読み出した状況情報が転送開始である場合、前記接続情報を発行し、発行した接続情報を接続情報記憶部に記憶する発行部と、
前記第2読出部が読み出した転送状況が転送終了であると判定した場合、前記接続情報を削除する削除部とを有する
ことを特徴とする情報処理装置。
【0059】
(付記5)
前記情報処理装置はCPUを備え、
前記仮想計算機は完全仮想化環境において動作するものであり、
前記仮想計算機が発生させた例外を前記CPUが検出し、
前記収集部に前記例外処理を行わせる
ことを特徴とする付記1から付記4のいずれか1つに記載の情報処理装置。
【0060】
(付記6)
複数の仮想計算機を動作させ、
前記仮想計算機が発生させた例外に係る例外処理において、前記仮想計算機とのデータ転送を示す特定情報が記憶されているか否か判定し、
特定情報が記憶されている場合、前記仮想計算機が記憶した転送データを読み出し、
転送データを読み出せたとき、所定の戻り値を記憶し、
前記複数の仮想計算機からデータを収集する収集部を備える情報処理装置の制御プログラムにおいて、
前記仮想計算機として動作する前記情報処理装置が転送済データのデータ量から未転送データのデータ量を算出し、
前記仮想計算機として動作する前記情報処理装置が、前記収集部が記憶した戻り値を読み出し、
前記仮想計算機として動作する前記情報処理装置が算出した未転送データのデータ量及び読み出した戻り値より、データ転送の状況を示す状況情報及び転送するデータのデータ量を決定し、
前記仮想計算機として動作する前記情報処理装置がデータ転送を示す特定情報、決定した状況情報及び転送するデータのデータ量を記憶し、
前記仮想計算機として動作する前記情報処理装置が転送する転送データを記憶し、
前記仮想計算機として動作する前記情報処理装置が例外を引き起こす命令を実行し、前記収集部に例外処理を実行させる
ことを特徴とする制御プログラム。
【0061】
(付記7)
複数の仮想計算機が動作し、例外処理を行い、該複数の仮想計算機からデータを収集する収集部を備えた情報処理装置の制御方法において、
前記仮想計算機は
前記収集部へ転送済のデータのデータ量から未転送データのデータ量を算出し、
前記収集部が記憶した戻り値を読み出し、
算出した未転送データのデータ量及び読み出した戻り値より、データ転送の状況を示す状況情報及び転送するデータのデータ量を決定し、
データ転送を示す特定情報、決定した状況情報及び転送するデータのデータ量を記憶し、
転送するデータを記憶し、
例外を発生する命令を実行し、前記収集部に例外処理を実行させ、
前記収集部は
前記特定情報が記憶されている場合、
記憶された状況情報が転送中であり、読み出したデータのデータ量が前記転送するデータのデータ量と一致したとき、所定の戻り値を記憶し、
前記仮想計算機は
記憶された戻り値が所定の値であり、未転送データがある場合、上記の処理を繰り返し行うこと
を特徴とする情報処理装置の制御方法。