以下に添付図面を参照して、この発明にかかる仮想マシン管理プログラム、仮想マシン管理装置、および仮想マシン管理方法の好適な実施の形態を詳細に説明する。
(物理マシンのハードウェア構成)
まず、この発明の実施の形態にかかる物理マシン(仮想マシン管理装置)のハードウェア構成について説明する。図1は、物理マシンのハードウェア構成を示す説明図である。
図1において、物理マシン100は、コンピュータ本体110と、入力装置120と、出力装置130と、から構成されており、不図示のルータやモデムを介してLAN,WANやインターネットなどのネットワーク140に接続可能である。
コンピュータ本体110は、CPU,記憶装置,インターフェースを有する。CPUは、物理マシン100の全体の制御を司る。記憶装置は、ROM,RAM,HD,光ディスク111,フラッシュメモリから構成される。RAMはCPUのワークエリアとして使用される。
また、記憶装置には仮想マシンとなる複数のOS,当該OSごとのエミュレータ、管理デーモンなど各種プログラムが格納されており、CPUからの命令に応じてロードされる。HDおよび光ディスク111はディスクドライブによりデータのリード/ライトが制御される。また、光ディスク111およびフラッシュメモリはコンピュータ本体110に対し着脱自在である。インターフェースは、入力装置120からの入力、出力装置130への出力、ネットワーク140に対する送受信の制御をおこなう。
また、入力装置120としては、キーボード121、マウス122、スキャナ123などがある。キーボード121は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス122は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ123は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体110内の記憶装置に格納される。なお、スキャナ123にOCR機能を持たせてもよい。
また、出力装置130としては、ディスプレイ131、プリンタ132、スピーカ133などがある。ディスプレイ131は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、プリンタ132は、画像データや文書データを印刷する。またスピーカ133は、効果音や読み上げ音などの音声を出力する。
(物理マシンの内部構成)
つぎに、図1に示した物理マシンの内部構成について説明する。図2は、図1に示した物理マシン100の内部構成を示すブロック図である。図2において、物理マシン100は、CD,CD−ROM,CD−R,CD−RW,DVD,DVD±R,DVD±RW,ブルーレイDVD,HDDVDなどの光ディスクをリード/ライトする光ディスクドライブやFDをリード/ライトするFDドライブ、MOディスクをリード/ライトするMOドライブなどの物理ドライブを備えている。
図2では、物理マシン100は、例として、物理ドライブD1としてCD−ROMドライブ、物理ドライブD2としてFDドライブ、物理ドライブD3としてMOドライブを備えている。以降、任意の物理ドライブをDと称す。
また、物理マシン100には、複数(図2では例として3種類)の仮想マシンVM1〜VM3が構築されている。以降、任意の仮想マシンをVMと称す。各仮想マシンVM1〜VM3は、各々仮想ドライブVD1〜VD3を構築することができる。図2では、仮想マシンVM1には仮想ドライブVD1として物理ドライブD1が割り当てられている。仮想ドライブ種は、物理ドライブD1と同種のCD−ROMドライブである。
また、仮想マシンVM2には仮想ドライブVD2として物理ドライブD2が割り当てられている。仮想ドライブ種は、物理ドライブD2と同種のFDドライブである。また、仮想マシンVM3には仮想ドライブVD3として物理ドライブD3が割り当てられている。仮想ドライブ種は、物理ドライブD3と同種のMOドライブである。
なお、他の仮想マシンと競合しない限り、各仮想マシンVM1〜VM3には複数の物理ドライブをそれぞれ仮想ドライブVD1〜VD3として割り当てることもできる。たとえば、仮想マシンVM1に物理ドライブD1,D2が割り当てられた場合、仮想マシンVM1には、仮想ドライブVD1(CD−ROMドライブ),仮想ドライブVD2(FDドライブ)が構築される。なお、仮想マシンからはその仮想マシンが構築された仮想ドライブに対してアクセスすることとなり、物理ドライブに対して直接アクセスすることができない。
また、物理マシン100には、仮想マシンVM1〜VM3ごとにエミュレータE1〜E3が存在する。以降、任意のエミュレータをEと称す。エミュレータE1〜E3とは、物理マシン100のOS上で動作し、リソースの仮想化をおこなうプログラムである。エミュレータE1〜E3は、共有DB200から情報を読み出して、仮想ドライブに対しメディア読込指示をおこなったり、仮想ドライブからの指示により共有DB200に情報の書き込みをおこなう。たとえば、仮想マシンVD1上でCD−ROM取り出し操作が行われた場合、共有DB200に情報を書き込む。また、共有DB200にCD−ROM入替えイベントが書き込まれた場合、CD−ROMの再読み込みを自動的に行う。
また、管理デーモン210は、物理マシン100のOS上で動作し、仮想マシンVM1〜VM3の管理をおこなう常駐プログラムである。管理デーモン210は、物理ドライブからの指示を受けて共有DB200に書き込みをおこなったり、共有DB200から情報を読み出して、読み出した情報に応じた指示を物理ドライブに対しておこなう。管理デーモン210は、共有DB200にCD−ROM取り出しイベントが書き込まれた場合、CD−ROMの取り出し処理を自動的に行う。また、新しいCD−ROMが物理ドライブD1に挿入された場合、共有DB200に情報を書き込む。
このように、管理デーモン210はエミュレータEと協働して、仮想マシン監視処理、ドライブ割当処理、メディア排出処理、メディア挿入処理を実行する。メディア交換処理は、メディア排出処理とメディア挿入処理との組み合わせで実現することができる。
ここで、仮想マシン監視処理とは、各種イベントを監視する処理である。イベントとは、たとえば、仮想ドライブのステータス変更やオペレータによる物理ドライブへのメディアの挿入操作、オペレータによる仮想マシンからのメディア排出指示、ドライブ割当コマンド、ドライブ解放コマンドなどがある。
また、ドライブ割当処理とは、物理ドライブDをある仮想マシンVMに割り当てる処理である。また、ドライブ解放処理とは、すでに割り当てられた物理ドライブDをその仮想マシンVMから解放する処理である。また、メディア挿入処理とは、仮想ドライブVD(として割り当てられた物理ドライブD)にメディアを挿入して、その仮想マシンVMに対して仮想ドライブVDにメディアが挿入されたことを認識させて、メディアを読み込む処理である。また、メディア排出処理とは、仮想マシンVMからのメディア排出指示により、その仮想ドライブVD(として割り当てられた物理ドライブD)からメディアを排出する処理である。
また、共有DB200は、各エミュレータE1〜E3と管理デーモン210とで共有する資源管理テーブルを記憶するデータベースである。共有DB200は、各エミュレータE1〜E3と管理デーモン210とからそれぞれアクセス(リード/ライト)可能である。共有DB200は、物理マシン100に搭載されているメモリやHDにより構成される。
(共有DB200の記憶内容)
つぎに、図2に示した共有DB200の記憶内容について説明する。図3は、共有DB200の記憶内容を示す説明図である。図3において、共有DB200には、資源管理テーブル300が格納されている。資源管理テーブル300は、物理資源である物理ドライブDの設定情報を記憶する物理資源テーブル301と、仮想資源である仮想マシンVMの設定情報を記憶する仮想資源テーブル302とから構成されている。
まず、物理資源テーブル301は、設定情報として、物理ドライブ項目、その種類項目、および使用仮想マシン項目を記憶する。たとえば、物理ドライブD1は、CD−ROMドライブであるため、その種類はCD−ROMドライブを示す“cdrom”である。また、使用仮想マシンが“VM1”であるため、物理ドライブD1は仮想マシンVM1に割り当てられていることがわかる。なお、物理ドライブD2,D3のように、どの仮想マシンVMにも割り当てられていない場合、使用仮想マシン項目は“未割当”となる。
また、仮想資源テーブル302は、設定情報として、仮想マシン項目、仮想ドライブ種項目、割当対象物理ドライブ項目、ステータスを記憶する。仮想ドライブ種項目には、仮想ドライブ種が記憶される。仮想ドライブ種は、割当対象物理ドライブのドライブ種と一致する。
割当対象物理ドライブ項目には、仮想マシンに割り当てられた物理ドライブ名が記憶される。たとえば、仮想マシンVM1には物理ドライブD1が割り当てられていることがわかる。この仮想ドライブ種項目と割当対象物理ドライブ項目により、仮想マシンVMから認識される仮想ドライブVDが特定される。たとえば、図3では、仮想マシンVM1から見ると、仮想ドライブ種:CD−ROMでかつ割当対象物理ドライブ:D1であるため、図2に示した仮想ドライブVD1は、CD−ROMドライブであることがわかり、実際に動作させる物理ドライブD1と一致する。
また、ステータスとは、仮想ドライブVD(として割り当てられる物理ドライブD)の状態をあらわしており、「insert」(挿入)または「eject」(排出)のいずれかをとる。上述の例では、仮想ドライブVD1(仮想ドライブ種:CD−ROM、割当対象物理ドライブ:D1)のステータスは“insert”となっているため、仮想マシンVM1では、物理ドライブD1に挿入されたCD−ROMを認識していることがわかる。
(仮想マシン管理装置の機能的構成)
つぎに、仮想マシン管理装置の機能的構成について説明する。図4は、仮想マシン管理装置の機能的構成を示すブロック図である。図4において、仮想マシン管理装置は、管理デーモン210と仮想マシン数に対応したエミュレータEを有する。まず、管理デーモン210は、第1の制御部400と、第1の検出部401と、第1の変更部402と、第1のメモリ403を備えている。
まず、第1の制御部400は、物理ドライブDを制御する機能を有する。具体的には、メディアを排出する際には、物理ドライブDにメディア排出指示を通知する。物理ドライブDはメディア排出指示を受け取ると、内部機構により、挿入されているメディアを排出する。
また、第1の制御部400は、メディア挿入処理の際には、物理ドライブDからのメディア挿入操作を検出する。具体的には、たとえば、オペレータの操作により物理ドライブD1にCD−ROMが挿入されると、メディア挿入イベントを第1の変更部402に与える。また、メディア排出処理の際には、挿入されているメディアの排出指示を物理ドライブD1に与える。具体的には、たとえば、第1の検出部401から物理ドライブD1に関するメディア排出イベントの検出信号が与えられると、CD−ROMの排出指示を物理ドライブD1に与える。
また、第1の検出部401は、ドライブ割当コマンドや、ドライブ解放コマンド、仮想ドライブVDの状態を検出する機能を有する。具体的には、たとえば、ドライブ割当処理の際には、仮想ドライブVDを使用したい仮想マシンVMとその仮想マシンVMに仮想ドライブVDとして割り当てたい物理ドライブDを特定する。また、ドライブ解放処理の際には、仮想ドライブVDを使用可能な仮想マシンVMとその仮想マシンVMに仮想ドライブVDとして割り当てられた物理ドライブDを特定する。
また、メディア挿入処理の際には、第1の制御部400からのメディア挿入イベントを検出する。また、メディア排出処理の際には、共有DB200を参照して、仮想ドライブVDのステータス変更(“insert”→“eject”)を検出する。
また、第1の変更部402は、共有DB200の内容を変更(書換)する機能を有する。具体的には、たとえば、ドライブ割当処理の際には、物理資源テーブル301を参照して、物理ドライブDを割り当てたい仮想マシンVMのステータスを確認し、ステータスが“未割当”である場合には、そのステータスを“未割当”から割り当てたい仮想マシン名(たとえば、“VM1”)に書き換える。また、仮想資源テーブル302を参照して、割当対象物理ドライブ名を確認し、“未割当”である場合には、割当対象物理ドライブ名を“未割当”から割り当てたい物理ドライブ名(たとえば、“D1”)に書き換える。
また、メディア挿入処理の際には、第1の検出部401によりメディア挿入イベントが検出されると、仮想資源テーブル302上においてメディア挿入の対象となった仮想ドライブVD(として割り当てられている物理ドライブ)のステータスを、“eject”から“insert”に書き換える。
また、管理デーモン210は、仮想資源テーブル302から割当対象物理ドライブ項目を除いたテーブルを第1のメモリ403に保持しており、仮想マシン項目、仮想ドライブ種項目およびステータスを記憶している。ステータスは、仮想資源テーブル302のステータスが書き換わることにより、第1の変更部402により同一の値に書き換えられる。
つぎに、エミュレータEの機能的構成について説明する。エミュレータEは、第2の制御部410と、第2の検出部411と、第2の変更部412と、第2のメモリ413と、を備えている。
まず、第2の制御部410は、仮想マシンVMを制御する機能を有する。具体的には、物理ドライブDを仮想マシンVMに割り当てるドライブ割当処理の際には、仮想マシンVM上の仮想ドライブVDを構築する。具体的には、仮想ドライブVDを構成する割当対象物理ドライブDと仮想ドライブ種を仮想マシンVMに通知することで、仮想マシンVMは仮想ドライブVDを認識することができる。
また、ドライブ解放処理の際には、構築された仮想ドライブVDの解放指示を仮想マシンに与える。このあと、仮想マシンVMからは仮想ドライブVDが認識できなくなり、仮想ドライブVDのGUIアイコンも消失する。
また、第2の制御部410は、メディア挿入処理の際には、仮想資源テーブル302において仮想ドライブVDのステータスが“eject”から“insert”に変更されると、エミュレータEから直接、割当対象物理ドライブDにアクセスして挿入されているメディアを読み込む。
また、メディア排出処理の際には、仮想マシンVMからのメディア排出操作を受け付ける。具体的には、たとえば、オペレータの操作により仮想マシンVM1上で物理ドライブD1からのCD−ROMの排出指示(たとえば、仮想ドライブVD1のGUIアイコンをクリック)があると、そのメディア排出イベントを第2の検出部411に与える。
また、第2の検出部411は、各種イベントを検出する機能を有する。具体的には、たとえば、ドライブ割当処理の際には、仮想資源テーブル302における割当対象物理ドライブが、“未割当”から仮想マシンVM1に仮想ドライブVD1として割り当てたい物理ドライブ名(“D1”)に書き換えられたことを検出する。
また、ドライブ解放処理の際には、逆に、仮想資源テーブル302における割当対象物理ドライブ項目が、仮想マシンVM1に仮想ドライブとして割り当てられた物理ドライブ名(“D1”)から“未割当”に書き換えられたことを検出する。
また、メディア挿入処理の際には、仮想資源テーブル302において、仮想ドライブVDのステータスが“eject”から“insert”に書き換えられたことを検出する。また、メディア排出処理の際には、第2の制御部410からのメディア排出イベントを検出する。
また、第2の変更部412は、共有DB200の内容を変更(書換)する機能を有する。具体的には、たとえば、メディア排出処理の際には、仮想資源テーブル302を参照して、メディア排出対象の仮想ドライブVDのステータスを、“insert”から“eject”に書き換える。
また、各エミュレータE1〜E3は、仮想資源テーブル302から仮想マシン項目を除いたテーブルをその第2のメモリ413に保持しており、仮想ドライブ種項目、割当対象物理ドライブ項目およびステータスを記憶している。ステータスは、仮想資源テーブル302のステータスが書き換わることにより、第2の変更部412により同一の値に書き換えられる。
(仮想マシン監視処理)
つぎに、仮想マシン監視処理について説明する。管理デーモン210とエミュレータEとはそれぞれ独立にこの仮想マシン監視処理を実行するが、共有DB200にはそれぞれアクセスするため、管理デーモン210とエミュレータEとに分けて説明する。
図5は、管理デーモン210による仮想マシンの監視処理手順を示すフローチャートであり、図6は、仮想マシン監視処理における仮想資源テーブル302および管理デーモン210上の第1のメモリを示す説明図である。
図5において、管理デーモン210は、まず、未処理の仮想マシンVMがあるか否かをチェックする(ステップS501)。このチェックは、管理デーモン210上の第1のメモリ403に監視フラグ(不図示)をたてておき、この監視フラグの有無によりチェックするか否かを判断すればよい。この場合、監視フラグは一定時間経過後、リセットすることにより、次回の監視処理においてもすべての仮想マシンVM1〜VM3をチェックすることができる。
そして、未処理の仮想マシンVMがある場合(ステップS501:Yes)、その未処理の仮想マシンVMを選択する(ステップS502)。つぎに、選択された仮想マシンVM中に、未処理の仮想ドライブVDがあるか否かを判断する(ステップS503)。未処理の仮想ドライブVDがない場合(ステップS503:No)、ステップS501に戻る。
一方、未処理の仮想ドライブVDがある場合(ステップS503:Yes)、選択仮想ドライブのステータスを読み込む(ステップS504)。たとえば、仮想マシンVM1の仮想ドライブVD1(仮想ドライブ種:CD−ROM、割当対象物理ドライブ:D1)を選択した場合、そのステータス:insertを読み込む。
そして、読み込んだステータスと管理デーモン210上の第1のメモリ403における対応するステータスとの一致判定をおこなう(ステップS505)。一致する場合(ステップS505:Yes)、仮想資源テーブル302と管理デーモン210上の第1のメモリ403とで整合性がとれているため、ステップS503に戻る。一方、不一致である場合(ステップS505:No)、ステータス変更イベント検出をおこなう(ステップS506)。
ここで、ステータス変更イベントとは、仮想資源テーブル302のステータスが、“insert”→“eject”への変更または“eject”→“insert”への変更を検出することである。このステータス変更イベント検出により、各種処理を実行することとなる。
このあと、管理デーモン210の第1のメモリ403上のステータスを、仮想資源テーブル302のステータスと同一のステータスに書き換える(ステップS507)。そして、ステップS503に戻る。また、ステップS501において、未処理の仮想マシンVMがない場合(ステップS501:No)、管理デーモン210による一連の監視処理を終了する。
つぎに、エミュレータEによる仮想マシンVMに割り当てられた仮想ドライブVDの監視処理について説明する。図7は、エミュレータEによる仮想ドライブVDの監視処理手順を示すフローチャートであり、図8は、仮想ドライブVDの監視処理における仮想資源テーブル302およびエミュレータE上の第2のメモリ413を示す説明図である。
図7において、エミュレータEは、まず、未処理の仮想ドライブVDがあるか否かをチェックする(ステップS701)。このチェックは、エミュレータE上の第2のメモリ413に監視フラグ(不図示)をたてておき、この監視フラグの有無によりチェックするか否かを判断すればよい。この場合、監視フラグは一定時間経過後、リセットすることにより、次回の監視処理においてもすべての仮想マシンVMをチェックすることができる。
未処理の仮想ドライブVDがある場合(ステップS701:Yes)、仮想資源テーブル302中、その仮想ドライブVDに割り当てられた割当対象物理ドライブおよび仮想ドライブVDのステータスを読み込む(ステップS702)。たとえば、仮想マシンVM1の仮想ドライブVD1(仮想ドライブ種:CD−ROM)を選択した場合、その割当対象物理ドライブ:D1、および、ステータス:insertを読み込む。
そして、読み込んだ割当対象物理ドライブ、および、ステータスとエミュレータE上の第2のメモリ413における対応する割当対象物理ドライブ、および、ステータスとの一致判定をおこなう(ステップS703)。一致する場合(ステップS703:Yes)、仮想資源テーブル302とエミュレータE上のメモリとで整合性がとれているため、ステップS701に戻る。一方、不一致である場合(ステップS703:No)、イベント検出をおこなう(ステップS704)。具体的には、割当対象物理ドライブ名が不一致である場合、物理ドライブ名変更イベントを検出し、ステータスが不一致である場合、ステータス変更イベントを検出する。
物理ドライブ名変更イベントとは、仮想資源テーブル302の割当対象物理ドライブ名が、“取得物理ドライブ名”→“未割当”へ変更、または、“未割当”→“取得物理ドライブ名”へ変更することである。この割当対象物理ドライブ名変更イベント検出により、各種処理を実行することとなる。また、ステータス変更イベントとは、仮想資源テーブル302のスタータスが、“insert”→“eject”へ変更または“eject”→“insert”へ変更することである。このステータス変更イベント検出により、各種処理を実行することとなる。
このあと、エミュレータE上の第2のメモリ413の該当箇所(割当対象物理ドライブまたは/およびステータス)を、仮想資源テーブル302と同一内容に書き換える(ステップS705)。そして、ステップS702に戻る。図8では、ステータスのみが不一致であるので、ステータスを“eject”から“insert”に書き換えている。また、ステップS701において、未処理の仮想ドライブVDがない場合(ステップS701:No)、エミュレータEによる一連の監視処理を終了する。
(ドライブ割当処理)
つぎに、ドライブ割当処理について説明する。管理デーモン210とエミュレータEとはそれぞれ独立にこのドライブ割当処理を実行するが、共有DB200にはそれぞれアクセスするため、管理デーモン210とエミュレータEとに分けて説明する。
図9は、管理デーモン210によるドライブ割当処理手順を示すフローチャートである。割当前においては、管理デーモン210上の第1のメモリ403では、仮想マシンVM1のすべての仮想ドライブ種のステータスは“eject”に設定されているものとする。また、資源管理テーブル300では、物理ドライブDには、使用仮想マシン項目が“未割当”に設定されているものとする。
図9において、管理デーモン210は仮想マシン名および物理ドライブ名を取得する(ステップS901)。具体的には、たとえば、ある物理ドライブDをある仮想マシンVMに割り当てるドライブ割当コマンドが実行されると、その仮想マシン名:VMおよび物理ドライブ名:Dが管理デーモン210に通知される。これにより、管理デーモン210は仮想マシン名:VMおよび物理ドライブ名:Dを取得することができる。以下の説明では、取得仮想マシン名:VM1、取得物理ドライブ名:D1を例に挙げて説明する。
つぎに、管理デーモン210は物理資源テーブル301を参照して、取得物理ドライブ名により特定される物理ドライブDに仮想マシンVMが割り当てられているか否かを判断する(ステップS902)。たとえば、上記の例では、物理資源テーブル301の使用仮想マシン項目が“VM1”ではなく“未割当”となっているため、書換前の資源管理テーブル300では、物理ドライブD1は仮想マシンVM1に割り当てられていないことがわかる。
このステップS902において、他の仮想マシンVMが割り当てられている場合(ステップS902:No)には、取得物理ドライブD1に取得仮想マシンVM1を割り当てることができないため、割当不可メッセージを出力して(ステップS909)、ドライブ割当処理を終了する。割当不可メッセージには、たとえば、すでに割り当てられている他の仮想マシン名を表示することとしてもよい。
一方、未割当である場合(ステップS902:Yes)、取得物理ドライブDの使用仮想マシン項目を“未割当”から“取得仮想マシン名”に書き換える(ステップS903)。たとえば、上記の例では“VM1”に書き換えられる(図9中、右下の書換後の物理資源テーブル301を参照。)。
また、同様に、仮想資源テーブル302の割当対象物理ドライブ項目を、“未割当”から“取得仮想マシン名に書き換えられた物理ドライブ名”に書き換える(ステップS904)。上記の例では、“D1”に書き換えられる(図9中、右下の書換後の仮想資源テーブル302を参照。)。これにより、仮想資源テーブル302上では、取得仮想マシンVM1に対して取得物理ドライブD1が割り当てられることとなる。
つぎに、仮想マシンVMに割り当てられた物理ドライブDに対するメディア挿入を確認する(ステップS905)。具体的には、たとえば、割り当てられた物理ドライブDからのメディア挿入イベントの有無により判断する。メディア挿入イベントとは、オペレータによる物理ドライブDの挿入操作によりメディアを挿入する処理である。物理ドライブDにメディアが挿入されると、その旨の信号が管理デーモン210に通知される。この信号の有無によりメディア挿入を確認する。
メディア挿入が確認されなかった場合(ステップS905:No)、ステップS908に移行する。この場合、管理デーモン210上の第1のメモリ403は、図9の左上の状態のままであり、同様に、資源管理テーブル300も図9の右下の状態のまま(書換後を参照)である。これにより、メディア未挿入の物理ドライブDが仮想マシンVMに割り当てられることとなる。上記の例では、メディア未挿入の物理ドライブD1が仮想マシンVM1に割り当てられることとなる。
一方、メディア挿入が確認された場合(ステップS905:Yes)、そのステータスを“eject”から“insert”に書き換える(ステップS906)。同様に、メモリ上のステータスも“eject”から“insert”に書き換える(ステップS907)。これにより、メディア挿入された物理ドライブDが仮想マシンVMに割り当てられることとなる。上記の例では、メディア挿入された物理ドライブD1が仮想マシンVM1に割り当てられることとなる。
これにより、物理ドライブDは、取得仮想マシンVMに構築された仮想ドライブVDとして使用されることとなる。上記の例では、物理ドライブD1は、仮想マシンVM1の仮想ドライブVD1として使用される。
つぎに、エミュレータEによるドライブ割当処理について説明する。図10は、エミュレータEによるドライブ割当処理手順を示すフローチャートである。図10において、左上の資源管理テーブル300は、図9に示したステップS904,S906のステータス書換前の状態を示しており、左下の資源管理テーブル300は、図9に示したステップS904,S906のステータス書換後の状態を示している。
エミュレータEは、まず、物理ドライブ名変更イベントが検出されたか否かを判断する。物理ドライブ名変更イベントとは、図9に示したステップS904による割当対象物理ドライブ項目書換処理のことであり、具体的には、“未割当”から“取得物理ドライブ名”への変更が検出されたか否かを判断する。上記の例では、仮想マシンVM1について“未割当”から“D1”に変更されている。この物理ドライブ名変更イベントが検出されていない場合(ステップS1001:No)、一連の処理を終了する。
一方、物理ドライブ名変更イベントが検出された場合(ステップS1001:Yes)、ドライブ割当処理を実行する(ステップS1002)。ドライブ割当処理では、対象となる仮想マシンVMに対して割り当てられた物理ドライブDを通知する。これにより、仮想マシンVMでは、物理ドライブ種と同種の仮想ドライブVDが認識され、画面上にはその仮想ドライブVDのGUIアイコンが表示される。上記の例では、物理ドライブD1はCD−ROMドライブであるため、仮想ドライブVD1のGUIアイコン(CD−ROMドライブのGUIアイコン)が表示される。
また、ドライブ割当処理では、仮想マシンVMのエミュレータE上の第2のメモリ413において、対応する仮想ドライブ種の割当対象物理ドライブ項目を“未割当”から“取得物理ドライブ名”に書き換える。上記の例では、仮想ドライブ種“CD−ROM”の物理ドライブ項目が、“未割当”から“D1”に書き換えられる。
また、ステップS1003において、ステータス変更イベントが検出されたか否かを判断する。このステータス変更イベントとは、仮想資源テーブル302において対象となる仮想ドライブVDのステータスが“eject”から“insert”に書き換えられた処理(ステップS906)である。上記の例では、仮想マシンVM1に割り当てられた物理ドライブD1のステータスが“eject”から“insert”に書き換えられたため、ステータス変更イベントが検出されたこととなる。
そして、ステータス変更イベントが検出されなかった場合(ステップS1003:No)、一連の処理を終了する。一方、検出された場合(ステップS1003:Yes)、メディア読み込み処理を実行して(ステップS1004)、一連の処理を終了する。
ここで、メディア読み込み処理とは、対象となる仮想マシンVMのエミュレータEがステータス変更イベントの検出により、その仮想マシンVMに割り当てられた物理ドライブDに挿入されているメディアを自動的に読み込み、その仮想マシンVMにメディア挿入を認識させる処理である。上記の例の場合、仮想マシンVM1のエミュレータE1が、ステータス変更イベントの検出により、物理ドライブD1に挿入されているメディアの読み込み処理を行なう。
この場合、仮想マシンVM上では、メディア挿入認識表示をおこなう。たとえば、仮想ドライブVD1のGUIアイコンがクリックされると、“NO DISK”と表記されているGUIアイコンをメディア名(たとえば、“KASOU_CD01”)に変換する。また、メディア読み込み処理では、エミュレータE上の第2のメモリ413の対象となる仮想ドライブ種のステータスを、“eject”から“insert”に書き換える(図10中、右下のメモリを参照。)。これにより、仮想マシンVMでは仮想ドライブVDにメディアが挿入されていることが認識される。
このように、オペレータよってドライブ割当コマンドが実行されると、そのコマンドにしたがって、仮想マシンVMに物理ドライブDが割り当てられる(既に割り当てられた場合を除く。)。これにより、割当時に物理ドライブDにメディアがすでに挿入されている場合や、その後に、割り当てられた物理ドライブDにメディアが挿入された場合、管理デーモン210が仲介することで、仮想マシンVMのエミュレータEが自動的に(オペレータの操作の必要なく)メディアの読み込み処理をおこなうことができる(メディア挿入処理)。
また、物理ドライブDからメディアを排出したい場合には、オペレータは仮想ドライブVDのGUIアイコンをクリックするだけで、エミュレータEと管理デーモン210が連携して自動的に物理ドライブDからメディアを排出させることができる(メディア排出処理)。
(メディア挿入処理)
つぎに、メディア挿入処理について説明する。管理デーモン210とエミュレータEとはそれぞれ独立にこのメディア挿入処理を実行するが、共有DB200にはそれぞれアクセスするため、管理デーモン210とエミュレータEとに分けて説明する。
図11は、管理デーモン210によるメディア挿入処理手順を示すフローチャートである。なお、メディア挿入前においては、管理デーモン210上の第1のメモリ403では、仮想マシンVM1のすべての仮想ドライブ種のステータスは“eject”に設定されているものとする。また、資源管理テーブル300では、物理ドライブD1には、使用仮想マシンが“VM1”に設定されているものとする。
図11において、管理デーモン210は、まず、メディア挿入イベントが検出されたか否かを判断する(ステップS1101)。メディア挿入イベントとは、オペレータによる物理ドライブの挿入操作によりメディアを挿入する行為である。物理ドライブDにメディアが挿入されると、その旨の信号が管理デーモン210に通知される。この信号の有無によりメディア挿入を検出する。検出されなかった場合(ステップS1101:No)、一連の処理を終了する。
一方、検出された場合(ステップS1101:Yes)、物理資源テーブル301を読み込み(ステップS1102)、メディア挿入された物理ドライブDを使用する仮想マシン(使用仮想マシン)VMが未割当か否かを判断する(ステップS1103)。上記の例の場合、物理資源テーブル301を参照すると、物理ドライブD1の使用仮想マシン項目が“VM1”であるため、仮想マシンVM1が割り当てられていると判断される。
そして、“未割当”である場合(ステップS1103:Yes)、一連の処理を終了する。一方、仮想マシンVMが割り当てられている場合(ステップS1103:No)、仮想資源テーブル302のステータス書換をおこなう(ステップS1104)。具体的には、対象となる仮想マシンに割り当てられた物理ドライブのステータスを“eject”から“insert”に書き換える。上記の例では、仮想マシンVM1の物理ドライブD1のステータスを“eject”から“insert”に書き換える(図11中、右下の資源管理テーブル300を参照。)。
このあと、管理デーモン210上の第1のメモリ403のステータス書換をおこない(ステップS1105)一連の処理を終了する。具体的には、対象となる仮想マシンVMに割り当てられた物理ドライブDのステータスを“eject”から“insert”に書き換える。上記の例では、仮想マシンVM1の物理ドライブD1のステータスを“eject”から“insert”に書き換える(図11中、左下のメモリを参照。)。
つぎに、エミュレータEによるメディア挿入処理について説明する。図12は、エミュレータEによるメディア挿入処理手順を示すフローチャートである。図12において、左上の資源管理テーブル300は、図11に示したステップS1104のステータス書換前の状態を示しており、左下の資源管理テーブル300は、図11に示したステップS1104のステータス書換後の状態を示している。
エミュレータEでは、まず、ステータス変更イベントが検出されたか否かを判断する(ステップS1201)。このステータス変更イベントは、仮想資源テーブル302において対象となる仮想ドライブのステータスが“eject”から“insert”に書き換えられた処理である。検出されなかった場合(ステップS1201:No)、一連の処理を終了する。一方、検出された場合(ステップS1201:Yes)、メディア読み込み処理を実行する(ステップS1202)。
ここで、メディア読み込み処理とは、対象となる仮想マシンVMのエミュレータEがステータス変更イベントの検出により、その仮想マシンVMに割り当てられた物理ドライブDに挿入されているメディアを自動的に読み込み、その仮想マシンVMにメディア挿入を認識させる処理である。上記の例の場合、仮想マシンVM1のエミュレータE1が、ステータス変更イベントの検出により、物理ドライブD1に挿入されているメディアを自動的に読み込む。
この場合、仮想マシンVM上では、メディア挿入認識表示をおこなう。たとえば、仮想ドライブVD1のGUIアイコンがクリックされると、“NO DISK”と表記されているGUIアイコンをメディア名に変換する。また、メディア読み込み処理では、仮想マシン上のメモリの対象となる仮想ドライブ種のステータスを、“eject”から“insert”に書き換える(図12中、右下のメモリを参照。)。これにより、仮想マシンVM1では仮想ドライブVD1(仮想ドライブ種:VD1、物理ドライブ:D1)にメディアが挿入されていることが認識される。
ここで、上記の例におけるメディア挿入時の仮想マシンVM1の画面例について説明する。図13は、仮想マシンVM1のメディア挿入時の表示画面例を示す説明図である。(A)では、仮想ドライブVD1のGUIアイコン1300の文字列が“NO DISK”と表示されている。これは、仮想マシンVM1には物理ドライブD1が割り当てられているが、対応する仮想ドライブVD1では物理ドライブD1のメディア挿入を認識していないことをあらわしている。
(B)において、オペレータが物理ドライブD1に対しメディア挿入をおこなうと、メディア挿入イベントが発生する。このメディア挿入イベントを管理デーモン210が検出して上述したメディア挿入処理(図11を参照)をおこなうことにより、資源管理テーブル300が図11の右下の状態に書き換わる。この書換前後の資源管理テーブル300のステータス変更をエミュレータEが検出することで、上述したメディア挿入処理(図12を参照)をおこなうと、仮想マシンの表示画面上では、(C)仮想ドライブVD1のGUIアイコン1301の表示文字列がメディア名(たとえば、“KASOU_CD01”)に変換される。
(メディア排出処理)
つぎに、メディア排出処理について説明する。管理デーモン210とエミュレータとはそれぞれ独立にこのメディア排出処理を実行するが、共有DB200にはそれぞれアクセスするため、エミュレータと管理デーモン210とに分けて説明する。
図14は、エミュレータによるメディア排出処理手順を示すフローチャートである。なお、メディア排出前においては、資源管理テーブル300(図14中、左上)では、物理ドライブD1には、使用仮想マシン項目が“VM1”に設定されており、仮想マシンVM1における物理ドライブと同種の仮想ドライブ種のステータスは“insert”に設定されているものとする。エミュレータE上の第2のメモリ413(図14中、右上)では、仮想マシンVM1における物理ドライブD1のステータスは“insert”に設定されているものとする。
エミュレータEでは、まず、メディア排出イベントが検出されたか否かを判断する(ステップS1401)。具体的には、オペレータが仮想マシンVM上でメディア排出イベントを発生させる。たとえば、図13の(C)に示した仮想ドライブVD1のGUIアイコンをクリックして、メディア排出指示をエミュレータEに通知することで、メディア排出イベントが発生することとなる。この通知を受けることにより、メディア排出イベントを検出することとなる。
メディア排出イベントが検出されなかった場合(ステップS1401:No)、一連の処理を終了する。一方、メディア排出イベントが検出された場合(ステップS1401:Yes)、ステータス書換をおこなう(ステップS1402)。具体的には、割当対象となる仮想マシンVMに割り当てられた物理ドライブDのステータスを“insert”から“eject”に書き換える。上記の例では、仮想マシンVM1に割り当てられた物理ドライブD1のステータスを“insert”から“eject”に書き換える(図14中、左下の資源管理テーブル300を参照。)。
この場合、仮想マシンVM上では、メディア排出認識表示をおこなう。たとえば、仮想ドライブVD1のGUIアイコンがクリックされると(コマンド実行でもよい)、GUIアイコンの表記文字列を挿入メディア名から“NO DISK”に変換する。
このあと、エミュレータE上の第2のメモリ413のステータス書換をおこない(ステップS1403)、一連の処理を終了する。具体的には、対象となる仮想マシンVMに割り当てられた物理ドライブDのステータスを“insert”から“eject”に書き換える。上記の例では、仮想マシンVM1に割り当てられた物理ドライブD1のステータスを“insert”から“eject”に書き換える(図14中、右下のメモリを参照。)。これにより、仮想マシンVMでは仮想ドライブVDよりメディアが排出されたことが認識される。
つぎに、管理デーモン210によるメディア排出処理について説明する。図15は、管理デーモン210によるメディア排出処理手順を示すフローチャートである。図15において、右上の資源管理テーブル300は、図14に示したステップS1402のステータス書換前の状態を示しており、右下の資源管理テーブル300は、図14に示したステップS1402のステータス書換後の状態を示している。
管理デーモン210では、まず、ステータス変更イベントが検出されたか否かを判断する(ステップS1501)。このステータス変更イベントは、仮想資源テーブル302において割当対象となる物理ドライブVDのステータスが“insert”から“eject”に書き換えられた処理(ステップS1402)である。検出されなかった場合(ステップS1501:No)、一連の処理を終了する。一方、検出された場合(ステップS1501:Yes)、メディア排出処理を実行する(ステップS1502)。
ここで、メディア排出処理とは、管理デーモン210が対象となる仮想マシンVMに割り当てられている物理ドライブDに、メディア排出指示を通知する処理である。物理ドライブDは、このメディア排出通知を受けると、内部機構により、挿入されているメディアを排出する。上記の例では、仮想マシンVM1に割り当てられている物理ドライブD1のトレーが自動的に開き、メディア(CD−ROM)を取り出すことができる。
メディア排出処理では、このあと、管理デーモン210上の第1のメモリ403のステータス書換をおこない、一連の処理を終了する。具体的には、対象となる仮想マシンVMに割り当てられた物理ドライブDのステータスを“insert”から“eject”に書き換える。上記の例では、仮想マシンVM1に割り当てられた物理ドライブD1のステータスを“insert”から“eject”に書き換える(図15中、左下のメモリを参照。)。これにより、仮想マシンVM1ではメディアが排出されていることが認識される。
ここで、上記の例におけるメディア排出時の仮想マシンVM1の画面例について説明する。図16は、仮想マシンVM1のメディア排出時の表示画面例を示す説明図である。(A)では、仮想ドライブVD1のGUIアイコンの文字列が“KASOU_CD01”というメディア名で表示されている。これは、仮想マシンVM1には物理ドライブD1が割り当てられており、かつ、対応する仮想ドライブVD1では物理ドライブD1のメディア挿入を認識していることをあらわしている。
(B)において、オペレータが仮想マシンVM1上で仮想ドライブVD1に対してメディア排出イベントを発生させる。このメディア排出イベントをエミュレータEが検出して上述したメディア排出処理(図14を参照)をおこなうことにより、資源管理テーブル300が図14の左下の状態に書き換わる。
この書換前後の資源管理テーブル300のステータス変更を管理デーモン210が検出することで、上述したメディア排出処理(図15を参照)をおこなうと、物理ドライブD1からCD−ROM(“KASOU_CD01”)が自動排出される。そして、(C)において、仮想マシンVM1の表示画面上では、仮想ドライブVD1のGUIアイコンの表示文字列が“NO DISK”)に変換される。
(ドライブ解放処理)
つぎに、ドライブ解放処理について説明する。管理デーモン210とエミュレータEとはそれぞれ独立にこのドライブ解放処理を実行するが、共有DB200にはそれぞれアクセスするため、管理デーモン210とエミュレータEとにわけて説明する。
図17は、管理デーモン210によるドライブ解放処理手順を示すフローチャートである。ドライブ解放前においては、資源管理テーブル300では、物理ドライブD1の使用仮想マシン項目が“VM1”に設定されているものとする。
図17において、管理デーモン210は仮想マシン名および物理ドライブ名を取得する(ステップS1701)。具体的には、たとえば、オペレータが仮想マシンVMに解放コマンドを実行させると、管理デーモン210はその仮想マシン名および割り当てられている物理ドライブ名を取得する。上記の例では、仮想マシン名:VM1、物理ドライブ名:D1を取得する。
つぎに、管理デーモン210は、仮想資源テーブル302を参照して、取得仮想マシン名および取得物理ドライブ名により特定される仮想ドライブのステータスが“eject”であるか否かを判断する(ステップS1702)。たとえば、上記の例では、仮想マシンVM1の割当対象物理ドライブ項目:D1のステータスが“insert”に設定されている。
このステップS1702において、“eject”である場合(ステップS1702:Yes)、ステップS1705に移行する。一方、“eject”でない場合(ステップS1703:No)、仮想資源テーブル302を参照して、取得物理ドライブ名および取得仮想マシン名により特定される仮想ドライブのステータスを、“insert”から“eject”に書き換える(ステップS1703)。上記の例では、仮想マシンVM1に仮想ドライブVD1として割り当てられた物理ドライブD1のステータスを、“insert”から“eject”に書き換えている(図17中、右中の資源管理テーブル300を参照。)。
このあと、管理デーモン210上の第1のメモリ413のステータス書換をおこなう(ステップS1704)。具体的には、対象となる仮想マシンVMに仮想ドライブVDとして割り当てられた物理ドライブDのステータスを“insert”から“eject”に書き換える。上記の例では、仮想マシンVM1の仮想ドライブ種:CD−ROMである仮想ドライブVD1のステータスを、“insert”から“eject”に書き換えている(図17中、左下のメモリを参照。)。
つぎに、取得仮想マシンVMが使用する割当対象物理ドライブ項目を“未割当”に書き換える(ステップS1705)。上記の例では、取得仮想マシンVM1が使用する割当対象物理ドライブ項目を、“D1”から“未割当”に書き換えている(図17中、右下の資源管理テーブル300を参照。)。同様に、取得仮想マシン名が書き込まれた使用仮想マシン項目を“未割当”に書き換える(ステップS1706)。上記の例では、物理ドライブD1の使用仮想マシン項目を“VM1”から“未割当”に書き換えている(図17中、右下の資源管理テーブル300を参照。)。
このように、上記の例では、物理ドライブD1は仮想マシンVM1の専有から解放されるため、物理ドライブD1は、特定の仮想マシンVM1に専有されず、どの仮想マシンVMにも割り当てることができる。
つぎに、エミュレータEによるドライブ解放処理について説明する。図18は、エミュレータEによるドライブ解放処理手順を示すフローチャートである。図18において、左上の資源管理テーブル300は、図17に示したステップS1703,S1704のステータス書換前の状態を示しており、左中の資源管理テーブル300は、図17に示したステップS1703,S1704のステータス書換後の状態を示しており、左下の資源管理テーブル300は、図17に示したステップS1705,S1706の書換後の状態を示している。
エミュレータEは、まず、ステータス変更イベントが検出されたか否かを判断する(ステップS1801)。このステータス変更イベントとは、仮想資源テーブル302において対象となる物理ドライブDのステータスが“insert”から“eject”に書き換えられた処理(ステップS1703)である。上記の例では、仮想マシンVM1に割り当てられた物理ドライブD1のステータスが“insert”から“eject”に書き換えられたため、ステータス変更イベントが検出されたこととなる。
そして、ステータス変更イベントが検出されなかった場合(ステップS1801:No)、ステップS1803に移行する。一方、検出された場合(ステップS1801:Yes)、メディア排出処理を実行する(ステップS1802)。
ここで、メディア排出処理とは、対象となる仮想マシンVMのエミュレータEが、ステータス変更イベントの検出により、その仮想マシンVMにメディア排出を認識させる処理である。上記の例の場合、仮想マシンVM1のエミュレータE1が、ステータス変更イベントの検出により、メディア排出指示を通知する。
この場合、仮想マシンVM上では、メディア排出認識表示をおこなう。たとえば、仮想ドライブVD1のGUIアイコンの表記文字列を、メディア名(たとえば、“KASOU_CD01”)から“NO DISK”に変換する。また、メディア排出処理では、エミュレータE上の第2のメモリ413の対象となる仮想ドライブ種のステータスを、“insert”から“eject”に書き換える(図18中、右中のメモリを参照。)。これにより、仮想マシンVMでは仮想ドライブVDからメディアが排出されたと認識される。
また、ステップS1803において、エミュレータEは、物理ドライブ名変更イベントが検出されたか否かを判断する。物理ドライブ名変更イベントとは、図18に示したステップS1803による物理ドライブ名書換処理のことであり、具体的には、“取得物理ドライブ名”から“未割当”への変更が検出されたか否かを判断する。上記の例では、仮想マシンVM1について“D1”から“未割当”に変更されているため、物理ドライブ名変更イベントが検出される。この物理ドライブ名変更イベントが検出されていない場合(ステップS1803:No)、一連の処理を終了する。この場合、ドライブ解放はされていないこととなる。
一方、物理ドライブ名変更イベントが検出された場合(ステップS1803:Yes)、ドライブ解放処理を実行して(ステップS1804)、一連の処理を終了する。ドライブ解放処理では、対象となる仮想マシンVMとその仮想ドライブVDを通知する。これにより、仮想マシンVMでは、その仮想ドライブVDのGUIアイコンを消去する。上記の例では、仮想ドライブVD1のGUIアイコン(CD−ROMドライブのGUIアイコン)を画面上から消去する。
また、ドライブ解放処理では、仮想マシンVMのエミュレータE上の第2のメモリ413において、仮想ドライブ種の物理ドライブ項目を“取得物理ドライブ名”から“未割当”に書き換える。上記の例では、仮想ドライブ種“CD−ROM”の物理ドライブ項目が、“D1”から“未割当”に書き換えられる。
このように、オペレータよってドライブ解放コマンドが実行されると、まず、メディア挿入されている場合にはメディア排出をおこなう。そして、メディア排出がされた後に、仮想マシンに割り当てられた物理ドライブDを未割当にすることで、その物理ドライブDは仮想マシンVMの専有から解放される。このように、オペレータは物理マシン100上からドライブ解放コマンドを実行するだけで、自動的にドライブ解放をおこなうことができる。
以上説明したように、仮想マシン管理プログラム、仮想マシン管理装置、および仮想マシン管理方法によれば、共有DB200を介して、エミュレータEと管理デーモン210とで仮想ドライブVDに関する情報を共有することで、エミュレータEが管理する仮想マシンVMの仮想ドライブVDと管理デーモン210が管理する物理マシン100の物理ドライブDを連動させる。
このように、仮想ドライブVDと物理ドライブDが連動することで、オペレータは、仮想ドライブVDを、物理ドライブDを使用する感覚で使用できるようになる。したがって、オペレータによる操作が減少するため、オペレータの作業負担の軽減を図ることができる。
なお、本実施の形態で説明した仮想マシン管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することとしてもよい。
(付記1)複数の仮想マシンの中から選ばれた特定の仮想マシン上の仮想ドライブの状態がメディア挿入状態に変更された場合に、前記特定の仮想マシンのエミュレータにより、前記特定の仮想マシンに前記仮想ドライブとして割り当てられた物理ドライブにメディアが挿入されたことを認識させるための仮想マシン管理プログラムであって、
前記複数の仮想マシンが動作するコンピュータを、
前記物理ドライブに前記メディアの挿入イベントが発生したことを検出する検出手段、
前記検出手段によって前記挿入イベントが発生したことが検出された場合、前記仮想ドライブの状態を、前記メディア挿入状態に変更する変更手段、
として機能させることを特徴とする仮想マシン管理プログラム。
(付記2)前記コンピュータを、
前記仮想ドライブの状態が書き込まれている前記エミュレータが参照可能なテーブルを記憶する記憶手段として機能させ、
前記変更手段は、
前記挿入イベントが発生したことが検出された場合、前記記憶手段に記憶されたテーブルにおける前記仮想ドライブの状態を、前記メディア挿入状態に書き換えることを特徴とする付記1に記載の仮想マシン管理プログラム。
(付記3)複数の仮想マシンが動作するコンピュータを、
前記複数の仮想マシンの中から選ばれた特定の仮想マシンのエミュレータにより、前記特定の仮想マシンの仮想ドライブがメディア排出状態に変更されたことを検出する検出手段、
前記検出手段によって前記仮想ドライブがメディア排出状態に変更されたことが検出された場合、前記特定の仮想マシンに前記仮想ドライブとして割り当てられている物理ドライブから当該物理ドライブに挿入されているメディアを排出するように制御する排出制御手段、
として機能させることを特徴とする仮想マシン管理プログラム。
(付記4)前記コンピュータを、
前記仮想ドライブの状態が書き込まれている前記エミュレータが書き込み可能なテーブルを記憶する記憶手段として機能させ、
前記検出手段は、
前記エミュレータが前記仮想ドライブの状態をメディア挿入状態から前記メディア排出状態に書き換えたことを検出することを特徴とする付記3に記載の仮想マシン管理プログラム。
(付記5)前記検出手段は、
前記物理ドライブに前記メディアの挿入イベントが発生したことを検出し、
前記変更手段は、
前記検出手段によって前記挿入イベントが発生したことが検出された場合、前記仮想ドライブの状態を、前記メディア挿入状態に変更することを特徴とする付記3に記載の仮想マシン管理プログラム。
(付記6)前記検出手段は、
前記物理ドライブに前記メディアの挿入イベントが発生したことを検出し、
前記変更手段は、
前記検出手段によって前記挿入イベントが発生したことが検出された場合、前記記憶手段に記憶されたテーブルにおける前記仮想ドライブの状態を、前記メディア排出状態から前記メディア挿入状態に書き換えることを特徴とする付記4に記載の仮想マシン管理プログラム。
(付記7)付記1〜6のいずれか一つに記載の仮想マシン管理プログラムが記録された前記コンピュータに読み取り可能な記録媒体。
(付記8)複数の仮想マシンが動作可能であり、当該複数の仮想マシンの中から選ばれた特定の仮想マシン上の仮想ドライブの状態がメディア挿入状態に変更された場合に、前記特定の仮想マシンのエミュレータにより、前記特定の仮想マシンに前記仮想ドライブとして割り当てられた物理ドライブにメディアが挿入されたことを認識させる仮想マシン管理装置であって、
前記物理ドライブに前記メディアの挿入イベントが発生したことを検出する検出手段と、
前記検出手段によって前記挿入イベントが発生したことが検出された場合、前記仮想ドライブの状態を、前記メディア挿入状態に変更する変更手段と、
を備えることを特徴とする仮想マシン管理装置。
(付記9)複数の仮想マシンが動作可能な仮想マシン管理装置であって、
前記複数の仮想マシンの中から選ばれた特定の仮想マシンに仮想ドライブとして割り当てられた物理ドライブにメディアの挿入イベントが発生したことを検出する第1の検出手段と、
前記第1の検出手段によって前記挿入イベントが発生したことが検出された場合、前記仮想ドライブの状態を、前記メディア挿入状態に変更する変更手段と、
前記変更手段によって前記メディア挿入状態に変更されたことを検出する第2の検出手段と、
前記特定の仮想マシンに前記仮想ドライブとして割り当てられた物理ドライブにメディアが挿入されたことを認識させる挿入制御手段と、
を備えることを特徴とする仮想マシン管理装置。
(付記10)複数の仮想マシンが動作可能な仮想マシン管理装置であって、
前記複数の仮想マシンの中から選ばれた特定の仮想マシンの仮想ドライブがメディア排出状態に変更されたことを検出する検出手段と、
前記検出手段によって前記仮想ドライブがメディア排出状態に変更されたことが検出された場合、前記特定の仮想マシンに前記仮想ドライブとして割り当てられている物理ドライブから当該物理ドライブに挿入されているメディアを排出するように制御する排出制御手段と、
を備えることを特徴とする仮想マシン管理装置。
(付記11)複数の仮想マシンが動作可能な仮想マシン管理装置であって、
前記複数の仮想マシンの中から選ばれた特定の仮想マシンから当該特定の仮想マシンの仮想ドライブに対するメディア排出イベントが発生したことを検出する第1の検出手段と、
前記第1の検出手段によって前記メディア排出イベントが発生したことが検出された場合、前記仮想ドライブの状態を、前記メディア挿入状態からメディア排出状態に変更する変更手段と、
前記変更手段によって前記仮想ドライブが前記メディア排出状態に変更されたことを検出する第2の検出手段と、
前記第2の検出手段によって前記仮想ドライブがメディア排出状態に変更されたことが検出された場合、前記特定の仮想マシンに前記仮想ドライブとして割り当てられている物理ドライブから当該物理ドライブに挿入されているメディアを排出するように制御する排出制御手段と、
を備えることを特徴とする仮想マシン管理装置。
(付記12)複数の仮想マシンの中から選ばれた特定の仮想マシン上の仮想ドライブの状態がメディア挿入状態に変更された場合に、前記特定の仮想マシンのエミュレータにより、前記特定の仮想マシンに前記仮想ドライブとして割り当てられた物理ドライブにメディアが挿入されたことを認識させるための仮想マシン管理方法であって、
前記物理ドライブに前記メディアの挿入イベントが発生したことを検出する検出工程と、
前記検出工程によって前記挿入イベントが発生したことが検出された場合、前記仮想ドライブの状態を、前記メディア挿入状態に変更する変更工程と、
を含んだことを特徴とする仮想マシン管理方法。
(付記13)複数の仮想マシンの中から選ばれた特定の仮想マシンのエミュレータにより、前記特定の仮想マシンの仮想ドライブがメディア排出状態に変更されたことを検出する検出工程と、
前記検出工程によって前記仮想ドライブがメディア排出状態に変更されたことが検出された場合、前記特定の仮想マシンに前記仮想ドライブとして割り当てられている物理ドライブから当該物理ドライブに挿入されているメディアを排出する排出工程と、
を含んだことを特徴とする仮想マシン管理方法。