(57)【要約】【課題】バックアップ手順の手間を少なくする。【解決手段】ＣＭ２は、生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ２３上にバックアップデータ格納先として生成されたデータプール領域２３１から、バックアップ元ボリュームの全体のデータを格納するフルバックアップ領域２３１ａと差分データを格納する世代別バックアップ領域２３１ｂとを生成するデータプール領域管理部２２１と、バックアップ指示を受け付けると、論理ボリュームの全体のデータをフルバックアップ領域２３１ａに格納し、格納した後に、論理ボリュームに書き込まれたデータを世代別バックアップ領域２３１ｂに格納するバックアップ制御部と、を有する。【選択図】図２
2020123219.tif 000002
【特許請求の範囲】
【請求項１】
生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ上にバックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と差分データを格納する差分データ格納プール領域とを生成するプール領域管理部と、
バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納し、格納した後に、前記論理ボリュームに書き込まれたデータを前記差分データ格納プール領域に格納するデータ格納部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記データ格納部は、
前記バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納する第１のデータ格納部と、
前記論理ボリュームに対して書き込み要求があったとき、前記書き込み要求があったデータを前記論理ボリュームに書き込み、前記書き込み要求の要求元に前記書き込み要求に対する応答を通知し、前記書き込み要求があったデータを前記差分データ格納プール領域に格納する第２のデータ格納部と、
を有することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
ストレージ制御装置と、
記憶装置と、を有するストレージシステムであって、
前記ストレージ制御装置は、
生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ上にバックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と差分データを格納する差分データ格納プール領域とを生成するプール領域管理部と、
バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納し、格納した後に、前記論理ボリュームに書き込まれたデータを前記差分データ格納プール領域に格納するデータ格納部と、
を有することを特徴とするストレージシステム。
【請求項４】
生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ上にバックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と差分データを格納する差分データ格納プール領域とを生成し、
バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納し、格納した後に、前記論理ボリュームに書き込まれたデータを前記差分データ格納プール領域に格納する、
処理をコンピュータに実行させるバックアップ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置などに関する。
【背景技術】
【０００２】
ストレージ装置におけるソースボリュームをバックアップする手法として、スナップショット型のバックアップ（ＯＰＣ：One  Point  Copy）が知られている。ＯＰＣとは、バックアップ対象となるデータについて所定時点におけるデータであるスナップショットを作成するものである。すなわち、ＯＰＣを実行するストレージ装置は、ユーザからＯＰＣ指示を受け取ると、当該ＯＰＣ指示を受けた時点におけるソースボリュームの全データをコピーしスナップショットとして格納することにより、ソースボリュームの全体のバックアップを行う。
【０００３】
ＯＰＣの拡張機能として、ＳｎａｐＯＰＣ（Snapshot  One  Point  Copy）やＳｎａｐＯＰＣ＋が知られている。ＳｎａｐＯＰＣ＋とは、バックアップボリュームを世代毎に作成し、ソースボリュームの更新があった場合に、更新対象箇所の更新前のデータ（旧データ）を、対応する世代のバックアップボリュームにコピーする。ＳｎａｐＯｐｃ＋は、コピーオンライト型のスナップショットとも呼ばれる。すなわち、ＳｎａｐＯＰＣ＋では、世代別バックアップボリュームが世代毎に作成され、各世代別バックアップボリュームに対し各世代間の差分データのみがコピーされる。
【０００４】
ここで、ＯＰＣとＳｎａｐＯＰＣ＋を用いたバックアップ制御の動作の参考例を、図１３Ａおよび図１３Ｂを参照して説明する。図１３Ａおよび図１３Ｂは、バックアップ制御の動作の参考例を示す図である。なお、図１３Ａおよび図１３Ｂでは、２つのソースボリューム（バックアップ対象ボリューム）Ａ，Ｂをそれぞれフルバックアップボリュームと２世代分の差分バックアップボリュームとへバックアップを行うものとする。
【０００５】
図１３Ａに示すように、バックアップ制御を行うストレージ装置は、ユーザからソースボリュームＡに対するバックアップボリュームの生成指示を受け付けると、既にＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）が作成されたコピー先側にソースボリュームＡに対する、フルバックアップ用ボリュームと２世代分の差分バックアップボリュームを生成する（＜１＞）。
【０００６】
ストレージ装置は、ユーザからソースボリュームＢに対するバックアップボリュームの生成指示を受け付けると、既にＲＡＩＤが作成されたコピー先側にソースボリュームＢに対する、フルバックアップ用ボリュームと２世代分の差分バックアップボリュームを生成する（＜２＞）。
【０００７】
ストレージ装置は、ユーザからソースボリュームＡに対するフルバックアップ指示（ＯＰＣ指示）を受け付けると、ソースボリュームＡの全体のバックアップ（フルバックアップ）を開始する（＜３＞）。
【０００８】
同様に、ストレージ装置は、ユーザからソースボリュームＢに対するフルバックアップ指示（ＯＰＣ指示）を受け付けると、ソースボリュームＢの全体のバックアップ（フルバックアップ）を開始する（＜４＞）。
【０００９】
図１３Ｂに示すように、ソースボリュームＡのフルバックアップが終了した後、ストレージ装置は、ユーザからソースボリュームＡに対する１世代目のバックアップ（差分バックアップ）指示を受け付けると、ソースボリュームＡの更新対象箇所における１世代目のバックアップを開始する（＜５＞）。
【００１０】
そして、ストレージ装置は、ホスト装置から書込Ｉ／Ｏ要求（＜５．０＞）を受け付けると、以下の処理を行う。ここでは、ソースボリュームＡのデータａがデータｂに更新される場合、ストレージ装置は、ＳｎａｐＯＰＣ＋セッションを開始し、更新対象箇所における更新前のデータ（差分データ）ａを１世代目の差分バックアップボリュームにコピーする（＜５．１＞）。そして、ストレージ装置は、ソースボリュームＡに対する書き込みを許可し、ソースボリュームＡのデータａをデータｂに書き換える（＜５．２＞）。そして、ストレージ装置は、書込Ｉ／Ｏに対する応答をホスト装置に返却する（＜５．３＞）。
【００１１】
同様に、ソースボリュームＢのフルバックアップが終了した後、ストレージ装置は、ユーザからソースボリュームＢに対する１世代目のバックアップ（差分バックアップ）指示を受け付けると、ソースボリュームＢの更新対象箇所における１世代目のバックアップを開始する（＜６＞）。
【００１２】
そして、世代切替タイミングで、ストレージ装置は、ユーザからソースボリュームＡに対する２世代目のバックアップ（差分バックアップ）指示を受け付けると、ソースボリュームＡの更新対象箇所における２世代目のバックアップを開始する（＜７＞）。
【００１３】
同様に、世代切替タイミングで、ストレージ装置は、ユーザからソースボリュームＢに対する２世代目のバックアップ（差分バックアップ）指示を受け付けると、ソースボリュームＢの更新対象箇所における２世代目のバックアップを開始する（＜８＞）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１４−１３７７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、従来のＯＰＣとＳｎａｐＯＰＣ＋を用いたバックアップ制御では、バックアップ手順に手間がかかるという問題がある。すなわち、かかるバックアップ制御では、ユーザ指示により、ソースボリュームに対するバックアップ用ボリュームを生成したり、フルバックアップを開始したり、世代のバックアップを開始したりするので、バックアップ手順に手間がかかる。対象のソースボリュームが複数存在する場合には、さらにバックアップ手順に手間がかかってしまう。
【００１６】
１つの側面では、本発明は、バックアップ手順の手間を少なくすることを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示するストレージ制御装置は、１つの態様において、生成指示を受け付けると、複数の論理ボリュームのバックアップを管理すべく、バックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と差分データを格納する差分データ格納プール領域とを生成するプール領域管理部と、格納指示を受け付けると、前記複数の論理ボリュームのそれぞれの全体のデータを前記フルバックアップデータプール領域に格納し、格納後に、前記複数の論理ボリュームに書き込まれたデータを前記差分データ格納プール領域に格納するデータ格納部と、を有する。
【発明の効果】
【００１８】
本願の開示するシステムの１つの態様によれば、バックアップ手順の手間を少なくすることができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例に係るストレージ装置のハードウェア構成の一例を示す図である。
【図２】図２は、実施例に係るストレージ装置に含まれるＣＭの機能構成を示すブロック図である。
【図３】図３は、実施例に係るデータプール管理テーブルのデータ構造の一例を示す図である。
【図４】図４は、実施例に係るデータプール世代管理テーブルのデータ構造の一例を示す図である。
【図５】図５は、実施例に係るフルバックアップの動作の一例を示す図である。
【図６】図６は、実施例に係る差分バックアップの動作の一例を示す図である。
【図７】図７は、実施例に係るバックアップ制御処理のメインのフローチャートの一例を示す図である。
【図８】図８は、データプール領域生成処理のフローチャートの一例を示す図である。
【図９】図９は、ホスト装置からの書込Ｉ／Ｏ要求時の差分バックアップ処理のフローチャートの一例を示す図である。
【図１０】図１０は、データプール領域生成完了時の各種テーブルの一例を示す図である。
【図１１】図１１は、フルバックアップ完了時の各種テーブルの一例を示す図である。
【図１２】図１２は、バックアップ対象ボリュームの領域に書き込みがあった後の各種テーブルの一例を示す図である。
【図１３Ａ】図１３Ａは、バックアップ制御の動作の参考例を示す図（１）である。
【図１３Ｂ】図１３Ｂは、バックアップ制御の動作の参考例を示す図（２）である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示するストレージ制御装置、ストレージシステムおよびバックアップ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００２１】
［ストレージ装置のハードウェア構成］
図１は、実施例に係るストレージ装置のハードウェア構成の一例を示す図である。図１に示すように、ストレージ装置１は、ホスト装置９と接続する。ストレージ装置１は、２組のＣＭ２および各ＣＭ２に接続される各ディスク３を備える。なお、実施例に係るストレージ装置１では、記憶装置としてディスク（ＨＤＤ：Hard  Disk  Drive）３が用いられているが、ＳＳＤ（Solid  State  Device）などの記憶装置が用いられても良い。２組のＣＭ２は、ストレージ制御装置の一例である。ストレージ装置１は、ストレージシステムの一例である。
【００２２】
各ＣＭ（Controller  Module）２は、ストレージ装置１における資源の管理を行う。各ＣＭ２によって管理される資源は、例えば、ディスク３、後述するＣＡ２１のほかメモリ２３、ＤＩ２４やバックアップ制御を実施するＣＰＵ２２などである。また、各ＣＭ２は、ホスト装置９や他のＣＭ２からの要求に応じて、ディスク３に対する各種処理（データ書込処理，データ更新処理，データ読出処理，バックアップの際のデータコピー処理など）を行う。また、各ＣＭ２は、バスによって相互に接続され、他のＣＭ２によって管理されるＤｉｓｋ３に対するアクセスをすることが可能に構成される。
【００２３】
各ディスク３は、ユーザデータや制御情報などを格納および記憶する。実施例に係るストレージ装置１では、一方のＣＭ２によって管理されるディスク３に、ホスト装置９からアクセスされるソースボリューム３Ａがバックアップ対象ボリュームとして割り当てられる。また、他方のＣＭ２によって管理される後述するメモリ２３のデータプール領域２３１に、ソースボリューム３Ａのデータについてのフルバックアップデータと世代別バックアップデータとが格納される（図２参照）。
【００２４】
なお、ソースボリューム３Ａは、ディスク３の全てのデータ領域であっても良いし、一のディスク３の一部のデータ領域であっても良い。
【００２５】
各ＣＭ２は、ＣＡ（Channel  Adapter）２１と、ＣＰＵ（Central  Processing  Unit）２２と、メモリ２３と、ＤＩ（Disk  Interface）２４とを有する。
【００２６】
ＣＡ２１は、ホスト装置９とのインタフェース制御を行い、ホスト装置９との間でデータ通信を行う。
【００２７】
ＤＩ２４は、ＣＭ２によって管理されるＤｉｓｋ３とのインタフェース制御を行い、ディスク３との間でデータ通信を行う。
【００２８】
メモリ２３は、ユーザデータや制御データなどを格納するほか、ホスト装置９からディスク３へ書き込まれるデータやディスク３からホスト装置９や他のＣＭ２へ読み出されるデータを一時的に格納する。
【００２９】
さらに、メモリ２３は、ソースボリュームをバックアップ対象ボリュームとしてバックアップする際に用いられるテーブル類（図２参照）を記憶するほか、バックアップ先のデータプール領域２３１（図２参照）を記憶する。
【００３０】
ＣＰＵ２２は、メモリ２３、ＣＡ２１、ＤＩ２４および後述するバックアップ制御部２２Ａを管理する。
【００３１】
［ストレージ装置の機能構成］
次に、実施例に係るストレージ装置１に含まれるＣＭ２の機能構成の一例を、図２を参照して説明する。図２は、実施例に係るストレージ装置１に含まれるＣＭの機能構成を示すブロック図である。なお、図２左のＣＭ２は、バックアップ元であるとし、図２右のＣＭ２は、バックアップ先であるとして説明するが、逆であっても良い。また、図２のＣＭ２では、ＣＡ２１およびＤＩ２４を省略する。
【００３２】
図２に示すように、ＣＭ２は、ＣＰＵ２２およびメモリ２３を含む。ＣＰＵ２２は、バックアップ制御部２２Ａを含む。バックアップ制御部２２Ａは、バックアップ制御を実施する。さらに、バックアップ制御部２２Ａは、データプール領域管理部２２１と、フルバックアップ制御部２２２と、差分バックアップ制御部２２３とを有する。メモリ２３は、データプール管理テーブル２３２と、データプール世代管理テーブル２３３とを有する。
【００３３】
データプール領域管理部２２１は、メモリ２３上のデータプール領域を管理する。なお、データプール領域管理部２２１は、例えば、ユーザからデータプール領域の生成指示があったときに実施される。
【００３４】
例えば、データプール領域管理部２２１は、バックアップ元である場合には、ユーザからバックアップ対象ボリュームの識別子および容量並びに生成する世代数を含むデータプール領域の生成指示を受け付けると、以下の処理を行う。データプール領域管理部２２１は、データプール領域の生成指示に含まれるバックアップ対象ボリュームの容量から必要となるフルバックアップ領域２３１ａの容量を計算する。データプール領域管理部２２１は、データプール領域の生成指示に含まれるバックアップ対象ボリュームの容量および世代数から必要となる世代別バックアップ領域２３１ｂの容量を計算する。データプール領域管理部２２１は、フルバックアップ領域２３１ａの容量と世代別バックアップ領域２３１ｂの容量とから必要となるデータプール領域２３１の全体の容量を計算する。そして、データプール領域管理部２２１は、バックアップ先に対して、所定のパラメータを含むデータプール領域の生成を依頼する。一例として、所定のパラメータには、データプール領域２３１の容量、フルバックアップ領域２３１ａの情報、世代別バックアップ領域２３１ｂの情報、生成する世代数、世代切り替え間隔、バックアップ対象ボリュームの識別子などが挙げられる。
【００３５】
また、データプール領域管理部２２１は、バックアップ先である場合には、データプール領域の生成依頼を受け取ると、以下の処理を行う。データプール領域管理部２２１は、データプール領域の生成依頼に含まれるデータプール領域２３１の容量に基づいて、メモリ２３上にデータプール領域２３１の全領域を生成する。データプール領域管理部２２１は、データプール領域の生成依頼に含まれるフルバックアップ領域２３１ａの情報に基づいて、データプール領域２３１の中にフルバックアップ領域２３１ａを生成する。データプール領域管理部２２１は、データプール領域の生成依頼に含まれる世代別バックアップ領域２３１ｂの情報および生成する世代数に基づいて、データプール領域２３１の中に世代数分の世代別バックアップ領域２３１ｂを生成する。そして、データプール領域管理部２２１は、データプール領域２３１の全体を管理するために用いられるデータプール管理テーブル２３２および世代別バックアップ領域２３１ｂを管理するために用いられるデータプール世代管理テーブル２３３を生成する。
【００３６】
そして、データプール領域管理部２２１は、データプール管理テーブル２３２およびデータプール世代管理テーブル２３３を、所定のタイミングでストレージ装置１内の他のＣＭ２に送信する。これは、全てのＣＭ２でストレージ装置１の中で実施されているバックアップのデータプール領域２３１の情報を共有するためである。所定のタイミングとは、例えば、ＣＭ２の負荷が低いときであれば良い。
【００３７】
そして、データプール領域管理部２２１は、データプール領域２３１を、所定のタイミングでディスク３のバックアップボリューム３Ｚに書き込む。所定のタイミングとは、例えば、ＣＭ２の負荷が低いときであれば良い。
【００３８】
ここで、データプール管理テーブル２３２のデータ構造の一例を、図３を参照して説明する。図３は、実施例に係るデータプール管理テーブルのデータ構造の一例を示す図である。データプール管理テーブル２３２は、バックアップボリューム番号、世代数、使用中世代番号および最古世代番号をデータプール番号に対応付けて記憶する。加えて、データプール管理テーブル２３２は、フルバックアップ領域アドレス、フルバックアップサイズ、フルバックアップ先先頭アドレス、フルバックアップ作成時間および世代切り替え間隔をデータプール番号に対応付けて記憶する。
【００３９】
データプール番号は、データプール領域２３１を一意に識別する番号である。データプール番号は、例えば、個々のＣＭ２内で「１」から順番に割り当てられても良いし、全てのＣＭ２内で重複しないように割り当てられても良い。バックアップボリューム番号は、バックアップ対象ボリュームの識別子を示す。バックアップボリューム番号は、例えば、データプール領域の生成依頼に含まれる。
【００４０】
世代数は、世代別バックアップ領域２３１ｂに生成される領域の数である。世代数は、例えば、データプール領域の生成依頼に含まれる。使用中世代番号は、後述する差分バックアップ制御部２２３により差分バックアップが実施されているときの使用中の世代番号を示す。最古世代番号は、最も古い世代番号を示す。
【００４１】
フルバックアップ領域アドレスは、データプール領域２３１の中でのフルバックアップ領域２３１ａの先頭のアドレスを示す。フルバックアップサイズは、フルバックアップ領域２３１ａのサイズを示す。フルバックアップ先先頭アドレスは、バックアップ対象ボリューム毎のフルバックアップ領域２３１ａ内の先頭のアドレスを示す。フルバックアップ先先頭アドレスは、データプール領域２３１の先頭からの相対位置であっても良いし、フルバックアップ領域２３１ａの先頭からの相対位置であっても良い。実施例では、フルバックアップ先先頭アドレスは、データプール領域２３１の先頭からの相対位置であるとして説明する。
【００４２】
フルバックアップ作成時間は、後述するフルバックアップ制御部２２２によってフルバックアップが作成された作成時間を示す。世代切り替え間隔は、世代別バックアップ領域２３１ｂの世代を切り替える間隔である。世代切り替え間隔は、例えば、データプール領域の生成依頼に含まれるが、予めメモリ２３上に記憶されていても良い。
【００４３】
ここで、データプール世代管理テーブル２３３のデータ構造の一例を、図４を参照して説明する。図４は、実施例に係るデータプール世代管理テーブルのデータ構造の一例を示す図である。図４に示すように、前世代番号、次世代番号、バックアップボリューム番号、データバックアップ時間、データバックアップサイズおよびデータ位置を世代番号に対応付けて記憶する。
【００４４】
世代番号は、管理される世代番号を示す。前世代番号は、管理される世代番号の１つ前の世代番号を示す。次世代番号は、世代番号の次の世代番号を示す。バックアップボリューム番号は、バックアップ対象ボリュームの識別子を示す。データバックアップ時間は、バックアップボリューム番号が示すバックアップ対象ボリュームの差分データがバックアップされた時間を示す。データバックアップサイズは、差分バックアップのデータサイズを示す。データ位置は、世代別バックアップ領域２３１ｂのうち、世代番号が示す世代に該当する領域に差分データがバックアップされた位置である。
【００４５】
図２に戻って、フルバックアップ制御部２２２は、ＯＰＣ（フルバックアップ）を制御する。なお、フルバックアップ制御部２２２は、ユーザからフルバックアップの指示があったときに開始される。
【００４６】
例えば、フルバックアップ制御部２２２は、バックアップ元である場合には、バックアップ対象のボリュームの識別子を含むフルバックアップをバックアップ先に依頼する。フルバックアップ制御部２２２は、バックアップ対象ボリュームについて、先頭から読み出される全データをバックアップ先へ送信する。すなわち、フルバックアップ制御部２２２は、バックアップ対象ボリュームについて、ＯＰＣによる全データの物理コピーをする。
【００４７】
また、フルバックアップ制御部２２２は、バックアップ先である場合には、フルバックアップの依頼を受け付けると、以下の処理を行う。フルバックアップ制御部２２２は、バックアップ対象ボリュームについて、バックアップ元から送信された全データを、データプール領域２３１のフルバックアップ領域２３１ａに書き込む。一例として、フルバックアップ制御部２２２は、バックアップ対象ボリューム３Ａについて、バックアップ元から送信されたデータを、フルバックアップ領域２３１ａ内の対応するフルバックアップ先先頭アドレスからの対応領域に書き込む。バックアップ対象ボリューム３Ａに対応するフルバックアップ先先頭アドレスは、データプール管理テーブル２３２から取得される。
【００４８】
差分バックアップ制御部２２３は、差分バックアップを制御する。なお、差分バックアップ制御部２２３は、フルバックアップ制御部２２２によるフルバックアップが終了すると、自動的に開始する。
【００４９】
例えば、差分バックアップ制御部２２３は、バックアップ元である場合に、ホスト装置９からバックアップ対象ボリュームのデータブロックに対する書込Ｉ／Ｏ要求（更新要求）があると、以下の処理を行う。差分バックアップ制御部２２３は、バックアップ対象ボリュームのデータブロックに書込Ｉ／Ｏ要求があったデータを書き込む。差分バックアップ制御部２２３は、書込Ｉ／Ｏ要求に対する応答をホスト装置９に送信する。そして、差分バックアップ制御部２２３は、バックアップ対象ボリュームに書き込まれたデータのデータブロックを、バックアップ先へ送信する。
【００５０】
また、差分バックアップ制御部２２３は、バックアップ先である場合に、データが更新されたデータブロックを、現在の世代に対応する世代別バックアップ領域２３１ｂに書き込む。なお、差分バックアップ制御部２２３による世代の切り替えは、例えば、データプール世代管理テーブル２３３に記憶された世代切り替え間隔に応じた世代の切り替え時間が経過したタイミングで行われれば良い。また、差分バックアップ制御部２２３による世代の切り替えは、現在使用中の世代の世代別バックアップ領域２３１ｂの空き領域がなくなったタイミングで行われれば良い。
【００５１】
［フルバックアップの動作］
図５は、実施例に係るフルバックアップの動作の一例を示す図である。図５に示すように、データプール領域管理部２２１は、バックアップ対象ボリュームの識別子および容量並びに生成する世代数に基づき、データプール領域２３１を生成したものとする。ここでは、バックアップ対象ボリュームの識別子は、ＡとＢであるものとする。
【００５２】
ユーザからフルバックアップの指示があったとき、フルバックアップ制御部２２２は、バックアップ対象ボリュームＡについて、全データをフルバックアップ領域２３１ａ内の対応するフルバックアップ先先頭アドレスからの対応領域に書き込む（ａ．１）。そして、フルバックアップ制御部２２２は、バックアップ対象ボリュームＢについて、全データをフルバックアップ領域２３１ａ内の対応するフルバックアップ先先頭アドレスからの対応領域に書き込む（ａ．２）。この後、フルバックアップが終了すると、差分バックアップが自動的に開始される。
【００５３】
［差分バックアップの動作］
図６は、実施例に係る差分バックアップの動作の一例を示す図である。図６に示すように、データプール領域管理部２２１は、バックアップ対象ボリュームの識別子および容量並びに生成する世代数に基づき、データプール領域２３１を生成したものとする。ここでは、現在の世代は「１」であるとする。また、バックアップ対象ボリュームの識別子は、ＡとＢであるとする。
【００５４】
フルバックアップが終了した後、差分バックアップが自動的に開始されたものとする。差分バックアップ制御部２２３は、ホスト装置９からバックアップ対象ボリュームＡのデータｃに対する書込Ｉ／Ｏ要求（更新要求）があると（ｂ．０）、バックアップ対象ボリュームＡの該当するデータブロックに書込Ｉ／Ｏ要求があったデータｃを書き込む（ｂ．１）。そして、差分バックアップ制御部２２３は、書込Ｉ／Ｏ要求に対する応答をホスト装置９に送信する（ｂ．２）。そして、差分バックアップ制御部２２３は、バックアップ対象ボリュームＡに書き込まれたデータｃのデータブロックを、現在の世代「１」に対応する世代別バックアップ領域２３１ｂ１へ格納する。
【００５５】
同様に、差分バックアップ制御部２２３は、ホスト装置９からバックアップ対象ボリュームＢのデータｄに対する書込Ｉ／Ｏ要求（更新要求）があると、バックアップ対象ボリュームＢの該当するデータブロックに書込Ｉ／Ｏ要求があったデータｄを書き込む。そして、差分バックアップ制御部２２３は、書込Ｉ／Ｏ要求に対する応答をホスト装置９に送信する。そして、差分バックアップ制御部２２３は、バックアップ対象ボリュームＢに書き込まれたデータｄのデータブロックを、現在の世代「１」に対応する世代別バックアップ領域２３１ｂ１へ格納する。
【００５６】
これにより、バックアップ制御処理は、バックアップ先をデータプールで共有化することで、フルバックアップ指示を受け付けると、フルバックアップを実行し、実行後自動的に差分バックアップが開始されるので、バックアップ手順を少なくできる。さらに、バックアップ制御処理は、コピーオンライト型のバックアップ方式（ＳｎａｐＯＰＣ＋）でなく、書込Ｉ／Ｏ要求があったデータ自体をバックアップ先へバックアップすることで、書き込みレスポンス時間を短縮することができる。
【００５７】
［バックアップ制御処理のフローチャート］
次に、実施例に係るバックアップ制御処理のフローチャートを、図７〜図９を参照して説明する。図７は、実施例に係るバックアップ制御処理のメインのフローチャートの一例を示す図である。図８は、データプール領域生成処理のフローチャートの一例を示す図である。図９は、ホスト装置からの書込Ｉ／Ｏ要求時の差分バックアップ処理のフローチャートの一例を示す図である。
【００５８】
図７に示すように、データプール領域管理部２２１は、ユーザからデータプール領域の生成指示があったか否かを判定する（ステップＳ１１）。データプール領域の生成指示がなかったと判定した場合には（ステップＳ１１；Ｎｏ）、データプール領域管理部２２１は、データプール領域の生成指示があるまで、判定処理を繰り返す。
【００５９】
一方、データプール領域の生成指示があったと判定した場合には（ステップＳ１１；Ｙｅｓ）、データプール領域管理部２２１は、データプール領域生成処理を実行する（ステップＳ１２）。なお、データプール領域生成処理のフローチャートは、後述する。
【００６０】
データプール領域生成処理が実行された後、フルバックアップ制御部２２２は、ユーザからフルバックアップ指示があったか否かを判定する（ステップＳ１３）。フルバックアップ指示がなかったと判定した場合には（ステップＳ１３；Ｎｏ）、フルバックアップ制御部２２２は、フルバックアップ指示があるまで、判定処理を繰り返す。
【００６１】
一方、フルバックアップ指示がなかったと判定した場合には（ステップＳ１３；Ｙｅｓ）、フルバックアップ制御部２２２は、フルバックアップを実行する（ステップＳ１４）。例えば、バックアップ元のフルバックアップ制御部２２２は、フルバックアップ指示を受け付けると、バックアップ対象ボリュームの識別子を含むフルバックアップをバックアップ先に依頼する。フルバックアップ先のフルバックアップ制御部２２２は、フルバックアップの依頼を受け付けると、バックアップ対象ボリュームについて、バックアップ元から送信された全データを、データプール領域２３１のフルバックアップ領域２３１ａに書き込む。
【００６２】
続いて、フルバックアップが終了すると、差分バックアップ制御部２２３は、差分バックアップを開始する（ステップＳ１５）。なお、差分バックアップ開始後に書込Ｉ／Ｏ要求があった時の差分バックアップ処理のフローチャートは、後述する。
【００６３】
そして、差分バックアップ制御部２２３は、現世代の世代別バックアップ領域の空き領域がないか否かを判定する（ステップＳ１６）。現世代の世代別バックアップ領域の空き領域がないと判定した場合には（ステップＳ１６；Ｙｅｓ）、差分バックアップ制御部２２３は、世代別バックアップ領域の世代切り替え処理を実行する（ステップＳ１７）。例えば、バックアップ先の差分バックアップ制御部２２３は、データプール管理テーブル２３２の使用中世代番号を次の世代の世代番号に設定すれば良い。そして、差分バックアップ制御部２２３は、ステップＳ１６に移行する。
【００６４】
一方、現世代の世代別バックアップ領域の空き領域があると判定した場合には（ステップＳ１６；Ｎｏ）、差分バックアップ制御部２２３は、世代切り替え時間が経過したか否かを判定する（ステップＳ１８）。例えば、差分バックアップ制御部２２３は、データプール管理テーブル２３２に記憶された世代切り替え間隔を用いて、直近の世代切り替え時間に世代切り替え間隔を加算した時間が経過したか否かを判定すれば良い。
【００６５】
世代切り替え時間が経過したと判定した場合には（ステップＳ１８；Ｙｅｓ）、差分バックアップ制御部２２３は、世代切り替え処理を実行すべく、ステップＳ１７に移行する。
【００６６】
一方、世代切り替え時間が経過していないと判定した場合には（ステップＳ１８；Ｎｏ）、バックアップ制御部２２Ａは、バックアップ終了指示があったか否かを判定する（ステップＳ１９）。バックアップ終了指示がなかったと判定した場合には（ステップＳ１９；Ｎｏ）、差分バックアップ制御部２２３は、ステップＳ１６に移行する。
【００６７】
一方、バックアップ終了指示があったと判定した場合には（ステップＳ１９；Ｙｅｓ）、バックアップ制御部２２Ａは、バックアップ制御処理を終了する。
【００６８】
図８に示すように、データプール領域管理部２２１は、バックアップ元からデータプール領域の生成依頼を受け付ける（ステップＳ２１）。例えば、バックアップ先のデータプール領域管理部２２１が、データプール番号、データプール全体の容量、フルバックアップ用のデータ領域情報、世代別バックアップ用のデータ領域情報、生成する世代数、世代切り替え時間およびバックアップ対象ボリューム番号を含むデータプール領域の生成依頼を受け付ける。
【００６９】
データプール領域管理部２２１は、データプール全体の容量に基づいて、メモリ２３にデータプール全体の容量分のデータプール領域２３１の全域を生成する（ステップＳ２２）。データプール領域管理部２２１は、フルバックアップ用のデータ領域情報に基づいて、データプール領域２３１にフルバックアップ領域２３１ａの全域を生成する（ステップＳ２３）。
【００７０】
データプール領域管理部２２１は、世代別バックアップ用のデータ領域情報に基づいて、データプール領域２３１に世代別バックアップ領域２３１ｂの全域を生成する（ステップＳ２４）。データプール領域管理部２２１は、生成する世代数に基づいて、世代別バックアップ領域２３１ｂの全域を世代数だけ分割する（ステップＳ２５）。
【００７１】
そして、データプール領域管理部２２１は、データプール管理テーブル２３２を生成する（ステップＳ２６）。データプール領域管理部２２１は、データプール世代管理テーブル２３３を生成する（ステップＳ２７）。なお、生成されるデータプール管理テーブル２３２およびデータプール世代管理テーブル２３３の具体例は、後述する。
【００７２】
図９に示すように、差分バックアップ制御部２２３は、ホスト装置９からバックアップ対象ボリュームのデータブロックに対する書込Ｉ／Ｏ要求を受け付けると、以下の処理を行う。差分バックアップ制御部２２３は、バックアップ対象ボリュームのデータブロックに書込Ｉ／Ｏ要求があったデータを書き込む（ステップＳ３１）。
【００７３】
そして、差分バックアップ制御部２２３は、書込Ｉ／Ｏ要求に対する応答をホスト装置９に送信する（ステップＳ３２）。
【００７４】
そして、差分バックアップ制御部２２３は、バックアップ対象ボリュームに書き込まれたデータのデータブロックを現世代の世代別バックアップ領域２３１ｂへ書き込む（ステップＳ３３）。
【００７５】
次に、各タイミングでの各種テーブルの内容の一例を、図１０〜図１２を参照して説明する。図１０は、データプール領域生成完了時の各種テーブルの一例を示す図である。図１１は、フルバックアップ完了時の各種テーブルの一例を示す図である。図１２は、バックアップ対象ボリュームの領域に書き込みがあった後の各種テーブルの一例を示す図である。なお、図１０〜図１２では、生成する世代数が「２」であるとする。世代切り替え時間が「６０分」であるとする。バックアップ対象ボリューム番号が「Ａ」，「Ｂ」とする。
【００７６】
図１０に示すように、データプール領域生成処理が完了した時のデータプール管理テーブル２３２の内容は、以下のようになる。データプール番号が「１」である場合に、バックアップボリューム番号として「Ａ」「Ｂ」が記憶されている。世代数として「２」、使用中世代番号として「１」、最古世代番号として「１」、フルバックアップ領域アドレスとして「１００」、フルバックアップサイズとして「１００００００」が記憶されている。フルバックアップ先先頭アドレスとして「１００」「１５０００」が記憶されている。世代切り替え間隔として「６０」が記憶されている。なお、フルバックアップ作成時間は、フルバックアップがされていないので、何も記憶されていない。
【００７７】
データプール領域生成処理が完了した時のデータプール世代管理テーブル２３３の内容は、以下のようになる。世代番号が「１」である場合に、次世代番号として「２」が記憶されている。なお、その他の項目については、差分バックアップがされていないので、何も記憶されていない。
【００７８】
図１１に示すように、フルバックアップが完了した時のデータプール管理テーブル２３２の内容は、以下のようになる。なお、フルバックアップ開始時間が、「２０１８年１１月９日１０時２４分３０秒」であるとする。かかる場合には、フルバックアップ作成時間として「２０１８年１１月９日１０時２４分３０秒」が記憶されている。なお、その他の項目は、データプール領域生成完了時と変わりはない。
【００７９】
フルバックアップが完了した時のデータプール世代管理テーブル２３３の内容は、以下のようになる。なお、フルバックアップが完了した時点では、差分バックアップがされていないので、全項目は、データプール領域生成完了時と変わりはない。
【００８０】
図１２に示すように、バックアップ対象ボリュームの領域に書き込みがあった後のデータプール管理テーブル２３２の内容は、以下のようになる。なお、フルバックアップ完了後に、「２０１８年１１月９日１０時３４分３０秒にバックアップ対象ボリュームＡに８１９２バイトの書き込み」、「２０１８年１１月９日１０時４０分３０秒にバックアップ対象ボリュームＢに１０２４バイトの書き込み」および「２０１８年１１月９日１０時４３分３０秒にバックアップ対象ボリュームＡに８１９２０バイトの書き込み」があったとする。かかる場合には、データプール管理テーブル２３２の全項目は、フルバックアップ完了時と変わりはない。
【００８１】
バックアップ対象ボリュームの領域に書き込みがあった後のデータプール世代管理テーブル２３３の内容は、以下のようになる。世代番号が「１」である場合の１レコード目に、バックアップボリューム番号として「Ａ」、データバックアップ時間として「２０１８年１１月９日１０時３４分３０秒」、データバックアップサイズとして「８１９２」、データ位置として「３００」が記憶されている。世代番号が「１」である場合の２レコード目に、バックアップボリューム番号として「Ｂ」、データバックアップ時間として「２０１８年１１月９日１０時４０分３０秒」、データバックアップサイズとして「１０２４」、データ位置として「８４９２」が記憶されている。世代番号が「１」である場合の３レコード目に、バックアップボリューム番号として「Ａ」、データバックアップ時間として「２０１８年１１月９日１０時４３分３０秒」、データバックアップサイズとして「８１９２０」、データ位置として「９５１６」が記憶されている。
【００８２】
［実施例の効果］
上記実施例によれば、ＣＭ２は、生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ２３上にバックアップデータ格納先として生成されたデータプール領域２３１から、バックアップ元ボリュームの全体のデータを格納するフルバックアップ領域２３１ａと差分データを格納する世代別バックアップ領域２３１ｂとを生成する。ＣＭ２は、バックアップ指示を受け付けると、論理ボリュームの全体のデータをフルバックアップ領域２３１ａに格納し、格納した後に、論理ボリュームに書き込まれたデータを世代別バックアップ領域２３１ｂに格納する。かかる構成によれば、ＣＭ２は、バックアップ領域をデータプールで共有化することで、フルバックアップの実行および差分バックアップの実行で個々のボリュームを使用しなくなるため、バックアップ手順の手間を少なくすることができる。すなわち、ＣＭ２は、ユーザからの生成指示およびバックアップ指示の２つの指示だけで、バックアップ対象ボリュームに対するバックアップ領域を生成し、フルバックアップおよび差分バックアップを実行することで、バックアップ手順を少なくできる。
【００８３】
また、上記実施例によれば、ＣＭ２は、バックアップ指示を受け付けると、論理ボリュームの全体のデータをフルバックアップ領域２３１ａに格納する。ＣＭ２は、論理ボリュームに対して書き込み要求があったとき、書き込み要求があったデータを論理ボリュームに書き込み、書き込み要求の要求元に書き込み要求に対する応答を通知する。そして、ＣＭ２は、書き込み要求があったデータを世代別バックアップ領域２３１ｂに格納する。かかる構成によれば、ＣＭ２は、コピーオンライト型のバックアップ方式（ＳｎａｐＯＰＣ＋）でなく、書き込み要求があったデータ自体をバックアップすることで、書き込みレスポンス時間を短縮することが可能となる。
【００８４】
［その他］
なお、実施例では、ストレージ装置１は、２組のＣＭ２および各ＣＭ２に接続される各ディスク３を備える場合について説明した。しかしながら、ストレージ装置１は、これらの数に限定されるものではない。また、実施例では、バックアップ対象ボリュームが２個の場合を説明したが、バックアップ対象ボリュームが３個の場合であっても、４個の場合であっても良く、数に限定されるのではない。
【００８５】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、フルバックアップ制御部２２２と差分バックアップ制御部２２３とを１個の部として統合しても良い。一方、フルバックアップ制御部２２２を、バックアップ元である場合の第１のフルバックアップ制御部と、バックアップ先である場合の第２のフルバックアップ制御部とに分散しても良い。また、差分バックアップ制御部２２３を、バックアップ元である場合の第１の差分バックアップ制御部と、バックアップ先である場合の第２の差分バックアップ制御部とに分散しても良い。また、メモリ２３に記憶された各種テーブルをＣＭ２の外部装置としてネットワーク経由で接続するようにしても良い。
【００８６】
また、実施例では、ＣＭ２が有する機能をソフトウェアによって実現することで、同様の機能を有する、例えばバックアップ制御プログラムを得ることができる。例えば、メモリ２３は、バックアップ制御プログラムやプログラムの実行途中結果などを記憶する。ＣＰＵ２２は、メモリ２３からバックアップ制御プログラムを読み出して実行する。
【００８７】
また、バックアップ制御プログラムについては、必ずしも最初からメモリ２３に記憶させておかなくても良い。例えば、ＣＭ２に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disk）ディスク、光磁気ディスク、ＩＣ（Integrated  Circuit）カード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、ＣＭ２がこれらからバックアップ制御プログラムを読み出して実行するようにしても良い。
【符号の説明】
【００８８】
１  ストレージ装置
２  ＣＭ
２１  ＣＡ
２２  ＣＰＵ
２２Ａ  バックアップ制御部
２２１  データプール領域管理部
２２２  フルバックアップ制御部
２２３  差分バックアップ制御部
２３  メモリ
２３１  データプール領域
２３１ａ  フルバックアップ領域
２３１ｂ  世代別バックアップ領域
２３２  データプール管理テーブル
２３３  データプール世代管理テーブル
２４  ＤＩ
３  ディスク
９  ホスト装置
【図１】
2020123219.tif 000003
【図２】
2020123219.tif 000004
【図３】
2020123219.tif 000005
【図４】
2020123219.tif 000006
【図５】
2020123219.tif 000007
【図６】
2020123219.tif 000008
【図７】
2020123219.tif 000009
【図８】
2020123219.tif 000010
【図９】
2020123219.tif 000011
【図１０】
2020123219.tif 000012
【図１１】
2020123219.tif 000013
【図１２】
2020123219.tif 000014
【図１３Ａ】
2020123219.tif 000015
【図１３Ｂ】
2020123219.tif 000016