(57)【特許請求の範囲】
【請求項１】
情報を格納する格納部と、
前記情報の第１のスナップショットを作成するとともに、前記第１のスナップショットに関連づけられた前記情報の格納位置を示す第１のポインタ情報を前記格納部に格納する第１のスナップショット作成部と、
前記情報に対する書込み処理が行われている途中で、前記第１のスナップショットの作成を行った場合に、前記書込みの終了を監視する監視部と、
前記監視部により前記書込みの終了が検出された場合、前記情報の第２のスナップショットを作成するとともに、前記第２のスナップショットに関連づけられた前記情報の格納位置を示す第２のポインタ情報を前記格納部に格納する第２のスナップショット作成部と、
前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がない場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換える置換部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記置換部は、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がある場合、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がなくなるまで、所定回数以内で、前記情報の第２のスナップショットの作成及び前記第２のポインタ情報を前記格納部に格納することを繰り返し、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がない場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、さらに、
作成した前記第２のスナップショットと、前記格納部に格納された前記情報とに差異があるかを判定する判定部
を備え、
前記置換部は、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がないと判定された場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換え、該第２のスナップショットを削除する
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
コンピュータに、
情報を格納する格納部に格納された前記情報の第１のスナップショットを作成するとともに、前記第１のスナップショットに関連づけられた前記情報の格納位置を示す第１のポインタ情報を前記格納部に格納し、
前記情報に対する書込み処理が行われている途中で、前記第１のスナップショットの作成を行った場合に、前記書込みの終了を監視し、
前記監視により前記書込みの終了が検出された場合、前記情報の第２のスナップショットを作成するとともに、前記第２のスナップショットに関連づけられた前記情報の格納位置を示す第２のポインタ情報を前記格納部に格納し、
前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がない場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換える
処理を実行させることを特徴とするスナップショット作成プログラム。
【請求項５】
前記置き換える処理では、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がある場合、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がなくなるまで、所定回数以内で、前記情報の第２のスナップショットの作成及び前記第２のポインタ情報を前記格納部に格納することを繰り返し、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がない場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換える
ことを特徴とする請求項４に記載のスナップショット作成プログラム。
【請求項６】
前記コンピュータに、さらに、
作成した前記第２のスナップショットと、前記格納部に格納された前記情報とに差異があるかを判定し、
前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がないと判定された場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換え、該第２のスナップショットを削除する
処理を実行させることを特徴とする請求項４または５に記載のスナップショット作成プログラム。
【請求項７】
コンピュータが、
情報を格納する格納部に格納された前記情報の第１のスナップショットを作成するとともに、前記第１のスナップショットに関連づけられた前記情報の格納位置を示す第１のポインタ情報を前記格納部に格納し、
前記情報に対する書込み処理が行われている途中で、前記第１のスナップショットの作成を行った場合に、前記書込みの終了を監視し、
前記監視により前記書込みの終了が検出された場合、前記情報の第２のスナップショットを作成するとともに、前記第２のスナップショットに関連づけられた前記情報の格納位置を示す第２のポインタ情報を前記格納部に格納し、
前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がない場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換える
処理を実行することを特徴とするスナップショット作成方法。
【請求項８】
前記置き換える処理では、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がある場合、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がなくなるまで、所定回数以内で、前記情報の第２のスナップショットの作成及び前記第２のポインタ情報を前記格納部に格納することを繰り返し、前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がない場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換える
ことを特徴とする請求項７に記載のスナップショット作成方法。
【請求項９】
前記コンピュータは、さらに、
作成した前記第２のスナップショットと、前記格納部に格納された前記情報とに差異があるかを判定し、
前記作成された第２のスナップショットと、前記格納部に格納された前記情報とに差異がないと判定された場合、前記格納部に格納された前記第１のポインタ情報を前記第２のポインタ情報に置き換え、該第２のスナップショットを削除する
処理を実行することを特徴とする請求項７または８に記載のスナップショット作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、スナップショット技術に関する。
【背景技術】
【０００２】
定期的に記憶装置のバックアップを取る技術として、ある時点のデータイメージのコピーを瞬時に作成するスナップショットがある。スナップショット技術には、ファイルシステムについてのスナップショット技術（ファイルシステムスナップショット）、アプリケーションソフトウェアプログラムについてのスナップショット技術（例えば、データベーススナップショット）等がある。
【０００３】
ファイルシステムスナップショットは、ファイルシステムのPPI（persistent_point-in-time）を記録する技術である。ファイルシステムスナップショットの一例として、Windows（登録商標）に実装されるボリュームシャドウコピーサービスがある。Windowsは、ＯＳ（Operating System）の一つである。なお、以下では、アプリケーションソフトウェアプログラムを「アプリケーション」と称する。
【０００４】
ファイルシステムスナップショットを実行すると、ファイルシステム上のファイルおよびディレクトリを瞬間的に記録（保存）することができる。ファイルシステムとは、記憶装置に記録されているデータを管理するための仕組みである。スナップショットを用いた技術として、次のものがある。
【０００５】
第１の技術として、単一スナップショットを利用して、ある時点でのクライアントデータを単一の時点において保護する技術がある。第２の技術として、１つまたは複数のアプリケーションライタを（例えば、ボリュームシャドウコピーサービスを介して）使用して、スナップショットを、作成する技術がある。そのスナップショットは、１つまたは複数の物理マシンボリュームとアプリケーション（および／またはファイルシステム）との一貫性を有する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−５４５１９８号公報
【特許文献２】特開２００９−５３６７６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
スナップショット作成時にファイルが書込み中である場合、そのスナップショットにより作成されたバックアップデータは、壊れている可能性がある。
【０００８】
そこで、本実施形態の１つの側面では、スナップショットで取得したデータの保全性を向上させる技術を提供する。
【課題を解決するための手段】
【０００９】
本実施形態の１つの側面にかかる情報処理装置は、格納部、第１のスナップショット作成部、監視部、第２のスナップショット作成部、置換部を含む。格納部は、情報を格納する。第１のスナップショット作成部は、情報の第１のスナップショットを作成するとともに、第１のスナップショットに関連づけられた情報の格納位置を示す第１のポインタ情報を格納部に格納する。監視部は、情報に対する書込み処理が行われている途中で、第１のスナップショットの作成を行った場合に、書込みの終了を監視する。第２のスナップショット作成部は、監視部により書込みの終了が検出された場合、情報の第２のスナップショットを作成するとともに、第２のスナップショットに関連づけられた情報の格納位置を示す第２のポインタ情報を前記格納部に格納する。置換部は、作成された第２のスナップショットと、格納部に格納された情報とに差異がない場合、格納部に格納された第１のポインタ情報を第２のポインタ情報に置き換える。
【発明の効果】
【００１０】
本実施形態の１つの側面によれば、スナップショットで取得したデータの保全性を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】スナップショットの実行フローの一例を示す。
【図２】ＡＰＩを用いたスナップショットの実行フローの一例を示す。
【図３】本実施形態における情報処理装置の一例を示す。
【図４】第１の実施形態における情報処理装置の一例を示す。
【図５】第１の実施形態におけるスナップショットの作成を説明するための図（その１）である。
【図６】第１の実施形態におけるスナップショットの作成を説明するための図（その２）である。
【図７】第１の実施形態におけるスナップショットの作成を説明するための図（その３）である。
【図８Ａ】第１の実施形態におけるスナップショット実行フロー（その１）の一例を示す。
【図８Ｂ】第１の実施形態におけるスナップショット実行フロー（その２）の一例を示す。
【図９】第２の実施形態における情報処理装置の一例を示す。
【図１０Ａ】第２の実施形態におけるスナップショット実行フロー（その１）の一例を示す。
【図１０Ｂ】第２の実施形態におけるスナップショット実行フロー（その２）の一例を示す。
【図１０Ｃ】第２の実施形態におけるスナップショット実行フロー（その３）の一例を示す。
【発明を実施するための形態】
【００１２】
図１は、スナップショットの実行フローの一例を示す。情報処理装置において、ファイルシステムスナップショットの実行が指示されると（Ｓ１）、情報処理装置の制御部は、スナップショットの作成を行う（Ｓ２、Ｓ３）。
【００１３】
しかしながら、ファイルに対する書込み処理とスナップショットの取得のタイミングが一致した場合、ファイルシステムによっては書き込み途中の状態で スナップショットが記録（保存）されることがある。このようなファイルへの書き込み途中の状態を、以下では、クラッシュ・インコンシステント（crash-inconsistent）状態という。なお、このようなクラッシュ・インコンシステント状態は、例えば、UNIX（登録商標）系システムのファイルシステムにおいては、ファイルシステムの仕様で回避される。
【００１４】
例えば、Windows（登録商標）ファイルシステムでは、ボリュームシャドウコピーサービス（ＶＳＳ）を用いて、バックアップ運用を行っている情報処理システムが多数存在する。ＶＳＳは、いったんスナップショット（シャドウ・コピー）を作成して、そのスナップショットをバックアップする技術である。しかし、そのような情報処理システムでは、クラッシュ・インコンシステントが発生する可能性がある。
【００１５】
ところが、ＶＳＳでクラッシュ・インコンシステントが発生することは仕様動作であり、ＶＳＳおよびこれを使用するバックアップソフトウェアは クラッシュ・インコンシステントを検出することはできない。
【００１６】
したがって、この様なシステムではクラッシュ・インコンシステント状態のバックアップファイルが内在している可能性がある。そのため、バックアップデータをリストアした際に初めてファイルが壊れていることに気づく。システム単位のリストアは滅多なことでは実施されないため、問題を内在したままバックアップを運用するシステムが多いと考えられる。この様な事態がシステムクラッシュ後のリストアや、ディザスタリカバリシーンで検出される事は、システムの大きなリスクとなる。
【００１７】
そこで、例えば、Windows（登録商標）のファイルシステムでは、書込みを行うアプリケーションがＡＰＩ（Application Program Interface）をコールして書き込み処理の実行を待ち合わせることで回避することが考えられる。
【００１８】
図２は、ＡＰＩを用いたスナップショットの実行フローの一例を示す。情報処理装置において、ファイルシステムスナップショットの実行が指示される（Ｓ１１）。すると、情報処理装置の制御部は、ＡＰＩをコールし、アプリケーションに対して、入力（input）処理／出力（output）処理の待ち合わせ（Ｉ／Ｏ待ち合わせ）を指示する（Ｓ１２）。制御部は、アプリケーションのＩ／Ｏの待ち合わせを確認すると（Ｓ１３，Ｓ１４）、スナップショットの作成を行う（Ｓ１５）。
【００１９】
スナップショットの作成後、制御部は、Ｉ／Ｏを待ち合わせしたアプリケーションに対して、スナップショットの作成が完了した旨の通知を行う（Ｓ１６）。これにより、スナップショットの作成が完了する。
【００２０】
ところが、ユーザが使用する全てのアプリケーションに、ＡＰＩコールが実装されたものを選定することは現実的ではない。そのため、クラッシュ・インコンシステント状態の発生は、Windows（登録商標）ファイルシステム上では起こりうる事象である。また全てのアプリケーションがＡＰＩコールを実装したとしても、スナップショットを記録する瞬間に大量のＡＰＩがコールされ、システムが過負荷になる可能性がある。
【００２１】
そこで、本実施形態では、スナップショットにおいて、ＡＰＩを用いずに、バックアップデータの保全性を向上させた技術について説明する。
【００２２】
図３は、本実施形態における情報処理装置の一例を示す。情報処理装置１は、第１のスナップショット作成部２、監視部３、第２のスナップショット作成部４、置換部５、格納部６を含む。
【００２３】
格納部６は、情報を格納する。格納部６の一例としては、ＨＤＤ２１またはボリューム２２が挙げられる。
【００２４】
第１のスナップショット作成部２は、その情報の第１のスナップショットを作成するとともに、第１のスナップショットに関連づけられたその情報の格納位置を示す第１のポインタ情報を格納部６に格納する。第１のスナップショット作成部２の一例としては、作成部１６が挙げられる。
【００２５】
監視部３は、その情報に対する書込み処理が行われている途中で、第１のスナップショットの作成を行った場合に、書込みの終了を監視する。すなわち、監視部３は、その情報に対する書込み処理が行われていることを示す書込状態情報を継続して取得し、書込状態情報が取得できない場合、その情報に対応する書込状態情報が解放されたと判定する。監視部３の一例としては、監視部１７が挙げられる。書込状態情報の一例としては、ファイルハンドルが挙げられる。
【００２６】
第２のスナップショット作成部４は、監視部により書込みの終了が検出された場合、その情報の第２のスナップショットを作成するとともに、第２のスナップショットに関連づけられたその情報の格納位置を示す第２のポインタ情報を格納部６に格納する。第２のスナップショット作成部４の一例としては、作成部１６が挙げられる。
【００２７】
置換部５は、格納部６に格納された第１のポインタ情報を第２のポインタ情報に置き換える。置換部５の一例としては、置換部１９が挙げられる。
【００２８】
このように構成することにより、スナップショットで取得したデータの保全性を向上させることができる。
【００２９】
情報処理装置１は、さらに、判定部７を含んでもよい。判定部７は、作成した第２のスナップショットと、格納部６に格納された情報とに差異があるかを判定する。判定部７の一例としては、照合部１８が挙げられる。これにより、第２のスナップショットにクラッシュ・インコンシステントが発生していないことを確認することができる。
【００３０】
作成された第２のスナップショットと、格納部６に格納された情報とに差異がないと判定された場合、置換部５は、次の処理を行う。すなわち、置換部５は、格納部６に格納された第１のポインタ情報を第２のポインタ情報に置き換え、第２のスナップショットを削除する。
【００３１】
以下には、本実施形態をさらに詳述する。
＜第１の実施形態＞
図４は、第１の実施形態における情報処理装置の一例を示す。情報処理装置１１は、中央処理演算装置（ＣＰＵ）１２、メモリ１３、ＯＳ１５，ハードディスクドライブ（ＨＤＤ）２１を含む。
【００３２】
ＨＤＤ２１は、ＯＳ及びアプリケーション等のプログラム、データ等を格納する。ＨＤＤ２１は、１以上のボリュームを含む。ボリュームとは、記憶装置の管理単位を示す。
【００３３】
ＣＰＵ１２は、ＨＤＤ２１に格納されたＯＳ１５のプログラムを読み出して、ＯＳ１５のプログラムを実行する。メモリ１３は、情報を一時的に格納する。
【００３４】
ＯＳ１５は、作成部１６、監視部１７、照合部１８、置換部１９を含む。ＣＰＵ１２は、ＯＳ１５のプログラムを実行すると、作成部１６、監視部１７、照合部１８、置換部１９として機能することができる。
【００３５】
ファイルシステム２４は、ＯＳ１５とＨＤＤ２１（ボリューム２２）により表される。ファイルシステム２４は、ファイル／ディレクトリの管理をしている。例えば、ファイルシステム２４は、ファイル／ディレクトリの生成、変更、削除に伴ってポインタの管理をしている。ポインタとは、ファイルシステム２４、ＨＤＤ２１またはボリューム２２におけるファイルの格納位置を示す情報であり、ＨＤＤ２１に格納されている。
【００３６】
作成部１６は、ＨＤＤ２１のボリューム２２のスナップショット２３を作成する。作成部１６は、ある時点でのスナップショット（基本スナップショット）２３を作成後、後述する監視部１７の監視結果に応じて、再び、スナップショット（再記録スナップショット）を作成する。本実施形態では、作成したスナップショット２３は、ＨＤＤ２１（例えば、ボリューム２２）に格納される。
【００３７】
監視部１７は、基本スナップショットの作成時に、基本スナップショットに含まれるファイルに書込みが発生している場合、その書き込みが発生しているファイルに対応するファイルハンドル１４をメモリ１３に記憶して監視する。ファイルハンドル１４は、ファイルが書込み／読み込み等の操作をされていることを示す情報である。これにより、監視部１７は、基本スナップショット作成時に存在していたファイルハンドル１４が解放されたか及び再記録スナップショットがクラッシュ・インコンシステント状態であることが疑われるか等を監視することができる。監視部１７は、ファイルハンドル１４によってファイルが書込み／読み込み等の操作されていることを検知した場合、そのファイルを監視対象として、後述するファイルハンドルリストに登録する。ファイルハンドルリストは、基本スナップショット作成時において、書き込み等の操作がされていたファイルを管理対象ファイルとして管理するリストである。
【００３８】
ここで、監視部１７は、一定の間隔でファイルハンドルの監視を行ってもよいし、任意のタイミングでファイルハンドルの監視を行ってもよい。なお、実装においては監視対象ファイルのファイルハンドル１４が解放されない場合を考慮し、監視についてタイムアウト値（ｎ回）が設定されていてもよい。なお、ｎは任意の整数である。
【００３９】
監視部１７により監視対象ファイルのファイルハンドル１４が存在しないと判定された場合、作成部１６は、上述したように、再記録スナップショットを作成する。
【００４０】
置換部１９は、基本スナップショットにおける監視対象ファイルのファイル／ディレクトリポインタを、再記録スナップショットにおける監視対象ファイルのファイル／ディレクトリポインタに置換する。その後、置換部１９は、再記録スナップショットを削除する。
【００４１】
これにより、ある時点のスナップショットを取得した場合、その時点で書き込み中のファイルについてはその書込みが終わった時点のファイルの情報に置換することができる。その結果、スナップショットで取得されたデータの保全性を向上させることができる。
【００４２】
さらに、スナップショットで取得されたデータの保全性を向上させるために、再記録スナップショット自体にクラッシュ・インコンシステントが発生していないかを判定した後に、置換部１９により置換を行ってもよい。これについて、以下に説明する。
【００４３】
照合部１８は、監視部１７により監視対象ファイルのファイルハンドル１４が存在しないと判定された場合、再記録スナップショットと、その再記録スナップショットに対応する実ファイル／ディレクトリのデータと照合を行う。照合したデータに差異があれば、照合部１８は、再記録スナップショットにクラッシュ・インコンシステント状態が発生していると判定する。照合したデータに差異がなければ、照合部１８は、再記録スナップショットにクラッシュ・インコンシステント状態が発生していないと判定する。
【００４４】
置換部１９は、再記録スナップショットにクラッシュ・インコンシステントが発生していない場合には、次の処理を行う。すなわち、置換部１９は、基本スナップショットにおける監視対象ファイルのファイル／ディレクトリポインタを、再記録スナップショット中の監視対象ファイルのファイル／ディレクトリポインタに置換する。その後、置換部１９は、再記録スナップショットを削除する。
【００４５】
これにより、さらに、スナップショットで取得されたデータの保全性を向上させることができる。
【００４６】
なお、作成部１６、監視部１７、照合部１８、置換部１９として機能するプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ，Ｂｌｕ−ｒａｙ，ＩＣメモリ、フレキシブルディスク等の可搬記録媒体に記録されていてもよい。この場合には、可搬記録媒体からＣＰＵ１２がそのプログラムを読み込んで実行する。
【００４７】
図５は、第１の実施形態における基本スナップショットの作成を説明するための図である。図６は、第１の実施形態における再記録スナップショットの作成を説明するための図である。図７は、第１の実施形態におけるスナップショットの作成完了を説明するための図である。図５（Ａ）、図６（Ａ）、及び図７（Ａ）は、ファイルシステム２４のボリューム２２において、スナップショットの対象となる対象領域のブロックの一例を示す。図５（Ｂ）、図６（Ｂ）、及び図７（Ｂ）は、ファイルハンドルリストの一例を示す。図５（Ｃ）、図６（Ｃ）、及び図７（Ｃ）は、基本スナップショットに含まれるファイルのポインタ情報の一例を示す。図６（Ｄ）は、再記録スナップショットに含まれるファイルのポインタ情報の一例を示す。
【００４８】
図５（Ａ）において、例えば、ファイルシステム２４の、あるボリューム２２には、ブロック１〜９０で示される格納領域が存在する。ファイルＡは、ブロック１−４０に格納されているファイルデータである。ファイルＢは、ブロック４１−８０に格納されているファイルデータである。
【００４９】
図５（Ａ）において、ファイルＡのブロック３９−４０は、書き込み中の状態である。この場合、ファイルＡは、ファイルハンドルＡによって、書き込み中であることが認識されている。
【００５０】
作成部１６は、図５（Ａ）に示すように、対象領域のスナップショット（基本スナップショット）を作成する。図５（Ｃ）は、基本スナップショットに含まれるファイルＡのファイルポインタ情報（ブロック１−４０）と、ファイルＢのファイルポインタ情報（ブロック４１−８０）を示す。このとき、作成部１６は、ファイルが格納されているブロックを書込み不可状態にする。したがって、ファイルＡについてのブロック１−４０及びファイルＢについてのブロック４１−８０への書込みは制限される。
【００５１】
スナップショット作成時に書込み中であったブロック３９−４０は、クラッシュ・インコンシステント状態である。このとき、監視部１７は、図５（Ｂ）に示すように、基本スナップショット作成時に、ファイルＡが書込みされていたことを示す情報を、ファイルハンドルリスト３１に登録する。
【００５２】
上述したように、ファイルＡについてのブロック１−４０及びファイルＢについてのブロック４１−８０への書込みは制限される。したがって、書込み中であったブロック３９−４０に書き込むべき情報は、ファイルシステム２４の制御により、図６（Ａ）に示すように、書込み制限のないブロック、例えば、ブロック８１−８２に書き込まれる。
【００５３】
監視部１７は、ファイルハンドルリスト３１に登録された監視対象ファイルのファイルハンドルが解放されたかを監視する。監視の結果、ファイルＡに対する書込み処理が終了すると（すなわち、監視対象ファイルのファイルハンドルが解放される）と、監視部１７は、作成部１６にファイルハンドルが解放された旨を通知する。このとき、監視部１７は、図６（Ｂ）に示すように、ファイルＡが書込みされていたことを示す情報をファイルハンドルリスト３１から削除する。
【００５４】
作成部１６は、監視対象ファイルのファイルハンドルが解放された旨の通知を受信した場合、図６（Ａ）に示すように、対象領域のスナップショット（再記録スナップショット）を再作成する。図６（Ｄ）に、再記録スナップショットに含まれるファイルＡのファイルポインタと、ファイルＢのファイルポインタの情報を示す。
【００５５】
再記録スナップショットの作成後、後述する置換部１９による処理の前に、再び監視部１７によるファイルハンドルの確認を行い、ファイルハンドルが存在しないと判定された場合、照合部１８は、次の処理を行ってもよい。すなわち、照合部１８は、再記録スナップショットと、その再記録スナップショットに対応する、ファイルシステム２４上の実ファイル／ディレクトリのデータとの照合を行う。照合の結果、再記録スナップショットと、ファイルシステム２４上の実ファイル／ディレクトリとのデータについて差異がない場合、照合部１８は、再記録スナップショットが、クラッシュ・インコンシステント状態でないと判定する。
【００５６】
置換部１９は、作成部１６による再記録スナップショットの作成後、または照合部１８による照合後、次の処理を行う。すなわち、置換部１９は、基本スナップショットの監視対象ファイルのファイル／ディレクトリポインタ（図６（Ｃ））を、再記録スナップショット中の監視対象ファイルのファイル／ディレクトリポインタ（図６（Ｄ））で置換する。その結果、基本スナップショットの監視対象ファイルのファイル／ディレクトリ（ファイルＡ）を示すポインタは、図７（Ｃ）に示すようになる。
【００５７】
図８Ａ及び図８Ｂは、第１の実施形態におけるスナップショット実行フローの一例を示す。ＯＳ１５を実行しているＣＰＵ１２は、ユーザからの指示により、またはアプリケーションより、スナップショットの作成指示を受け取る（Ｓ２１）。すると、ＣＰＵ１２は、以下に示すように、作成部１６、監視部１７、照合部１８、置換部１９として機能する。
【００５８】
作成部１６は、ボリューム２２中のスナップショットの対象となる領域（例えば、ボリューム）のスナップショット（基本スナップショット）を作成し、ＨＤＤ２１のボリューム２２に格納する。このとき、監視部１７は、ファイルシステム２４で管理されているファイルハンドルを検出し、検出されたファイルハンドルをメモリ１３に記録する（Ｓ２２）。
【００５９】
Ｓ２２において、基本スナップショット作成時に、基本スナップショットに含まれるファイルが書き込み中でない場合、すなわち、ファイルハンドルが記録されていない場合（Ｓ２３で「Ｎｏ」）、スナップショットの作成が完了する（Ｓ３８）。
【００６０】
Ｓ２２において、基本スナップショット作成時に、基本スナップショットに含まれるファイルが書き込み中である場合（ファイルハンドルがメモリ１３に記録されている場合）（Ｓ２３で「Ｙｅｓ」）、監視部１７は、次の処理を行う。すなわち、監視部１７は、ファイルハンドルリスト３１を作成する（Ｓ２４）。ファイルハンドルリスト３１には、基本スナップショットに含まれるファイルのうち、基本スナップショット作成時において書き込み中の状態にあるファイル（監視対象ファイル）を識別する情報が登録されている。
【００６１】
監視部１７は、ｔ（ｔは任意の実数）秒後に、ファイルシステム２４からファイルハンドルを検出する。そして、監視部１７は、その検出したファイルハンドルが示すファイルが、ファイルハンドルリスト３１にあるかを判定する（Ｓ２５）。すなわち、監視部１７は、監視対象ファイルのファイルハンドルが解放されたかを判定する。
【００６２】
Ｓ２５のファイルハンドル確認処理がｎ（ｎ：任意の整数）回を超える場合（Ｓ２６で「Ｙｅｓ」）、タイムアウトになる（Ｓ２７）。タイムアウトになった場合、監視部１７は、監視対象ファイルのファイルハンドルが解放されていなかった旨の情報（クラッシュ・インコンシステント状態の可能性を示す情報）を、その監視対象ファイルのヘッダに記録する。
【００６３】
Ｓ２５のファイルハンドル確認処理がｎ（ｎ：任意の整数）回を超えない場合（Ｓ２６で「Ｎｏ」）において、監視対象ファイルのファイルハンドルが解放されていない場合（Ｓ２８で「Ｙｅｓ」）、処理がＳ２５へ戻る。
【００６４】
監視対象ファイルのファイルハンドルが解放された場合（Ｓ２８で「Ｎｏ」）、作成部１６は、再度スナップショット（再記録スナップショット）を作成し、ＨＤＤ２１に格納する（Ｓ２９）。
【００６５】
監視部１７は、再度、ファイルシステム２４中に、監視対象ファイルのファイルハンドルが存在するかを判定する（Ｓ３０）。Ｓ３０においてファイルハンドルが存在する場合（Ｓ３１で「Ｙｅｓ」）、処理がＳ２５へ戻る。
【００６６】
Ｓ３０においてファイルハンドルが存在しない場合（Ｓ３１で「Ｎｏ」）、照合部１８は、再記録スナップショットと、その再記録スナップショットに対応するファイルシステム２４上のデータとを照合する（Ｓ３２）。照合の結果、再記録スナップショットと、ファイルシステム上のデータとの間に差異がある場合（Ｓ３３で「Ｙｅｓ」）、処理がＳ２５へ戻る。
【００６７】
照合の結果、再記録スナップショットと、ファイルシステム上のデータとの間に差異がない場合（Ｓ３３で「Ｎｏ」）、置換部１９は、次の処理を行う。すなわち、置換部１９は、基本スナップショットにおける監視対象ファイルのファイル／ディレクトリポインタを、再記録スナップショットにおける監視対象ファイルのファイル／ディレクトリポインタに置換する（Ｓ３４）。
【００６８】
置換部１９は、ファイルハンドルリスト３１から、その監視対象ファイルを特定する情報を削除する（Ｓ３５）。置換部１９は、ＨＤＤ２１から、再記録スナップショットを削除する（Ｓ３６）。
【００６９】
監視部１７は、ファイルハンドルリスト３１に、他の監視対象ファイルが残っているかを判定する（Ｓ３７）。ファイルハンドルリスト３１に、他の監視対象ファイルが残っている場合（Ｓ３７で「Ｙｅｓ」）、処理がＳ２５へ戻る。ファイルハンドルリスト３１に、監視対象ファイルが残っていない場合（Ｓ３７で「Ｎｏ」）、スナップショットの作成が完了する（Ｓ３８）。
【００７０】
なお、図８Ａ及び図８Ｂでは、再記録スナップショットの作成後に照合部１８による照合処理を行う場合のスナップショット実行フローの一例について説明した。しかしながら、仕様によっては、Ｓ３１で「Ｎｏ」の場合に、Ｓ３４へ進むようにしてもよい。
【００７１】
本実施形態によれば、スナップショットを記録した場合、スナップショット中のデータ静止点が一定とならない可能性がある。しかし、クラッシュ・インコンシステント状態の発生はデータの破壊を示すため、上記実施形態により、スナップショットで取得したデータの保全性を向上させることができる。したがって、ファイルシステムスナップショットの記録とデータへの書き込みとのタイミングが重なった場合にでも、データ不整合を起こさずにスナップショットの作成が可能となる。また、本実施形態によれば、各アプリケーションに対してＡＰＩを作り込まなくてもよい。
【００７２】
＜第２の実施形態＞
第２の実施形態では、第１の実施形態とＡＰＩによるＩ／Ｏ待ち合わせ処理とを併用することについて説明する。
【００７３】
図９は、第２の実施形態における情報処理装置の一例を示す。図９の情報処理装置１１は、図４の情報処理装置１１に、待ち合わせ処理部４１を追加したものである。
【００７４】
待ち合わせ処理部４１は、アプリケーションにＡＰＩが組み込まれている場合に、スナップショット作成の間、アプリケーションのＩ／Ｏを待ち状態にする。
【００７５】
図１０Ａ、図１０Ｂ及び図１０Ｃは、第２の実施形態におけるスナップショット実行フローの一例を示す。ＯＳ１５を実行しているＣＰＵ１２は、ユーザからの指示により、またはアプリケーションより、スナップショットの作成指示を受け取る（Ｓ４１）。すると、ＣＰＵ１２は、以下に示すように、作成部１６、監視部１７、照合部１８、置換部１９、待ち合わせ処理部４１として機能する。ＡＰＩコールが実装されているアプリケーションがない場合（Ｓ４２で「Ｎｏ」）、処理がＳ４６へ進む。
【００７６】
ＡＰＩコールが実装されているアプリケーションがある場合（Ｓ４２で「Ｙｅｓ」）、待ち合わせ処理部４１は、ＡＰＩをコールし、アプリケーションに対して、入力（input）処理／出力（output）処理の待ち合わせ（Ｉ／Ｏ）を指示する（Ｓ４３）。待ち合わせ処理部４１は、アプリケーションのＩ／Ｏの待ち合わせが完了する（Ｓ４４，Ｓ４５）。
【００７７】
すると、作成部１６は、ファイルシステム２４中の対象のボリュームのスナップショット（基本スナップショット）を作成し、ＨＤＤ２１のボリューム２２に格納する。このとき、監視部１７は、ファイルシステム２４のボリューム２２に存在するファイルハンドルをメモリ１３に記録する（Ｓ４６）。Ｓ４６の処理は、図８ＡのＳ２２と同じである。ＳＳ４６以降は、図８Ａ及び図８ＢのＳ２２以降の処理と同じなので、その説明を省略する。
【００７８】
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００７９】
１      情報処理装置
２      第１のスナップショット作成部
３      監視部
４      第２のスナップショット作成部
５      置換部
６      格納部
７      判定部
１１      情報処理装置
１２      ＣＰＵ
１３      メモリ
１４      ファイルハンドル
１５      ＯＳ
１６      作成部
１７      監視部
１８      照合部
１９      置換部
２１      ＨＤＤ
２２      ボリューム
２３      スナップショット
２４      ファイルシステム
３１      ファイルハンドルリスト
４１      待ち合わせ処理部
【図１】
0005952631.tif 000002
【図２】
0005952631.tif 000003
【図３】
0005952631.tif 000004
【図８Ａ】
0005952631.tif 000005
【図８Ｂ】
0005952631.tif 000006
【図１０Ａ】
0005952631.tif 000007
【図１０Ｂ】
0005952631.tif 000008
【図１０Ｃ】
0005952631.tif 000009
【図４】
0005952631.tif 000010
【図５】
0005952631.tif 000011
【図６】
0005952631.tif 000012
【図７】
0005952631.tif 000013
【図９】
0005952631.tif 000014