JP2007066265A - 計算機装置及び仮想マシン提供方法 - Google Patents

計算機装置及び仮想マシン提供方法 Download PDF

Info

Publication number
JP2007066265A
JP2007066265A JP2005255173A JP2005255173A JP2007066265A JP 2007066265 A JP2007066265 A JP 2007066265A JP 2005255173 A JP2005255173 A JP 2005255173A JP 2005255173 A JP2005255173 A JP 2005255173A JP 2007066265 A JP2007066265 A JP 2007066265A
Authority
JP
Japan
Prior art keywords
virtual machine
virtual
memory
memory area
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005255173A
Other languages
English (en)
Inventor
Hiroshi Mine
博史 峯
Daisuke Yokota
大輔 横田
Tatsutoshi Sakuraba
健年 櫻庭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2005255173A priority Critical patent/JP2007066265A/ja
Publication of JP2007066265A publication Critical patent/JP2007066265A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 同一のスナップショットイメージから派生するゲストOSを1台の実マシン上の複数の仮想マシンで実行させる場合において、著しい性能低下の可能性なく同時に実行可能な最大数を増加させる計算機装置を提供する。
【解決手段】 CPU201と、I/Oインタフェース202と、記憶メモリ203と、プログラム記憶領域204とを備え、同一スナップショットイメージから複数の仮想マシンを復元し実行する計算機装置200であって、2以上の仮想マシン間で共有するスナップショットイメージをホストOSのメモリ領域100に保持し、共有したスナップショットイメージ104に対する書き込みメモリアクセスの検出を行い、書き込みメモリアクセスを検出した場合に仮想マシンに個別に割り当てられる差分メモリ領域109にスナップショットイメージの部分領域を複写する。
【選択図】 図1

Description

本発明は、仮想マシン技術、特に、仮想マシン間でスナップショットメモリを共有する仮想サーバ提供方式に関する。
計算機システムにおいて、ソフトウェアによって計算機のハードウェア資源をエミュレートし、仮想的な計算機環境を提供する仮想マシン技術が知られている。仮想マシン技術において、オペレーティングシステム(OS)および仮想マシンアプリケーションソフトウェアによって提供される仮想的な計算機は、現実の計算機すなわち実マシンに対して、仮想マシンと呼ばれる。通例、実マシン上で動作するOSはホストOS、仮想マシン上で動作するOSはゲストOSと呼ばれる。ホストOSおよび仮想マシンアプリケーションによって実現される、仮想マシンへの実マシンのハードウェア資源割り当てを制御する機構は、仮想マシンモニタと呼ばれる。換言すれば、仮想マシンは、仮想マシンモニタによって制御される。仮想マシンモニタが管理する実マシンのハードウェア資源には、CPU(中央処理装置)処理時間、割り込み、記憶容量等がある。
ホストOS上で複数の仮想マシンアプリケーションを時分割(タイムシェアリング)実行機能を用いて実行し、複数の仮想マシンを提供することにより、ホストOSの1台の実マシン上で同時に複数のゲストOSを実行する方式が実施されている。また、ゲストOSの実行メモリ内容を仮想マシンの実行状態と共に記憶領域にスナップショットイメージとして保存し、任意のタイミングで仮想マシン環境に復元することにより、ゲストOSの状態をスナップショットイメージ取得時の状態から再開する方式が実施されている。例えば、前記仮想マシン技術を応用した、フォーキングおよびマイグレーションの概念を仮想マシンに適応するための方法が、特許文献1に開示されている。
また、OS上でアプリケーションプロセスの複製分岐(フォーク)を行う際に処理効率を向上させる方式として、コピーオンライト方式が、非特許文献1に記載されている。
特開2004−133894号公報(図4) Uresh Vahalia著、「UNIX(登録商標)Internals: The New Frontiers」、Prentice Hall、Oct. 1995(p.452-p.472)
かかる従来の手法において、1台の実マシン上で複数の仮想マシンを構成し、複数のゲストOSを同時に実行させる場合、ゲストOS間でお互いのメモリ内容を破壊しあわないように、各仮想マシンには実マシンの独立したメモリ領域を割り当てる必要があった。例えば、主記憶として2GBのRAM(Random Access Memory)を搭載する実マシンにおいて、ゲストOSに512MBのRAMを提供する仮想マシンを構成する場合、ホストOSおよび仮想マシンアプリケーションが使用するメモリ領域を考慮すると、著しい性能低下の可能性なく同時に実行させることができる仮想マシンの最大数は3台である。ホストOSの仮想記憶機能を利用する場合、実メモリ資源以上のメモリ容量を仮想マシンに割り当てることが可能であるが、ゲストOSおよび実行されるアプリケーションによっては、主記憶と補助記憶でメモリ内容の退避(スワップアウト)と復帰(スワップイン)を繰り返すスラッシングが発生し、システム全体の処理性能が著しく低下する可能性がある。
従って、同一のゲストOSのスナップショットイメージを複製して複数の仮想マシンで実行する場合においても、各仮想マシンにはスナップショット取得時と同容量のメモリ資源を割り当てる必要があり、1台の実マシン上で著しい性能低下の可能性なく同時に実行させることができる仮想マシンの最大数は、高々、実メモリ資源の容量を仮想マシンに割り当てるメモリ容量で除した商に制限される。
本発明の目的は、同一のスナップショットイメージから派生するゲストOSを1台の実マシン上の複数の仮想マシンで実行させる場合において、著しい性能低下の可能性なく同時に実行可能な最大数を増加させることにある。
前記課題を解決するため、本発明は、スナップショットイメージに格納されるゲストOSを複数の異なる仮想マシンで実行する場合において、複製元となる仮想マシンの状態とゲストOSのメモリ内容を格納するスナップショットイメージをホストOSのメモリ空間に保持し、仮想マシン間で共有する。仮想マシンモニタは、各仮想マシンのメモリ書き込みアクセスを監視し、スナップショットイメージ領域に対する書き込みアクセスを検出した場合に、予め確保しておいたメモリ領域、または、ホストOSから新たに確保したメモリ領域に、書き込み対象となった領域の内容を複写する。複写が完了した後、仮想マシンモニタは、複製したメモリ領域に対して書き込み内容を反映し、当該仮想マシンに関連付ける。以後、当該仮想マシンによる当該領域へのメモリアクセスは、仮想マシンモニタによって複製された領域に対して行われる。従って、スナップショットイメージの内容は改変されることはない。各仮想マシンには、実行状態とともに、スナップショットイメージとの差分を格納するメモリ領域が関連付けられ、保持される。仮想マシンモニタは、各仮想マシンに割り当てる差分格納用メモリ領域の量を所定の量に制限することにより、仮想マシンの実行を制御する。差分メモリ制限を超過した仮想マシンは、実行を中断または破棄される。仮想マシンの破棄は、当該仮想マシンに関連付けられている実行状態と差分メモリの内容を破棄することで行う。従って、仮想マシンの停止により、スナップショットイメージおよび他の仮想マシンが保持する実行状態が影響を受けることはない。
すなわち、本発明は、CPUと、I/Oインタフェースと、記憶メモリと、プログラム記憶領域とを備え、同一スナップショットイメージから複数の仮想マシンを復元し実行する計算機装置であって、2以上の仮想マシン間で共有するスナップショットイメージをホストOSのメモリ領域に保持し、共有したスナップショットイメージに対する書き込みメモリアクセスの検出を行い、書き込みメモリアクセスを検出した場合に当該仮想マシンに個別に割り当てられる差分メモリ領域にスナップショットイメージの部分領域を複写する計算機装置である。
本発明によれば、同一のスナップショットイメージから派生するゲストOSを1台の実マシン上の複数の仮想マシンで実行させる場合において、仮想マシン間でメモリ上のスナップショットイメージを共有し、各仮想マシンには、実行状態およびスナップショットイメージに対する差分のみを格納するメモリ領域を割り当てることにより、仮想マシンあたりに必要なメモリ資源量を削減し、著しい性能低下の可能性なく同時に実行可能な最大数を増加させることができる。
本発明を実施するための最良の形態を説明する。
本発明の計算機装置及び仮想マシン提供方法の実施例について、図面を用いて説明する。
実施例1を説明する。本実施例は、本発明の第1の実施の形態であり、使い捨て仮想Webサーバシステムである。本実施例では、本発明をWebサーバシステムに適用し、仮想マシン上でWebサーバアプリケーションを実行することにより、仮想的なWebサーバを提供する。仮想マシンモニタは、Webサーバのサービス開始直前の状態で仮想マシンのスナップショットを取得し、取得したスナップショットをもとに複数の仮想マシンを実行することにより、ひとつの計算機装置上で互いに独立な仮想Webサーバを複数提供する。セッションが完了すると、仮想マシンモニタは使い終わった仮想Webサーバを仮想マシンごと破棄する。
図1は、本実施例の仮想マシンアプリケーションが動作する計算機装置のメモリ領域の内訳を示す。計算機装置すなわち実マシンのメモリ領域100は、ホストOSにより管理され、ホストOSを使用する領域101と、仮想マシンアプリケーションが使用する領域102に分けられる。ホストOS使用領域101には、ホストOSのプログラムコードおよびホストOS自身の実行に必要な情報が格納される。仮想マシンアプリケーション使用領域102は、仮想マシンアプリケーションの本体すなわち仮想マシンモニタによって管理され、仮想マシンモニタが使用する領域103、仮想マシン上で実行されるゲストOSが使用する領域すなわちゲストOSのメモリ内容のスナップショットイメージ使用領域104、各仮想マシンが個別に使用する領域105が含まれる。仮想マシンモニタ使用領域103には、仮想マシンアプリケーションのプログラムコードおよび仮想マシンモニタの内部変数等の情報が格納される。スナップショットイメージ使用領域104には、ゲストOS自身が使用するメモリ領域106と、ゲストOS上で動作するWebサーバアプリケーションが使用する領域107が含まれる。仮想マシン個別使用領域105には、仮想マシンの実行状態が使用する領域108と、差分メモリの領域109が含まれる。仮想マシン状態領域108には、仮想マシン実行のための情報、例えば、アドレス変換テーブル等、および、仮想マシンが提供する仮想ハードウェアの状態、例えば、仮想CPUのレジスタ内容、仮想ネットワークデバイスのパケット送受信バッファの内容等が格納される。差分メモリ領域109には、スナップショットイメージ104に対するメモリ内容の差分が格納される。なお、これらのメモリ領域は、計算機装置がページング等の仮想記憶機能を備えている場合、仮想アドレス空間において論理的に連続していればよく、実メモリ上で物理的に連続している必要はない。
図2は、本実施例の仮想マシンアプリケーションが実行される計算機装置の構成を示す。計算機装置200は、CPU(Central Processing Unit)201、I/Oインタフェース202、主記憶メモリ203、プログラム記憶領域204からなる。CPU201は、プログラム記憶領域204から主記憶メモリ203へプログラムコードを読み込み、実行することにより、計算機装置200の動作を制御する。I/Oインタフェース202は、周辺機器を接続するインタフェースを提供する。I/Oインタフェース202を介して接続される周辺機器には、例えば、インターバルタイマ、キーボード、ネットワークインタフェースカード等がある。主記憶メモリ203は、書き換え可能なRAM(Random Access Memory)であり、CPU201によって実行されるプログラムコードおよび実行時のデータを格納する。主記憶メモリ203は、図1における実マシンのメモリ領域100に対応する。プログラム格納領域204は、不揮発性のROM(Read Only Memory)またはハードディスクドライブ等であり、計算機装置200上で実行されるホストOSプログラム205、仮想マシンアプリケーションプログラム206、仮想マシン上で実行されるゲストOSプログラム207、サーバアプリケーションプログラム208を格納する。
図3は、本実施例の仮想マシンアプリケーションすなわち仮想マシンモニタが提供する仮想マシンの構成を示す。仮想マシン300は、仮想CPU301、仮想I/Oインタフェース302、仮想主記憶メモリ303、仮想プログラム記憶領域304からなる。仮想CPU301は、仮想マシンモニタよってエミュレートされる仮想的なCPUであり、仮想プログラム記憶領域304から仮想主記憶メモリ303へプログラムコードを読み込み、実行する。実際には、計算機装置200上のCPU201で実行される仮想マシンアプリケーションプログラム206によって、プログラムコードの実行がエミュレートされる。仮想I/Oインタフェース302は、仮想マシンモニタが提供する仮想的な周辺機器を接続するインタフェースを提供する。ゲストOSは、例えば、仮想I/Oインタフェース302を介して接続される仮想ネットワークインタフェースカードを用いて、仮想マシンモニタおよびホストOSと通信する。仮想マシンモニタは、仮想I/Oインタフェース302を流れる情報を監視することにより、仮想マシンと外部とのやり取りを完全に把握することができる。仮想CPU301および仮想I/Oインタフェース302の状態は、仮想マシンの実行状態であり、図1における仮想マシンの実行状態108に格納される。仮想主記憶メモリ303は、仮想CPU301によって実行されるプログラムコードおよび実行時のデータを格納する。実際には、仮想主記憶メモリ303は、図2における主記憶メモリ203の一部であり、図1におけるスナップショットイメージ104と差分メモリ109により構成される。仮想プログラム記憶領域304は、ゲストOSプログラム305およびサーバアプリケーションプログラム306を格納する。実際には、仮想プログラム記憶領域304は、図2におけるプログラム記憶領域204の一部であり、ゲストOSプログラム305はゲストOSプログラム207と、サーバアプリケーションプログラム306はサーバアプリケーションプログラム208と、それぞれ同一である。なお、ホストOSプログラム205および仮想マシンアプリケーションプログラム206は、CPU201に直接実行されるため、CPU201の命令セット(機械語)で記述されている必要があるが、ゲストOSプログラム207およびサーバアプリケーションプログラム208は、仮想マシンアプリケーションプログラムがエミュレートする仮想CPU301の命令セットで記述されていればよく、必ずしもCPU201の命令セットで記述されている必要はない。
図4は、本実施例の仮想マシンサーバの処理手順を示す。まず、計算機装置上でホストOSを起動する(ステップ400)。次に、ホストOS上で仮想マシンアプリケーションを起動する(ステップ401)。このとき、仮想マシンアプリケーションは、仮想マシンモニタを初期化し、仮想マシンアプリケーション内のスナップショット領域でゲストOSの実行を開始する。ゲストOSは、起動後、サーバアプリケーションを起動し、サービス開始の準備をする。サービス開始の準備が完了すると、仮想マシンアプリケーションは、ゲストOSを実行する仮想マシンのスナップショットを取得する(ステップ402)。ここで、サーバアプリケーションのサービス開始準備の完了は、サーバアプリケーションを改変して、例えば、サービス開始準備完了時に特定のパケットを送信するようにし、仮想マシンモニタによって当該パケットの送信を検出することにより判定できる。サーバアプリケーションを改変しなくとも、例えば、ホストOS上のダミークライアントアプリケーションから仮想マシンに対して接続要求を発行し、期待した応答が得られるまで一定間隔で接続要求を繰り返すことで判定できる。また、単純に、サーバアプリケーションの起動に必要な時間を測定しておき、起動に必要な時間を待つようにしてもよい。スナップショット取得後、仮想マシンアプリケーションは、サービス対象となる外部のクライアントからの接続要求を受け付ける(ステップ403)。接続要求を受け付けると、仮想マシンアプリケーションは、仮想マシンに個別のメモリ領域を割り当て、新たな仮想マシンのインスタンスを生成する(ステップ404)。以後、当該接続のパケットは、仮想マシンモニタによってネットワークアドレスが書き換えられ、当該仮想マシンに転送される。仮想マシンモニタは、スナップショットおよび仮想マシン個別のメモリ領域を用いて仮想マシンを実行する(ステップ405)。仮想マシンでは、ゲストOSの実行が再開され、クライアントからの要求が処理される。クライアントからの要求に応答を返し、セッションが終了すると、仮想マシンモニタは、当該仮想マシンを破棄し、仮想マシン個別のメモリ領域を解放する(ステップ406)。ここで、セッションの終了の判定には、サービス開始準備完了の判定と同様に、サーバアプリケーションを改変して、例えば、セッション終了時に特定のパケットを送信するようにし、仮想マシンモニタによって当該パケットの送信を検出することにより判定できる。サーバアプリケーションを改変しなくとも、例えば、仮想マシンモニタによって、接続切断に用いられるパケットを検出し、クライアント、仮想マシン間の接続切断を以ってセッションの終了と判定してもよい。仮想マシンアプリケーションは、仮想マシンの破棄が終了すると、接続受付処理(ステップ403)に戻り、次の接続を処理する。以上の処理手順において、仮想マシンモニタは時分割または並列実行を用いることによって複数の仮想マシンを同時に実行することができる。従って、仮想マシンアプリケーションは、仮想マシンの生成(ステップ404)後、仮想マシンモニタに対して生成した仮想マシンの実行をスケジューリング後、接続受付処理(ステップ403)に戻り、処理を繰り返すことにより、仮想マシンに個別に割り当てるメモリ領域の残量が許す限り、複数の仮想マシンを生成し、同時に実行させることができる。仮想マシンモニタが複数の仮想マシンを同時に実行する方式には、例えば、ホストOSの機能を利用し、インターバルタイマ機能を用いて時分割で次の仮想マシンの処理に移る方式、マルチスレッド機能を用いて仮想マシンを並列実行する方式がある。他にも、例えば、仮想マシンモニタで各仮想CPUの命令実行数を数え、エミュレートした命令数がある閾値を越えたのを契機に実行する仮想マシンを切り替える方式であってもよい。
図5は、本実施例の仮想マシンモニタがメモリアクセス命令の実行をエミュレートする際に用いるアドレス変換テーブルを示す。アドレス変換テーブル500は、実マシン上の主記憶メモリの領域を表す実メモリアドレスとその領域が複製されたものかどうかを表す複写済みフラグを格納し、仮想マシン上の仮想主記憶メモリのアドレスをインデックスに参照される。例えば、メモリ領域を64KB単位で管理する場合、各メモリ領域は、メモリアドレスの下位16ビットを切り捨てた値で一意に区別することができ、512MBのメモリ空間は13ビットで、2GBのメモリ空間は15ビットで、それぞれ表すことができる。今、主記憶メモリとして2GBのメモリを搭載する実マシン上で、仮想主記憶メモリとして512MBのメモリを割り当てた仮想マシンを構成する場合を考える。仮想主記憶メモリは、実マシンの主記憶メモリ上に配置されるが、メモリ領域を64KB単位に分割して管理する場合、その対応関係は、13ビットの仮想主記憶メモリ領域のアドレスを、15ビットの主記憶メモリ領域のアドレスに変換することで得られる。実際に29ビットの仮想主記憶メモリアドレスから31ビットの実メモリアドレスを得るには、仮想主記憶メモリアドレスの上位13ビットをインデックスとしてテーブルを参照することで15ビットの主記憶メモリ領域のアドレスを得、得られた値を上位15ビットとして仮想主記憶メモリアドレスの下位16ビットとあわせればよい。この変換に必要なテーブルすなわちアドレス変換テーブルは、15ビットの実メモリアドレスに複写済みフラグ1ビットを加えた2バイトのエントリが、13ビットの仮想主記憶メモリ領域のアドレス分すなわち8192個あればよく、実メモリ上に16KBの領域を占める。アドレス変換テーブルは、仮想マシンの生成時に、複写済みフラグが全てオフで仮想主記憶メモリを実メモリ上のスナップショットイメージに写像(マッピング)した状態で生成され、仮想マシンの実行状態を表す情報のひとつとして、仮想マシンに個別のメモリ領域に格納される。
図6は、本実施例の仮想マシンモニタが仮想マシンを実行する処理手順を示す。仮想マシンモニタは、仮想マシンに個別の領域に格納される仮想マシンの状態を読み込み、仮想マシンの実行状態を復元する(ステップ600)。復元した仮想マシンの仮想CPUのプログラムカウンタレジスタの値を元に、次に実行をエミュレートすべき命令を読み込む(ステップ601)。このとき、命令は、実際にはプログラムカウンタレジスタが指し示す仮想主記憶メモリのアドレスを、アドレス変換テーブルを用いて変換した実メモリアドレスから読み込まれる。仮想マシンモニタは、読み込んだ命令がメモリアクセス命令であるかを判定する(ステップ602)。命令が、メモリアクセスではない演算命令等であった場合は、命令実行エミュレート(ステップ608)に処理を進める。命令が、メモリアクセス命令であった場合は、書き込み命令であるかどうかを判定する(ステップ603)。命令が、書き込み命令ではない、すなわち、読み込み命令であった場合は、アドレス変換(ステップ607)に処理を進める。命令が、書き込み命令であった場合は、アクセス対象の仮想主記憶メモリ領域に対応するアドレス変換テーブルの複写済みフラグを参照し、対象となるメモリ領域が仮想マシンに個別の差分メモリ領域に複写されたものであるかを判定する(ステップ604)。複写済みフラグがセットされている場合は、アドレス変換(ステップ607)に処理を進める。複写済みフラグがセットされていない場合は、仮想マシンに個別の差分メモリ領域から未使用の領域を割り当て、アドレス変換テーブルから対象となる仮想主記憶メモリ領域に対応する実メモリ領域のアドレスを参照し、スナップショットイメージの当該領域のメモリ内容を差分メモリ領域に複写する(ステップ605)。複写が完了すると、アドレス変換テーブルの実メモリアドレスを差分メモリ領域に差し替え、複写済みフラグをセットし、アドレス変換テーブルを更新する(ステップ606)。以後、当該仮想主記憶メモリ領域に対するメモリアクセスは、差分メモリ領域に対して行われることになる。次に、アドレス変換テーブルを参照し、アクセス対象の仮想主記憶メモリアドレスを、実メモリアドレスに変換する(ステップ607)。実際のメモリアクセスは、ここで得られた実メモリアドレスに対して行われる。最後に、命令の実行をエミュレートし、仮想マシンの状態を更新する(ステップ608)。当該命令の実行を完了すると、更新された仮想CPUのプログラムカウンタレジスタの値を元に、次の命令の処理に移る(ステップ601)。以上の処理手順により、本実施例の仮想マシンモニタによって複数の仮想マシンを同時に実行する場合においても、仮想マシン間で共有するスナップショットのメモリ内容は保護され、スナップショットに対する差分のみが各仮想マシンの差分メモリ領域に格納される。
図7は、本実施例の使い捨て仮想Webサーバの接続構成を示す。計算機装置700は、複数のクライアント704と、インターネット705を介して接続され、ストレージ装置706と、SAN(Storage Area Network)709を介して接続される。計算機装置700上では、仮想マシンアプリケーションが動作し、仮想マシンモニタ701を提供する。仮想マシンモニタ701は、複数の仮想マシン環境を提供する。仮想マシン702上ではWebサーバアプリケーションが動作し、仮想Webサーバ703を提供する。仮想Webサーバ703により、Webサービスが提供される。ストレージ装置706は、記憶媒体としてディスク装置707を備え、ディスク装置707には、コンテンツ708が格納される。仮想マシンモニタ701は、図4の手順に従い、Webサーバアプリケーションを実行するゲストOSのスナップショットを取得する。仮想マシンモニタ701は、クライアント704からの接続要求がある毎にスナップショットを元に仮想マシン702を生成し、図6の手順に従い、仮想マシン702の実行を再開する。仮想マシンモニタ701においてNAT(Network Address Translation)を行うことにより、仮想マシン702上の仮想Webサーバ703は、インターネット705を介してクライアント704から透過的にアクセスされる。仮想マシン702は、必要に応じて仮想マシンモニタ701を介してストレージ装置706にアクセスし、ディスク装置707に格納されるコンテンツ708を読み込み、クライアント704にサービスを提供する。ここで、仮想マシン702からストレージ装置706へのアクセスは、仮想マシンモニタ701により完全に把握できる。仮想マシンモニタ701は、図4の手順に従い、セッションの終了を検知すると、使い終わった仮想Webサーバ703を仮想マシン702ごと破棄する。従って、仮想Webサーバ703は、セッション毎に使い捨てられることになり、仮想マシン702の実行を継続することによるスナップショットとの差分の肥大化を防止し、仮想マシン環境あたりの必要なメモリ資源量を抑制することができる。
以上に説明したように、本発明によれば、Webサーバアプリケーションの不具合によるサービス停止、不正侵入によるコンテンツの改竄等の影響を最小限に抑えるために、個々のクライアントに対して個別の仮想Webサーバを割り当てる場合においても、仮想マシン間でメモリ上のスナップショットイメージを共有し、各仮想マシンには差分メモリ領域のみを割り当てることにより、仮想マシンあたりに必要なメモリ資源量を削減し、ひとつの計算機装置で同時にサービス提供可能なクライアント数の最大値を増加させることができる。
なお、上記実施例では、本発明が特定の計算機アーキテクチャに依存しないことを示すため、実マシンのメモリアクセス保護機能を特に利用せずに仮想マシンを構成し、実マシンのCPUが採用するのと異なる命令セットで記述されたプログラムコードの実行を仮想マシンモニタによってエミュレートする場合について説明した。計算機装置が対応しているならば、本発明を、計算機装置が提供するメモリアクセス保護機能、CPUエミュレーション補助機能等を用いて実施してもよい。
また、スナップショットイメージは、1つに限られず、複数の仮想マシンのうちの2以上の仮想マシン間で共有する毎に、別なスナップショットイメージとすることも可能である。
以上実施例で説明したが、本発明の他の実施形態1は、前記仮想マシンに個別に割り当てられる差分メモリ領域に複写したスナップショットイメージの部分領域へのメモリアクセスの検出を行い、該メモリアクセスを検出した場合に該メモリアクセスを前記差分メモリ領域に対して行う計算機装置である。
また、本発明の他の実施形態2は、スナップショットイメージと、差分メモリと仮想マシン状態をそれぞれ有する複数の仮想マシンと、仮想マシンモニタとを備える計算機装置である。
そして、本発明の他の実施形態3は、仮想マシン上でサーバアプリケーションの実行準備が完了した時点でスナップショットイメージを取得し、クライアントからの接続要求に応じて仮想マシンを復元し、クライアントへのサービスを提供し、セッションが終了した時点で仮想マシンを破棄する計算機装置である。
更に、本発明の他の実施形態4は、仮想マシンとクライアントとの接続切断を元にセッションの終了を判定する計算機装置である。
また、本発明の他の実施形態5は、仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを停止することを特徴とする計算機装置である。
そして、本発明の他の実施形態6は、仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを破棄する計算機装置である。
更に、本発明の他の実施形態7は、CPUと、I/Oインタフェースと、記憶メモリと、プログラム記憶領域とを備える計算機装置における同一スナップショットイメージから複数の仮想マシンを提供する方法であって、2以上の仮想マシン間で共有するスナップショットイメージをホストOSのメモリ領域に保持し、共有したスナップショットイメージに対する書き込みメモリアクセスの検出を行い、書き込みメモリアクセスを検出した場合に当該仮想マシンに個別に割り当てられる差分メモリ領域にスナップショットイメージの部分領域を複写する仮想マシン提供方法である。
また、本発明の他の実施形態8は、前記仮想マシンに個別に割り当てられる差分メモリ領域に複写したスナップショットイメージの部分領域へのメモリアクセスの検出を行い、該メモリアクセスを検出した場合に該メモリアクセスを前記差分メモリ領域に対して行う仮想マシン提供方法である。
そして、本発明の他の実施形態9は、OSのメモリ領域に、スナップショットイメージ、差分メモリと仮想マシン状態をそれぞれ有する複数の仮想マシン、及び仮想マシンモニタとを設ける仮想マシン提供方法である。
更に、本発明の他の実施形態10は、仮想マシン上でサーバアプリケーションの実行準備が完了した時点でスナップショットイメージを取得し、クライアントからの接続要求に応じて仮想マシンを復元し、クライアントへのサービスを提供し、セッションが終了した時点で仮想マシンを破棄する仮想マシン提供方法である。
また、本発明の他の実施形態11は、仮想マシンとクライアントとの接続切断を元にセッションの終了を判定する仮想マシン提供方法である。
そして、本発明の他の実施形態12は、仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを停止する仮想マシン提供方法である。
更に、本発明の他の実施形態13は、仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを破棄する仮想マシン提供方法である。
実施例1の計算機装置のメモリ領域の内訳の説明図。 実施例1の計算機装置の構成の説明図。 実施例1における仮想マシンモニタが提供する仮想マシンの構成の説明図。 実施例1における仮想マシンサーバの処理手順の説明図。 実施例1における仮想マシンモニタがメモリアクセス命令の実行をエミュレートする際に用いるアドレス変換テーブルの説明図。 実施例1における仮想マシンモニタが仮想マシンを実行する処理手順の説明図。 実施例1における使い捨て仮想Webサーバの接続構成の説明図。
符号の説明
100 計算機装置の実メモリ領域
101 ホストOSが使用するメモリ領域
102 仮想マシンアプリケーションが使用するメモリ領域
103 仮想マシンモニタが使用するメモリ領域
104 スナップショットイメージが格納されるメモリ領域
105 仮想マシンが使用するメモリ領域
106 ゲストOSが使用するメモリ領域
107 サーバアプリケーションが使用するメモリ領域
108 仮想マシンの状態が格納されるメモリ領域
109 スナップショットイメージとの差分が格納されるメモリ領域
200 計算機装置
201 CPU
202 I/Oインタフェース
203 主記憶メモリ
204 プログラム記憶領域
205 ホストOSプログラム
206 仮想マシンアプリケーションプログラム
207 ゲストOSプログラム
208 サーバアプリケーションプログラム
300 仮想マシン
301 仮想CPU
302 仮想I/Oインタフェース
303 仮想主記憶メモリ
304 仮想プログラム記憶領域
305 ゲストOSプログラム
306 サーバアプリケーションプログラム
500 アドレス変換テーブル
700 計算機装置
701 仮想マシンモニタ
702 仮想マシン
703 仮想Webサーバ
704 クライアント
705 インターネット
706 ストレージ装置
707 ディスク装置
708 コンテンツ
709 SAN

Claims (14)

  1. CPUと、I/Oインタフェースと、記憶メモリと、プログラム記憶領域とを備え、同一スナップショットイメージから複数の仮想マシンを復元し実行する計算機装置であって、
    2以上の仮想マシン間で共有するスナップショットイメージをホストOSのメモリ領域に保持し、共有したスナップショットイメージに対する書き込みメモリアクセスの検出を行い、書き込みメモリアクセスを検出した場合に当該仮想マシンに個別に割り当てられる差分メモリ領域にスナップショットイメージの部分領域を複写することを特徴とする計算機装置。
  2. 請求項1記載の計算機装置において、
    前記仮想マシンに個別に割り当てられる差分メモリ領域に複写したスナップショットイメージの部分領域へのメモリアクセスの検出を行い、該メモリアクセスを検出した場合に該メモリアクセスを前記差分メモリ領域に対して行うことを特徴とする計算機装置。
  3. 請求項1記載の計算機装置において、
    スナップショットイメージと、差分メモリと仮想マシン状態をそれぞれ有する複数の仮想マシンと、仮想マシンモニタとを備えることを特徴とする計算機装置。
  4. 請求項1記載の計算機装置において、
    仮想マシン上でサーバアプリケーションの実行準備が完了した時点でスナップショットイメージを取得し、クライアントからの接続要求に応じて仮想マシンを復元し、クライアントへのサービスを提供し、セッションが終了した時点で仮想マシンを破棄することを特徴とする計算機装置。
  5. 請求項4記載の計算機装置において、
    仮想マシンとクライアントとの接続切断を元にセッションの終了を判定することを特徴とする計算機装置。
  6. 請求項4記載の計算機装置において、
    仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを停止することを特徴とする計算機装置。
  7. 請求項4記載の計算機装置において、
    仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを破棄することを特徴とする計算機装置。
  8. CPUと、I/Oインタフェースと、記憶メモリと、プログラム記憶領域とを備える計算機装置における同一スナップショットイメージから複数の仮想マシンを提供する方法であって、
    2以上の仮想マシン間で共有するスナップショットイメージをホストOSのメモリ領域に保持し、共有したスナップショットイメージに対する書き込みメモリアクセスの検出を行い、書き込みメモリアクセスを検出した場合に当該仮想マシンに個別に割り当てられる差分メモリ領域にスナップショットイメージの部分領域を複写することを特徴とする仮想マシン提供方法。
  9. 請求項8記載の仮想マシン提供方法において、
    前記仮想マシンに個別に割り当てられる差分メモリ領域に複写したスナップショットイメージの部分領域へのメモリアクセスの検出を行い、該メモリアクセスを検出した場合に該メモリアクセスを前記差分メモリ領域に対して行うことを特徴とする仮想マシン提供方法。
  10. 請求項8記載の仮想マシン提供方法において、
    OSのメモリ領域に、スナップショットイメージ、差分メモリと仮想マシン状態をそれぞれ有する複数の仮想マシン、及び仮想マシンモニタとを設けることを特徴とする仮想マシン提供方法。
  11. 請求項8記載の仮想マシン提供方法において、
    仮想マシン上でサーバアプリケーションの実行準備が完了した時点でスナップショットイメージを取得し、クライアントからの接続要求に応じて仮想マシンを復元し、クライアントへのサービスを提供し、セッションが終了した時点で仮想マシンを破棄することを特徴とする仮想マシン提供方法。
  12. 請求項11記載の仮想マシン提供方法において、
    仮想マシンとクライアントとの接続切断を元にセッションの終了を判定することを特徴とする仮想マシン提供方法。
  13. 請求項11記載の仮想マシン提供方法において、
    仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを停止することを特徴とする仮想マシン提供方法。
  14. 請求項11記載の仮想マシン提供方法において、
    仮想マシンに割り当てる差分メモリ領域の容量を制限し、差分メモリ領域の容量が所定の値を超過した仮想マシンを破棄することを特徴とする仮想マシン提供方法。
JP2005255173A 2005-09-02 2005-09-02 計算機装置及び仮想マシン提供方法 Pending JP2007066265A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005255173A JP2007066265A (ja) 2005-09-02 2005-09-02 計算機装置及び仮想マシン提供方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005255173A JP2007066265A (ja) 2005-09-02 2005-09-02 計算機装置及び仮想マシン提供方法

Publications (1)

Publication Number Publication Date
JP2007066265A true JP2007066265A (ja) 2007-03-15

Family

ID=37928330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005255173A Pending JP2007066265A (ja) 2005-09-02 2005-09-02 計算機装置及び仮想マシン提供方法

Country Status (1)

Country Link
JP (1) JP2007066265A (ja)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009176228A (ja) * 2008-01-28 2009-08-06 Nec Corp 仮想マシンサーバ、仮想マシンサーバの情報保存方法及び仮想マシンサーバの情報保存用プログラム
JP2009223713A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd メモリ内容復元装置、メモリ内容復元方法及びメモリ内容復元プログラム
WO2009153917A1 (ja) * 2008-06-18 2009-12-23 富士通株式会社 仮想計算機システム、仮想計算機システムを提供する情報処理装置およびプログラム
JP2011501839A (ja) * 2007-10-04 2011-01-13 グローバル インフィニプール ゲーエムベーハー データエンティティ及びそのバージョンにアクセスするための方法
KR20110067081A (ko) * 2009-12-13 2011-06-21 인터내셔널 비지네스 머신즈 코포레이션 네트워크 환경에서의 가상 머신의 원격 배치 관리 방법
JP2011253350A (ja) * 2010-06-02 2011-12-15 Mitsubishi Electric Corp 仮想計算機制御システム
WO2012063315A1 (ja) * 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、仮想サーバへのボリューム割り当て方法及び計算機読み取り可能な記憶媒体
WO2012131507A1 (en) * 2011-03-31 2012-10-04 International Business Machines Corporation Running a plurality of instances of an application
US8291413B2 (en) 2007-10-31 2012-10-16 Kabushiki Kaisha Toshiba Virtual computer system managing schedule for allocating CPU to guest OSes and guest OS scheduling method
WO2012147268A1 (ja) * 2011-04-28 2012-11-01 パナソニック株式会社 仮想計算機システムとその制御方法、プログラム、及び集積回路
US8321863B2 (en) 2009-03-06 2012-11-27 Hitachi, Ltd. Security management device and method
JP2012234564A (ja) * 2012-08-03 2012-11-29 Ntt Data Corp 仮想マシンの移行方法、サーバ、及び、プログラム
WO2013008450A1 (ja) * 2011-07-14 2013-01-17 パナソニック株式会社 仮想計算機システム、メモリ管理方法、メモリ管理プログラム、記録媒体および集積回路
US8656126B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporation Managing snapshots of virtual server
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法
US8782235B2 (en) 2008-07-18 2014-07-15 Fujitsu Limited Resource migration system and resource migration method
US8825855B2 (en) 2011-03-31 2014-09-02 International Business Machines Corporation Non-intrusive single sign-on mechanism in cloud services
JP2014197337A (ja) * 2013-03-29 2014-10-16 日本電気株式会社 仮想化システム、仮想サーバ、仮想マシン制御方法、及び仮想マシン制御プログラム
US8868750B2 (en) 2010-02-17 2014-10-21 Fujitsu Limited Information processing device, computer system and program
JP2019530072A (ja) * 2016-09-09 2019-10-17 ベリタス テクノロジーズ エルエルシー ソフトウェアコンテナのライブマイグレーションを実施するためのシステム及び方法

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011501839A (ja) * 2007-10-04 2011-01-13 グローバル インフィニプール ゲーエムベーハー データエンティティ及びそのバージョンにアクセスするための方法
US8291413B2 (en) 2007-10-31 2012-10-16 Kabushiki Kaisha Toshiba Virtual computer system managing schedule for allocating CPU to guest OSes and guest OS scheduling method
JP2009176228A (ja) * 2008-01-28 2009-08-06 Nec Corp 仮想マシンサーバ、仮想マシンサーバの情報保存方法及び仮想マシンサーバの情報保存用プログラム
JP2009223713A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd メモリ内容復元装置、メモリ内容復元方法及びメモリ内容復元プログラム
WO2009153917A1 (ja) * 2008-06-18 2009-12-23 富士通株式会社 仮想計算機システム、仮想計算機システムを提供する情報処理装置およびプログラム
US8782235B2 (en) 2008-07-18 2014-07-15 Fujitsu Limited Resource migration system and resource migration method
US8321863B2 (en) 2009-03-06 2012-11-27 Hitachi, Ltd. Security management device and method
US9021480B2 (en) 2009-03-06 2015-04-28 Hitachi, Ltd. Security management device and method
KR20110067081A (ko) * 2009-12-13 2011-06-21 인터내셔널 비지네스 머신즈 코포레이션 네트워크 환경에서의 가상 머신의 원격 배치 관리 방법
KR101720343B1 (ko) 2009-12-13 2017-03-27 인터내셔널 비지네스 머신즈 코포레이션 네트워크 환경에서의 가상 머신의 원격 배치 관리 방법
US8868750B2 (en) 2010-02-17 2014-10-21 Fujitsu Limited Information processing device, computer system and program
JP2011253350A (ja) * 2010-06-02 2011-12-15 Mitsubishi Electric Corp 仮想計算機制御システム
US8656126B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporation Managing snapshots of virtual server
WO2012063315A1 (ja) * 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、仮想サーバへのボリューム割り当て方法及び計算機読み取り可能な記憶媒体
JP5547814B2 (ja) * 2010-11-08 2014-07-16 株式会社日立製作所 計算機システム、仮想サーバへのボリューム割り当て方法及び計算機読み取り可能な記憶媒体
US8825855B2 (en) 2011-03-31 2014-09-02 International Business Machines Corporation Non-intrusive single sign-on mechanism in cloud services
CN102736945B (zh) * 2011-03-31 2016-05-18 国际商业机器公司 一种运行应用程序的多个实例的方法和系统
GB2502937A (en) * 2011-03-31 2013-12-11 Ibm Running a plurality of instances of an application
GB2502937B (en) * 2011-03-31 2014-03-26 Ibm Running a plurality of instances of an application
WO2012131507A1 (en) * 2011-03-31 2012-10-04 International Business Machines Corporation Running a plurality of instances of an application
CN102736945A (zh) * 2011-03-31 2012-10-17 国际商业机器公司 一种运行应用程序的多个实例的方法和系统
WO2012147268A1 (ja) * 2011-04-28 2012-11-01 パナソニック株式会社 仮想計算機システムとその制御方法、プログラム、及び集積回路
CN103098028B (zh) * 2011-07-14 2016-09-14 松下电器(美国)知识产权公司 虚拟计算机系统、存储器管理方法以及集成电路
JPWO2013008450A1 (ja) * 2011-07-14 2015-02-23 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、メモリ管理方法、メモリ管理プログラム、記録媒体および集積回路
WO2013008450A1 (ja) * 2011-07-14 2013-01-17 パナソニック株式会社 仮想計算機システム、メモリ管理方法、メモリ管理プログラム、記録媒体および集積回路
US9176781B2 (en) 2011-07-14 2015-11-03 Panasonic Intellectual Property Corporation Of America Virtual machine system, memory management method, memory management program, recording medium, and integrated circuit
US20130139161A1 (en) * 2011-07-14 2013-05-30 Tetsuji Yamamoto Virtual machine system, memory management method, memory management program, recording medium, and integrated circuit
CN103098028A (zh) * 2011-07-14 2013-05-08 松下电器产业株式会社 虚拟计算机系统、存储器管理方法、存储器管理程序、记录介质以及集成电路
JP2012234564A (ja) * 2012-08-03 2012-11-29 Ntt Data Corp 仮想マシンの移行方法、サーバ、及び、プログラム
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法
US9535730B2 (en) 2012-11-08 2017-01-03 Hitachi, Ltd. Communication apparatus and configuration method
JP2014197337A (ja) * 2013-03-29 2014-10-16 日本電気株式会社 仮想化システム、仮想サーバ、仮想マシン制御方法、及び仮想マシン制御プログラム
JP2019530072A (ja) * 2016-09-09 2019-10-17 ベリタス テクノロジーズ エルエルシー ソフトウェアコンテナのライブマイグレーションを実施するためのシステム及び方法
US11055012B2 (en) 2016-09-09 2021-07-06 Veritas Technologies Llc Systems and methods for performing live migrations of software containers

Similar Documents

Publication Publication Date Title
JP2007066265A (ja) 計算機装置及び仮想マシン提供方法
EP3554025B1 (en) Method for forwarding packet and physical host
EP2577450B1 (en) Virtual machine migration techniques
EP3540599B1 (en) Virtual machine live migration method and corresponding system
US10691363B2 (en) Virtual machine trigger
JP5689526B2 (ja) マルチキュー・ネットワーク・アダプタの動的再構成によるリソース・アフィニティ
RU2577470C2 (ru) Средство предупреждающего прерывания
US8281013B2 (en) Non-disruptive, reliable live migration of virtual machines with network data reception directly into virtual machines' memory
JP5737050B2 (ja) 情報処理装置、割込み制御方法および割込み制御プログラム
EP3985504B1 (en) Virtual machine migration
US9588787B2 (en) Runtime virtual process creation for load sharing
JP4558661B2 (ja) パーティション間で実行可能プログラムを転送するためのコンピュータシステム及び方法
JP2009230596A (ja) サーバ装置のユーザデータ保護方法、サーバ装置及びコンピュータプログラム
Fukai et al. Live migration in bare-metal clouds
JP2010003257A (ja) 仮想計算機システム及びネットワークデバイス共有方法
JP2008107966A (ja) 計算機システム
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
Eswaran et al. Tackling memory footprint expansion during live migration of virtual machines,”
Li et al. A High-Performance Inter-Domain Data Transferring System for Virtual Machines.
KR20000038076A (ko) 제로-카피 메시지 패싱 방법
US8505007B2 (en) Method and system for instantly creating an IT environment
CN117453242A (zh) 一种虚拟机的应用更新方法、计算设备及计算系统