(57)【要約】【課題】ブロックストレージ装置の差分バックアップを、簡易なロジックで、かつより少ない処理負荷および／またはより少ないリソース負荷で実現する。【解決手段】本発明によるストレージ装置６１は、静止点を検出すると、静止点カウンタの値を更新する静止点カウンタ更新部６１１と、ブロックにデータが書き込まれると、最終更新期間を静止点カウンタの値に更新する最終更新期間更新部６１２と、静止点カウンタと最終更新期間とを出力する静止点情報提供部６１３とを含む。また、バックアップ装置６２は、バックアップを行う際に、静止点カウンタと、最終更新期間とを取得する静止点情報取得部６２１と、取得された最終更新期間と、基準点カウンタとに基づいて、更新ブロックを検出するとともに、取得された静止点カウンタを基準点カウンタとして保持する更新ブロック検出部６２２とを含む。【選択図】図１２
2018173701.tif 000002
【特許請求の範囲】
【請求項１】
所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置と、前記ストレージ装置の記憶ユニットに記憶されたデータのバックアップを行うバックアップ装置とを備え、
前記ストレージ装置は、
自装置において前記記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタの値を更新する静止点カウンタ更新部と、
前記記憶ユニットが有する前記ブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、前記ブロックの各々に対応づけて自装置が保持している最終更新期間のうち当該ブロックに対応する最終更新期間を、前記静止点カウンタの値に更新する最終更新期間更新部と、
前記バックアップ装置からの要求に応じて、前記静止点カウンタと前記最終更新期間とを出力する静止点情報提供部とを含み、
前記バックアップ装置は、
前記バックアップを行う際に、前記静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間とを取得する静止点情報取得部と、
取得された前記最終更新期間と、自装置が保持している前記ブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された前記静止点カウンタを前記更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する更新ブロック検出部とを含む
ことを特徴とするデータ管理システム。
【請求項２】
前記更新ブロック検出部は、取得された前記最終更新期間と、前記基準点カウンタとの比較により、更新ブロックを検出する
請求項１記載のデータ管理システム。
【請求項３】
前記バックアップ装置は、
前記ストレージ装置の少なくともバックアップ対象とされた記憶ユニットに対するデータの書き込みを停止した状態で、前記ストレージ装置に対して前記静止点の発生を伴う所定のイベントを発行する静止点確保部を含む
請求項１または請求項２記載のデータ管理システム。
【請求項４】
前記静止点は、スナップショットを更新した時点、一定時間が経過するタイミング、対象の記録ユニットにおいて一定量の書き込みがされたタイミングまたは対象の記録ユニットにおいて１回の書き込みがされたタイミングのいずれかを含む
請求項１から請求項３のうちのいずれかに記載のデータ管理システム。
【請求項５】
前記ストレージ装置が保持する静止カウンタのビット長が１６ｂｉｔ以内である
請求項１から請求項４のうちのいずれかに記載のデータ管理システム。
【請求項６】
前記記録ユニットの各々において前記ブロックの各々は、所定の値で初期化されており、
前記静止点カウンタは、記録ユニットごとに保持され、
前記更新ブロック検出部は、初回バックアップ時に、取得された最終更新期間が初期値のままのブロックをバックアップの対象から除外する
請求項１から請求項５のうちのいずれかに記載のデータ管理システム。
【請求項７】
所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットと、
自装置において前記記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタの値を更新する静止点カウンタ更新部と、
前記記憶ユニットが有する前記ブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、前記ブロックの各々に対応づけて自装置が保持している最終更新期間のうち当該ブロックに対応する最終更新期間を、前記静止点カウンタの値に更新する最終更新期間更新部と、
前記バックアップ装置からの要求に応じて、前記静止点カウンタと前記最終更新期間とを出力する静止点情報提供部とを備えた
ことを特徴とするストレージ装置。
【請求項８】
所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置の記憶ユニットに記憶されたデータのバックアップを行う際に、前記ストレージ装置から、前記ストレージ装置において前記記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点が検出されると値が更新される静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間であって、前記記憶ユニットのデータ領域であるブロックのいずれかに対してデータが書き込まれると前記静止点カウンタの値に更新される最終更新期間とを取得する静止点情報取得部と、
取得された前記最終更新期間と、自装置が保持している前記ブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された前記静止点カウンタを前記更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する更新ブロック検出部とを備えた
ことを特徴とするバックアップ装置。
【請求項９】
所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置が、自装置において前記記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタの値を更新し、
前記ストレージ装置が、前記記憶ユニットが有する前記ブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、前記ブロックの各々に対応づけて自装置が保持している最終更新期間のうち当該ブロックに対応する最終更新期間を、前記静止点カウンタの値に更新し、
前記ストレージ装置が、前記記憶ユニットに記憶されたデータのバックアップを行うバックアップ装置からの要求に応じて、前記静止点カウンタと前記最終更新期間とを出力し、
前記バックアップ装置が、前記バックアップを行う際に、前記静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間とを取得し、
前記バックアップ装置が、取得された前記最終更新期間と、自装置が保持している前記ブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された前記静止点カウンタを前記更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する
ことを特徴とするストレージ装置のバックアップ方法。
【請求項１０】
コンピュータに、
所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置の記憶ユニットに記憶されたデータのバックアップを行う際に、前記ストレージ装置から、前記ストレージ装置において前記記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点が検出されると値が更新される静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間であって、前記記憶ユニットのデータ領域であるブロックのいずれかに対してデータが書き込まれると前記静止点カウンタの値に更新される最終更新期間とを取得する静止点情報取得処理、および
取得された前記最終更新期間と、自装置が保持している前記ブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された前記静止点カウンタを前記更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する更新ブロック検出処理
を実行させるためのストレージ装置のバックアッププログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に記憶されたデータを管理するためのデータ管理システム、ストレージ装置、バックアップ装置、ストレージ装置のバックアップ方法およびストレージ装置のバックアッププログラムに関する。
【背景技術】
【０００２】
ストレージ装置に記憶されているデータをバックアップする方法として、ストレージ装置との間の転送量や、バックアップ装置側で保管するデータ量を削減するために、差分バックアップと呼ばれる方法が広く用いられている。差分バックアップは、バックアップ装置がバックアップを行う際に、１つ前のバックアップのタイミングからの差分のみをバックアップする方法である。
【０００３】
差分バックアップでは、バックアップ装置が、１回目で、対象とされるストレージ装置の全てのデータをバックアップ（取得および保管）した後、２回目以降で、対象とされるストレージ装置において前回のバックアップよりも後に更新された部分、すなわち差分データのみをバックアップする。バックアップ装置は、データをリストアする（過去のバックアップ時点の状態に戻す）ときには、初回のバックアップ時に取得したデータに対して、２回目から指定されたバックアップ時点までの差分データを順次適用していくことで、指定された時点のデータの状態に復元する。
【０００４】
ストレージ装置が使用不能となる障害に備えるために、バックアップ装置は通常、ストレージ装置の外部に設けられる。
【０００５】
バックアップ装置がストレージ装置の外部に設けられる場合、バックアップ装置がバックアップの対象とされるストレージ装置の詳細な内部構造を知らなくても、更新されたデータを特定できることが好ましい。
【０００６】
例えば、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）ストレージ装置のファイルシステムのように、ストレージ装置を制御するファイルシステムが各ファイルの最終更新日時を管理している場合には、それらを参照することで差分データを特定できる。例えば、バックアップ装置は、自身の前回バックアップ日時と各ファイルの最終更新日時とを比較して、前回バックアップ日時よりファイルの最終更新日時が新しいか否かによって、各ファイルのバックアップ要否を判定すればよい。このように、ファイルシステムがファイルの更新日時を管理しているようなストレージ装置であれば、比較的簡単に差分データを特定できる。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のバックアップに広く用いられているｘｃｏｐｙコマンドは、このようなアルゴリズムを実行するバックアップソフトウェアの例である。
【０００７】
しかし、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ストレージ装置などの、所定のブロック単位で記憶領域を管理する記憶ユニットを備えるストレージ装置の多くは、最終更新日時を管理する機構が存在しない。このため、そのようなストレージ装置に対しては、上記のような最終更新日時を利用して、記憶ユニットに格納されたデータブロックの中から差分データを特定することができない。
【０００８】
以下、本発明において、このような記憶ユニットを１つ以上備えるストレージ装置を「ブロックストレージ装置」と呼ぶ場合がある。なお、ブロックストレージ装置における記憶ユニットは、物理ユニットであるか、論理ユニット（Ｌｏｇｉｃａｌ  Ｕｎｉｔ；  ＬＵ）であるかを問わない。また、以下では、ブロックストレージ装置が備える記憶ユニットの各々を、ブロックデバイスと呼ぶ場合がある。
【０００９】
ブロックストレージ装置に対する差分バックアップの実現方法として、例えば、毎回全てのデータを取得して、前回のバックアップ時の状態と比較すれば、差分データを特定できる。しかし、当該方法では、全てのデータの読み出しとチェックサム計算などが必要となり、バックアップ装置側に負荷および時間的コストがかかるだけでなく、ストレージ装置側にも負荷がかかり、ストレージ装置の性能低下につながるという問題がある。
【００１０】
また、他の方法として、ブロックストレージ装置側に、各ブロックと対応づけて最終更新時刻を記録する機構を持たせる方法がある（例えば、特許文献１参照）。
【００１１】
また、他の方法として、バックアップ装置が、ブロックストレージ装置が保持する、スナップショット管理などのための内部データを参照して、更新された部分を解析する方法がある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−２１７２０９号公報
【特許文献２】特開２００８−２２５６１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、特許文献１に記載の方法は、ストレージ装置側の時刻と、バックアップ装置側の時刻とが厳密に同期していなければならず、バックアップデータの整合性を保証するのが困難であるという問題がある。例えば、両装置間での時刻のずれのために、実際には更新された１つのブロックを更新されていないと誤判断すれば、バックアップデータに不整合が生じるが、それを知らずにリストアした場合、ブロックデバイス全体が利用できなくなる可能性がある。
【００１４】
その対策方法として、時刻のずれを許容するために、前回のバックアップ時よりも１０分前を基準時間とするなどの方法も考えられるが、どれだけのずれが生じるかはストレージ装置側に依存するため最適値を求めるのが困難であるとともに、ずれ量を大きく許容すれば、それだけ更新されていないブロックのデータを差分データとして特定する可能性が高くなり、データの転送時の負荷やバックアップ装置側のメモリ容量の負荷が大きくなる。
【００１５】
さらに、特許文献１に記載の方法では、ブロックストレージ装置側に、新たに最終更新時刻を管理するための領域がブロック数分必要となる。このため、ブロック数が多くなればなるほど、ストレージ装置側のメモリ使用量が増加するという問題がある。
【００１６】
例えば、システムを１０年運用すると仮定し、うるう年とうるう秒を考慮せず１年を３６５日とすれば、１０年は３１５，３６０，０００秒となる。最終更新時刻を、１秒単位でカウントするカウンタ値で実装しようとした場合、上記秒数は１６ビットには収まらず、それ以上のビット数のデータ容量が必要となる。演算効率を考慮すれば、最終更新日時は３２ビットのデータで管理されることになる。例えば、１ＴｉＢのブロックデバイスを３２ＫｉＢ単位のブロックに分割した場合、ブロックごとに３２ビットのメモリが必要であるとすれば、ストレージ装置の制御メモリを、３１２５０ブロック×３２ビット＝１ＭｉＢも消費する。
【００１７】
また、特許文献２には、ブロックストレージ装置と接続されるサーバ装置側で、ブロックストレージ装置におけるアクセス回数やスナップショットの作成回数やマウント回数やバックアップ回数やリストア回数などを取得して、それに基づきファイルグループの移行を判定する旨が記載されている。しかし、特許文献２には、これらのデータを取得したサーバが移行を判定する方法として、特定の変数との大小比較をする旨の記載しかなく、差分バックアップのための具体的なロジックは開示されていない。
【００１８】
差分バックアップを不整合とならずに行おうとすると、ブロックストレージ側でこれらの回数がどのように管理されているか、またこれらの回数を計測した処理がどのように行われているかを知る必要がある。しかし、このようなストレージ装置毎に異なる内部処理を基に、差分バックアップを制御しなければならないとすると、バックアップ装置の実装が複雑になったり、汎用性がなくなるという問題がある。
【００１９】
本発明は、上述した課題に鑑み、ブロックストレージ装置の差分バックアップを、簡易なロジックで、かつより少ない処理負荷および／またはより少ないリソース負荷で実現できるデータ管理システム、ストレージ装置、バックアップ装置、ストレージ装置のバックアップ方法およびストレージ装置のバックアッププログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明によるデータ管理システムは、所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置と、ストレージ装置の記憶ユニットに記憶されたデータのバックアップを行うバックアップ装置とを備え、ストレージ装置は、自装置において記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタの値を更新する静止点カウンタ更新部と、記憶ユニットが有するブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、ブロックの各々に対応づけて自装置が保持している最終更新期間のうち当該ブロックに対応する最終更新期間を、静止点カウンタの値に更新する最終更新期間更新部と、バックアップ装置からの要求に応じて、静止点カウンタと最終更新期間とを出力する静止点情報提供部とを含み、バックアップ装置は、バックアップを行う際に、静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間とを取得する静止点情報取得部と、取得された最終更新期間と、自装置が保持しているブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された静止点カウンタを更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する更新ブロック検出部とを含むことを特徴とする。
【００２１】
本発明によるストレージ装置は、所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットと、自装置において記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタの値を更新する静止点カウンタ更新部と、記憶ユニットが有するブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、ブロックの各々に対応づけて自装置が保持している最終更新期間のうち当該ブロックに対応する最終更新期間を、静止点カウンタの値に更新する最終更新期間更新部と、バックアップ装置からの要求に応じて、静止点カウンタと最終更新期間とを出力する静止点情報提供部とを備えたことを特徴とする。
【００２２】
本発明によるバックアップ装置は、所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置の記憶ユニットに記憶されたデータのバックアップを行う際に、ストレージ装置から、ストレージ装置において記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点が検出されると値が更新される静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間であって、記憶ユニットのデータ領域であるブロックのいずれかに対してデータが書き込まれると静止点カウンタの値に更新される最終更新期間とを取得する静止点情報取得部と、取得された最終更新期間と、自装置が保持しているブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された静止点カウンタを更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する更新ブロック検出部とを備えたことを特徴とする。
【００２３】
本発明によるストレージ装置のバックアップ方法は、所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置が、自装置において記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタの値を更新し、ストレージ装置が、記憶ユニットが有するブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、ブロックの各々に対応づけて自装置が保持している最終更新期間のうち当該ブロックに対応する最終更新期間を、静止点カウンタの値に更新し、ストレージ装置が、記憶ユニットに記憶されたデータのバックアップを行うバックアップ装置からの要求に応じて、静止点カウンタと最終更新期間とを出力し、バックアップ装置が、バックアップを行う際に、静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間とを取得し、バックアップ装置が、取得された最終更新期間と、自装置が保持しているブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された静止点カウンタを更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持することを特徴とする。
【００２４】
本発明によるストレージ装置のバックアッププログラムは、コンピュータに、所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニットを備えたストレージ装置の記憶ユニットに記憶されたデータのバックアップを行う際に、ストレージ装置から、ストレージ装置において記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点が検出されると値が更新される静止点カウンタと、バックアップ対象とされた記憶ユニットの最終更新期間であって、記憶ユニットのデータ領域であるブロックのいずれかに対してデータが書き込まれると静止点カウンタの値に更新される最終更新期間とを取得する静止点情報取得処理、および取得された最終更新期間と、自装置が保持しているブロックの各々についてのバックアップの基準点を示す基準点カウンタとに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された静止点カウンタを更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタとして保持する更新ブロック検出処理を実行させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、ブロックストレージ装置の差分バックアップを、簡易なロジックで、かつより少ない処理負荷および／またはより少ないリソース負荷で実現できる。
【図面の簡単な説明】
【００２６】
【図１】第１の実施形態のデータ管理システムの構成例を示すブロック図である。
【図２】ブロックストレージ装置１の動作の一例を示すフローチャートである。
【図３】メタ情報管理部１４に保持される静止点カウンタ１４１および最終更新期間１４２の例を示す説明図である。
【図４】最終更新期間１４２の更新後の例を示す説明図である。
【図５】ブロックストレージ装置１の動作の一例を示すフローチャートである。
【図６】ブロックストレージ装置１の動作の一例を示すフローチャートである。
【図７】静止点カウンタ１４１の更新後の例を示す説明図である。
【図８】バックアップ装置２のバックアップ動作の例を示すフローチャートである。
【図９】バックアップ装置２のバックアップ動作の例を示すフローチャートである。
【図１０】バックアップファイルの記録内容の例を示す説明図である。
【図１１】本発明の実施形態にかかるコンピュータの構成例を示す概略ブロック図である。
【図１２】本発明のデータ管理システムの概要を示すブロック図である。
【発明を実施するための形態】
【００２７】
実施形態１．
以下、図面を参照して本発明の実施形態について説明する。図１は、第１の実施形態のデータ管理システムの構成例を示すブロック図である。図１に示すデータ管理システム５００は、ブロックストレージ装置１と、バックアップ装置２と、アプリケーション装置３とを備える。
【００２８】
ブロックストレージ装置１は、１つ以上の記憶ユニット１１と、データ入力部１２と、データ出力部１３と、メタ情報管理部１４と、メタ情報提供部１５と、最終更新期間更新部１６と、静止点検出部１７と、静止点カウンタ更新部１８と、スナップショット記憶部１１１とを含む。
【００２９】
記憶ユニット１１は、上述したように、自身の記憶領域を所定のブロック単位で管理する記憶手段である。本実施形態の記憶ユニット１１の各々は、ブロック単位の複数のデータ領域（以下、単にブロックという）を有する。以下、ブロックに格納されるデータをブロックデータという場合がある。
【００３０】
データ入力部１２は、外部より、記憶ユニット１１へのデータの書き込み要求を受け付ける。データ出力部１３は、外部より、記憶ユニットからのデータの読み出し要求を受け付ける。
【００３１】
メタ情報管理部１４は、ブロックストレージ装置１のメタ情報を管理（保持）する。メタ情報の例としては、記憶ユニット１１の各々についての、名称、容量、アクセス権限などが挙げられるが、メタ情報はこれらに限定されない。
【００３２】
本実施形態のメタ情報管理部１４はさらに、メタ情報として、静止点カウンタ１４１と、最終更新期間１４２とを保持する。
【００３３】
静止点カウンタ１４１は、ブロックストレージ装置１の状態または記憶ユニット１１の状態が所定の条件を満たした時点である静止点がとられるたびに値が更新（増加または減少）されるカウンタである。静止点カウンタ１４１は、静止点が記憶ユニット１１ごとに独立してとられる場合には、記憶ユニット１１ごとに設けられる。メタ情報管理部１４は、例えば、記憶ユニット１１の識別子と対応づけて、静止点カウンタ１４１を保持してもよい。
【００３４】
多くのブロックストレージ装置のバックアップにおいて、整合性を確保するために静止点をとるという特性がある。本実施形態でも、そのような静止点をとる特性を利用できるようにした。なお、本実施形態の静止点は、ブロックストレージ装置のバックアップにおいて、整合性を確保するためにとられるものに限定されない。
【００３５】
本実施形態では、例えば、静止点を、ブロックストレージ装置１の状態または記憶ユニット１１の状態が所定の条件を満たした時点として定義する。なお、所定の条件には、少なくとも対象（ブロックストレージ装置１や、記憶ユニット１１やそのグループ等）において、データが静止しているとの静止条件を含む。換言すると、静止点は、所定の対象においてデータが静止した状態、かつ所定の条件を満たす状態となった時点であればよい。また、静止点を、バックアップ装置２からの所定の要求（例えば、静止点確保要求等）を受け付けた時点と定義することも可能である。ただし、本実施形態では、静止点は、少なくとも１秒よりも長い時間間隔で発生するものとする。
【００３６】
本実施形態では、ブロックストレージ装置１がスナップショットを作成した時点を、静止点の一例として説明するが、静止点は、上記の条件を満たす任意の時点でよい。静止点の他の例としては、例えば、アプリケーション装置３からシャットダウンする旨が通知された時点や、アプリケーション装置３からファイルシステムのアンマウントがされた時点などが挙げられる。なお、静止点はこれらの状態すべてであってもよい。すなわち、所定の条件は複数の異なる状態を許容できるものとする。
【００３７】
また、最終更新期間１４２は、各記憶ユニット１１のブロックごとに設けられる。メタ情報管理部１４は、例えば、記憶ユニット１１の識別子およびブロックの識別子と対応づけて、最終更新期間１４２を保持してもよい。
【００３８】
ここで、最終更新期間１４２は、対応するブロックに最後にデータが更新された期間である。最終更新期間１４２は、より具体的には、対応するブロックに最後にデータが更新された時点を含む所定の時間区間の情報である。
【００３９】
本実施形態では、そのような最終更新期間１４２を、静止点カウンタ１４１を用いて表現する。より具体的には、最終更新期間１４２を、対応するブロックに最後にデータが更新された時点が、時間的に隣接する２つの静止点で挟まれた時間区間のうちのどの区間に属するかを示す情報とする。最終更新期間１４２は、例えば、対応するブロックに最後にデータが更新された期間（上記の時間区間）の開始点に相当する静止点を示す情報（静止点カウンタ）であってもよい。
【００４０】
メタ情報提供部１５は、メタ情報管理部１４に保持されているメタ情報を外部に提供する。
【００４１】
最終更新期間更新部１６は、データ入力部１２へのデータ書き込み要求に応じて、対応する最終更新期間１４２を更新する。最終更新期間更新部１６は、例えば、データ入力部１２へのデータ書き込み要求に応じて、要求先のブロックに対応づけられた最終更新期間１４２を、同ブロックが対応する静止点カウンタ１４１の値に更新する。ここで、ブロックが対応する静止点カウンタ１４１とは、例えば、そのブロックを有する記憶ユニット１１に対応づけられた静止点カウンタ１４１である。なお、静止点カウンタ１４１が１つのみの場合は、唯一の静止点カウンタ１４１を、ブロックが対応する静止点カウンタ１４１とすればよい。また、静止点カウンタ１４１が所定の記憶ユニット１１のグループごとに設けられている場合には、そのブロックを有する記憶ユニット１１が属するグループに対応づけられた静止点カウンタ１４１を、ブロックが対応する静止点カウンタ１４１とすればよい。本実施形態では、静止点カウンタ１４１が設けられる単位（すなわち、静止点の検出単位）と、該単位が対応するブロックとの関係は、最終更新期間更新部１６において既知であるとする。
【００４２】
静止点検出部１７は、静止点がとられたことを検出する。
【００４３】
静止点カウンタ更新部１８は、静止点検出部１７による検出結果をもとに静止点カウンタ１４１を更新する。静止点カウンタ更新部１８は、静止点検出部１７によって静止点がとられたことが検出される度に、対応する静止点カウンタ１４１を更新する。静止点カウンタ更新部１８は、例えば、静止点検出部１７によって静止点がとられたことが検出される度に、検出元の記憶ユニット１１に対応づけられた静止点カウンタ１４１を更新する。なお、静止点カウンタ更新部１８においても、検出される静止点と、更新先の静止点カウンタ１４１との関係は既知であるとする。
【００４４】
スナップショット記憶部１１１は、スナップショットを記憶する。
【００４５】
また、バックアップ装置２は、バックアップ部２１と、リストア部２２と、バックアップデータ記憶部２３と、静止点カウンタ記憶部２４とを含む。
【００４６】
バックアップ部２１は、ブロックストレージ装置１の各記憶ユニット１１または指定された記憶ユニット１１に記憶されているデータ（より具体的には、記憶ユニット１１が備える各ブロックのブロックデータ）をバックアップする。
【００４７】
リストア部２２は、後述するバックアップファイルや、バックアップデータ記憶部２３や静止点カウンタ記憶部２４等に記憶されている情報に基づいて、ブロックストレージ装置１の各記憶ユニット１１または指定された記憶ユニット１１にデータをリストアする。
【００４８】
バックアップデータ記憶部２３は、バックアップ対象とされたブロックストレージ装置１が備える各記憶ユニット１１のバックアップデータを記憶する。
【００４９】
また、バックアップ部２１は、静止点確保部２１１と、更新ブロック検出部２１２とを含む。
【００５０】
静止点確保部２１１は、バックアップ時に、バックアップ対象の静止点を確保する。静止点確保部２１１は、ブロックストレージ装置１の少なくともバックアップ対象とされた記憶ユニット１１に対するデータの書き込みを停止した状態で、ブロックストレージ装置１に対して静止点の発生を伴う所定のイベントを発行することにより、静止点を確保してもよい。静止点確保部２１１は、例えば、静止点がスナップショットを更新した時点である場合には、バックアップ対象においてスナップショットを作成させて、静止点を発生させる。また、静止点確保部２１１は、例えば、静止点がバックアップ装置２からの所定の要求（例えば、静止点確保要求等）の受信時点であれば、バックアップ対象を指定した該要求を送信して、静止点を発生させる。
【００５１】
更新ブロック検出部２１２は、新たなバックアップを行う際に、バックアップ対象の前回のバックアップ時点からデータが更新されたブロックを検出する。
【００５２】
静止点カウンタ記憶部２４は、バックアップ対象とする最小単位（例えば、記憶ユニット１１）の各々に対応づけて、バックアップの基準点となる静止点カウンタ２４１を保持する。なお、静止点カウンタ記憶部２４は、上記を初期状態の静止点カウンタ２４１として、さらに、バックアップごとに、取得した差分データ２３１の各々と対応づけられる静止点カウンタ２４１を保持してもよい。なお、静止点カウンタ２４１を、バックアップの基準点を示す意味で「基準点カウンタ」と呼ぶ場合もある。
【００５３】
ここで、バックアップ装置２が保持する静止点カウンタ２４１には、当該対象の直前のバックアップ時点においてブロックストレージ装置１から取得した、当該対象と対応する静止点カウンタ１４１が設定される。
【００５４】
アプリケーション装置３は、ブロックストレージ装置１に対して、データの書き込み要求やデータの読み出し要求を行って、ブロックストレージ装置１にデータを入出力する装置である。
【００５５】
本実施形態において、ブロックストレージ装置１は、例えば、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ｉＳＣＳＩ、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）等のインタフェースを備えたＳＡＮストレージ装置であってよい。また、ブロックストレージ装置１は、例えば、ｉＳＣＳＩまたは独自のプロトコルで通信するソフトウェアを導入した汎用サーバであってもよい。また、ブロックストレージ装置１は、例えば、ＮＶＭ  Ｅｘｐｒｅｓｓまたは独自のプロトコルで通信するフラッシュストレージであってもよい。
【００５６】
また、バックアップ装置２は、例えば、バックアップ部２１とリストア部２２とを実装したソフトウェアを導入し、かつ、バックアップデータ記憶部２３および静止点カウンタ記憶部２４に相当する記憶装置を備えた、汎用サーバであってもよい。なお、バックアップ装置２は、物理サーバでも仮想サーバでもよい。また、バックアップデータ記憶部２３は、バックアップ装置２に接続した外部ストレージにより実現されてもよい。
【００５７】
また、アプリケーション装置３は、任意のサーバや、パーソナルコンピュータや、それらに備えられるＣＰＵ等の情報処理装置であってもよい。また、アプリケーション装置３は、例えば、ブロックストレージ装置１の記憶ユニット１１の中にファイルシステムを作成し、該ファイルシステムにアプリケーションのプログラムまたはデータのファイルを保存する汎用サーバであってもよい。なお、アプリケーション装置３は、物理サーバでも仮想サーバでもよい。また、アプリケーション装置３は、例えば、静止画または動画を記録するカメラなどのセンサデバイスであってもよい。
【００５８】
次に、本実施形態の動作を説明する。まず、ブロックストレージ装置１側の動作を簡単に説明する。
【００５９】
本実施形態のブロックストレージ装置１は、各記憶ユニット１１を一定の大きさの論理的なブロックに分割する。例えば、それぞれのブロックの大きさを３２ＫｉＢとしてもよい。ブロックを小さくすれば、バックアップ装置２において、差分バックアップによるデータ量の削減効果が高まるが、メモリ使用量は大きくなる。
【００６０】
ブロックストレージ装置１は、記憶ユニット１１が新たに作成されると、メタ情報管理部１４に、新しい記憶ユニット１１に対応する静止点カウンタ１４１と最終更新期間１４２とを追加し、それらの値を初期化する。本実施例では、静止点カウンタ１４１の初期値を１、それぞれのブロックの最終更新期間１４２の初期値を０とする。
【００６１】
図２は、本実施形態のブロックストレージ装置１の動作の一例を示すフローチャートである。図２は、ブロックストレージ装置１のデータ書き込み要求受け付け時の動作の例を示すフローチャートである。図２に示す例では、まず、データ入力部１２が、アプリケーション装置３からデータ書き込み要求を受け付ける（ステップＳ１０１）。
【００６２】
次に、データ入力部１２は、要求に応じて、ブロックにデータを書き込む（ステップＳ１０２）。なお、データの書き込み先のブロックは特に問わない。
【００６３】
データ入力部１２によるデータの書き込みが成功した場合（ステップＳ１０３のＹｅｓ）、最終更新期間更新部１６が、対応するブロックの最終更新期間１４２を更新する（ステップＳ１０４）。なお、書き込みが失敗した場合には（ステップＳ１０３のＮｏ）、ステップＳ１０４を行わずに、ステップＳ１０５に進む。
【００６４】
最後に、データ入力部１２が、書き込み結果を要求元に返送する（ステップＳ１０５）。
【００６５】
図３は、メタ情報管理部１４に保持される静止点カウンタ１４１および最終更新期間１４２の例を示す説明図である。なお、図３（ａ）が静止点カウンタ１４１の例を示す説明図であり、図３（ｂ）が最終更新期間１４２の例を示す説明図である。
【００６６】
ブロックストレージ装置１において、アプリケーション装置３からデータ入力部１２に書き込み要求があり、書き込みが成功すると、最終更新期間更新部１６は、対応するブロックの最終更新期間１４２を更新する。
【００６７】
図４は、最終更新期間１４２の更新後の例を示す説明図である。例えば、図３に示される初期状態で、ブロック番号３で特定されるブロックの中のデータが書き込みによって更新されたとき、最終更新期間更新部１６は、図４に示すように、当該ブロックに対応する最終更新期間１４２を、に静止点カウンタ１４１の値である１に設定する。
【００６８】
また、図５は、ブロックストレージ装置１の静止点検出時の動作の例を示すフローチャートである。図５に示す例では、まず、静止点検出部１７が、静止点を検出する（ステップＳ１１１）。
【００６９】
次に、静止点カウンタ更新部１８が、検出された静止点に対応する静止点カウンタ１４１を更新する（ステップＳ１１２）。
【００７０】
また、図６は、ブロックストレージ装置１のスナップショット要求受け付け時の動作の例を示すフローチャートである。図５に示す例では、まず、ブロックストレージ装置１が、スナップショット要求を受け付ける（ステップＳ１２１）。
【００７１】
次に、ブロックストレージ装置１の図示しないスナップショット機能部は、受け付けたスナップショット要求に応じて、各記憶ユニット１１のスナップショットを作成する（ステップＳ１２２）。これにより、各記憶ユニット１１のブロックデータは静止点が取られた状態となる。
【００７２】
ブロックストレージ装置１では、静止点がとられた状態となるステップＳ１２２の後、上記のステップＳ１１１〜ステップＳ１１２の動作が行われる。
【００７３】
なお、ステップＳ１２２でスナップショットを取る前に、ブロックストレージ装置１へのアクセスがフリーズされた場合には、スナップショットを取る前に、記憶ユニット１１に未記入のデータが書き込まれる。すなわち、上記のステップＳ１０１〜ステップＳ１０５の動作が行われる。
【００７４】
例えば、アプリケーション装置３が、ブロックストレージ装置１の記憶ユニット１１の中にファイルシステムを作成している場合、該ファイルシステムをフリーズすると、ファイルシステムへの新たな書き込み要求が保留され、記憶ユニット１１に未書き込みのデータが書き込まれ、記憶ユニット１１のデータは静止点がとられた状態となる。そして、ファイルシステムのフリーズを解除すると、書き込み要求の保留が解除され、記憶ユニット１１のデータは静止点がとられていない状態になる。なお、ファイルシステムのフリーズ機能は多くのファイルシステムが備えている。
【００７５】
図７は、静止点カウンタ１４１の更新後の例を示す説明図である。上記のスナップショットの作成により、静止点カウンタ１４１は、例えば、図７に示す状態に更新される。なお、本例では、記憶ユニット１１への未記入のデータがなかった場合の例を示しているが、未記入のデータがあった場合には、当該データが書き込まれたブロックに対応する最終更新期間１４２が、スナップショットを取る前の時点の静止点カウンタ１４１の値である１に設定される。
【００７６】
次に、バックアップ装置２の動作を説明する。図８〜図９は、バックアップ装置２のバックアップ動作の例を示すフローチャートである。
【００７７】
図８〜図９に示す例では、まず、静止点確保部２１１が、バックアップ対象の記憶ユニット１１の静止点をとる（確保する）。静止点をとる方法は、例えば、アプリケーション装置３のシャットダウンである。また、例えば、アプリケーション装置３からのファイルシステムのアンマウントである。また、例えば、アプリケーション装置３のファイルシステムをフリーズし、ブロックストレージ装置１に記憶ユニット１１のスナップショットを作成させ、アプリケーション装置３のファイルシステムのフリーズを解除する。
【００７８】
本例では、３つ目の方法を用いた例を説明する。すなわち、アプリケーション装置３のシャットダウンとファイルシステムのアンマウントが不要な、ファイルシステムを一時的にフリーズしてスナップショットを作成する方法を説明する。ファイルシステムをフリーズせずにバックアップすることも可能であるが、その場合、未書き込みのデータが反映されず一部のファイルをリストアできなくなる場合がある点で注意が必要である。
【００７９】
まず、静止点確保部２１１は、ブロックストレージ装置１へのアプリケーションレベルでのデータアクセスをフリーズする（ステップＳ２０１）。
【００８０】
例えば、静止点確保部２１１は、Ｓｅｃｕｒｅ  Ｓｈｅｌｌでアプリケーション装置３にログインし、ファイルシステムフリーズのためのコマンドを実行してもよい。
【００８１】
次に、静止点確保部２１１は、ブロックストレージ装置１にスナップショットを作成させる（ステップＳ２０２）。例えば、静止点確保部２１１は、Ｓｅｃｕｒｅ  Ｓｈｅｌｌでブロックストレージ装置１の管理インタフェースにログインし、スナップショット作成のためのコマンドを実行してもよい。また、例えば、静止点確保部２１１はブロックストレージ装置１のスナップショット作成のためのリモートプロシージャコールを実行してもよい。
【００８２】
次に、静止点確保部２１１は、ステップＳ２０１でフリーズさせたデータアクセスのフリーズ状態を解除する（ステップＳ２０３）。ファイルシステムをフリーズしている間は、ファイルシステムへの書き込みが保留されているため、なるべく早くフリーズを解除することが望ましい。
【００８３】
なお、アプリケーション装置３が、ブロックストレージ装置１の記憶ユニット１１の中にファイルシステムを作成していない場合は、ファイルシステムを介さずに、上記の動作を行えばよい。
【００８４】
次に、更新ブロック検出部２１２が、メタ情報提供部１５に要求を行い、静止点カウンタ１４１と最終更新期間１４２を受け取る（ステップＳ２０４）。例えば、更新ブロック検出部２１２は、ブロックストレージ装置１にメタ情報の読み出しを要求するためのＳＣＳＩコマンドを発行し、その応答として、ブロックストレージ装置１からメタ情報を含むデータを受け取ってもよい。また、例えば、更新ブロック検出部２１２は、Ｓｅｃｕｒｅ  Ｓｈｅｌｌでブロックストレージ装置１の管理インタフェースにログインし、メタ情報を出力するコマンドを実行して、該情報を得てもよい。また、例えば、更新ブロック検出部２１２はブロックストレージ装置１のメタ情報取得のためのリモートプロシージャコールを実行して、該情報を得てもよい。
【００８５】
次に、更新ブロック検出部２１２が、今回のバックアップ用に、ステップＳ２０４で取得した静止点カウンタ１４１を保存する（ステップＳ２０５）。更新ブロック検出部２１２は、例えば、静止点カウンタ記憶部２４に、取得した静止点カウンタ１４１を静止点カウンタ２４１として記憶すればよい。
【００８６】
なお、静止点カウンタ１４１のバックアップ先は、例えば、バックアップ装置２が内蔵するハードディスクドライブでなくてもよい。バックアップ先は、例えば、バックアップ装置２に接続した外部ストレージ装置であってもよい。
【００８７】
本例では、バックアップ装置２が内蔵するハードディスクドライブに作成したファイルシステムとしての静止点カウンタ記憶部２４に、１回のバックアップに１つのバックアップファイルを作成する例を示す。このとき、更新ブロック検出部２１２は、バックアップファイルのファイル名を記憶ユニット１１の識別ＩＤと静止点カウンタ１４１から決定してもよい。例えば、記憶ユニット１１の識別ＩＤが００１１１４ＦＢで、静止点カウンタ１４１が１のとき、バックアップファイルのファイル名を、例えば、００１１１４ＦＢ−００００１．ＢＡＫとする。なお、更新ブロック検出部２１２は、当該ステップでは、空のファイルを作成する。
【００８８】
次に、更新ブロック検出部２１２は、前回のバックアップに関する情報（例えば、上記のバックアップファイル）が存在するかを確認し（ステップＳ２０６）、存在しなければステップＳ２０７に進み、存在すればステップＳ２０８に進む。
【００８９】
ステップＳ２０７では、更新ブロック検出部２１２は、更新ブロックを求める際のバックアップの基準点を示す変数ｂに０を代入する。前回のバックアップに関する情報が存在しないため、今回が初回のバックアップである。本例では、初回のバックアップでは、書き込みがあったブロックのみをバックアップし、書き込みがなくブロックの初期状態であるすべてゼロのブロックはバックアップしない。すべてゼロのブロックをバックアップしないことで、ブロックストレージ装置１からの読み出し処理を省略でき、また、データを保存するための容量を節約できる。
【００９０】
前回のバックアップに関する情報が存在すれば、更新ブロック検出部２１２は、変数ｂに前回バックアップ時の静止点カウンタ２４１を代入する（ステップＳ２０８）。
【００９１】
次に、スナップショット記憶部１１１に記憶されているスナップショットのそれぞれの対象ブロックについて、ステップＳ２１０〜Ｓ２１２の処理を繰り返す（ループＬ２０９）。
【００９２】
すなわち、更新ブロック検出部２１２は、まず、変数ａに、ステップＳ２０４で取得した、対象ブロックの最終更新期間を代入する（ステップＳ２１０）。
【００９３】
次に、変数ａと変数ｂの値を比較し（ステップＳ２１１）、ａが大きければステップＳ２１２に進み、ｂが大きいまたは等しい場合はステップＳ２１２を実行せずにループＬ２０９を継続する。
【００９４】
一方、ａが大きければ、対象ブロックは、前回バックアップ時からデータの更新のあった更新ブロックであるとして、ブロックストレージ装置１の該スナップショットから対象ブロックのブロックデータをバックアップする（ステップＳ２１２）。本例では、バックアップファイルに更新ブロックのブロックデータを差分データとして書き込むことにより行う。
【００９５】
図９は、バックアップファイルの記録内容の例を示す説明図である。バックアップファイルに追記（記録）する内容の例として、図１０に示すように、更新ブロックとされたブロック番号とブロックのデータの組が挙げられる。
【００９６】
更新ブロック検出部２１２は、ループＬ２０９を繰り返し、ａがｂより大きいとき、バックアップファイルにブロック番号とブロックのデータの組を追記する。
【００９７】
ループＬ２０９が終了すると、静止点確保部２１１は、ブロックストレージ装置１に、バックアップ対象とした記憶ユニット１１のスナップショットを削除させる（ステップＳ２１３）。ブロックストレージ装置１がＣｏｐｙ−Ｏｎ−Ｗｒｉｔｅ方式のスナップショット方式を採用している場合、今回のバックアップの開始時に作成したスナップショットを削除することで記憶ユニット１１の書き込み性能が向上することが期待される。しかし、スナップショットを削除することは本発明を実施するうえで必須ではない。例えば、スナップショットのデータをブロックストレージ装置１の内部で短時間でリストアできるようにするため、スナップショットを削除せず残しておいてもよい。
【００９８】
なお、上記でバックアップしたデータをリストアするためには、リストア部２２が古いバックアップファイルから順に読みだして記憶ユニット１１に書き込めばよい。差分バックアップのデータを基に、リストアするリストア動作については、広く知られているため、詳細な説明を省略する。
【００９９】
以上のように、本実施形態のバックアップ装置２は、前回バックアップ時の静止点カウンタと、新たに取得したそれぞれのブロックの最終更新期間とを比較する単純なアルゴリズムで更新されたブロックを特定できる。このため、バックアップ装置２は、ブロックストレージ装置１の他の内部データやスナップショット／レプリケーション機能を気にする必要がなく、差分バックアップを短期間および低コストで実装できる。
【０１００】
また、本実施形態によれば、バックアップ装置２が初期バックアップ時においても、全データを読み出してバックアップと比較する必要がない。また、スナップショットからバックアップする場合に、バックアップ完了後にスナップショットを削除できる。このため、ブロックストレージ装置１の性能向上や、バックアップ装置２のデータ容量の増加防止や、ブロックストレージ装置１とバックアップ装置２との間の転送負荷の低減ができる。  
【０１０１】
さらに、最終更新日時を保存する場合に比べて、時刻の同期が不要で、かつブロックストレージ装置１側のメモリ使用量も少なくてすむ。
【０１０２】
すなわち、ブロックストレージ装置１が最終更新日時を保持する場合、一般的なバックアップ頻度と製品寿命から算出すると、１ブロックあたり３２ビットが必要であると考えられるのに対し、本発明の最終更新期間１４２は、１ブロックあたり１６ビット程度で足りる。
【０１０３】
また、ブロックストレージ装置の利用者は短時間でバックアップでき、かつ、バックアップ時の負荷が低いバックアップ装置を低コストで入手できるようになり、ブロックストレージ装置の外部にバックアップをとることによって、内部にバックアップをとるよりもデータを失う可能性の低いシステムを構築できる。
【０１０４】
なお、上記の最終更新期間１４２のビット数は、次のような想定の下で算出した。すなわち、一般的に、バックアップの多くは、業務時間外にとられ、毎日夜間または毎週週末が設定されるケースが多い。これに加えて不定期のメンテナンスでバックアップを取るとしても、数回／日の頻度でバックアップを取れれば十分だと考えられる。また、ストレージ製品の一般的な保守期間を考えて、２０年間数字があふれなければ十分と考えられる。このように想定したケースによれば、２０年間×３６５日×３回＝２１９，０００回のバックアップに対応できればよく、処理効率を考慮して１６ビット（６５，５３５まで）あれば、十分であると考えられる。
【０１０５】
なお、後述する変形例では、１ブロックあたり３２ビットや、場合によっては６４ビットも想定されうるが、最終更新時刻を比較する方法や、スナップショット回数などを直に参照する方法と比べて、複雑な制御や時刻同期の必要がなく、単純な比較によるアルゴリズムのみで実現できたり、データの整合性を保証できるといった効果は依然得られる。すなわち、簡易なロジックで、かつ処理負荷（データの読み出し量が少なくて済む）および／またはリソース負荷（少ないメモリ使用量）が低減できる。
【０１０６】
変形例．
なお、上記の実施形態の構成および方法の少なくとも一部は、増分バックアップにも応用できる。増分バックアップをする場合は、前回バックアップ時の静止点カウンタ２４１に代えて、増分バックアップの基点となるバックアップの静止点カウンタ２４１を用いて、更新されたブロックを検出すればよい。
【０１０７】
また、スナップショットからのみ差分バックアップをする場合、スナップショットの識別ＩＤを静止点カウンタ１４１として代用してもよい。例えば、スナップショットの識別ＩＤがスナップショットをとるたびに１，２，３…と順に増加するとき、当該識別ＩＤを静止点カウンタ１４１として使用することができる。本発明では、このようなスナップショットの識別ＩＤも、静止点カウンタ１４１の一態様とみなす。
【０１０８】
また、静止点カウンタ１４１は、一定時間ごとに増加（または減少）するカウンタであってもよい。例えば、１０分間隔で増加するタイマー値を静止点カウンタ１４１としてもよい。なお、その場合、静止点カウンタ１４１を更新する処理は、データの書き換えが起きない状態で行うのが好ましい。また、その場合、バックアップ装置２は、前回バックアップしたときの静止点カウンタ２４１より大きいブロックに加えて、該静止点カウンタ２４１と等しいブロックもバックアップするようにする。本発明では、このようなカウンタも、静止点カウンタ１４１の一態様とみなす。
【０１０９】
また、静止点カウンタ１４１は、一定量の書き込みごとに増加（または減少）するカウンタであってもよい。例えば、３２ＭｉＢ書き込むごとに１増加するカウンタ値を静止点カウンタ１４１としてもよい。その場合も、バックアップ装置２は、前回バックアップしたときの静止点カウンタ２４１より大きいブロックに加えて、該静止点カウンタ２４１と等しいブロックもバックアップするようにする。本発明では、このようなカウンタも、静止点カウンタ１４１の一態様とみなす。
【０１１０】
また、静止点カウンタ１４１は、１回の書き込みごとに増加（または減少）するカウンタであってもよい。なお、本例の場合、静止点をとったときにのみ増加（または減少）するカウンタを用いるのに比べて、長いビット数が必要となるが、簡単なアルゴリズムで差分バックアップを実現する効果は得られる。本発明では、このようなカウンタも、静止点カウンタ１４１の一態様とみなす。
【０１１１】
次に、本発明の実施形態にかかるコンピュータの構成例を示す。図１１は、本発明の実施形態にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ１０００は、ＣＰＵ１００１と、主記憶装置１００２と、補助記憶装置１００３と、インタフェース１００４と、ディスプレイ装置１００５と、入力デバイス１００６とを備える。
【０１１２】
上述のブロックストレージ装置やバックアップ装置やアプリケーション装置は、例えば、コンピュータ１０００に実装されてもよい。その場合、各装置の動作は、プログラムの形式で補助記憶装置１００３に記憶されていてもよい。ＣＰＵ１００１は、プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、そのプログラムに従って上記の実施形態における所定の処理を実施する。
【０１１３】
補助記憶装置１００３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータは１０００がそのプログラムを主記憶装置１００２に展開し、上記の実施形態における所定の処理を実行してもよい。
【０１１４】
また、プログラムは、各実施形態における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置１００３に既に記憶されている他のプログラムとの組み合わせで上記の実施形態における所定の処理を実現する差分プログラムであってもよい。
【０１１５】
インタフェース１００４は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置１００５は、ユーザに情報を提示する。また、入力デバイス１００６は、ユーザからの情報の入力を受け付ける。
【０１１６】
また、実施形態における処理内容によっては、コンピュータ１０００の一部の要素は省略可能である。例えば、装置がユーザに情報を提示しないのであれば、ディスプレイ装置１００５は省略可能である。
【０１１７】
また、各装置の各構成要素の一部または全部は、汎用または専用の回路（Circuitry）、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０１１８】
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０１１９】
次に、本発明のデータ管理システムの概要を説明する。図１２は、本発明のデータ管理システムの概要を示すブロック図である。図１２に示すデータ管理システム６００は、ストレージ装置６１と、バックアップ装置６２とを備える。
【０１２０】
ストレージ装置６１（例えば、ブロックストレージ装置１）は、所定のブロック単位で記憶領域を管理する１つ以上の記憶ユニット６１１と、静止点カウンタ更新部６１２と、最終更新期間更新部６１３と、静止点情報提供部６１４とを備える。
【０１２１】
静止点カウンタ更新部６１２（例えば、静止点カウンタ更新部１８）は、自装置において記憶ユニットに記憶されるデータが静止している状態で所定のタイミングである静止点を検出すると、自装置が保持している静止点カウンタ６１５の値を更新する。
【０１２２】
最終更新期間更新部６１３（例えば、最終更新期間更新部１６）は、記憶ユニットが有するブロック単位の複数のデータ領域であるブロックのいずれかに対してデータが書き込まれると、ブロックの各々に対応づけて自装置が保持している最終更新期間６１６のうち当該ブロックに対応する最終更新期間６１６を、静止点カウンタ６１５の値に更新する。
【０１２３】
静止点情報提供部６１４（例えば、メタ情報提供部１５）は、バックアップ装置からの要求に応じて、静止点カウンタ６１５と最終更新期間６１６とを出力する。
【０１２４】
また、バックアップ装置６２は、静止点情報取得部６２１と、更新ブロック検出部６２２とを備える。
【０１２５】
静止点情報取得部６２１（更新ブロック検出部２１２の一部）は、バックアップを行う際に、静止点カウンタ６１５と、バックアップ対象とされた記憶ユニットの最終更新期間６１６とを取得する。
【０１２６】
更新ブロック検出部６２２（更新ブロック検出部２１２の一部）取得された最終更新期間６１６と、自装置が保持しているブロックの各々についてのバックアップの基準点を示す基準点カウンタ６２３とに基づいて、バックアップ対象とされた記憶ユニットが有するブロックの中から前回のバックアップ時からデータの更新があったブロックである更新ブロックを検出するとともに、取得された静止点カウンタ６１５を更新ブロックと特定されたブロックの今回のバックアップの基準点カウンタ６２３として保持する。
【０１２７】
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１２８】
本発明は、ブロックベースでデータを記憶する記憶ユニットに対するバックアップ用途であれば、好適に適用可能である。
【符号の説明】
【０１２９】
５００  データ管理システム
１  ブロックストレージ装置
１１  記憶ユニット
１１１  スナップショット記憶部
１２  データ入力部
１３  データ出力部
１４  メタ情報管理部
１４１  静止点カウンタ
１４２  最終更新期間
１５  メタ情報提供部
１６  最終更新期間更新部
１７  静止点検出部
１８  静止点カウンタ更新部
２  バックアップ装置
２１  バックアップ部
２１１  静止点確保部
２１２  更新ブロック検出部
２２  リストア部
２３  バックアップデータ記憶部
２３１  差分データ
２４  静止点カウンタ記憶部
２４１  静止点カウンタ
３  アプリケーション装置
１０００  コンピュータ
１００１  ＣＰＵ
１００２  主記憶装置
１００３  補助記憶装置
１００４  インタフェース
１００５  ディスプレイ装置
１００６  入力デバイス
６１  ストレージ装置
６１１  記憶ユニット
６１２  静止点カウンタ更新部
６１３  最終更新期間更新部
６１４  静止点情報提供部
６１５  静止点カウンタ
６１６  最終更新期間
６２  バックアップ装置
６２１  静止点情報取得部
６２２  更新ブロック検出部
６２３  基準点カウンタ
【図１】
2018173701.tif 000003
【図２】
2018173701.tif 000004
【図３】
2018173701.tif 000005
【図４】
2018173701.tif 000006
【図５】
2018173701.tif 000007
【図６】
2018173701.tif 000008
【図７】
2018173701.tif 000009
【図８】
2018173701.tif 000010
【図９】
2018173701.tif 000011
【図１０】
2018173701.tif 000012
【図１１】
2018173701.tif 000013
【図１２】
2018173701.tif 000014