(57)【特許請求の範囲】
【請求項１】
ネットワーク経由で接続された転送元システムと転送先システムで構成されるデータ転送システムにおいて、
前記転送元システムは、転送する仮想マシンイメージを構成する第１のビットマップと、前記仮想マシンイメージにおける仮想ディスク内にあるファイルのハッシュ値と、前記仮想ディスク内のクラスタと前記ファイルとの対応関係を示すファイルクラスタ表とを特定する第１の情報を取得する仮想マシンイメージ情報取得部と、前記転送先システムにキャッシュされているファイルのハッシュ値を特定する第２の情報を前記転送先システムから取得するキャッシュ情報取得部と、前記第１の情報と前記第２の情報を照合し、前記第２の情報以外のハッシュ値を有するファイルの前記仮想ディスク上のクラスタの位置を示す第２のビットマップと、前記第２のビットマップで示される位置のクラスタのデータと、前記第１の情報とを転送データとして抽出するデータ抽出部とを有し、
前記転送先システムは、前記第２の情報をネットワーク経由で前記転送元システムに転送するデータ転送部と、ネットワーク経由で受信した前記転送データのうち前記第２のビットマップで示される位置のクラスタのデータと自システム内にキャッシュされている前記データとを組み合わせて前記仮想マシンイメージを再構築する仮想マシン構成部とを有する
ことを特徴とするデータ転送システム。
【請求項２】
ネットワーク経由で転送先システムと接続される転送元システムにおいて、
転送する仮想マシンイメージを構成する第１のビットマップと、前記仮想マシンイメージにおける仮想ディスク内にあるファイルのハッシュ値と、前記仮想ディスク内のクラスタと前記ファイルとの対応関係を示すファイルクラスタ表とを特定する第１の情報を取得する仮想マシンイメージ情報取得部と、
前記転送先システムにキャッシュされているファイルのハッシュ値を特定する第２の情報を前記転送先システムから取得するキャッシュ情報取得部と、
前記第１の情報と前記第２の情報を照合し、前記第２の情報で特定される前記ハッシュ値以外のハッシュ値を有するファイルの前記仮想ディスク上のクラスタの位置を示す第２のビットマップと、前記第２のビットマップで示される位置のクラスタのデータと、前記第１の情報とを転送データとして抽出するデータ抽出部と
を有することを特徴とする転送元システム。
【請求項３】
ネットワーク経由で転送元システムと接続される転送先システムにおいて、
自システムにキャッシュされているファイルのハッシュ値を特定する第２の情報をネットワーク経由で前記転送元システムに転送するデータ転送部と、
ネットワーク経由で前記転送元システムから受信した転送データのうち前記第２のビットマップで示される位置のクラスタのデータと自システム内にキャッシュされている前記データとを組み合わせて仮想マシンイメージを再構築する仮想マシン構成部と
を有し、
前記転送データは、転送する仮想マシンイメージを構成する第１のビットマップと、前記仮想マシンイメージにおける仮想ディスク内にあるファイルのハッシュ値と、前記仮想ディスク内のクラスタと前記ファイルとの対応関係を示すファイルクラスタ表とを特定する第１の情報と、前記第２の情報で特定される前記ハッシュ値以外のハッシュ値を有するファイルの前記仮想ディスク上のクラスタの位置を示す第２のビットマップと、前記第２のビットマップで示される位置のクラスタのデータとで与えられる
ことを特徴とする転送先システム。
【請求項４】
ネットワーク経由で転送先システムと接続される転送元システムを構成するコンピュータを、
前記転送元システムは、転送する仮想マシンイメージを構成する第１のビットマップと、前記仮想マシンイメージにおける仮想ディスク内にあるファイルのハッシュ値と、前記仮想ディスク内のクラスタと前記ファイルとの対応関係を示すファイルクラスタ表とを特定する第１の情報を取得する仮想マシンイメージ情報取得部、
前記転送先システムにキャッシュされているファイルのハッシュ値を特定する第２の情報を前記転送先システムから取得するキャッシュ情報取得部、
前記第１の情報と前記第２の情報を照合し、前記第２の情報以外のハッシュ値を有するファイルの前記仮想ディスク上のクラスタの位置を示す第２のビットマップと、前記第２のビットマップで示される位置のクラスタのデータと、前記第１の情報とを転送データとして抽出するデータ抽出部
として機能させるプログラム。
【請求項５】
ネットワーク経由で転送元システムと接続される転送先システムを構成するコンピュータを、
自システムにキャッシュされているファイルのハッシュ値を特定する第２の情報をネットワーク経由で前記転送元システムに転送するデータ転送部、
ネットワーク経由で前記転送元システムから受信した転送データのうち前記第２のビットマップで示される位置のクラスタのデータと自システム内にキャッシュされている前記データとを組み合わせて仮想マシンイメージを再構築する仮想マシン構成部
として機能させるプログラムであり、
前記転送データは、転送する仮想マシンイメージを構成する第１のビットマップと、前記仮想マシンイメージにおける仮想ディスク内にあるファイルのハッシュ値と、前記仮想ディスク内のクラスタと前記ファイルとの対応関係を示すファイルクラスタ表とを特定する第１の情報と、前記第２の情報で特定される前記ハッシュ値以外のハッシュ値を有するファイルの前記仮想ディスク上のクラスタの位置を示す第２のビットマップと、前記第２のビットマップで示される位置のクラスタのデータとで与えられる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク経由で接続された複数のコンピュータシステム間においてデータを転送する技術に関する。
【背景技術】
【０００２】
現在、ネットワーク経由で接続された複数のコンピュータシステムの間において、大容量のファイルを高速に転送するための技術が研究されている（例えば特許文献１及び２を参照）。このうち、特許文献１は、複数のサーバで構成されたシステムにおけるファイルの高速転送技術を開示する。具体的には、特許文献１は、圧縮符号化されたストリームデータの切れ目やファイルの論理構造を考慮してファイルを複数のデータに分割し、当該分割後の各データを複数の伝送チャネルを用いて並列転送する手法を開示する。一方、特許文献２は、ディザスタ・リカバリシステムにおいて一般的な技術を開示する。具体的には、特許文献２は、ディスク間でデータの整合性が保てる点を静止点とし、静止点に対する差分データのみをディザスタ・リカバリサイト（コンピュータシステム）に転送する手法を開示する。この手法は、静止点に対する差分データのみを転送することにより転送データ量を最小化し、結果的にデータの高速転送を実現する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０２９９３６号公報
【特許文献２】特開２０１０−２１７９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に記載の技術は、複数の伝送チャネルを用い、大容量のデータ全体を並列転送することを前提とする。すなわち、この技術は、複数のコンピュータシステム間に複数の伝送チャネルが設定されていることを必要とする。また、特許文献１の方法は、大容量のデータ全体を転送することを前提とするため、個々の伝送チャネルの回線容量が小さい場合や複数の利用者が複数の伝送チャネルを同時に使用してファイルを転送する場合に、個々の伝送チャネルの利用頻度が高まり、伝送効率の低下が認められる。
【０００５】
一方、特許文献２に記載の技術は、プライマリサイト（コンピュータシステム）とディザスタ・リカバリサイト（コンピュータシステム）の間において、共通のマスタディスクを管理する必要がある。しかし、マスタディスクの管理は、新たなコストを必要とし、更に管理対象が増えるほどその管理コストが増大する。
【課題を解決するための手段】
【０００６】
かかる技術的課題を解決するため、本発明においては、以下に示す転送元システムと転送先システムとで構成されるデータ転送システムを提案する。
【０００７】
本発明に係る転送元システムは、転送する仮想マシンイメージを構成するデータを特定する第１の情報を取得する仮想マシンイメージ情報取得部と、転送先システムにキャッシュされているデータを特定する第２の情報を取得するキャッシュ情報取得部と、第１の情報と第２の情報を照合し、第２の情報以外の第１の情報に対応するデータを転送データとして抽出するデータ抽出部とを有する。
【０００８】
本発明に係る転送先システムは、前記の第２の情報をネットワーク経由で転送元システムに転送するデータ転送部と、ネットワーク経由で受信した前記の転送データと自システム内にキャッシュされているデータとを組み合わせて仮想マシンイメージを再構築する仮想マシン構成部とを有する。
【発明の効果】
【０００９】
本発明によれば、転送元システムと転送先システムにおいて、両システムに共通する仮想マシンのマスタイメージを管理する必要性をなくすことができる。その分、キャッシュデータの消費容量を削減することができる。また、本発明は、仮想マシンイメージの再構築処理に必要なデータだけを転送し、仮想マシンイメージの全体を転送しない。このため、本発明は、使用可能な個々の伝送チャネルの回線容量が小さい場合や複数の利用者が伝送チャネルを同時に使用する場合でも、ネットワークの伝送効率を落とすことなく高速にデータ転送することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】データ転送システムのネットワーク構成例を示す図。
【図２】ファイルの高速転送に用いられる従来技術例１を示す図。
【図３】ファイルの高速転送に用いられる従来技術例２を示す図。
【図４】形態例に係るファイルの高速転送技術を説明する図。
【図５】転送元システムにおけるプログラム構成を示す図。
【図６】転送先システムにおけるプログラム構成を示す図。
【図７】仮想マシンメタ情報の構成例を示す図。
【図８】空きクラスタビットマップの構成例を示す図。
【図９】ファイルハッシュ表の構成例を示す図。
【図１０】ファイルクラスタ表の構成例を示す図。
【図１１】転送クラスタビットマップの構成例を示す図。
【図１２】転送データの構成例を示す図。
【図１３】モジュールハッシュ表の構成例を示す図。
【図１４】モジュールＤＢの構成例を示す図。
【図１５】仮想マシンマウントプログラムの処理手順例を示すフローチャート。
【図１６】抽出プログラムの処理手順例を示すフローチャート。
【図１７】データ抽出プログラムにおける仮想マシンの基本情報抽出処理手順例を示すフローチャート。
【図１８】データ抽出プログラムにおける転送データ抽出処理例を示すフローチャート。
【図１９】仮想マシン構成プログラムにおけるモジュールハッシュ表の転送処理手順例を示すフローチャート。
【図２０】仮想マシン構成プログラムにおける仮想マシン作成処理手順例を示すフローチャート。
【図２１】モジュール抽出プログラムの処理手順例を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施例に分割して説明する。特に明示した場合を除き、それらは互いに無関係ではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の各実施例において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１２】
さらに、以下の実施例において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須でない。
【００１３】
以下、本発明の実施例を図面に基づいて詳細に説明する。なお、実施例を説明するための全図において、同一の機能を有する部材には同一または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
【００１４】
また、以下の実施例では、各機能部、処理部、処理手段等においては、それらの一部又は全部をプログラムを通じて実現する場合について説明するが、同機能は例えば集積回路その他のハードウェアとして実現しても良い。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD（Solid State Drive）等の記憶装置、ICカード、SDカード、DVD等の記憶媒体に格納することができる。
【００１５】
また、制御線や情報線は、説明上必要と考えられるものを示すものであり、製品上必要な全ての制御線や情報線を表すものでない。実際にはほとんど全ての構成が相互に接続されていると考えて良い。
【００１６】
［データ転送システムのネットワーク構成］
図１に、実施例に係るデータ転送システムのネットワーク構成例を説明する。なお、以下の説明では、データの転送元となるコンピュータシステムを転送元システムと呼び、データの転送先となるコンピュータシステムを転送先システムと呼ぶ。
【００１７】
図１は、国内サイトと海外サイトの間に構築されるデータ転送システムを表している。ただし、本実施例に係るデータ転送システムは、ネットワーク経由で接続された複数のコンピュータシステムより構築される全てのシステムに応用することができる。例えば転送元システムと転送先システムの両方が同一国内又は同一領域内に位置する場合、同一建物内又は同一室内に位置する場合にも適用することができる。また、データ転送に使用するネットワークは、有線ネットワークでも無線ネットワークでもよい。
【００１８】
さらに、以下の説明では、実施例に係るファイル転送技術を応用したサービスの提供例として、送信元システムがグループ企業１（１）とグループ企業２（２）、送信先システムが海外事業所１（３）、海外事業所２（４）、海外事業所３（５）、海外事業所４（６）の場合について説明する。勿論、サービスの提供例は、この構成に限らず、送信元システムと送信先システムが同一事業体又はグループに属する場合、異なる事業体又はグループに属する場合等、様々なサービス形態が考えられる。
【００１９】
グループ企業１（１）には、拠点１Ａ（１１）、拠点１Ｂ（１３）、本社（１６）があり、各拠点にはデータ同期装置（１２、１４、１５）が設置されている。グループ企業２（２）には、拠点２Ａ（２１）、拠点２Ｂ（２３）、本社（２６）があり、各拠点にはデータ同期装置（２２、２４、２５）が設置されている。
【００２０】
海外事業所１（３）には、拠点１Ｃ（３２）、拠点２Ｃ（３４）があり、各拠点にはデータ同期装置（３１、３３）が設置されている。海外事業所２（４）には、拠点１Ｄ（４２）があり、同拠点にはデータ同期装置（４１）が設置されている。海外事業所３（５）には、拠点１Ｅ（５２）、拠点２Ｄ（５４）があり、各拠点にはデータ同期装置（５１、５３）が設置されている。海外事業所４（６）には、拠点２Ｅ（６２）があり、同拠点にはデータ同期装置（６１）が設置されている。
【００２１】
一般に、各拠点同士は、ＶＰＮ（Virtual Private Network）等を通じて仮想的なネットワークを構成しているものとする。
【００２２】
［従来例における高速ファイル転送技術］
実施例と従来例との違いを明らかにするために、まず、高速ファイル転送技術の従来例を説明する。
【００２３】
図２に、従来例１を示す。図２は、本社（１６）から海外事業所１（３２）に対し、仮想マシン（２０１、２０４）を高速に転送する場合に使用するファイル転送技術の概要を表している。従来例１の場合、本社（１６）に設置したデータ同期装置（１５）と海外事業所１（３２）に設置したデータ同期装置（３１）が、仮想マシンイメージの転送を最適化する。本社（１６）側のシステムが転送元システムであり、海外事業所１（３２）側のシステムが転送先システムに当たる。
【００２４】
図２に示すシステムは、一般に、(1) 転送元システムにおけるデータ圧縮処理と転送先システムにおけるデータ解凍処理を組み合わせた転送データ量の削減処理、(2) 複数セッションの確立とそれらを同時に使用した多重転送処理とを採用する。図２のシステムは、専用のデータ同期装置（１５、３１）を使用し、圧縮後データ（２０２、２０３）の多重転送を実現する。なお、本社（１６）や海外事業所１（３２）に設置された端末（２１１、２１２）に組み込まれたエージェントプログラムが、データ同期装置（１５、３１）の代替機能を担う場合もある。
【００２５】
図３に、従来例２を示す。図３も、本社（１６）から海外事業所１（３２）に対し、仮想マシンのイメージを高速転送する場合に使用するファイル転送技術の概要を表している。ただし、従来例２のシステムは、本社（１６）と海外事業所１（３２）のそれぞれが、同一の仮想マシンのマスタイメージ（３０１、３０２）を共有する点において従来例１（図２）と異なる。
【００２６】
このシステムの場合、本社（１６）に設置したデータ同期装置（１５）が、仮想マシンイメージ（３０１）に対するデータの変更をリアルタイムで監視し、データの変更が検知されたとき、変更部分である変更部分データ（３０３）を変更データ（３０４）として海外事業所１（３２）に転送する。このとき、海外事業所１（３２）のデータ同期装置（３１）は、受信した変更データ（３０４）から変更部分データ（３０５）を復元し、仮想マシンイメージ（３０２）に適用する。
【００２７】
反対に、海外事業所１（３２）の仮想マシンイメージ（３０２）にデータの変更があった場合も、同様の方法により、本社（１６）の仮想マシンイメージ（３０１）との間でデータを同期する。なお、本社（１６）や海外事業所１（３２）に設置された端末（２１１、２１２）に組み込まれたエージェントプログラムが、データ同期装置（１５、３１）の代替機能を担う場合もある。
【００２８】
［実施例に係る高速ファイル転送技術］
図４に、実施例に係る高速ファイル転送技術の具体例を示す。図４も、本社（１６）から海外事業所１（３２）に対し、仮想マシンのイメージを高速転送する場合に使用するファイル転送技術の概要を表している。
【００２９】
実施例に係る高速ファイル転送技術の場合、仮想マシンイメージの全体又はマスタイメージとの差分データを転送するのではなく、転送先システム内のキャッシュデータと仮想マシンイメージを構成するデータとの差分データを転送し、仮想マシンイメージは転送先システムの処理資源を利用して再構築する手法を採用する。
【００３０】
図４の場合、海外事業所１（３２）の端末（２１２）には、任意の仮想マシンイメージに共通する基本データ（例えばアプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳ（Operating System）等）の構成ファイル（４０２）が予めキャッシュされているものとする。もっとも、キャッシュデータは任意であり、転送時点で転送先システム内の端末にキャッシュされているデータの意味で用いてもよい。キャッシュデータは、プログラムに限らず、データファイルも含んでよい。
【００３１】
図４に示す高速ファイル転送技術をより詳細に説明する。前述したように、仮想マシンイメージの転送元である転送元システム（本社（１６））は、仮想マシンイメージ（４０１）の全体を転送せず、転送先システム（端末（２１２））にキャッシュされていないデータ（４０３）だけを抽出し、転送先システム（端末（２１２））に転送する。図４の場合、ＤＢ（Data Base）データ（４０３）が転送される。なお、ＤＢデータは、データ圧縮した形態で転送してもよい。
【００３２】
一方、転送先システム側の端末（２１２）は、キャッシュされている構成ファイル（４０２）とＤＢデータ（４０３）とを組み合せ、新たな仮想マシンイメージ（４０４）を再構築する様子を表している。仮想マシンイメージ４０４が再構築される様子を矢印で示している。
【００３３】
前述したように、従来例１（図２）の場合には、仮想マシンイメージの全体をデータ圧縮した後、複数セッションを利用した多重転送により、仮想マシンイメージを転送する。しかし、本実施例では、仮想マシンイメージの再構築の際に不足するデータ、すなわちＤＢデータ（４０３）だけを転送する。しかも、転送するデータ量は、仮想マシンイメージの全体をデータ圧縮する場合よりも格段に小さく済み、転送データ量を最小化することができる。
【００３４】
なお、本実施例に係る転送方式もある種の差分データ転送方式であるが、従来例２（図３）のように、仮想マシンのマスタイメージを送信元と送信先の両方で共通に保持する必要がない。その分、本実施例は、システム上必要とされるデータ容量を低減することができる。
【００３５】
さらに、本実施例は、アプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳ等の構成ファイル（４０２）をファイル単位で切り出してキャッシュできる点で従来例２（図３）と異なっている。このため、構成ファイル（４０２）の構成上の変更も、ファイル単位で自由に実現できる。なお、切り出し単位はモジュール単位でもよい。
【００３６】
さらに、従来例２（図３）の場合には、転送元システムと転送先システムの間で仮想マシンのマスタイメージを１対１に対応付けて管理する必要がある。しかし、本実施例の場合には、アプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳの構成ファイル（４０２）を複数の仮想マシンイメージで共通化することができる。この場合、転送元システムと転送先システムの間において、１対Ｎ（Ｎは２以上の自然数）の管理が可能となり、管理上必要なディスク容量の大幅な節約を実現できる。なお、本実施例の場合には、構成ファイル（４０２）がいわゆるプログラムファイルで構成されているが、データファイルが含まれていてもよい。
【００３７】
［転送元システムのプログラム構成］
図５に、本実施例に係る転送元システムに実装されるプログラムの構成例を示す。転送元である本社（１６）の端末（２１１）には、オペレーティングシステム（５０１）、仮想マシンマウントプログラム（５０２）、データ抽出プログラム（５０３）がインストールされている。
【００３８】
仮想マシンマウントプログラム（５０２）は、仮想マシンイメージをローカルファイルシステムのボリュームとしてマウントするためのプログラムである。データ抽出プログラム（５０３）は、仮想マシンイメージをリモート端末に転送する場合に、転送データを抽出するプログラムである。実際の転送データは、仮想マシンメタ情報（５０４）、空きクラスタビットマップ（５０５）、ファイルハッシュ表（５０６）、ファイルクラスタ表（５０７）、転送クラスタビットマップ（５０８）、転送データ（５０９）である。
【００３９】
［転送先システムのプログラム構成］
図６に、本実施例に係る転送先システムに実装されるプログラムの構成例を示す。転送先である海外事業所１（３２）の端末（２１２）には、オペレーティングシステム（６０１）、仮想マシンマウントプログラム（６０２）、仮想マシン構成プログラム（６０３）、モジュール抽出プログラム（６０４）がインストールされている。
【００４０】
仮想マシンマウントプログラム（６０２）は、図５のプログラムと同一である。仮想マシン構成プログラム（６０３）は、リモート端末から転送された仮想マシンメタ情報（５０４）、空きクラスタビットマップ（５０５）、ファイルハッシュ表（５０６）、ファイルクラスタ表（５０７）、転送クラスタビットマップ（５０８）、転送データ（５０９）と、モジュールＤＢ（６０６）のキャッシュデータに基づいて仮想マシンイメージを再構成するプログラムである。
【００４１】
モジュール抽出プログラム（６０４）は、アプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳをインストールした記憶媒体やマスタとなる仮想マシンイメージから、キャッシュすべきモジュールファイルを抽出し、モジュールＤＢ（６０６）に登録するプログラムである。
【００４２】
さらに、本実施例に係る転送先システムは、モジュールＤＢ（６０６）のキャッシュ情報（どのモジュールがキャッシュされているか）を転送元である本社（１６）の端末（２１１）との間で共有するための仕組みとして、キャッシュ内のファイルのハッシュ値をリスト化したモジュールハッシュ表（６０５）を管理する。
【００４３】
［仮想マシンメタ情報の構成例］
図７に、仮想マシンメタ情報（５０４）の構成例を示す。仮想マシンメタ情報（５０４）は、仮想マシンイメージのヘッダ部に登録されている情報を抽出したファイルであり、仮想マシンの雛型を構築する場合に用いられる。
【００４４】
［空きクラスタビットマップの構成例］
図８に、空きクラスタビットマップ（５０５）の構成例を示す。空きクラスタビットマップ（５０５）は、仮想マシンイメージにおける仮想ディスクのビットマップ情報を抽出したファイルである。ビットマップ情報とは、ディスク上における各クラスタの利用状況を表すデータであり、ビット値の「１」はクラスタの使用中を示し、ビット値の「０」はクラスタが未使用であることを示している。図８の場合、仮想ディスクの先頭から１９２クラスタ（＝８×２４）までが使用中、その後２４クラスタ（８＊３）が未使用であることを示している。
【００４５】
［ファイルハッシュ表の構成例］
図９に、ファイルハッシュ表（５０６）の構成例を示す。ファイルハッシュ表（５０６）は、仮想マシンイメージにおける仮想ディスク内にあるファイルのハッシュ値の情報を抽出したファイルであり、転送の必要があるファイルの判別に用いられる。図９は、“AUTOEXEC.BAT”というファイルのハッシュ値が“0f3a597266321ba”であることを示している。
【００４６】
［ファイルクラスタ表の構成例］
図１０に、ファイルクラスタ表（５０７）の構成例を示す。ファイルクラスタ表（５０７）は、仮想マシンイメージにおける仮想ディスク内にあるファイルのクラスタ情報（ファイルがどのクラスタに格納されているか）を抽出したファイルであり、転送の必要があるファイルの判別に用いられる。図１０は、“bootfont.bin”というファイルが、“３５１６４”クラスタから、”３３”クラスタ長分格納されていることを示している。
【００４７】
［転送クラスタビットマップの構成例］
図１１に、転送クラスタビットマップ（５０８）の構成例を示す。転送クラスタビットマップ（５０８）は、仮想マシンイメージにおける仮想ディスクで、転送の必要なクラスタのビットマップ情報を抽出したファイルであり、ビット値の「１」は転送の必要なクラスタを示し、ビット値の「０」は転送不要なクラスタであることを示している。図１１は、仮想ディスクの先頭から１３６クラスタ（８＊１７）までは転送が必要であるが、それ以外のクラスタは転送の必要がないことを示している。特に、図中の太字で示した斜体文字部分は、使用中のクラスタであり、転送の必要がないものを示している。
【００４８】
［転送データの構成例］
図１２に、転送データ（５０９）の構成例を示す。転送データ（５０９）は、転送が必要なクラスタのデータを１ファイルにまとめたファイルである。
【００４９】
［モジュールハッシュ表の構成例］
図１３に、モジュールハッシュ表（６０５）の構成例を示す。モジュールハッシュ表（６０５）は、モジュールＤＢ（６０６）のキャッシュ情報（どのモジュールがキャッシュされているか）を転送元と共有するために、キャッシュＤＢ内のファイルのハッシュ値をリスト化したファイルである。なお、本実施例ではハッシュ値を用いているが、モジュールの特定が可能であればその他の情報を用いてもよい。
【００５０】
［モジュールＤＢの構成例］
図１４に、モジュールＤＢ（６０６）の構成例を示す。モジュールＤＢ（６０６）は、モジュールファイルのハッシュ値と実データをデータベース化したものである。本実施例では、“AAA.sys” というファイルが、ハッシュ値“da39a3ee5e6b4b0d3255bfef95601890afd80709”を持ち、データが“4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 … 0e 1f ba 0e 00 b4 09 cd 21 b8 01 4c cd 21 54 68”であることを示している。
【００５１】
［データ処理の流れ］
以下、本実施例を構成する各部において実行される処理の流れをフローチャートを用いて具体的に説明する。
【００５２】
［仮想マシンマウントプログラムの処理］
図１５に、仮想マシンマウントプログラムの処理内容をフローチャートで示す。仮想マシンマウントプログラム（５０２、６０２）は、仮想マシンマウント要求を待ち（ステップ１５０１）、仮想マシンマウント要求を受信すると（ステップ１５０２）、仮想マシンイメージをローカルファイルシステムのボリュームとしてマウントする（ステップ１５０３）。
【００５３】
［データ抽出プログラムの処理］
図１６に、データ抽出プログラム（５０３）の処理内容をフローチャートで示す。本実施例における仮想マシンイメージの転送は、図１７に示す仮想マシン基本情報抽出処理（ステップ１６０１）、図１８に示す転送データ抽出処理（ステップ１６０２）の後、開始される。仮想マシンイメージの転送は、ステップ１６０１及び１６０２の生成データである、仮想マシンメタ情報（５０４）、空きクラスタビットマップ（５０５）、ファイルハッシュ表（５０６）、ファイルクラスタ表（５０７）、転送クラスタビットマップ（５０８）、転送データ（５０９）の転送により実行される。
【００５４】
［仮想マシン基本情報抽出処理の詳細］
図１７に、ステップ１６０１として実行される仮想マシン基本情報抽出処理の詳細内容を示す。最初に、データ抽出プログラム（５０３）は、転送先システムに対し、モジュールハッシュ表（６０５）の転送を要求する（ステップ１７０１）。
【００５５】
なお、このステップ１７０１において、転送先システム（仮想マシン構成プログラム（６０３））において実行される処理動作の詳細は図１９に示す。ここで、モジュールハッシュ表（６０５）には、モジュールＤＢ（６０６）のキャッシュ情報（どのモジュールがキャッシュされているかを示す情報）が記載されている。要求に対する応答として、データ抽出プログラム（５０３）は、モジュールハッシュ表（６０５）を、転送先システムから入手する。
【００５６】
次に、データ抽出プログラム（５０３）は、仮想マシンイメージを入力し、仮想マシンメタ情報（５０４）を抽出する（ステップ１７０２）。この後、データ抽出プログラム（５０３）は、抽出した情報をファイルに格納する。
【００５７】
次に、データ抽出プログラム（５０３）は、仮想マシンマウントプログラム（５０２）に対し、仮想マシンをローカルファイルシステムのボリュームとしてマウントすることを要求する（ステップ１７０３）。このステップ１７０３で実行される処理の詳細は図１５に示している。
【００５８】
ボリュームマウント後、データ抽出プログラム（５０３）は、空きクラスタビットマップ（５０５）を抽出する（ステップ１７０４）。この後、データ抽出プログラム（５０３）は、抽出した情報をファイルに格納する。
【００５９】
次に、データ抽出プログラム（５０３）は、マウントボリュームの全ファイルの探索が終了したか否かを判定する（ステップ１７０５）。未探索ファイルが残っている間、データ抽出プログラム（５０３）は、ファイルが格納されているクラスタ情報を抽出し、抽出結果をファイルクラスタ表（５０７）に追記する（ステップ１７０６）。さらに、データ抽出プログラム（５０３）は、抽出されたファイルのハッシュ値を計算し、抽出結果をファイルハッシュ表（５０６）に追記する（ステップ１７０７）。ステップ１７０５において探索すべきファイルがなくなると、データ抽出プログラム（５０３）はループ処理を抜け、一連の処理を終了する。
【００６０】
［転送データ抽出処理の詳細］
図１８に、ステップ１６０２として実行される転送データ抽出処理の詳細内容を示す。最初に、データ抽出プログラム（５０３）は、空きクラスタビットマップ（５０５）を転送クラスタビットマップ（５０８）にコピーする（ステップ１８０１）。
【００６１】
次に、データ抽出プログラム（５０３）は、ファイルハッシュ表（５０６）とファイルクラスタ表（５０７）を参照する（ステップ１８０２）。
【００６２】
ここで、データ抽出プログラム（５０３）は、ファイルハッシュ表（５０６）に登録されている全項目の探索が終了したか否かを判定する（ステップ１８０３）。未探索項目が残っている間、データ抽出プログラム（５０３）は、ファイルハッシュ表（５０６）の各ファイルのハッシュ値が、仮想マシンイメージ転送先サイトから受信したモジュールハッシュ表（６０５）に登録済か否かをチェックする（ステップ１８０４）。
【００６３】
登録済は、該当モジュールの転送が不要であることを意味する。従って、データ抽出プログラム（５０３）は、空きクラスタビットマップ（５０５）を参照し、対応するファイルのクラスタ情報に基づいて、転送クラスタビットマップ（５０８）の対応するクラスタのビットを「０」に設定する（ステップ１８０５）。未登録の場合、データ抽出プログラム（５０３）は、ステップ１８０３に戻る。データ抽出プログラム（５０３）は、未探索項目が無くなるまで、ステップ１８０３からステップ１８０５を繰り返す。これにより、転送クラスタビットマップ（５０８）には、転送の必要があるクラスタのみビット値「１」が設定される。
【００６４】
未探索項目が無くなると、データ抽出プログラム（５０３）は、転送クラスタビットマップ（５０８）の全ビット探索が終了したか否かを判定する（ステップ１８０６）。未探索ビットがある場合、データ抽出プログラム（５０３）は、ビット値が「１」か「０」かをチェックする（ステップ１８０７）。ビット値が「１」の場合、データ抽出プログラム（５０３）は、転送データ（５０９）に対応するクラスタのデータを追記する（ステップ１８０８）。一方、ビット値が「０」の場合、データ抽出プログラム（５０３）は、ステップ１８０６に戻る。データ抽出プログラム（５０３）は、未探索ビットが無くなるまで、ステップ１８０６からステップ１８０８を繰り返す。これにより、転送の必要があるクラスタを転送データ（５０９）に集約する。
【００６５】
未探索ビットが無くなると、データ抽出プログラム（５０３）はループ処理を抜け、一連の処理を終了する。
【００６６】
［モジュールハッシュ表転送処理の詳細］
図１９に、仮想マシン構成プログラム（６０３）によるモジュールハッシュ表転送処理のフローチャートを示す。仮想マシン構成プログラム（６０３）は、転送元システムからのモジュールハッシュ表（６０５）の転送要求の受信を待ち受ける（ステップ１９０１）。仮想マシン構成プログラム（６０３）は、モジュールハッシュ表転送を受信すると（ステップ１９０２）、モジュールハッシュ表（６０５）を仮想マシンイメージの転送元システムに送信する（ステップ１９０３）。
【００６７】
［仮想マシン作成処理の詳細］
図２０に、仮想マシン構成プログラム（６０３）により実行される仮想マシン作成処理の詳細内容を示す。最初に、仮想マシン構成プログラム（６０３）は、仮想マシンメタ情報（５０４）を入力し、仮想マシンの雛型を作成する（ステップ２００１）。
【００６８】
次に、仮想マシン構成プログラム（６０３）は、転送クラスタビットマップ（５０８）の全ビットの探索が終了したか否かを判定する（ステップ２００２）。未探索ビットが残っている間、仮想マシン構成プログラム（６０３）は、ビット値が「１」か「０」かをチェックする（ステップ２００３）。
【００６９】
ビット値が「１」の場合、仮想マシン構成プログラム（６０３）は、転送データ（５０９）を参照し、雛型仮想マシンの対応するクラスタにデータを格納する（ステップ２００４）。一方、ビット値が「０」の場合、仮想マシン構成プログラム（６０３）は、ステップ２００２に戻る。仮想マシン構成プログラム（６０３）は、未探索ビットが無くなるまで、ステップ２００２からステップ２００４を繰り返す。これにより、仮想マシンイメージの転送元システムの側から送信された転送データ（５０９）の全てのデータが雛型仮想マシンに反映される。
【００７０】
ステップ２００２において未探索ビットが無くなると、仮想マシン構成プログラム（６０３）は、ファイルハッシュ表（５０６）の全項目の探索が終了したか否か判定する（ステップ２００５）。
【００７１】
未探索項目がある場合、仮想マシン構成プログラム（６０３）は、ファイルハッシュ表（５０６）の各ファイルのハッシュ値が、モジュールＤＢ（６０６）に登録済か否かチェックする（ステップ２００６）。登録済の場合、仮想マシン構成プログラム（６０３）は、モジュールＤＢ（６０６）から対応するファイルのデータを抽出し、雛型仮想マシンに格納する（ステップ２００７）。一方、未登録の場合、仮想マシン構成プログラム（６０３）は、ステップ２００５に戻る。仮想マシン構成プログラム（６０３）は、未探索項目が無くなるまで、ステップ２００５からステップ２００７を繰り返す。これにより、雛型仮想マシンには、予めキャッシュされているアプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳの構成ファイル（４０２）が反映される。
【００７２】
未探索項目が無くなると、仮想マシン構成プログラム（６０３）はループ処理を抜け、一連の処理を終了する。
【００７３】
以上のプロセス終了時点で、雛型仮想マシン（仮想マシンイメージ（４０４）は、その転送元システムの仮想マシンイメージ（４０１）と同じファイルになる。
【００７４】
［モジュール抽出プログラムの処理］
図２１に、モジュール抽出プログラム（６０４）の処理内容をフローチャートで示す。モジュール抽出プログラム（６０４）は、最初に、仮想マシンマウントプログラム（６０２）に、アプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳのインストール媒体やマスタとなる仮想マシンイメージを、ローカルファイルシステムのボリュームとしてマウントすることを要求する処理を実行する（ステップ２１０１）。
【００７５】
ボリュームのマウント後、モジュール抽出プログラム（６０４）は、ボリューム内の全ファイルの探索が終了したか否かを判定する（ステップ２１０２）。未探索ファイルが在る場合、モジュール抽出プログラム（６０４）は、各ファイルのハッシュ値を計算し、モジュールＤＢ（６０６）に登録する処理を実行し（ステップ２１０３）、次に、ハッシュ値をモジュールハッシュ表（６０５）に追記する処理を実行する（ステップ２１０４）。モジュール抽出プログラム（６０４）は、未探索ファイルが無くなるまで、ステップ２１０２からステップ２１０４を繰り返す。
【００７６】
未探索ファイルが無くなると、モジュール抽出プログラム（６０４）はループ処理を抜け、一連の処理を終了する。
【００７７】
［まとめ］
以上説明したように、本実施例に係る転送先システムには、任意の仮想マシンにおいて共通に使用されるアプリケーション・ソフトウェア、ミドル・ソフトウェア、ＯＳの構成ファイル（４０２）等のファイルが予めファイル単位でキャッシュされ、転送先システム内で管理されている。なお、キャッシュデータのファイルを共通に利用する仮想マシンの数が多いほど、仮想マシンの転送に利用するキャッシュデータの数が少なく済む。もっとも、転送先システムが転送時点でキャッシュしているファイルを、本実施例におけるキャッシュデータと考えてもよい。
【００７８】
また、本実施例に係る転送元システムは、仮想マシンイメージの転送に先立って、転送先システムのキャッシュデータの情報を取得し、仮想マシンイメージの構成に必要でありながら、転送先システムに存在しないデータだけを抽出し、転送データを構成する。このように、本実施例の場合には、仮想マシンイメージの全体を転送する必要がなく、その分、転送データ量を低減することができる。なお、この転送データ量の低減は、仮想マシンイメージの再構築機能が、転送先システム側の機能として用意されていることにより実現される。換言すると、本実施例に係るデータ転送システムでは、ネットワーク経由によるデータ転送を、ＣＰＵを使った仮想マシンイメージの再構築処理にオフロードすることができる。
【００７９】
また、本実施例に係るデータ転送システムは、転送元システムと転送先システムが、仮想マシンの共通のマスタイメージを管理する必要がない。このため、キャッシュデータの容量を削減することができ、ハードウェア資源が十分でない環境でも動作可能なシステムを提供することができる。勿論、キャッシュデータの容量が小さく済む分、コストの低減を実現できる。
【００８０】
また、本実施例の場合には、転送データ量が少なく済むため、仮想マシンイメージの転送時にも、複数の伝送チャネルを利用した多重転送を必ずしも必要としない。このため、データ転送システムの構築に必要とされるネットワーク部分の自由度を高めることができる。このため、回線容量が小さい地域や高度な通信機能を利用できない地域との間でも、仮想マシンイメージの転送サービスを提供することができる。勿論、複数の伝送チャネルを用いた多重転送が可能な場合には、伝送に要する時間を短縮することができる。しかも、本実施例の場合には、転送データ量が少なく済むため、複数人が伝送チャネルを利用する場合でも、データ転送に要する占有時間が少なく済むため、ネットワーク全体における通信への影響を最小限に留めることができる。
【符号の説明】
【００８１】
１…グループ企業１、２…グループ企業２、３…海外事業所１、４…海外事業所２、５…海外事業所３、６…海外事業所４、１１…拠点１Ａ、１３…拠点１Ｂ、２１…拠点２Ａ、２３…拠点２Ｂ、３２…拠点１Ｃ、３４…拠点２Ｃ、４２…拠点１Ｄ、５２…拠点１Ｅ、５４…拠点２Ｄ、６２…拠点２Ｅ、１６、２６…本社、１２、１４、２２、２４、３１，３３、４１、５１，５３、６１…データ同期装置、５０２…仮想マシンマウントプログラム、５０３…データ抽出プログラム、５０４…仮想マシンメタ情報、５０５…空きクラスタビットマップ、５０６…ファイルハッシュ表、５０７…ファイルクラスタ表、５０８…転送クラスタビットマップ、５０９…転送データ、６０２…仮想マシンマウントプログラム、６０３…仮想マシン構成プログラム、６０４…モジュール抽出プログラム、６０５…モジュールハッシュ表、６０６…モジュールＤＢ。
【図１】
0005756379.tif 000002
【図２】
0005756379.tif 000003
【図３】
0005756379.tif 000004
【図４】
0005756379.tif 000005
【図５】
0005756379.tif 000006
【図６】
0005756379.tif 000007
【図７】
0005756379.tif 000008
【図８】
0005756379.tif 000009
【図９】
0005756379.tif 000010
【図１０】
0005756379.tif 000011
【図１１】
0005756379.tif 000012
【図１２】
0005756379.tif 000013
【図１３】
0005756379.tif 000014
【図１４】
0005756379.tif 000015
【図１５】
0005756379.tif 000016
【図１６】
0005756379.tif 000017
【図１７】
0005756379.tif 000018
【図１８】
0005756379.tif 000019
【図１９】
0005756379.tif 000020
【図２０】
0005756379.tif 000021
【図２１】
0005756379.tif 000022