本実施形態のストレージシステムは、外部から入力される更新要素により随時更新される、ストレージ装置の記憶内容(マスタデータ)を、定期的にバックアップする。前記ストレージ装置は、前期に行うマスタ要素の更新については、前記更新要素により更新されたマスタ要素(被更新要素)を廃棄する。ここで、前期は、前回のバックアップタイミングの後、今回のバックアップタイミングに先立つ所定のタイミング(静止点タイミング)に至る期間である。そして、前記ストレージ装置は、静止点タイミングから今回のバックアップタイミングまでの期間である後期には、前記被更新要素を、前記マスタデータとは別に保持する。そして、前記ストレージ装置は、今回のバックアップに係る差分データに含める要素を、前期に更新された要素位置については前記マスタデータから、後期に更新された要素位置については、前述の別に保持した被更新要素から、後述の方法により選択する。そして、前記ストレージ装置は、前記差分データをバックアップ装置に送付し、保持させる。
このようにして、前記ストレージシステムは、前記バックアップ装置に、前記静止点タイミングにおける前記マスタデータを漏れなく保持させる。
前記マスタデータに異常が生じた場合に、前記バックアップ装置が保持するバックアップデータから復元し、復元後のデータが有効に利用できるようにするためには、前記バックアップデータが、どの時点の前記マスタデータであるかを知る必要がある。その理由は、そのバックアップデータがどの時点の前記マスタデータであるかが分からないと、復元後のデータに含めるべき更新要素を特定し、当該データに追加することにより当該データを利用することが困難になるためである。
その点、前記ストレージシステムは、バックアップ装置が保持するデータが、直近の静止点タイミングにおけるものであることが分かっているので、復元後のデータの利用が容易である。
また、前記ストレージ装置は、前期において更新されたデータを廃棄し、前記マスタデータと別に保持しないため、そのための記憶容量が必要ない。また、前記ストレージ装置は、背景技術の項で説明したストレージ装置が行っていた更新データの前記マスタデータとは別の保持も行わない。
さらに、前記ストレージ装置が後期に保持する被更新データは、後期に更新が生じた一部のデータ位置に限られる。
そのため、前記ストレージシステムは、比較的短時間、データ量が比較的小さい記憶領域を確保するだけで、復元後のデータの利用が容易なバックアップデータを保持することを可能にする。
[構成と動作]
図2は、本実施形態のストレージシステムの例であるストレージシステム301aの構成を表す概念図である。
ストレージシステム301aは、ストレージ装置101aと、バックアップ装置201aとを備える。
ストレージ装置101aは、メインサイトのストレージ装置である。バックアップ装置201aは、リモートサイトのバックアップ用のストレージ装置である。
ストレージ装置101aは、処理部111と、ストレージ部116aとを備える。
ストレージ部116aは、処理部111から送付された情報を、処理部111の指示に従い格納する。ストレージ部116aは、また、処理部111が指示する情報を、処理部111に送る。
ストレージ部116aは、制御プログラム部141と、マスタデータ部121と、被更新データ部126aと、更新ビットマップ部131aとを備える。ただし、ストレージ部116aは、マスタデータ部121と、被更新データ部126aと、更新ビットマップ部131aを常に備えなくても構わない。その場合は、ストレージ部116aは、マスタデータ部121、被更新データ部126a及び更新ビットマップ部131aの各々を、処理部111の指示により生成する。
制御プログラム部141は、処理部111が、以下に説明する処理を行うための制御プログラムを保持する。当該制御プログラムは、処理部111が、以下に説明する処理を行う前に、制御プログラム部141に、予め、格納されている。
ストレージ部116aは、処理部111から指示があった場合には、マスタデータ部121を生成する。当該生成は、マスタデータを格納する領域の、ストレージ部116aにおける確保である。前記マスタデータは、複数のマスタ要素から構成される。各マスタ要素は、そのマスタ要素の前記マスタデータにおける位置を表す位置情報を含む。マスタデータ部121は、ストレージ部116aにより生成された直後は、各マスタ要素における位置情報に対応するデータ内容が空の前記マスタデータを保持する。
ストレージ部116aは、処理部111から更新要素が送付され、前記更新要素に含まれる位置と同じ位置のマスタ要素が前記マスタデータにない場合には、その位置に前記更新要素を新たに格納する。
ストレージ部116aは、処理部111から更新要素が送付され、前記更新要素に含まれる位置と同じ位置のマスタ要素が前記マスタデータにある場合には、その位置のマスタ要素を、前記更新要素により更新する(置き換える)。
ストレージ部116aは、処理部111から指示があった場合には、被更新データ部126aを生成する。当該生成は、被更新データ部126aが保持する予定の被更新データを格納し得る領域の、ストレージ部116aにおける確保である。
前記被更新データは、複数の被更新要素から構成される。各被更新要素は、マスタデータのマスタ要素が更新要素により更新された場合の、その更新されたマスタ要素である。各被更新要素は、その被更新要素の前記マスタデータにおける位置を表す位置情報を含む。
被更新データ部126aは、ストレージ部116aにより生成された直後は、各被更新要素における位置情報に対応するデータ内容が空の前記被更新データを保持する。
ストレージ部116aは、処理部111から指示により、被更新データ部126aに被更新要素を格納する。
ストレージ部116aは、処理部111の指示があった場合には、被更新データ部126aを削除する。その場合は、被更新データ部126aに格納された被更新データは削除される。
ストレージ部116aは、処理部111から指示があった場合には、更新ビットマップ部131aを生成する。当該生成は、更新ビットマップ部131aが保持する格納する領域の、ストレージ部116aにおける確保である。
前記更新ビットマップは、対象とする間隔(後述の静止点タイミングの間隔)において、前記マスタデータを構成する各マスタ要素が更新されたか否かを表すマップ情報である。
前記更新ビットマップにおいては、更新された前記マスタ要素に含まれる位置情報が表す位置のビットは、例えば、1である。その場合、更新が行われていない位置のビットは0である。以下、更新が行われた前記マスタ要素に含まれる位置情報が表す位置のビットが1である場合について説明する。
ストレージ部116aは、処理部111からの指示があった場合には、更新ビットマップ部131aに更新ビットマップを生成する。生成直後のビットマップにおいては、各位置のビットは0である。
ストレージ部116aは、原則として、新旧二つの更新ビットマップを同時に保持する。
ストレージ部116aは、処理部111から指示があった場合には、直近の更新ビットマップにおける指示された位置のビットを1に更新する。ただし、ストレージ部116aは、当該ビットが既に1の場合は、そのビットを維持する。
ストレージ部116aは、また、処理部111からの指示があった場合には、指定された更新ビットマップを削除する。
なお、ストレージ部116aは、図示しない半導体メモリと記録部とから構成される。前記記録部は、例えば、ハードディスク装置である。前記半導体メモリには、例えば、キャッシュデータや、処理部111を高速で動作させるプログラムが格納される。また、前記記録部には、前記マスタデータや前記更新データ部などのデータ量の大きいデータが格納される。更新ビットマップ部を、前記半導体メモリに格納するか前記記録部に格納するかについては任意である。
処理部111は、初期のマスタデータを格納する際には、まず、ストレージ部116aに、マスタデータ部121を生成させる。そして、処理部111は、サーバ等の外部から入力された初期マスタデータに係る更新要素のマスタデータ部121への格納を、ストレージ部116aに行わせる。
そして、マスタデータ部121に初期のマスタデータを格納した後に、外部より処理部111へ更新要素が送付されたとする。
その場合、処理部111は、当該更新要素に含まれる位置情報が表すマスタデータの位置のマスタ要素の、その更新要素により更新を、ストレージ部116aに行わせる。
処理部111は、その更新要素により更新されたマスタ要素である被更新要素の処理を、次に説明する静止点タイミング以前か、当該静止点タイミングより後かにより変える。
前記静止点タイミングは、処理部111が、バックアップ装置201aへ送信するバックアップデータを選択する際に選択に係る母集合とする静止点イメージを確定するタイミングである。前記静止点イメージは、静止点タイミングにおける前記マスタデータである。
前記静止点タイミングは、バックアップ間隔において一回設定される。ここで、前記バックアップ間隔は、あるバックアップデータのバックアップ装置201aへの送信の開始から、次のバックアップデータのバックアップ装置201aへの送信の開始までの間隔である。前記静止点タイミングは、前記バックアップ間隔の起点等に同期していても構わない。
前記バックアップ間隔の起点より後であり前記静止点タイミング以前の期間である第一期間においては、処理部111は、前記被更新要素を廃棄する。
一方、前記静止点タイミングより後でそのバックアップ期間の終点以前の期間である第二期間においては、処理部111は、前記被更新要素の、生成された被更新データ部126aへの格納を、ストレージ部116aに行わせる。その際に被更新データ部126aがない場合には、処理部111は、ストレージ部116aに、被更新データ部126aを生成させる。
処理部111は、その被更新要素に含まれる位置情報と同じ位置情報の被更新要素である旧被更新要素が被更新データ部126aに既に格納されている場合には、旧更新要素の新更新要素による置き換えを、ストレージ部116aに行わせない。被更新データ部126aが保持する要素を、静止点タイミングにおいてマスタデータに含まれていたものに限定するためである。
処理部111は、前記第二期間が終了すると、ストレージ部116aに、被更新データ部126aを削除させる。
処理部111は、前記更新要素により前記マスタ要素の更新を行った場合には、直近の前記更新ビットマップの該当箇所へ1のビットの格納を、ストレージ部116aに行わせる。その際に、直近の前記更新ビットマップがない場合には、前記更新ビットマップを、ストレージ部116aに生成させる。その際に、更新ビットマップ部131aがない場合には、更新ビットマップ部131aを、ストレージ部116aに生成させる。そして、処理部111は、生成した更新用ビットマップの該当位置のビットの1への更新をストレージ部116aに行わせる。
処理部111は、前記第二期間が終了し、ストレージ部116aに一つ前の更新ビットマップがある場合には、その更新ビットマップを削除させる。一つ前の更新ビットマップは、二つ前の静止点タイミングから一つ前の直近の静止点タイミングまでの間に行われた更新の有無を表すものである。その際に、処理部111は、直近の更新ビットマップを、ストレージ部116aに削除させない。直近の更新ビットマップは、直近の静止点タイミングより後に更新されたマスタデータの位置を表すものである。
処理部111は、初期のマスタデータのマスタデータ部121への格納をストレージ部116aに行わせた場合には、そのマスタデータの各マスタ要素を、初回バックアップデータとして、バックアップ装置201aに送信する。当該送信は、バックアップ装置201aに、初回バックアップデータを格納させるためのものである。
処理部111は、バックアップ装置201aに送信する予定のバックアップデータに含める要素を選択する際には、更新ビットマップ部131aが保持する前述の新旧二つの更新ビットマップを参照する。
そして、処理部111は、第一更新ビットマップにおいて0が格納されている位置については、バックアップ装置201aへ送信する予定のバックアップデータに含めない。
処理部111は、第一更新ビットマップにおいて1が第二更新ビットマップにおいて0が各々格納されている位置については、前記バックアップデータに、マスタデータ部121が保持するマスタデータのマスタ要素を組み込む。
処理部111は、第一更新ビットマップにおいて1が第二更新ビットマップにおいて1が各々格納されている位置については、被更新データ部126aが保持する被更新要素を前記バックアップデータに含める。
一方、バックアップ装置201aは、処理部211と、ストレージ部216aとを備える。
ストレージ部216aは、制御プログラム部241と、初回バックアップ部221と、増分バックアップ部226と、増分ビットマップ部231aとを備える。ただし、これらは、ストレージ部216aは、初回バックアップ部221、増分バックアップ部226及び増分ビットマップ部231aの各々を常に備えなくても構わない。その場合、ストレージ部216aは、処理部211の指示により、これらを生成する。
制御プログラム部241は、処理部211が、以下に説明する処理を行うための制御プログラムを保持する。当該制御プログラムは、処理部211が、以下に説明する処理を行う前に、制御プログラム部241に、予め、格納されている。
初回バックアップ部221は、ストレージ装置101aから送付された初期バックアップデータを格納する部分である。ストレージ部216aは、処理部211から前記初期バックデータの送付があった場合は、当該初期マスタデータを、初回バックアップ部221に格納する。
増分バックアップ部226は、ストレージ装置101aから送付された、ストレージ装置101aにおいて前述の初期マスタデータから更新された要素を格納する部分である。ストレージ部216aは、処理部211から前記要素の送付があった場合は、その要素を、増分バックアップ部226に格納する。ただし、ストレージ部216aは、その要素に含まれる位置情報と同じ位置情報を含む旧要素が増分バックアップ部226に既に格納されている場合には、その旧要素を新要素により置き換える。
増分ビットマップ部231aは、増分ビットマップを保持する。増分ビットマップは、増分バックアップ部226に格納された各要素が含むマスタデータにおける位置を表すマップ情報である。ストレージ部216aは、前記要素を増分バックアップ部226に格納する際に、その要素に含まれる位置情報が表す増分ビットマップにおける位置のビットを1に更新する。ただし、ストレージ部216aは、その位置のビットが既に1である場合には、そのビットを維持する。
なお、ストレージ部216aは、図示しない半導体メモリと記録部とから構成される。前記記録部は、例えば、ハードディスク装置である。前記半導体メモリには、例えば、キャッシュデータや、処理部211を高速で動作させるためのプログラムが格納される。また、前記記録部には、前記初期マスタデータや、前記増分バックアップが格納される。増分ビットマップを、前記半導体メモリと前記記録部のいずれに格納するかについては任意である。
バックアップ装置201aは、初期バックアップデータにおける、増分ビットマップにおいて1が格納されている位置の要素を、増分バックアップ部226に格納された要素で置き換える。それにより、バックアップ装置201aは、直近の静止点タイミングでストレージ部116aに格納されていたマスタデータである静止点イメージを復元し得る。
次に、図2に表すストレージシステム301aが行うバックアップ動作の具体例を説明する。
図3は、ストレージ部116a及び216aの各々が保持するデータを表すイメージ図である。
ストレージ部116aは、マスタデータ151と、被更新データ156と、更新ビットマップ161とを保持する。マスタデータ151は、図2に表すマスタデータ部121が格納する前記マスタデータである。被更新データ156は、被更新データ部126aが格納する前記被更新データである。更新ビットマップ161は、更新ビットマップ部131が格納する前記更新ビットマップである。
ただし、ストレージ部116aは、マスタデータ151、被更新データ156及び更新ビットマップ161aの各々を常に保持するわけではない。これらは、処理部111からの指示により、ストレージ部116aが生成する。
ストレージ部216aは、初期マスタデータ251と増分バックアップ256と増分ビットマップ261とを保持する。初期マスタデータ251は、初回バックアップ部221が保持する前記初回バックアップである。増分バックアップ256は、増分バックアップ部226が保持する前記増分バックアップである。増分ビットマップ261は、増分ビットマップ部231aが保持する前記増分ビットマップである。
ただし、ストレージ部216aは、初期マスタデータ251、増分バックアップ256及び増分ビットマップ261の各々を常に保持するわけではない。これらは、処理部211からの指示により、ストレージ部216aが生成する。
図4は、ストレージ部116a及び216aが格納する各要素を表すイメージ図である。図4は、図3に表すマスタデータ151が初期のマスタデータである状態を表す。
なお、図4乃至図8においては、説明を簡単にするために、初期のマスタデータ151が、マスタ要素である要素A0、B0、C0及びD0からなるものとする。
図4に表す状態では、初期マスタデータ251にはダミーの要素である無効要素が含まれている。
その後、図2に表す処理部111は、マスタデータ151のマスタ要素である要素A0乃至D0をストレージ部216aに送信する。
すると、ストレージ部216aの処理部は、処理部111から送付された要素A0乃至D0を、初期マスタデータ251の各要素とする。
そして、処理部111は、外部から、更新要素である要素A1の送付を受けたとする。
すると、処理部111は、ストレージ部116aに、要素A1により、マスタデータ151のマスタ要素である要素A0を更新させる。
処理部111は、また、ストレージ部116aに、マスタデータ151の一番目のマスタ要素である要素A0を要素A1により更新させる。
そして、処理部111は、ストレージ部116aに、初期マスタデータを静止点イメージとする静止点イメージに係る更新ビットマップである更新ビットマップ161を生成させる。そして、処理部111は、ストレージ部116aに、更新ビットマップ161の一番目のビットを1にさせる。
その後、処理部111は、更新要素である要素B1の送付を受けたとする。
すると、処理部111は、ストレージ部116aに、マスタデータ151の一番目のマスタ要素である要素B0を要素B1により更新させる。
そして、処理部111は、ストレージ部116aに、更新ビットマップ161の二番目のビットを1にさせる。
この段階の、各要素の状態を図5に表す。
そして、処理部111は、一回目の静止点タイミングを迎え、一回目の静止点イメージを確定する。
その際に、処理部111は、被更新データ156の生成を、ストレージ部116aに行わせる。この段階での被更新データ156の各被更新要素は空である。
その際に、処理部111は、二つ目の更新ビットマップである更新ビットマップ166の生成を、ストレージ部116aに行わせる。この段階での更新ビットマップ166の各ビットは0である。
図6は、この段階での各要素の状態を表す。
その後、処理部111は、更新要素である要素A2及びC1の送付を受けたとする。
すると、処理部111は、マスタデータ151のマスタ要素である要素A1の更新である要素A2による更新をストレージ部116aに行わせる。
そして、処理部111は、更新されたマスタ要素である要素A1を被更新要素として、被更新データ156に含ませる。
そして、処理部111は、更新ビットマップ166の一番目のビットを1にする。
処理部111は、また、マスタデータ151の要素C0を更新要素である要素C1により更新する。
そして、処理部111は、更新されたマスタ要素である要素C0を被更新要素として、被更新データ156に含ませる。
そして、処理部111は、更新ビットマップ166の三番目のビットを1にする。
図7は、この段階での各要素の状態を表す。
その後、図1に表す処理部111は、その後、初回に続き二回目のバックアップ開始のタイミングを迎える。
処理部111は、当該バックアップを行う際に、バックアップ装置201aに送付するバックアップデータの作成を行う。
その際に、処理部111は、一回前の静止点イメージに係る更新ビットマップである更新ビットマップ161を参照する。
そして、処理部111は、更新ビットマップ161において、1のビットが格納されている位置の要素である一番目及び二番目の要素のみを、次に送信する予定のバックアップデータに組み込む。
その際に、処理部111は、直近の静止点イメージに係る更新ビットマップである更新ビットマップ166において1が格納されている一番目の要素については、被更新データ156の被更新要素である要素A1を前記バックアップデータに組み込む。
一方、処理部111は、更新ビットマップ166において0が格納されている二番目の要素については、マスタデータ151のマスタ要素である要素B1を前記バックアップデータに組み込む。
そして、作成したバックアップデータを、バックアップ装置201aへ送信する。
その後、処理部111は、被更新データ156の削除を、ストレージ部116aに行わせる。
また、処理部111は、更新ビットマップ161の削除を、ストレージ部116aに行わせる。
バックアップ装置201aの処理部211は、ストレージ部216aに、処理部111から送付を受けたバックアップデータに含まれる要素A1及びB1を組み込んだ増分バックアップ256を生成させる。
そして、処理部211は、一番目及び二番目のビットを1にした増分ビットマップ261を生成させる。
その後、処理部111は、更新要素である要素D1の送付を受けたとする。
処理部111は、当該送付を受け、ストレージ部116aに、マスタデータ151のマスタ要素である要素D0を要素D1により更新を行わせる。
そして、処理部111は、ストレージ部116aに、更新ビットマップ166の四番目のビットを1に更新させる。
図8は、この段階での各要素の状態を表す。
三回目以降のバックアップ動作も同様にして行われる(処理フロー例の項参照)。
[処理フロー例]
図9及び図10は、図2に表すストレージ装置101aの処理部111が行う、外部から入力された更新要素に係る処理の処理フロー例を表す概念図である。当該外部は、例えば、ストレージ装置101aとの間で入出力処理を行うサーバである。また、当該処理は、図2に表す制御プログラム部141が保持する制御プログラムによるものである。
処理フロー例の説明に際しては、その適用例として、図3乃至図8に表す具体例を適宜参照する。
処理部111は、例えば、前記外部からの開始情報の入力により、図9に表す処理を開始する。
そして、処理部111は、S101の処理として、図2に表すマスタデータ部121に格納するマスタデータのマスタ要素数Pの入力が、外部よりされたかについての判定を行う。ここで、当該外部は、ストレージ装置101aに最初にマスタデータを格納する場合には、ストレージ装置101aに対しマスタ要素数Pを送付することを前提としている。上記具体例においては、マスタ要素数Pは、図4のマスタデータ151に示されるように要素A0乃至D0の4つである。
次に、処理部111は、S102の処理として、図2に表すストレージ部116aに、マスタデータ部121を生成させる。当該生成は、例えば、マスタ要素数Pのマスタ要素をすべて格納し得るストレージ部116aの領域の確保である。
そして、処理部111は、S103の処理として、前記外部から更新要素を受けたかについての判定を行う。
処理部111は、S103の処理による判定結果がyesの場合は、S104の処理を行う。
一方、処理部111は、S103の処理による判定結果がnoの場合は、S103の処理を再度行う。
処理部111は、S104の処理を行う場合は、同処理として、S103の処理により送付を受けたことを判定した更新要素を、S102の処理により生成したマスタデータ部121に格納する。前述のように、更新要素の格納位置は更新要素に含まれている。
そして、処理部111は、マスタデータ部121に格納した更新要素数がマスタ要素数Pに等しいかについての判定を行う。マスタデータ部121に格納した更新要素数がマスタ要素数Pに等しいことは、マスタデータ部121に、初期状態におけるすべてのマスタ要素が格納されていることを意味する。上記具体例においては、初期状態におけるすべてのマスタ要素が格納されているマスタデータは、図4に表すマスタデータ151である。
処理部111は、S105の処理による判定結果がyesの場合は、S106の処理を行う。
一方、処理部111は、S105の処理による判定結果がnoの場合は、S103の処理を再度行う。
処理部111は、S106の処理を行う場合は、同処理として、サーバ等の外部より更新要素の送付を受けたかについての判定を行う。
処理部111は、S106の処理による判定結果がyesの場合は、S108の処理を行う。
一方、処理部111は、S106の処理による判定結果がnoの場合は、S106の処理を再度行う。
処理部111は、S108の処理を行う場合は、同処理として、前記静止点タイミングを経過したかについての判定を行う。前記静止点タイミングは、前述のように、前述のバックアップ間隔の各々に一回定められるものである。処理部111は、当該判定を、例えば、所定の時刻を経過したかを判定することにより行う。ここで、処理部111は時計を利用できる環境にあることを前提とする。
処理部111は、S108の処理による判定結果がyesの場合は、図10に表すS109の処理を行う。
一方、処理部111は、S108の処理による判定結果がnoの場合は、S108−2の処理を行う。
処理部111は、S108−2の処理を行う場合は、同処理として、S106の処理により送付を受けたことを判定した更新要素により、マスタデータの該当するマスタ要素を上書きする。その際、上書きされたマスタ要素は廃棄される。上記具体例においては、図5に表すマスタデータ151において、同処理により、マスタ要素である要素A0及びB0が更新要素である要素A1及びB1により上書きされている。その際に、同処理により、上書きされたマスタ要素である要素A0及びB0は、廃棄されている。
そして、処理部111は、S108−3の処理として、ストレージ部116aが、更新ビットマップ部131aを保持しているかについての判定を行う。
処理部111は、S108−3の処理による判定結果がyesの場合は、S108−5の処理を行う。
一方、処理部111は、S108−3の処理による判定結果がnoの場合は、S108−4の処理を行う。
処理部111は、S108−4の処理を行う場合は、同処理として、ストレージ部116aに、更新ビットマップ部131aを生成させる。
そして、処理部111は、S108−5の処理として、ストレージ部116aに、前回のバックアップデータの送信完了以降におけるマスタ要素の更新箇所を表すための最新の更新ビットマップをストレージ部116aが格納しているかについての判定を行う。当該最新の更新ビットマップは、直近の静止点タイミングから次の静止点タイミングまでの間にマスタデータの更新があった場合に、当該更新に係る更新箇所を記録するものである。
処理部111は、S108−5の処理による判定結果がnoの場合は、S108−6の処理を行う。
一方、処理部111は、S108−3の処理による判定結果がyesの場合は、S108−7の処理を行う。
処理部111は、S108−6の処理を行う場合は、同処理として、最新の更新ビットマップの生成をストレージ部116aに行わせる。上記具体例においては、図5に表すストレージ部116aは、同処理により、生成した最新の更新ビットマップである更新ビットマップ161を保持している。また、図6に表すストレージ部116aは、同処理により生成した最新の更新ビットマップである更新ビットマップ166を保持している。
そして、処理部111は、S108−7の処理として、ストレージ部116aに、直近の更新ビットマップの、S108−2の処理により上書きした位置に1のビットを格納させる。ただし、処理部111は、同位置に1のビットが既に格納されている場合は、ストレージ部116aに、そのビットを維持させる。上記具体例においては、図5に表す更新ビットマップ161には、同処理により、1番目及び2番目のビットが1になっている。
そして、処理部111は、S115の処理として、直近のバックアップ間隔が終了したかについての判定を行う。ここで、バックアップ間隔は、あるバックアップデータの処理部111からバックアップ装置201aへの送信の開始から、次のバックアップデータの処理部111からバックアップ装置201aへの送信の開始までの期間である。ここで、前記送信準備は、送信する要素の特定と、特定した要素の送信用バッファへの格納である。また、各バックアップ間隔には、一つの静止点タイミングが存在する。バックアップ間隔は、前記静止点タイミングの間隔と連動していても構わない。バックアップ処理の処理フロー例は図11を参照して後述する。
処理部111は、S115の処理による判定結果がyesの場合は、S116の処理を行う。
一方、処理部111は、S115の処理による判定結果がnoの場合は、S119の処理を行う。
処理部111は、S116の処理を行う場合は、同処理として、被更新データ部126aの削除を、ストレージ部116aに行わせる。これに伴い、被更新データ部126aが保持する被更新データも削除される。
そして、処理部111は、S117の処理として、一回前に生成された更新ビットマップの削除を、ストレージ部116aに行わせる。上記具体例においては、図8に表すストレージ部116aは、図7に表すストレージ部116aが保持している更新ビットマップ161を削除している。
その際に、処理部111は、直近に生成された更新ビットマップ部の削除は行われない。ただし、処理部111は、一回前に生成された更新ビットマップがない場合には、更新ビットマップ部を削除しない。上記具体例においては、図8に表すストレージ部116aは、図7に表すストレージ部116aが保持している更新ビットマップ166を削除せずに保持している。
そして、処理部111は、S119の処理として、図9に表す処理を終了するかについての判定を行う。処理部111は、当該判定を、例えば、外部からの終了情報の入力の有無を判定することにより行う。
処理部111は、S119の処理による判定結果がyesの場合は、図9及び図10に表す処理を終了する。
一方、処理部111は、S119の処理による判定結果がnoの場合は、S106の処理を再度行う。
処理部111は、図10に表すS109の処理を行う場合は、同処理として、
処理部111は、S109の処理を行う場合は、同処理として、ストレージ部116aに被更新データ部126aが生成されているかについての判定を行う。
処理部111は、S109の処理による判定結果がyesの場合は、S111の処理を行う。
一方、処理部111は、S109の処理による判定結果がnoの場合は、S110の処理を行う。
処理部111は、S110の処理を行う場合は、同処理として、ストレージ部116aに被更新データ部126aを生成させる。当該生成は、例えば、ストレージ部116aにおける、被更新データを格納し得るデータ領域の確保である。上記具体例においては、図6に表すストレージ部116aは、生成した被更新データ156を、同処理により生成した被更新データ部126aに格納している。
そして、処理部111は、S111の処理として、S108の処理により入力があったことを判定した更新要素の被更新データ部126aへの格納をストレージ部116aに行わせる。上記具体例においては、図7に表すストレージ部116aは、更新要素である要素A2及びC1により更新されたマスタ要素である要素A1及びC0を、被更新要素として、被更新データ部126aに格納している被更新データ156に含めている。
そして、処理部111は、S112の処理として、前回のバックアップデータの送信完了以降におけるマスタ要素の更新箇所を表すための最新の更新ビットマップをストレージ部116aが格納しているかについての判定を行う。
処理部111は、S112の処理による判定結果がnoの場合は、S113の処理を行う。
一方、処理部111は、S112の処理による判定結果がyesの場合は、S114の処理を行う。
処理部111は、S113の処理を行う場合は、同処理として、最新の更新ビットマップの生成をストレージ部116aに行わせる。処理部111は、その際に、更新ビットマップ部131aがストレージ部116aにない場合には、更新ビットマップ部131aを、ストレージ部116aに生成させる。
そして、処理部111は、S114の処理として、最新の更新ビットマップの該当位置に1を格納する更新を、ストレージ部116aに行わせる。当該当位置は、S108の処理により入力があったことを判定した更新要素に含まれる位置情報が表す位置である。上記具体例においては、図7に表すストレージ部116aは、最新の更新ビットマップである更新ビットマップ166の1番目及び3番目の位置に1のビットを格納している。
そして、処理部111は、図9に表すS115の処理を行う。
図11は、図2に表す処理部111が行う、バックアップデータの生成及び送信に係る処理の処理フロー例を表す概念図である。当該処理は、図2に表す制御プログラム部141が保持する制御プログラムにより処理部111が実行するものである。
処理部111は、例えば、外部からの開始情報の入力により、図11に表す処理を開始する。
そして、処理部111は、S201の処理として、マスタ要素数Pの特定を行う。ここで、処理部111は、図9に表すS101の処理で受信したことを判定したマスタ要素数Pをメモリ等に保持していることを前提としている。
そして、処理部111は、S202の処理として、初回のバックアップのためのバックアップデータのバックアップ装置201aへの送信を行うかについての判定を行う。処理部111は、当該判定を、例えば、図9に表すS105の処理による判定結果がyesになったことを判定することにより行う。S105の処理による判定結果がyesになったことは、マスタデータ部121への初期のマスタデータの格納が完了したことを表す。
処理部111は、S202の処理による判定結果がyesの場合は、S203の処理を行う。
一方、処理部111は、S202の処理による判定結果がnoの場合は、S202の処理を再度行う。
処理部111は、S203の処理を行う場合は、同処理として、S201の処理により特定したマスタ要素数Pのバックアップ装置201aへの送信を行う。
そして、処理部111は、S204の処理として、マスタ要素位置を表す番号である番号nに1を代入する。
そして、処理部111は、S205の処理として、第nマスタ要素は更新されているかを判定する。処理部111は、当該判定を、更新ビットマップ部131aが保持する更新ビットマップにおけるn番目のビットが1であるかを判定することにより行う。
処理部111は、S205の処理による判定結果がyesの場合は、S206の処理を行う。
一方、処理部111は、S205の処理による判定結果がnoの場合は、S207の処理を行う。
処理部111は、S206の処理を行う場合は、同処理として、被更新データ部126aが保持する被更新データのn番目の被更新要素を、バックアップ装置201aに送信するための送信用バッファに格納する。
処理部111は、S207の処理を行う場合は、同処理として、マスタデータ部121が保持するマスタデータのn番目のマスタ要素を、バックアップ装置201aに送信するための送信用バッファに格納する。
そして、処理部111は、S208の処理として、番号nを一つ増やす。
そして、処理部111は、S209の処理として、番号nがマスタ要素数Pに1を加算した数かについて判定を行う。番号nがマスタ要素数Pに1を加算した数であることは、送信用バッファへの初回バックアップ用のマスタ要素の格納が完了したことを表す。
処理部111は、S209の処理による判定結果がyesの場合は、S210の処理を行う。
一方、処理部111は、S209の処理による判定結果がnoの場合は、S205の処理を再度行う。
処理部111は、S210の処理を行う場合は、同処理として、S206の処理又はS207の処理により送信用バッファに格納したバックアップ情報を、バックアップ装置201aへ送信する。
そして、処理部111は、S211の処理として、次のバックアップ開始のタイミングになったかについての判定を行う。処理部111は、当該判定を、例えば、バックアップを行うべきとして予め設定された時刻になったかを判定することにより行う。当該時刻は、前述の静止点タイミングと連動していても構わない。
そして、処理部111は、S212の処理として、前述の番号nに1を代入する。
そして、処理部111は、S213の処理として、第nマスタ要素は、一回前のバックアップ間隔に更新されたかについての判定を行う。バックアップ間隔は、前述のように、処理部111がバックアップデータのバックアップ装置201aへの送信の開始から、次のバックアップデータのバックアップ装置201aへの送信の開始までの期間である。ここで、前記送信準備は、送信する要素の特定と、特定した要素の送信用バッファへの格納である。
処理部111は、前記判定を、一回前のバックアップ間隔において生成された更新ビットマップにおいて、番号nの位置のビットが1であるかを判定することにより行う。初回バックアップの次のバックアップ時には、S213の処理による判定結果をyesにする。初回バックアップ時に、すべてのマスタ要素が更新(新規格納)されているためである。
処理部111は、S213の処理による判定結果がyesの場合は、S214の処理を行う。
一方、処理部111は、S213の処理による判定結果がnoの場合は、S217の処理を行う。
処理部111は、S214の処理を行う場合は、同処理として、第nマスタ要素は今回のバックアップ間隔に更新されたかについての判定を行う。処理部は、当該判定を、今回のバックアップ間隔において生成された更新ビットマップにおけるn番目の位置のビットが1であるかを判定することにより行う。
処理部111は、S214の処理による判定結果がyesの場合は、S215の処理を行う。
一方、処理部111は、S214の処理による判定結果がnoの場合は、S216の処理を行う。
処理部111は、S215の処理を行う場合は、同処理として、n番目の被更新要素を、バックアップ装置201aへ送信するための送信用バッファに格納する。
処理部111は、S216の処理を行う場合は、同処理として、n番目のマスタ要素を、バックアップ装置201aへ送信するための送信用バッファに格納する。
そして、処理部111は、S217の処理として、番号nを一つ増やす。
そして、処理部111は、S218の処理として、番号nがマスタ要素数Pに1を加算した数に等しいかについての判定を行う。番号nがマスタ要素数Pに1を加算した数に等しいことは、直近のS211の処理によりyesを判定して以降のバックアップデータの送信準備が完了したことを意味する。
処理部111は、S218の処理による判定結果がyesの場合は、S219の処理を行う。
一方、処理部111は、S218の処理による判定結果がnoの場合は、S213の処理を再度行う。
上記具体例においては、こうして、図7のタイミングと図8のタイミングとの間に、処理部111は、図7に表す被更新データ156の要素A1を前記送信用バッファに格納している。要素A1は、S213の処理にる判定結果とS215の処理による判定結果が共にyesの要素である。また、同間に、処理部111は、S213の処理にる判定結果がyesでありS215の処理による判定結果がnoである、図7に表すマスタデータ151の要素B1を前記送信用バッファに格納している。
処理部111は、S219の処理を行う場合は、同処理として、S215の処理又はS216の処理により送信用バッファに格納したバックアップ情報を、バックアップ装置201aへ送信する。図7のタイミングと図8のタイミングとの間に、処理部111は、同処理により、バックアップ情報を、バックアップ装置201aへ送信している。
そして、処理部111は、S220の処理として、図11に表す処理を終了するかについての判定を行う。処理部111は、当該判定を、例えば、外部からの終了情報の入力の有無を判定することにより行う。
処理部111は、S220の処理による判定結果がyesの場合は、図11に表す処理を終了する。
一方、処理部111は、S220の処理による判定結果がnoの場合は、S211の処理を再度行う。
図12は、図2に表すバックアップ装置201aの処理部211が行うバックアップ処理の処理フロー例を表す概念図である。当該バックアップ処理は、図2に表す制御プログラム部241が保持する制御プログラムにより処理部211が実行するものである。
処理部211は、例えば、外部からの開始情報の入力により、図12に表す処理を開始する。
そして、処理部211は、S301の処理として、ストレージ装置101aからマスタ要素数Pを受信したかについての判定を行う。マスタ要素数Pは、図11に表すS203の処理により、ストレージ装置101aから送付されるものである。
処理部211は、S301の処理による判定結果がyesの場合は、S302の処理を行う。
一方、処理部211は、S301の処理による判定結果がnoの場合は、S301の処理を再度行う。
処理部211は、S302の処理を行う場合は、同処理として、図2に表す初回バックアップ部221、増分バックアップ部226及び増分ビットマップ部231を、ストレージ部116aに生成させる。
処理部211は、初回バックアップ部及び増分バックアップ部の各々の生成を、例えば、S301の処理により受信したことを判定したマスタ要素数Pを格納し得る領域を、ストレージ部116aに確保させることにより行わせる。
処理部211は、また、更新ビットマップ部131aの生成を、例えば、マスタ要素数の1又は0のデータを終了できる領域をストレージ部116aに確保することにより行う。
更新ビットマップ部131aはデータ量が小さい。そのため、処理部211は、更新ビットマップ部131aを、ストレージ部116aが備える図示しないメモリに生成しても構わない。更新ビットマップ部131aを前記メモリに生成することにより、更新ビットマップ部131aへの、より高速なアクセスが可能になる。
そして、処理部211は、S303の処理として、ストレージ装置101aからの完了通知が未受信であるかについての判定を行う。当該完了通知は、図11に表すS210の処理が完了した際にストレージ装置101aから送付されるものである。
処理部211は、S303の処理による判定結果がyesの場合は、S304の処理を行う。上記具体例においては、図4のタイミングと図5のタイミングとの間に、処理部211は、同処理によりS303の処理による判定結果としてyesを導出している。
一方、処理部211は、S303の処理による判定結果がnoの場合は、S306の処理を行う。
処理部211は、S304の処理を行う場合は、同処理として、ストレージ装置101aから初期マスタデータのマスタ要素の送付を受けたかについての判定を行う。当該マスタ要素は、ストレージ装置101aが、図11に表すS207の処理により、前記バックアップデータに格納するものである。
処理部211は、S304の処理による判定結果がyesの場合は、S305の処理を行う。
一方、処理部211は、S304の処理による判定結果がnoの場合は、S304の処理を再度行う。
処理部211は、S305の処理を行う場合は、同処理として、S304の処理により送付を受けたことを判定したマスタ要素を、S302の処理により生成した初回バックアップ部221に格納する。上記具体例においては、図5に表すストレージ部216aは、同処理により要素A0乃至D0を初期マスタデータ251に格納し、保持している。
そして、処理部211は、S303の処理を再度行う。
処理部211は、S306の処理を行う場合は、同処理として、ストレージ装置101aからバックアップ情報の送付を受けたかについての判定を行う。当該バックアップ情報は、図11に表すS219の処理により、ストレージ装置101aから送信されるものである。
処理部211は、S306の処理による判定結果がyesの場合は、S307の処理を行う。
一方、処理部211は、S306の処理による判定結果がnoの場合は、S306の処理を再度行う。
処理部211は、S307の処理を行う場合は、同処理として、S306の処理により送付を受けたことを判定したバックアップ情報に含まれる各要素の、増分バックアップ部226aへの格納を、ストレージ部216aに行わせる。このとき、処理部211は、送付を受けたことを判定した要素である新要素に含まれる位置と同じ位置を含む現要素が増分バックアップ部226aにある場合は、その現要素を、前記新要素で置き換えさせる。
上記具体例においては、図8に表すストレージ部216aは、同処理により、前記バックアップデータに含まれていた要素A1及びB1を、増分バックアップ部226aに格納された増分バックアップ256に含めている。
そして、処理部211は、S308の処理として、ストレージ部216aに、増分ビットマップ部231に格納された増分ビットマップにおける、前記新要素に含まれる位置のビットを1にさせる。ただし、処理部211は、当該位置のビットが既に1である場合には1のビットを維持させる。
上記具体例においては、図8に表すストレージ部216aは、同処理により、増分ビットマップ261の1番目及び2番目に1のビットを格納している。
処理部211は、初回バックアップの増分ビットマップ部において1が格納されている位置を、増分バックアップの要素で置き換えることにより、直近の静止点イメージのバックアップを生成し得るようになる。
そして、処理部211は、S309の処理として、図12に表す処理を終了するかについての判定を行う。処理部211は、当該判定を、例えば、外部からの終了情報の入力の有無を判定することにより行う。
処理部111は、S309の処理による判定結果がyesの場合は、図12に表す処理を終了する。
一方、処理部111は、S309の処理による判定結果がnoの場合は、S306の処理を再度行う。
[効果]
本実施形態のストレージ装置は、バックアップ装置へ送信するバックアップ要素を静止点タイミング以前に更新されたマスタ要素については、マスタデータに含まれるマスタ要素から選択する。ここで、前記バックアップ要素は、バックアップ装置に送信するバックアップ情報に含まれる要素である。また、前記静止点タイミングは、処理部111が、バックアップ装置201aへ送信するバックアップデータを選択するための、前記マスタデータの静止点イメージを確定するタイミングである。
なお、静止点タイミングで静止点イメージを確定するのは、バックアップされたデータが、どの時点までのマスタデータのコピーであるか、その時刻を確定するためである。当該時刻を確定することにより、マスタデータが壊れた場合にデータの復元が可能になる。
一方、前記ストレージ装置は、前記バックアップ要素を、前記静止点タイミングより後に更新されたマスタ要素については、別途保持しておいた更新前のマスタ要素である被マスタ要素から選択する。
前記ストレージ装置は、各バックアップ間隔における前記静止点タイミング以前の期間は、前記被更新要素を保持する必要がないため、当該保持に必要なデータ領域を確保する必要もない。前記ストレージ装置は、各バックアップ間隔における前記静止点タイミングより後の期間は、前記被更新要素を保持するが、保持する要素数は、背景技術の項で説明した更新データの要素数より少ない。その理由は、保持する要素が、バックアップ間隔のすべての期間において更新された要素のすべてではなく、前記静止点タイミングより後の期間におけるものだからである。
前記ストレージ装置は、原則、二つの更新ビットマップを保持する。しかしながら、更新ビットマップは、マスタデータのマスタ要素数のビットから構成されるものであるので、ごく小さいデータである。従い、更新ビットマップの数の増加は、確保すべきデータ領域の確保には、ほとんど影響しない。
以上により、前記ストレージシステムは、背景技術の項で説明したストレージシステムと比較して、バックアップ処理に必要なデータ領域の削減を可能にする。
図1を参照して背景技術の項で説明したストレージ装置は、更新要素の更新データ部への格納のために処理部とストレージ部との間で行われる入出力に係る処理負荷が多く発生する。
また、当該処理部は、更新要素が入力されるたびに、前記マスタデータから更新データへの更新要素のコピー動作が発生する。そのため、特にマスタデータ部の記録再生動作の動作負荷が増大する。
前記処理負荷及び前記動作負荷は、前記処理部がストレージ部との間で行う、バックアップ動作以外の、通常の入出力処理等の処理を遅延させ得る。
これに対し、本実施形態のストレージ装置は、被更新データ部を常に保持するわけではないので、前記処理負荷及び前記動作負荷を軽減し得る。そのため、本実施形態のストレージ装置は、前記処理負荷及び前記動作負荷の観点からも、バックアップ動作以外の処理の遅延を軽減し得る。
図13は、実施形態の通信装置の最小限の構成である通信装置101axの構成を表すブロック図である。
通信装置101axは、前回のタイミングから今回の前記タイミングまでに更新された、マスタデータにおける位置について、前記今回の前記タイミング、における前記マスタデータの要素である静止要素を、バックアップ装置へ送信する。前記タイミングは、バックアップ間隔の各々に一回設定されるものである。
前記静止要素は、前記開始から前記タイミングまでの間に前記更新が行われた前記要素は、前記マスタデータに格納されている。そのため、通信装置101axは、前記開始から前記タイミングまでの間は、前記静止要素を前記マスタデータとは別に保持する必要がない。そのため、通信装置101axは、その間は、当該保持に必要なデータ領域を確保する必要もない。また、通信装置101axは、前記タイミング前記第二期間は、前記静止要素を保持する必要があるが、保持する要素数は、背景技術の項で説明した更新データの要素数と同等以下である。
そのため、通信装置101axは、背景技術の項で説明したメインサイトのストレージ装置と比較して、バックアップ処理に必要なデータ領域の削減を可能にする。
そのため、通信装置101axは、前記構成により、[発明の効果]の項に記載した効果を奏する。
なお、図13に表す通信装置101axは、例えば、図2に表すストレージ装置101aである。また、前記要素は、例えば、前述のマスタ要素である。また、前記タイミングは、例えば、前述の静止点タイミングである。また、前記静止要素は、例えば、前述の静止点イメージに含まれる前記要素である。また、前記マスタデータは、例えば、図2に表すマスタデータ部121が格納するマスタデータである。また、前記バックアップ装置は、例えば、図2に表すバックアップ装置201aである。
以上、本発明の各実施形態を説明したが、本発明は、前記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で更なる変形、置換、調整を加えることができる。例えば、各図面に示した要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
また、前記の実施形態の一部又は全部は、以下の付記のようにも記述され得るが、以下には限られない。
(付記1)
前回の、バックアップ間隔の各々に一回設定されるタイミング、から今回の前記タイミングまでに更新された、マスタデータにおける位置について、前記今回の前記タイミング、における前記マスタデータの要素である静止要素を、バックアップ装置へ送信する、通信装置。
(付記2)
前記今回の前記タイミング以降に前記更新がなかった前記位置については、前記静止要素を前記マスタデータから選択する第一選択を行い、前記今回の前記タイミングより後に前記更新があった前記位置については、別途保持する、前記更新が行われる前の前記要素である被更新要素からの前記選択である第二選択を行う、
付記1に記載された通信装置。
(付記3)
ある前記バックアップ間隔に係る前記タイミングからその前記バックアップ間隔の終了までの間に前記更新が行われた場合に、その前記更新に係る前記被更新要素を保持する、付記2に記載された通信装置。
(付記4)
前記被更新要素を格納する被更新要素格納領域を、前記タイミングの後に生成する、付記3に記載された通信装置。
(付記5)
前記終了の際に前記被更新要素格納領域を削除する、付記4に記載された通信装置。
(付記6)
前記タイミングから次の前記タイミングまでの間に前記更新が行われた前記位置を表すマップ情報を備える、付記3乃至付記5のうちのいずれか一に記載された通信装置。
(付記7)
前記マップ情報が前記タイミングより後に生成される、付記6に記載された通信装置。
(付記8)
前記前回の前記タイミングが含まれる前記バックアップ間隔に生成された前記マップ情報を、前記今回の前記タイミングを含む前記バックアップ間隔に保持する、付記6又は付記7に記載された通信装置。
(付記9)
前記マップ情報により、前記第一選択及び前記第二選択を行う、付記6乃至付記8のうちのいずれか一に記載された通信装置。
(付記10)
前記終了の際に一つ前の前記バックアップ間隔に生成された前記マップ情報を削除する、付記6乃至付記9のうちのいずれか一に記載された通信装置。
(付記11)
前記マスタデータを格納するマスタデータ格納領域をさらに備える、付記6乃至付記10のうちのいずれか一に記載された通信装置。
(付記12)
前記更新を行う更新部をさらに備える、付記1乃至付記11のうちのいずれか一に記載された通信装置。
(付記13)
前記バックアップ間隔は、前記送信の開始から次の前記送信の開始までの期間である、付記1乃至付記12のうちのいずれか一に記載された通信装置。
(付記14)
付記1乃至付記13のうちのいずれか一に記載された通信装置、から送付された前記静止要素を格納する、バックアップ装置。
(付記15)
初期の前記マスタデータである初期マスタデータを格納する初期マスタデータ格納部と、前記静止要素を格納する増分バックアップ部と、を備える、付記14に記載されたバックアップ装置。
(付記16)
前記静止要素が、直近の前記タイミングにおける前記マスタデータの前記初期マスタデータと異なる部分である、付記15に記載されたバックアップ装置。
(付記17)
前記静止要素の各々に対応する前記位置を表す第二のマップ情報をさらに備える、付記14乃至付記16のうちのいずれか一に記載されたバックアップ装置。
(付記18)
付記1乃至付記13のうちのいずれか一に記載された通信装置と前記バックアップ装置とを備える、バックアップシステム。
(付記19)
付記14乃至付記17のうちのいずれか一に記載されたバックアップ装置と前記通信装置とを備える、バックアップシステム。
(付記20)
前回の、バックアップ間隔に一回設定されるタイミング、から今回の前記タイミングまでに更新された、マスタデータにおける位置について、前記今回の前記タイミング、における前記マスタデータの要素である静止要素を、バックアップ装置へ送信する、バックアップ方法。
(付記21)
さらに、送付された前記静止要素を格納する、付記20に記載されたバックアップ方法。
(付記22)
前回の、バックアップ間隔に一回設定されるタイミング、から今回の前記タイミングまでに更新された、マスタデータにおける位置について、前記今回の前記タイミング、における前記マスタデータの要素である静止要素を、バックアップ装置へ送信する処理、をコンピュータに実行させるバックアッププログラム。
(付記23)
さらに、送付された前記静止要素を格納する処理をコンピュータに実行させる処理をさらに行う、付記22に記載されたバックアッププログラム。