(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-13
(45)【発行日】2023-02-21
(54)【発明の名称】ストレージ制御装置、ストレージシステムおよびバックアップ制御プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20230214BHJP
G06F 16/11 20190101ALI20230214BHJP
G06F 16/174 20190101ALI20230214BHJP
G06F 11/14 20060101ALI20230214BHJP
【FI】
G06F3/06 304F
G06F3/06 304Z
G06F16/11
G06F16/174
G06F11/14 646
(21)【出願番号】P 2019015651
(22)【出願日】2019-01-31
【審査請求日】2021-10-05
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】大海 成浩
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2007-334709(JP,A)
【文献】特開2008-140002(JP,A)
【文献】特開2014-137711(JP,A)
【文献】特表2014-507693(JP,A)
【文献】国際公開第2014/115314(WO,A1)
【文献】特開2010-140065(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 16/00-16/958
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ上にバックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と世代毎の差分データを格納する差分データ格納プール領域とを生成するプール領域管理部と、
バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納する第1のデータ格納部と、
前記論理ボリュームに対して書き込み要求があったとき、前記書き込み要求があったデータを前記論理ボリュームに書き込み、前記書き込み要求の要求元に前記書き込み要求に対する応答を通知し、前記書き込み要求があったデータを現世代の前記差分データ格納プール領域に格納する第2のデータ格納部と、を有し、
前記第2のデータ格納部は、予め定められた世代切り換え間隔に応じた切り換え時間が経過したタイミングまたは現世代の前記差分データ格納
プール領域の空き領域が無くなったタイミングで、現世代の前記差分データ格納プール領域を次世代の前記差分データ格納プール領域に切り替える
ことを特徴とするストレージ制御装置。
【請求項2】
ストレージ制御装置と、
記憶装置と、を有するストレージシステムであって、
前記ストレージ制御装置は、
生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ上にバックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と世代毎の差分データを格納する差分データ格納プール領域とを生成するプール領域管理部と、
バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納する第1のデータ格納部と、
前記論理ボリュームに対して書き込み要求があったとき、前記書き込み要求があったデータを前記論理ボリュームに書き込み、前記書き込み要求の要求元に前記書き込み要求に対する応答を通知し、前記書き込み要求があったデータを現世代の前記差分データ格納プール領域に格納する第2のデータ格納部と、を有し、
前記第2のデータ格納部は、予め定められた世代切り換え間隔に応じた切り換え時間が経過したタイミングまたは現世代の前記差分データ格納
プール領域の空き領域が無くなったタイミングで、現世代の前記差分データ格納プール領域を次世代の前記差分データ格納プール領域に切り替える
ことを特徴とするストレージシステム。
【請求項3】
生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ上にバックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と世代毎の差分データを格納する差分データ格納プール領域とを生成し、
バックアップ指示を受け付けると、前記論理ボリュームの全体のデータを前記フルバックアップデータプール領域に格納し、
前記論理ボリュームに対して書き込み要求があったとき、前記書き込み要求があったデータを前記論理ボリュームに書き込み、前記書き込み要求の要求元に前記書き込み要求に対する応答を通知し、前記書き込み要求があったデータを現世代の前記差分データ格納プール領域に格納し、
予め定められた世代切り換え間隔に応じた切り換え時間が経過したタイミングまたは現世代の前記差分データ格納
プール領域の空き領域が無くなったタイミングで、現世代の前記差分データ格納プール領域を次世代の前記差分データ格納プール領域に切り替える
処理をコンピュータに実行させるバックアップ制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御装置などに関する。
【背景技術】
【0002】
ストレージ装置におけるソースボリュームをバックアップする手法として、スナップショット型のバックアップ(OPC:One Point Copy)が知られている。OPCとは、バックアップ対象となるデータについて所定時点におけるデータであるスナップショットを作成するものである。すなわち、OPCを実行するストレージ装置は、ユーザからOPC指示を受け取ると、当該OPC指示を受けた時点におけるソースボリュームの全データをコピーしスナップショットとして格納することにより、ソースボリュームの全体のバックアップを行う。
【0003】
OPCの拡張機能として、SnapOPC(Snapshot One Point Copy)やSnapOPC+が知られている。SnapOPC+とは、バックアップボリュームを世代毎に作成し、ソースボリュームの更新があった場合に、更新対象箇所の更新前のデータ(旧データ)を、対応する世代のバックアップボリュームにコピーする。SnapOpc+は、コピーオンライト型のスナップショットとも呼ばれる。すなわち、SnapOPC+では、世代別バックアップボリュームが世代毎に作成され、各世代別バックアップボリュームに対し各世代間の差分データのみがコピーされる。
【0004】
ここで、OPCとSnapOPC+を用いたバックアップ制御の動作の参考例を、
図13Aおよび
図13Bを参照して説明する。
図13Aおよび
図13Bは、バックアップ制御の動作の参考例を示す図である。なお、
図13Aおよび
図13Bでは、2つのソースボリューム(バックアップ対象ボリューム)A,Bをそれぞれフルバックアップボリュームと2世代分の差分バックアップボリュームとへバックアップを行うものとする。
【0005】
図13Aに示すように、バックアップ制御を行うストレージ装置は、ユーザからソースボリュームAに対するバックアップボリュームの生成指示を受け付けると、既にRAID(Redundant Arrays of Inexpensive Disks)が作成されたコピー先側にソースボリュームAに対する、フルバックアップ用ボリュームと2世代分の差分バックアップボリュームを生成する(<1>)。
【0006】
ストレージ装置は、ユーザからソースボリュームBに対するバックアップボリュームの生成指示を受け付けると、既にRAIDが作成されたコピー先側にソースボリュームBに対する、フルバックアップ用ボリュームと2世代分の差分バックアップボリュームを生成する(<2>)。
【0007】
ストレージ装置は、ユーザからソースボリュームAに対するフルバックアップ指示(OPC指示)を受け付けると、ソースボリュームAの全体のバックアップ(フルバックアップ)を開始する(<3>)。
【0008】
同様に、ストレージ装置は、ユーザからソースボリュームBに対するフルバックアップ指示(OPC指示)を受け付けると、ソースボリュームBの全体のバックアップ(フルバックアップ)を開始する(<4>)。
【0009】
図13Bに示すように、ソースボリュームAのフルバックアップが終了した後、ストレージ装置は、ユーザからソースボリュームAに対する1世代目のバックアップ(差分バックアップ)指示を受け付けると、ソースボリュームAの更新対象箇所における1世代目のバックアップを開始する(<5>)。
【0010】
そして、ストレージ装置は、ホスト装置から書込I/O要求(<5.0>)を受け付けると、以下の処理を行う。ここでは、ソースボリュームAのデータaがデータbに更新される場合、ストレージ装置は、SnapOPC+セッションを開始し、更新対象箇所における更新前のデータ(差分データ)aを1世代目の差分バックアップボリュームにコピーする(<5.1>)。そして、ストレージ装置は、ソースボリュームAに対する書き込みを許可し、ソースボリュームAのデータaをデータbに書き換える(<5.2>)。そして、ストレージ装置は、書込I/Oに対する応答をホスト装置に返却する(<5.3>)。
【0011】
同様に、ソースボリュームBのフルバックアップが終了した後、ストレージ装置は、ユーザからソースボリュームBに対する1世代目のバックアップ(差分バックアップ)指示を受け付けると、ソースボリュームBの更新対象箇所における1世代目のバックアップを開始する(<6>)。
【0012】
そして、世代切替タイミングで、ストレージ装置は、ユーザからソースボリュームAに対する2世代目のバックアップ(差分バックアップ)指示を受け付けると、ソースボリュームAの更新対象箇所における2世代目のバックアップを開始する(<7>)。
【0013】
同様に、世代切替タイミングで、ストレージ装置は、ユーザからソースボリュームBに対する2世代目のバックアップ(差分バックアップ)指示を受け付けると、ソースボリュームBの更新対象箇所における2世代目のバックアップを開始する(<8>)。
【先行技術文献】
【特許文献】
【0014】
【発明の概要】
【発明が解決しようとする課題】
【0015】
しかしながら、従来のOPCとSnapOPC+を用いたバックアップ制御では、バックアップ手順に手間がかかるという問題がある。すなわち、かかるバックアップ制御では、ユーザ指示により、ソースボリュームに対するバックアップ用ボリュームを生成したり、フルバックアップを開始したり、世代のバックアップを開始したりするので、バックアップ手順に手間がかかる。対象のソースボリュームが複数存在する場合には、さらにバックアップ手順に手間がかかってしまう。
【0016】
1つの側面では、本発明は、バックアップ手順の手間を少なくすることを目的とする。
【課題を解決するための手段】
【0017】
本願の開示するストレージ制御装置は、1つの態様において、生成指示を受け付けると、複数の論理ボリュームのバックアップを管理すべく、バックアップデータ格納先として生成されたバックアップデータプール領域から、バックアップ元ボリュームの全体のデータを格納するフルバックアップデータプール領域と差分データを格納する差分データ格納プール領域とを生成するプール領域管理部と、格納指示を受け付けると、前記複数の論理ボリュームのそれぞれの全体のデータを前記フルバックアップデータプール領域に格納し、格納後に、前記複数の論理ボリュームに書き込まれたデータを前記差分データ格納プール領域に格納するデータ格納部と、を有する。
【発明の効果】
【0018】
本願の開示するシステムの1つの態様によれば、バックアップ手順の手間を少なくすることができる。
【図面の簡単な説明】
【0019】
【
図1】
図1は、実施例に係るストレージ装置のハードウェア構成の一例を示す図である。
【
図2】
図2は、実施例に係るストレージ装置に含まれるCMの機能構成を示すブロック図である。
【
図3】
図3は、実施例に係るデータプール管理テーブルのデータ構造の一例を示す図である。
【
図4】
図4は、実施例に係るデータプール世代管理テーブルのデータ構造の一例を示す図である。
【
図5】
図5は、実施例に係るフルバックアップの動作の一例を示す図である。
【
図6】
図6は、実施例に係る差分バックアップの動作の一例を示す図である。
【
図7】
図7は、実施例に係るバックアップ制御処理のメインのフローチャートの一例を示す図である。
【
図8】
図8は、データプール領域生成処理のフローチャートの一例を示す図である。
【
図9】
図9は、ホスト装置からの書込I/O要求時の差分バックアップ処理のフローチャートの一例を示す図である。
【
図10】
図10は、データプール領域生成完了時の各種テーブルの一例を示す図である。
【
図11】
図11は、フルバックアップ完了時の各種テーブルの一例を示す図である。
【
図12】
図12は、バックアップ対象ボリュームの領域に書き込みがあった後の各種テーブルの一例を示す図である。
【発明を実施するための形態】
【0020】
以下に、本願の開示するストレージ制御装置、ストレージシステムおよびバックアップ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【0021】
[ストレージ装置のハードウェア構成]
図1は、実施例に係るストレージ装置のハードウェア構成の一例を示す図である。
図1に示すように、ストレージ装置1は、ホスト装置9と接続する。ストレージ装置1は、2組のCM2および各CM2に接続される各ディスク3を備える。なお、実施例に係るストレージ装置1では、記憶装置としてディスク(HDD:Hard Disk Drive)3が用いられているが、SSD(Solid State Device)などの記憶装置が用いられても良い。2組のCM2は、ストレージ制御装置の一例である。ストレージ装置1は、ストレージシステムの一例である。
【0022】
各CM(Controller Module)2は、ストレージ装置1における資源の管理を行う。各CM2によって管理される資源は、例えば、ディスク3、後述するCA21のほかメモリ23、DI24やバックアップ制御を実施するCPU22などである。また、各CM2は、ホスト装置9や他のCM2からの要求に応じて、ディスク3に対する各種処理(データ書込処理,データ更新処理,データ読出処理,バックアップの際のデータコピー処理など)を行う。また、各CM2は、バスによって相互に接続され、他のCM2によって管理されるDisk3に対するアクセスをすることが可能に構成される。
【0023】
各ディスク3は、ユーザデータや制御情報などを格納および記憶する。実施例に係るストレージ装置1では、一方のCM2によって管理されるディスク3に、ホスト装置9からアクセスされるソースボリューム3Aがバックアップ対象ボリュームとして割り当てられる。また、他方のCM2によって管理される後述するメモリ23のデータプール領域231に、ソースボリューム3Aのデータについてのフルバックアップデータと世代別バックアップデータとが格納される(
図2参照)。
【0024】
なお、ソースボリューム3Aは、ディスク3の全てのデータ領域であっても良いし、一のディスク3の一部のデータ領域であっても良い。
【0025】
各CM2は、CA(Channel Adapter)21と、CPU(Central Processing Unit)22と、メモリ23と、DI(Disk Interface)24とを有する。
【0026】
CA21は、ホスト装置9とのインタフェース制御を行い、ホスト装置9との間でデータ通信を行う。
【0027】
DI24は、CM2によって管理されるDisk3とのインタフェース制御を行い、ディスク3との間でデータ通信を行う。
【0028】
メモリ23は、ユーザデータや制御データなどを格納するほか、ホスト装置9からディスク3へ書き込まれるデータやディスク3からホスト装置9や他のCM2へ読み出されるデータを一時的に格納する。
【0029】
さらに、メモリ23は、ソースボリュームをバックアップ対象ボリュームとしてバックアップする際に用いられるテーブル類(
図2参照)を記憶するほか、バックアップ先のデータプール領域231(
図2参照)を記憶する。
【0030】
CPU22は、メモリ23、CA21、DI24および後述するバックアップ制御部22Aを管理する。
【0031】
[ストレージ装置の機能構成]
次に、実施例に係るストレージ装置1に含まれるCM2の機能構成の一例を、
図2を参照して説明する。
図2は、実施例に係るストレージ装置1に含まれるCMの機能構成を示すブロック図である。なお、
図2左のCM2は、バックアップ元であるとし、
図2右のCM2は、バックアップ先であるとして説明するが、逆であっても良い。また、
図2のCM2では、CA21およびDI24を省略する。
【0032】
図2に示すように、CM2は、CPU22およびメモリ23を含む。CPU22は、バックアップ制御部22Aを含む。バックアップ制御部22Aは、バックアップ制御を実施する。さらに、バックアップ制御部22Aは、データプール領域管理部221と、フルバックアップ制御部222と、差分バックアップ制御部223とを有する。メモリ23は、データプール管理テーブル232と、データプール世代管理テーブル233とを有する。
【0033】
データプール領域管理部221は、メモリ23上のデータプール領域を管理する。なお、データプール領域管理部221は、例えば、ユーザからデータプール領域の生成指示があったときに実施される。
【0034】
例えば、データプール領域管理部221は、バックアップ元である場合には、ユーザからバックアップ対象ボリュームの識別子および容量並びに生成する世代数を含むデータプール領域の生成指示を受け付けると、以下の処理を行う。データプール領域管理部221は、データプール領域の生成指示に含まれるバックアップ対象ボリュームの容量から必要となるフルバックアップ領域231aの容量を計算する。データプール領域管理部221は、データプール領域の生成指示に含まれるバックアップ対象ボリュームの容量および世代数から必要となる世代別バックアップ領域231bの容量を計算する。データプール領域管理部221は、フルバックアップ領域231aの容量と世代別バックアップ領域231bの容量とから必要となるデータプール領域231の全体の容量を計算する。そして、データプール領域管理部221は、バックアップ先に対して、所定のパラメータを含むデータプール領域の生成を依頼する。一例として、所定のパラメータには、データプール領域231の容量、フルバックアップ領域231aの情報、世代別バックアップ領域231bの情報、生成する世代数、世代切り替え間隔、バックアップ対象ボリュームの識別子などが挙げられる。
【0035】
また、データプール領域管理部221は、バックアップ先である場合には、データプール領域の生成依頼を受け取ると、以下の処理を行う。データプール領域管理部221は、データプール領域の生成依頼に含まれるデータプール領域231の容量に基づいて、メモリ23上にデータプール領域231の全領域を生成する。データプール領域管理部221は、データプール領域の生成依頼に含まれるフルバックアップ領域231aの情報に基づいて、データプール領域231の中にフルバックアップ領域231aを生成する。データプール領域管理部221は、データプール領域の生成依頼に含まれる世代別バックアップ領域231bの情報および生成する世代数に基づいて、データプール領域231の中に世代数分の世代別バックアップ領域231bを生成する。そして、データプール領域管理部221は、データプール領域231の全体を管理するために用いられるデータプール管理テーブル232および世代別バックアップ領域231bを管理するために用いられるデータプール世代管理テーブル233を生成する。
【0036】
そして、データプール領域管理部221は、データプール管理テーブル232およびデータプール世代管理テーブル233を、所定のタイミングでストレージ装置1内の他のCM2に送信する。これは、全てのCM2でストレージ装置1の中で実施されているバックアップのデータプール領域231の情報を共有するためである。所定のタイミングとは、例えば、CM2の負荷が低いときであれば良い。
【0037】
そして、データプール領域管理部221は、データプール領域231を、所定のタイミングでディスク3のバックアップボリューム3Zに書き込む。所定のタイミングとは、例えば、CM2の負荷が低いときであれば良い。
【0038】
ここで、データプール管理テーブル232のデータ構造の一例を、
図3を参照して説明する。
図3は、実施例に係るデータプール管理テーブルのデータ構造の一例を示す図である。データプール管理テーブル232は、バックアップボリューム番号、世代数、使用中世代番号および最古世代番号をデータプール番号に対応付けて記憶する。加えて、データプール管理テーブル232は、フルバックアップ領域アドレス、フルバックアップサイズ、フルバックアップ先先頭アドレス、フルバックアップ作成時間および世代切り替え間隔をデータプール番号に対応付けて記憶する。
【0039】
データプール番号は、データプール領域231を一意に識別する番号である。データプール番号は、例えば、個々のCM2内で「1」から順番に割り当てられても良いし、全てのCM2内で重複しないように割り当てられても良い。バックアップボリューム番号は、バックアップ対象ボリュームの識別子を示す。バックアップボリューム番号は、例えば、データプール領域の生成依頼に含まれる。
【0040】
世代数は、世代別バックアップ領域231bに生成される領域の数である。世代数は、例えば、データプール領域の生成依頼に含まれる。使用中世代番号は、後述する差分バックアップ制御部223により差分バックアップが実施されているときの使用中の世代番号を示す。最古世代番号は、最も古い世代番号を示す。
【0041】
フルバックアップ領域アドレスは、データプール領域231の中でのフルバックアップ領域231aの先頭のアドレスを示す。フルバックアップサイズは、フルバックアップ領域231aのサイズを示す。フルバックアップ先先頭アドレスは、バックアップ対象ボリューム毎のフルバックアップ領域231a内の先頭のアドレスを示す。フルバックアップ先先頭アドレスは、データプール領域231の先頭からの相対位置であっても良いし、フルバックアップ領域231aの先頭からの相対位置であっても良い。実施例では、フルバックアップ先先頭アドレスは、データプール領域231の先頭からの相対位置であるとして説明する。
【0042】
フルバックアップ作成時間は、後述するフルバックアップ制御部222によってフルバックアップが作成された作成時間を示す。世代切り替え間隔は、世代別バックアップ領域231bの世代を切り替える間隔である。世代切り替え間隔は、例えば、データプール領域の生成依頼に含まれるが、予めメモリ23上に記憶されていても良い。
【0043】
ここで、データプール世代管理テーブル233のデータ構造の一例を、
図4を参照して説明する。
図4は、実施例に係るデータプール世代管理テーブルのデータ構造の一例を示す図である。
図4に示すように、前世代番号、次世代番号、バックアップボリューム番号、データバックアップ時間、データバックアップサイズおよびデータ位置を世代番号に対応付けて記憶する。
【0044】
世代番号は、管理される世代番号を示す。前世代番号は、管理される世代番号の1つ前の世代番号を示す。次世代番号は、世代番号の次の世代番号を示す。バックアップボリューム番号は、バックアップ対象ボリュームの識別子を示す。データバックアップ時間は、バックアップボリューム番号が示すバックアップ対象ボリュームの差分データがバックアップされた時間を示す。データバックアップサイズは、差分バックアップのデータサイズを示す。データ位置は、世代別バックアップ領域231bのうち、世代番号が示す世代に該当する領域に差分データがバックアップされた位置である。
【0045】
図2に戻って、フルバックアップ制御部222は、OPC(フルバックアップ)を制御する。なお、フルバックアップ制御部222は、ユーザからフルバックアップの指示があったときに開始される。
【0046】
例えば、フルバックアップ制御部222は、バックアップ元である場合には、バックアップ対象のボリュームの識別子を含むフルバックアップをバックアップ先に依頼する。フルバックアップ制御部222は、バックアップ対象ボリュームについて、先頭から読み出される全データをバックアップ先へ送信する。すなわち、フルバックアップ制御部222は、バックアップ対象ボリュームについて、OPCによる全データの物理コピーをする。
【0047】
また、フルバックアップ制御部222は、バックアップ先である場合には、フルバックアップの依頼を受け付けると、以下の処理を行う。フルバックアップ制御部222は、バックアップ対象ボリュームについて、バックアップ元から送信された全データを、データプール領域231のフルバックアップ領域231aに書き込む。一例として、フルバックアップ制御部222は、バックアップ対象ボリューム3Aについて、バックアップ元から送信されたデータを、フルバックアップ領域231a内の対応するフルバックアップ先先頭アドレスからの対応領域に書き込む。バックアップ対象ボリューム3Aに対応するフルバックアップ先先頭アドレスは、データプール管理テーブル232から取得される。
【0048】
差分バックアップ制御部223は、差分バックアップを制御する。なお、差分バックアップ制御部223は、フルバックアップ制御部222によるフルバックアップが終了すると、自動的に開始する。
【0049】
例えば、差分バックアップ制御部223は、バックアップ元である場合に、ホスト装置9からバックアップ対象ボリュームのデータブロックに対する書込I/O要求(更新要求)があると、以下の処理を行う。差分バックアップ制御部223は、バックアップ対象ボリュームのデータブロックに書込I/O要求があったデータを書き込む。差分バックアップ制御部223は、書込I/O要求に対する応答をホスト装置9に送信する。そして、差分バックアップ制御部223は、バックアップ対象ボリュームに書き込まれたデータのデータブロックを、バックアップ先へ送信する。
【0050】
また、差分バックアップ制御部223は、バックアップ先である場合に、データが更新されたデータブロックを、現在の世代に対応する世代別バックアップ領域231bに書き込む。なお、差分バックアップ制御部223による世代の切り替えは、例えば、データプール世代管理テーブル233に記憶された世代切り替え間隔に応じた世代の切り替え時間が経過したタイミングで行われれば良い。また、差分バックアップ制御部223による世代の切り替えは、現在使用中の世代の世代別バックアップ領域231bの空き領域がなくなったタイミングで行われれば良い。
【0051】
[フルバックアップの動作]
図5は、実施例に係るフルバックアップの動作の一例を示す図である。
図5に示すように、データプール領域管理部221は、バックアップ対象ボリュームの識別子および容量並びに生成する世代数に基づき、データプール領域231を生成したものとする。ここでは、バックアップ対象ボリュームの識別子は、AとBであるものとする。
【0052】
ユーザからフルバックアップの指示があったとき、フルバックアップ制御部222は、バックアップ対象ボリュームAについて、全データをフルバックアップ領域231a内の対応するフルバックアップ先先頭アドレスからの対応領域に書き込む(a.1)。そして、フルバックアップ制御部222は、バックアップ対象ボリュームBについて、全データをフルバックアップ領域231a内の対応するフルバックアップ先先頭アドレスからの対応領域に書き込む(a.2)。この後、フルバックアップが終了すると、差分バックアップが自動的に開始される。
【0053】
[差分バックアップの動作]
図6は、実施例に係る差分バックアップの動作の一例を示す図である。
図6に示すように、データプール領域管理部221は、バックアップ対象ボリュームの識別子および容量並びに生成する世代数に基づき、データプール領域231を生成したものとする。ここでは、現在の世代は「1」であるとする。また、バックアップ対象ボリュームの識別子は、AとBであるとする。
【0054】
フルバックアップが終了した後、差分バックアップが自動的に開始されたものとする。差分バックアップ制御部223は、ホスト装置9からバックアップ対象ボリュームAのデータcに対する書込I/O要求(更新要求)があると(b.0)、バックアップ対象ボリュームAの該当するデータブロックに書込I/O要求があったデータcを書き込む(b.1)。そして、差分バックアップ制御部223は、書込I/O要求に対する応答をホスト装置9に送信する(b.2)。そして、差分バックアップ制御部223は、バックアップ対象ボリュームAに書き込まれたデータcのデータブロックを、現在の世代「1」に対応する世代別バックアップ領域231b1へ格納する。
【0055】
同様に、差分バックアップ制御部223は、ホスト装置9からバックアップ対象ボリュームBのデータdに対する書込I/O要求(更新要求)があると、バックアップ対象ボリュームBの該当するデータブロックに書込I/O要求があったデータdを書き込む。そして、差分バックアップ制御部223は、書込I/O要求に対する応答をホスト装置9に送信する。そして、差分バックアップ制御部223は、バックアップ対象ボリュームBに書き込まれたデータdのデータブロックを、現在の世代「1」に対応する世代別バックアップ領域231b1へ格納する。
【0056】
これにより、バックアップ制御処理は、バックアップ先をデータプールで共有化することで、フルバックアップ指示を受け付けると、フルバックアップを実行し、実行後自動的に差分バックアップが開始されるので、バックアップ手順を少なくできる。さらに、バックアップ制御処理は、コピーオンライト型のバックアップ方式(SnapOPC+)でなく、書込I/O要求があったデータ自体をバックアップ先へバックアップすることで、書き込みレスポンス時間を短縮することができる。
【0057】
[バックアップ制御処理のフローチャート]
次に、実施例に係るバックアップ制御処理のフローチャートを、
図7~
図9を参照して説明する。
図7は、実施例に係るバックアップ制御処理のメインのフローチャートの一例を示す図である。
図8は、データプール領域生成処理のフローチャートの一例を示す図である。
図9は、ホスト装置からの書込I/O要求時の差分バックアップ処理のフローチャートの一例を示す図である。
【0058】
図7に示すように、データプール領域管理部221は、ユーザからデータプール領域の生成指示があったか否かを判定する(ステップS11)。データプール領域の生成指示がなかったと判定した場合には(ステップS11;No)、データプール領域管理部221は、データプール領域の生成指示があるまで、判定処理を繰り返す。
【0059】
一方、データプール領域の生成指示があったと判定した場合には(ステップS11;Yes)、データプール領域管理部221は、データプール領域生成処理を実行する(ステップS12)。なお、データプール領域生成処理のフローチャートは、後述する。
【0060】
データプール領域生成処理が実行された後、フルバックアップ制御部222は、ユーザからフルバックアップ指示があったか否かを判定する(ステップS13)。フルバックアップ指示がなかったと判定した場合には(ステップS13;No)、フルバックアップ制御部222は、フルバックアップ指示があるまで、判定処理を繰り返す。
【0061】
一方、フルバックアップ指示がなかったと判定した場合には(ステップS13;Yes)、フルバックアップ制御部222は、フルバックアップを実行する(ステップS14)。例えば、バックアップ元のフルバックアップ制御部222は、フルバックアップ指示を受け付けると、バックアップ対象ボリュームの識別子を含むフルバックアップをバックアップ先に依頼する。フルバックアップ先のフルバックアップ制御部222は、フルバックアップの依頼を受け付けると、バックアップ対象ボリュームについて、バックアップ元から送信された全データを、データプール領域231のフルバックアップ領域231aに書き込む。
【0062】
続いて、フルバックアップが終了すると、差分バックアップ制御部223は、差分バックアップを開始する(ステップS15)。なお、差分バックアップ開始後に書込I/O要求があった時の差分バックアップ処理のフローチャートは、後述する。
【0063】
そして、差分バックアップ制御部223は、現世代の世代別バックアップ領域の空き領域がないか否かを判定する(ステップS16)。現世代の世代別バックアップ領域の空き領域がないと判定した場合には(ステップS16;Yes)、差分バックアップ制御部223は、世代別バックアップ領域の世代切り替え処理を実行する(ステップS17)。例えば、バックアップ先の差分バックアップ制御部223は、データプール管理テーブル232の使用中世代番号を次の世代の世代番号に設定すれば良い。そして、差分バックアップ制御部223は、ステップS16に移行する。
【0064】
一方、現世代の世代別バックアップ領域の空き領域があると判定した場合には(ステップS16;No)、差分バックアップ制御部223は、世代切り替え時間が経過したか否かを判定する(ステップS18)。例えば、差分バックアップ制御部223は、データプール管理テーブル232に記憶された世代切り替え間隔を用いて、直近の世代切り替え時間に世代切り替え間隔を加算した時間が経過したか否かを判定すれば良い。
【0065】
世代切り替え時間が経過したと判定した場合には(ステップS18;Yes)、差分バックアップ制御部223は、世代切り替え処理を実行すべく、ステップS17に移行する。
【0066】
一方、世代切り替え時間が経過していないと判定した場合には(ステップS18;No)、バックアップ制御部22Aは、バックアップ終了指示があったか否かを判定する(ステップS19)。バックアップ終了指示がなかったと判定した場合には(ステップS19;No)、差分バックアップ制御部223は、ステップS16に移行する。
【0067】
一方、バックアップ終了指示があったと判定した場合には(ステップS19;Yes)、バックアップ制御部22Aは、バックアップ制御処理を終了する。
【0068】
図8に示すように、データプール領域管理部221は、バックアップ元からデータプール領域の生成依頼を受け付ける(ステップS21)。例えば、バックアップ先のデータプール領域管理部221が、データプール番号、データプール全体の容量、フルバックアップ用のデータ領域情報、世代別バックアップ用のデータ領域情報、生成する世代数、世代切り替え時間およびバックアップ対象ボリューム番号を含むデータプール領域の生成依頼を受け付ける。
【0069】
データプール領域管理部221は、データプール全体の容量に基づいて、メモリ23にデータプール全体の容量分のデータプール領域231の全域を生成する(ステップS22)。データプール領域管理部221は、フルバックアップ用のデータ領域情報に基づいて、データプール領域231にフルバックアップ領域231aの全域を生成する(ステップS23)。
【0070】
データプール領域管理部221は、世代別バックアップ用のデータ領域情報に基づいて、データプール領域231に世代別バックアップ領域231bの全域を生成する(ステップS24)。データプール領域管理部221は、生成する世代数に基づいて、世代別バックアップ領域231bの全域を世代数だけ分割する(ステップS25)。
【0071】
そして、データプール領域管理部221は、データプール管理テーブル232を生成する(ステップS26)。データプール領域管理部221は、データプール世代管理テーブル233を生成する(ステップS27)。なお、生成されるデータプール管理テーブル232およびデータプール世代管理テーブル233の具体例は、後述する。
【0072】
図9に示すように、差分バックアップ制御部223は、ホスト装置9からバックアップ対象ボリュームのデータブロックに対する書込I/O要求を受け付けると、以下の処理を行う。差分バックアップ制御部223は、バックアップ対象ボリュームのデータブロックに書込I/O要求があったデータを書き込む(ステップS31)。
【0073】
そして、差分バックアップ制御部223は、書込I/O要求に対する応答をホスト装置9に送信する(ステップS32)。
【0074】
そして、差分バックアップ制御部223は、バックアップ対象ボリュームに書き込まれたデータのデータブロックを現世代の世代別バックアップ領域231bへ書き込む(ステップS33)。
【0075】
次に、各タイミングでの各種テーブルの内容の一例を、
図10~
図12を参照して説明する。
図10は、データプール領域生成完了時の各種テーブルの一例を示す図である。
図11は、フルバックアップ完了時の各種テーブルの一例を示す図である。
図12は、バックアップ対象ボリュームの領域に書き込みがあった後の各種テーブルの一例を示す図である。なお、
図10~
図12では、生成する世代数が「2」であるとする。世代切り替え時間が「60分」であるとする。バックアップ対象ボリューム番号が「A」,「B」とする。
【0076】
図10に示すように、データプール領域生成処理が完了した時のデータプール管理テーブル232の内容は、以下のようになる。データプール番号が「1」である場合に、バックアップボリューム番号として「A」「B」が記憶されている。世代数として「2」、使用中世代番号として「1」、最古世代番号として「1」、フルバックアップ領域アドレスとして「100」、フルバックアップサイズとして「1000000」が記憶されている。フルバックアップ先先頭アドレスとして「100」「15000」が記憶されている。世代切り替え間隔として「60」が記憶されている。なお、フルバックアップ作成時間は、フルバックアップがされていないので、何も記憶されていない。
【0077】
データプール領域生成処理が完了した時のデータプール世代管理テーブル233の内容は、以下のようになる。世代番号が「1」である場合に、次世代番号として「2」が記憶されている。なお、その他の項目については、差分バックアップがされていないので、何も記憶されていない。
【0078】
図11に示すように、フルバックアップが完了した時のデータプール管理テーブル232の内容は、以下のようになる。なお、フルバックアップ開始時間が、「2018年11月9日10時24分30秒」であるとする。かかる場合には、フルバックアップ作成時間として「2018年11月9日10時24分30秒」が記憶されている。なお、その他の項目は、データプール領域生成完了時と変わりはない。
【0079】
フルバックアップが完了した時のデータプール世代管理テーブル233の内容は、以下のようになる。なお、フルバックアップが完了した時点では、差分バックアップがされていないので、全項目は、データプール領域生成完了時と変わりはない。
【0080】
図12に示すように、バックアップ対象ボリュームの領域に書き込みがあった後のデータプール管理テーブル232の内容は、以下のようになる。なお、フルバックアップ完了後に、「2018年11月9日10時34分30秒にバックアップ対象ボリュームAに8192バイトの書き込み」、「2018年11月9日10時40分30秒にバックアップ対象ボリュームBに1024バイトの書き込み」および「2018年11月9日10時43分30秒にバックアップ対象ボリュームAに81920バイトの書き込み」があったとする。かかる場合には、データプール管理テーブル232の全項目は、フルバックアップ完了時と変わりはない。
【0081】
バックアップ対象ボリュームの領域に書き込みがあった後のデータプール世代管理テーブル233の内容は、以下のようになる。世代番号が「1」である場合の1レコード目に、バックアップボリューム番号として「A」、データバックアップ時間として「2018年11月9日10時34分30秒」、データバックアップサイズとして「8192」、データ位置として「300」が記憶されている。世代番号が「1」である場合の2レコード目に、バックアップボリューム番号として「B」、データバックアップ時間として「2018年11月9日10時40分30秒」、データバックアップサイズとして「1024」、データ位置として「8492」が記憶されている。世代番号が「1」である場合の3レコード目に、バックアップボリューム番号として「A」、データバックアップ時間として「2018年11月9日10時43分30秒」、データバックアップサイズとして「81920」、データ位置として「9516」が記憶されている。
【0082】
[実施例の効果]
上記実施例によれば、CM2は、生成指示を受け付けると、論理ボリュームのバックアップを管理すべく、メモリ23上にバックアップデータ格納先として生成されたデータプール領域231から、バックアップ元ボリュームの全体のデータを格納するフルバックアップ領域231aと差分データを格納する世代別バックアップ領域231bとを生成する。CM2は、バックアップ指示を受け付けると、論理ボリュームの全体のデータをフルバックアップ領域231aに格納し、格納した後に、論理ボリュームに書き込まれたデータを世代別バックアップ領域231bに格納する。かかる構成によれば、CM2は、バックアップ領域をデータプールで共有化することで、フルバックアップの実行および差分バックアップの実行で個々のボリュームを使用しなくなるため、バックアップ手順の手間を少なくすることができる。すなわち、CM2は、ユーザからの生成指示およびバックアップ指示の2つの指示だけで、バックアップ対象ボリュームに対するバックアップ領域を生成し、フルバックアップおよび差分バックアップを実行することで、バックアップ手順を少なくできる。
【0083】
また、上記実施例によれば、CM2は、バックアップ指示を受け付けると、論理ボリュームの全体のデータをフルバックアップ領域231aに格納する。CM2は、論理ボリュームに対して書き込み要求があったとき、書き込み要求があったデータを論理ボリュームに書き込み、書き込み要求の要求元に書き込み要求に対する応答を通知する。そして、CM2は、書き込み要求があったデータを世代別バックアップ領域231bに格納する。かかる構成によれば、CM2は、コピーオンライト型のバックアップ方式(SnapOPC+)でなく、書き込み要求があったデータ自体をバックアップすることで、書き込みレスポンス時間を短縮することが可能となる。
【0084】
[その他]
なお、実施例では、ストレージ装置1は、2組のCM2および各CM2に接続される各ディスク3を備える場合について説明した。しかしながら、ストレージ装置1は、これらの数に限定されるものではない。また、実施例では、バックアップ対象ボリュームが2個の場合を説明したが、バックアップ対象ボリュームが3個の場合であっても、4個の場合であっても良く、数に限定されるのではない。
【0085】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、フルバックアップ制御部222と差分バックアップ制御部223とを1個の部として統合しても良い。一方、フルバックアップ制御部222を、バックアップ元である場合の第1のフルバックアップ制御部と、バックアップ先である場合の第2のフルバックアップ制御部とに分散しても良い。また、差分バックアップ制御部223を、バックアップ元である場合の第1の差分バックアップ制御部と、バックアップ先である場合の第2の差分バックアップ制御部とに分散しても良い。また、メモリ23に記憶された各種テーブルをCM2の外部装置としてネットワーク経由で接続するようにしても良い。
【0086】
また、実施例では、CM2が有する機能をソフトウェアによって実現することで、同様の機能を有する、例えばバックアップ制御プログラムを得ることができる。例えば、メモリ23は、バックアップ制御プログラムやプログラムの実行途中結果などを記憶する。CPU22は、メモリ23からバックアップ制御プログラムを読み出して実行する。
【0087】
また、バックアップ制御プログラムについては、必ずしも最初からメモリ23に記憶させておかなくても良い。例えば、CM2に挿入されるフレキシブルディスク(FD)、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)ディスク、光磁気ディスク、IC(Integrated Circuit)カード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、CM2がこれらからバックアップ制御プログラムを読み出して実行するようにしても良い。
【符号の説明】
【0088】
1 ストレージ装置
2 CM
21 CA
22 CPU
22A バックアップ制御部
221 データプール領域管理部
222 フルバックアップ制御部
223 差分バックアップ制御部
23 メモリ
231 データプール領域
231a フルバックアップ領域
231b 世代別バックアップ領域
232 データプール管理テーブル
233 データプール世代管理テーブル
24 DI
3 ディスク
9 ホスト装置