(57)【要約】【課題】物理的にＩ／Ｏ資源の上限値を向上させることと同等の効果を安価に実現させるための技術を提供する。【解決手段】Ｉ／Ｏ資源にアクセスするための専用パーティション（高速Ｉ／Ｏパーティション）を設け、当該高速Ｉ／Ｏパーティションに大容量のメモリを仮想的に割り当て、ゲストイメージのデータを全てキャッシュし、データの参照や更新を全てオンメモリ上で処理する。また、複数のゲストイメージで共通化できるデータと、各ゲストイメージで固有の差分データに分割し、ゲストイメージの共通化を進める。また、アクセス対象データの少なくとも一部が仮想キャッシュメモリ領域にあるか否かによって、アクセス要求を仮想キャッシュメモリ領域及びストレージ装置へのアクセスを振り分ける。【選択図】図３
2012123556.tif 000002
【特許請求の範囲】
【請求項１】
物理リソースを割り当てて実現される、複数の仮想マシンと、前記複数の仮想マシンからのアクセス要求を処理するパーティションマシンとを有するサーバー装置と、ストレージ装置と、を含み、
前記パーティションマシンは、前記物理リソースの一部を割り当てて仮想的に実現され、前記複数の仮想マシンで共通に使用するデータを格納する共通データ領域と、前記複数の仮想マシンがそれぞれ固有に用いるデータを格納する固有データ領域と、を含む仮想キャッシュメモリ領域を有し、
前記パーティションマシンは、前記アクセス要求の対象データを前記ストレージ装置から取得し、前記対象データにおける前記複数の仮想マシンで共通化された部分を前記共通データ領域に格納し、前記対象データにおいて前記アクセス要求した仮想マシンに固有な部分を前記固有データ領域に格納することを特徴とする仮想サーバーシステム。
【請求項２】
請求項１において、
前記パーティションマシンは、アクセス対象データの少なくとも一部が前記仮想キャッシュメモリ領域にあるか否かによって、前記アクセス要求を前記仮想キャッシュメモリ領域及び前記ストレージ装置へのアクセスに振り分けることを特徴とする仮想サーバーシステム。
【請求項３】
請求項２において、
前記パーティションマシンは、前記仮想マシンからのデータ更新要求に応答して、前記データ更新要求をした仮想マシンに固有の前記固有データ領域に更新データを格納し、所定のタイミングで前記固有データ領域に格納された前記更新データを前記ストレージ装置に反映することを特徴とする仮想サーバーシステム。
【請求項４】
請求項３において、
前記パーティションマシンは、仮想マシンの停止要求に応答して、当該停止要求をした仮想マシンに固有の前記固有データ領域をチェックし、ディスクキャッシュ領域に対応する情報を除去することを特徴とする仮想サーバーシステム。
【請求項５】
物理リソースを割り当てて実現される、複数の仮想マシンと、前記複数の仮想マシンからのアクセス要求を処理するパーティションマシンとを有するサーバー装置と、ストレージ装置と、を含む仮想サーバーシステムの制御方法であって、
前記パーティションマシンは、前記物理リソースの一部を割り当てて仮想的に実現され、前記複数の仮想マシンで共通に使用するデータを格納する共通データ領域と、前記複数の仮想マシンがそれぞれ固有に用いるデータを格納する固有データ領域と、を含む仮想キャッシュメモリ領域を有し、
前記制御方法は、
前記パーティションマシンが、前記アクセス要求の対象データを前記ストレージ装置から取得するステップと、
前記パーティションマシンが、前記対象データにおける前記複数の仮想マシンで共通化された部分を前記共通データ領域に格納するステップと、
前記パーティションマシンが、前記対象データが前記アクセス要求した仮想マシンに固有なデータを含む場合には、当該固有なデータを前記固有データ領域に格納するステップと、
を有することを特徴とする制御方法。
【請求項６】
請求項５において、
さらに、前記パーティションマシンが、アクセス対象データの少なくとも一部が前記仮想キャッシュメモリ領域にあるか否か判断するステップと、
前記パーティションマシンが、前記判断するステップの判断結果によって、前記アクセス要求を前記仮想キャッシュメモリ領域及び前記ストレージ装置へのアクセスに振り分けるステップと、
を有することを特徴とする制御方法。
【請求項７】
請求項６において、
さらに、前記パーティションマシンが、前記仮想マシンからのデータ更新要求に応答して、前記データ更新要求をした仮想マシンに固有の前記固有データ領域に更新データを格納するステップと、
前記パーティションマシンが、所定のタイミングで前記固有データ領域に格納された前記更新データを前記ストレージ装置に反映するステップと、
を有することを特徴とする制御方法。
【請求項８】
請求項７において、
さらに、前記パーティションマシンが、仮想マシンの停止要求に応答して、当該停止要求をした仮想マシンに固有の前記固有データ領域をチェックするステップと、
前記パーティションマシンが、前記チェックするステップの結果によって、ディスクキャッシュ領域に対応する情報を除去するステップと、
を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想サーバーシステム、及びその制御方法に関し、例えば、仮想化環境における仮想マシンの集約率を向上する技術に関するものである。
【背景技術】
【０００２】
１台のサーバー上で同時に複数の仮想サーバーを稼動させる仮想化技術が一般的になってきている。この仮想化技術を用いると物理サーバーの台数を飛躍的に減らすことが可能になり、データセンターの省スペース化、省電力など、ＣＡＰＥＸ（Capital Expenditure）の観点と、運用管理コスト削減などＯＰＥＸ（Operating Expense）の観点で注目されている。
【０００３】
従来、仮想化環境において、１台のサーバー上で同時稼動できる仮想マシンの台数を増やすための技術として、特許文献１に記載の技術が知られている。
【０００４】
特許文献１では、Ｉ／Ｏデバイスにアクセスするための専用のパーティションを設け、共有メモリを介してアクセスさせる方法が開示されている。これにより、多数のゲストイメージを単一のハイパーバイザーで実行する場合に問題となるＩ／Ｏ資源の利用を効率化するためのＩ／Ｏ制御機能を提供する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２９９３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術は、既存のＩ／Ｏ資源の利用を効率化するため、Ｉ／Ｏデバイスにアクセスするための専用パーティションを設け、各ゲストイメージに限られたＩ／Ｏ資源を効率的に利用させるようにしているのみである。このため、Ｉ／Ｏ資源（例えば、ストレージ（HDD）へのアクセス帯域）の上限値以上のゲストイメージを単一のハイパーバイザーで実行することはできない。例えば、許容帯域の上限値が高いＩ／Ｏインタフェースを導入する等、物理的にＩ／Ｏ資源の上限値を向上させることもできるが、コストが増大してしまう。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、物理的にＩ／Ｏ資源の上限値を向上させることと同等の効果を安価に実現させるための技術を提供するものである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明では、Ｉ／Ｏ資源にアクセスするための専用パーティション（高速Ｉ／Ｏパーティション）を設け、当該高速Ｉ／Ｏパーティションに大容量のメモリを仮想的に割り当て、ゲストイメージのデータを全てキャッシュし、データの参照や更新を全てオンメモリ上で処理する。また、複数のゲストイメージで共通化できるデータと、各ゲストイメージで固有の差分データに分割し、ゲストイメージの共通化を進める。
【０００９】
即ち、本発明の仮想サーバーシステムでは、複数の仮想マシンからのアクセス要求を処理するパーティションマシン（物理リソースの一部を割り当てて仮想的に実現されている）に、複数の仮想マシンで共通に使用するデータを格納する共通データ領域と、複数の仮想マシンがそれぞれ固有に用いるデータを格納する固有データ領域と、を含む仮想キャッシュメモリ領域を設ける。そして、このパーティションマシンは、アクセス要求の対象データをストレージ装置から取得し、対象データにおける複数の仮想マシンで共通化された部分を共通データ領域に格納し、対象データにおいてアクセス要求した仮想マシンに固有な部分を固有データ領域に格納する。
【００１０】
そして、パーティションマシンは、アクセス対象データの少なくとも一部が仮想キャッシュメモリ領域にあるか否かによって、アクセス要求を仮想キャッシュメモリ領域及びストレージ装置へのアクセスを振り分ける。
【発明の効果】
【００１１】
本発明によれば、仮想サーバーシステムにおいて、物理的にＩ／Ｏ資源の上限値を向上させることと同等の効果を安価に実現させることができるようになる。
【００１２】
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【００１３】
【図１】仮想サーバーシステムを含む、典型的なネットワーク構成を示す図である。
【図２】一般的な仮想サーバーシステムの構成を示す図である。
【図３】本発明の実施形態による仮想サーバーシステムの構成を示す図である。
【図４】メモリファイルシステムにおけるメモリ消費量削減方法を説明するための図である。
【図５】データ読み出し時キャッシング処理の概略を示す図である。
【図６】ディスクの書き出し処理/ダーティなデータ領域のフラッシュ処理の概略を示す図である。
【図７】データ読み出し時イメージキャッシング処理の詳細を説明するためのフローチャートである。
【図８】データ書き出し処理の詳細を説明するためのフローチャートである。
【図９】ダーティなデータ領域のフラッシュ処理の詳細を説明するためのフローチャートである。
【図１０】ＯＳ固有データ圧縮処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１５】
＜ネットワーク構成＞
図１は、本発明の実施形態による仮想サーバーシステム（仮想マシン高集約化システム）を含むネットワーク構成例を示す図である。図１は、典型的なネットワーク接続の一例としてインターネットなど広域ネットワーク１６を介して複数の閉じたネットワーク１及び２が接続する例を示している。なお、本発明は、ネットワーク構成には依存するものではなく、例えば広域ネットワークへの接続を許可していない場合でも問題ない。また、閉じたネットワーク１及び２として、企業等の組織で用いられるローカルエリアネットワーク、個人が利用するホームネットワークなどあらゆる形態のネットワーク構成を含んでいる。
【００１６】
ネットワークに接続する機器としては、サーバー３、ストレージ装置４、クライアント５乃至７がある。クライアントはＰＣ（Personal Computer）、携帯電話等のモバイルデバイスなど、ネットワークに接続可能なあらゆる機器を想定している。本発明では、サーバー３上でハイパーバイザー１４が稼動し、この上で複数の仮想マシンが稼動する環境を前提とする。本実施形態では、一例として仮想マシン１_１０、仮想マシン２_１２が稼動する例が示されている。クライアント５乃至７は、ネットワークを介して、リモートデスクトップ接続、イントラネットサービスの接続など、各種サービスを享受する。以降では、仮想化環境における本発明の優位性について具体的な例を示しながら説明する。
【００１７】
＜一般的な仮想サーバーシステムの構成＞
図２は、一般的な仮想サーバーシステムの概略構成を示す図である。ここでは、サーバー仮想化を実現する場合として、一般的な仮想サーバーシステムが、サーバー３と外部の共有ストレージ装置４を有することを想定する。
【００１８】
また、仮想化環境を構築する場合にはハイパーバイザー１４を用いる。ハイパーバイザー１４は、ソフトウェアとして実現する場合、ハードウェアチップとして実現する場合があるが、本発明では実装方式の違いには依存しない。ハイパーバイザー１４は、各仮想マシンのＣＰＵ割り当てを制御するＣＰＵスケジューラー１４０としての機能と、各仮想マシンから発行されるＩ／Ｏ処理を代行するＨＢＡ（ホストバスアダプター）１４１としての機能を有している。そして、ハイパーバイザー１４は、仮想マシンに対して、仮想化されたハードウェアを提供する。仮想デバイスが提供する仮想化されたハードウェア（仮想デバイス）として、ＣＰＵ１１０及び１３０、メモリ１１１及び１３１、Ｉ／Ｏインタフェース１１２及び１３２である。つまり、仮想マシン１_１０は、物理的ハードウェアから仮想的に割り当てられた、仮想ＣＰＵ１１０と、仮想メモリ１１１と、仮想Ｉ／Ｏインタフェース１１２とを有する。仮想マシン２_１２は、物理的ハードウェアから仮想的に割り当てられた、仮想ＣＰＵ１３０と、仮想メモリ１３１と、仮想Ｉ／Ｏインタフェース１３２とを有する。
【００１９】
各仮想マシンは、ハイパーバイザー１４が提供する仮想デバイスを物理ハードウェアと認識して動作するため、標準的なＯＳ環境がそのまま動作する。つまり、標準的なＯＳ環境においては、オペレーティングシステム１０１及び１２１上で様々なアプリケーション１００及び１２０が動作するようになっている。
【００２０】
上術した通り、ハイパーバイザー１４は、仮想マシンに仮想化されたハードウェアを提供する一方、単一の物理デバイス１５のアクセスを代行する機能も有する。ハイパーバイザー１４がアクセスする物理デバイス１５として、ＣＰＵ１５０、メモリ１５１、及びＩ／Ｏインタフェース１５２がある。この物理デバイスが、仮想的に仮想マシン１_１０及び仮想マシン２_１２に割り当てられている。
【００２１】
一般的な仮想化環境では、ハイパーバイザー１４が複数台の仮想マシン１０及び１２に対して単一のハードウェアを提供する。このため、物理的なハードウェアのリソース上限以上には仮想マシンを稼動させることができないという問題がある。一般的に、ＣＰＵ１５０やメモリ１５１は大容量化、低価格化が進んでいるため、余剰リソースが出る場合が多い。一方、ストレージ装置４へのアクセス口にあたるＩ／Ｏインタフェース１５２にはファイバーチャンネルスイッチ装置を用いる場合が多いが、リソース限界値が低く、価格的にも高価であるため、リソースのキャパシティが不足する場合が多い。
【００２２】
従って、仮想化環境で仮想マシンの集約率を向上するには、ストレージ装置へのＩ／Ｏインタフェースのキャパシティを安価に向上させる技術が必要となる。しかしながら、特許文献１で代表される従来技術を採用してもＩ／Ｏインタフェースのキャパシティ向上を実現することができない。
【００２３】
＜改良された仮想サーバーシステムの構成＞
図３は、本発明の実施形態による仮想サーバーシステムの概略構成を示す図である。図３のような構成を採用することにより、仮想マシンの集約率を向上させることができる。なお、仮想化環境の構成は一般的な仮想サーバーシステム（図２）と同様である。以下、本発明の実施形態による構成と図２の構成とを比較しつつ説明する。
【００２４】
一般的な仮想サーバーシステム（図２）では、ハイパーバイザー１４からストレージ装置４へのアクセスは、ハイパーバイザー１４上のホストバスアダプター１４１から物理デバイス１５上のＩ／Ｏインタフェース１５２を経由させている。この場合、複数の仮想マシンから発生するＩ／Ｏ要求がＩ／Ｏインタフェース１５２に集中するため、Ｉ／Ｏインタフェース１５２が性能上のボトルネックとなってしまう。
【００２５】
一方、本発明の実施形態による構成では、ハイパーバイザー１４上のホストバスアダプター（ＨＢＡ）１４１と物理デバイス１５上のＩ／Ｏインタフェース１５２の間に高速Ｉ／Ｏパーティション２０を経由させている。高速Ｉ／Ｏパーティション２０は、大容量メモリ２０２を割り当てたＩ／Ｏ専用の仮想マシンである。例えば、メモリ１５１の容量が６４ＧＢであるとすると、大容量メモリ２０２には３２ＧＢを割り当て、３２ＧＢを仮想マシン１及び２に割り当てるようにする。なお、高速Ｉ／Ｏパーティション２０は、ソフトウェア、ハードウェアの両方で提供可能であり、実装方式の違いには依存しない。
【００２６】
また、高速Ｉ／Ｏパーティション２０は、ハイパーバイザー１４上のホストバスアダプター（ＨＢＡ）１４１からのＩ／Ｏ要求を受信するＩ／Ｏインタフェース２０１と、Ｉ／Ｏインタフェース２０１から受信したＩ／Ｏ要求を受け取り、Ｉ／Ｏ要求を処理するメモリファイルシステム２００を有している。本発明では、メモリファイルシステム２００は、ストレージ装置の内容を大容量メモリ２０２上にすべてキャッシュし、データの参照や更新は全てオンメモリ上で処理する機能が特徴の１つとなっている。そして、メモリはストレージ装置と比べて、１秒間に処理できるＩ／Ｏ要求数（ＩＯＰＳ（I/O Per Second））が多いため、複数の仮想マシンからのＩ／Ｏ要求を高速に処理することにより、仮想マシンの集約率を向上する場合の最大のボトルネックであるＩ／Ｏ性能を向上することができるようになっている。
【００２７】
＜メモリ消費量削減方法＞
図４は、本実施形態の仮想サーバーシステムにおいて、メモリファイルシステム２００によりメモリ消費量を削減する方法を説明するための図である。
【００２８】
一般的な仮想マシンのイメージファイルサイズは１０ＧＢｙｔｅ以上である。従って、複数の仮想マシンのイメージを全てメモリ上にキャッシュすることは、サーバー３が搭載できる物理的なメモリ１５１の上限を考えた場合、適切ではない。例えば、サーバー３上で１０台の仮想マシンを稼動させる場合、１００ＧＢｙｔｅのメモリが必要になる。現行のブレードサーバー等では、数百ＧＢｙｔｅのメモリを搭載することは技術的、価格的に非常に困難であり、メモリ消費量を削減する技術が必要である。
【００２９】
そこで、本発明の実施形態では、仮想マシンのイメージファイルを、複数の仮想マシンで共通化できるファイル３００及び３０１と、各仮想マシン固有のファイル３１０及び３１１に分割するようにしている。具体的には、複数の仮想マシンで共通化できるファイル３００及び３０１として、オペレーティングシステムのイメージ（データ）３００や、アプリケーションのイメージ（データ）３０１がある。一方、各仮想マシン固有のファイル３１０及び３１１として、ユーザデータ等の差分データ３１０乃至３１１である。
【００３０】
オペレーティングシステムのイメージ３００やアプリケーションのイメージ（実行ファイル）３０１は、データサイズが数百ＧＢｙｔｅになる場合が多いが、これらのデータを複数の仮想マシンで共有することにより必要なメモリ量を大幅に削減することができる。
【００３１】
＜データ読み出し処理＞
図５は、データ読み出し時キャッシング処理イメージを示す図である。図５を用いて、本実施形態における、仮想的な大容量メモリ２０２上にデータをキャッシングする処理について、具体的に説明する。
【００３２】
データのキャッシング処理は、最初のデータの読み出しの際に行われる。これは、ＯＳの種別が同一の場合、ＯＳを構成するシステムファイルの構成は複数の仮想マシンで同一であるという事実に起因する。例えば、サーバー３上で仮想マシン１_１０が起動時に、システムファイルなど共通イメージ３００を大容量メモリ２０２上にキャッシュしておけば、以降は別の仮想マシンの起動時、また、同一のシステムファイルを何度も読み出す際に、読み出し性能を高速化することができる。ＯＳ起動時以外の例として、アプリケーション起動時のアプリケーション実行ファイル３０１もキャッシング対象である。ただし、ＯＳイメージ３００やアプリケーション実行ファイル３０１が共通化されていることが前提となるが、既知の技術で対応可能である。
【００３３】
キャッシング処理の流れは次の通りである。まず、（i）ユーザによる仮想マシン１_１０が起動される。（ii）ディスク読み出し要求がハイパーバイザー１４経由でメモリファイルシステム２００に転送される。（iii）メモリファイルシステム２００は、大容量メモリ２０２上に読み出し対象データがキャッシュされているかチェックする。（iv）未キャッシュならストレージ装置４から対象のデータを読み出す。そして、（v）大容量メモリ２０２に読み込んだ対象のデータをキャッシングする。最後に、（vi）読み出しデータを仮想マシン１_１０に転送する。以上の順によりキャッシング処理が実行される。
【００３４】
＜書き出し処理及びフラッシュ処理＞
図６は、ディスクの書き出し処理/ダーティなデータ領域のフラッシュ処理イメージを示す図である。図６を用いて、本実施形態における、データの書き出しを大容量メモリ２０２上に行うことによる高速化処理、及びキャッシュデータのフラッシュ処理について、具体的に説明する。
【００３５】
通常、データの書き出しは、外部のストレージ装置４に対して行われる。複数の仮想マシンが稼動する仮想化環境では、稼動中の仮想マシンの台数が増える程、ストレージ装置４に対するランダムな書き出しが増えるため、一般的に書き出し速度は遅くなる。
【００３６】
そこで、本発明では、データの書き出しを仮想的な大容量メモリ２０２上で実行することで、書き出し速度の高速化を実現する。最終的には大容量メモリ２０２上のデータをストレージ装置４上にフラッシュする必要があるが、一定間隔でデータをフラッシュする処理をメモリファイルシステム２００に追加することで実現する。
【００３７】
ディスクの書き出し処理の流れは次の通りである。まず、（i）仮想マシン１_１０からデータの書き出し要求がハイパーバイザー１４経由でメモリファイルシステム２００に転送される。（ii）メモリファイルシステム２００が大容量メモリ２０２にデータをキャッシングする。（iii）書き出しの結果を仮想マシン１_１０に転送する。以上の順により書き出し処理が実行される。
【００３８】
一方、（iv）フラッシュ処理が、メモリファイルシステム２００は大容量メモリ２０２上のダーティなデータ領域について、所定のタイミング（例えば、対応する仮想マシン停止時）で実行される。
【００３９】
＜イメージキャッシング処理の詳細＞
図７は、本実施形態におけるデータ読み出し時イメージキャッシング処理の詳細を説明するためのフローチャートである。
【００４０】
メモリファイルシステム２００は、各仮想マシンからのデータ参照要求を待ち（ステップ７００１）、特定の仮想マシン１０及び１２からのデータ参照要求を受信すると（ステップ７００２）、以下に示す処理フローでデータを参照する。なお、当該フローチャートでは、最初に差分データを参照し、次に共通データを参照しているが、参照の順序は逆であっても構わない。
【００４１】
メモリファイルシステム２００は、最初に大容量メモリ２０２の差分データ領域３１を参照し（ステップ７００３）、アクセス対象データが存在するかチェックする（ステップ７００４）。
【００４２】
ステップ７００４で差分データ領域３１にデータがあると判断した場合、メモリファイルシステム２００は、当該データを参照し、データを解凍した上で（ステップ７００９）、当該仮想マシンに参照データを転送し、処理を終了する。本実施形態では、大容量メモリ２０２上のデータは、メモリ消費量を削減するため、データ圧縮等を施していることを前提にする。
【００４３】
ステップ７００４で差分データ領域３１にアクセス対象データがないと判断した場合、メモリファイルシステム２００は、共通データ領域３０を参照し（ステップ７００５）、アクセス対象データが存在するかチェックする（ステップ７００６）。
【００４４】
ステップ７００６で共通データ領域３０にデータがあると判断した場合、メモリファイルシステム２００は、当該データを参照し、データを解凍した上で（ステップ７００９）、当該仮想マシンに参照データを転送し、処理を終了する。
【００４５】
ステップ７００６で共通データ領域３０にアクセス対象データがないと判断した場合に限り、メモリファイルシステム２００は、ストレージ装置４のデータを参照する（ステップ７００７）。ストレージ装置４を参照するのは、例えば仮想マシン起動時など、仮想マシンのイメージファイルに初めてアクセスする場合であって、データがまだ大容量メモリ２０２にデータがキャッシュされていない場合等が相当する。ストレージ装置４にのみ存在するファイルの例としては、新規に作成したファイルやインターネットで始めてアクセスしたサイトの情報等が挙げられる。このような新規作成ファイルの場合には、ファイルの基本的な情報をストレージ装置４に書く必要があることからストレージ装置４にのみ格納されている。
【００４６】
そして、メモリファイルシステム２００は、当該データを圧縮後に大容量メモリ２０２に保存し（ステップ７００８）、当該仮想マシンに参照データを転送し、処理を終了する。
【００４７】
＜データ書き出し処理の詳細＞
図８は、本実施形態におけるデータ書き出し処理の詳細を説明するためのフローチャートである。
【００４８】
メモリファイルシステム２００は、各仮想マシンからのデータ参照要求を待ち（ステップ８００１）、特定の仮想マシン１０及び１２からのデータ参照要求を受信すると（ステップ８００２）、大容量メモリ２０２の差分データ領域３１に当該データを圧縮した上で保存し（ステップ８００３）、処理を終了する。
【００４９】
本実施形態では、大容量メモリ２０２に格納されているデータとストレージ装置４に格納されているデータとの同期（例えば、周期的に、或いは、仮想マシン停止時等何らかのイベントがあった場合等、所定のタイミングで同期処理が実行される。）や、システム全体の信頼性を向上するためのファイルシステムのクラスタ化については、分散ファイルシステム等の従来技術の範疇であり、本発明を拡張して容易に適用できるものであり、本実施時形態の説明においては特に言及しない。
【００５０】
＜フラッシュ処理の詳細＞
図９は、本実施形態における、ダーティなデータ領域（メモリ領域）のフラッシュ処理の詳細を説明するためのフローチャートである。
【００５１】
メモリファイルシステム２００は、一定間隔で大容量メモリ２０２のチェックを実施する。具体的な処理として、大容量メモリ２０２上に未チェックのデータ領域があるかチェックする（ステップ９００１）。
【００５２】
ステップ９００１で未チェックのデータ領域がある場合、メモリファイルシステム２００は、そのデータ領域がダーティであるか否か（変更があるか否か）チェックする（ステップ９００２）。
【００５３】
ステップ９００２でデータ領域がダーティの場合、メモリファイルシステム２００は、当該データ領域をストレージ装置４にフラッシュし（ステップ９００３）、ステップ９００１から繰り返す。
【００５４】
ステップ９００２でデータ領域がダーティでない場合は、メモリファイルシステム２００は、何もせず、ステップ９００１からの処理を繰り返す。
【００５５】
ステップ９００１で大容量メモリ２０２に未チェックのデータ領域がない場合は、メモリファイルシステム２００は、一定時間スリープ（ステップ９００４）した上でステップ９００１からの処理を繰り返す。
【００５６】
＜ＯＳ固有データ圧縮処理＞
図１０は、本実施形態における、ＯＳ固有データ圧縮処理を説明するためのフローチャートである。ＯＳが起動していると、ディスクキャッシュに様々な情報が書き込まれる。時間が経過するにつれて、ディスクキャッシュには不要な情報（通称ゴミ）が溜まっていってしまい、この情報は共通データではないため、差分領域に溜められていき、差分データ領域３１の容量を費やしてしまう。そこで、本処理を仮想マシン停止時に実行し、次回の仮想マシン起動のためにディスクキャッシュ領域に溜まった不要情報をクリアするようにする。
【００５７】
メモリファイルシステム２００は、各仮想マシンの停止要求を常時監視し、各仮想マシンの停止要求があるまで待機する（ステップ１０００１）。
【００５８】
メモリファイルシステム２００は、特定の仮想マシン１０及び１２の停止要求を受信すると（ステップ１０００２）、仮想マシンの停止処理が終了するまでの一連の処理を進める（ステップ１０００３）。
【００５９】
メモリファイルシステム２００は、対象の仮想マシンを停止した後で、ストレージ装置４上に格納されている仮想マシンのイメージファイルの差分データを、例えば１セクタずつチェックする処理を開始する（ステップ１０００４）。
【００６０】
そして、メモリファイルシステム２００は、ステップ１０００４で当該セクタのデータが、例えばオペレーティングシステムのディスクキャッシュ領域かチェックする（ステップ１０００５）。
【００６１】
ステップ１０００５で当該セクタがオペレーティングシステムのディスクキャッシュ領域であると判断した場合、メモリファイルシステム２００は、当該セクタの情報を取り除く（ステップ１０００６）。当然、仮想マシンのイメージファイルのサイズは１セクタ分だけ縮小化する。
【００６２】
メモリファイルシステム２００は、ステップ１０００６終了後、もしくはステップ１０００５で当該セクタがオペレーティングシステムのディスクキャッシュ領域以外だった場合は、未検索セクタの存在確認を行い（ステップ１０００７）、存在する間はセクタ検索処理を繰り返す。
【００６３】
本実施形態では、ＯＳ固有データ圧縮処理として、ディスクキャッシュ領域の例を示している。ディスクキャッシュ領域は、オペレーティングシステムが一時データを格納するための領域であり、再起動後には無効なデータとなる。しかしながら、本発明のように、複数の仮想マシンで共通化できるファイル３００及び３０１と、各仮想マシン固有のファイル３１０及び３１１に分割することでメモリ使用量を削減するシステムでは、各仮想マシン固有のファイル３１０及び３１１を常に最小化し続ける必要がある。
【００６４】
なお、本発明では一例として、起動毎にディスクキャッシュ領域を無効化する機能について言及したが、類似の効果をもたらす他のデータ等も対象に含まれることは言うまでもない。
【００６５】
＜まとめ＞
本発明は、仮想化環境において、安価にＩ／Ｏ資源の上限値以上のゲストイメージを単一のハイパーバイザーで実行する。本発明の実施形態では、高速Ｉ／Ｏパーティション（仮想マシン）は、仮想的な大容量メモリ領域を有している。この大容量メモリ領域は、複数の仮想マシンで共通に使用する共通イメージ（ＯＳ及びアプリケーション）を格納する領域（共通データ領域）と、複数の仮想マシンがそれぞれ固有に用いるデータを格納する固有データ領域（差分データ領域）で構成される。そして、高速Ｉ／Ｏパーティションは、仮想マシンからのアクセス要求の対象データをストレージ装置から取得し、対象データにおける複数の仮想マシンで共通化された部分を共通イメージの領域（共通データ領域）に格納し、対象データにおいてアクセス要求した仮想マシンに固有な部分を差分領域に格納する。これにより、当該大容量メモリ領域に格納されたデータへのアクセスに対しては、ＩＯＰＳを飛躍的に増加させることができると共に、各イメージに共通な部分を共有領域に格納するので、Ｉ／Ｏ資源の物理的な上限値以上のゲストイメージを同時に稼動させることが可能になる。
【００６６】
また、各仮想マシンに固有のデータは、差分領域に格納して各仮想マシンごとに管理するので、必要なメモリ使用量を、高々オペレーティングシステム１台分のディスク領域まで削減でき、ゲストイメージ数によらず、全てオンメモリ上にキャッシュすることができる。
【００６７】
高速Ｉ／Ｏパーティションは、アクセス対象データ（少なくとも一部）が大容量メモリ領域にあるか否かチェックし、当該領域にあれば大容量メモリ領域から対象データを取得し、当該領域になければストレージ装置から対象データを取得する。このようにすることにより、アクセス速度（ＩＯＰＳ）を増大させることができる。
【００６８】
また、高速Ｉ／Ｏパーティションは、仮想マシンからのデータ更新要求に応答して、データ更新要求を出した仮想マシンに固有の固有データ領域に更新データを格納する。そして、所定のタイミングで差分領域に格納された更新データをストレージ装置に反映して両者の同期を取るようにする。このように同期処理を更新データ書込みとは異なるタイミングですることにより、時間の掛かる同期処理に煩わされることなく、通常の読み出し及び書き込み処理を迅速に実行することができるようになる。
【００６９】
さらに、高速Ｉ／Ｏパーティションは、仮想マシンの停止要求に応答して、当該停止要求をした仮想マシンの差分領域を１セクタごとチェックし、ディスクキャッシュ領域に対応する情報を除去する。このようにすることにより、当該仮想マシンの次回の起動時に不要なデータを整理することができるので、各仮想マシンの差分領域（固有ファイル）を最小化することができる。
【００７０】
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００７１】
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録或いは記憶装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録或いは記憶媒体に格納することができる。
【００７２】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【００７３】
１…ネットワーク、２…ネットワーク、３…サーバー、４…ストレージ装置、５乃至７…クライアント、１０…仮想マシン１、１２…仮想マシン２、１４…ハイパーバイザー、１６…広域ネットワーク
【図１】
2012123556.tif 000003
【図２】
2012123556.tif 000004
【図３】
2012123556.tif 000005
【図４】
2012123556.tif 000006
【図５】
2012123556.tif 000007
【図６】
2012123556.tif 000008
【図７】
2012123556.tif 000009
【図８】
2012123556.tif 000010
【図９】
2012123556.tif 000011
【図１０】
2012123556.tif 000012