(57)【要約】【課題】仮想マシンをシャットダウンせずに，仮想マシンのスナップショットファイルをマージする技術を提供する。【解決手段】仮想マシンシステム１において，ホストＯＳ３０が備えるスナップショット管理機能部３００は，仮想ディスク領域１３０に記憶された，マージ対象となる所定の連続する世代のスナップショットファイル１３２をコピーし，コピーファイルを生成する。スナップショット管理機能部３００は，それらのコピーファイルをマージして，マージファイルを生成する。この間，仮想マシン４０はシャットダウンせずに通常に動作している。ホストＯＳ３０が備えるスナップショット管理機能部３００は，所定の連続する世代のスナップショットファイル１３２を，マージファイルに置き換える。【選択図】図２
2014006845.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが，
仮想ディスクファイルに対する更新の差分情報である差分ファイルを記憶する記憶部に記憶される所定の連続する世代の差分ファイルをコピーし，
前記コピーした差分ファイルをマージし，
前記記憶部に記憶される前記所定の連続する世代の差分ファイルを，前記マージされた差分ファイルに置き換える処理を実行する
ことを特徴とする管理方法。
【請求項２】
前記コンピュータが，さらに，前記記憶部に記憶される差分ファイルの世代数を監視する処理を実行し，
前記コンピュータは，前記記憶部に記憶される差分ファイルの世代数が所定の世代数以上である場合に，前記コピーする処理，前記マージする処理および前記置き換える処理を実行する
ことを特徴とする請求項１に記載の管理方法。
【請求項３】
前記コンピュータが，さらに，所定の時間間隔で差分ファイルを自動的に生成する処理を実行する
ことを特徴とする請求項２に記載の管理方法。
【請求項４】
仮想ディスクファイルに対する更新の差分情報である差分ファイルを記憶する記憶部に記憶される所定の連続する世代の差分ファイルをコピーし，該コピーした差分ファイルをマージするマージ部と，
前記記憶部に記憶される前記所定の連続する世代の差分ファイルを，前記マージされた差分ファイルに置き換える置換部とを備える
ことを特徴とする管理装置。
【請求項５】
コンピュータに，
仮想ディスクファイルに対する更新の差分情報である差分ファイルを記憶する記憶部に記憶される所定の連続する世代の差分ファイルをコピーし，
前記コピーした差分ファイルをマージし，
前記記憶部に記憶される前記所定の連続する世代の差分ファイルを，前記マージされた差分ファイルに置き換える
処理を実行させるための管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想マシンの差分ファイルを管理する管理方法，管理装置および管理プログラムに関するものである。
【背景技術】
【０００２】
仮想マシンシステムにおいて，仮想マシンの状態を保存する機能として，スナップショットの機能がある。スナップショット機能を用いれば，ユーザは，任意のタイミングの仮想マシンの状態を保存し，以後，仮想マシンを保存された状態に戻すことができるようになる。
【０００３】
スナップショット機能によりスナップショットの取得が行われると，仮想マシンにおける仮想ディスクを実現する仮想ディスクファイルに対する更新の差分情報を記録する差分ファイルであるスナップショットファイルが，新たに生成される。このとき，仮想ディスクファイルや，前に生成されたスナップショットファイルへの書き込みが禁止されることで，その時点での仮想マシンの状態が保存される。
【０００４】
スナップショットファイルは，スナップショットの取得が行われるたびに，世代を重ねて生成される。仮想マシンシステムでは，スナップショットファイルを連続する世代同士で紐付けされて管理される。仮想マシンにおいて仮想ディスクへのアクセスが行われる場合には，最新のスナップショットファイルから順に各世代のスナップショットファイルを遡ることにより，データのアクセスが行われる。
【０００５】
なお，ホストサーバにおいて，仮想マシンの稼動中でも，整合性が保たれた状態で仮想マシンをバックアップすることを可能とする技術が知られている。また，仮想マシンを電源ＯＦＦし，デルタディスクを仮想ディスクにマージする技術が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００９−５３３７７７号公報
【特許文献２】特表２０１１−５１３８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
スナップショットの取得を繰り返すことにより，スナップショットファイルの世代数が多くなると，仮想マシンにおける仮想ディスクへのアクセス性能が劣化する。また，スナップショットファイルの増加によって，その記憶領域が急速に消費されるようになる。
【０００８】
このような問題に対処するために，仮想マシンシステムでは，スナップショットファイルのマージ機能が提供されている。このマージ機能によって，複数の連続する世代のスナップショットファイルをマージし，スナップショットファイルの数や世代数を減らすことができる。
【０００９】
しかし，既存のマージ機能では，スナップショットファイルをマージする際には，スナップショットファイルを利用して実現される仮想マシンをシャットダウンする必要があり，サーバとして運用される仮想マシンなどでは，その業務の運用に支障をきたしていた。
【００１０】
一側面では，本発明は，仮想マシンをシャットダウンせずに，仮想マシンのスナップショットファイルをマージする技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１態様では，管理方法では，コンピュータが，仮想ディスクファイルに対する更新の差分情報である差分ファイルを記憶する記憶部に記憶される，所定の連続する世代の差分ファイルをコピーし，コピーした差分ファイルをマージし，記憶部に記憶される所定の連続する世代の差分ファイルを，マージされた差分ファイルに置き換える処理を実行する。
【発明の効果】
【００１２】
１態様では，仮想マシンをシャットダウンせずに，仮想マシンのスナップショットファイルをマージすることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態による仮想マシンシステムの構成例を示す図である。
【図２】本実施の形態による仮想マシンのスナップショットの例を説明する図である。
【図３】本実施の形態によるスナップショット管理機能部の機能構成の例を示す図である。
【図４】本実施の形態による設定データの例を示す図である。
【図５】本実施の形態によるスナップショットファイルの例を示す図である。
【図６】本実施の形態のマージ部による処理の例を説明する図である。
【図７】本実施の形態のマージ部による処理の例を説明する図である。
【図８】本実施の形態の置換部による処理の例を説明する図である。
【図９】本実施の形態の置換部による処理の例を説明する図である。
【図１０】本実施の形態のマージ部による処理のフローチャートである。
【図１１】本実施の形態の取得部および置換部による処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下，本実施の形態について，図を用いて説明する。
【００１５】
図１は，本実施の形態による仮想マシンシステムの構成例を示す図である。
【００１６】
仮想マシンシステムは，例えば，１台の物理マシン上で１または複数台の仮想マシンが動作するシステムである。図１に示す仮想マシンシステム１の例では，ＣＰＵ（Central Processing Unit ）１１やメモリ１２などの，コンピュータのハードウェア１０の資源を利用して，複数台の仮想マシン４０が動作する。
【００１７】
仮想マシンシステム１において，ハイパーバイザ２０は，コンピュータのハードウェア１０を利用した仮想化環境を実現するソフトウェアである。仮想マシン４０は，ハイパーバイザ２０上に構築可能である。
【００１８】
ホストＯＳ（Operating System）３０は，仮想マシン４０を管理するＯＳである。仮想マシンシステム１の管理者であるユーザは，ホストＯＳ３０から，仮想マシン４０の新規作成，構成変更，削除等を行うことが可能である。
【００１９】
ホストＯＳ３０は，スナップショット管理機能部３００を備える。スナップショット管理機能部３００は，仮想マシンシステム１で動作する仮想マシン４０のスナップショットの管理を行う。
【００２０】
図１に示す仮想マシンシステム１を実現するコンピュータは，例えば，ＣＰＵ１１，主記憶となるメモリ１２，記憶装置１３，通信装置１４，媒体読取・書込装置１５，入力装置１６，出力装置１７等のハードウェア１０を備える。記憶装置１３は，例えばＨＤＤ（Hard Disk Drive ）等の外部記憶装置や，補助記憶装置などである。媒体読取・書込装置１５は，例えばＣＤ−Ｒ（Compact Disc Recordable ）ドライブやＤＶＤ−Ｒ（Digital Versatile Disc Recordable ）ドライブなどである。入力装置１６は，例えばキーボード・マウスなどである。出力装置１７は，例えばディスプレイ等の表示装置などである。
【００２１】
図１に示すハイパーバイザ２０，各仮想マシン４０，ホストＯＳ３０およびホストＯＳ３０が備えるスナップショット管理機能部３００は，コンピュータが備えるＣＰＵ１１，メモリ１２等のハードウェア１０と，ソフトウェアプログラムとによって実現することが可能である。コンピュータが実行可能なプログラムは，例えば，記憶装置１３に記憶され，その実行時にメモリ１２に読み出され，ＣＰＵ１１により実行される。
【００２２】
コンピュータは，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。また，コンピュータは，サーバコンピュータからプログラムが転送されるごとに，逐次，受け取ったプログラムに従った処理を実行することもできる。さらに，このプログラムは，コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００２３】
図２は，本実施の形態による仮想マシンのスナップショットの例を説明する図である。
【００２４】
本実施の形態では，仮想マシン４０は，ハードディスク等の記憶装置１３に記憶された仮想ディスクファイル１３１を含む複数のファイルによって実現されるものとする。仮想ディスクファイル１３１は，仮想的なハードディスクイメージのファイルである。図２に示す仮想マシンシステム１において，仮想ディスクファイル１３１が記憶される記憶装置１３の仮想ディスク領域１３０は，仮想マシン４０における仮想ディスク４１を実現する領域である。仮想マシン４０上での仮想ディスク４１のデータ更新は，物理マシンの記憶装置１３上での仮想ディスクファイル１３１に対するデータ更新となる。
【００２５】
図２に示す仮想マシンシステム１では，仮想マシン４０のスナップショット機能が用意されている。仮想マシン４０のスナップショット機能は，起動中の仮想マシン４０について，ある時点での仮想ＣＰＵ，仮想メモリのデータを仮想ディスク４１に退避することにより，仮想マシン４０の定点状態を仮想ディスク４１に保存する機能である。例えば，米マイクロソフト社が提供する仮想化プラットフォームであるＨｙｐｅｒ−Ｖ（商標）にも，このスナップショット機能が装備されている。
【００２６】
スナップショット機能は，仮想マシン４０をシャットダウンすることなく，その仮想マシン４０の状態を保存する機能である。例えば，ユーザは，仮想マシン４０の状態を保存したい任意のタイミングで，ユーザインタフェースによりスナップショットの取得を指示する操作を行う。
【００２７】
例えば，仮想ディスク領域１３０に仮想ディスクファイル１３１しかない状態で，スナップショットの取得が行われたものとする。このとき，仮想マシン４０の実行に利用している仮想ディスクファイル１３１が，読み取り専用に切り替えられ，仮想ディスク領域１３０に，読み書き可能なスナップショットファイル１３２ａが生成される。以降，仮想マシン４０における仮想ディスク４１の更新は，仮想ディスクファイル１３１には直接には記録されず，スナップショットファイル１３２ａに差分情報として記録される。すなわち，仮想ディスクファイル１３１は，スナップショットの取得が行われた時点での仮想マシン４０の状態が保存されたファイルとなる。
【００２８】
スナップショットファイル１３２ａは，仮想ディスクファイル１３１に対する更新の差分情報が記録される差分ファイルとなる。仮想マシン４０において仮想ディスク４１の更新が行われると，本来仮想ディスクファイル１３１が更新されるはずの内容が，読み取り専用となった仮想ディスクファイル１３１との差分情報としてスナップショットファイル１３２ａに記録される。仮想マシン４０において，仮想ディスク４１からのデータの読み取りが行われると，スナップショットファイル１３２ａ，仮想ディスクファイル１３１の順にデータが参照され，必要なデータの読み取りが行われる。
【００２９】
仮想ディスク領域１３０に仮想ディスクファイル１３１とスナップショットファイル１３２ａが存在する状態で，さらに，スナップショットの取得が行われたものとする。このとき，それまで仮想ディスク４１への更新が記録されていたスナップショットファイル１３２ａが読み取り専用に切り替えられ，仮想ディスク領域１３０に，読み書き可能なスナップショットファイル１３２ｂが生成される。以降，仮想マシン４０における仮想ディスク４１の更新は，スナップショットファイル１３２ｂに差分情報として記録される。すなわち，スナップショットの取得が行われた時点での仮想マシン４０の状態が，仮想ディスクファイル１３１とスナップショットファイル１３２ａとによって保存された状態となる。
【００３０】
以降同様に，スナップショットの取得が行われるたびに，それまで仮想ディスク４１への更新が記録されていたスナップショットファイル１３２が読み取り専用に切り替えられ，新たに仮想ディスク４１への更新を記録するスナップショットファイル１３２が生成される。仮想マシン４０が起動している状態では，最新のスナップショットファイル１３２のみが読み書き可能でオープンされ，その他のスナップショットファイル１３２と仮想ディスクファイル１３１が読み取り専用でオープンされた状態となる。また，ユーザは，仮想ディスク領域１３０の仮想ディスクファイル１３１とスナップショットファイル１３２とを用いて，スナップショット機能で保存された任意の時点の状態に，仮想マシン４０の状態を戻すことが可能となる。
【００３１】
図２に示すように，スナップショットファイル１３２が記憶される仮想ディスク領域１３０では，スナップショットファイル１３２が世代管理されている。すなわち，第１世代のスナップショットファイル１３２ａは，例えばヘッダの情報などを用いて，仮想ディスクファイル１３１に紐付けられて管理される。また，第２世代のスナップショットファイル１３２ｂは，第１世代のスナップショットファイル１３２ａに紐付けられて管理される。以降同様に，新たに生成されるスナップショットファイル１３２は，その直前のスナップショットファイル１３２に紐付けられて管理される。なお，以下では，自スナップショットファイル１３２の１つ前の世代にあたるスナップショットファイル１３２または仮想ディスクファイル１３１を，親ファイルとも呼ぶ。
【００３２】
仮想マシン４０において仮想ディスク４１からのデータの読み取りが行われると，最新のスナップショットファイル１３２から順に紐付け関係を辿ってデータが参照され，必要なデータの読み取りが行われる。そのため，スナップショットの取得を行ってスナップショットファイル１３２の世代を重ねれば重ねるほど，仮想マシン４０における仮想ディスク４１へのアクセス性能が劣化するという問題がある。また，多数のスナップショット取得を行って，多数のスナップショットファイル１３２の生成が行われると，仮想ディスク領域１３０を急速に消費してしまう問題がある。
【００３３】
このような問題の発生を防ぐために，スナップショット機能を備える仮想マシンシステム１では，スナップショットファイル１３２のマージ機能が提供されている。例えば上記のＨｙｐｅｒ−Ｖでも，スナップショットファイル１３２のマージ機能が提供されている。このマージ機能を用いれば，連続する複数世代のスナップショットファイル１３２や仮想ディスクファイル１３１をマージして，１つのファイルに統合することができる。ただし，既存のマージ機能によってファイルをマージする間は，それらのファイルを利用できなくなるので，それらのファイルを利用して動作する仮想マシン４０をシャットダウンする必要があった。
【００３４】
ここで，本実施の形態の例では，スナップショット機能を仮想マシン４０のシステム障害の原因調査に利用することを目的として，所定の時間間隔でスナップショットの取得を自動で行うものとする。
【００３５】
仮想マシン４０でシステム障害が起こった場合，原因調査のためには障害がおこる直前のメモリやディスクの状態，ユーザの操作ログ等の情報を得る必要がある。通常，障害調査では障害発生時にダンプしたメモリの情報を解析することで調査を行うが，専門的知識が必要である上，取得できる情報も限られるため，原因の特定に時間を要する。
【００３６】
スナップショット機能を備える仮想マシンシステム１上の仮想マシン４０でシステム障害が発生した場合，その直前にスナップショットの取得がなされていれば，その状態を瞬時に再現できる。そのため，スナップショットを定期的に取得し，仮想マシン４０を保存することは，障害原因の特定において非常に有用である。
【００３７】
しかし，所定時間間隔で自動的にスナップショットの取得を行うと，多世代のスナップショットファイル１３２が大量に生成されることになり，上述のように，仮想ディスク４１に対するアクセス性能が劣化する問題や，仮想ディスク領域１３０を急速に消費する問題などが発生する。上述のマージ機能を用いれば，スナップショットファイル１３２の数を減らすことはできる。しかし，上述のように，ファイルのマージを行うたびに仮想マシン４０をシャットダウンする必要があり，例えばサーバとして運用される仮想マシン４０に対して，頻繁にマージ機能を用いることはできない。
【００３８】
以下で詳細を説明する本実施の形態によるスナップショット管理機能部３００は，仮想マシン４０をシャットダウンせずに，スナップショットファイル１３２のマージを行う。本実施の形態によるスナップショット管理機能部３００の技術によって，仮想マシン４０のスナップショットについての上記問題が解消される。
【００３９】
図３は，本実施の形態によるスナップショット管理機能部の機能構成の例を示す図である。
【００４０】
スナップショット管理機能部３００は，取得部３１０，マージ部３２０，置換部３３０，設定情報記憶部３４０を備える。
【００４１】
取得部３１０は，仮想マシン４０のスナップショットの取得を行う。本実施の形態では，取得部３１０は，所定の時間間隔で自動的にスナップショットの取得を行うものとする。すなわち，本実施の形態では，取得部３１０は，所定の時間間隔で仮想ディスク領域１３０にスナップショットファイル１３２を自動生成する。
【００４２】
マージ部３２０は，複数のスナップショットファイル１３２をマージしたマージファイルを生成する。マージファイルは，複数世代にわたるスナップショットファイル１３２に記録された更新の差分情報を統合したスナップショットファイル１３２となる。より具体的には，マージ部３２０は，仮想ディスク領域１３０に記憶される，所定の連続する世代のスナップショットファイル１３２をコピーする。マージ部３２０は，スナップショットファイル１３２のコピーファイルをマージして，マージファイルを生成する。マージ部３２０は，これらの処理を，取得部３１０によるスナップショットの取得の処理とは別のプロセスで実行する。なお，マージ部３２０は，スナップショットファイル１３２を直接にマージするのではなく，コピーファイルのマージを行うので，マージのために仮想マシン４０の運用を停止する必要はない。
【００４３】
なお，本実施の形態では，マージ部３２０は，仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代数を監視する。マージ部３２０は，仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代数が，所定の世代数以上となったことが確認されたときに，上述のマージファイルを生成する処理を実行する。
【００４４】
置換部３３０は，マージ部３２０によってマージファイルが生成された際に，仮想ディスク領域１３０に記憶される所定の連続する世代のスナップショットファイル１３２を，生成されたマージファイルに置き換える処理を行う。
【００４５】
なお，仮想ディスク領域１３０において，スナップショットファイル１３２をマージファイルに置き換える処理を行う瞬間だけ，仮想マシン４０による仮想ディスク４１へのアクセスを停止する。スナップショットファイル１３２をマージファイルに置き換える処理は，瞬間的な処理となるので，仮想マシン４０の運用に及ぼす影響は微少である。
【００４６】
設定情報記憶部３４０は，各種設定情報を記憶する記憶部である。設定情報記憶部３４０に記憶される設定情報としては，例えば，スナップショットの取得を行う時間間隔や，マージを開始するスナップショットファイル１３２の世代数，マージの対象となるスナップショットファイル１３２の世代などの指定情報がある。スナップショット管理機能部３００は，例えば，設定情報記憶部３４０に記憶された各種設定情報の指定に基づいて，処理を実行する。
【００４７】
図４は，本実施の形態による設定データの例を示す図である。
【００４８】
図４に示す設定データ３４５は，設定情報記憶部３４０に記憶される設定情報の一例である。図４に示す設定データ３４５において，スナップショット取得間隔は，取得部３１０によって，スナップショットの取得を自動で行う時間間隔の指定情報である。マージ開始世代数は，マージ部３２０が，マージを開始すると判定する，仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代数の指定情報である。マージ対象世代は，マージ部３２０がマージの対象とする，また置換部３３０が置き換えの対象とする，仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代の指定情報である。これらの情報については，任意の値の設定が可能である。
【００４９】
以下，本実施の形態のスナップショット管理機能部３００による処理について，より具体的な例を用いて説明する。
【００５０】
スナップショット管理機能部３００において，取得部３１０は，所定の時間間隔，例えば６０秒間隔で，スナップショットの取得を行う。取得部３１０による処理は，例えば，ホストＯＳ３０が提供するスナップショット取得関数により行われる。なお，スナップショットの取得の時間間隔を，データ量に応じて増減することで，データ量に応じたマージ時間の増減に対応できる。仮想ディスク領域１３０には，スナップショットの取得が行われるたびに，新たなスナップショットファイル１３２が生成される。
【００５１】
図５は，本実施の形態によるスナップショットファイルの例を示す図である。
【００５２】
図５に示すスナップショットファイル１３２ａは，図２に示す例における第１世代のスナップショットファイル１３２ａの例である。図５に示すスナップショットファイル１３２を例に，本実施の形態によるスナップショットファイル１３２の構成の一例を説明する。図５に示すように，本実施の形態によるスナップショットファイル１３２は，ヘッダ，データ領域，フッタを有する。
【００５３】
本実施の形態によるスナップショットファイル１３２のヘッダには，当該スナップショットファイル１３２の親ファイル，すなわち当該スナップショットファイル１３２の１つ前の世代の仮想ディスクファイル１３１またはスナップショットファイル１３２に関する情報が記録される。図５に示すスナップショットファイル１３２ａは，第１世代のスナップショットファイル１３２であるので，ヘッダには，仮想ディスクファイル１３１に関する情報が記録される。第２世代以降のスナップショットファイル１３２のヘッダには，１つ前の世代のスナップショットファイル１３２に関する情報が記録される。
【００５４】
図５に示すように，本実施の形態のスナップショットファイル１３２のヘッダには，親ファイルＩＤ，親タイムスタンプ，親ファイル名，親格納位置の情報が記録される。親ファイルＩＤは，親ファイルをユニークに識別する識別情報である。親タイムスタンプは，親ファイルが生成された時刻または最後に更新された時刻を示す。親ファイル名は，親ファイルのファイル名である。親格納位置は，親ファイルが格納される場所を示す。
【００５５】
データ領域には，仮想ディスクファイル１３１に対する更新の差分情報が記録される。例えば，最新のスナップショットファイル１３２であれば，データ領域には，直前のスナップショットの取得時から現在までに，仮想ディスク４１に対して行われた更新の差分情報が記録される。また，例えば，中間世代のスナップショットファイル１３２であれば，データ領域には，そのスナップショットファイルが生成された時点から，次のスナップショットファイルが生成された時点までに，仮想ディスク４１に対して行われた更新の差分情報が記録される。
【００５６】
本実施の形態によるスナップショットファイル１３２のフッタには，当該スナップショットファイル１３２自身に関する情報が記録される。図５に示すように，本実施の形態のスナップショットファイル１３２のフッタには，自ファイルＩＤ，自タイムスタンプの情報が記録される。自ファイルＩＤは，自身のスナップショットファイル１３２をユニークに識別する識別情報である。自タイムスタンプは，自身のスナップショットファイル１３２が生成された時刻または最後に更新された時刻を示す。
【００５７】
図６，図７は，本実施の形態のマージ部による処理の例を説明する図である。
【００５８】
スナップショット管理機能部３００において，マージ部３２０は，仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代数が，所定の世代数，例えば２０世代以上となったことを確認し，マージ処理を開始する。
【００５９】
図６に示すように，仮想ディスク領域１３０において，スナップショットファイル１３２の世代数が，スナップショットファイル１３２ａからスナップショットファイル１３２ｔまでで，２０世代になったものとする。このとき，マージ部３２０は，仮想ディスク領域１３０のスナップショットファイル１３２において，所定世代，例えば１〜１０世代のスナップショットファイル１３２ａ〜ｊをコピーし，コピーファイル１３３ａ〜ｊを生成する。
【００６０】
なお，図６において，各スナップショットファイル１３２ａ〜ｔ，各コピーファイル１３３ａ〜ｊを表すブロックの中の文字列は，各ファイルのファイル名を示す。図６に示す例では，各コピーファイル１３３ａ〜ｊのファイル名が，それぞれ元の各スナップショットファイル１３２ａ〜ｊのファイル名の文字列の先頭に“コピー”の文字列を付けたものとなっている。
【００６１】
マージ部３２０は，生成したコピーファイル１３３ａ〜ｊをマージし，マージファイル１３４を生成する。コピーファイル１３３も実体はスナップショットファイル１３２であるので，コピーファイル１３３ａ〜ｊのマージには，例えば既存のマージ機能を用いることができる。例えば上記のＨｙｐｅｒ−Ｖでも，スナップショットファイルのマージ機能は提供されている。
【００６２】
コピーファイル１３３のマージでは，新しいスナップショットファイル１３２のコピーファイル１３３から順に古い方へ遡る形で，マージが行われる。ここでは，図７（Ａ）に示すように，最も新しいスナップショットファイル１３２ｊのコピーファイル１３３ｊと，次に新しいスナップショットファイル１３２ｉのコピーファイル１３３ｉとが，最初のマージ対象となる。
【００６３】
図７（Ａ）に示すように，コピーファイル１３３ｉとコピーファイル１３３ｊとのマージで生成される中間マージファイルにおいて，ヘッダには，古い方のスナップショットファイル１３２ｉのコピーファイル１３３ｉのヘッダの情報が記録される。データ領域のデータは，各コピーファイル１３３のデータ領域のデータを所定の手順でマージしたものとなる。例えば，図７（Ａ）に示す中間マージファイルのデータ領域のデータは，スナップショットファイル１３２ｉの生成時から，スナップショットファイル１３２ｊの次のスナップショットファイル１３２ｋの生成時までの仮想ディスク４１に対する更新の差分情報となる。図７（Ａ）に示す中間マージファイルのファイル名としては，新しい方のスナップショットファイル１３２ｊのコピーファイル１３３ｊのファイル名が与えられる。なお，中間マージファイルのフッタの自タイムスタンプには，ホストＯＳ３０によって，自動で該中間マージファイルが生成された時刻の情報が記録される。
【００６４】
次の処理では，図７（Ａ）に示す中間マージファイルと，次に古いスナップショットファイル１３２ｈのコピーファイル１３３ｈに対して，図７（Ａ）で説明した処理と同様の処理が行われる。このような手順で処理が進められ，最後のコピーファイル１３３ａに対するマージの処理が完了した時点で，図７（Ｂ）に示す最終的なマージファイル１３４が生成される。
【００６５】
図７（Ｂ）に示すマージファイル１３４において，ヘッダは，マージ対象の中で最も古いスナップショットファイル１３２ａのヘッダと同じとなる。すなわち，図７（Ｂ）に示すマージファイル１３４のヘッダの情報は，仮想ディスクファイル１３１の情報となる。図７（Ｂ）に示すマージファイル１３４のファイル名は，マージ対象の中で最も新しいスナップショットファイル１３２ｊのコピーファイル１３３ｊのファイル名となる。また，図７（Ｂ）に示すマージファイル１３４のフッタにおいて，自タイムスタンプは，マージファイル１３４が生成された時刻の情報となる。
【００６６】
図８，図９は，本実施の形態の置換部による処理の例を説明する図である。
【００６７】
例えば，置換部３３０による処理は，ホストＯＳ３０が提供するスナップショット取得関数に対する割り込みで，スナップショット取得関数の延長で実行することができる。例えば，スナップショット取得関数のエントリポイントを書き換えて，本実施の形態による置換部３３０を実現するプログラムの処理をコールするようにする。
【００６８】
置換部３３０は，図８（Ａ）に示すように，仮想ディスク領域１３０において，マージ部３２０で生成されたマージファイル１３４と，そのマージファイル１３４の元となった１〜１０世代のスナップショットファイル１３２ａ〜ｊとを置き換える。より具体的には，置換部３３０は，仮想ディスク領域１３０において，１〜１０世代のスナップショットファイル１３２ａ〜ｊを削除する。置換部３３０は，マージファイル１３４のファイル名を，置き換え元の最新のスナップショットファイル１３２ｊのファイル名に書き換える。図８（Ａ）に示す例では，マージファイル１３４のファイル名から“コピー”の文字列を取り除く。これにより，仮想ディスク領域１３０の状況は，図８（Ｂ）に示す通りとなる。
【００６９】
ただし，置き換え元のスナップショットファイルａ〜ｊと，マージファイル１３４とを置き換えただけでは，マージファイル１３４の自タイムスタンプと，スナップショットファイル１３２ｋ〜ｔのヘッダの親タイムスタンプとの整合がとれなくなる。置換部３３０は，マージ対象外であったスナップショットファイル１３２ｋ〜ｔのヘッダの情報を修正する。
【００７０】
例えば，置換部３３０は，図９に示すように，まず，マージファイル１３４のフッタにおける自タイムスタンプの値で，スナップショットファイル１３２ｋのヘッダにおける親タイムスタンプの値を修正する。この時点でスナップショットファイル１３２ｋが更新されるため，ホストＯＳ３０によって，スナップショットファイル１３２ｋのフッタにおける自タイムスタンプの値が更新される。置換部３３０は，図９に示すように，更新されたスナップショットファイル１３２ｋのフッタにおける自タイムスタンプの値で，スナップショットファイル１３２ｌのヘッダにおける親タイムスタンプの値を修正する。このような処理を，置換部３３０は，最後の世代のスナップショットファイル１３２ｔまで繰り返す。
【００７１】
図１０は，本実施の形態のマージ部による処理のフローチャートである。
【００７２】
マージ部３２０は，仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代数を監視する（ステップＳ１０）。
【００７３】
仮想ディスク領域１３０に記憶されるスナップショットファイル１３２の世代数が所定の世代数以上となった場合（ステップＳ１１のＹＥＳ），マージ部３２０は，仮想ディスク領域１３０に記憶される所定の連続する世代のスナップショットファイル１３２をコピーする（ステップＳ１２）。マージ部３２０は，得られたコピーファイル１３３をマージする（ステップＳ１３）。マージファイル１３４が得られる。マージ部３２０は，取得部３１０によるスナップショットの取得処理への割り込みを実行し（ステップＳ１４），ステップＳ１０の処理に戻って，仮想ディスク領域１３０の監視を続ける。
【００７４】
図１１は，本実施の形態の取得部および置換部による処理のフローチャートである。
【００７５】
取得部３１０は，時間の経過を監視し，所定時間の経過後に（ステップＳ２０のＹＥＳ），マージ部３２０からの割り込みがあるかを判定する（ステップＳ２１）。
【００７６】
割り込みがなければ（ステップＳ２１のＮＯ），取得部３１０は，スナップショットを取得し（ステップＳ２２），ステップＳ２０の処理に戻って，所定時間が経過するのを待つ。
【００７７】
割り込みがあれば（ステップＳ２１のＹＥＳ），置換部３３０は，仮想ディスク領域１３０に記憶される所定の連続する世代のスナップショットファイル１３２を削除する（ステップＳ２３）。置換部３３０は，マージファイル１３４のファイル名を，削除した最新のスナップショットファイル１３２のファイル名に書き換える（ステップＳ２４）。置換部３３０は，所定の連続する世代より後の世代のスナップショットファイル１３２のヘッダを書き換え（ステップＳ２５），割り込みの処理を終了する（ステップＳ２６）。取得部３１０は，スナップショットを取得し（ステップＳ２２），ステップＳ２０の処理に戻って，所定時間が経過するのを待つ。
【００７８】
以上説明したように，本実施の形態によるスナップショット管理機能部３００によって，仮想マシン４０をシャットダウンせずに，スナップショットファイル１３２のマージを実行することができる。スナップショットファイル１３２へのアクセスを停止する時間も，ファイルの置き換えを行う一瞬だけであるので，仮想マシン４０による業務への影響はほとんどない。
【００７９】
また，本実施の形態によるスナップショット管理機能部３００では，スナップショットファイル１３２の世代数が多くなったときに自動でマージが行われるので，スナップショットファイルの世代が多くなることによる弊害を抑止することができる。
【００８０】
また，本実施の形態によるスナップショット管理機能部３００によって，スナップショットの取得を一定時間間隔で実行できるようになるので，スナップショット機能を，障害時の原因調査に利用できるようになる。例えば，障害が発生したときに，原因調査のために障害発生時の直前の状態にロールバックし，メモリやアプリケーションの状態を完全に再現することができ，原因調査を迅速に行うことができる。
【００８１】
以上，本実施の形態について説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。
【００８２】
例えば，本実施の形態では，スナップショットの取得を自動で行う例について説明したが，本実施の形態の技術は，スナップショットの取得を自動化しない場合にも適用可能である。例えば，本実施の形態の技術を，ユーザがスナップショットの取得を手動で指示することで蓄積されたスナップショットファイル１３２のマージに適用することも可能である。
【００８３】
また，例えば，本実施の形態では，マージ処理開始の判断を，仮想ディスク領域１３０の常時監視で行っているが，スナップショットの取得が行われたタイミングで仮想ディスク領域１３０をチェックし，マージ処理開始の判断を行うようにしてもよい。
【００８４】
また，例えば，本実施の形態では，スナップショットファイル１３２の世代数が所定の世代数となったタイミングでマージ処理を開始しているが，ユーザがユーザインタフェースにより開始を指示したタイミングで，マージ処理を開始するようにしてもよい。
【００８５】
また，例えば，本実施の形態では，あらかじめ設定された連続する世代のスナップショットファイル１３２をマージの対象としているが，マージ処理の開始時にユーザがユーザインタフェースにより指示した連続する世代のスナップショットファイル１３２をマージの対象とするようにしてもよい。
【符号の説明】
【００８６】
１  仮想マシンシステム
１０  ハードウェア
１１  ＣＰＵ
１２  メモリ
１３  記憶装置
１３０  仮想ディスク領域
１３１  仮想ディスクファイル
１３２  スナップショットファイル
１３３  コピーファイル
１３４  マージファイル
２０  ハイパーバイザ
３０  ホストＯＳ
３００  スナップショット管理機能部
３１０  取得部
３２０  マージ部
３３０  置換部
３４０  設定情報記憶部
４０  仮想マシン
４１  仮想ディスク
【図１】
2014006845.tif 000003
【図２】
2014006845.tif 000004
【図３】
2014006845.tif 000005
【図４】
2014006845.tif 000006
【図５】
2014006845.tif 000007
【図６】
2014006845.tif 000008
【図７】
2014006845.tif 000009
【図８】
2014006845.tif 000010
【図９】
2014006845.tif 000011
【図１０】
2014006845.tif 000012
【図１１】
2014006845.tif 000013