(57)【要約】      （修正有）【課題】仮想マシンのサービス停止時間の短縮化を図りつつ、シンプルな処理により既存のＶＭディスクイメージの重複排除処理を実現する。【解決手段】仮想マシンをマスタのディスクイメージとの差分データのみを格納したデルタディスクを使って稼動させる、リンクド仮想マシン機能を利用する。マスタのディスクイメージと重複排除対象とするディスクイメージとをユーザに指定させ、デルタディスクを作成する。また、重複排除対象ディスクイメージのスナップショットを作成し、それ以降の変更内容はログディスクイメージに格納する。そして、マスタのディスクイメージと重複排除対象のディスクイメージとの差分セクタ情報をデルタディスクに書き込み、既存の仮想マシンのディスクイメージをデルタディスクに変換するとともに、リンクド仮想マシンとして動作させる。さらに、ログディスクイメージから変更内容をデルタディスクに反映する。【選択図】図６
2012128684.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを含む物理サーバと、前記複数の仮想マシンに対応するディスクイメージを格納するストレージ装置と、前記仮想マシン及び前記ディスクイメージに対して重複排除処理を実行する処理実行計算機と、を有するサーバシステムの管理方法であって、
前記処理実行計算機が、
前記ストレージ装置内の既存のディスクイメージにおいて、マスタとして使用するマスタディスクイメージと重複排除対象ディスクイメージの指定入力を受付け、
前記重複排除対象ディスクイメージに対応し、前記指定されたマスタディスクイメージを参照するデルタディスクイメージを作成し、
前記指示入力に応答して、前記重複排除対象ディスクイメージを書き込み禁止状態にし、当該書き込み禁止状態にした後の前記重複排除対象ディスクイメージに対する変更に関する情報を管理するための変更管理情報と、を作成し、
前記マスタディスクイメージと前記重複排除対象スナップショットの差分情報を生成し、
前記生成した差分情報を前記デルタディスクイメージに書き込み、
前記指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断した後に、前記変更管理情報を用いて取得される、前記重複排除対象ディスクに対する変更内容を前記デルタディスクイメージに書き込み、
前記デルタディスクイメージを前記仮想マシンに関連付け、前記重複排除対象ディスクイメージを削除することを特徴とする管理方法。
【請求項２】
請求項１において、
前記処理実行計算機は、前記重複排除対象ディスクイメージに対応する仮想マシンをコピーして、リンクド仮想マシンを生成し、当該リンクド仮想マシンに前記デルタディスクイメージを関連付け、前記重複排除対象ディスクイメージ及びそれに対応する仮想マシンを削除することを特徴とする管理方法。
【請求項３】
請求項１において、
前記処理実行計算機は、前記デルタディスクイメージを前記重複排除対象ディスクイメージに対応する仮想マシンの参照先に設定し、前記重複排除対象ディスクイメージを削除することを特徴とする管理方法。
【請求項４】
請求項１において、
前記処理実行計算機は、前記差分情報を生成して前記デルタディスクイメージに書き込む際に、前記マスタディスクイメージと前記書込み禁止状態の重複排除対象ディスクイメージとで異なるデータを格納している差分セクタ情報を取得し、当該取得した差分セクタ情報を前記デルタディスクイメージに書き込むことを特徴とする管理方法。
【請求項５】
請求項４において、
前記処理実行計算機は、前記マスタディスクイメージと前記書き込み禁止状態の重複排除対象ディスクイメージとのデータ内容を比較し、データ内容が不一致の場合に、当該不一致のデータが格納されているセクタ位置と、前記書込み禁止状態の重複排除対象ディスクイメージのデータ内容と、を前記差分セクタ情報として取得することを特徴とする管理方法。
【請求項６】
請求項４において、
前記変更管理情報は、前記書込み禁止状態後のデータ内容を格納するログディスクイメージであり、
前記処理実行計算機は、前記指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断した後に、前記ログディスクイメージを前記デルタディスクイメージに書き込むことを特徴とする管理方法。
【請求項７】
請求項４において、
前記変更管理情報は、前記マスタディスクイメージと前記書き込み禁止状態の重複排除対象ディスクイメージの差分セクタ位置を記録した変更トラックファイルであり、
前記処理実行計算機は、前記変更トラックファイルを読み込み、当該変更トラックファイルに記録されたセクタ位置と、前記書込み禁止状態の重複排除対象ディスクイメージの当該セクタ位置におけるデータ内容と、を前記差分セクタ情報として取得することを特徴とする管理方法。
【請求項８】
物理サーバに含まれる複数の仮想マシンと、ストレージ装置が格納する、前記複数の仮想マシンに対応するディスクイメージに対して重複排除処理を実行する管理計算機であって、
所定の演算を実行するプロセッサと、前記物理サーバと通信するためのインタフェースと、を有し、
前記プロセッサは、
前記ストレージ装置内の既存のディスクイメージにおいて、マスタとして使用するマスタディスクイメージと重複排除対象ディスクイメージの指定入力を受付け、
前記重複排除対象ディスクイメージに対応し、前記指定されたマスタディスクイメージを参照するデルタディスクイメージを作成し、
前記重複排除対象ディスクイメージの状態を記録した重複排除対象スナップショットと、スナップショット取得以降の前記重複排除対象ディスクイメージに対する変更に関する情報を管理するための変更管理情報と、を作成し、
前記マスタディスクイメージと前記重複排除対象スナップショットの差分情報を生成し、
前記生成した差分情報を前記デルタディスクイメージに書き込み、
前記指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断した後に、前記変更管理情報を用いて取得される、前記スナップショット取得以降の前記重複排除対象ディスクに対する変更内容を前記デルタディスクイメージに書き込み、
前記デルタディスクイメージを前記仮想マシンに関連付け、前記重複排除対象ディスクイメージを削除することを特徴とする管理計算機。
【請求項９】
請求項８において、
前記プロセッサは、前記重複排除対象ディスクイメージに対応する仮想マシンをコピーして、リンクド仮想マシンを生成し、当該リンクド仮想マシンに前記デルタディスクイメージを関連付け、前記重複排除対象ディスクイメージ及びそれに対応する仮想マシンを削除することを特徴とする管理計算機。
【請求項１０】
請求項８において、
前記プロセッサは、前記デルタディスクイメージを前記重複排除対象ディスクイメージに対応する仮想マシンの参照先に設定し、前記重複排除対象ディスクイメージを削除することを特徴とする管理計算機。
【請求項１１】
請求項８において、
前記プロセッサは、前記差分情報を生成して前記デルタディスクイメージに書き込む際に、前記マスタディスクイメージと前記重複排除対象スナップショットとで異なるデータを格納している差分セクタ情報を取得し、当該取得した差分セクタ情報を前記デルタディスクイメージに書き込むことを特徴とする管理計算機。
【請求項１２】
請求項１１において、
前記プロセッサは、前記マスタディスクイメージと前記重複排除対象スナップショットとのデータ内容を比較し、データ内容が不一致の場合に、当該不一致のデータが格納されているセクタ位置と、前記重複排除対象スナップショットのデータ内容と、を前記差分セクタ情報として取得することを特徴とする管理計算機。
【請求項１３】
請求項１１において、
前記変更管理情報は、前記スナップショット取得以降のデータ内容を格納するログディスクイメージであり、
前記プロセッサは、前記指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断した後に、前記ログディスクイメージを前記デルタディスクイメージに書き込むことを特徴とする管理計算機。
【請求項１４】
請求項１１において、
前記変更管理情報は、前記マスタディスクイメージと前記重複排除対象スナップショットの差分セクタ位置を記録した変更トラックファイルであり、
前記プロセッサは、前記変更トラックファイルを読み込み、当該変更トラックファイルに記録されたセクタ位置と、前記重複排除対象スナップショットの当該セクタ位置におけるデータ内容と、を前記差分セクタ情報として取得することを特徴とする管理計算機。
【請求項１５】
計算機に、物理サーバに含まれる複数の仮想マシンに対応するディスクイメージに対して重複排除処理を実行させるためのプログラムであって、
前記ストレージ装置内の既存のディスクイメージにおいて、マスタとして使用するマスタディスクイメージと重複排除対象ディスクイメージの指定入力を受付ける機能と、
前記重複排除対象ディスクイメージに対応し、前記指定されたマスタディスクイメージを参照するデルタディスクイメージを作成する機能と、
前記重複排除対象ディスクイメージの状態を記録した重複排除対象スナップショットと、スナップショット取得以降の前記重複排除対象ディスクイメージに対する変更に関する情報を管理するための変更管理情報と、を作成する機能と、
前記マスタディスクイメージと前記重複排除対象スナップショットの差分情報を生成機能と、
前記生成した差分情報を前記デルタディスクイメージに書き込む機能と、
前記指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断した後に、前記変更管理情報を用いて取得される、前記スナップショット取得以降の前記重複排除対象ディスクに対する変更内容を前記デルタディスクイメージに書き込む機能と、
前記デルタディスクイメージを前記仮想マシンに関連付け、前記重複排除対象ディスクイメージを削除する機能と、を前記計算機に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバシステムの管理方法、及び管理計算機、並びにプログラムに関し、例えば、仮想マシンディスクイメージの重複排除を実行する技術に関するものである。
【背景技術】
【０００２】
仮想マシン（以下、「ＶＭ」と記述することがある）が占有するストレージ装置の容量を削減する技術に、ＶＭディスクイメージの重複排除技術がある。
【０００３】
例えば、特許文献１には、ディスクイメージの重複排除の例が開示されている。具体的には、ＶＭがデータを保存する際に、新規に保存しようとするデータと類似したデータが既に別のＶＭにより保存されているかを確認する。そして、類似データが保存されている場合には、データそのものを保存するのではなく、既に保存されているデータを参照するためのブロック識別子を保存する。これにより、ディスクイメージの重複排除を行う。
【０００４】
また、非特許文献２には、既存のＶＭを複製（クローン）して新たにＶＭを作成する際に、クローン元のＶＭが保持するディスクイメージ（以下、マスタディスクイメージと記載）全体をコピーするのではなく、マスタディスクイメージへの参照情報とマスタディスクイメージとの差分データを格納するデルタディスクイメージを保持するリンクドＶＭを作成する技術が開示されている。なお、リンクドＶＭに対し、ディスクイメージ全体をコピーしたＶＭはフルクローンＶＭと呼ばれる。
【０００５】
図１は、リンクドＶＭにおけるＩ／Ｏ処理の動作概念を示す図である。リンクドＶＭにおいては、データの書き込みは全てデルタディスクに対して行われる。一方、データの読込みは、デルタディスク又はクローン元となったマスタディスクのいずれかから行う。すなわち、要求されたデータがデルタディスクに存在する場合はデルタディスクから読み込み、要求されたデータがデルタディスクに存在しない場合はマスタディスクからデータを読み込む。リンクドＶＭはマスタディスクイメージと重複したデータを持たないため、フルクローンＶＭを使う場合と比較してストレージ容量が削減できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2010-26790号公報
【非特許文献】
【０００７】
【非特許文献１】VMware社Technical Note「Linked Virtual Machines」(http://www.VMware.com/support/developer/vc-sdk/linked_VMs_note.pdf)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に開示の技術は、重複排除の仕組みがストレージ装置の物理構成に依存するため、汎用性が低い。つまり、特許文献１では、ストレージ装置のブロックの配置情報に基づくブロック識別子を使用して重複排除している。このブロックの配置情報はストレージ装置毎に異なるため、ＶＭ横断で一致データを探し、既に保存されているブロックを参照するためのブロック識別子情報をストレージ装置毎に用意しなければならならず、非常に煩雑である。
【０００９】
また、非特許文献１に開示の従来技術は、リンクドＶＭの新規作成しか考慮されておらず、既存のフルクローンＶＭをリンクドＶＭに作り変える方法は提供されていない。このため、既存のＶＭディスクイメージの重複を排除し、仮想マシンが占有するストレージ装置の容量を削減することは困難である。
【００１０】
さらに、重複排除処理中にＶＭのサービスを停止しなければならないが、この停止時間を極力短くすることがシステム運用上望ましい。
【００１１】
本発明はこのような状況に鑑みてなされたものであり、サービス停止時間の短縮化を図りつつ、シンプルな処理により既存のＶＭディスクイメージの重複排除を実現できる技術を提供するものである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明では、重複排除対象ディスクイメージに対応し、指定されたマスタディスクイメージを参照するデルタディスクイメージを作成する。また、重複排除対象ディスクイメージの状態を記録した重複排除対象スナップショットと、スナップショット取得以降の重複排除対象ディスクイメージに対する変更に関する情報を管理するための変更管理情報と、を作成する。さらに、マスタディスクイメージと重複排除対象スナップショットの差分情報を生成する。そして、生成した差分情報をデルタディスクイメージに書き込み、指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断した後に、変更管理情報を用いて取得される、スナップショット取得以降の重複排除対象ディスクに対する変更内容を前記デルタディスクイメージに書き込む。さらに、デルタディスクイメージを仮想マシンに関連付け、重複排除対象ディスクイメージを削除する。
【００１３】
さらなる本発明の特徴は、以下本発明を実施するための形態および添付図面によって明らかになるものである。
【発明の効果】
【００１４】
本発明によれば、サービス停止時間の短縮化を図りつつ、シンプルな処理により既存のＶＭディスクイメージの重複排除を実現できるようになる。
【図面の簡単な説明】
【００１５】
【図１】リンクドＶＭとデルタディスクのＩＯ処理の動作を説明するための概念図である。
【図２】スナップショットのディスク構成とディスクアクセスの動作を説明するための概念図である。
【図３】デルタディスクイメージのディスク構成とディスクアクセスの動作を説明するための概念図である。
【図４】本発明の実施形態によるサーバシステム（仮想マシンディスクイメージの重複排除システム）の概略構成を示す図である。
【図５】ディスクイメージ変換プログラムの全体動作を説明するためのフローチャートである。
【図６】デルタディスク作成処理の詳細を説明する動作概念図である。
【図７】デルタディスクの作成処理の詳細を説明するためのフローチャートである。
【図８】仮想マシンの作り替えによるデルタディスクの作成処理の動作概念図である。
【図９】ディスクイメージの付け替えによるデルタディスクの作成処理の動作概念図である。
【発明を実施するための形態】
【００１６】
本発明は、仮想マシンディスクイメージの重複排除を実行する技術に関するが、特に、既存の仮想マシンをリンクド仮想マシンと呼ばれる特別なイメージに作り替える技術に関するものである。
【００１７】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１８】
＜スナップショットを用いたＶＭ＞
リンクドＶＭが使用するデルタディスクイメージは、ＶＭのスナップショットを利用して作成される。スナップショットとは、ある瞬間のＶＭの状態を復元可能な状態で記録したディスクイメージである。以下では、図２及び図３を参照して、スナップショット及びデルタディスクイメージのディスク構成とディスクアクセスの仕組みを説明する。
【００１９】
図２は、スナップショットのディスク構成例とディスクアクセスの仕組みを説明するための図である。図２Ａは、スナップショットが存在しないＶＭのディスク構成例を示している。スナップショットが存在しないＶＭには一つのディスクイメージしかない。ＶＭのディスクアクセス（データの読取りと書き込み）は全てこのディスクイメージに対して行われる。
【００２０】
また、図２Ｂは、スナップショットを作成した場合のＶＭのディスク構成例を示している。ＶＭのスナップショットは子が親への参照情報をもつディスクイメージのツリーとして構成される。スナップショットの作成が要求されると、仮想化ソフトは現在アクセスしているディスクイメージに読み取り専用権限を設定して保存する。さらに、このディスクイメージを親とした子ディスクイメージを作成する。この子ディスクイメージはログディスクイメージと呼ばれる。ログディスクイメージは、親ディスクイメージへの参照情報を持ち、スナップショット作成以降に変更されたデータを格納する。
【００２１】
スナップショット作成以降のＶＭに対するディスクアクセスは、次のように処理される。まず、データの書き込みは全てログディスクイメージに対して行われる。一方、データの読込みはログディスクイメージ又は親ディスクイメージのいずれかから行われる。すなわち、要求されたデータがログディスクイメージに存在する場合はログディスクイメージから読み込まれ、要求されたデータがログディスクイメージに存在しない場合は、親ディスクイメージから読み込まれる。
【００２２】
なお、２つ以上のスナップショットの作成が要求された場合は、仮想化ソフトは現在ＶＭがアクセスしているログディスクイメージを読み取り専用にして保存し、このログディスクイメージを親とした、新しいログディスクイメージを作成する。データの書き込みは常に最新のログディスクイメージに対して行われ、データの読込みは、要求されたデータが見つかるまで子から親方向へディスクイメージのツリーを辿ることで処理される。
【００２３】
また、スナップショットからのディスクイメージの復元は、復元したいデータを格納するツリー位置から親方向に存在する全てのログディスクを統合したディスクイメージを作成し、これをＶＭに読み込ませることで実現される。一方、スナップショットの削除は、削除したいデータを格納するログディスクイメージを親ディスクイメージに「マージ」することで実現される。ここで、「マージ」とは、ログディスクイメージの内容を親ディスクイメージに書き込み、さらにログディスクイメージを削除する処理をいう。
【００２４】
ログディスクイメージの親子関係をつくるリンクは、仮想化ソフトウェア（仮想化プログラムとも言う）が提供するＡＰＩを使用することで任意のディスクイメージに付け替えることができる。
【００２５】
図３は、デルタディスクイメージのディスク構成とディスクアクセスの仕組みを説明するための図である。リンクドＶＭは、クローン元ＶＭのディスクイメージツリーを流用したＶＭである。ＶＭを複製（クローン）して新たにＶＭを作成する際に、クローン元ＶＭのディスクイメージの子となる、ログディスクイメージだけを持つＶＭが作成される。本明細書では、リンクドＶＭにおいて参照するログディスクイメージをデルタディスクイメージと呼ぶこととする。リンクドＶＭは、クローン元ＶＭとの差分となるディスクイメージしか保持しないため、フルクローンＶＭと比較して、ＶＭの稼動に必要なストレージ容量を削減することができる。
【００２６】
＜システム構成＞
図４は、本発明の実施形態によるサーバシステム（ディスクイメージ重複排除システム）の概略構成を示す図である。当該サーバシステムは、複数の物理サーバ４０１と、ＶＭ管理サーバ４０２と、プログラム実行サーバ４０３と、ストレージ装置４０４と、を有し、それらが管理用ネットワーク４０５及びストレージネットワーク４０６で接続されている。プログラム実行サーバ４０３は独立して存在する必要は必ずしもなく、その機能はＶＭ管理サーバ４０２や物理サーバ４０１に含まれていても良い。また、図４には本発明に関係する構成要素のみが示されているが、物理サーバ、ＶＭ管理サーバ、及びプログラム実行サーバは、少なくともコンピュータとして通常有する制御部（ＣＰＵやＭＰＵ）、キャッシュ、ＲＯＭ及びＲＡＭ等のメモリ、通信用インタフェース（Ｉ／Ｆ）を有している。ＶＭ管理サーバ４０２は、さらに、管理者が物理サーバ４０１とストレージ装置４０４の状況を管理するため、表示装置を有するものである。
【００２７】
各物理サーバ４０１は、ＶＭ制御プログラム４０７と、少なくとも１つの仮想マシン（ＶＭ）４０８を含んでおり、ＶＭ制御プログラム４０７を実行してＶＭ４０８を動作させる。ＶＭ制御プログラム４０７は、物理サーバ４０１のハードウェア構成をソフトウェア技術でエミュレートし、任意のハードウェア構成をもつＶＭ４０８を動作可能にする機能を有している。ＶＭ制御プログラム４０７には、例えばＶＭware ESX（登録商標）を用いることができる。
【００２８】
ＶＭ管理サーバ４０２は、仮想環境管理プログラム４０９を実行するサーバである。仮想環境管理プログラム４０９は、ＶＭ制御プログラム４０７とＶＭ４０８及びストレージ装置４０４内のファイルやデータを操作する仮想環境管理ＡＰＩ（Application Programing Interface）４１０を提供する機能を有する。仮想環境管理プログラム４０９には、例えばＶＭware vCenter Server（登録商標）を用いることができる。
【００２９】
なお、仮想環境管理プログラム４０９は、管理する全てのＶＭ４０８とディスクイメージ４１２に、これらを一意に特定するためのパスを設定する。例えば、図４に示す通り、仮想環境管理プログラム４０９は、ＶＭ１には”/Host01/VM01”を設定し、ＶＭ１のディスクイメージには”/Host01/VM01.vmdk”を設定する。なお、本実施形態で、ディスクイメージのパスは、ディスクイメージを参照するＶＭ４０８のパスと拡張子の組み合わせで構成されており、拡張子を取り除くことでディスクイメージのパスからＶＭのパスが容易に取得できるものとなっている。
【００３０】
プログラム実行サーバ４０３は、本発明の主たる処理を行うディスクイメージ変換プログラム４１１を実行するサーバである。
【００３１】
ストレージ装置４０４は、ディスクイメージ４１２や、その他の図示しないＶＭの構成ファイルを格納する記憶装置である。ディスクイメージ４１２はＶＭ４０８毎に存在する。なお、ＶＭ構成ファイルには、例えば当該ＶＭが使用するディスクイメージ４１２を指定する設定ファイルなどがある。
【００３２】
＜ＶＭディスクイメージの重複排除処理＞
以下、本発明のＶＭディスクイメージの重複排除処理の内容について説明する。ＶＭディスクイメージの重複排除処理に関しては、例えば、プログラム実行サーバ４０３がディスクイメージ変換プログラム４１１を実行することで実現している。なお、本実施の形態において、重複排除対象ディスクイメージを保持するＶＭは、重複排除処理の実行に先立ち稼動しているものとする。また、マスタディスクイメージと重複排除対象ディスクイメージのディスクサイズは同一であるとする。
【００３３】
図５は、ディスクイメージ変換プログラム４１１によるＶＭディスクイメージ重複排除処理の内容を説明するためのフローチャートである。プログラムはモジュール化したものであっても良い。なお、以降の処理動作の説明では、「プログラム」（「モジュール」と読み替えても良い）を動作主体（主語）として説明を行う場合があるが、プログラムやモジュールは、プロセッサによって実行されることで、定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを動作主体（主語）とした処理に読み替えても良い。また、プログラムやモジュールを主語として開示された処理は、管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００３４】
ディスクイメージ変換プログラム４１１は、重複排除対象とする複数のディスクイメージのパスのリストと、マスタとして使用するディスクイメージのパスの入力を、ＶＭ管理サーバ４０２の表示装置によって表示されたＧＵＩを介して管理者に要求し、管理者の指定入力によりこれらを取得する（ステップ５０１）。入力は、例えば、上述のような管理者によるＧＵＩ（コンソール）操作によって行われても良いし、予め作成しておいたテキストファイルの読込みなどの方法でも良い。
【００３５】
次に、ディスクイメージ変換プログラム４１１は、ステップ５０１で取得した重複排除対象ディスクイメージのパスのリストを１行読み込み、重複排除対象ディスクイメージのパスを取得する（ステップ５０２）。
【００３６】
続いて、ディスクイメージ変換プログラム４１１は、ステップ５０２で取得した重複排除対象ディスクイメージのパスから拡張子を取り除き、当該重複排除対象ディスクイメージを保持するＶＭ４０８のパスを取得する（ステップ５０３）。
【００３７】
ディスクイメージ変換プログラム４１１は、デルタディスクの作成処理を実行し、重複排除対象ディスクイメージのデータ内容を反映したデルタディスクを使用するリンクドＶＭを作成する（ステップ５０４）。当該処理の詳細については後述する。
【００３８】
また、ディスクイメージ変換プログラム４１１は、ステップ５０４で作成したデルタディスクのパスから拡張子を取り除き、リンクドＶＭのパスを取得する。そして、リンクドＶＭのパスを引数に仮想環境管理ＡＰＩ４１０を使用して、リンクドＶＭの電源を入れて起動する（ステップ５０５）。
【００３９】
重複排除対象ディスクイメージのパスのリストに未処理のパスが残っているならば、ディスクイメージ変換プログラム４１１は、読み込む行を１行進めてステップ５０２へ処理を移行させる。重複排除対象ディスクイメージのパスのリストの全ての行について処理が完了したら処理を終了する（ステップ５０６）。
【００４０】
＜デルタディスク作成処理の詳細＞
図６は、デルタディスク作成処理の動作概念図である。デルタディスクの作成処理は、大きく２つの手順に分けられる。図６（１）の処理（以下、処理１という）は、重複排除対象ディスクイメージのスナップショットを作成し、作成したスナップショットとマスタディスクイメージとの差分セクタをデルタディスクに書き込む処理である。図６（２）の処理（以下、処理２という）は、重複排除対象ディスクイメージのスナップショットの取得により作成された、ログディスクイメージのデータをデルタディスクにマージする処理である。これら処理を実行することにより、重複排除対象ディスクイメージと論理的に同じデータを持つデルタディスクイメージが作成される。
【００４１】
本発明は、計算量が多く処理に時間がかかる上記処理１を、ＶＭを稼動させたまま実行できる特徴を有している。ＶＭを稼動させたままディスクイメージの重複排除を実現するためには、重複排除処理の前後でのディスクイメージの整合性を担保するために、重複排除処理の実行中にディスクイメージが変更されることを防ぐ必要がある。このため、本発明では、ＶＭのスナップショット機能を利用してディスクイメージの変更を防いでいる。すなわち、読み取り専用のディスクイメージ（重複排除対象スナップショット）を作成し、作成した読み取り専用のディスクイメージに対してのみ重複排除処理を実行している。そして、ＶＭのデータ書き込み先をログディスクイメージに切り替え、重複排除処理中に発生した重複排除対象ディスクイメージに対する変更を、そのログディスクイメージに格納しておき、最終的にそれを反映させる。このようにすることで、ＶＭのサービスは、ログディスクイメージを重複排除後の差分データに反映するときに掛かる時間のみ停止させれば良くなり、サービス停止期間を短縮することが可能となる。
【００４２】
なお、本明細書では、重複排除処理を実行する読み取り専用のディスクイメージを、重複排除対象スナップショットと記述する。
【００４３】
以下では、デルタディスク作成処理の処理手順を説明する。なお、デルタディスクの作成処理には、ＶＭの作り替えによる作成方法と、ディスクイメージの付け替えによる作成方法の２通りの方法があるが、本実施形態では、まずＶＭの作り替えによる作成方法について説明し、ディスクイメージの付け替えによる作成方法については後述する。
【００４４】
図７は、デルタディスク作成処理の内容を説明するためのフローチャートである。ステップ７０１〜ステップ７０７が上記処理１（図６（１）参照）に対応し、ステップ７０８〜ステップ７１０が上記処理２（図６（２）参照）に対応する。図８は、ディスクイメージの作り替えによるデルタディスク作成処理の動作概念を示す図である。
【００４５】
まず、ディスクイメージ変換プログラム４１１は、仮想環境管理ＡＰＩ４１０を使用して、重複排除対象のディスクイメージと重複排除対象ディスクイメージを保持するＶＭの名前を付け替え、パスを変更する（ステップ７０１）。例えば、図８に示すようにＶＭのパスを”/Host01/VM01”から”/Host01/VM01_tmp”へ変更し、またディスクイメージのパスを“/Host01/VM01.vmdk”から”/Host01/VM01_tmp.vmdk”に変更する。
【００４６】
そして、ディスクイメージ変換プログラム４１１は、仮想環境管理ＡＰＩ４１０を使用して、ステップ５０１で取得したマスタディスクイメージを参照するリンクドＶＭと、リンクドＶＭが参照するデルタディスクをそれぞれ作成する。なお、デルタディスクとリンクドＶＭのパスはそれぞれ、ステップ７０１で名前を付け替える前の重複排除対象ディスクイメージのパスと、重複排除対象ディスクイメージを参照するＶＭのパスを指定する（ステップ７０２）。即ち、本例では、”/Host01/VM01”と“/Host01/VM01.vmdk”が指定される。このステップ以降、前述したリンクドＶＭの仕組みにより、リンクドＶＭにおけるデータの読込み処理は、デルタディスク又はマスタディスクのいずれかから行われ、リンクドＶＭにおけるデータの書き込み処理は全てデルタディスクへ行われることになる。
【００４７】
続いて、ディスクイメージ変換プログラム４１１は、ＶＭを稼動させたまま、仮想環境管理ＡＰＩ４１０を使用して、重複排除対象ディスクイメージのスナップショットを取得する。この処理により、重複排除対象ディスクイメージは、読み取り専用権限が設定された重複排除対象スナップショットとログディスクイメージに分離される。（ステップ７０３）。
【００４８】
ディスクイメージ変換プログラム４１１は、仮想環境管理ＡＰＩ４１０を使用して、マスタディスクイメージと重複排除対象スナップショットから指定セクタ分のデータを読み込み取得する（ステップ７０４）。
【００４９】
さらに、ディスクイメージ変換プログラム４１１は、ステップ７０４で取得したマスタディスクイメージと重複排除対象スナップショットのデータ内容を比較する（ステップ７０５）。そして、データ内容が一致しなかった場合（ステップ７０５でＮｏ）、処理はステップ７０６へ進む。データ内容が一致していた場合（ステップ７０５でＹｅｓ）、処理はステップ７０７へ進む。
【００５０】
そして、ディスクイメージ変換プログラム４１１は、ステップ７０４で取得した重複排除対象スナップショットのデータ内容を、セクタ位置情報と共にステップ７０２で作成したデルタディスクへ書き込む（ステップ７０６）。
【００５１】
ディスクイメージ変換プログラム４１１は、マスタディスクイメージ及び重複排除対象スナップショットの全セクタの読込みが完了していないと判断した場合、読込み位置を次の指定セクタ単位に移動させ、処理をステップ７０４に移行させる。全セクタの読込みが完了した場合は、処理はステップ７０８へ進む（ステップ７０７）。
【００５２】
ディスクイメージ変換プログラム４１１は、仮想環境管理ＡＰＩ４１０を使用して、重複排除対象ディスクイメージを保持するＶＭの電源を落とす（ステップ７０８）。
【００５３】
ディスクイメージ変換プログラム４１１は、仮想環境管理ＡＰＩ４１０を使用して、ログディスクイメージに格納されたデータを、ステップ７０２で作成したデルタディスクイメージに書き込む（ステップ７０９）。この処理により、デルタディスクには、ステップ７０３でスナップショットが取得されてから、ステップ７０８で電源が落とされるまでの間に変更されたデータ内容が反映される。なお、本処理は例えば以下のように実施される。まず、ディスクイメージ変換プログラム４１１が、仮想環境管理ＡＰＩ４１０を使用して、ログディスクイメージのリンクを、ログディスクイメージがデルタディスクイメージの子になるように付け替える。次に、ログディスクイメージをデルタディスクイメージにマージする。ログディスクのマージ処理事態は数秒で終了する処理ではあるが、ＯＳの停止及び再起動を含めると、ステップ７０９における反映処理は１〜２分掛かる処理となる。ただし、重複排除処理（ステップ７０１から７０７）の間中ずっとＶＭの稼働を停止させた場合（例えば、重複排除処理自体は２０分ほどの処理となる）に比べると、ＶＭ稼働（サービス）停止時間を極めて短縮することが可能となる。
【００５４】
最後に、ディスクイメージ変換プログラム４１１は、重複排除対象ディスクイメージと、重複排除対象ディスクイメージを保持するＶＭとを削除して、処理を終了する（ステップ７１０）。
【００５５】
以上、本発明の実施形態の一例を説明した。なお、本実施の形態では、発明の効果を説明するため、重複排除対象ディスクイメージを保持するＶＭは、重複排除処理の実行に先立ち稼動しているものとしている。しかし、重複排除対象ＶＭが停止されている場合であっても、説明した処理の実行自体は可能である。
【００５６】
＜変形例＞
（１）デルタディスクの作成処理の変形
上述の実施形態において、ステップ５０４のデルタディスクの作成処理では、リンクドＶＭを、重複排除対象ディスクイメージを保持するＶＭとは別に作成している。つまり、ＶＭごと作り変える方法が示されている。
【００５７】
しかし、デルタディスクの作成処理は、既存のＶＭの参照するディスクイメージを付け替える方法でも実施できる。図９に、ディスクイメージの付け替えによるデルタディスクの作成処理の動作概念を示す。この例では、デルタディスクのみを新規作成し、その後、既存のＶＭの参照先ディスクを作成したデルタディスクに付け替えている。
【００５８】
以下にディスクイメージの付け替えによるデルタディスクの作成処理を説明する。なお、各処理ステップは図７とほぼ同じであるため図７との差異のみ説明する。
【００５９】
まず、ステップ７０１で、ディスクイメージ変換プログラム４１１は、重複排除対象ディスクイメージの名前のみ付け替えてパスを変更する。ＶＭの名前は変更しない。
【００６０】
次に、ステップ７０２で、ディスクイメージ変換プログラム４１１は、仮想環境管理ＡＰＩ４１０を使用して、ステップ５０１で取得したマスタディスクイメージを参照するデルタディスクを作成し、これを、重複排除対象ディスクを保持するＶＭ４０８に追加する。ＶＭへのデルタディスクの追加は、例えば、ストレージ装置に格納されたＶＭの構成ファイルを更新して行う。デルタディスクのパスは、ステップ７０１で名前を付け替える前の重複排除対象ディスクのパスを指定する。
【００６１】
ステップ７１０で、ディスクイメージ変換プログラム４１１は、重複排除対象のディスクイメージを削除して処理を終了する。重複排除対象ＶＭは削除しない。
その他の手順は図７と同じ処理が実行される。
【００６２】
（２）差分情報作成の変形例
上述の実施形態において、ステップ７０４〜ステップ７０７の差分セクタ情報の作成手順では、指定セクタ数分ずつディスクイメージを読み取ってデータ内容を比較している。
【００６３】
しかし、この手順は、仮想化プログラム（仮想ソフトウェア）がマスタディスクイメージと重複排除対象スナップショットとの差分セクタ位置を記録した変更トラックファイルを作成する機能を持ち、変更トラックファイルが予め存在する場合は、以下の手順で実行してもよい。ここで、変更トラックファイルとは、スナップショットを作成した以降にデータが変更された位置を示すインデックス情報のファイルである。この場合、変更位置のみが示されているので、変更内容はインデックスで示される位置を参照することにより得られる。一方、上述のログディスクイメージは、変更されたデータ自体を有するファイルである。両者はスナップショットに対してなされた変更に関する情報であるということで共通しているが、変更内容自体を有しているか否かで異なるものである。
【００６４】
まず、ステップ７０４〜ステップ７０５では、ディスクイメージ変換プログラム４１１は、指定セクタ数分ディスクイメージを読み込んでデータを比較する代わりに、重複排除対象ディスクイメージから変更トラックファイルに記録されているセクタ位置のデータを全て読み込む。ここでは、これを変更データと呼ぶ。
【００６５】
次に、ステップ７０６では、ディスクイメージ変換プログラム４１１は、データ内容が不一致になった重複排除対象のディスクイメージのデータを書き込む代わりに、上記手順で読み込んだ変更データをデルタディスクに書き込む。
なお、ステップ７０７は省略される。また、その他の手順は図７と同じ手順が実行される。
【００６６】
（３）ＶＭの電源シャットダウンに対する変形例
上述の実施形態において、ステップ７０８では重複排除対象ディスクイメージを使用するＶＭの電源を落とし、ステップ５０５ではＶＭを起動している。
【００６７】
しかし、この処理については、重複排除対象ディスクイメージへの書き込みを一時的に遮断及び再開できる処理であれば、別の処理でもよい。例えば、ステップ７０８でＶＭの電源を落とす代わりに、ＶＭをサスペンド状態にし、ステップ５０５でＶＭを起動する代わりにサスペンド状態からの復旧を行っても良い。同様に、ステップ７０８でＶＭの電源を落とす代わりに、ＶＭをハイバネーションし、ステップ５０５でＶＭを起動する代わりにハイバネーション状態からの復旧を行っても良い。なお、サスペンド状態では、メモリを通電したままメモリの内容を保持しているので、図８の方法（ＶＭを作り替える方法）に適用される。一方、ハイバネーション状態では、メモリの内容がディスクに書き込まれ、メモリの通電がなくなるので、図８及び図９（ＶＭを付け替える方法）に適用される。
【００６８】
＜まとめ＞
本発明は、仮想マシンイメージを保存するストレージ装置の容量を削減し、空き容量を確保するといった用途に好適である。
【００６９】
本発明の実施形態では、まず、管理者が、ストレージ装置内の既存のディスクイメージにおいて、マスタとして使用するマスタディスクイメージと重複排除対象ディスクイメージの指定し、ＶＭ管理サーバ（管理計算機）がその入力を受付ける。そして、ディスクイメージ変換プログラムが、重複排除対象ディスクイメージに対応し、指定されたマスタディスクイメージを参照するデルタディスクイメージを新たに作成する。続いて、重複排除対象ディスクイメージを保持するＶＭを稼動させたまま取得したスナップショットと、マスタディスクイメージとの差分情報を生成し、それをデルタディスクイメージに書き込む。さらに、差分情報の書き込み後にＶＭを停止させ、重複排除対象ディスクイメージのスナップショット取得以降に変更されたデータ内容を、デルタディスクイメージに書き込む。そして、デルタディスクイメージを仮想マシンに関連付け、重複排除対象ディスクイメージを削除する。
【００７０】
このようにすることにより、既存のフルクローンＶＭをリンクドＶＭに変換して、ＶＭディスクイメージの重複排除を実現することができ、ストレージ装置の容量を効率よく使用することができるようになる。また、本発明では、仮想化ソフトの提供機能を用いて実現するため、仮想化ソフトがサポートするストレージ装置であれば、ストレージ装置の物理構成に依存せずに本実施形態の機能を導入することができる。また、重複排除対象ディスクイメージのスナップショットを作成し（重複排除対象ディスクイメージを書き込み禁止状態にする）、スナップショット作成後（書込み禁止状態にした後）の当該重複対象ディスクイメージに対する変更に関する情報を、ログディスクイメージや変更トラックファイルに書き込むようにしているので、計算時間のかかる重複排除処理を、ＶＭを稼動させたまま実行するため、重複排除の実行に伴うＶＭの停止時間を短縮できる。
【００７１】
差分情報を生成してデルタディスクイメージに書き込む際、マスタディスクイメージと重複排除対象スナップショットとで異なるデータを格納している差分セクタ情報を取得する。そして、取得した差分セクタ情報をデルタディスクイメージに書き込む。より具体的には、マスタディスクイメージと重複排除対象スナップショットのデータ内容を比較し、データ内容が不一致の場合に、当該不一致のデータが格納されているセクタ位置と、重複排除対象スナップショットのデータ内容と、を差分セクタ情報として取得する。
【００７２】
この差分情報取得処理の別の態様として、次のように処理しても良い。つまり、マスタディスクイメージと重複排除対象スナップショットの差分セクタ位置を記録した、予め作成された変更トラックファイルを読み込む。そして、変更トラックファイルに記録されたセクタ位置と、重複排除対象スナップショットの当該セクタ位置におけるデータ内容と、を差分セクタ情報として取得する。
【００７３】
また、重複排除処理のスナップショット取得以降に変更されたデータ内容をデルタディスクイメージに書き込むときには、指定された重複排除対象ディスクイメージに対する書き込みを一時的に遮断する。遮断には、仮想マシンの電源をシャットダウンする、或いはサスペンド状態にするといった方法がとれる。これにより、ＶＭと重複排除対象のディスクイメージの内容の整合性を担保することが可能となる。
【００７４】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００７５】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００７６】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【００７７】
また、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００７８】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【００７９】
４０１  物理サーバ
４０２  ＶＭ管理サーバ
４０３  プログラム実行サーバ
４０８  ＶＭ
４０９  仮想環境管理プログラム
４１０  仮想環境管理ＡＰＩ
４１１  ディスクイメージ変換プログラム
４１２  ディスクイメージ
【図１】
2012128684.tif 000003
【図２】
2012128684.tif 000004
【図３】
2012128684.tif 000005
【図４】
2012128684.tif 000006
【図５】
2012128684.tif 000007
【図６】
2012128684.tif 000008
【図７】
2012128684.tif 000009
【図８】
2012128684.tif 000010
【図９】
2012128684.tif 000011