(57)【要約】【課題】  仮想化マシン内のオペレーティングシステムおよび／またはアプリケーションプログラムを更新する場合、仮想マシンのイメージデータの更新にかかる時間を短くすること。【解決手段】  実施形態によれば、複数の仮想マシンが動作する計算機は、制限手段を具備する。制限手段は、前記複数の仮想マシン内の第１仮想マシンがオペレーティングシステムおよび／またはアプリケーションプログラムの更新を行う更新モードの場合に、前記第１仮想マシンの起動時に前記仮想マシンから認識できるＩ／Ｏデバイスを前記オペレーティングシステムおよび／またはアプリケーションプログラムに必要な第１Ｉ／Ｏデバイスに制限する。【選択図】    図３
2015038644.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンが動作する計算機であって、
前記仮想マシンがオペレーティングシステムおよび／またはアプリケーションプログラムの更新を行う更新モードの場合に、前記仮想マシンの起動時に前記仮想マシンから認識できるＩ／Ｏデバイスを前記オペレーティングシステムおよび／またはアプリケーションプログラムに必要な第１Ｉ／Ｏデバイスに制限する制限手段を具備する計算機。
【請求項２】
前記第１Ｉ／Ｏデバイスは、ＰＣＩデバイスと、ＰＩＯアクセスするＰＩＯデバイス、およびＭＭＩＯアクセスするＭＭＩＯデバイスを含む請求項１記載の計算機。
【請求項３】
メインメモリと、
前記更新モード時に、前記仮想マシン内のデータの変更部分および変更データを前記メインメモリ内の仮想ディスクに書き込む書き込み手段と、
前記メインメモリに書き込まれた前記変更部分および前記変更データに基づいて前記仮想マシンのイメージデータを変更する変更手段とを更に具備する請求項１に記載の計算機。
【請求項４】
前記計算機内では前記仮想マシンを含む複数の第２仮想マシンが動作する
請求項１記載の計算機。
【請求項５】
仮想マシンが動作する計算機における仮想マシンの更新方法であって、
前記複数の仮想マシン内の仮想マシンがオペレーティングシステムおよび／またはアプリケーションプログラムの更新を行う更新モードの場合に、前記仮想マシンの起動時に前記仮想マシンから認識できるＩ／Ｏデバイスを前記オペレーティングシステムおよび／またはアプリケーションプログラムに必要な第１Ｉ／Ｏデバイスに制限する
仮想マシンの更新方法。
【請求項６】
前記更新モード時に、前記仮想マシン内のデータの変更部分および変更データを前記メインメモリ内の仮想ディスクに書き込み、
前記仮想ディスクに書き込まれた前記変更部分および前記変更データに基づいて前記仮想マシンのイメージデータを変更する
請求項５記載の仮想マシンの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、仮想マシンが動作する計算機および仮想マシンの更新方法に関する。
【背景技術】
【０００２】
仮想マシンのオペレーティングシステム、アプリケーションソフトウェアの少なくとも一部を更新する場合、ストレージデバイスから仮想マシンのイメージデータをロードし、サーバ上でそのイメージデータを仮想化ソフトウェアによって起動し、Ｉ／Ｏデバイスエミュレーション、外部通信Ｉ／Ｏデバイスを経由して得た更新プログラムを仮想上で実行して、仮想マシンイメージ上のソフトウェアを書き換えていた。
【０００３】
各仮想マシンが持つディスク、ネットワークコントローラ等のデバイスは、仮想化ソフトウェアで提供されるデバイスエミュレーションにて仮想的に実現され、１つのホスト上で複数の仮想マシンが実行できる。実際のデータは、ストレージデバイスに保存されるが、各仮想マシンは、デバイスエミュレーションを経由して、さらに外部通信Ｉ／Ｏデバイス（ネットワークコントローラ、ディスクコントローラ）を介して、アクセスする。
【０００４】
Ｉ／Ｏデバイスがエミュレーションで実行されているため、仮想マシンのイメージデータのロード、起動、更新結果を書き込む事が遅く、仮想マシンが数十から数百ある場合に、１つ１つ仮想マシンを起動し、実行していくが、Ｉ／Ｏデバイスが重く、すべての仮想マシンイメージを更新するまで、たいへん時間がかかっていた。また、仮想マシンを実行するＣＰＵにも大きな負荷がかかり、複数台のサーバで同時実行するなど、機器のハードウェアのコスト高、消費電力の増大を招く恐れがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２２１６４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想化マシン内のオペレーティングシステムおよび／またはアプリケーションプログラムを更新する場合、仮想マシンのイメージデータを更新するのにかかる時間を短くしたいという要望があった。
【０００７】
本発明の目的は、仮想化マシン内のオペレーティングシステムおよび／またはアプリケーションプログラムを更新する場合、仮想マシンのイメージデータの更新にかかる時間を短くすることが可能な計算機および仮想マシンの更新方法を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、複数の仮想マシンが動作する計算機は、制限手段を具備する。制限手段は、前記複数の仮想マシン内の第１仮想マシンがオペレーティングシステムおよび／またはアプリケーションプログラムの更新を行う更新モードの場合に、前記第１仮想マシンの起動時に前記仮想マシンから認識できるＩ／Ｏデバイスを前記オペレーティングシステムおよび／またはアプリケーションプログラムに必要な第１Ｉ／Ｏデバイスに制限する。
【図面の簡単な説明】
【０００９】
【図１】実施形態のシステム構成の一例を示すブロック図。
【図２】実施形態のサーバの構成を示すブロック図。
【図３】実施形態の仮想マシン内のオペレーティングシステム、アプリケーションプログラムを更新する処理を説明すための図。
【図４】実施形態の仮想マシン内のオペレーティングシステム、アプリケーションプログラムを更新する処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、実施の形態について図面を参照して説明する。
【００１１】
図１は、仮想化システムの構成を示すブロック図である。  
計算機としてのサーバ１００内では、仮想マシンを実行するためのホストオペレーティングシステム１１０および仮想化ソフトウェア１２０が動作する。ストレージデバイス２００には、その仮想マシンの実行イメージデータ（仮想マシンイメージデータ）が格納されている。仮想マシンイメージデータは、仮想マシン１３１〜１３６毎に別々に存在する。各仮想マシン１３１〜１３６の実行結果は、画面に表示されるデータをＬＡＮで送信し、クライアント端末３０１〜３０６に表示される。クライアント端末３０１〜３０６に入力されたキーコードなどの入出力は、仮想マシン１３１〜１３６が受け処理する仕組みである。
【００１２】
個々の仮想マシン１３１〜１３６は、ネットワーク４１０を介して更新プログラム配信サーバ４００から更新プログラムを受信し、受信した更新プログラムを実行することで自信のイメージ、アプリケーションを更新する。
【００１３】
図２は、仮想マシンが動作するサーバの構成を示すブロック図である。
【００１４】
ストレージデバイス２００には、各仮想マシン１３１，１３２，…，１３ｎを実行するための仮想マシンイメージデータ２２１，２２２，…，２２ｎが格納されている。仮想マシン１３ｎは、通常の実行モードでは、デバイスエミュレーション５１０のＩ／Ｏデバイス５１１，５１２，…，５１ｎを使って実行され、外部に通信が必要ある場合に、実際の通信Ｉ／Ｏデバイス（ＡＴＡ（AT Attachment）コントローラ）５２１，通信Ｉ／Ｏデバイス（ネットワークコントローラ）５２２を経由して、ストレージデバイスやネットワークなどへアクセスする。
【００１５】
デバイスコントローラ５３０は、デバイスエミュレーション５２０内のＩ／Ｏデバイスの有効・無効の制御を行う。あるＩ／Ｏデバイスが無効された場合には、仮想マシンからそのデバイスを認識することができなくなる。
【００１６】
それぞれの仮想マシン１３１，１３２，…，１３ｎ内では、ストレージデバイス２００へのアクセスを行うための仮想ディスクドライバ１３１１，１３２１，…，１３ｎ１が実行される。これらの仮想ディスクドライバ１３１１，１３２１，…，１３ｎ１は、仮想マシン１３１，１３２，…，１３ｎからのストレージデバイス２００への書き込みが行われた場合には、メモリ５４０上にある差分ディスクファイル５４１に対して出力する。また、ストレージデバイス２００からの読み込みは、ストレージデバイス２００からの外部通信Ｉ／Ｏデバイス５２１を経由して、ストレージデバイス２００からデータをリードする。書き込んだ同じ場所をリードする場合には、メモリ上の差分ディスクファイル５４１からリードする。
【００１７】
仮想化ソフトウェア１２０は、各仮想マシン１３１，１３２，…，１３ｎの起動、停止の制御と、状態取得を行う。
【００１８】
ホストオペレーティングシステム１１０上で実行されるアプリケーションプログラムから各仮想マシンイメージ内のオペレーティングシステムおよび／またはアプリケーションを更新する指示があると、仮想化ソフトウェア１２０は、デバイスコントローラ５３０に対して、Ｉ／Ｏデバイスを更新モードで構成するよう定義する。デバイスコントローラ５３０は、更新モードの構成の指示があると、各Ｉ／Ｏデバイスのうち、更新を行うために必要な最小限のデバイスのみ有効にし（ネットワークコントローラおよび仮想ディスク、標準ディスプレイ、キーボード等）、その他のＩ／Ｏデバイスはすべて無効にする。この状態で仮想化ソフトウェア１２０は、仮想マシン１３ｎの起動の指示を仮想化ソフトウェア１２０に指示し、仮想マシン１３ｎが起動される。この起動の際、起動ディスクは、仮想ディスクドライバ１３ｎ１を使用して起動する。この仮想ディスクドライバ１３ｎ１は、仮想化ソフトウェア１２０を経由して外部通信Ｉ／Ｏデバイス５２１とデータを送受信を行い、ストレージデバイス２００から仮想マシンイメージデータ２２ｎを取得する。
【００１９】
起動中に発生した、ストレージデバイス２００への書き込みは、ストレージデバイス２００に直接書き込まない。所謂仮想ハードディスクと技術を利用して、ストレージデバイス２００上のデータが変更されるセクタを記録すると共に、セクタに記録されるデータをメモリ上の差分ディスクファイル５４１に書き込む。
【００２０】
起動後、仮想マシン１３ｎは、更新プログラム配信サーバ３００より、通信Ｉ／Ｏデバイス（ネットワークコントローラ）５２２経由で更新プログラムをダウンロードし、そのプログラムを実行する。実行により発生したストレージデバイス２００への書き込みは、すべてメモリ５４０上の差分ディスクファイル５４１に保存される。更新プログラム実行後、仮想マシン１３ｎはシャットダウンされる。
【００２１】
シャットダウン後、メモリにある仮想マシンイメージデータ２２ｎの差分ディスクファイル５４１を、ストレージデバイス２００に保存のため転送するか、もしくはサーバ１００のホストオペレーティングシステム１１０上で動作するマージプログラムが差分ディスクファイル５４１に応じて仮想マシンイメージのデータを書き換える。この繰り返しを、複数ある各仮想マシンに対して実行し、更新の適用を終える。
【００２２】
更新後は、仮想化ソフトウェア１２０は、仮想化ソフトウェア１２０を介してデバイスコントローラ５３０に対し、通常のＩ／Ｏモードに戻し、すべてのＩ／Ｏデバイスが使用できるように戻す。以後、起動した仮想マシンは通常のＩ／Ｏデバイスが見える状態で起動する。
【００２３】
次に、図３および図４を参照して、仮想マシン内のオペレーティングシステム、アプリケーションプログラムを更新する処理の手順を説明する。図３は、仮想マシン内のオペレーティングシステム、アプリケーションプログラムを更新する処理を説明すための図である。また、図４は、仮想マシン内のオペレーティングシステム、アプリケーションプログラムを更新する処理の手順を示すフローチャートである。
【００２４】
更新を実行することが仮想化ソフトウェア１２０に通知されると（ステップＡ１１）、仮想化ソフトウェア１２０は、デバイスコントローラ５３０に更新モードで仮想マシン１３ｎを起動することを通知する（ステップＡ１２）。デバイスコントローラ５３０は仮想化ソフトウェア１２０にＰＣＩデバイスの制限の開始を命令する（ステップＡ１３）。また、デバイスコントローラ５３０は、仮想化ソフトウェア１２０にＰＩＯ（Programmed input/output）デバイスおよびＭＭＩＯ（Memory-Mapped Input/Output）デバイスの制限の開始を命令する（ステップＡ１４）。仮想化ソフトウェア１２０は、ＰＣＩ制御部６０１とＰＩＯ／ＭＭＩＯ制御部６０２とに必要な特定のデバイスのみアクセスを通過させるように設定する。ＰＣＩ制御部６０１は、ＰＣＩコンフィグレーションレジスタへのアクセスを監視し、仮想マシン１３ｎからのアクセスで、更新モードで必要なＰＣＩデバイスへのアクセス以外は遮断する。その結果、仮想マシン１３ｎからはそのＰＣＩデバイスの存在が見えなくなる。また、ＰＩＯ／ＭＭＩＯ制御部６０２は、特定の許可されたデバイス以外は、Ｉ／Ｏデバイスにデータを渡さない。これにより、仮想マシン１３ｎは、更新モードで実行するに必要なデバイス以外は、存在を確認できず、それらのデバイスの初期化処理が必要ないので仮想マシン１３ｎが従来に比べ高速に起動できる。
【００２５】
仮想化ソフトウェア１２０は、仮想マシン１３ｎの起動を仮想化ソフトウェア１２０に命令する（ステップＡ１５）。仮想化ソフトウェア１２０は、仮想化ソフトウェア１２０からの命令に応じて仮想マシン１３ｎを起動する（ステップＡ１６）。仮想マシン１３ｎは、仮想ディスクドライバ１３ｎ１を使用してディスクアクセスを行い、起動する。その際に、従来のＩ／Ｏデバイスを経由せず、仮想化ソフトウェア１２０内のバックエンドドライバ６１１がそのディスク要求を受け、外部のストレージデバイスへの実ドライバ６２１へアクセスする。ディスクのライトの要求に対しては、メインメモリ上に配置した差分ディスクファイル５４１に書き込む。リード要求は、外部のストレージデバイス２００からデータを取得する。
【００２６】
仮想マシン１３ｎの更新が終了すると、仮想化ソフトウェア１２０は、更新終了を検知し、仮想化ソフトウェア１２０に仮想マシン１３ｎを終了させる。仮想マシン１３ｎの終了後（ステップＡ１９，２０）、仮想化ソフトウェア１２０は、デバイスコントローラ５３０に更新モードの終了、且つ通常モードの開始を通知する（ステップＡ２１）。
【００２７】
仮想化ソフトウェア１２０は、更新をストレージデバイス２００にある仮想マシンイメージデータ２２ｎに適用する場合には、ホストＯＳ１１０上で動作する差分マージアプリケーションプログラム（差分アプリ）６３１により、メモリ上の差分ディスクファイル５４１の差分イメージと、ストレージデバイス２００内の仮想マシンイメージデータ２２ｎとをセクタ単位でマージを行う（ステップＡ２２）。
【００２８】
デバイスコントローラ５３０は、ＰＣＩ制御部６０１およびＰＩＯ／ＭＭＩＯ制御部６０２にＰＣＩ制御およびＰＩＯ／ＭＭＩＯ制御の終了を命令する（ステップＡ２３，２４）。
【００２９】
以上の処理により、従来、仮想マシンが実行していた更新プログラムによる更新よりも、すべて更新されたイメージを一度にマージすることで更新時間が短くなる。また、ディスクのＩ／Ｏエミュレーションを経由しないので、ディスクのアクセス性能が向上しており、この状態で更新プログラムが動作し、書き込みについては、メモリへのアクセスなので、従来の更新にくらべＣＰＵ負荷は３０％以上、低減する。
【００３０】
なお、クライアントコンピュータによって、更新を行っていることを実行してもよい。
【００３１】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００３２】
１３ｎ…仮想マシン，１３ｎ１…仮想ディスクドライバ，２２ｎ…仮想マシンイメージデータ，１１０…ホストオペレーティングシステム，１２０…仮想化ソフトウェア，１３１．１３２…仮想マシン，２００…ストレージデバイス，３００…更新プログラム配信サーバ，３０１〜３０６…クライアント端末，４００…更新プログラム配信サーバ，４１０…ネットワーク，５１０…デバイスエミュレーション，５１１…Ｉ／Ｏデバイス，５２０…デバイスエミュレーション，５２１，５２２…通信Ｉ／Ｏデバイス，５３０…デバイスコントローラ，５４０…メモリ，５４１…差分ディスクファイル，６０１…ＰＣＩ制御部，６０２…ＭＭＩＯ制御部。
【図１】
2015038644.tif 000003
【図２】
2015038644.tif 000004
【図３】
2015038644.tif 000005
【図４】
2015038644.tif 000006
【手続補正書】
【提出日】平成23年10月3日(2011.10.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想マシンが動作する計算機であって、
前記仮想マシンからオペレーティングシステムおよび／またはアプリケーションプログラムを更新する時の必要性に応じて、それぞれのＩ／Ｏデバイスのアクセスの有効／無効の設定を行う第１の制御手段と、
前記仮想マシンが前記オペレーティングシステムおよび／または前記アプリケーションプログラムの更新を行う更新モードの場合に、前記第１の制御手段の設定に応じて、前記仮想マシンとアクセス無効と決定された前記Ｉ／Ｏデバイスとの間のアクセスを無効とする設定を行うことで、前記アクセス無効とされたＩ／Ｏデバイスにアクセスせずに、前記仮想マシンを起動する第２の制御手段と
を具備する計算機。
【請求項２】
前記第１の制御手段が有効とするデバイスは、ＰＣＩデバイスと、ＰＩＯアクセスするＰＩＯデバイス、およびＭＭＩＯアクセスするＭＭＩＯデバイスを含む請求項１記載の計算機。
【請求項３】
前記第１の制御手段が有効とするデバイスは、ネットワークコントローラ、仮想ディスク、標準ディスプレイ、およびキーボードを含む請求項１記載の計算機。
【請求項４】
前記仮想マシンが動作する前記計算機は、
メインメモリと、
前記更新モード時に、前記仮想マシン内のデータの変更部分および変更データを前記メインメモリ内の仮想ディスクに書き込む書き込み手段と、
前記メインメモリに書き込まれた前記変更部分および前記変更データに基づいて前記仮想マシンのイメージデータを変更する変更手段と
を更に具備する請求項１に記載の計算機。
【請求項５】
前記計算機は、前記仮想マシンを含む複数の第２仮想マシンが動作する
請求項１記載の計算機。
【請求項６】
前記第２の制御手段は、前記仮想マシンがオペレーティングシステムおよび／またはアプリケーションプログラムの更新が終了した後に、前記仮想マシンを終了させ、
前記仮想マシンが終了した後に、前記第１の制御手段は、前記仮想マシンから全てのＩ／Ｏデバイスへのアクセスを有効にする請求項６に記載の計算機。
【請求項７】
仮想マシンが動作する計算機における仮想マシンの更新方法であって、
前記仮想マシンからオペレーティングシステムおよび／またはアプリケーションプログラムを更新する時の必要性に応じて、それぞれのＩ／Ｏデバイスへのアクセスの有効／無効の設定を行い、
前記仮想マシンが前記オペレーティングシステムおよび／または前記アプリケーションプログラムの更新を行う更新モードの場合に、前記仮想マシンとアクセス無効と決定された前記Ｉ／Ｏデバイスとの間のアクセスを無効とする設定を行うことで、前記アクセス無効とされたＩ／Ｏデバイスにアクセスせずに前記仮想マシンを起動する
仮想マシンの更新方法。
【請求項８】
前記オペレーティングシステムおよび／または前記アプリケーションプログラムの更新モード時に、前記仮想マシン内のデータの変更部分および変更データをメインメモリ内の仮想ディスクに書き込み、
前記仮想ディスクに書き込まれた前記変更部分および前記変更データに基づいて前記仮想マシンのイメージデータを変更する
請求項７記載の仮想マシンの更新方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
実施形態によれば、仮想マシンが動作する計算機は、第1の制御手段と、第２の制御手段とを具備する。前記第１の制御手段は、前記仮想マシンから前記オペレーティングシステムおよび／またはアプリケーションプログラムを更新する時の必要性に応じて、それぞれのＩ／Ｏデバイスのアクセスの有効／無効の設定を行う。第２の制御手段は、前記仮想マシンがオペレーティングシステムおよび／またはアプリケーションプログラムの更新を行う更新モードの場合に、前記第１の制御手段の設定に応じて、前記仮想マシンとアクセス無効と決定された前記Ｉ／Ｏデバイスとの間のアクセスを無効とする設定を行うことで、前記アクセス無効とされたＩ／Ｏデバイスにアクセスせずに、前記仮想マシンを起動する。