(57)【要約】【課題】仮想化技術を用いた計算機システムにおいて、各仮想マシンに分散して存在する類似データを発見して冗長な記録を削除する。【解決手段】メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて確認する。類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出しブロックデータ比較結果とする。前記置換対象のデータを前記記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする。【選択図】図１−１
2010026790.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置上のデータの管理単位としてブロックを用い、或る一塊のデータを1個以上のブロックの集合として格納するデータ格納システムが、
メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて実際に確認できた場合は、前記類似データの存在を前記類似判定基準と共に類似ブロック置換手段に通知する類似データ発見手段と、
ブロックデータの差分を算出しブロックデータ比較結果とするブロックデータ比較手段と、
前記類似データ発見手段から通知された情報に基づいて類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出させるブロックデータ比較手段を選択し、前記置換対象のデータを前記記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする類似ブロック置換手段と、
を備えることを特徴とするデータ格納システム。
【請求項２】
前記ブロックデータ比較手段は、前記差分の算出の前処理として、データ変換を行うことを特徴とする請求項１記載のデータ格納システム。 
【請求項３】
或る仮想マシン上で一意なデータ識別子と同仮想マシン上で一意な仮想ブロック識別子を関連付けて管理するデータマップ管理手段と、
一意な仮想マシン識別子と仮想ブロック識別子の組に対して、実ブロック識別子を関連付けて、若しくは前記仮想マシン識別子と前記仮想ブロック識別子の組によって特定される仮想ブロックとの比較対象となったブロックの仮想ブロック識別子に対応する仮想マシン識別子を組にしたものと、比較に用いたブロックデータ比較手段を識別するためのブロックデータ比較手段識別子とブロックデータ比較手段が出力した前記ブロックデータ比較結果からなる類似データ復元用情報を関連付けることによって、識別子同士の関連を管理するブロックマップ管理手段と、
前記実ブロック識別子に対応付けて実ブロックデータを記憶する実ブロック記憶手段と、
を備えることを特徴とする請求項１又は２に記載のデータ格納システム。
【請求項４】
前記類似ブロック置換手段が、前記置換対象のブロックの、仮想マシン識別子及び仮想ブロック識別子について、実ブロック識別子から類似データ復元用情報に置換することを指示し、前記ブロックマップ管理手段がブロック置換手段からの前記指示に従い関連付けを置換することを特徴とする請求項３記載のデータ格納システム。
【請求項５】
仮想ブロック識別子をパラメータとして含み、仮想ブロックデータ読み込みを指示するコマンドである仮想ブロックアクセスコマンドを受け取った際に、前記仮想ブロックアクセスコマンドの送信元の仮想マシン識別子と仮想ブロック識別子の組に関連付けられた実ブロック識別子、若しくは類似データ復元用情報をブロックマップ管理手段から取得するブロックデータアクセス手段を更に備え、
前記ブロックデータアクセス手段は、前記仮想ブロックアクセスコマンドの返答として類似データ復元用情報を取得した場合には、取得した当該類似データ復元用情報中の情報に基づいて復元したブロックデータを引き渡すことを特徴とする請求項３又は４に記載のデータ格納システム。
【請求項６】
前記ブロックデータアクセス手段から入力された情報に基づき前記置換対象となったブロックのデータを復元するブロックデータ復元手段を更に備え、
前記ブロックデータアクセス手段は、前記類似データ復元用情報に含まれる、ブロックデータ比較手段識別子に対応した前記ブロックデータ復元手段に対して、前記類似データ復元用情報中の比較結果と、前記比較対象となった仮想ブロック識別子と、前記仮想マシン識別子に対応する仮想ブロックデータとを入力することを特徴とする請求項５に記載のデータ格納システム。 
【請求項７】
前記類似データ発見手段は、前記データ識別子としてファイル名を用い、前記データ管理手段はファイルシステムであることを特徴とする請求項３乃至６の何れか１項に記載のデータ格納システム。
【請求項８】
前記類似データ発見手段は、前記データ識別子としてファイル名を用い、前記データ管理手段はファイルメモリマップシステムであることを特徴とする請求項３乃至６の何れか１項に記載のデータ格納システム。
【請求項９】
前記類似データ発見手段は、前記メタ情報として、仮想マシン上で動作しているオペレーティングシステムの名称を用いることを特徴とする請求項１乃至８の何れか１項に記載のデータ格納システム。
【請求項１０】
メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて実際に確認できた場合は、前記類似データの存在を前記類似判定基準と共に類似ブロック置換ステップに通知する類似データ発見ステップと、
ブロックデータ比較手段が、ブロックデータの差分を算出しブロックデータ比較結果とするブロックデータ比較ステップと、
前記類似データ発見ステップから通知された情報に基づいて類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出させるブロックデータ比較手段を選択し、前記置換対象のデータを記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする類似ブロック置換ステップと、
を備え、前記各ステップを、記憶装置上のデータの管理単位としてブロックを用い、或る一塊のデータを1個以上のブロックの集合として格納するデータ格納システムで行うこと特徴とするデータ格納方法。
【請求項１１】
前記ブロックデータ比較ステップにおいて、前記差分の算出の前処理として、データ変換を行うことを特徴とする請求項１０記載のデータ格納方法。 
【請求項１２】
或る仮想マシン上でデータマップ管理手段が、一意なデータ識別子と同仮想マシン上で一意な仮想ブロック識別子を関連付けて管理するデータマップ管理ステップと、
一意な仮想マシン識別子と仮想ブロック識別子の組に対して、実ブロック識別子を関連付けて、若しくは前記仮想マシン識別子と前記仮想ブロック識別子の組によって特定される仮想ブロックとの比較対象となったブロックの仮想ブロック識別子に対応する仮想マシン識別子を組にしたものと、比較に用いたブロックデータ比較手段を識別するためのブロックデータ比較手段識別子とブロックデータ比較手段が出力した前記ブロックデータ比較結果からなる類似データ復元用情報を関連付けることによって、識別子同士の関連を管理するブロックマップ管理ステップと、
前記実ブロック識別子に対応付けて実ブロックデータを記憶する実ブロック記憶ステップと、
を備えることを特徴とする請求項１０又は１１に記載のデータ格納方法。
【請求項１３】
前記類似ブロック置換ステップにおいて、前記置換対象のブロックの、仮想マシン識別子及び仮想ブロック識別子について、実ブロック識別子から類似データ復元用情報に置換することを指示し、前記ブロックマップ管理ステップにおいてブロック置換ステップにおける前記指示に従い関連付けを置換することを特徴とする請求項１２記載のデータ格納方法。
【請求項１４】
仮想ブロック識別子をパラメータとして含み、仮想ブロックデータ読み込みを指示するコマンドである仮想ブロックアクセスコマンドを受け取った際に、前記仮想ブロックアクセスコマンドの送信元の仮想マシン識別子と仮想ブロック識別子の組に関連付けられた実ブロック識別子、若しくは類似データ復元用情報をブロックマップ管理手段から取得するブロックデータアクセスステップを更に備え、
前記ブロックデータアクセスステップにおいて前記仮想ブロックアクセスコマンドの返答として類似データ復元用情報を取得した場合には、取得した当該類似データ復元用情報中の情報に基づいて復元したブロックデータを引き渡すことを特徴とする請求項１２又は１３に記載のデータ格納方法。 
【請求項１５】
ブロックデータ復元手段が、前記ブロックデータアクセスステップから入力された情報に基づき前記置換対象となったブロックのデータを復元するブロックデータ復元ステップを更に備え、
前記ブロックデータアクセスステップにおいて、前記類似データ復元用情報に含まれる、ブロックデータ比較ステップ識別子に対応した前記ブロックデータ復元手段に対して、前記類似データ復元用情報中の比較結果と、前記比較対象となった仮想ブロック識別子と、前記仮想マシン識別子に対応する仮想ブロックデータとを入力することを特徴とする請求項１４に記載のデータ格納方法。
【請求項１６】
前記類似データ発見ステップにおいて、前記データ識別子としてファイル名を用い、前記データ管理ステップはファイルステップであることを特徴とする請求項１２乃至１５の何れか１項に記載のデータ格納方法。
【請求項１７】
前記類似データ発見ステップにおいて、前記データ識別子としてファイル名を用い、前記データ管理ステップはファイルメモリマップステップであることを特徴とする請求項１２乃至１５の何れか１項に記載のデータ格納方法。
【請求項１８】
前記類似データ発見ステップにおいて、前記メタ情報として、仮想マシン上で動作しているオペレーティングシステムの名称を用いることを特徴とする請求項１０乃至１７の何れか１項に記載のデータ格納方法。
【請求項１９】
記憶装置上のデータの管理単位としてブロックを用い、或る一塊のデータを1個以上のブロックの集合として格納するデータ格納システムが、
メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて実際に確認できた場合は、前記類似データの存在を前記類似判定基準と共に類似ブロック置換手段に通知する類似データ発見手段と、
ブロックデータの差分を算出しブロックデータ比較結果とするブロックデータ比較手段と、
前記類似データ発見手段から通知された情報に基づいて類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出させるブロックデータ比較手段を選択し、前記置換対象のデータを前記記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする類似ブロック置換手段と、
を備えるデータ格納システムとしてコンピュータを機能させることを特徴とするデータ格納プログラム。
【請求項２０】
請求項１９記載のプログラムにおいて、
前記ブロックデータ比較手段は、前記差分の算出の前処理として、データ変換を行うことを特徴とするデータ格納プログラム。
【請求項２１】
或る仮想マシン上で一意なデータ識別子と同仮想マシン上で一意な仮想ブロック識別子を関連付けて管理するデータマップ管理手段と、
一意な仮想マシン識別子と仮想ブロック識別子の組に対して、実ブロック識別子を関連付けて、若しくは前記仮想マシン識別子と前記仮想ブロック識別子の組によって特定される仮想ブロックとの比較対象となったブロックの仮想ブロック識別子に対応する仮想マシン識別子を組にしたものと、比較に用いたブロックデータ比較手段を識別するためのブロックデータ比較手段識別子とブロックデータ比較手段が出力した前記ブロックデータ比較結果からなる類似データ復元用情報を関連付けることによって、識別子同士の関連を管理するブロックマップ管理手段と、
前記実ブロック識別子に対応付けて実ブロックデータを記憶する実ブロック記憶手段と、
を更に備えるデータ格納システムとしてコンピュータを機能させることを特徴とする請求項１９又は２０に記載のデータ格納プログラム。
【請求項２２】
請求項２１記載のデータ格納プログラムにおいて
前記類似ブロック置換手段が、前記置換対象のブロックの、仮想マシン識別子及び仮想ブロック識別子について、実ブロック識別子から類似データ復元用情報に置換することを指示し、前記ブロックマップ管理手段がブロック置換手段からの前記指示に従い関連付けを置換することを特徴とするデータ格納プログラム。
【請求項２３】
仮想ブロック識別子をパラメータとして含み、仮想ブロックデータ読み込みを指示するコマンドである仮想ブロックアクセスコマンドを受け取った際に、前記仮想ブロックアクセスコマンドの送信元の仮想マシン識別子と仮想ブロック識別子の組に関連付けられた実ブロック識別子、若しくは類似データ復元用情報をブロックマップ管理手段から取得するブロックデータアクセス手段を更に備え、
前記ブロックデータアクセス手段は、前記仮想ブロックアクセスコマンドの返答として類似データ復元用情報を取得した場合には、取得した当該類似データ復元用情報中の情報に基づいて復元したブロックデータを引き渡すデータ格納システムとしてコンピュータを機能させることを特徴とする請求項２１又は２２に記載のデータ格納プログラム。 
【請求項２４】
前記ブロックデータアクセス手段から入力された情報に基づき前記置換対象となったブロックのデータを復元するブロックデータ復元手段を更に備え、
前記ブロックデータアクセス手段は、前記類似データ復元用情報に含まれる、ブロックデータ比較手段識別子に対応した前記ブロックデータ復元手段に対して、前記類似データ復元用情報中の比較結果と、前記比較対象となった仮想ブロック識別子と、前記仮想マシン識別子に対応する仮想ブロックデータとを入力するデータ格納システムとしてコンピュータを機能させることを特徴とする請求項２３に記載のデータ格納プログラム。
【請求項２５】
請求項２１乃至２４の何れか１項に記載のデータ格納プログラムにおいて、
前記類似データ発見手段は、前記データ識別子としてファイル名を用い、前記データ管理手段はファイルシステムであることを特徴とするデータ格納プログラム。
【請求項２６】
請求項２１乃至２４の何れか１項に記載のデータ格納プログラムにおいて、
前記類似データ発見手段は、前記データ識別子としてファイル名を用い、前記データ管理手段はファイルメモリマップシステムであることを特徴とするデータ格納プログラム。
【請求項２７】
請求項１９乃至２６の何れか１項に記載のデータ格納プログラムにおいて、
前記類似データ発見手段は、前記メタ情報として、仮想マシン上で動作しているオペレーティングシステムの名称を用いることを特徴とするデータ格納プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンをホストするシステムにおけるデータ格納システム、データ格納方法及びデータ格納プログラムに関する。
【背景技術】
【０００２】
本発明に関連するデータ格納方法の一例が、特許文献１に記載されている。特許文献１に記載の方法では、データをブロック単位で取り扱い、各ブロックのハッシュ値を計算する。そして、あるブロックを保存する際に、その新規に保存しようとするブロックとハッシュ値が一致するブロックが既に保存されているか確認する。そしてハッシュ値が一致するブロックが既に保存されている場合には、新規に保存しようとしているブロックと、ハッシュ値の一致した既に保存されているブロックのデータが一致しているか否かを確認する。確認の結果、一致していた場合には、新規保存しようとしているブロックに関しては、データそのものを保存するのではなく、既に保存されているブロックを参照するためのブロック識別子を保存する。これらの動作を行うことにより、ブロックの重複保存を回避して記憶容量を節約することができる。 
【０００３】
また、本発明に関連するデータ格納方法の一例が、非特許文献１に記載されている。非特許文献１に記載の方法では、異なる仮想マシンから使用されている、異なるメモリページについてデータを比較する。そして、ページ中のデータが等しい場合には、仮想マシンマネージャ中のシャドウページ管理テーブルを変更し、異なる仮想マシンから同一のメモリページを参照するようにする。これにより、メモリページの重複使用を回避して、記憶容量を節約する。なお、非特許文献１に記載の方法では、等しいデータを保持するページを発見するために、ページ中のデータのハッシュ値を計算し、ハッシュ値の等しいページについてページ中のデータの比較を行う。 
【０００４】
また、本発明に関連するデータ格納方法の一例が、特許文献２に記載されている。特許文献２に記載の方法では、あるデータシーケンスと、別のデータシーケンスのそれぞれの、共通するデータシーケンス部分と、相違するデータシーケンス部分に分割するための区切り点を発見する。そして区切り点に基づいてデータシーケンスを分割することにより、共通するデータシーケンスの部分について、重複保存を回避して記憶容量を節約する。 
【特許文献１】米国特許出願公開第２００７／０１０１０７４号明細書
【特許文献２】米国特許第６８１０３９８号明細書
【非特許文献１】タイトル: Virtual machines: Memory resource management in VMware ESX server  著者: Carl A. Waldspurger  書誌情報: December 2002 ACM SIGOPS Operating Systems Review, Volume 36 Issue SI  Publisher: ACM Press
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した関連技術には問題点がある。第１の問題点は、複数の仮想マシンを実行するにあたって、それぞれの仮想マシンに格納されているデータから類似する部分を発見して、記憶容量を節約するのが難しいということである。
【０００６】
この点について説明する。特許文献１及び非特許文献１に示されている技術では、それぞれの仮想マシンに格納されているデータのブロックのハッシュ値を計算し、ハッシュ値が一致するブロックについて、データが一致するかを検査する。そして、データが一致したブロックの組について、組を構成するブロックの片方を削除し、以降は残存するもう片方のブロックを参照することで記憶容量を節約する。すなわち、データが完全に一致するブロックでないと削除の対象とならない。つまりデータの一部のみが同一である類似ブロックは削除対象とならない。これが第１の問題点である。
【０００７】
この点、特許文献２に示されている技術により、仮想マシン間の類似データを発見し、記憶容量を節約することが出来る。特許文献２の技術では、それぞれの仮想マシンに格納されているデータのハッシュ値を計算し、それぞれの仮想マシンに格納されているデータから不一致な部分を発見する。そして、その不一致部分を除くことにより、部分的に不一致なデータを含むデータについても、重複データとして扱え、記憶容量を節約できる。
【０００８】
つまり、特許文献２に示されている技術では、ブロックのデータが部分的に異なる場合にも有効である。つまり第１の問題点を解決することが可能である。
【０００９】
しかし、ブロックのデータの大半が見かけ上は異なる場合、例えば、同一の画像から派生した複数の画像データが、異なる画像圧縮アルゴリズムでエンコードされて保存されている場合などは、類似データであることが判定できず、記憶容量の節約が出来ないという第２の問題点がある。
【００１０】
そこで、本発明は複数の仮想マシンを実行できるシステムにおいて、それぞれの仮想マシンに格納されているデータの類似部分を削除することが可能な仮想マシン向けデータ格納システム、データ格納方法及びデータ格納用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の観点によれば、記憶装置上のデータの管理単位としてブロックを用い、或る一塊のデータを1個以上のブロックの集合として格納するデータ格納システムが、メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて実際に確認できた場合は、前記類似データの存在を前記類似判定基準と共に類似ブロック置換手段に通知する類似データ発見手段と、ブロックデータの差分を算出しブロックデータ比較結果とするブロックデータ比較手段と、前記類似データ発見手段から通知された情報に基づいて類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出させるブロックデータ比較手段を選択し、前記置換対象のデータを前記記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする類似ブロック置換手段と、を備えることを特徴とするデータ格納システムが提供される。
【００１２】
本発明の第２の観点によれば、メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて実際に確認できた場合は、前記類似データの存在を前記類似判定基準と共に類似ブロック置換ステップに通知する類似データ発見ステップと、ブロックデータ比較手段が、ブロックデータの差分を算出しブロックデータ比較結果とするブロックデータ比較ステップと、前記類似データ発見ステップから通知された情報に基づいて類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出させるブロックデータ比較手段を選択し、前記置換対象のデータを記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする類似ブロック置換ステップと、を備え、前記各ステップを、記憶装置上のデータの管理単位としてブロックを用い、或る一塊のデータを1個以上のブロックの集合として格納するデータ格納システムで行うこと特徴とするデータ格納方法が提供される。
【００１３】
本発明の第３の観点によれば、記憶装置上のデータの管理単位としてブロックを用い、或る一塊のデータを1個以上のブロックの集合として格納するデータ格納システムが、メタ情報に基づいて類似すると考えられるデータの識別子を推測し、推測された前記識別子に対応するデータを取得し、取得した前記データと類似するデータが自身以外の仮想マシン上に存在することが類似判定基準を用いて実際に確認できた場合は、前記類似データの存在を前記類似判定基準と共に類似ブロック置換手段に通知する類似データ発見手段と、ブロックデータの差分を算出しブロックデータ比較結果とするブロックデータ比較手段と、前記類似データ発見手段から通知された情報に基づいて類似するブロックの組を発見し、発見された前記類似するブロックの組の片側を置換対象、他方を比較対象、として選択し、前記類似判定基準に基づいて差分を算出させるブロックデータ比較手段を選択し、前記置換対象のデータを前記記憶装置上から削除し、前記比較対象の識別子と、前記ブロックデータ比較結果と、比較結果を算出した比較手段の種類と、からなる復元用情報と前記置換対象の識別子とを関連付けする類似ブロック置換手段と、を備えるデータ格納システムとしてコンピュータを機能させることを特徴とするデータ格納プログラムが提供される。
【発明の効果】
【００１４】
本発明によれば、複数の仮想マシン上に存在する類似データを発見し、データの類似部分を削除することから記憶装置の記憶容量を節約することが可能となる。
【発明を実施するための最良の形態】
【００１５】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１６】
図１−１及び図１−２を参照すると、本発明の第１の実施の形態は、仮想マシンＡ１００と、仮想マシンＢ１１０と、仮想マシン管理部１２０を有する。
【００１７】
仮想マシンＡ１００、仮想マシンＢ１１０及び仮想マシン管理部１２０は計算機上でソフトウェアを実行することにより得られる。すなわち、本実施形態はソフトウェアがコンピュータに読み込まれることにより、ソフトウェアとハードウェア資源とが協働した具体的手段によって、使用目的に応じた情報の演算又は加工を実現することにより実現されている。
【００１８】
仮想マシンＡ１００は、アプリケーション１０１、類似データ発見部１０２、データ管理部１０３、メタ情報管理部１０４及びデータマップ管理部１０５を有する。
【００１９】
仮想マシンＢ１１０は、アプリケーション１１１、類似データ発見部１１２、データ管理部１１３、メタ情報管理部１１４及びデータマップ管理部１１５を有する。
【００２０】
仮想マシン管理部１２０は、類似ブロック置換部１２１、仮想ブロック識別子取得部Ａ１２２、仮想ブロック識別子取得部Ｂ１２３、ブロックデータ比較手法選択部１２４、第１のブロックデータ比較部１２５、第２のブロックデータ比較部１２６、ブロックデータアクセス部１２７、第１のブロックデータ復元部１２８、第２のブロックデータ復元部１２９、ブロックマップ管理部１３０、実ブロックアクセス部１３１及び実ブロック記憶部１３２を有する。
【００２１】
仮想マシン管理部１２０上では、一意な仮想マシン識別子を用いて仮想マシンＡ１００と仮想マシンＢ１１０をそれぞれ識別する。
【００２２】
上述の各部分はそれぞれ概略つぎのように動作する。なお、図１−１及び図１−２において送受信する信号に割り振った番号は、下述する動作の説明の際の各シーケンスにおける各ステップの番号と対応するものである。
【００２３】
まず、仮想マシンＡ１００が有する各部分について説明する。
【００２４】
アプリケーション１０１は、データアクセスコマンド（図中では、Ｓ２０１と表記する。）をデータ管理部１０３に引き渡し、データアクセスコマンドに含まれるデータ識別子に関連付けられたデータの作成と消去及び読み書きを行う。このデータを、図中では、Ｓ２２０と表記する。
【００２５】
類似データ発見部１０２は、メタ情報アクセスコマンド（図中では、Ｓ３０１と表記する。）をメタ情報管理部１０４に引き渡し、メタ情報（図中では、Ｓ３０２と表記する。）を受け取る。
【００２６】
また、類似データ発見部１０２は、データアクセスコマンド（図中では、Ｓ３０５と表記する。）をデータ管理部１０３に引き渡し、データアクセスコマンドに含まれるデータ識別子に関連付けられたデータ（図中では、Ｓ３０６と表記する。）を読み込む。また、類似データ発見部１０２は、「類似データ探索情報」を生成する。ここで、類似データ探索情報にはデータ識別子、データ、メタ情報を含む。なお、これらの情報以外の情報を付加してもよく、またこれらの情報を代替可能な他の情報と置き換えてもよい。
【００２７】
また、類似データ発見部１０２は、類似データ発見部１１２と類似データ探索情報（図中では、Ｓ３０３と表記する。）を送受する。
【００２８】
さらに、類似データ発見部１０２は、自身が生成した類似データ探索情報と、類似データ発見部１１２から受信した類似データ探索情報を比較することで、仮想マシンＡ１００と仮想マシンＢ１１０において類似しているデータを発見する。ここでデータが類似していると判断するために用いる基準を、以下では「データ類似判定基準」とする。
【００２９】
そして、類似データ発見部１０２は、発見した類似データのデータ識別子である類似データ識別子Ａと、前記のデータ類似判定基準とを組にして、類似データ記述子Ａを生成し、類似データ記述子Ａ（図中では、Ｓ３０９と表記する。）を類似ブロック置換部１２１に引き渡す。
【００３０】
データ管理部１０３は、データアクセスコマンドを用いてデータの作成、消去及び読み書きする機能を、アプリケーション１０１及び類似データ発見部１０２に提供する。
【００３１】
また、データ管理部１０３は、データマップアクセスコマンド（図中では、Ｓ２０２と表記する。）をデータマップ管理部１０５に引き渡し、データマップアクセスコマンドに含まれるデータ識別子に関連付けられた１個以上の仮想ブロック識別子（図中では、Ｓ２０３と表記する。）を得る。もしくは、データ管理部１０３は、データ識別子に対して仮想ブロック識別子を新たに割り当てるようデータマップ管理部１０５に要求する。もしくは、データ管理部１０３は、データ識別子と仮想ブロック識別子との関連付けを解除するようデータマップ管理部１０５に要求する。
【００３２】
また、データ管理部１０３は、仮想ブロックアクセスコマンド（図中では、Ｓ２０４と表記する。）をブロックデータアクセス部１２７に引き渡し、仮想ブロックアクセスコマンドに含まれる仮想ブロック識別子に関連付けられた仮想ブロックデータの作成と消去及び読み書きを行う。このデータを図中では、Ｓ２１９と表記する。
【００３３】
メタ情報管理部１０４は、メタ情報アクセスコマンド（図中では、Ｓ３０１と表記する。）を受け取り、メタ情報を引き渡す（図中では、Ｓ３０２と表記する。）。メタ情報の具体的内容については後述する。
【００３４】
データマップ管理部１０５は、ある仮想マシン上で一意なデータ識別子と同仮想マシン上で一意な仮想ブロック識別子を関連付けて記憶する。そして、データマップアクセスコマンドを受け取った際に、データマップアクセスコマンドに応じて、そのデータマップアクセスコマンドに含まれるデータ識別子に関連付けられた１個以上の仮想ブロック識別子を引き渡す。もしくは、データマップ管理部１０５は、データ識別子に新たに仮想ブロック識別子を関連付ける。もしくは、データマップ管理部１０５は、データ識別子と仮想ブロック識別子との関連付けを解除する。
【００３５】
仮想マシンＢ１１０の各部分は、仮想マシンＡ１００の各部の動作と同様である。すなわち、仮想マシンＢ１１０が有する、アプリケーション１１１、類似データ発見部１１２、データ管理部１１３、メタ情報管理部１１４及びデータマップ管理部１１５は、仮想マシンＡ１００の対応する部分と同様に動作する。
【００３６】
次に、仮想マシン管理部１２０が有する各部分の動作について説明する。
【００３７】
類似ブロック置換部１２１は、仮想マシンＡ１００の類似データ発見手段１０２から類似データ記述子Ａを受け取る。また、類似ブロック置換部１２１は、仮想マシンＢ１１０の類似データ発見手段１１２から類似データ記述子Ｂを受け取る。
【００３８】
また、類似ブロック置換部１２１は、類似データ記述子Ａの送信元が仮想マシンＡ１００であることから、仮想マシンＡ１００に対応する仮想ブロック識別子取得部Ａ１２２に、類似データ記述子Ａに含まれる類似データ識別子Ａ（図中では、Ｓ３１０と表記する。）を引き渡して１個以上の仮想ブロック識別子Ａ（図中では、Ｓ３１３と表記する。）を得る。
【００３９】
同様に、類似ブロック置換部１２１は、類似データ記述子Ｂの送信元が仮想マシンＢ１１０であることから、仮想マシンＢ１１０に対応する仮想ブロック識別子取得部Ｂ１２３に、類似データ記述子Ｂに含まれる類似データ識別子Ｂ（図中では、Ｓ３１０と表記する。）を引き渡して１個以上の仮想ブロック識別子Ｂ（図中では、Ｓ３１３と表記する。）を得る。
【００４０】
また、類似ブロック置換部１２１は、個々の仮想ブロック識別子Ａ、仮想ブロック識別子Ｂを含む仮想ブロックアクセスコマンド（図中では、Ｓ３１４と表記する。）をブロックデータアクセス部１２７に引き渡し、対応する仮想ブロックデータＡ、仮想ブロックデータＢ（図中では、Ｓ３２１と表記する。）を得る。
【００４１】
さらに、類似ブロック置換部１２１は、類似データ記述子Ａ及び類似データ記述子Ｂに含まれるデータ類似判定基準（図中では、Ｓ４０１と表記する。）をブロックデータ比較手法選択部１２４に引き渡し、ブロックデータ比較部識別子（図中では、Ｓ４０２と表記する。）を得る。
【００４２】
さらに、類似ブロック置換部１２１は、ブロックデータ比較部識別子に対応するブロックデータ比較部（第１のブロックデータ比較部１２５もしくは第２のブロックデータ比較部１２６）に、前記の仮想ブロックデータＡと仮想ブロックデータＢ（図中では、Ｓ４０３と表記する。）を引き渡し、ブロックデータ比較結果（図中では、Ｓ４０４と表記する。）を得る。
【００４３】
さらに、類似ブロック置換部１２１は、前記のブロックデータ比較結果が、仮想ブロックデータＡと仮想ブロックデータＢが類似することを示していた場合には、ブロックマップ記述子を生成する。このブロックマップ記述子は、１個のブロックの仮想ブロック識別子（以下では、「置換対象仮想ブロック識別子」とする。）と対応する仮想マシン識別子を組にしたものと、類似データ復元用情報を含む。類似データ復元用情報は、前記の置換対象仮想ブロック識別子との比較対象となった１個以上のブロックの仮想ブロック識別子（以下では、「比較対象群仮想ブロック識別子」とする。）と対応する仮想マシン識別子を組にしたものと、比較に用いたブロックデータ比較部のブロックデータ比較部識別子とブロックデータ比較部が出力したブロックデータ比較結果を含む。
【００４４】
そして、類似ブロック置換部１２１は、ブロックマップ記述子（図中では、Ｓ４１１と表記する。）をブロックマップ管理部１３０に引き渡す。
【００４５】
仮想ブロック識別子取得部Ａ１２２は、類似データ識別子Ａを受け取る。
【００４６】
また、仮想ブロック識別子取得部Ａ１２２は、類似データ識別子Ａを含むデータマップアクセスコマンド（図中では、Ｓ２０２と表記する。）をデータマップ管理部１０５に送り、類似データ識別子Ａに対応する１個以上の仮想ブロック識別子Ａ（図中では、Ｓ２０３と表記する。）を受け取る。そして、仮想ブロック識別子取得部Ａ１２２は、仮想ブロック識別子Ａを類似ブロック置換部１２１に引き渡す。
【００４７】
仮想ブロック識別子取得部Ｂ１２３は、類似データ識別子Ｂを受け取る。
【００４８】
また、仮想ブロック識別子取得部Ｂ１２３は、類似データ識別子Ｂを含むデータマップアクセスコマンド（図中では、Ｓ２０３と表記する。）をデータマップ管理部１１５に送り、類似データ識別子Ｂに対応する１個以上の仮想ブロック識別子Ｂ（図中では、Ｓ２０４と表記する。）を受け取る。
【００４９】
そして、仮想ブロック識別子取得部Ｂ１２３は、仮想ブロック識別子Ｂを類似ブロック置換部１２１に引き渡す。
【００５０】
ブロックデータ比較手法選択部１２４は、データ類似判定基準を受け取り、データ類似判定基準に基づいてブロックデータ比較部識別子を決定する。
【００５１】
そして、ブロックデータ比較手法選択部１２４は、自らが決定したブロックデータ比較部識別子を類似ブロック置換部１２１に引き渡す。
【００５２】
第１のブロックデータ比較部１２５は、仮想ブロックデータＡと仮想ブロックデータＢを受け取り、両者を比較して差分を算出し、ブロックデータ比較結果を作成する。そして、第１のブロックデータ比較部１２５は、ブロックデータ比較結果を類似ブロック置換部１２１に引き渡す。なお、比較を行う際の前処理として、仮想ブロックデータＡ及び仮想ブロックデータＢのいずれか、もしくは両方について、データ変換を行う構成としても良い。
【００５３】
第２のブロックデータ比較部１２６は、仮想ブロックデータＡと仮想ブロックデータＢを受け取り、両者を比較して差分を算出し、ブロックデータ比較結果を作成する。ここでの差分の算出方法は、第２のブロックデータ比較部１２６が用いている差分の算出方法とは異なる方法である。
【００５４】
そして、第２のブロックデータ比較部１２６は、ブロックデータ比較結果を類似ブロック置換部１２１に引き渡す。なお、第１のブロックデータ比較部１２５と同様に比較を行う際の前処理として、仮想ブロックデータＡ及び仮想ブロックデータＢのいずれか、もしくは両方について、データ変換を行う構成としても良い。
【００５５】
ブロックデータアクセス部１２７は、類似ブロック置換部１２１から仮想ブロックアクセスコマンドを受け取り、仮想ブロックアクセスコマンドに含まれる仮想ブロック識別子に対し、仮想ブロックアクセスコマンドが指定する処理を行い、コマンドの結果を返す。ここで、仮想ブロックアクセスコマンドが指定する処理としてはブロックの作成、消去及び読み書きが挙げられる。この際仮想ブロックアクセスコマンドが読み込み処理を指定していた場合には、処理結果には仮想ブロックデータが含まれる。
【００５６】
また、ブロックデータアクセス部１２７は、仮想ブロックアクセスコマンドの送信元の仮想マシン識別子と、仮想ブロックアクセスコマンドに含まれている仮想ブロック識別子をパラメータとして含む、ブロックマップアクセスコマンド（図中では、Ｓ２０５と表記する。）をブロックマップ管理部１３０に引渡す。そして、実ブロック識別子もしくは類似データ復元用情報（図中では、Ｓ２０６と表記する。）を受け取る。ここで、実ブロック識別子を受け取った場合には、実ブロック識別子をパラメータとして含み、ブロックデータアクセス部１２７は、仮想ブロックアクセスコマンドの処理内容と対応した実ブロックアクセスコマンド（図中では、Ｓ３１７と表記する。）を実ブロックアクセス部１３１に引渡す。ここで、ブロックデータアクセス部１２７は、実ブロックアクセスコマンドが読み込み処理を指定していた場合には、実ブロックアクセス部１３１から実ブロックデータ（図中では、Ｓ３２０と表記する。）を受け取り、実ブロックデータを仮想ブロックデータとして、仮想ブロックアクセスコマンドの送信元に引き渡す。また、ブロックデータアクセス部１２７は、類似データ復元用情報を受け取った場合には、まず、類似データ復元用情報に含まれる比較対象群仮想ブロック識別子と仮想マシン識別子の組について、それらをパラメータとして含むブロックマップアクセスコマンドをブロックマップ管理部１３０に引渡す。そして、対応する実ブロック識別子を得て、その実ブロック識別子をパラメータとして含む、読み込み用の実ブロックアクセスコマンドを実ブロックアクセス部１３１に送る。更に、実ブロックアクセス部１３１から実ブロックデータを受け取り、この実ブロックデータを比較対象群仮想ブロック識別子に対応する仮想ブロックデータとする。
【００５７】
次に、ブロックデータアクセス部１２７は、類似データ復元用情報中のブロックデータ比較部識別子に対応したブロックデータ復元部（第１のブロックデータ復元部１２８もしくは第２のブロックデータ復元部１２９）に、類似データ復元用情報中の比較結果と、比較対象群仮想ブロックデータ（図中では、Ｓ２１７と表記する。）を引き渡し、復元結果の仮想ブロックデータ（図中では、Ｓ２１８と表記する。）を受け取り、仮想ブロックアクセスコマンドの送信元に引き渡す。
【００５８】
第１のブロックデータ復元部１２８は、比較結果と比較対象群仮想ブロックデータを受け取り、仮想ブロックデータを算出し、ブロックデータアクセス部１２７に引き渡す。ここでの算出過程は、比較結果を出力した第１のブロックデータ比較部１２５の算出過程と対応している。
【００５９】
第２のブロックデータ復元部１２９は、比較結果と比較対象群仮想ブロックデータを受け取り、仮想ブロックデータを算出し、ブロックデータアクセス部１２７に引き渡す。ここでの算出過程は、比較結果を出力した第２のブロックデータ比較部１２６の算出過程と対応している。
【００６０】
ブロックマップ管理部１３０は、仮想マシン識別子と仮想ブロック識別子の組に対して、実ブロック識別子もしくは類似データ復元用情報を関連付けて管理している。
【００６１】
そして、ブロックマップアクセスコマンドを受け取って、ブロックマップアクセスコマンドの種類に応じて、仮想マシン識別子と仮想ブロック識別子の組に実ブロック識別子を新たに関連付けする。もしくは、仮想マシン識別子と仮想ブロック識別子の組と実ブロック識別子もしくは類似データ復元用情報との関連付けを解除する。もしくは、仮想マシン識別子と仮想ブロック識別子の組に対応する実ブロック識別子もしくは類似データ復元用情報を回答するという処理を行う。
【００６２】
また、ブロックマップ管理部１３０は、類似ブロック置換部１２１からブロックマップ記述子を受け取って、ブロックマップ記述子に含まれる置換対象の仮想マシン識別子と仮想ブロック識別子の組に対し、実ブロック識別子との関連付けを解除し、ブロックマップ記述子に含まれる類似データ復元用情報へと関連付けを変更する。
【００６３】
実ブロック記憶部１３２は、実ブロックアクセスコマンド（図中では、Ｓ３１８と表記する。）を受け取り、実ブロックアクセスコマンドに含まれる実ブロック識別子に対応した実ブロックデータ（図中では、Ｓ３１９と表記する。）の作成と消去及び読み書きを行う。
【００６４】
次に、図２−１、図２−２、図３−１、図３−２及び図４のシーケンス図を参照して本実施の形態の全体の動作について詳細に説明する。
【００６５】
最初に、アプリケーションがデータにアクセスする際のシーケンスについて、図２−１及び図２−２を参照して説明する。
【００６６】
まず、アプリケーション１０１がアクセスしたいデータを指定したデータ識別子を含むデータアクセスコマンドを発行する（ステップＡ２０１）。データアクセスコマンドを受け取ったデータ管理部１０３がデータマップアクセスコマンドを発行する（ステップＡ２０２）。
【００６７】
そして、データマップアクセスコマンドを受け取ったデータマップ管理部１０５は、データ識別子と仮想ブロック識別子の関連付けに基づき、１個以上の仮想ブロック識別子を返す（ステップＡ２０３）。ここで、仮想ブロック識別子が必ずしも１個ではなく、１個以上という複数個になり得るのは、データ識別子で識別されるデータが、複数のブロックに分割して記憶されている場合があるからである。
【００６８】
次に、仮想ブロック識別子を受け取ったデータ管理部１０３が、ブロックデータアクセス部１２７に対して、仮想ブロック識別子を含む仮想ブロックアクセスコマンドを発行する（ステップＡ２０４）。
【００６９】
仮想ブロックアクセスコマンドを受け取ったブロックデータアクセス部１２７は、仮想ブロックアクセスコマンド中の仮想ブロック識別子と、仮想ブロックアクセスコマンドを発行した仮想マシンの仮想マシン識別子を含むブロックマップアクセスコマンドをブロックマップ管理部１３０に対して発行する（ステップＡ２０５）。
【００７０】
ブロックマップアクセスコマンドを受け取ったブロックマップ管理部１３０は、仮想ブロック識別子と仮想マシン識別子に対応する実ブロック識別子もしくは類似データ復元用情報を返す（ステップＡ２０６）。
【００７１】
ここで、まず図２−１を参照して、ステップＡ２０６においてブロックデータアクセス部１２７が実ブロック識別子を受け取った場合について説明する。
【００７２】
ブロックデータアクセス部１２７は、実ブロック識別子を受け取った場合には、実ブロック識別子を含む実ブロックアクセスコマンドを発行する（ステップＡ２０７）。
【００７３】
実ブロックアクセスコマンドを受け取った実ブロックアクセス部１３１は、実ブロックアクセスコマンドに含まれる実ブロック識別子を含む記憶部アクセスコマンドを発行する（ステップＡ２０８）。
【００７４】
記憶部アクセスコマンドを受け取った実ブロック記憶部１３２は、実ブロック識別子で指定されるブロックに記録された実ブロックデータを返す（ステップＡ２０９）。
【００７５】
実ブロックデータを受け取った実ブロックアクセス部１３１は、実ブロックデータをブロックデータアクセス部１２７に引き渡す（ステップＡ２１０）。
【００７６】
実ブロックデータを受け取った、ブロックデータアクセス部１２７は、この実ブロックデータを仮想ブロックアクセスコマンドに対応する仮想ブロックデータとしてデータ管理部１０３に返す（ステップＡ２１９）。
【００７７】
１個以上の仮想ブロックデータを受け取ったデータ管理部１０３は、それらの仮想ブロックデータを連結して、データアクセスコマンドに対応するデータとしてアプリケーション１０１に返す（ステップＡ２２０）。
【００７８】
以上の動作によりアプリケーション１０１はデータにアクセスすることができる。
【００７９】
次に、ステップＡ２０６においてブロックデータアクセス部１２７が、実ブロック識別子ではなく類似データ復元用情報を受け取った場合の動作について、図２−２を用いて説明する。
【００８０】
ブロックデータアクセス部１２７は、類似データ復元用情報を受け取った場合には、類似データ復元用情報に含まれる比較対象群仮想ブロック識別子と対応する仮想マシン識別子を含むブロックマップアクセスコマンドを発行する（ステップＡ２１１）。
【００８１】
ブロックマップアクセスコマンドを受け取ったブロックマップ管理部１３０は、仮想ブロック識別子と仮想マシン識別子に対応する実ブロック識別子もしくは類似データ復元用情報を返す（ステップＡ２１２）。もし、ステップステップＡ２１２で類似データ復元用情報を受け取った場合には、実ブロック識別子を得るまで、さらにステップＡ２１１とステップＡ２１２を繰り返す。
【００８２】
次に、ブロックデータアクセス部１２７は、実ブロック識別子を含む実ブロックアクセスコマンドを発行する（ステップＡ２１３）。
【００８３】
実ブロックアクセスコマンドを受け取った実ブロックアクセス部１３１は、実ブロックアクセスコマンドに含まれる実ブロック識別子を含む記憶部アクセスコマンドを発行する（ステップＡ２１４）。
【００８４】
記憶部アクセスコマンドを受け取った実ブロック記憶部１３２は、実ブロック識別子で指定されるブロックに記録された実ブロックデータを返す（ステップＡ２１５）。
【００８５】
ブロックデータを受け取った実ブロックアクセス部１３１は、実ブロックデータをブロックデータアクセス部１２７に引き渡す（ステップＡ２１６）。
【００８６】
次に、ブロックデータアクセス部１２７は、類似データ復元用情報に含まれる比較結果と、ステップステップＡ２１６で得られた実ブロックデータを、第１のブロックデータ復元部１２８もしくは第２のブロックデータ復元部１２９に引き渡す。どちらのブロックデータ復元部に引き渡すかは類似データ復元用情報に含まれるブロックデータ比較部識別子を参照して決定する（ステップＡ２１７）。
【００８７】
次に、第１のブロックデータ復元部１２８（第２のブロックデータ復元部１２９）は、受け取った比較結果と、実ブロックデータから、仮想ブロックデータを復元する。そして、復元した実ブロックデータをブロックデータアクセス部１２７に引き渡す（ステップＡ２１８）。
【００８８】
実ブロックデータを受け取ったブロックデータアクセス部１２７は、この実ブロックデータを仮想ブロックアクセスコマンドに対応する仮想ブロックデータとしてデータ管理部１０３に返す（ステップＡ２１９）。
【００８９】
１個以上の仮想ブロックデータを受け取ったデータ管理部１０３は、それらの仮想ブロックデータを連結して、データアクセスコマンドに対応するデータとしてアプリケーション１０１に返す（ステップＡ２２０）。
以上の動作によりアプリケーション１０１はデータにアクセスすることができる。
【００９０】
なお、以上では仮想マシンＡ１００と仮想マシン管理部１２０の間でのシーケンスについて説明したが、仮想マシンＢ１１０と仮想マシン管理部１２０の間でのシーケンスも同様に動作する。
【００９１】
次に、図３−１、図３−２及び図４を参照して、類似データを発見し、類似データから差分を算出するアルゴリズムを適応的に選択して、仮想ブロック識別子及び仮想マシン識別子と実ブロック識別子の関連付けを変更する動作について詳細に説明する。この動作を行うことにより、記憶容量を節約することができる。
【００９２】
最初に、図３−１を参照して説明する。まず、類似データ発見部１０２が、メタ情報管理部１０４に対してメタ情報アクセスコマンドを発行する（ステップＡ３０１）。
【００９３】
メタ情報アクセスコマンドを受け取ったメタ情報管理部１０４が対応するメタ情報を類似データ発見部１０２に返す（ステップＡ３０２）。ここで、メタ情報は仮想マシンＡ１００の特徴を示す情報である。メタ情報に関しては、後述の実施例の欄において具体例を挙げて詳細に説明する。
【００９４】
次に、類似データ発見部１０２は、受け取ったメタ情報を含む類似データ探索情報を仮想マシンＢ１１０の類似データ発見部１１２に送信する。同様に類似データ発見部１１２からも類似データ探索情報が仮想マシンＡ１００の類似データ発見部１０２に送信される（ステップＡ３０３）。
【００９５】
類似データ発見部１０２は、受け取った類似データ探索情報を参照して、仮想マシンＢ１１０と類似している可能性の高いデータのデータ識別子を推測する（ステップＡ３０４）。この推測に関しての詳細は、後述の実施例の欄において具体例を挙げて説明する。
【００９６】
そして、類似している可能性の高い順番で、各データ識別子を対象として以降のシーケンスに従い処理を行う。また、仮想マシンＡ１００上の全てのデータ識別子について、以降の処理が既に終了している場合には、ここでシーケンスを終了する。
【００９７】
類似データ発見部１０２は、仮想マシンＢ１１０と類似している可能性の高いデータのデータ識別子を含むデータアクセスコマンドを発行する（ステップＡ３０５）。このデータアクセスコマンドは「データの読み込み」を要求する。
【００９８】
次のステップＡ３０５とステップＡ３０６の間のデータアクセスのためのシーケンスは、図１で説明したアプリケーション１０１がデータアクセスコマンドを発行した場合のステップＡ２０２からステップＡ２１９までのシーケンスと同様であるため、詳細な説明は省略する。
【００９９】
そして、データ管理部１０３は、取得した類似している可能性が高いデータを類似データ発見部１０２に対して返す（ステップＡ３０６）。
【０１００】
類似している可能性が高いデータを受け取った類似データ発見部１０２は、類似データ発見部１１２にメタ情報、データ識別子、データを含んだ類似データ探索情報を送信する。同様に類似データ発見部１１２は類似データ発見部１０２にメタ情報、データ識別子、データを含んだ類似データ探索情報を送信し、類似データ発見部１０２はそれを受信する（ステップＡ３０７）。
【０１０１】
類似データ発見部１０２は、類似データ発見部１１２から受け取った類似データ探索情報に含まれるデータと、自身がステップＡ３０６で読み込んだデータと比較する（ステップＡ３０８）。この比較における比較基準は、類似データ探索情報に含まれるメタ情報、データ識別子及びデータを参照して決定される。詳細は実施例の欄において示す。
【０１０２】
比較の結果、データが類似していない場合にはステップＡ３０４に戻り、類似の可能性が次に高いデータを対象としてステップＡ３０５以後の処理を行う。
【０１０３】
一方、データが推測どおりに類似していた場合には、以降のシーケンスに従って処理を行う。
【０１０４】
類似データ発見部１０２は、類似データのデータ識別子である類似データ識別子Ａと類似していると判定するために用いた基準であるデータ類似判定基準を含む類似データ記述子Ａを、類似ブロック置換部１２１に送る（ステップＡ３０９）。
【０１０５】
類似データ発見部１１２も同様に、類似データのデータ識別子とデータ類似判定基準を含む類似データ記述子Ｂを、類似ブロック置換部１２１に送るステップＡ３０９と平行して、もしくはステップＡ３０９の直後に行われるが、図示は省略する。
【０１０６】
次に、図３−２を参照して説明を続ける。
【０１０７】
類似ブロック置換部１２１は、受信した類似データ識別子Ａを仮想ブロック識別子取得部Ａ１２２に送る（ステップＡ３１０）。
【０１０８】
類似データ識別子Ａを受信した仮想ブロック識別子取得部Ａ１２２が類似データ識別子Ａを含むデータマップアクセスコマンドをデータマップ管理部１０５に送る（ステップＡ３１１）。そして、仮想ブロック識別子取得部Ａ１２２はデータマップ管理部１０５から類似データ識別子Ａに対応した１個以上の仮想ブロック識別子Ａを受け取る（ステップＡ３１２）。
【０１０９】
さらに、仮想ブロック識別子Ａを受け取った仮想ブロック識別子取得部Ａ１２２が、仮想ブロック識別子Ａを類似ブロック置換部１２１に引き渡す（ステップＡ３１３）。
【０１１０】
仮想ブロック識別子Ａを受け取った類似ブロック置換部１２１は、その仮想ブロック識別子Ａに対応する仮想ブロックデータＡを取得する（ステップＡ３１４〜ステップＡ３２１）。この処理は上述したステップＡ２０４〜ステップＡ２１９と同様であるため、詳細な説明は省略する。
【０１１１】
類似ブロック置換部１２１は、受信した類似データ識別子ＢについてもステップＡ３１０〜ステップＡ３１３と同様に処理し、仮想ブロック識別子Ｂを受け取る（ステップＡ３１０〜ステップＡ３１３と平行して行われる、もしくはステップＡ３１０〜ステップＡ３１３の直後に行われるが、図示せず。）。
【０１１２】
さらに、受け取った仮想ブロック識別子Ｂについて、ステップＡ３１４〜ステップＡ３２１と同様の処理が行われ、類似ブロック置換部１２１は、仮想ブロック識別子Ｂに対応する仮想ブロックデータＢを取得する（ステップＡ３１４〜ステップＡ３２１と平行して行われる、もしくはステップＡ３１４〜ステップＡ３２１の直後に行われるが、図示せず。）。
【０１１３】
次に、図４を参照して説明を続ける。
【０１１４】
仮想ブロックデータＡと仮想ブロックデータＢを取得した類似ブロック置換部１２１は、類似データ記述子Ａ及び類似データ記述子Ｂに記載されたデータ類似判定基準をブロックデータ比較手法選択部１２４に送る（ステップＡ４０１）。データ類似判定基準を受け取ったブロックデータ比較手法選択部１２４は、類似データの差分を算出するのに適切なブロックデータ比較部をデータ類似判定基準に基づいて決定し、ブロックデータ比較部識別子を返す（ステップＡ４０２）。
【０１１５】
ブロックデータ比較部識別子を受け取った類似ブロック置換部１２１は、ブロックデータ比較部識別子に対応するブロックデータ比較部（第１のブロックデータ比較部１２５もしくは第２のブロックデータ比較部１２６）に前述の仮想ブロックデータＡ及び仮想ブロックデータＢを引き渡す（ステップＡ４０３）。仮想ブロックデータＡと仮想ブロックデータＢを受け取ったブロックデータ比較部は、それらの差分を算出し、比較結果として返す（ステップＡ４０４）。
【０１１６】
ステップＡ４０４における比較の結果、仮想ブロックデータＡと仮想ブロックデータＢが類似していない（差分が大きい）場合にはステップＡ３０４に戻り、類似の可能性が次に高いデータについての処理を行う。
【０１１７】
一方、仮想ブロックデータＡと仮想ブロックデータＢが類似している場合には、それらの片方を置換対象として選択し、対応する実ブロックデータを消去する。以降では仮想ブロックデータＢを置換対象として選択したものとして、説明する。
【０１１８】
類似ブロック置換部１２１は、選択した仮想ブロックデータＢに対応する仮想ブロック識別子Ｂをパラメータとして含む仮想ブロックアクセスコマンド（消去）を、ブロックデータアクセス部１２７に引き渡す（ステップＡ４０５）。
【０１１９】
仮想ブロックアクセスコマンド（消去）を受け取ったブロックデータアクセス部１２７は、仮想ブロックアクセスコマンド中の仮想ブロック識別子Ｂをパラメータとして含むブロックマップアクセスコマンドをブロックマップ管理部１３０に引き渡す（ステップＡ４０６）。
【０１２０】
ブロックマップアクセスコマンドを受け取ったブロックマップ管理部１３０は、仮想ブロック識別子Ｂに関連付けられている実ブロック識別子を返す（ステップＡ４０７）。
【０１２１】
実ブロック識別子を受け取った類似ブロック置換部１２１は、実ブロック識別子をパラメータとして含む実ブロックアクセスコマンド（消去）を実ブロックアクセス部１３１に引き渡す（ステップＡ４０８）。
【０１２２】
実ブロックアクセス部１３１は、実ブロック識別子をパラメータとして含む記憶部アクセスコマンド（消去）を実ブロック記憶部１３２に引き渡して、対応する実ブロックデータを消去する（ステップＡ４０９）。
【０１２３】
類似ブロック置換部１２１は、仮想ブロック識別子Ａと仮想マシン識別子Ａと、比較に用いたブロックデータ比較部のブロックデータ比較部識別子とブロックデータ比較部が出力したブロックデータ比較結果から類似データ復元用情報を生成し、置換対象である仮想ブロック識別子Ｂと対応する仮想マシン識別子Ｂの組と類似データ復元用情報からブロックマップ記述子を生成する（ステップＡ４１０）。
【０１２４】
そして、類似ブロック置換部１２１はブロックマップ記述子を、ブロックマップ管理部１３０に引き渡す（ステップＡ４１１）。
【０１２５】
ブロックマップ記述子を受け取ったブロックマップ管理部１ステップＡ３０は、ブロックマップ記述子中の置換対象の仮想ブロック識別子Ｂと仮想マシン識別子Ｂの組について、実ブロック識別子Ｂとの関連付けを解除し、関連付けを解除された仮想ブロック識別子Ｂを、ブロックマップ記述子中類似のデータ復元用情報に関連付ける（ステップＡ４１２）。
【０１２６】
なお、上述の説明では仮想マシンＡ１００及び仮想マシンＢ１１０の２つの仮想マシンを例示して説明したが、仮想マシンは２つに限らず３つ以上であってもよい。
【０１２７】
次に、本実施の形態の効果について説明する。
【０１２８】
本実施の形態では、まず類似データ発見部１０２及び類似データ発見部１１２がメタ情報に基づいて類似している可能性が高いデータのデータ識別子を推測する。
【０１２９】
さらに、類似データ発見部１０２及び類似データ発見部１１２が、前記のデータ識別子に対応するデータが類似していることを確認する。
【０１３０】
その後に類似ブロック置換部１２１が、前記のデータ識別子に対応する仮想ブロック識別子Ａと仮想ブロック識別子Ｂについて、類似データ発見部１０２及び類似データ発見部１１２での類似判定基準を基にブロックデータ比較部を選択し、類似するブロックを発見して、類似データ復元用情報を作成する。ブロックマップ管理部１３０での仮想ブロック識別子と実ブロック識別子の関連付けを、仮想ブロック識別子と類似データ復元用情報に変更する。これによって類似ブロックのうち片方を消去でき、空き容量が確保できる。
【０１３１】
このように構成されているため、メタ情報での推測と、データの類似判定を行わずに、ブロックの類似判定を行う従来の方法に比べて、ブロックの類似判定のための比較部を適応的に選択できる。適応的に比較部を選択することによって、より小さな差分が算出され、より多くのブロックに類似を発見することができ、より多くの記憶容量を節約することができる。特に、ブロック比較において、前処理としてデータ変換を行うことにより、より小さな差分を算出することができる。
【０１３２】
次に、本発明の第２の発明を実施するための最良の形態について図面を参照して詳細に説明する。
【０１３３】
図５を参照すると、本実施形態では、仮想マシンＡ５０１及び仮想マシンＢ５０２に加えて、仮想マシンの一つとして管理用仮想マシン５００が動作している。
【０１３４】
そして、本発明の第１の発明を実施するための最良の形態では、仮想マシン管理部１２０内に配置されていた各部が、管理用仮想マシン５００上に配置されている。また本実施形態では、仮想マシン管理部５０３を有している。仮想マシン管理部５０３はコマンド転送部５０４を有する。
【０１３５】
コマンド転送部５０４は仮想マシンＡ５０１及び仮想マシンＢ５０２から仮想マシン管理部５０３へと発行された仮想ブロックアクセスコマンドを管理用仮想マシン５００へと転送する。また、コマンド転送部５０４はそれらの仮想ブロックアクセスコマンドに対してのレスポンスを仮想マシンＡ５０１及び仮想マシンＢ５０２へと転送する。さらに、コマンド転送部５０４は管理用仮想マシン５００から仮想マシンＡ５０１及び仮想マシンＢ５０２へと発行されたデータマップアクセスコマンドを中継する。加えて、コマンド転送部５０４は仮想マシンＡ５０１及び仮想マシンＢ５０２からのレスポンスを管理用仮想マシン５００へと転送する。
【０１３６】
その他の各部は本発明の発明を実施するための第１の最良の形態と同様に動作する。発明の効果は、本発明の発明を実施するための第１の最良の形態と同様である。
【実施例】
【０１３７】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
【０１３８】
図６に示すように、本発明はファイルシステムを介したデータ格納方式に適用することができる。以下、本実施例の動作について説明する。
【０１３９】
仮想マシンＡ６００上で、類似ファイル発見エージェントＡ６０２が、システム情報管理モジュール６０４から、システム情報を取り出す。
【０１４０】
同様に、仮想マシンＢ６１０上で、類似ファイル発見エージェントＢ６１２が、システム情報管理モジュール６１４から、システム情報を取り出す。
【０１４１】
本実施例では、このシステム情報が、前述したメタ情報に該当する。
【０１４２】
このシステム情報の、具体例としては仮想マシン上で動作しているオペレーティングシステムの名称が挙げられる。例えば、「Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ  ＳＰ２」や、「ＲｅｄＨａｔ  Ｌｉｎｕｘ（登録商標）  ９．０」などである。
【０１４３】
類似ファイル発見エージェントＡ６０２及び類似ファイル発見エージェントＢ６１２は、前記のシステム情報を参照して、データが類似している可能性が高いファイルを推測し、データ比較の対象とするファイル名を決定する。
【０１４４】
例えば、仮想マシンＡ６００と仮想マシンＢ６１０のそれぞれにおいて、「Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ  ＳＰ２」というオペレーティングシステムが稼動していることがシステム情報から判明した場合を想定する。この場合には、同一のオペレーティングシステムが稼動していることから、ファイルの置き場（ディレクトリ・フォルダ構成）が類似していると推測できる。例えば「マイ  ピクチャ」ディレクトリが両方の仮想マシンに存在する可能性が高く、そのディレクトリには画像データのファイルが配置されている可能性が高いと推測できる。
【０１４５】
次に、例えば、仮想マシンＡ６００と仮想マシンＢ６１０において、「マイ  ピクチャ」というディレクトリが共通して存在した場合に、仮想マシンＡ６００の該当ディレクトリには「プレゼン資料２００８０２１８．ｐｎｇ」というファイルが存在していたと想定する。また、仮想マシンＢ６１０の該当ディレクトリには「プレゼン資料２００８０２１８．ｂｍｐ」というファイルが存在したと想定する。この場合、両ファイルはファイル名が類似しており、同様の画像を異なる画像圧縮アルゴリズムでエンコードしたもの（ｐｉｎｇ形式及びｂｉｔｍａｐ形式）である可能性が高いと推測できる。
【０１４６】
そこで、この例では、類似ファイル発見エージェントＡ６０２と類似ファイル発見エージェントＢ６１２は、「プレゼン資料２００８０２１８．ｐｎｇ」と「プレゼン資料２００８０２１８．ｂｍｐ」をデータ比較の対象とするファイル名として決定する。
【０１４７】
さらに、決定したファイル名で指定されるファイルについて、類似ファイル発見エージェントＡ６０２及び類似ファイル発見エージェントＢ６１２は、ファイルの中身のデータが類似しているかを確認する。
【０１４８】
前述の画像ファイルの例について説明するならば、両画像をデコードし、デコード後の画像の特徴量を比較するといった処理を行う。
【０１４９】
その結果として両ファイルのデータが類似していることが判明した場合には、データ類似判定基準を生成する。前述の画像ファイルの例に従えば、「類似した画像であり、画像のエンコード形式は異なっている（ｐｉｎｇとｂｉｔｍａｐ。）。」といった情報がデータ類似判定基準に含まれる。
【０１５０】
ファイルは仮想マシンＡ６００及び仮想マシンＢ６１０上におけるファイルシステム６０３及びファイルシステム６１３によって管理されている。また、ファイルシステムの下位モジュールであるファイルレイアウトモジュール６０５とファイルレイアウトモジュール６１５によって、ファイルのファイル名とブロックのブロック番号の対応付けを管理している。
【０１５１】
ここで仮想マシンＡ６００と仮想マシンＢ６１０は仮想マシンモニタ６２０により仮想化されているので、ファイルレイアウトモジュール６０５とファイルレイアウトモジュール６１５が管理しているブロック番号は仮想ブロック番号である。
【０１５２】
ファイルシステム６０３（又は６１３）は仮想ブロックアクセスコマンドを発行し、ブロックデータアクセスモジュール６２７を介してブロックへのアクセス（作成、消去及び読み書き）を行う。
【０１５３】
類似ブロック置換モジュール６２１は、類似ファイル発見エージェントＡ６０２と類似ファイル発見エージェントＢ６１２から類似ファイル記述子Ａと類似ファイル記述子Ｂを取得し、それらに含まれるファイル名に対応するブロックの仮想ブロック番号を仮想ブロック番号取得モジュール６２２と仮想ブロック番号取得モジュール６２３を介して取得する。そして、類似ブロック置換モジュール６２１は、それらの仮想ブロック番号に対応する仮想ブロックデータ（仮想ブロックデータＡ及び仮想ブロックデータＢ）をブロックデータアクセスモジュール６２７を介して取得する。
【０１５４】
さらに、類似ブロック置換モジュール６２１は、類似ファイル記述子Ａと類似ファイル記述子Ｂに含まれるデータ類似判定基準をブロックデータ比較手法選択モジュール６２４に引き渡し、ブロックデータ比較部識別子を取得する。
【０１５５】
そして、類似ブロック置換モジュール６２１は、取得したブロックデータ比較モジュール識別子が指すブロックデータ比較モジュール（第１のブロックデータ比較モジュール６２５もしくは、第２のブロックデータ比較モジュール６２６）へと、仮想ブロックデータを引き渡し、比較結果を取得する。
【０１５６】
前述の画像の例に従えば、ｂｍｐ形式の画像の仮想ブロックデータをｐｉｎｇ形式にトランスコード（ｂｉｔｍａｐ形式の画像をデコードし、デコード結果をｐｉｎｇ形式にエンコードする）し、トランスコード結果を元々ｐｉｎｇ形式であった画像の仮想ブロックデータと比較し、その差分を比較結果として出力する。
【０１５７】
この例では比較処理にトランスコードを用いているが、トランスコードを行うと多くの負荷が掛かるため、この比較処理は全体として負荷が高い。しかしながら、類似ファイル発見エージェントＡ６０２と類似ファイル発見エージェントＢ６１２によって、データの類似する可能性が確かめられているので、実際に仮想ブロックデータデータが類似している可能性も高い。加えて、ブロックデータ比較モジュールは、データ類似判定基準に従って適応的に選択されている。そのため、比較処理が無駄になる可能性は低い。これらの点を考慮すると、負荷に見合うデータ節約効果が得られる可能性が高い構成となっているといえる。
【０１５８】
また、ブロックデータ比較モジュールが適応的に選択されているため、ブロックデータ比較モジュールは、比較処理の前処理として、適切なデータ変換を行うことが出来る。
【０１５９】
前述の画像の例を用いれば、「プレゼン資料２００８０２１８．ｐｎｇ」と「プレゼン資料２００８０２１８．ｂｍｐ」を構成する仮想ブロックデータは、直接にデータのバイト列を比較すると相関が低く、差分が大きくなる。そのため、このような単純にデータのバイト列を比較する方法ではこれらの仮想ブロックデータを類似データとして扱えない。
【０１６０】
しかし、両者は同様の画像を別のエンコードによって表現しているので、適切なデータ変換（例えば、「プレゼン資料２００８０２１８．ｐｎｇ」をｂｉｔｍａｐ形式にトランスコード）してから、比較処理を行うことにより、小さな差分を算出できる。これにより、これらの仮想ブロックデータを類似データとして扱うことが出来る。
【０１６１】
ここで、関連する他の技術ではブロックデータ比較モジュールを、データ類似判定基準に従って適応的に選択するような構成となっていないため、適切なデータ変換を行えない。すなわち、多種類に及ぶデータ変換方法から、適切なものを選択できない。しかし、上述したように、本発明の実施形態や本実施例を用いることにより多種類に及ぶデータ変換方法から、適切なものを選択することが可能となる。
【０１６２】
上述の比較結果によって、仮想ブロックデータが類似している（差分が小さい）と判明した場合には、類似ブロック置換モジュール６２１は仮想ブロックデータの片方を置換対象として選択する。以降では、仮想ブロックデータＢを置換対象に選択したと想定して説明する。
【０１６３】
類似ブロック置換モジュール６２１は、選択した仮想ブロックデータＢに対応する仮想ブロック識別子Ｂを含む仮想ブロックアクセスコマンド（消去）を、ブロックデータアクセスモジュール６２７に引き渡す。
【０１６４】
ブロックデータアクセスモジュール６２７は、仮想ブロックアクセスコマンド中の仮想ブロック識別子Ｂを含むブロックマップアクセスコマンドを、ブロックマップ管理モジュール６３０に引渡す。
【０１６５】
ブロックマップ管理モジュール６３０は、仮想ブロック識別子Ｂに関連付けられている実ブロック識別子をブロックデータアクセスモジュール６２７に返す。
【０１６６】
実ブロック識別子を受け取ったブロックデータアクセスモジュール６２７は、実ブロック識別子をパラメータとして含む実ブロックアクセスコマンド（消去）を実ブロックアクセスモジュール６３１に引渡す。実ブロックアクセスモジュール６３１は、引き渡された実ブロック識別子をパラメータとして含む記憶部アクセスコマンドを実ブロック記憶部に引き渡して、対応する実ブロックデータを消去する。
【０１６７】
類似ブロック置換モジュール６２１は、仮想ブロック識別子Ａ及び仮想マシン識別子Ａと、比較に用いたブロックデータ比較モジュールのブロックデータ比較モジュール識別子と、ブロックデータ比較モジュールが出力した比較結果から、類似データ復元用情報を生成する。また、類似ブロック置換モジュール６２１は、置換対象である仮想ブロック識別子Ｂ及び仮想マシン識別子Ｂとの組と、類似データ復元用情報から、ブロックマップ記述子を生成する。そして、ブロックマップ記述子をブロックマップ管理モジュール６３０に引き渡す。
【０１６８】
ブロックマップ記述子を受け取ったブロックマップ管理モジュール６３０は、ブロックマップ記述子中の置換対象の仮想ブロック識別子Ｂと仮想マシン識別子Ｂの組について、実ブロック識別子Ｂとの関連付けを解除する。その代替として、仮想ブロック識別子Ｂと仮想マシン識別子Ｂの組と、ブロックマップ記述子中の類似データ復元用情報を関連付ける。
【０１６９】
次に、ブロックマップ管理モジュール６３０において仮想ブロック識別子Ｂと仮想マシン識別子Ｂの組について類似データ復元用情報が関連付けられた後に、アプリケーション６１１がファイルを読み込む場合について説明する。
【０１７０】
この場合は、ブロックデータアクセスモジュール６２７が、類似データ復元用情報に含まれる仮想ブロック識別子Ａ及び仮想マシン識別子Ａの組に対応する仮想ブロックデータＡを取得する。さらに、類似データ復元用情報に含まれるブロックデータ比較モジュール識別子に従って、ブロックデータ復元モジュール（第１のブロックデータ復元モジュール６２８又は第２のブロックデータ復元モジュール６２９のいずれか）を選択する。さらに、選択したブロックデータ復元モジュールに、仮想ブロックデータＡと、類似データ復元用情報に含まれる比較結果を引き渡す。そして、ブロックデータ復元モジュールによって、データが復元される。
【０１７１】
前述の画像の例で言えば、まず、選択されたブロックデータ復元モジュールは、比較結果（仮想ブロックデータＡとトランスコードされた仮想ブロックデータＢの差分）と仮想ブロックデータＡから、仮想ブロックデータＢをトランスコードしたデータを復元する。さらに、得られたデータを逆トランスコード（ｐｉｎｇ形式の画像をデコードし、ｂｉｔｍａｐ形式にエンコードする）することによって、仮想ブロックデータＢを復元する。
【０１７２】
これによりアプリケーション６１１がファイルを読み込むことができる。
【０１７３】
また、第２の本発明を実施するための最良の形態として、本発明をメモリマップシステムを介したデータ格納方式に適用することもできる。
【０１７４】
メモリマップシステムは、あるファイルのデータを主記憶装置上に配置する為に用いられる。なお、主記憶装置としては、一般的にＤＲＡＭ（Dynamic Random Access Memory）が用いられる。
【０１７５】
メモリマップシステムを用いる場合には、本発明でいう「ブロック」はメモリの管理単位である「ページ」に対応することになる。また、本発明でいう「データ識別子」はメモリに配置されるファイルの「ファイル名」に対応することになる。また、複数の仮想マシンが主記憶装置を共有するため、「仮想ページ番号」と「実ページ番号」が用いられ、それぞれが本発明でいう「仮想ブロック識別子」と「実ブロック識別子」に対応する。
【０１７６】
上述した本発明の実施形態の効果は、複数の仮想マシン上に存在する類似データを発見し、記憶容量を節約できるということである。
【０１７７】
なぜならば、本発明の実施形態は仮想マシン管理部内にて管理されている情報だけでなく、仮想マシン内にて管理されているメタ情報を用いて類似データを発見し、その際に類似判定基準を得る。そして、類似判定基準を用いて類似ブロックデータの比較手法を適応的に選択できるため、小さい差分を算出できる可能性が高まる。そしてこれにより、比較手段を選択できない関連する他の技術よりも、多くのブロックデータを類似ブロックデータとして扱えるためである。
【０１７８】
特に、直接にバイト列同士を比較すると差分が大きくなるようなブロックデータに関して、適応的に選択された類似ブロックデータ比較手段が、前処理としてデータ変換処理を行ってからブロックデータの比較処理を行うよう構成することにより、小さな差分を算出できるという効果を奏する。
【０１７９】
なお、本発明の実施形態である各仮想マシン及び仮想マシン管理部は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
【産業上の利用可能性】
【０１８０】
本発明は、仮想化技術を用いた計算機におけるストレージの空き容量を確保するといった用途に好適である。
【図面の簡単な説明】
【０１８１】
【図１−１】本発明の第１の発明を実施するための最良の形態の構成を示すブロック図（１／２）である。
【図１−２】本発明の第１の発明を実施するための最良の形態の構成を示すブロック図（２／２）である。
【図２−１】本発明の第１の発明を実施するための最良の形態のアプリケーションがデータにアクセスする際の動作を示すシーケンス図（１／２）である。
【図２−２】本発明の第１の発明を実施するための最良の形態のアプリケーションがデータにアクセスする際の動作を示すシーケンス図（２／２）である。
【図３−１】本発明の第１の発明を実施するための最良の形態の仮想ブロック識別子を受け取る動作を示すシーケンス図（１／２）である。
【図３−２】本発明の第１の発明を実施するための最良の形態の仮想ブロック識別子を受け取る動作を示すシーケンス図（２／２）である。
【図４】本発明の第１の発明を実施するための最良の形態の識別子の関連付けを変更する動作を示すシーケンス図である。
【図５】本発明の第２の発明を実施するための最良の形態の構成を示すブロック図である。
【図６−１】本発明の第１の発明の実施例の構成を示すブロック図（１／２）である。
【図６−２】本発明の第１の発明の実施例の構成を示すブロック図（２／２）である。
【符号の説明】
【０１８２】
１００、５０１、６００  仮想マシンＡ
１０１、１１１、６０１、６１１  アプリケーション
１０２、１１２  類似データ発見部
１０３、１１３  データ管理部
１０４、１１４  メタ情報管理部
１０５、１１５  データマップ管理部
１１０、５０２、６１０  仮想マシンＢ
１２０、５０３  仮想マシン管理部
１２１  類似ブロック置換部
１２２  仮想ブロック識別子取得部Ａ
１２３  仮想ブロック識別子取得部Ｂ
１２４  ブロックデータ比較手法選択部
１２５  第１のブロックデータ比較部
１２６  第２のブロックデータ比較部
１２７  ブロックデータアクセス部
１２８  第１のブロックデータ復元部
１２９  第２のブロックデータ復元部
１３０  ブロックマップ管理部
１３１  実ブロックアクセス部
１３２  実ブロック記憶部
５００  管理用仮想マシン
５０４  コマンド転送部
６０２  類似ファイル発見エージェントＡ
６０３、６１３  ファイルシステム
６０４、６１４  システム情報管理モジュール
６０５、６１５  ファイルレイアウトモジュール
６１２  類似ファイル発見エージェントＢ
６２０  仮想マシンモニタ
６２１  類似ブロック置換モジュール
６２２  仮想ブロック番号取得モジュールＡ
６２３  仮想ブロック番号取得モジュールＢ
６２４  ブロックデータ比較手法選択モジュール
６２５  第１のブロックデータ比較モジュール
６２６  第２のブロックデータ比較モジュール
６２７  ブロックデータアクセスモジュール
６２８  第１のブロックデータ復元モジュール
６２９  第２のブロックデータ復元モジュール
６３０  ブロックマップ管理モジュール
６３１  実ブロックアクセスモジュール
６３２  実ブロック記憶モジュール
【図１−１】
2010026790.tif 000003
【図１−２】
2010026790.tif 000004
【図２−１】
2010026790.tif 000005
【図２−２】
2010026790.tif 000006
【図３−１】
2010026790.tif 000007
【図３−２】
2010026790.tif 000008
【図４】
2010026790.tif 000009
【図５】
2010026790.tif 000010
【図６−１】
2010026790.tif 000011
【図６−２】
2010026790.tif 000012