(57)【要約】【課題】各仮想マシンの仮想記憶領域の独立性を保ちつつ、仮想記憶領域を効率的に共有することで、１台の計算機に多数の仮想マシンを稼働させること。【解決手段】本発明にかかる仮想マシンサーバは、複数の仮想マシンのそれぞれが参照及び更新するファイルを格納する仮想的な記憶領域である複数の専用仮想記憶領域と、複数の仮想マシンの内、少なくとも２以上の仮想マシンによって参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域と、複数の仮想マシンに含まれる任意の仮想マシンから当該任意の仮想マシンに対応する専用仮想記憶領域に対して参照要求されたファイルが共用仮想記憶領域に格納されている場合に、当該参照要求されたファイルを共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行手段と、を備える。【選択図】図１
2010237742.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンのそれぞれが参照及び更新するファイルを格納する仮想的な記憶領域である複数の専用仮想記憶領域と、
前記複数の仮想マシンの内、少なくとも２以上の仮想マシンによって参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域と、
前記複数の仮想マシンに含まれる任意の仮想マシンから当該任意の仮想マシンに対応する専用仮想記憶領域に対して参照要求されたファイルが前記共用仮想記憶領域に格納されている場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行手段と、
を備える仮想マシンサーバ。
【請求項２】
前記入出力代行手段は、前記任意の仮想マシンに対応する専用仮想記憶領域に当該参照要求されたファイルが格納されていないことを検出した場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力することを特徴とする請求項１に記載の仮想マシンサーバ。
【請求項３】
複数の仮想マシンのそれぞれは、ファイルを管理するファイルシステムに共通する階層を有し、
前記複数の専用仮想記憶領域及び前記共用仮想記憶領域は、前記共通する階層に関連付けてファイルを格納し、
前記任意の仮想マシンは、当該任意の仮想マシンのファイルシステムで管理される階層及びファイルを指定して、前記任意の仮想マシンに対応する専用仮想記憶領域に対して参照要求を送信し、
前記入出力代行手段は、前記参照要求が送信された専用仮想記憶領域において前記指定された階層に当該参照要求されたファイルが格納されていないことを検出した場合に、前記共用仮想記憶領域において前記指定された階層に当該参照要求されたファイルが格納されているか否かを判定し、当該参照要求されたファイルが格納されていると判定した場合に、当該参照要求されたファイルを前記共用仮想記憶領域の前記指定された階層から読み出し、当該任意の仮想マシンへ出力することを特徴とする請求項２に記載の仮想マシンサーバ。
【請求項４】
前記入出力代行手段は、前記出力したファイルが前記任意の仮想マシンにより更新された場合、当該任意の仮想マシンに対応する専用仮想記憶領域に当該更新されたファイルを格納することを特徴とする請求項１乃至３のいずれか１項に記載の仮想マシンサーバ。
【請求項５】
前記入出力代行手段は、前記複数の専用仮想記憶領域に同一内容のファイルが格納されている場合、当該同一内容のファイルを前記共用仮想記憶領域に格納すると共に、前記複数の専用仮想記憶領域から当該同一内容のファイルを削除することを特徴とする請求項１乃至４のいずれか１項に記載の仮想マシンサーバ。
【請求項６】
前記入出力代行手段は、前記任意の仮想マシンに対応する専用仮想記憶領域に格納されたファイルが前記任意の仮想マシンにより更新された場合、当該更新されたファイルと同一内容のファイルが当該任意の仮想マシン以外の複数の仮想マシンのそれぞれに対応する複数の専用仮想記憶領域に格納されているか否かを判定し、格納されていると判定した場合に、当該更新されたファイルを前記共用仮想記憶領域に格納すると共に、前記任意の仮想マシンに対応する専用仮想記憶領域から当該更新されたファイルを削除し、前記複数の専用仮想記憶領域から当該同一内容のファイルを削除することを特徴とする請求項５に記載の仮想マシンサーバ。
【請求項７】
複数の仮想マシンに含まれる任意の仮想マシンから、当該任意の仮想マシンが参照及び更新するファイルを格納する専用仮想記憶領域に対するファイルの参照要求を受信する受信ステップと、
前記任意の仮想マシンを含む少なくとも２以上の仮想マシンによって参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域に、前記参照要求されたファイルが格納されている場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行ステップと、
を含む仮想マシン制御方法。
【請求項８】
前記入出力代行ステップは、前記任意の仮想マシンに対応する専用仮想記憶領域に当該参照要求されたファイルが格納されていないことを検出した場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力することを特徴とする請求項７に記載の仮想マシン制御方法。
【請求項９】
前記受信ステップは、前記任意の仮想マシンのファイルシステムで管理される階層及びファイルが指定された、前記任意の仮想マシンに対応する専用仮想記憶領域に対する参照要求を受信し、
前記任意の仮想マシンに対応する専用仮想記憶領域において前記指定された階層に当該参照要求されたファイルが格納されていないことを検出する検出ステップと、
前記検出ステップにより当該参照要求されたファイルが格納されていないことを検出した場合に、前記共用仮想記憶領域において前記指定された階層に当該参照要求されたファイルが格納されているか否かを判定する判定ステップと、をさらに含み、
前記入出力代行ステップは、前記判定ステップにより当該参照要求されたファイルが格納されていると判定した場合に、当該参照要求されたファイルを前記共用仮想記憶領域の前記指定された階層から読み出し、当該任意の仮想マシンへ出力することを特徴とする請求項８に記載の仮想マシン制御方法。
【請求項１０】
前記入出力代行ステップは、前記出力したファイルが前記任意の仮想マシンにより更新された場合、当該任意の仮想マシンに対応する専用仮想記憶領域に当該更新されたファイルを格納することを特徴とする請求項７乃至９のいずれか１項に記載の仮想マシン制御方法。
【請求項１１】
前記複数の仮想マシンのそれぞれに対応する複数の専用仮想記憶領域に対して同一内容のファイルが格納されているか否かを判定する同一ファイル判定ステップをさらに備え、
前記入出力代行ステップは、前記同一ファイル判定ステップにより前記同一内容のファイルが格納されていると判定した場合、当該同一内容のファイルを前記共用仮想記憶領域に格納すると共に、前記複数の専用仮想記憶領域から当該同一内容のファイルを削除することを特徴とする請求項７乃至１０のいずれか１項に記載の仮想マシン制御方法。
【請求項１２】
前記同一ファイル判定ステップは、前記任意の仮想マシンに対応する専用仮想記憶領域に格納されたファイルが前記任意の仮想マシンにより更新された場合、当該更新されたファイルと同一内容のファイルが当該任意の仮想マシン以外の複数の仮想マシンのそれぞれに対応する複数の専用仮想記憶領域に格納されているか否かを判定し、
前記入出力代行ステップは、前記同一ファイル判定ステップにより前記同一内容のファイルが格納されていると判定した場合、当該更新されたファイルを前記共用仮想記憶領域に格納すると共に、前記任意の仮想マシンに対応する専用仮想記憶領域から当該更新されたファイルを削除し、前記複数の専用仮想記憶領域から当該同一内容のファイルを削除することを特徴とする請求項１１に記載の仮想マシン制御方法。
【請求項１３】
複数の仮想マシンに含まれる任意の仮想マシンから、当該任意の仮想マシンが参照及び更新するファイルを格納する専用仮想記憶領域に対するファイルの参照要求を受信する受信処理と、
前記任意の仮想マシンを含む少なくとも２以上の仮想マシンにおいて参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域に、前記参照要求されたファイルが格納されている場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行処理と、
を含む処理をコンピュータに実行させる仮想マシン制御プログラム。
【請求項１４】
前記入出力代行処理は、前記任意の仮想マシンに対応する専用仮想記憶領域に当該参照要求されたファイルが格納されていないことを検出した場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力することを特徴とする請求項１３に記載の仮想マシン制御プログラム。
【請求項１５】
前記受信処理は、前記任意の仮想マシンのファイルシステムで管理される階層及びファイルが指定された、前記任意の仮想マシンに対応する専用仮想記憶領域に対する参照要求を受信し、
前記任意の仮想マシンに対応する専用仮想記憶領域において前記指定された階層に当該参照要求されたファイルが格納されていないことを検出する検出処理と、
前記検出処理により当該参照要求されたファイルが格納されていないことを検出した場合に、前記共用仮想記憶領域において前記指定された階層に当該参照要求されたファイルが格納されているか否かを判定する判定処理と、をさらに含み、
前記入出力代行処理は、前記判定処理により当該参照要求されたファイルが格納されていると判定した場合に、当該参照要求されたファイルを前記共用仮想記憶領域の前記指定された階層から読み出し、当該任意の仮想マシンへ出力することを特徴とする請求項１４に記載の仮想マシン制御プログラム。
【請求項１６】
前記入出力代行処理は、前記出力したファイルが前記任意の仮想マシンにより更新された場合、当該任意の仮想マシンに対応する専用仮想記憶領域に当該更新されたファイルを格納することを特徴とする請求項１３乃至１５のいずれか１項に記載の仮想マシン制御プログラム。
【請求項１７】
前記複数の仮想マシンのそれぞれに対応する複数の専用仮想記憶領域に対して同一内容のファイルが格納されているか否かを判定する同一ファイル判定処理をさらに備え、
前記入出力代行処理は、前記同一ファイル判定処理により前記同一内容のファイルが格納されていると判定した場合、当該同一内容のファイルを前記共用仮想記憶領域に格納すると共に、前記複数の専用仮想記憶領域から当該同一内容のファイルを削除することを特徴とする請求項１３乃至１６のいずれか１項に記載の仮想マシン制御プログラム。
【請求項１８】
前記同一ファイル判定処理は、前記任意の仮想マシンに対応する専用仮想記憶領域に格納されたファイルが前記任意の仮想マシンにより更新された場合、当該更新されたファイルと同一内容のファイルが当該任意の仮想マシン以外の複数の仮想マシンのそれぞれに対応する複数の専用仮想記憶領域に格納されているか否かを判定し、
前記入出力代行処理は、前記同一ファイル判定処理により前記同一内容のファイルが格納されていると判定した場合、当該更新されたファイルを前記共用仮想記憶領域に格納すると共に、前記任意の仮想マシンに対応する専用仮想記憶領域から当該更新されたファイルを削除し、前記複数の専用仮想記憶領域から当該同一内容のファイルを削除することを特徴とする請求項１７に記載の仮想マシン制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラムに関し、特に、複数の仮想マシンの間でファイルを共有する仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラムに関する。
【背景技術】
【０００２】
昨今、仮想化技術の発展により仮想マシンサーバの運用が広まりつつある。仮想マシンサーバは１台の計算機システム内に複数の仮想マシンであるゲストＯＳ（Operating System）を構築し、個々のゲストＯＳを独立したＯＳとして機能させる技術である。ゲストＯＳは、ベースとなる仮想マシンサーバ内部に構築された仮想記憶領域にインストールされ、他のゲストＯＳとは独立して動作することを可能としている。仮想マシンサーバの一般的な使い方として、１台の仮想マシンサーバ内に複数の仮想化されたクライアントＰＣを構築することが考えられる。
【０００３】
特許文献１には、仮想計算機ごとに一つ又は複数の仮想ディスクを記憶領域として提供する技術が開示されている。
【０００４】
また、特許文献２にかかる仮想記憶計算機システムは、複数の仮想計算機で共用する実ファイル装置を備え、複数のＯＳから出される実ファイル装置に対する入出力要求にかかるレコード排他制御を行って、入出力管理部に入出力要求を渡すと共に、入出力管理部から受け取った入出力事象を入出力要求元に通知するファイル管理部を備える。
【０００５】
また、特許文献３にかかる仮想計算機システムは、セグメンテーション方式による仮想記憶管理機能を使用する複数の仮想計算機と、複数の仮想計算機により使用可能で実計算機システムに接続された実ボリューム装置とを含んでいる。さらに、特許文献３にかかるファイル管理テーブルは、共用可能な各実ボリューム装置内のファイル資源に対する名称である実ファイル名、及び、対応するファイルを共用することを要求中である各ジョブ識別名を保持している各々のファイル共用制御に必要な各種の制御情報などを管理している。そして、当該ファイル管理テーブルは、資源割当て解放制御手段及びファイル共用制御手段、並びに、実ボリューム装置認識手段により参照、更新される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２２２１２３号公報
【特許文献２】特開平０２−０８１２３９号公報
【特許文献３】特開平０７−０１３８２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように仮想マシンサーバにより１台の計算機内に複数のＯＳを稼働させることが可能である。それに伴い、当該計算機が備えるリソース（特に、ＨＤＤ（Hard Disk Drive））も稼働させるＯＳの数分が個別に必要となる。近年、ＨＤＤの大容量化が進んでいるが、ＯＳが必要とするＨＤＤ容量も増大している。そのため、本来、仮想マシンサーバは、１台の計算機内に複数の仮想マシンを稼働させることができるものでありながら、物理的な制約が大きいという問題点を有する。
【０００８】
また、特許文献１乃至３においては、個々の仮想マシンは、ファイルの格納先が共有された仮想記憶領域であるか否かを予め認識しておく必要がある。つまり、所望のファイルが共有された仮想記憶領域に格納されている場合は、個々の仮想マシンは、明示的に共有された仮想記憶領域に対して当該所望のファイルの取得を要求する必要がある。
【０００９】
特許文献１乃至３にかかる技術は、アプリケーションが使用するファイルを対象としたものには有効であるが、例えば、ＯＳが利用するシステムファイル等の共有には適さない。その理由は、システムファイル等の格納先は、通常、他の仮想マシンから独立したローカルの記憶領域であるためである。仮に、システムファイルを複数の仮想マシンで共有した場合、複数の仮想マシンは、当該システムファイルが共有された仮想記憶領域に格納されていることを予め認識しておく必要がある。つまり、仮想マシンは、システムファイルの参照先として通常とは異なる格納先を明示的に指定する必要がある。これは、仮想環境としての要件を満たさない可能性がある。さらに、システムファイル等は、環境に応じて部分的に設定変更されることもあり、格納先の管理が煩雑である。そのため、単に共有された仮想記憶領域に排他制御をかけるだけでは実現できない。
【００１０】
本発明は、このような問題点を解決するためになされたものであり、各仮想マシンの仮想記憶領域の独立性を保ちつつ、仮想記憶領域を効率的に共有することで、１台の計算機に多数の仮想マシンを稼働させることができる仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の態様にかかる仮想マシンサーバは、複数の仮想マシンのそれぞれが参照及び更新するファイルを格納する仮想的な記憶領域である複数の専用仮想記憶領域と、前記複数の仮想マシンの内、少なくとも２以上の仮想マシンによって参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域と、前記複数の仮想マシンに含まれる任意の仮想マシンから当該任意の仮想マシンに対応する専用仮想記憶領域に対して参照要求されたファイルが前記共用仮想記憶領域に格納されている場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行手段と、を備える。
【００１２】
本発明の第２の態様にかかる仮想マシン制御方法は、複数の仮想マシンに含まれる任意の仮想マシンから、当該任意の仮想マシンが参照及び更新するファイルを格納する専用仮想記憶領域に対するファイルの参照要求を受信する受信ステップと、前記任意の仮想マシンを含む少なくとも２以上の仮想マシンによって参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域に、前記参照要求されたファイルが格納されている場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行ステップと、を含む。
【００１３】
本発明の第３の態様にかかる仮想マシン制御プログラムは、複数の仮想マシンに含まれる任意の仮想マシンから、当該任意の仮想マシンが参照及び更新するファイルを格納する専用仮想記憶領域に対するファイルの参照要求を受信する受信処理と、前記任意の仮想マシンを含む少なくとも２以上の仮想マシンにおいて参照されるファイルを格納する仮想的な記憶領域である共用仮想記憶領域に、前記参照要求されたファイルが格納されている場合に、当該参照要求されたファイルを前記共用仮想記憶領域から読み出し、当該任意の仮想マシンへ出力する入出力代行処理と、を含む処理をコンピュータに実行させる。
【発明の効果】
【００１４】
本発明によれば、各仮想マシンの仮想記憶領域の独立性を保ちつつ、仮想記憶領域を効率的に共有することで、１台の計算機に多数の仮想マシンを稼働させることができる仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１にかかる仮想マシンサーバの概念を説明する図である。
【図２】本発明の実施の形態１にかかる仮想マシンサーバのハードウェアの構成を示すブロック図である。
【図３】本発明の実施の形態２にかかる共有ファイルの参照処理の流れを示すシーケンス図である。
【図４】本発明の実施の形態２にかかる共有ファイルの参照処理の概念を説明する図である。
【図５】本発明の実施の形態２にかかる共有ファイルの更新処理の流れを示すシーケンス図である。
【図６】本発明の実施の形態２にかかる共有ファイルの移動処理の流れを示すシーケンス図である。
【図７】本発明の実施の形態２にかかる更新時の共有ファイルの移動処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１７】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる仮想マシンサーバ１の概念を説明する図である。仮想マシンサーバ１は、１台の計算機で実現され、複数の仮想マシンを稼働させることができる。仮想マシンサーバ１は、仮想マシン１１、仮想マシン１２、入出力代行手段１３、専用仮想記憶領域１４、共用仮想記憶領域１５、専用仮想記憶領域１６を備える。
【００１８】
仮想マシン１１及び仮想マシン１２は、インストールされたＯＳに基づき仮想マシンサーバ１内で稼働する仮想的な計算機システムである。ここでは、仮想マシン１１及び仮想マシン１２は、同一のＯＳがインストールされているものとする。また、仮想マシン１１及び仮想マシン１２は、ＯＳのシステムファイル、レジストリ情報等について同一の内容のファイルを使用するものである。そして、仮想マシン１１及び仮想マシン１２は、ユーザアカウント、コンピュータ名及びネットワーク情報という固有の情報について仮想マシン毎に異なる内容のファイルを使用する。同様に、仮想マシン１１及び仮想マシン１２は、稼働時に生成されるシステムログなども仮想マシン毎に異なる内容のファイルとなる。尚、仮想マシンサーバ１で稼働する仮想マシンの数は、仮想マシン１１及び仮想マシン１２の２台に限定されない。
【００１９】
専用仮想記憶領域１４、共用仮想記憶領域１５及び専用仮想記憶領域１６は、仮想マシンサーバ１内で構築された仮想的な記憶領域である。専用仮想記憶領域１４及び１６は、複数の仮想マシンのそれぞれが参照及び更新するファイルを格納する仮想的な記憶領域である。尚、仮想マシンサーバ１において、仮想マシンが３台以上の場合、少なくとも２台以上から参照可能な領域である。
【００２０】
専用仮想記憶領域１４は、仮想マシン１１が稼働するために必要なファイルの内、仮想マシン１１に固有の情報が格納されている。また、専用仮想記憶領域１４は、仮想マシン１１以外の仮想マシンからはアクセスできない領域である。専用仮想記憶領域１６は、仮想マシン１２が稼働するために必要なファイルの内、仮想マシン１２に固有の情報が格納されている。また、専用仮想記憶領域１６は、仮想マシン１２以外の仮想マシンからはアクセスできない領域である。
【００２１】
共用仮想記憶領域１５は、仮想マシン１１及び仮想マシン１２が稼働するために必要なファイルの内、仮想マシン１１及び仮想マシン１２に同一な内容のファイルが格納されている。例えば、仮想マシン１１及び仮想マシン１２に共通したシステムファイル、レジストリ情報等が格納されている。
【００２２】
入出力代行手段１３は、複数の仮想マシンに含まれる任意の仮想マシンから、当該任意の仮想マシンに対応する専用仮想記憶領域に対して参照要求されたファイルが共用仮想記憶領域１５に格納されている場合に、参照要求されたファイルを共用仮想記憶領域１５から読み出し、任意の仮想マシンへ出力するものである。
【００２３】
すなわち、仮想マシン１１は、専用仮想記憶領域１４に対してファイルの参照及び更新を要求する。また、仮想マシン１２は、専用仮想記憶領域１６に対してファイルの参照及び更新を要求する。また、共用仮想記憶領域１５は、仮想マシン１１及び仮想マシン１２の双方から参照可能な領域である。しかし、仮想マシン１１及び仮想マシン１２は、共用仮想記憶領域１５に対して、ファイルの参照要求を直接行うことができない。そこで、入出力代行手段１３は、仮想マシン１１又は１２からの要求に応じて、適宜、共用仮想記憶領域１５からファイルを読み出し、要求元の仮想マシン１１又は１２へ出力する。
【００２４】
さらに、入出力代行手段１３は、任意の仮想マシンに対応する専用仮想記憶領域に当該参照要求されたファイルが格納されていないことを検出した場合に、当該参照要求されたファイルを共用仮想記憶領域１５から読み出し、当該任意の仮想マシンへ出力するようにするとよい。これにより、参照要求されたファイルが専用仮想記憶領域に格納されていた場合には、入出力代行手段１３は動作する必要がなく、処理コストを抑えることができる。
【００２５】
図２は、本発明の実施の形態１にかかる仮想マシンサーバ１のハードウェアの構成を示すブロック図である。仮想マシンサーバ１は、汎用的なコンピュータシステムである。仮想マシンサーバ１は、ＣＰＵ（Central Processing Unit）２１と、ＲＡＭ（Random Access Memory）２２と、ＲＯＭ（Read Only Memory）２３と、ハードディスク２４とを備える。また、ハードディスク２４は、不揮発性記憶装置であり、仮想マシン制御プログラム３１、共用仮想記憶領域３２、専用仮想記憶領域３３及び専用仮想記憶領域３４が格納されている。ＣＰＵ２１は、仮想マシンサーバ１における各種処理、ＲＡＭ２２、ＲＯＭ２３及びハードディスク２４へのアクセス等を制御する。
【００２６】
仮想マシン制御プログラム３１は、複数の仮想マシンを生成、稼働及び制御させるコンピュータプログラムである。共用仮想記憶領域３２及び専用仮想記憶領域３３には、仮想マシン１１の内容が含まれる。また、共用仮想記憶領域３２及び専用仮想記憶領域３４には、仮想マシン１２の内容が含まれる。具体的には、仮想マシン制御プログラム３１は、共用仮想記憶領域３４、専用仮想記憶領域３５及び３６に格納された仮想マシン１１及び１２のデータに基づいて、仮想マシン１１及び１２を稼働させる。また、仮想マシンサーバ１を起動するためのＯＳが別途、存在していてもよい。その場合、仮想マシン制御プログラム３１は、当該ＯＳ上で稼働するものとなる。
【００２７】
仮想マシンサーバ１は、ＣＰＵ２１が、ＲＡＭ２２、ＲＯＭ２３又はハードディスク２４に格納された仮想マシン制御プログラム３１、共用仮想記憶領域３２、専用仮想記憶領域３３及び３４を読み込み、実行する。これにより、仮想マシンサーバ１は、仮想マシン１１及び１２を稼働させることができる。
【００２８】
図３は、本発明の実施の形態２にかかる共有ファイルの参照処理の流れを示すシーケンス図である。まず、仮想マシン１１は、専用仮想記憶領域１４に対して仮想マシン１１における任意のファイルの参照要求を送信する（Ｓ１１）。ここでは、参照要求されるファイルを"ファイルＡ"と呼ぶ。
【００２９】
次に、専用仮想記憶領域１４は、ファイルＡが格納されていないことを示す不存在の応答を返信する（Ｓ１２）。このとき、入出力代行手段１３は、ステップＳ１２で返信された不存在の応答を受信し、ファイルＡが専用仮想記憶領域１４に格納されていないことを検出する。
【００３０】
続いて、入出力代行手段１３は、仮想マシン１１に代わり、共用仮想記憶領域１５に対してファイルＡの参照要求を送信する（Ｓ１３）。そして、共用仮想記憶領域１５は、ファイルＡの返信をする（Ｓ１４）。その後、入出力代行手段１３は、ステップＳ１４で受信したファイルＡを仮想マシン１１へ返信する（Ｓ１５）。つまり、入出力代行手段１３は、参照要求されたファイルＡが専用仮想記憶領域１４に格納されていないことを検出した場合に、ファイルＡを共用仮想記憶領域１５から読み出し、仮想マシン１１へ出力する。
【００３１】
図４は、本発明の実施の形態２にかかる共有ファイルの参照処理の概念を説明する図である。図４に示すように、仮想マシン１１及び１２のそれぞれは、ファイルを管理するファイルシステム１１０及び１２０に共通する階層構造１１１及び１２１を有する。そして、ファイルシステム１１０には、階層構造１１１であるフォルダ階層"C:\ABC\system"以下に、"aaa.dll"及び"bbb.dll"というファイル名のファイルが格納されている。また、ファイルシステム１２０には、階層構造１１１と同様の階層構造１２１であるフォルダ階層"C:\ABC\system"以下に、"aaa.dll"及び"ccc.dll"というファイル名のファイルが格納されている。
【００３２】
また、専用仮想記憶領域１４、共用仮想記憶領域１５及び専用仮想記憶領域１６は、上述した共通する階層構造に関連付けてファイルが格納される。具体的には、専用仮想記憶領域１４は、階層構造１４１であるフォルダ階層"C:\ABC\system"以下に、"bbb.dll"のというファイル名の実データが格納されている。共用仮想記憶領域１５は、階層構造１５１であるフォルダ階層"C:\ABC\system"以下に、"aaa.dll"のというファイル名の実データが格納されている。専用仮想記憶領域１６は、階層構造１６１であるフォルダ階層"C:\ABC\system"以下に、"ccc.dll"のというファイル名の実データが格納されている。
【００３３】
すなわち、仮想マシン１１は、ファイルシステム１１０を介して２つのファイルを処理することができる。しかし、仮想マシン１１は、"aaa.dll"が当該２つのファイルが専用仮想記憶領域１４又は共用仮想記憶領域１５のいずれに格納されているかを認識していない。また、仮想マシン１２も同様である。
【００３４】
ここで、仮想マシン１１は、フォルダ階層"C:\ABC\system"および"aaa.dll"を指定して、専用仮想記憶領域１４に対して参照要求を送信する。そして、専用仮想記憶領域１４は、フォルダ階層"C:\ABC\system"以下に"aaa.dll"が格納されているか否かを判定する。ここでは、格納されていないため、専用仮想記憶領域１４は、"aaa.dll"の不存在応答を送信する。このとき、入出力代行手段１３は、"aaa.dll"が専用仮想記憶領域１４に格納されていないことを検出する。そして、入出力代行手段１３は、共用仮想記憶領域１５に対してフォルダ階層"C:\ABC\system"以下に"aaa.dll"が格納されているか否かを判定する。ここでは、格納されているため、共用仮想記憶領域１５は、"aaa.dll"を返信し、入出力代行手段１３は、"aaa.dll"を受信する。その後、入出力代行手段１３は、仮想マシン１１に対して"aaa.dll"を出力する。
【００３５】
これにより、仮想マシン１１は、専用仮想記憶領域１４に対してのみ参照要求を行いながら、共用仮想記憶領域１５に格納されているシステムファイルを取得し、動作することができる。つまり、仮想マシン１１にインストールされているＯＳには、変更を加えることなく、共用仮想記憶領域１５に格納されているシステムファイルを参照することができる。そして、仮想マシン１２から専用仮想記憶領域１６に対して同一のシステムファイルの参照要求を行った場合には、入出力代行手段１３は同様に動作する。
【００３６】
このように、本発明の実施の形態１にかかる仮想マシンサーバ１によれば、各仮想マシンの仮想記憶領域の独立性を保ちつつ、仮想記憶領域を効率的に共有することで、１台の計算機に多数の仮想マシンを稼働させることができる。
【００３７】
＜発明の実施の形態２＞
発明の実施の形態２では、発明の実施の形態１に改良を加えたものである。尚、本発明の実施の形態２にかかる仮想マシンサーバの概念図及びハードウェアの構成図は、図１及び図２と同様のものであるため、詳細な説明及び図示は、省略する。本発明の実施の形態２にかかる仮想マシンサーバは、本発明の実施の形態１の機能に加え、共有ファイルの更新処理及び移動処理を行うものである。
【００３８】
図５は、本発明の実施の形態２にかかる共有ファイルの更新処理の流れを示すシーケンス図である。ここでは、図３に示した共有ファイルの参照処理が完了した直後であるものとする。すなわち、仮想マシン１１は、ファイルＡを取得済みである。
【００３９】
図５において、まず、仮想マシン１１は、ファイルＡを更新する（Ｓ２１）。例えば、仮想マシン１１は、パッチ適用等によりシステムファイルの内容を更新する。又は、仮想マシン１１は、アプリケーションのインストール等によりレジストリファイルの内容を更新する。
【００４０】
次に、仮想マシン１１は、専用仮想記憶領域１４に対して更新後の内容でファイルＡの上書き要求を送信する（Ｓ２２）。このとき、図３で説明したように、専用仮想記憶領域１４には、ファイルＡが存在しないため、専用仮想記憶領域１４は、ファイルＡの不存在の応答を返信する（Ｓ２３）。この時点では、専用仮想記憶領域１４には、ファイルＡが格納されていないため、ファイルＡに対する上書きを行うことができないためである。そして、入出力代行手段１３は、ステップＳ２３で返信された不存在の応答を受信する。
【００４１】
さらに、入出力代行手段１３は、仮想マシン１１に代わり、更新後の内容でファイルＡの新規作成要求を専用仮想記憶領域１４に対して送信する（Ｓ２４）。これにより、専用仮想記憶領域１４にファイルＡが格納される。
【００４２】
言い換えると、入出力代行手段１３は、ステップＳ１５により出力したファイルが仮想マシン１１により更新された場合、仮想マシン１１に対応する専用仮想記憶領域１４に更新されたファイルを格納する。そのため、共用仮想記憶領域１５には、更新前のファイルＡが残され、仮想マシン１２からは、引き続きファイルＡを参照することができる。一方、更新後のファイルＡは、仮想マシン１１でのみ使用されるものであり、仮想マシン１２へ影響を与えないため、共用仮想記憶領域１５に格納されたファイルＡを更新するのではなく、専用仮想記憶領域１４に新規に格納する。これにより、各仮想マシンの仮想記憶領域の独立性を保ちつつ、仮想記憶領域を効率的に共有することができる。
【００４３】
仮想マシン１１は、元々専用仮想記憶領域１４に格納されたファイルを更新した場合、専用仮想記憶領域１４に上書きする。また、仮想マシン１２も専用仮想記憶領域１６に対して同様に処理する。そのため、仮想マシンサーバ１における稼働を続ける中で、同一内容のパッチ適用を行った場合などには、専用仮想記憶領域１４及び１６には、同一内容のファイルが存在する可能性がある。そこで、本発明の実施の形態２では、複数の専用仮想記憶領域に存在するファイルを検出し、共用仮想記憶領域へ移動する処理を行う。
【００４４】
図６は、本発明の実施の形態２にかかる共有ファイルの移動処理の流れを示すシーケンス図である。まず、入出力代行手段１３は、任意のタイミングで専用仮想記憶領域１４に対して専用仮想記憶領域１４に格納されているファイルの一覧であるファイルリストを要求する（Ｓ３１）。このとき、専用仮想記憶領域１４は、ファイルリストを入出力代行手段１３へ返信する（Ｓ３２）。また、入出力代行手段１３は、専用仮想記憶領域１６に対してもファイルリストを要求する（Ｓ３３）。このとき、専用仮想記憶領域１６は、ファイルリストを入出力代行手段１３へ返信する（Ｓ３４）。
【００４５】
そして、入出力代行手段１３は、専用仮想記憶領域１４のファイルリストと、専用仮想記憶領域１６のファイルリストとを比較し、同一内容のファイルが存在するか否かを検出する（Ｓ３５）。例えば、入出力代行手段１３は、同一のフォルダ階層の同一ファイル名のファイルについて、専用仮想記憶領域１４及び専用仮想記憶領域１６を参照し、ファイル内容の差分を取ることにより、同一内容であるか否かを検出してもよい。又は、専用仮想記憶領域１４に格納されているファイルの１つずつについて、専用仮想記憶領域１６に格納されているファイルとの差分を取ってもよい。尚、ステップＳ３１乃至Ｓ３５の処理の具体的な実現方法は、これに限定されない。
【００４６】
ステップＳ３１乃至Ｓ３５により専用仮想記憶領域１４と専用仮想記憶領域１６とに同一内容のファイルＢが存在すると検出した場合、入出力代行手段１３は、共用仮想記憶領域１５に対して当該同一内容のファイルＢの新規作成要求を送信する（Ｓ３６）。
【００４７】
同時に、入出力代行手段１３は、専用仮想記憶領域１４に対してファイルＢの削除要求を送信する（Ｓ３７）。また、入出力代行手段１３は、専用仮想記憶領域１６に対してファイルＢの削除要求を送信する（Ｓ３８）。これにより、同一内容のファイルＢを共用仮想記憶領域１５の一箇所にまとめることができる。尚、ステップＳ３６、Ｓ３７及びＳ３８の順番は、これに限定されない。
【００４８】
言い換えると、入出力代行手段１３は、複数の専用仮想記憶領域１４及び１６に同一内容のファイルが格納されている場合、同一内容のファイルを共用仮想記憶領域１５に格納すると共に、複数の専用仮想記憶領域１４及び１６から同一内容のファイルを削除する。
【００４９】
これにより、例えば、仮想マシンサーバ１において新規に仮想マシン１１を作成した場合には、まず、システムファイル等を含む全てのファイルを専用仮想記憶領域１４に格納する。次に、仮想マシンサーバ１において新気に仮想マシン１２を仮想マシン１１と同一のＯＳにより作成した場合には、同様に、システムファイル等を含む全てのファイルを専用仮想記憶領域１６に格納する。このとき、仮想マシンサーバ１において共有ファイルの移動処理を実行することにより、専用仮想記憶領域１４及び１６において重複するファイルを共用仮想記憶領域１５に移動させて、仮想マシンサーバ１における全体の仮想記憶領域の空き領域を増やすことができる。つまり、仮想記憶領域を効率的に利用することができる。そのため、仮想マシンサーバ１で稼働させることのできる仮想マシンの台数を増やすことができる。
【００５０】
図７は、本発明の実施の形態２にかかる更新時の共有ファイルの移動処理の流れを示すシーケンス図である。ここでは、専用仮想記憶領域に対するファイル更新時に動的に共有ファイルの移動処理を行う例を説明する。
【００５１】
まず、仮想マシン１１は、ファイルＣを更新する（Ｓ４１）。ここで、ファイルＣは、元々専用仮想記憶領域１４に格納されているファイルであるものとする。次に、仮想マシン１１は、専用仮想記憶領域１４に対して更新後の内容でファイルＣの上書き要求を送信する（Ｓ４２）。ここでは、専用仮想記憶領域１４には、ファイルＡが存在するため、専用仮想記憶領域１４は、ファイルＣを上書きして格納する。そして、専用仮想記憶領域１４は、ファイルＣの上書き完了の返信する（Ｓ４３）。
【００５２】
ここで、入出力代行手段１３は、更新後のファイルＣについて参照要求を専用仮想記憶領域１６に対して送信する（Ｓ４４）。ここでは、専用仮想記憶領域１６に更新後のファイルＣと同一内容のファイルが存在するものとして、専用仮想記憶領域１６は、ファイルＣを返信する（Ｓ４５）。
【００５３】
そこで、入出力代行手段１３は、ファイルＣについて、図６のステップＳ３６、Ｓ３７及びＳ３８と同様に、ステップＳ４６、Ｓ４７及びＳ４８の処理を行う。
【００５４】
言い換えると、入出力代行手段１３は、仮想マシン１１に対応する専用仮想記憶領域１４に格納されたファイルＣが仮想マシン１１により更新された場合、更新されたファイルＣと同一内容のファイルが仮想マシン１１以外の複数の仮想マシンのそれぞれに対応する複数の専用仮想記憶領域に格納されているか否かを判定し、格納されていると判定した場合に、更新されたファイルＣを共用仮想記憶領域１５に格納すると共に、仮想マシン１１に対応する専用仮想記憶領域１４から更新されたファイルＣを削除し、複数の専用仮想記憶領域から当該同一内容のファイルを削除する。
【００５５】
このように、ファイル更新時に動的に共有ファイルの移動処理を行うことで、仮想記憶領域の使用量の削減を、仮想マシン１１及び１２の稼働中であっても速やかに実行することができる。
【００５６】
＜その他の発明の実施の形態＞
【００５７】
尚、元々、仮想マシンサーバにより１台の計算機内に複数のＯＳを構成することが可能となる。また、計算機の基本性能の向上やＨＤＤの大容量化も伴い、多数のＯＳが１台のサーバ内に構築されることが増えてきている。そのため、今後、仮想マシンサーバの構成は、ますます大規模となることが予想される。
【００５８】
仮想化サーバの利用方法としては、例えば、ゲストＯＳとしてクライアントＯＳ（例えば、Ｗｉｎｄｏｗｓ（登録商標）  ＸＰなど）を多数台構築し、各利用者が通常デスクトップＰＣ（Personal Computer）の代わりにゲストＯＳへ接続、使用することが考えられる。
【００５９】
このような場合、仮想マシンサーバの内部は、クライアントＯＳのシステムファイルが構築したゲストＯＳの台数分存在しており、数ギガバイト単位で重複したファイルが存在することとなる。アプリケーションも含めると、より多くの容量が重複していることとなる。また、重複したファイルは実行ファイル（拡張子exeのファイル）のように書き換えを行わないものも多い。そのため、読み出すだけの用途であれば、同じファイルを各ゲストＯＳで共有して参照することで、ディスク容量を効率的に使用するシステムが構築できる。
【００６０】
また、クライアントＰＣとして使用されるゲストＯＳは、同じＯＳである場合が多く、パッチなどの適用状況も共通していると考えられる。このため、１台の仮想マシンサーバ内には、ゲストＯＳの台数分の同一のファイルが存在していることになるが、ゲストＯＳは互いに独立して稼動しているため、同じファイルであるにも関わらず個々のゲストＯＳごとにファイルを確保する必要があった。
【００６１】
そこで、本発明により、ハードディスク内の容量を効率化した仮想マシンサーバ１を提供することができる。また、本発明の実施の形態２では、増そうマシンが共通に使用する同一ファイルを共用仮想記憶領域１５に置く。そして、各仮想マシンは、入出力代行手段１３により共用仮想記憶領域１５を参照することできる。そのため、仮想マシンサーバ１内のディスク容量を削減する効果がある。特に、仮想マシンの構築台数が多い場合は特に顕著な効果がある。
【００６２】
また、共用仮想記憶領域１５は、読み出し性能の高いフラッシュディスクを採用することが望ましい。これにより、さらに大きな効果が期待できる。
【００６３】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００６４】
１  仮想マシンサーバ
１１  仮想マシン
１１０  ファイルシステム
１１１  階層構造
１２  仮想マシン
１２０  ファイルシステム
１２１  階層構造
１３  入出力代行手段
１４  専用仮想記憶領域
１４１  階層構造
１５  共用仮想記憶領域
１５１  階層構造
１６  専用仮想記憶領域
１６１  階層構造
２１  ＣＰＵ
２２  ＲＡＭ
２３  ＲＯＭ
２４  ハードディスク
３１  仮想マシン制御プログラム
３２  共用仮想記憶領域
３３  専用仮想記憶領域
３４  専用仮想記憶領域
７  仮想マシンサーバ
７１  ゲストＯＳ
７１０  ファイルシステム
７１１  階層構造
７２  ゲストＯＳ
７２０  ファイルシステム
７２１  階層構造
７４  仮想ディスク
７４１  階層構造
７６  仮想ディスク
７６１  階層構造
【図１】
2010237742.tif 000003
【図２】
2010237742.tif 000004
【図３】
2010237742.tif 000005
【図４】
2010237742.tif 000006
【図５】
2010237742.tif 000007
【図６】
2010237742.tif 000008
【図７】
2010237742.tif 000009