(57)【要約】【課題】  ストレージの使用量を削減する。【解決手段】  仮想化システム１０００が、マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンが動作する仮想化システム１０００であって、複数の仮想マシンを含む仮想サーバ１０と、マスタイメージ及び差分ディスクを格納するストレージ３００とを備え、仮想サーバ１０が、各仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を含む。【選択図】  図１
2014191405.tif 000002
【特許請求の範囲】
【請求項１】
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンが動作する仮想化システムであって、
複数の仮想マシンを含む仮想サーバと、
前記マスタイメージ及び差分ディスクを格納するストレージとを備え、
前記仮想サーバが、
各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を含む
ことを特徴とする仮想化システム。
【請求項２】
定期的に、各差分ディスクに同一内容のファイルブロックが存在するか探索し、存在する場合、前記マスタイメージ上の、当該差分ディスク上のアドレスと同一アドレスに当該ファイルブロックを保存するとともに、前記差分ディスク上の当該ファイルブロックを削除するマスタ更新マネージャを備える
ことを特徴とする請求項１に記載の仮想化システム。
【請求項３】
変換前のアドレスと変換後のアドレスを格納するアドレス変換テーブルを備え、
前記制御手段は、
ファイルブロックの書き込み指示があった場合、当該ブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤを求め、当該ＣＡ  ＩＤを元にアドレスの変換を行い、
変換後のアドレスに対してファイルブロックの書き込みを行い、
変換前のアドレスと変換後のアドレスをアドレス変換テーブルに保存する
ことを特徴とする請求項１又は請求項２に記載の仮想化システム。
【請求項４】
前記制御手段は、
前記変換後のアドレスが使用されている場合、アドレスの再変換を行う
ことを特徴とする請求項３に記載の仮想化システム。
【請求項５】
前記制御手段は、
前記変換後のアドレスが使用されている場合、書き込み対象のファイルブロックと既に書き込まれているファイルブロックの内容が一致するか確認し、一致する場合は書き込みを行わずに処理を終了し、
ファイルブロックの内容が一致しない場合、アドレスの再変換を行う
ことを特徴とする請求項３に記載の仮想化システム。
【請求項６】
前記制御手段は、
前記変換後のアドレスが使用されている場合、当該変換後のアドレスの１ブロック隣を変換後アドレスとして再変換行う
ことを特徴とする請求項４又は請求項５に記載の仮想化システム。
【請求項７】
ファイルブロックの再配置を行う再配置手段を備え、
前記制御手段が、
前記仮想マシン上でファイルのデフラグが行われた場合に、ファイルブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤに基づき前記ファイルブロックの移動先のアドレスを決定し、
前記再配置手段が、
前記制御手段により決定された移動先のアドレスに前記ファイルブロックを移動する
ことを特徴とする請求項１から請求項６の何れか１項に記載の仮想化システム。
【請求項８】
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバであって、
各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を備える
ことを特徴とする仮想サーバ。
【請求項９】
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバによるファイル書き込み方法であって、
制御手段が、各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御ステップを有する
ことを特徴とするファイル書き込み方法。
【請求項１０】
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバ上で動作するファイル書き込みプログラムであって、
制御手段に、各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御処理を実行させる
ことを特徴とするファイル書き込みプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、差分ディスク方式の仮想マシンに関し、特に、ファイル格納技術に関する。
【背景技術】
【０００２】
ストレージでファイルの使用量を削減するためには、高価な専用の重複排除ストレージを用意する必要があるが、重複排除ストレージの場合、複数のストレージ間で重複しているファイルは削除できなかった。
【０００３】
一方、仮想化環境において、複数ＶＭ（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ：仮想マシン）間の重複排除を行う方法として、差分ディスク方式の仮想マシンという手法がある。マスタとなる仮想マシンをテンプレートとし、この仮想マシンから複数の仮想マシンを作成し、各仮想マシンの差分だけをディスクに保存する方法である。
【０００４】
また、背景技術の一例が、特許文献１に開示されている。特許文献１では、マスタに直接ＯＳのホットフィックスやアプリケーションをインストールしている。
【０００５】
ここで、背景技術による差分ディスク方式の仮想マシンのファイルシステムへのアクセス方法を図１４に示す。背景技術による方法では、仮想マシンでファイルシステムにアクセスした場合、仮想マシンのイメージにアクセスを試みる。アクセスしようとした個所が差分ディスクに存在する場合は、差分ディスクにアクセスを行う。アクセスしようとした個所がマスタイメージに集約されている場合は、仮想マシンマスタイメージにアクセスする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１‐２２１５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
背景技術における課題を説明する図を、図１５に示す。９００は差分ディスク方式の仮想マシンのマスタイメージである。９０１、９０２は差分ディスクの仮想マシンの差分ディスクイメージである。９１１、９１２はファイルブロックである。既存技術の場合は、同じ内容のファイルブロックであっても、どこの位置に書かれるかは不定である。すなわち、背景技術では、同じファイルの書き込みを行った場合、各仮想マシンで書き込みを行うアドレスが異なってしまう。そのため、仮想マシンに共通するファイルが存在する場合でも、マスタ部分に抜き出すことができなかった。
【０００８】
このように、背景技術における仮想化環境では、各仮想マシンでファイルシステムが独立して動作しているため、同じ内容のファイルを保存した場合も、各仮想マシンでバラバラの位置に保存が行われていた。この場合において、各仮想マシンの差分ディスクから共通部分をマスタに反映しようとする場合、各仮想マシンで比較を行ったディスクイメージが違ってしまうために、共通部分をマスタに反映することができなかった。
【０００９】
一方、各仮想マシンに、共通するＯＳのホットフィックスを適用するアプリケーションをインストールするなどして、各仮想マシンに共通するファイルが存在する場合でも、ファイルは各仮想マシンの差分ディスクに配置される。このため、各仮想マシンでの変更がすべて差分ディスクに蓄積されてしまい、ストレージの使用量が増大するという問題があった。
【００１０】
また、特許文献１の技術では、インストールするアドレスを決めるために、全仮想マシンで共通して、使用していない空き領域を探索する必要があるという問題があった。
【００１１】
（発明の目的）
本発明の目的は、上述の課題を解決し、ストレージの使用量を削減する仮想化システム、仮想サーバ、ファイル書き込み方法、及びファイル書き込みプログラムを提供することである。
【課題を解決するための手段】
【００１２】
本発明の第１の仮想化システムは、マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンが動作する仮想化システムであって、複数の仮想マシンを含む仮想サーバと、マスタイメージ及び差分ディスクを格納するストレージとを備え、仮想サーバが、各仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を含む。
【００１３】
本発明の第１の仮想サーバは、マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバであって、各仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を備える。
【００１４】
本発明の第１のファイル書き込み方法は、マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバによるファイル書き込み方法であって、制御手段が、各仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御ステップを有する。
【００１５】
本発明の第１のファイル書き込みプログラムは、マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバ上で動作するファイル書き込みプログラムであって、制御手段に、各仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御処理を実行させる。
【発明の効果】
【００１６】
本発明によれば、ストレージの使用量を削減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態による仮想化システムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態によるファイル書き込み方法を示す図である。
【図３】本発明の第１の実施の形態によるＣＡプログラムの動作を示すフローチャートである。
【図４】本発明の第１の実施の形態においてＣＡプログラムがディスクドライバ内で動作する様子を示す図である。
【図５】本発明の第１の実施の形態においてＣＡプログラムがディスクドライバ内に存在する場合の動作を示すフローチャートである。
【図６】本発明の第１の実施の形態においてＣＡプログラムがファイルシステム内で動作する様子を示す図である。
【図７】本発明の第１の実施の形態においてＣＡプログラムがファイルシステムに存在する場合の動作を示すフローチャートである。
【図８】本発明の第１の実施の形態においてＣＡプログラムが再配置プログラム内に存在する場合の様子を示す図である。
【図９】本発明の第１の実施の形態においてＣＡプログラムが再配置プログラム内に存在する場合の動作を示すフローチャートである。
【図１０】本発明の第１の実施の形態において各差分ディスク上の共通部分をマスタに反映する場合の動作を示すフローチャートである。
【図１１】本発明の第１の実施の形態によるファイル書き込み方法を示す図である。
【図１２】本発明の仮想化システムの最小限の構成を示すブロック図である。
【図１３】本発明の仮想サーバのハードウェア構成例を示すブロック図である。
【図１４】背景技術による差分ディスク方式の仮想マシンのファイルシステムへのアクセス方法を示す図である。
【図１５】背景技術による課題を説明する図である。
【発明を実施するための形態】
【００１８】
本発明の上記及び他の目的、特徴及び利点を明確にすべく、添付した図面を参照しながら、本発明の実施形態を以下に詳述する。なお、上述の本願発明の目的のほか、他の技術的課題、その技術的課題を解決する手段及びその作用効果についても、以下の実施形態による開示によって明らかとなるものである。なお、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１９】
（第１の実施の形態）
本発明では、仮想マシンに対し、同じ内容のファイルは同じアドレスのディスクブロックに書き込みを行うように制御するコンテンツアドレス（Ｃｏｎｔｅｎｔｓ  Ａｄｄｒｅｓｓ）プログラム（以下ＣＡプログラム）を導入する。ＣＡプログラムにより、複数の仮想マシン間で、同一の内容のファイルのブロックを同じアドレスに保存ができ、差分ディスク方式で作成された仮想マシンにおいて、複数仮想マシンで共通するファイルブロックを抜き出し、マスタに配置することが可能となる。
【００２０】
以下、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００２１】
図１は、本発明の第１の実施の形態に係る仮想化システム１０００の構成を示すブロック図である。仮想化システム１０００は、仮想サーバ１０と、ストレージ３００とを備える。
【００２２】
仮想サーバ１０では、仮想マシン１１〜１３（仮想マシン１〜３）が動作している。なお、仮想マシンの数はこれに限定されるものではなく、任意に設定可能であるものとする。
【００２３】
仮想マシン１１〜１３には、それぞれストレージ装置３００上のディスク領域が割り当てられている。また、仮想マシン１１〜１３は、差分ディスク方式で作成されている。
【００２４】
ストレージ装置３００は、各仮想マシンで共通するマスタイメージ２００と、そのマスタの差分からなる差分ディスク２０１〜２０３で構成されている。マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンが作成され、各仮想マシンの差分が差分ディスクに保存される。
【００２５】
各仮想マシン１１〜１３では、同じ内容のファイルのブロックを同一のアドレスに格納するＣＡプログラム１００が動作している。ＣＡプログラム（Contents Addressプログラム）は、ＣＡアドレスＩＤ（ファイル名などのファイルのメタデータとファイルブロックの内容から決められるＩＤ）から、ファイルブロックの格納アドレスを決定する。
【００２６】
ＣＡプログラムが動作するコンポーネントには、３種類の方法が考えられる。
【００２７】
１つ目の実現方法は、ディスクドライバ内で動作する方法である。ファイルシステムから、ファイルブロックの書き込みが行われると、ＣＡプログラムはファイルブロックのアドレスの変換を行う。仮想ディスクへの書き込みは、この変換後のアドレスに行うことで同一の内容が、同一アドレスの仮想ディスクに保存される。この実現方法は重複排除ストレージ機能を仮想ＯＳにおいた上で各ブロックのＣＡ  ＩＤをキーとしてディスク上の物理アドレスも決める。ただし、この方式の場合は、ディスクドライバないでファイルのメタデータを取得することが難しいため、アドレスの変換はメタデータを使用せず、ファイルブロックの内容のみで行う。
【００２８】
２つ目の実現方法は、ファイルシステムで動作する方法である。ファイルシステムでは、書き込みを行うファイルのブロックアドレスと仮想ディスクのアドレスを管理するテーブルが存在する。通常のファイルシステムでは、空き仮想ディスクアドレスが使用されるが、本実施の形態では、ＣＡプログラムにより、ＣＡ  ＩＤから仮想ディスクアドレスを決定する。この方法により、同一の内容が、同一アドレスの仮想ディスクに保存される。
【００２９】
３つ目の実現方法は、ファイルの再配置プログラム内で動作する方法である。再配置プログラムが、ファイルの再配置を行う際に、ＣＡ  ＩＤから仮想ディスクアドレスを決定することにより、ファイルの再配置完了後には同一の内容が、同一アドレスの仮想ディスクに保存される。この実現方法では、ＣＡプログラムにより、一般的なデフラグとは逆に、ファイルの配置がストレージ内で分散してしまい、ディスクアクセスが非効率になってしまう。しかし、近年では、ＳＳＤなどランダムアクセスの性能に優れたデバイスが普及しており、この方式を実現することが可能となっている。
【００３０】
仮想サーバ１０上で動作するマスタ更新マネージャ１０１は、各仮想マシン１１〜１３で内容が共通するブロックを検索し、そのブロックをマスタに反映、重複している部分を排除する機能を備えている。
【００３１】
（第１の実施の形態の動作の説明）
次に、本実施の形態による仮想化システム１０００の動作について、図面を参照して詳細に説明する。
【００３２】
図２は、本発明における仮想マシンでのファイルの書き込み方法を示す図である。以下の説明では、仮想マシン１、２を例にとって説明する。
【００３３】
マスタイメージ２００は、差分ディスク方式で作成された仮想マシン１、２のマスタイメージである。各仮想マシン１、２は、共通部分以外を保持する差分ディスク２０１、２０２をそれぞれ保持している。
【００３４】
本発明では、ＣＡプログラム１００により、同じ内容のファイルブロック２１１、２１２が仮想マシン１、２の各差分ディスク２０１、２０２の同じ位置に保存されるように処理が行われる。
【００３５】
マスタ更新マネージャ１０１、は定期的に仮想マシン１、２のディスクに共通部分が存在するかを探索する。ＣＡプログラム１００により同じ内容のブロックは同じアドレスに保存されるため、マスタ更新マネージャ１０１が行う共通ブロックの探索は、同じアドレスのブロック同士を対比して確認するだけでよく、効率よく探索を行うことが可能である。
【００３６】
マスタ更新マネージャ１０１の探索により、対象仮想マシンで内容が共通のブロックとしてブロック２１１、２１２が存在した場合は、この内容をマスタのブロック２１３にコピーする。次いで、各仮想マシンの差分ディスク２０１、２０２から、マスタイメージ２００にコピーを行った共通部分（ブロック２１１、２１２）の削除を行う。差分ディスク２０１、２０２から削除が行われた個所（ブロック２１１、２１２）にアクセスを行う場合は、図１２で説明したように、マスタにアクセスが行われる。
【００３７】
図３は、本実施の形態におけるＣＡプログラム１００の動作を示すフローチャートである。ＣＡプログラム１００は、ファイルブロックの書き込み指示があると（ステップＳ１１０１）、その対象ブロックのファイル名などのメタデータとデータの内容から決定されるＣＡ  ＩＤを求める（ステップＳ１１０２）。ＣＡ  ＩＤは、一種のハッシュ値である。
【００３８】
このＣＡ  ＩＤを元にして、ＣＡプログラム１００は、ファイルブロックを保存するアドレスへの変換を行う（ステップＳ１１０３）。そして、ＣＡプログラム１００は、変換後のアドレスが既に使用されているかを、アドレス変換テーブルを探索して確認を行う（ステップＳ１１０４）。
【００３９】
ＣＡ  ＩＤは、ファイルの内容から決定するが、一意性を保証できず、内容が異なる場合も同じ値になることがありあえる。もし、変換後のアドレスが使用されている場合は、ＣＡプログラム１００はアドレスの再変換を行う。このアドレスの再変換には複数の方法が考えられるが、その一つとしては、変換後のアドレスの１ブロックとなりを利用する方法がある（ステップＳ１１０５）。
【００４０】
ＣＡプログラム１００は、使用されていない変換後のアドレスが発見できるまで、アドレスの変換を行う。使用されていない変換後アドレスが発見できれば、ＣＡプログラム１００は、変換前アドレスと変換後アドレスをテーブルに保存し、ファイルブロックの書き込みを行う（ステップＳ１１０６）。
【００４１】
図４は、ＣＡプログラム１００がディスクドライバ１１２内で動作する場合を示す図である。本実施の形態では、ＣＡプログラム１００はディスクドライバ１１２内で動作する。本実施の形態の場合、ファイルシステム１１３で利用しているアドレスと、ＣＡプログラム１００により変換されたアドレスを管理するアドレス変換テーブル１１１をディスクドライバ１１２内に保持する。ディスクドライバ１１２から、ファイルブロック３２１、３２２の書き込みを行う場合は、このアドレス変換テーブル１１１に変換前、変換後のアドレスを追加する。ファイルブロックの読み込みを行う場合は、アドレス変換テーブル１１１により、アドレスを変換して、変換後のアドレスにより、読み込みを行う。
【００４２】
図５は、ＣＡプログラム１００がディスクドライバ１１２に存在する場合におけるＣＡプログラム１００の動作を示すフローチャートである。ファイルブロックの書き込み指示がファイルシステム１１３に対して行われると（ステップＳ１２０１）、ディスクドライバ１１２内で動作するＣＡプログラム１００が、ブロックアドレスから仮想ディスクアドレス（変換後アドレス）に変換を行う（ステップＳ１２０２）。ファイルシステム１１３では、変換後のアドレス位置にファイルブロックの内容の書き込みを行う（ステップＳ１２０３）。
【００４３】
図６は、ＣＡプログラム１００がファイルシステム１１３に組み込まれている場合を示す図である。ＣＡプログラム１００はファイルシステム１１３に組み込まれていて、ブロックアドレスから仮想ディスクアドレスの決定をＣＡプログラム１００により行う。ＣＡプログラム１００は、ＣＡ  ＩＤから仮想ディスクアドレスを決定し、同じ内容のファイルブロックが同じアドレスに書き込みされる。
【００４４】
図７は、ＣＡプログラム１００がファイルシステム１１３に存在する場合の動作を示すフローチャートである。ファイルブロックの書き込み指示がファイルシステム１１３に対して行われると（ステップＳ１３０１）、ファイルシステム１１３内で動作するＣＡプログラム１００が、ブロックアドレスから仮想ディスクアドレスに変換を行う（ステップＳ１３０２）。ファイルシステム１１３では、変換後のアドレス位置にファイルブロックの内容の書き込みを行う（ステップＳ１３０３）。
【００４５】
図８は、ＣＡプログラム１００が仮想マシン１１上で動作する再配置プログラム１１５内に存在する場合を示す図である。ファイルのデフラグをこの再配置プログラム１１５により実行した場合に、ＣＡ  ＩＤから仮想ディスクアドレスを決定し、ブロックを移動させる。この再配置プログラム１１５により、複数仮想マシン間で同じ内容のファイルブロックが同じアドレスの位置に配置される。
【００４６】
図９は、ＣＡプログラム１００が仮想マシン１１上で動作する再配置プログラム１１５内に存在する場合の動作を示すフローチャートである。再配置プログラム１１５を実行すると、ファイルブロックの移動が行われる。ＣＡプログラム１００が、ファイルブロックの移動先のアドレスを、ＣＡ  ＩＤに基づき決定する（ステップＳ１４０１）。再配置プログラム１１５は、変換されたアドレスにファイルブロックを移動する（ステップＳ１４０２）。
【００４７】
図１０は、本実施の形態において、共通部分をマスタに反映する場合の動作を示すフローチャートである。マスタ更新マネージャ１０１が、各仮想マシンの差分ディスクを参照し、ファイルブロックの内容が一致するブロックを探索する（ステップＳ１５０１）。次いで、マスタ更新マネージャ１０１は、内容が一致しているファイルブロックをマスタイメージにコピーを行う（ステップＳ１５０２）。最後に、マスタ更新マネージャ１０１は、マスタイメージにコピーしたファイルブロックを、仮想マシンの差分ディスクから削除する（ステップＳ１５０３）。
【００４８】
ところで、図３で説明したＣＡプログラム１００では、変換後のアドレスが使用済みであれば、その他の空きアドレスを候補とした。これは、ＣＡ  ＩＤが同一であれば、保存する内容が同一であることを保証できないためである。
【００４９】
しかし、実際にはＣＡ  ＩＤが同一で、内容が異なる可能性は十分に低い。そこで、図１１に示すフローチャートのように、変換後アドレスが使用済みの場合、ファイルブロックの内容が一致するかを確認し、一致した場合は、書き込みを省くという手順も考えられる。図３、図１１で説明したフローチャートでは、変換後のアドレスが使用できない場合に、アドレスを１つずらし、隣のブロックを利用しているが、最初に利用したＣＡ  ＩＤとは別のアルゴリズムで再度ＣＡ  ＩＤを計算する方法が考えられる。
【００５０】
（第１の実施の形態による効果）
本実施の形態によれば、仮想化環境において、仮想マシンで同じ内容のファイルブロックを同じアドレスに保存する技術と各仮想マシンの差分ディスクに存在する共通部分をマスタに反映する技術を組み合わせることにより、各差分ディスクに存在する共通部分をマスタイメージに移動することが可能となり、システム全体でのディスク使用量を削減することができる。すなわち、仮想マシンの差分ディスクから共通する部分をマスタとなる仮想マシンに移動することにより、ストレージの使用量を削減することが可能となる。
【００５１】
また、本実施の形態によれば、仮想マシンからファイルの書き込みを行う際に、同じ内容であれば、同じアドレスに保存を行うため、共通部分の探索に全探索を行う必要がなく、高速に処理を行うことが可能となる。
【００５２】
また、本実施の形態によれば、各仮想マシンからＯＳのホットフィックスなどの共通部分をマスタに反映するので、マスタの更新による仮想マシンを再作成する必要がなくなり、運用の手間を減らすことが可能となる。さらに、ＯＳのホットフィックスやアプリケーション以外に、各仮想マシンが共通して保持しているファイルも同時に重複を発見し、マスタに移動することにより、ディスクの使用量を減らすことが可能となる。
【００５３】
また、本実施の形態では、ストレージの種類を選ばず、また、複数のストレージで重複しているファイルを削除することが可能となる。
【００５４】
ここで、本発明の課題を解決できる最小限の構成を図１２に示す。仮想化システム１０００が、マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンが動作する仮想化システム１０００であって、複数の仮想マシンを含む仮想サーバ１０と、マスタイメージ及び差分ディスクを格納するストレージ３００とを備え、仮想サーバ１０が、各仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を含むことで、上述した本発明の課題を解決することができる。
【００５５】
次に、本発明の仮想サーバ１０のハードウェア構成例について、図１３を参照して説明する。
【００５６】
図１３を参照すると、本発明の仮想サーバ１０は、一般的なコンピュータ装置と同様のハードウェア構成であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリからなる、データの作業領域やデータの一時退避領域に用いられる主記憶部４０２、ネットワークを介してデータの送受信を行う通信部４０３、入力装置４０５や出力装置４０６及び記憶装置４０７と接続してデータの送受信を行う入出力インタフェース部４０４、上記各構成要素を相互に接続するシステムバス４０８を備えている。記憶装置４０７は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置等で実現される。
【００５７】
本発明の仮想サーバ１０の各機能は、プログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、記憶装置４０７に格納し、そのプログラムを主記憶部４０２にロードしてＣＰＵ４０１で実行することにより、ソフトウェア的に実現することも可能である。
【００５８】
以上、好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【００５９】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００６０】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００６１】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【００６２】
また、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【００６３】
さらに、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
【００６４】
（付記１）
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンが動作する仮想化システムであって、
複数の仮想マシンを含む仮想サーバと、
前記マスタイメージ及び差分ディスクを格納するストレージとを備え、
前記仮想サーバが、
各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を含む
ことを特徴とする仮想化システム。
【００６５】
（付記２）
定期的に、各差分ディスクに同一内容のファイルブロックが存在するか探索し、存在する場合、前記マスタイメージ上の、当該差分ディスク上のアドレスと同一アドレスに当該ファイルブロックを保存するとともに、前記差分ディスク上の当該ファイルブロックを削除するマスタ更新マネージャを備える
ことを特徴とする付記１に記載の仮想化システム。
【００６６】
（付記３）
変換前のアドレスと変換後のアドレスを格納するアドレス変換テーブルを備え、
前記制御手段は、
ファイルブロックの書き込み指示があった場合、当該ブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤを求め、当該ＣＡ  ＩＤを元にアドレスの変換を行い、
変換後のアドレスに対してファイルブロックの書き込みを行い、
変換前のアドレスと変換後のアドレスをアドレス変換テーブルに保存する
ことを特徴とする付記１又は付記２に記載の仮想化システム。
【００６７】
（付記４）
前記制御手段は、
前記変換後のアドレスが使用されている場合、アドレスの再変換を行う
ことを特徴とする付記３に記載の仮想化システム。
【００６８】
（付記５）
前記制御手段は、
前記変換後のアドレスが使用されている場合、書き込み対象のファイルブロックと既に書き込まれているファイルブロックの内容が一致するか確認し、一致する場合は書き込みを行わずに処理を終了し、
ファイルブロックの内容が一致しない場合、アドレスの再変換を行う
ことを特徴とする付記３に記載の仮想化システム。
【００６９】
（付記６）
前記制御手段は、
前記変換後のアドレスが使用されている場合、当該変換後のアドレスの１ブロック隣を変換後アドレスとして再変換行う
ことを特徴とする付記４又は付記５に記載の仮想化システム。
【００７０】
（付記７）
ファイルブロックの再配置を行う再配置手段を備え、
前記制御手段が、
前記仮想マシン上でファイルのデフラグが行われた場合に、ファイルブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤに基づき前記ファイルブロックの移動先のアドレスを決定し、
前記再配置手段が、
前記制御手段により決定された移動先のアドレスに前記ファイルブロックを移動する
ことを特徴とする付記１から付記６の何れか１項に記載の仮想化システム。
【００７１】
（付記８）
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバであって、
各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御手段を備える
ことを特徴とする仮想サーバ。
【００７２】
（付記９）
定期的に、各差分ディスクに同一内容のファイルブロックが存在するか探索し、存在する場合、前記マスタイメージ上の、当該差分ディスク上のアドレスと同一アドレスに当該ファイルブロックを保存するとともに、前記差分ディスク上の当該ファイルブロックを削除するマスタ更新マネージャを備える
ことを特徴とする付記８に記載の仮想サーバ。
【００７３】
（付記１０）
変換前のアドレスと変換後のアドレスを格納するアドレス変換テーブルを備え、
前記制御手段は、
ファイルブロックの書き込み指示があった場合、当該ブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤを求め、当該ＣＡ  ＩＤを元にアドレスの変換を行い、
変換後のアドレスに対してファイルブロックの書き込みを行い、
変換前のアドレスと変換後のアドレスをアドレス変換テーブルに保存する
ことを特徴とする付記８又は付記９に記載の仮想サーバ。
【００７４】
（付記１１）
前記制御手段は、
前記変換後のアドレスが使用されている場合、アドレスの再変換を行う
ことを特徴とする付記１０に記載の仮想サーバ。
【００７５】
（付記１２）
前記制御手段は、
前記変換後のアドレスが使用されている場合、書き込み対象のファイルブロックと既に書き込まれているファイルブロックの内容が一致するか確認し、一致する場合は書き込みを行わずに処理を終了し、
ファイルブロックの内容が一致しない場合、アドレスの再変換を行う
ことを特徴とする付記１０に記載の仮想サーバ。
【００７６】
（付記１３）
前記制御手段は、
前記変換後のアドレスが使用されている場合、当該変換後のアドレスの１ブロック隣を変換後アドレスとして再変換行う
ことを特徴とする付記１１又は付記１２に記載の仮想サーバ。
【００７７】
（付記１４）
ファイルブロックの再配置を行う再配置手段を備え、
前記制御手段が、
前記仮想マシン上でファイルのデフラグが行われた場合に、ファイルブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤに基づき前記ファイルブロックの移動先のアドレスを決定し、
前記再配置手段が、
前記制御手段により決定された移動先のアドレスに前記ファイルブロックを移動する
ことを特徴とする付記８から付記１３の何れか１項に記載の仮想サーバ。
【００７８】
（付記１５）
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバによるファイル書き込み方法であって、
制御手段が、各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御ステップを有する
ことを特徴とするファイル書き込み方法。
【００７９】
（付記１６）
マスタ更新マネージャが、定期的に、各差分ディスクに同一内容のファイルブロックが存在するか探索し、存在する場合、前記マスタイメージ上の、当該差分ディスク上のアドレスと同一アドレスに当該ファイルブロックを保存するとともに、前記差分ディスク上の当該ファイルブロックを削除するマスタ更新ステップを有する
ことを特徴とする付記１５に記載のファイル書き込み方法。
【００８０】
（付記１７）
前記制御ステップで、
ファイルブロックの書き込み指示があった場合、当該ブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤを求め、当該ＣＡ  ＩＤを元にアドレスの変換を行い、
変換後のアドレスに対してファイルブロックの書き込みを行い、
変換前のアドレスと変換後のアドレスをアドレス変換テーブルに保存する
ことを特徴とする付記１５又は付記１６に記載のファイル書き込み方法。
【００８１】
（付記１８）
前記制御ステップで、
前記変換後のアドレスが使用されている場合、アドレスの再変換を行う
ことを特徴とする付記１７に記載のファイル書き込み方法。
【００８２】
（付記１９）
前記制御ステップで、
前記変換後のアドレスが使用されている場合、書き込み対象のファイルブロックと既に書き込まれているファイルブロックの内容が一致するか確認し、一致する場合は書き込みを行わずに処理を終了し、
ファイルブロックの内容が一致しない場合、アドレスの再変換を行う
ことを特徴とする付記１７に記載のファイル書き込み方法。
【００８３】
（付記２０）
前記制御ステップで、
前記変換後のアドレスが使用されている場合、当該変換後のアドレスの１ブロック隣を変換後アドレスとして再変換行う
ことを特徴とする付記１８又は付記１９に記載のファイル書き込み方法。
【００８４】
（付記２１）
再配置手段が、ファイルブロックの再配置を行う再配置ステップを有し、
前記制御ステップで、
前記仮想マシン上でファイルのデフラグが行われた場合に、ファイルブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤに基づき前記ファイルブロックの移動先のアドレスを決定し、
前記再配置ステップで、
前記制御ステップにより決定された移動先のアドレスに前記ファイルブロックを移動する
ことを特徴とする付記１５から付記２０の何れか１項に記載のファイル書き込み方法。
【００８５】
（付記２２）
マスタとなる仮想マシンをマスタイメージとして複数の仮想マシンを作成し、各仮想マシンの差分を差分ディスクに保存する差分ディスク方式の仮想マシンを含む仮想サーバ上で動作するファイル書き込みプログラムであって、
制御手段に、各前記仮想マシンについて、同じ内容のファイルブロックをそれぞれの差分ディスク上の同一アドレスに格納する制御処理を実行させる
ことを特徴とするファイル書き込みプログラム。
【００８６】
（付記２３）
マスタ更新マネージャに、定期的に、各差分ディスクに同一内容のファイルブロックが存在するか探索し、存在する場合、前記マスタイメージ上の、当該差分ディスク上のアドレスと同一アドレスに当該ファイルブロックを保存するとともに、前記差分ディスク上の当該ファイルブロックを削除するマスタ更新処理を実行させる
ことを特徴とする付記２２に記載のファイル書き込みプログラム。
【００８７】
（付記２４）
前記制御処理で、
ファイルブロックの書き込み指示があった場合、当該ブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤを求め、当該ＣＡ  ＩＤを元にアドレスの変換を行い、
変換後のアドレスに対してファイルブロックの書き込みを行い、
変換前のアドレスと変換後のアドレスをアドレス変換テーブルに保存する
ことを特徴とする付記２２又は付記２３に記載のファイル書き込みプログラム。
【００８８】
（付記２５）
前記制御処理で、
前記変換後のアドレスが使用されている場合、アドレスの再変換を行う
ことを特徴とする付記２４に記載のファイル書き込みプログラム。
【００８９】
（付記２６）
前記制御処理で、
前記変換後のアドレスが使用されている場合、書き込み対象のファイルブロックと既に書き込まれているファイルブロックの内容が一致するか確認し、一致する場合は書き込みを行わずに処理を終了し、
ファイルブロックの内容が一致しない場合、アドレスの再変換を行う
ことを特徴とする付記２４に記載のファイル書き込みプログラム。
【００９０】
（付記２７）
前記制御処理で、
前記変換後のアドレスが使用されている場合、当該変換後のアドレスの１ブロック隣を変換後アドレスとして再変換行う
ことを特徴とする付記２５又は付記２６に記載のファイル書き込みプログラム。
【００９１】
（付記２８）
再配置手段に、ファイルブロックの再配置を行う再配置処理を実行させ、
前記制御処理で、
前記仮想マシン上でファイルのデフラグが行われた場合に、ファイルブロックのメタデータ及びデータ内容に基づきハッシュ値であるＣＡ  ＩＤに基づき前記ファイルブロックの移動先のアドレスを決定し、
前記再配置処理で、
前記制御処理により決定された移動先のアドレスに前記ファイルブロックを移動する
ことを特徴とする付記２２から付記２７の何れか１項に記載のファイル書き込みプログラム。
【符号の説明】
【００９２】
１０：仮想サーバ
１１〜１３：仮想マシン
１００：ＣＡプログラム
１０１：マスタ更新マネージャ
１１１：アドレス変換テーブル
１１２：ディスクドライバ
１１３：ファイルシステム
１１４：仮想ディスクアドレス変換テーブル
１１５：再配置プログラム
２００：マスタイメージ
２０１〜２０３：差分ディスク
２１１〜２１３、３２１、３２２、３３１、３３２：ファイルブロック
３００：ストレージ
４０１：ＣＰＵ
４０２：主記憶部
４０３：通信部
４０４：入出力インタフェース部
４０５：入力装置
４０６：出力装置
４０７：記憶装置
４０８：システムバス
１０００：仮想化システム
【図１】
2014191405.tif 000003
【図２】
2014191405.tif 000004
【図３】
2014191405.tif 000005
【図４】
2014191405.tif 000006
【図５】
2014191405.tif 000007
【図６】
2014191405.tif 000008
【図７】
2014191405.tif 000009
【図８】
2014191405.tif 000010
【図９】
2014191405.tif 000011
【図１０】
2014191405.tif 000012
【図１１】
2014191405.tif 000013
【図１２】
2014191405.tif 000014
【図１３】
2014191405.tif 000015
【図１４】
2014191405.tif 000016
【図１５】
2014191405.tif 000017