まず、本開示に関する技術的な検討事項等についてより詳細に説明する。説明の便宜上、以下においては、リンククローン方式を用いて作成された仮想マシンのバックアップを具体例として用いる。なお、本開示に係る技術は、係る具体例に限定されず、他のバックアップ処理(例えば、リンククロー方式以外の仮想マシンのバックアップ等)にも適用可能である。
リンククローン方式は、1以上の仮想マシンに共通するマシンイメージであるマスタイメージ(マスタボリューム)を設け、各仮想マシンの仮想ボリューム(クローンボリューム)において、マスタイメージとの差分データを管理する。リンククローン方式によれば、各仮想マシンのクローンボリュームの記憶に用いられるディスク容量を削減することができる。以下、マスタボリュームは、エンティティボリュームと記載される場合がある。また、あるエンティティボリュームに対する差分データを含むクローンボリュームを、係るエンティティボリュームから派生(生成)されたクローンボリュームと記載する場合がある。
リンククローン方式におけるデータアクセスの具体例を図1に示す。図1において、エンティティボリューム(EV0)は、1以上の仮想マシンから参照されるマスタボリュームを表す。クローンボリューム(CV0及びCV1)は、それぞれリンククローン方式により作成された仮想マシンの仮想ボリュームである。
クローンボリュームにおける、ある領域(例えば、あるアドレスにより特定される領域)に対するデータアクセスが発生した場合を想定する。ある領域について、クローンボリュームが、エンティティボリュームに対する差分データを保持していない場合、係るデータアクセスにより、エンティティボリュームのデータが参照される。図1に例示する具体例においては、例えば、CV0(クローンボリューム)の領域(例えば、ADDR_B、ADDR_C、ADDR_D)に対するデータアクセスが発生した場合、EV0において対応する領域(例えば、ADDR_B、ADDR_C、ADDR_D)のデータが参照される。同様に、CV1(クローンボリューム)の領域ADDR_A、ADDR_B、ADDR_Dに対するデータアクセスが発生した場合、EV0において対応する領域(ADDR_A、ADDR_B、ADDR_D)のデータが参照される。
一方、ある領域について、クローンボリュームが、エンティティボリュームに対する差分データを記憶している場合、係る領域にデータアクセスにより、クローンボリュームに記憶されたデータが参照される。図1に例示する具体例においては、例えば、CV0(クローンボリューム)の領域ADDR_Aに対するデータアクセスが発生した場合、クローンボリュームに記憶されたデータ(A1)が参照される。同様に、例えば、CV1(クローンボリューム)の領域ADDR_Cに対するデータアクセスが発生した場合、クローンボリュームに記憶されたデータ(C1)が参照される。
例えば、上記したようなデータアクセスの管理は、クローンボリュームとエンティティボリュームとの差分データの有無を管理する差分管理情報(例えば、図1の差分テーブル)を用いて実現されてよい。係る差分管理情報は、例えば、図1に示すように、ビットマップ(差分を含む領域には「1」が設定され、差分を含まない領域には「0」が設定される)を用いて表されてもよい。
リンククローン方式により作成された仮想マシンのクローンボリュームをバックアップすることを想定する。クローンボリュームは、例えば、システムのユーザ毎(又は仮想マシン毎)に提供されることもあり、場合によっては、数多くのクローンボリュームのバックアップが必要になる。
クローンボリュームのバックアップ(以下、「バックアップボリューム」と記載することがある)をバックアップ先に作成する方法の一つとして、例えば、クローンボリューム全体(全てのデータ)を、バックアップ先に転送する方法を用いることができる。しかしながら、係る方法を用いた場合、各クローンボリュームのバックアップに際して、エンティティボリュームに対する参照が発生する可能性がある。これにより、エンティティボリュームにおけるアクセス処理の負荷が増大する可能性がある。また、バックアップ元とバックアップ先とが通信回線を用いて接続されている場合、クローンボリュームのデータの転送により、通信量が増大する。このため、上記した方法を採用する場合、処理負荷及び通信量の増大など考慮して、バックアップのスケジューリングを行う必要があった。
これに対して、本開示に係る技術は、リンククローン方式にて作成したクローンボリュームをバックアップ先(リモートサイト)にバックアップするシステムにおいて、クローンボリューム間の差分に着目することで、バックアップ処理に要する通信量を削減可能な構成を実現する。また、本開示に係る技術は、クローンボリュームをバックアップする際に生じる、エンティティボリュームに対するアクセス負荷を軽減可能な構成を実現する。
以下の各実施形態を用いて説明する本開示に係るバックアップ技術は、例えば、以下のような処理を実行可能な構成を提供する。即ち、本開示に係るバックアップ技術は、共通のエンティティボリュームを参照する(即ち、共通のエンティティボリュームから派生した)1以上のクローンボリュームの間で、同じデータが記憶された領域と、異なるデータが記憶された領域とを特定可能である。本開示に係るバックアップ技術は、クローンボリューム(仮に「第1クローンボリューム」と記載する)をバックアップする際、当該クローンボリューム(第1クローンボリューム)と同じエンティティボリュームから派生した他のクローンボリューム(仮に「第2クローンボリューム」と記載する)が既にリモートサイトにバックアップされているか確認可能である。本開示に係るバックアップ技術は、第1クローンボリュームと第2クローンボリュームとにおいて異なるデータが記憶されている領域を、バックアップ元からリモートサイトに転送可能である。即ち、本開示に係るバックアップ技術は、リモートサイトに問い合わせることなく、第1クローンボリュームと第2クローンボリュームとにおいて同じデータが記憶された領域を特定可能であり、異なるデータが記憶されている領域をリモートサイトに送信可能である。これにより、例えば、第1ボリュームの少なくとも一部を複製したバックアップボリュームがリモートサイトに作成される。
本開示に係るバックアップ技術は、第2クローンボリュームがリモートサイトにバックアップされている場合、第1及び第2クローンボリュームにおいて同じデータが記憶されている領域を、第2クローンボリュームのバックアップボリュームから、第1ボリュームのバックアップボリュームに、リモートサイトにおいて複製することができる。これにより、第1ボリュームの全データを含むバックアップボリュームが、リモートサイトにおいて作成される。
上記のように構成された本開示に係るバックアップ技術によれば、バックアップ元から、リモートサイトに転送するクローンボリュームのデータを削減可能である。その理由は、第1クローンボリュームと、第2クローンボリュームとにおいて共通するデータを、バックアップ元からリモートサイトに転送する必要がないからである。また、これにより第1クローンボリュームをバックアップする際の、エンティティボリュームへのアクセスが低減される。その理由は、第1クローンボリュームと、第2クローンボリュームとにおいて共通するデータを、エンティティボリュームから取得する必要がないからである。また、あるデータがリモートサイトにバックアップされているか否かを、逐一リモートサイトに問い合わせる必要がない。
以下、各実施形態を用いて、本開示に係るバックアップ方法を実現可能な、ストレージ装置、ストレージ装置のバックアップ方法、ストレージ装置のバックアップシステム等について詳細に説明する。以下の各実施形態に記載されている装置、システム等の構成は例示であり、本開示に係る技術の範囲はそれらには限定されない。以下の各実施形態における装置、システムを構成する構成要素の区分け(例えば、機能的な単位による分割)は、本開示に係る技術を実現可能な一例である。本開示に係る技術の実現に際しては、以下の例示に限定されず、様々な構成が想定される。即ち、以下の各実施形態に例示する各構成要素は、更に分割されてもよい。また、以下の各実施形態における1以上の構成要素が、統合されてもよい。
本開示に係る技術は、単体の装置(物理的あるいは仮想的な装置)を用いて構成されてもよく、複数の離間した装置(物理的あるいは仮想的な装置)を用いて実現されてもよい。本開示に係る技術が複数の装置により実現(実装)される場合、各装置の間は有線、無線、又はそれらを適切に組み合わせた通信ネットワーク(通信回線)により通信可能に接続されてもよい。係る通信ネットワークは、物理的な通信ネットワークであってもよく、仮想的な通信ネットワークであってもよい。以下において説明する書く実施形態を実現可能なハードウェア構成については、後述する。
<第1の実施形態>
以下、図面を参照して本開示に係る技術の第1の実施形態について説明する。
[構成]
図2は、本実施形態におけるストレージ装置及びバックアップシステムの機能的な構成を例示するブロック図である。
図2において、プライマリサイト1にはストレージ装置102が配置され、リモートサイト2には、ストレージ装置202が配置される。ストレージ装置102は、例えば、バックアップ元のストレージ装置であり、ストレージ装置202は、例えば、バックアップ先のストレージ装置である。
プライマリサイト1とリモートサイト2とは、適切な通信回線を介して通信可能に接続されている。プライマリサイト1及びリモートサイト2は、例えば、1以上の物理的又は仮想的な情報処理装置等を用いて構成された単一のシステムに含まれてもよい。また、プライマリサイト1及びリモートサイト2は、例えば、物理的に離間した複数のシステムにより実現されてもよい。
プライマリサイト1とリモートサイト2とを接続する通信回線は、LAN(Local Area Network)等の狭域通信ネットワークであってもよく、インターネット等の広域通信ネットワークであってもよい。また、プライマリサイト1とリモートサイト2とが単一のシステムに含まれる場合、これらの間は適切な通信バスにより接続されてもよい。プライマリサイト1とリモートサイト2とを接続する通信回線は、有線、無線、又はそれらの組合せにより実現されてよい。また、プライマリサイト1とリモートサイト2とが仮想環境に構築される場合には、これらを接続する通信回線が仮想化されてもよい。
図2を参照すると、ストレージ装置102はホスト101と通信可能に接続され、ストレージ装置202はホスト201と通信可能に接続されている。
ホスト101は、例えば、コンピュータ等により構成された情報処理装置であってよい。ストレージ装置102は、ホスト101に対して記憶領域を提供する装置として機能してもよい。
以下図3を参照して、ストレージ装置102の機能的な構成について説明する。図3に例示する構成は、ストレージ装置102の一つの具体的な態様であり、本開示に係る技術は図3に例示する構成に限定されない。
ストレージ装置102は、バックアップ制御部103と、リモートコピー制御部104と、第1構成記憶部105と、ボリューム106とを含むよう構成されてよい。
バックアップ制御部103は、共通データテーブル作成部103aと、共通データコピー指示部103bと、コピーアドレス決定部103cとを含むよう構成される。
バックアップ制御部103は、ホスト101から、クローンボリューム106b(後述)をリモートサイト2へバックアップする命令(以下「リモートバックアップ命令」と記載)を受信する。バックアップ制御部103は、共通データテーブル作成部103aと、共通データコピー指示部103bと、コピーアドレス決定部103cとにおいて、受信した命令に応じた処理を実行し、ホスト101にレスポンスを返却する。
共通データテーブル作成部103aは、ボリューム管理テーブル105a(後述)を参照し、リモートバックアップ命令により指定されたバックアップ対象のクローンボリューム106bに関するエンティティボリューム106a(後述)から派生された、他のクローンボリュームを特定する。以下、説明の便宜上、リモートバックアップ命令により指定されたバックアップ対象のクローンボリュームを、仮に「バックアップ対象クローンボリューム」又は「第1クローンボリューム」と記載することがある。また、「第1クローンボリューム」が派生されたエンティティボリューム106aを、仮に「派生元エンティティボリューム」と記載する場合がある。また、「第1クローンボリューム」に関する「派生エンティティボリューム」と同じエンティティボリュームから派生された他のクローンボリューム106bを、仮に「第2クローンボリューム」と記載する場合がある。ボリューム管理テーブル105aの具体的態様については後述する。
共通データテーブル作成部103aは、例えば、以下のような処理を実現するよう構成されてよい。即ち、共通データテーブル作成部103aは、第1クローンボリュームに関する派生元エンティティボリュームから派生された1以上の第2クローンボリュームのうち、既にバックアップが実行(開始)された第2クローンボリュームを特定してよい。
一例として、共通データテーブル作成部103aは、例えば、係る1以上の第2クローンボリュームのうち、最初にバックアップが開始された第2クローンボリュームを特定してもよい。
共通データテーブル作成部103aは、第1クローンボリュームと、特定した第2クローンボリュームとにおいて、共通の(同じ)データ(以下「共通データ」と記載することがある)が記録されている領域を特定し、係る領域(以下「共通データ領域」と記載することがある)を示す情報を保持する共通データテーブル105dを作成する。
共通データテーブル作成部103aは、バックアップされる第1クローンボリュームごとに、共通データテーブル105dを作成してよい。共通データテーブル105dの具体的態様については、後述する。
共通データテーブル作成部103aは、例えば、第1クローンボリュームと、特定した第2クローンボリュームとにおいて、同じデータが記録されている領域を特定してもよい。係る領域は、例えば、クローンボリュームにおけるアドレスを用いて特定することができる。
共通データコピー指示部103bは、例えば、以下のような処理を実現するよう構成されてよい。即ち、共通データコピー指示部103bは、共通データテーブル105dの内容を含む命令(共通データコピー命令)を、リモートサイト2のストレージ装置202に送信する。
共通データコピー命令は、ストレージ装置202に対して、共通データテーブル105dの内容に応じて、ストレージ装置202に記憶されたバックアップボリューム205a(後述)の間で一部のデータをコピーすることを通知する命令である。
共通データコピー指示部103bは、例えば、ボリューム管理テーブル105aにおける、第1クローンボリュームのバックアップ状況(後述)に、「バックアップ中」(例えば、「バックアップ中」を示す値)を設定してよい。
コピーアドレス決定部103cは、例えば、以下のような処理を実現するよう構成されてよい。即ち、コピーアドレス決定部103cは、第1クローンボリュームにおける、共通データ領域とは異なる領域を、リモートサイト2にコピーする対象として特定し、コピーアドレステーブル105cを作成する。以下、クローンボリュームにおいて、リモートサイト2にコピーされる対象として特定された領域を、「リモートコピー領域」と記載することがある。リモートコピー領域は、クローンボリューム106bにおけるアドレスを用いて特定されてもよい。リモートコピー領域は、クローンボリューム106bにおけるページとして特定されてもよい。
コピーアドレステーブル105cは、例えば、クローンボリュームを構成する領域(例えば、アドレスにより特定される範囲)ごとに、当該領域がリモートコピー領域であるか否か示すフラグを保持してもよい。当該領域がリモートコピー領域である場合、例えば、係るフラグに値”1”が設定され、当該領域がリモートコピー領域でない場合、例えば、係るフラグに値”0”が設定されてもよい。コピーアドレステーブル105cの具体的態様については後述する。
リモートコピー制御部104は、リモートコピー検索部104aと、リモートコピー指示部104bとを含むよう構成される。
リモートコピー検索部104aは、例えば、以下のような処理を実行するよう構成されておい。即ち、リモートコピー検索部104aは、ボリューム管理テーブル105aを参照し、リモートサイトへのバックアップが実行されている(バックアップ状況に、「バックアップ中」が設定されている)クローンボリューム(第1クローンボリューム)を特定する。
リモートコピー検索部104aは、特定した第1クローンボリュームのコピーアドレステーブル105cから、リモートコピー領域を特定する。上記したように、リモートコピー領域は、リモートサイト2にコピーされる領域である。リモートコピー検索部104aは、例えば、コピーアドレステーブル105cにおいて、リモートコピー領域であることを示すフラグが設定されている領域(アドレス等)を、コピー対象として決定してもよい。
リモートコピー検索部104aは、ある第1クローンボリュームについてコピーする対象がない(リモートコピー領域がない)場合、ボリューム管理テーブル105aにおける当該クローンボリュームのバックアップ状況に「バックアップ済」(例えば、「バックアップ済」を示す値)を設定してよい。
リモートコピー指示部104bは、例えば、以下のような処理を実行するよう構成されたよい。即ち、リモートコピー指示部104bは、リモートコピー検索部104aが決定した、第1クローンボリュームにおけるリモートコピー領域のデータを、第1クローンボリュームから読み込む(リードする)。
リモートコピー指示部104bは、リードしたリモートコピー領域のデータをストレージ装置202におけるバックアップボリューム205aへ書きこむことを指示する命令(リモートコピー命令)を、ストレージ装置202に対して送信する。係るリモートコピー命令には、例えば、書き込み先の領域を特定可能な情報(アドレス等)と、書き込まれるデータ(リモートコピー領域のデータ)と、が含まれてもよい。
リモートコピー指示部104bは、ストレージ装置202からレスポンスを受信した際、コピーアドレステーブル105cにおいて、リモートサイト2へのコピーが完了したリモートコピー領域に、コピーが完了したことを示すフラグを設定してもよい。リモートコピー指示部104bは、例えば、コピーアドレステーブル105cにおいて、リモートサイト2へのコピーが完了したリモートコピー領域のフラグに”0”を設定してもよい。
第1構成記憶部105は、ボリューム管理テーブル105aと、差分テーブル105bと、コピーアドレステーブル105cと、共通データテーブル105dとを含むよう構成されてよい。上記各テーブルを実現可能なデータ構造は特に限定されない。各テーブルは、例えば、テーブル構造やデータベースを用いて各種データを保持してもよく、テーブル構造以外のデータ構造により、データを保持してもよい。
ボリューム管理テーブル105aは、エンティティボリューム106aとクローンボリューム106b(後述)との関係、及び、リモートサイトにバックアップされるクローンボリュームと、バックアップボリュームとの対応関係を保持するよう構成されたテーブルである。
図5は、ボリューム管理テーブル105aの一つの具体例を示す説明図である。ボリューム管理テーブル105aは、エンティティボリュームを特定可能な識別情報(エンティティボリューム番号501)と、クローンボリュームボリュームを特定可能な識別情報(クローンボリューム番号502)と、クローンボリュームと対応するバックアップボリュームを特定可能な識別情報(バックアップボリューム番号503)と、を含む。これらの識別情報は、例えば、ボリューム番号により表されてもよい。これらの識別情報は相互に関連付けされていてもよい。
また、ボリューム管理テーブル105aは、クローンボリュームごとに、リモートサイト2へのバックアップ処理の状況(バックアップ状況504)と、バックアップを開始した順序(バックアップ開始順序505)とを保持してもよい。具体例として、バックアップ状況504には、あるクローンボリュームがバックアップ済であることを示す値(「バックアップ済」)が設定されてよい。バックアップ状況504には、あるクローンボリュームに関するバックアップが進行中であることを示す値(「バックアップ中」)が設定されてよい。バックアップ状況504には、あるクローンボリュームがバックアップされていないことを示す値(「バックアップ未」)が設定されてよい。
差分テーブル105bは、クローンボリュームの領域ごとに、派生元のエンティティボリュームとは異なるデータが記憶されているか否かを表す情報(差分情報)を保持する。係る差分情報は、フラグとして保持されてもよい。以下、フラグが設定されるクローンボリュームの領域を、「ページ」と記載する場合がある。係るページは、例えば、アドレス(又はアドレス範囲)を用いて特定されてもよい。
図6は、差分テーブル105bの一つの具体例を示す説明図である。差分テーブル105bは、各クローンボリュームについて、ページ番号601により特定されるページごとに、派生元のエンティティボリュームと異なるデータが記憶されているか否かを表すフラグを保持する。例えば、あるページにフラグとして”1”が設定されている場合、クローンボリュームにおける当該ページには、エンティティボリュームとは異なるデータが記憶されている。即ち、この場合、クローンボリュームにける当該ページには、実データが存在する。例えば、あるページにフラグとして”0”が設定されている場合、クローンボリュームにおける当該ページのデータと、エンティティボリュームにおける当該ページのデータとは同一である。即ち、この場合、クローンボリュームにおける当該ページには実データが存在せず、当該ページがアクセスされた場合、エンティティボリュームにおける当該ページのデータが参照されてもよい。
例えば、共通データテーブル作成部103aは、あるクローンボリューム106bと、他のクローンボリューム106bとについて、ページごとのフラグの値(”0”又は”1”)について論理演算(例えば論理和(OR))を実行することができる。これにより、共通データテーブル作成部103aは、2つのクローンボリューム106bにおけるページごとに、共通するデータ(特には、エンティティボリューム106aと差分がないデータ)が含まれるか否かを、容易に判定可能である。
例えば、図6において、クローンボリュームCV0の”page2”にはフラグとして”1”が設定されているので、クローンボリュームCV0の”page2”には実データが存在する。一方、クローンボリュームCV0の”page3”にはフラグ”0”が設定されているので、クローンボリュームCV0の”page3”には実データが存在しない。クローンボリュームCV0の”page3”がアクセスされた場合、エンティティボリュームの”page3”が参照される。
差分テーブル105bは、図6に例示するように、ストレージ装置102に記憶される全てのクローンボリューム106bを含むテーブルとして構成されてもよい。他の具体例として、差分テーブル105bは、それぞれのクローンボリューム106bについて個別のテーブルとして構成されてもよい。
例えば、ストレージ装置102において、エンティティボリューム106aから、クローンボリューム106bが派生された際に、当該クローンボリューム106bに関する差分テーブル105bが生成されてもよい。差分テーブル105bが生成された際、クローンボリュームの各領域(ページ)には、フラグとして”0”が初期値として設定されてもよい。
ストレージ装置102が運用されている間、ストレージ装置102は、クローンボリューム106bに対するアクセスが発生した際、差分テーブル105bのフラグを適切に設定する。例えば、クローンボリューム106bのある領域(ページ)において、データの書き込み、削除、変更等が発生した場合を想定する。この場合、クローンボリューム106bにおけるページと、そのページに対応するエンティティボリューム106aにおけるページとには、異なるデータが記憶され得る。この場合、差分テーブル105bにおいては、係るページに、フラグとして”1”が設定される。また、クローンボリューム106bのある領域(ページ)のデータと、係るページに対応するエンティティボリューム106aにおけるページのデータとが同一になった場合、差分テーブル105bにおいては、係るページに、フラグとして”0”が設定されてもよい。
コピーアドレステーブル105cは、各クローンボリュームの領域(ページ)ごとに、リモートサイト2に対してデータのコピーを実行するか否かを表すフラグを保持するよう構成される。
図7は、コピーアドレステーブル105cの一つの具体例を示す説明図である。コピーアドレステーブル105cは、クローンボリューム番号702により特定されるクローンボリュームについて、ページ番号701で特定されるページごとに、当該ページをリモートサイト2にコピーするか否かを表すフラグを保持する。例えば、あるページにフラグとして”1”が設定されている場合、クローンボリュームにおける当該ページのデータは、リモートサイト2にコピーされる。例えば、あるページにフラグとして”0”が設定されている場合、クローンボリュームにおける当該ページのデータを、リモートサイト2にコピーする必要はない。この場合、係るページは、例えば、リモートサイト2に既にコピー済みであるか、又は、コピーする必要がないページである。
例えば図7において、クローンボリュームCV2の”page1”には、フラグ”1”が設定されているので、”page1”のデータをリモートサイト2にコピーする必要がある。一方、クローンボリュームCV1の”page0”には、フラグ”0”が設定されているので、”page2”のデータをリモートサイト2にコピーする必要はない。
共通データテーブル105dは、バックアップされる第1クローンボリュームの各ページについて、第2クローンボリュームにおける対応するページと共通するデータが記憶されているか否かを表すフラグを保持するよう構成される。
図8は、共通データテーブル105dの一つの具体例を示す説明図である。共通データテーブル105dにおいて、例えば、バックアップ中ボリューム802は、バックアップ中の第1クローンボリュームを表す。また、クローンボリューム番号803は、第1クローンボリュームの派生元エンティティボリュームから派生された、バックアップ済み又はバックアップ中の第2クローンボリュームを表す。共通データテーブル105dは、第1クローンボリュームの各ページ(ページ番号801)に、第2クローンボリュームにおける対応するページと共通するデータ(共通データ)が記憶されているか否かを表す情報(共通データ情報)を保持する。共通データ情報はフラグにより表されてもよい。例えば、あるページにフラグとして”1”が設定されている場合、第1クローンボリュームにおける当該ページと、第2クローンボリュームにおける当該ページとには、共通するデータが記憶されている。一方、あるページにフラグとして”0”が設定されている場合、第1クローンボリュームにおける当該ページと、第2クローンボリュームにおける当該ページとには、異なるデータが記憶されている。
例えば図8に示す具体例においては、クローンボリュームCV2が、バックアップされる第1クローンボリュームである。これに対して、クローンボリュームCV0の”page0”にはフラグ”1”が設定されている。係るフラグは、クローンボリュームCV2と、クローンボリュームCV0の”page0”には、同一のデータが記憶されていることを示す。一方、クローンボリュームCV1の”page0”にはフラグとして”0”が設定されている。係るフラグは、クローンボリュームCV2と、クローンボリュームCV1の”page0”には、異なるデータが記憶されていることを示す。
ボリューム106は、エンティティボリューム106aとクローンボリューム106bとを含むよう構成される。
エンティティボリューム106aは、リンククローン方式におけるマスタイメージに相当し、1以上のクローンボリューム106bに共通するデータを記憶するボリュームである。
クローンボリューム106bは、例えば、ユーザが使用する仮想マシンの仮想ボリュームであり、エンティティボリューム106aとの差分のデータを記憶する。1つのエンティティボリューム106aに対し、クローンボリューム106bは複数存在してよい。リンククローン方式の場合、例えば、仮想マシンごとに、エンティティボリューム106aから派生されたクローンボリューム106bが割り当てられてよい。
以下、図4を参照して、ストレージ装置202の具体的な構成について説明する。図4に例示する構成は、ストレージ装置202の一つの具体的な態様であり、本開示に係る技術は図4に例示する構成に限定されない。
ストレージ装置202は、リモート命令処理部203と、第2構成記憶部204とバックアップ先ボリューム205とを含むよう構成される。
リモート命令処理部203は、共通データコピー部203aと、リモートデータコピー部203bとを含、以下のような処理を実現するよう構成される。
リモート命令処理部203は、ストレージ装置102から各種命令を受信し、受信した命令の種類を判別する。以下、ストレージ装置102から受信する命令を、リモート命令と記載する場合がある。リモート命令には、例えば、上記説明した「共通データコピー命令」、「リモートコピー命令」等が含まれてよい。
リモート命令処理部203は、例えば、受信したリモート命令に応じて、共通データコピー部203a及びリモートデータコピー部203bの少なくとも一方における処理を実行し、ストレージ装置102にレスポンスを返却する。
共通データコピー部203aは、以下のような処理を実現するよう構成される。即ち、共通データコピー部203aは、受信した共通データコピー命令に含まれる共通データテーブルの内容を、共通データテーブル204aに保存する。
共通データコピー部203aは、共通データコピー命令により指定された共通データのコピー元であるバックアップボリュームに関するバックアップ処理(即ち、第2クローンボリュームに関するバックアップ処理)が完了するのを待つ。
共通データコピー部203aは、バックアップボリュームにおいて、共通データテーブル204aにフラグ”1”設定されているページを特定する。共通データコピー部203aは、係るページのアドレスを特定してもよい。
共通データコピー部203aは、コピー元のバックアップボリューム(第2クローンボリュームのバックアップボリューム)から、上記特定したページのデータを読み出し、バックアップ先バックアップボリューム(第1クローンボリュームのバックアップボリューム)へコピーする。これにより、各クローンボリュームのバックアップ先であるストレージ装置202において、既にバックアップが完了している第2クローンボリュームのバックアップボリュームから、第1クローンボリュームのバックアップボリュームに、少なくとも一部のデータがコピーされる。
リモートデータコピー部203bは、以下のような処理を実現するよう構成される。即ち、リモートデータコピー部203bは、リモートコピー命令により受信したデータ(リモートコピー領域のデータ)を、リモートコピー命令により指定されたバックアップ先のバックアップボリュームにおける特定の領域に書きこむ。リモートコピー命令により受信したデータの書き込み先は、ページ番号により指定されてもよく、アドレスにより指定されてもよい。
第2構成記憶部204は、共通データテーブル204aを含むよう構成される。係るテーブルを実現可能なデータ構造は特に限定されない。係るテーブルは、例えば、テーブル構造やデータベースを用いて各種データを保持してもよく、テーブル構造以外のデータ構造により、データを保持してもよい。
共通データテーブル204aは、共通データコピー命令で受信した共通データテーブルの内容を保存するよう構成される。共通データテーブル204aの具体的な構成は、例えば、共通データテーブル105dと同様としてよい。
バックアップ先ボリューム205は、1以上のバックアップボリューム205aから構成される。バックアップボリューム205aは、ストレージ装置102に記憶されたクローンボリューム106bのバックアップである。各バックアップボリューム205aは、クローンボリューム106bと1対1に対応していてもよい。また、一つのバックアップボリューム205aに、複数のクローンボリューム106bのバックアップデータが記録されてもよい。この場合、例えば、バックアップボリューム205aが複数の領域に分割され、それぞれの領域に対して、異なるクローンボリューム106bのバックアップデータが記録されてもよい。
[動作]
以下、本実施形態に係るストレージ装置の動作について、図面を参照して説明する。以下の各図面に例示するフローチャートは、ストレージ装置の動作の一具体例を示すものであり、本開示に係る技術はこれに限定されない。また、各フローチャートにおける処理(ステップ)は、処理の結果に影響しない範囲で、実行順序が変更されてもよく、一以上の処理(ステップ)が並行して実行されてもよい。
図9は、リモートバックアップ命令の処理を示すフローチャートである。
ストレージ装置102のバックアップ制御部103は、ホスト101から、クローンボリュームのバックアップを指示するバックアップ命令を受信する(ステップS901)。
共通データテーブル作成部103aは、ボリューム管理テーブル105aを参照し、上記受信したバックアップ命令により指定されたバックアップ対象のクローンボリューム106b(第1クローンボリュームを)を特定する。共通データテーブル作成部103aは、特定した第1クローンボリュームの派生元エンティティボリューム(エンティティボリューム106a)を特定する。そして、共通データテーブル作成部103aは、係る派生元エンティティボリュームから派生された他のクローンボリューム106b(第2クローンボリューム)のうち、バックアップ処理が開始されているクローンボリューム106bを特定する(ステップS902)。
共通データテーブル作成部103aは、例えば、最初にバックアップが開始されたクローンボリューム106bを、第2クローンボリュームとして特定してもよい。最初にバックアップが開始されたクローンボリューム106bについては、最初にバックアップが完了する可能性が高いと考えられる。これより、リモートサイト2のストレージ装置202におけるバックアップボリューム205aの間のコピーを、比較的早期に実行可能であると考えられる。
共通データテーブル作成部103aは、上記に限定されず、他の適切な基準を用いて、第2クローンボリュームを特定してもよい。共通データテーブル作成部103aは、例えば、第1クローンボリュームと同じ派生元エンティティボリュームから派生され、既にバックアップ処理が実行されている他のクローンボリューム106bのうち、第1クローンボリュームとの差異が最も少ないクローンボリューム106bを、第2クローンボリュームとして特定してもよい。この場合、リモートサイト2のストレージ装置202におけるバックアップボリューム205aの間で、より多くのデータをコピーすることが可能である。これにより、プライマリサイト1から、リモートサイト2へのデータの転送量を削減可能である。
共通データテーブル作成部103aは、差分テーブル105bを参照し、上記特定した第1クローンボリュームに関する差分情報と、第2クローンボリュームに関する差分情報と、から共通データテーブル105dを作成する(ステップS903)。
以下、共通データテーブル105dの作成手順について説明する。共通データテーブル作成部103aは、第2クローンボリュームの差分テーブル105bと、第1クローンボリュームの差分テーブル105bとについて、領域(ページ)ごとに論理和(OR)を算出する。即ち、共通データテーブル作成部103aは、第2クローンボリュームの差分テーブル105bにおけるフラグの値(”0”又は”1”)と、第1クローンボリュームの差分テーブル105bにおけるフラグの値(”0”又は”1”)と、の論理和を計算する。
共通データテーブル作成部103aは、係る計算の結果、フラグの値が”0”と算出された領域(ページ)を、共通データが記録された共通データ領域として特定することで、共通データテーブル105dを作成する。上記計算の結果、フラグの値が”0”と算出された領域は、第1クローンボリュームの差分テーブル105bと、第2クローンボリュームの差分テーブル105bと、において共にフラグの値が”0”である領域である。即ち、係る領域は、派生元のエンティティボリュームにおける対応する領域との差分がない領域である。なお、共通データテーブル作成部103aは、上記計算結果(フラグの値)を反転して、共通データテーブル105dに設定する。共通データテーブル作成部103aは、第2クローンボリュームが存在しない場合には、共通データテーブル105dのフラグを全て”0”としてよい。
図10に示す具体例を用いて、共通データテーブル105dの作成手順を説明する。図10に示す具体例の場合、共通のエンティティボリュームEV0から、クローンボリュームCV0、CV1、CV2が派生されている。クローンボリュームCV2は、バックアップ対象の第1クローンボリュームである。クローンボリュームCV0及びCV1は既にバックアップ処理が完了している。図10においては、説明の便宜上、各クローンボリュームの差分テーブル105bの一部が示されている。
エンティティボリュームEV0において、ADDR_Aの領域(ページ)にデータ”A0”が、ADDR_Bの領域(ページ)にデータ”B0”が、ADDR_Cの領域(ページ)にデータ”C0”が、ADDR_Dの領域(ページ)に、データ”D0”が、記憶されている。
クローンボリュームCV0は、ADDR_Aの領域(ページ)についてエンティティボリュームEV0と異なるデータ(”A1”)を記憶し、その他の領域についてはエンティティボリュームEV0と差分がない。
クローンボリュームCV1は、ADDR_Cの領域(ページ)についてエンティティボリュームEV0と異なるデータ(”C1”)を記憶し、その他の領域についてはエンティティボリュームEV0と差分がない。
クローンボリュームCV2は、ADDR_Dの領域(ページ)についてエンティティボリュームEV0と異なるデータ(”D1”)を記憶し、その他の領域についてはエンティティボリュームEV0と差分がない。
ホスト101からクローンボリュームCV2のバックアップが指示された場合、共通データテーブル作成部103aは、例えば、第2クローンボリュームとして、クローンボリュームCV0を特定する。共通データテーブル作成部103aは、クローンボリュームCV2の差分テーブル105bと、クローンボリュームCV0の差分テーブル105bとの論理和(OR)を計算する。共通データテーブル作成部103aは、計算結果のフラグの値が”0”のページを、共通データ領域として、クローンボリュームCV2とCV0との共通データテーブル105dを作成する。なお、共通データテーブル作成部103aは、共通データテーブル105dを作成する際、計算結果のフラグの値を反転(”0”を”1”に変更し、”1”を”0”に変更)する。
共通データコピー指示部103bは共通データテーブル105dの内容と、共通データ領域を保持するバックアップボリュームを特定可能な情報(例えば、ボリューム番号)とを含む、共通データコピー命令をリモートサイトのストレージ装置202に送信する(ステップS904)。
共通データコピー指示部103bは、ボリューム管理テーブル105aにおける、第1クローンボリュームに対するバックアップ状況504に「バックアップ中」を表す値を設定する(ステップS905)。この際、共通データコピー指示部103bは、バックアップ開始順序505を設定してもよい。
コピーアドレス決定部103cは、共通データテーブル105dにおいてフラグ”0”が設定されている領域(ページ)を特定する。コピーアドレス決定部103cは、当該領域をコピー対象のデータが含まれる領域として、コピーアドレステーブル105cを作成する(ステップS906)。一つの具体的な態様として、コピーアドレス決定部103cは、例えば、共通データテーブル105dのフラグを反転することでコピーアドレステーブル105cを作成してもよい。
図11、図12に示す具体例を用いて、コピーアドレステーブル105cの作成手順を説明する。図11、図12には、説明の便宜上、クローンボリューム、差分テーブル、コピーアドレステーブルの一部が、簡略化して表されている。
図11において、クローンボリュームCV0は、最初にバックアップされるクローンボリューム(即ち、エンティティボリュームEV0から派生されたクローンボリュームのうち、最初にバックアップされるクローンボリューム)であることを想定する。
この場合、リモートサイト2にバックアップされている他のクローンボリュームは存在しない。即ち、共通データを有する他のクローンボリュームのバックアップボリュームが、ストレージ装置202には存在しない。これより、クローンボリュームCV0については、全てのページ(ADDR_A〜ADDR_D)がコピー対象としてコピーアドレステーブル105cに登録されている。具体的には、コピーアドレステーブル105cにおいて、全てのページについてフラグとして”1”が設定されている。係るコピーアドレステーブル105cの内容に応じて、クローンボリュームCV0における全ページのデータが、ストレージ装置202におけるバックアップボリュームRV0にコピーされる。
図12においては、クローンボリュームCV0、CV1がバックアップ済みであり、クローンボリュームCV2がバックアップされることを想定する。クローンボリュームCV0及びCV2の差分テーブル105bから、共通データテーブル105dが作成される。作成される共通データテーブル105dの内容は、図10に例示する共通データテーブル105dと同様である。クローンボリュームCV2は、2つ目以降にバックアップされるクローンボリュームなので、既にクローンボリュームCV0がバックアップされている。これより、コピーアドレス決定部103cはクローンボリュームCV0と、CV2との共通データテーブル105dにおいて、フラグとして”0”が設定されているページを、コピー対象として特定する。コピーアドレス決定部103cは、例えば、クローンボリュームCV0とCV2との共通データテーブル105dにおけるフラグの値を反転(”0”と”1”とを反転)することで、コピーアドレステーブル105cを作成してもよい。
コピーアドレステーブル105cの作成が完了したら、バックアップ制御部103は、ホスト101へレスポンスを送信する(ステップS907)。
以下、リモートコピー命令を送信する処理について、図13を参照して説明する。
リモートコピー命令を送信する処理は、適切なタイミングで実行される。係る処理は、例えば、定期的(一定時間ごと)に実行されてもよい。
リモートコピー制御部104のリモートコピー検索部104aは、ボリューム管理テーブル105aを参照し、バックアップ中のクローンボリュームを特定する(ステップS1301〜ステップS1302)。
バックアップ中のクローンボリュームがない場合(ステップS1302において[NO])、リモートコピー検索部104aは、処理を完了してもよい。なお、この際、リモートコピー検索部104aは、例えば、次の実行タイミングを待ち合わせてもよい(ステップS1309)。
バックアップ中のクローンボリュームを特定した場合には(ステップS1302において[YES])、リモートコピー検索部104aは、特定したクローンボリュームのコピーアドレステーブル105cの内容を検索する(ステップS1303)。具体的には、リモートコピー検索部104aは、コピーアドレステーブル105cにおいて、リモートサイト2(ストレージ装置202)にコピーする必要があるページを検索する。リモートコピー検索部104aは、例えば、コピーアドレステーブル105cにおいて、フラグ”1”が設定されているページを検索してもよい。
リモートサイト2にコピーする必要があるページ(例えば、フラグ”1”が設定されたページ)が存在しない場合(ステップS1303において[NO])、リモートコピー検索部104aは、ステップS1301において特定したクローンボリュームのバックアップ状況を更新する。リモートコピー検索部104aは、例えば、ステップS1301において特定したクローンボリュームについて、ボリューム管理テーブル105aにおけるバックアップ状況504に、「バックアップ済」を表す値を設定し(ステップSS1304)、処理を終了する。リモートコピー検索部104aは、例えば、次の実行タイミングを待ち合わせてもよい(ステップS1309)。
リモートサイト2にコピーする必要があるページ(例えば、フラグとして”1”が設定されたページ)を特定した場合(ステップS1303において[YES])、リモートコピー指示部104bは、バックアップ中のクローンボリューム(ステップS1301において特定されたクローンボリューム)の当該ページのデータをリードする(ステップS1305)。
リモートコピー指示部104bは、リードしたデータを含むリモートコピー命令を、リモートサイト2のストレージ装置202に送信する(ステップS1306)。係るリモートコピー命令には、データが書き込まれる領域を特定可能な情報(例えば、コピー先のバックアップボリュームにおけるアドレス等)が含まれてもよい。
リモートコピー指示部104bは、リモートサイト2からレスポンスを受信し(ステップS1307)、コピーアドレステーブル105cを更新する(ステップS1308)。リモートコピー指示部104bは、例えば、コピーアドレステーブル105cにおいて、コピーが完了したページ(リモートサイト2からレスポンスを受信したページ)に、フラグ”0”を設定してよい。リモートコピー指示部104bは、ステップS1308を実行した後、処理を完了してもよい。なお、リモートコピー指示部104bにおける処理が完了した際、リモートコピー検索部104aは、例えば、次の実行タイミングを待ち合わせてもよい(ステップS1309)。
以下、リモートサイト2(ストレージ装置202)において、リモート命令処理について図14を参照して説明する。
リモートサイト2のストレージ装置202において、リモート命令処理部203が、ローカルサイトのストレージ装置102からのリモート命令を受信する(ステップS1301)。
リモート命令処理部203は、リモート命令の種類を判別する(ステップS1302)。具体的には、リモート命令処理部203は、例えば、リモート命令が「共通データコピー命令」であるか否かを判別してもよい(ステップS1402)。
受信したリモート命令が共通データコピー命令を受信した場合(ステップS1402において[共通データコピー命令])、共通データコピー処理(後述)が実行される(ステップS1403)。また、受信したリモート命令がリモートコピー命令の場合(ステップS1402において[リモートコピー命令])である場合、リモートデータコピー処理(後述)が実行される(ステップS1404)。リモート命令処理部203は、リモートコピー命令のレスポンスを送信元へ返却する(ステップS1405)。
以下、図15を参照して、共通データコピー処理について説明する。
共通データコピー部203aは、共通データコピー命令に含まれる共通データテーブルの内容を、ストレージ装置202の共通データテーブル204aに保存する(ステップS1501)。上記したように、共通データコピー命令に含まれる共通データテーブルには、ストレージ装置102における第1クローンボリュームと、第2クローンボリュームとにおいて共通する(同一の)データが記憶された領域(ページ)を特定可能な情報(フラグ)が含まれる。
共通データコピー部203aは、共通データコピー命令により指定された共通データのコピー元であるバックアップボリューム205aに関するバックアップ処理が完了しているか確認する(ステップS1502)。
共通データコピー命令により指定された共通データのコピー元であるバックアップボリューム205aは、第2クローンボリュームのバックアップボリュームに相当する。共通データコピー部203aは、例えば、第2クローンボリュームに関するバックアップ処理が完了しているか否かを確認してもよい。
コピー元のバックアップボリューム205aに関するバックアップ処理が完了していない場合(ステップS1502において[NO])、共通データコピー部203aは、係るバックアップ処理が完了するまで待ち合わせる(ステップS1503)。
コピー元のバックアップボリューム205aに関するバックアップ処理が完了している場合(ステップS1502において[YES])、共通データコピー部203aは、共通データテーブル204aを参照する。
共通データコピー部203aは、コピー元のバックアップボリューム205aからコピー先のバックアップボリューム205aにコピーされる領域(ページ)が共通データテーブル204aに設定されているか確認する(ステップS1504)。具体的には、共通データコピー部203aは、共通データテーブル204aに、フラグとして”1”が設定されているページが含まれるか確認する。
共通データテーブル204aに、フラグとして”1”が設定されているページが含まれる場合(ステップS1504においてYES)、共通データコピー部203aは、当該ページのデータを、コピー元のバックアップボリューム205aから読み込む(ステップS1505)。
共通データコピー部203aは、読み込んだデータを、コピー先のバックアップボリューム205aにおける同じページにコピーする(ステップS1506)。コピー先のバックアップボリューム205aは、第1クローンボリュームのバックアップボリュームに相当する。これより、第2クローンボリュームのバックアップボリューム205aから、第1クローンボリュームのバックアップボリューム205aにデータがコピーされる。
共通データコピー部203aは、共通データテーブル204aを更新する(ステップS1507)。共通データコピー部203aは、例えば、共通データテーブル204aにおいて、コピー元からコピー先へのコピーが完了したページのフラグを”0”に設定してよい。
共通データコピー部203aは、ステップS1504から処理を続行する。
共通データテーブル204aに、フラグとして”1”が設定されているページが含まれない場合(ステップS1504において[NO])、共通データコピー部203aは処理を完了する。
ステップ1503における、バックアップ完了の待ち合わせ処理においては、共通データコピー部203aは、バックアップが完了したか否かを、バックアップボリュームにおける領域(例えばページ等)ごとに管理してもよい。共通データコピー部203aは、例えば、バックアップが完了した領域(例えばページ等)から、順次共通データのコピーを実行することも可能である。共通データコピー部203aは、バックアップボリュームにおける領域を、アドレスを用いて特定してよい。
図16に示す具体例を用いて、バックアップボリューム205aの間におけるデータのコピーについて説明する。図16に示す具体例においては、クローンボリュームCV0が、ストレージ装置202にバックアップ済みのボリューム(第2クローンボリューム)であることを想定する。また、クローンボリュームCV2が、バックアップが実行されているボリューム(第1クローンボリューム)であることを想定する。また、バックアップボリュームRV0は、クローンボリュームCV0のバックアップボリュームであり、バックアップボリュームRV2は、クローンボリュームCV2のバックアップボリュームであることを想定する。
クローンボリュームCV0と、CV2との共通データテーブル105dの内容を含む共通データコピー命令が、リモートサイト2に送信される。リモートサイト2において、共通データコピー部203aは、係る共通データコピー命令に含まれる共通データテーブルの内容を、共通データテーブル204aに保存する。
図16に例示するように、共通データテーブル204aにおいては、ADDR_B、ADDR_Cのページについて、フラグとして”1”が設定されている。これより、共通データコピー部203aは、共通データテーブル204aにおいてフラグとして”1”が設定されているページのデータを、バックアップボリュームRV0から、バックアップボリュームRV2にコピーする。具体的には、共通データコピー部203aは、バックアップボリュームRV0におけるADDR_Bのページに含まれるデータを、バックアップボリュームRV2のADDR_Bのページにコピーする。また、共通データコピー部203aは、バックアップボリュームRV0におけるADDR_Cのページに含まれるデータを、バックアップボリュームRV2のADDR_Cのページにコピーする。
上記処理により、リモートサイト2(ストレージ装置202)において、第2クローンボリュームのバックアップボリューム(RV0)から、第1クローンボリュームのバックアップボリューム(RV2)に、データがコピーされる。このため、クローンボリュームCV2におけるADDR_B、ADDR_Cのページに記録されたデータを、ストレージ装置102からストレージ装置202に転送する必要がない。
以下、図17を参照して、リモートデータコピー処理について説明する。
リモートデータコピー部203bは、リモートコピー命令に含まれるデータを読み出す。リモートデータコピー部203bは、読み出したデータを、当該命令により指定された、バックアップボリューム205aにおける特定の領域に書き込む(ステップS1701)。
再び図12に示す具体例を用いて、リモートデータコピー処理について説明する。図12の具体例の場合、クローンボリュームCV2においてADDR_A、ADDR_Dにより特定される領域が、リモートコピー命令により、バックアップボリュームRV2にコピーされる。
ストレージ装置102、ストレージ装置202を上記のように構成することで、第1クローンボリュームと、第2クローンボリュームとの間で共通するデータを、プライマリサイト1から、リモートサイト2に転送する必要がない。その理由は、リモートサイト2におけるストレージ装置202が、バックアップ済みのバックアップボリュームから、他のバックアップボリュームに対して、共通するデータをコピー可能だからである。これにより、プライマリサイト1から、リモートサイト2へのデータの転送量が削減されることから、回線遅延の発生、及びバックアップ時間の遅延による業務(オペレーション)への影響等も、低減可能である。
図18は、本開示に係る技術の対比として、クローンボリューム全体をそのままリモートサイト2にバックアップする方法を採用した場合のバックアップ過程を模式的に表す説明図である。
クローンボリュームCV0、CV1、CV2については、それぞれ、バックアップボリュームRV0、RV1、RV2にバックアップが作成される。クローンボリューム全体を、そのままリモートサイト2にバックアップする場合、それぞれのクローンボリュームについて全てのデータがリモートサイト2に送信される。これにより、大量のデータが転送される。
図18の例においては、クローンボリュームCV2をバックアップする際、ADDR_A、ADDR_B、ADDR_C、ADDR_Dにより特定される領域に記憶されたデータが、全てリモートサイト2に転送される。図18の例においては、クローンボリュームCV0と、CV2との間で共通するデータ(ADDR_B,ADDR_D)が、既にリモートサイト2におけるバックアップボリュームRV0に記録されている。しかしながら、クローンボリュームCV2をバックアップする際、これらのデータがバックアップボリュームRV2の作成に用いられることはない。
これに対して、上記実施形態を用いて説明した本開示に係る技術によれば、例えば、図10、図12、図16に示す具体例のように、クローンボリュームCV0と、クローンボリュームCV2とで共通するデータは、リモートサイト2においてコピーされる(図16)。即ち、リモートサイトにおいてコピーされない領域が、プライマリサイト1からリモートサイト2に転送されることから、転送されるデータ量を削減することが可能である。なお、上記説明した本実施形態の場合、共通データコピー命令により、共通データテーブル105dの内容がプライマリサイト1から、リモートサイト2に転送される。しかしながら、共通データテーブル105dの内容は、例えば、クローンボリュームにおける領域(例えばページ)ごとのビットマップ(フラグとして”1”又は”0”が設定されたビットマップ)として表すことが可能である。共通データテーブル105dのデータ量は、クローンボリューム全体のデータ量に比べて少ないことから、プライマリサイト1からリモートサイト2に転送されるデータ量が削減される。
図19は、クローンボリューム全体をそのままリモートサイト2にバックアップする方法を用いて、複数のクローンボリュームをリモートサイト2にバックアップした場合の動作を模式的に示す説明図である。クローンボリュームをバックアップする際、エンティティボリュームEV0と差分がない領域(差分テーブル105bにおいてフラグ”0”が設定されている領域)については、エンティティボリュームEV0のデータが参照される。図19の例においては、例えば、クローンボリュームCV1、CV2をバックアップする際に、エンティティボリュームEV0の領域が重複して参照される。このように、クローンボリューム全体をそのままリモートサイト2にバックアップする方法を用いた場合、エンティティボリュームEV0に対するアクセスが集中する。これにより、エンティティボリュームEV0の処理負荷が増大する可能性がある。
これに対して、図20は、本実施形態を用いて、複数のクローンボリュームをリモートサイト2にバックアップした場合の動作を模式的に示す説明図である。図20の例では、クローンボリュームCV0とCV1とに共通するデータが、バックアップボリュームRV0から、バックアップボリュームRV1にコピーされる。クローンボリュームCV0とCV2とに共通するデータが、バックアップボリュームRV0から、バックアップボリュームRV2にコピーされる。即ち、各クローンボリューム(CV1、CV2)をバックアップする際、これらのデータについては、エンティティボリュームEV0を参照する必要がない。これにより、本実施形態に依れば、エンティティボリュームEV0に対するアクセスを低減することが可能である。
上記説明した本実施形態について、以下のような変形例(バリエーション)が考えられる。以下において説明する本実施形態の変形例を第1変形例と記載する場合がある。
第1変形例を実現可能な機能的な構成は、第1の実施形態の構成(図2)と同様としてよい。第1変形例においては、一部の構成要素の機能(処理)が、第1の実施形態から拡張されている。
第1変形例におけるバックアップ制御部103の共通データテーブル作成部103aは、ボリューム管理テーブル105aを参照する。共通データテーブル作成部103aは、バックアップされるクローンボリューム(第1クローンボリューム)と同じ派生元エンティティボリュームから派生された他のクローンボリュームのうち、複数のバックアップ中又はバックアップ済みのクローンボリューム(第2クローンボリューム)を特定する。共通データテーブル作成部103aは、例えば、ある第1クローンボリュームに対して、1つずつ全ての第2クローンボリュームを特定してもよい。
共通データテーブル作成部103aは、特定した第2クローンボリュームごとに、第1クローンボリュームと同一のデータ(共通データ)が記憶された領域(アドレス)を示す共通データテーブル105dを作成する。
共通データコピー指示部103bは、共通データテーブル作成部103aが作成した共通データテーブル105dごとに、共通データコピー命令をリモートサイト2のストレージ装置202に送信する。この場合、共通データコピー指示部103bは、各共通データテーブル105dについて個別の共通データコピー命令を送信してもよく、一つの共通データコピー命令に、1以上の共通データテーブル105dの内容を含めてもよい。
以下、第1変形例におけるリモートバックアップ命令の処理について図21に例示するフローチャートを参照して説明する。
ストレージ装置102のバックアップ制御部103が、ホスト101からリモートバックアップ命令を受信する(ステップS2101)。
共通データテーブル作成部103aは、ボリューム管理テーブル105aを参照し、リモートバックアップ命令により指定されたクローンボリューム106b(第1クローンボリューム)に関する第2クローンボリュームを特定する(ステップS2102)。共通データテーブル作成部103aは、第2クローンボリュームが複数存在する場合、その全てを特定してもよい。
上記したように、第2クローンボリュームは、第1クローンボリュームと同じ派生元のエンティティボリューム106aから派生された他のクローンボリューム106bである。第2クローンボリュームは、既にリモートサイト2にバックアップされているか、バックアップ処理が実行されている。
共通データテーブル作成部103aは、第1クローンボリュームとの共通データテーブル105dが作成されていない第2クローンボリュームがあるか確認する(ステップS2103)。共通データテーブル105dが作成されていない第2クローンボリュームがある場合(ステップS2103においてYES)、係る第2クローンボリュームを選択する。
共通データテーブル作成部103aは、当該選択された第2クローンボリュームと、第1クローンボリュームとの共通データテーブル105dを作成する(ステップS2104)。
共通データテーブル作成部103aは、例えば、ある第2クローンボリュームに関する差分テーブル105bと、第1クローンボリュームに関する差分テーブル105bと、既に作成されている共通データテーブル105dとに基づいて、共通データテーブル105dを作成することができる。
共通データテーブル作成部103aは、例えば、ある第2クローンボリュームに関する差分テーブル105bと、第1クローンボリュームに関する差分テーブル105bと、既に作成されている他の共通データテーブル105dとの論理和(OR)を算出する。共通データテーブル作成部103aは、例えば、各テーブルに設定された、ボリュームの領域(例えばページ)ごとに設定されたフラグの値(”1”または”0”)の論理和を計算してもよい。共通データテーブル作成部103aは、係る演算の結果、フラグの値が”0”である領域(ページ)を、共通データ領域として設定することで、共通データテーブル105dを作成する。
共通データテーブル作成部103aは、例えば、全ての第2クローンボリュームについて共通データテーブル105dが作成されるまで、ステップS2103からステップS2104を繰り返し実行してもよい。
図22に示す具体例を用いて、共通データテーブル105dの作成手順を説明する。図22の例の場合、クローンボリュームCV0、CV1及びCV2は、共通のエンティティボリュームEV0から派生されたことを想定する。クローンボリュームCV0、CV1については、既にリモートサイト2へのバックアップが完了しており、クローンボリュームCV2に関するバックアップ処理が実行されることを想定する。即ち、クローンボリュームCV1が第1クローンボリュームであり、クローンボリュームCV1、CV2が、クローンボリュームCV1に関する第2クローンボリュームである。また、クローンボリュームCV0と、CV2との間の共通データテーブル105dが既に作成されていることを想定する。
共通データテーブル作成部103aは、クローンボリュームCV1を選択し、クローンボリュームCV1と、クローンボリュームCV2との間の共通データテーブル105dを作成する。共通データテーブル作成部103aは、クローンボリュームCV2の差分テーブル105b、クローンボリュームCV1の差分テーブル105b、及び、CV2とCV0との共通データテーブル105dについて、各領域(ページ)に設定されたフラグの値の論理和(OR)を演算する。
共通データテーブル作成部103aは、演算結果においてフラグの値が”0”である領域を共通データ領域として設定することで、クローンボリュームCV1とCV2との共通データテーブル105dを作成する。この際、共通データテーブル作成部103aは、演算結果のフラグの値を反転(”0”を”1”に反転、”1”を”0”に反転)することで、クローンボリュームCV1とCV2との共通データテーブル105dを作成してもよい。
共通データコピー指示部103bは、リモートサイト2に送信されていない共通データテーブル105dがあるか確認する(ステップS2105)。
リモートサイト2に送信されていない共通データテーブル105dがある場合(ステップS2105においてYES)、共通データコピー指示部103bは、その共通データテーブル105dの内容を含む共通データコピー命令を、リモートサイト2のストレージ装置202に送信する(ステップS2106)。共通データコピー命令には、共通データテーブル105dと、共通データを保持するバックアップボリュームを特定可能な情報(例えば、ボリューム番号)とが含まれてもよい。
共通データコピー指示部103bは、ボリューム管理テーブル105aにおける、第1クローンボリュームに対するバックアップ状況504に「バックアップ中」を表す値を設定する(ステップS2107)。
共通データコピー命令を送信することにより、ストレージ装置202において、第2クローンボリュームのバックアップボリューム205aから、第1クローンボリュームのバックアップボリューム205aに共通データをコピーする処理が、別途実行される。例えば、図22に示す具体例の場合、バックアップボリュームRV0における、ADDR_B及びADDR_Cにより特定される領域が、バックアップボリュームRV2における同じ領域にコピーされる。同様に、バックアップボリュームRV1における、ADDR_Aにより特定される領域が、バックアップボリュームRV2における同じ領域にコピーされる。
コピーアドレス決定部103cは、第1クローンボリュームに関するコピーアドレステーブルを作成する(ステップS2108)。コピーアドレス決定部103cは、例えば、それぞれの第2クローンボリュームと、第1クローンボリュームとに関する共通データテーブル105dの領域ごとに、フラグの値の論理和(OR)を算出する。
コピーアドレス決定部103cは、係る計算の結果、フラグの値が”0”と算出された領域を、コピー対象のデータが含まれる領域として、コピーアドレステーブル105cを作成する。一つの具体的な態様として、コピーアドレス決定部103cは、例えば、算出されたフラグの値を反転してもよい。
図23に示す具体例を用いて、コピーアドレステーブル105cの作成手順について説明する。図23の例には、図22と同様、クローンボリュームCV0、CV1及びCV2は、共通のエンティティボリュームEV0から派生されたことを想定する。クローンボリュームCV0、CV1については、既にリモートサイト2へのバックアップが完了しており、クローンボリュームCV2に関するバックアップ処理が実行されることを想定する。また、クローンボリュームCV0、CV1、CV2について、共通データテーブル105dが既に作成されていることを想定する。
コピーアドレス決定部103cは、クローンボリュームCV0とCV2との共通データテーブル105dと、クローンボリュームCV0とCV1との共通データテーブル105dとの各領域について、フラグの値の論理和(OR)を算出する。コピーアドレス決定部103cは、計算されたフラグの値が”0”の領域を、コピー対象のデータを含む領域として特定し、コピーアドレステーブル105cを作成する。図23の例の場合、上記計算の結果、ADDR_A、ADDR_B、ADDR_Cにより特定される領域のフラグは”1”であり、ADDR_Dにより特定される領域のフラグが”0”である。コピーアドレス決定部103cは、算出されたフラグの値を反転することで、コピーアドレステーブル105cを作成してもよい。これにより、図23の例の場合、コピーアドレステーブル105cにおいて、ADDR_A、ADDR_B、ADDR_Cにより特定される領域のフラグに値”0”が設定され、ADDR_Dにより特定される領域のフラグに値”1”が設定される。
バックアップ制御部103は、ホスト101へレスポンスを送信する(ステップS2109)。
上記説明した第1実施形態においては、ある一つの第2クローンボリュームのバックアップボリュームから、第1クローのボリュームのバックアップボリュームに、共通データがコピーされる。これに対して、上記のように構成された第1変形例の場合、例えば、複数の第2クローンボリュームのバックアップボリュームから、第1クローンボリュームのバックアップボリュームに、共通データがコピーされる。即ち、第1変形例は、第1実施形態に比して、共通データをコピーするコピー元のバックアップボリュームを増やすことができる。これより、第1変形例によれば、バックアップデータの転送に要する通信量をより低減可能であり、エンティティボリューム106aに対するアクセス負荷をより低減可能である。
図24は、第1変形例を用いて、複数のクローンボリュームをリモートサイト2にバックアップした場合の動作を模式的に示す説明図である。図24の例では、クローンボリュームCV0とCV1とに共通するデータが、バックアップボリュームRV0から、バックアップボリュームRV1にコピーされる。クローンボリュームCV0とCV2とに共通するデータが、バックアップボリュームRV0から、バックアップボリュームRV2にコピーされる。また、クローンボリュームCV1とCV2とに共通するデータが、バックアップボリュームRV1から、バックアップボリュームRV2にコピーされる。これにより、図20に示す具体例(第1実施形態)に比して、クローンボリュームCV2からバックアップボリュームRV2にコピーされるデータ(即ち、プライマリサイト1からリモートサイト2に転送されるデータ)が更に削減されている。また、プライマリサイト1において、エンティティボリュームEV0に対する参照が削減されている。
<第2の実施形態>
上記説明した第1の実施形態及びその変形例の基礎となる実施形態である、第2の実施形態について説明する。
図25は、本実施形態におけるストレージ装置2500の機能的な構成を例示するブロック図である。本実施形態におけるストレージ装置2500は、例えば、バックアップ対象のデータを記憶するストレージ装置(バックアップ元のストレージ装置)である。
ストレージ装置2500は、バックアップデータを記憶する他のストレージ装置を含むリモートサイトと、適切な通信方法により通信可能に接続されていてもよい。ストレージ装置2500と、リモートサイトにおける他のストレージ装置とは、例えば、同じ情報処理システムに含まれてもよく、異なる情報処理システムに含まれてもよい。
ストレージ装置2500は、バックアップ制御部2501と、リモートコピー制御部2502と、1以上のボリューム2503と、を含むよう構成される。ストレージ装置2500を構成するこれらの構成要素は、適切な通信方法を用いて通信可能に接続されていてもよい。
バックアップ制御部2501は、以下のような処理(オペレーション)を実現するよう構成される。即ち、バックアップ制御部2501は、データを記憶可能な記憶領域により構成される第1ボリュームと、データを記憶可能な記憶領域により構成される1以上の第2ボリュームとの間で、共通するデータが記憶された領域である共通データ領域を特定する。第1ボリューム及び第2ボリュームは、例えば、上記第1実施形態におけるクローンボリューム106bと同様に構成されてもよい。
バックアップ制御部2501は、第1ボリュームのバックアップに関する指示を、第2ボリューム及び第1ボリュームのバックアップデータを保持するよう構成されたリモートサイトに送信する。係る指示は、例えば、共通データ領域を特定可能な情報を含み、上記共通データ領域に記憶されたデータを、第2ボリュームのバックアップデータから第1ボリュームのバックアップデータに、リモートサイトにおいてコピーすることを表す命令であってもよい。
バックアップ制御部2501は、例えば、上記各実施形態及び変形例におけるバックアップ制御部103及び第1構成記憶部105として実現されてもよい。
リモートコピー制御部2502は、以下のような処理(オペレーション)を実現するよう構成される。即ち、リモートコピー制御部2502は、第1ボリュームにおける共通データ領域とは異なる領域を特定し、その特定された領域に記憶されたデータを上記リモートサイトに送信する。
リモートコピー制御部2502は、例えば、上記各実施形態及び変形例におけるリモートコピー制御部104及び第1構成記憶部105として実現されてもよい。
ボリューム2503は、データを記憶可能な記憶領域により構成された、記憶部である。ボリューム2503は、物理的あるいは仮想的な記憶装置により実現可能である。上記第1ボリューム及び第2ボリュームは、ボリューム2503により実現されてよい。ボリューム2503は、例えば、上記各実施形態及び変形例におけるボリューム106として実現されてもよい。
上記のように構成された本実施形態におけるストレージ装置2500の動作について説明する。
バックアップ制御部2501は、例えば、あるボリューム2503をバックアップする命令等をきっかけとして、処理を開始してよい。
バックアップ制御部2501は、バックアップ対象の第1ボリューム(ボリューム2503)と、少なくとも一部の領域に第1ボリュームと同じデータが記憶された第2ボリューム(他のボリューム2503)とを特定する。第2ボリュームは、例えば、リモートサイトへのバックアップ処理が実行中であるか、又は、バックアップ処理が既に完了しているボリューム2503であってもよい。
バックアップ制御部2501は、第1ボリュームと、第2ボリュームとにおいて、同じデータが記録された領域である共通データ領域を特定する。バックアップ制御部2501は、共通データ領域のアドレスを特定してもよい。
バックアップ制御部2501は、第1ボリュームのバックアップに関する指示を、第2ボリューム及び第1ボリュームのバックアップデータを保持するよう構成されたリモートサイトに送信する。係る指示には、共通データ領域を特定可能な情報が含まれてよい。係る指示には、共通データ領域を含む第2ボリュームを特定可能な情報が含まれてもよい。
係る指示により、リモートサイトにおいて、共通データ領域に記憶されたデータが、第2ボリュームのバックアップデータから第1ボリュームのバックアップデータにコピーされる。これより、ストレージ装置2500は、リモートサイトに対して、共通データ領域に記憶されたデータを転送する必要がない。
リモートコピー制御部2502は、第1ボリュームにおける共通データ領域とは異なる領域を特定する。そして、リモートコピー制御部2502は、その特定された領域に記憶されたデータを上記リモートサイトに送信する。送信されたデータは、リモートサイトにおいて、第1ボリュームのバックアップデータに書き込まれる。これにより、ストレージ装置2500から、共通データ領域とは異なる領域に記憶されたデータがリモートサイトに対して転送される。
上記のように構成された第2の実施形態におけるストレージ装置2500は、第1ボリュームをリモートサイトバックアップする際の通信量を低減できる。その理由は、ストレージ装置2500は、リモートサイトに対して、第1ボリュームと、第2ボリュームとの共通データをリモートサイトにおいてコピーするよう指示するからである。また、ストレージ装置2500は、第1ボリュームにおける共通データ領域以外のデータを、リモートサイトに送信するからである。即ち、本実施形態におけるストレージ装置2500は、第1ボリュームをバックアップする際には、第1ボリュームと第2ボリュームとの共通データ領域に含まれるデータを、リモートサイトに転送する必要がない。これにより、リモートサイトに転送されるデータ量が低減される。
以下、図26を参照して、上記説明した第2実施形態の変形例(バリエーション)について説明する。図26において、ボリューム2503は、リンククローン方式におけるクローンボリュームであり、ある共通のエンティティボリューム2601から派生される。
バックアップ制御部2501は、バックアップ対象のボリューム2503(第ボリューム)と同じ派生元のエンティティボリューム2601から派生された、他のボリューム2503を、第2ボリュームとして特定する。
バックアップ制御部2501は、第1ボリュームとエンティティボリュームとの差分、及び、第2ボリュームとエンティティボリュームとの差分とから、第1ボリュームと第2ボリュームとの共通データ領域を特定してもよい。第1ボリュームとエンティティボリュームとの差分、及び、第2ボリュームとエンティティボリュームとの差分は、例えば、上記第1実施形態のように、差分テーブル(105b)の形式で表されてもよい。共通データ領域は、上記第1実施形態のように、共通データテーブル(105d)の形式で表されてもよい。
リモートコピー制御部2502は、例えば、上記特定した共通データ領域とは異なる領域を、リモートサイトにコピーする領域(リモートコピー領域)として特定してもよい。リモートコピー領域は、上記第1の実施形態のように、コピーアドレステーブル(105c)の形式で表されてもよい。
図26に例示する変形例によれば、リンクローン方式によるクローンボリュームをバックアップする際、上記第2の実施形態のように、リモートサイトに転送されるデータ量を低減可能である。
また、図26に例示する変形例によれば、ある第1ボリュームをバックアップする際に発生する、エンティティボリューム2601へのアクセス負荷を低減可能である。その理由は、ストレージ装置2500は、第1ボリュームと第2ボリュームとの共通データ領域を転送する必要がなく、共通データ領域については、エンティティボリュームへの参照(アクセス)が発生しないからである。
<第3の実施形態>
上記説明した第1の実施形態及びその変形例の基礎となる実施形態である、第3の実施形態について説明する。
図27は、本実施形態におけるストレージ装置2700の機能的な構成を例示するブロック図である。本実施形態におけるストレージ装置2700は、例えば、あるボリュームに関するバックアップデータを記憶するストレージ装置(バックアップ先のストレージ装置)である。
ストレージ装置2700は、バックアップされるボリュームを有する他のストレージ装置を含むプライマリサイトと、適切な通信方法により通信可能に接続されていてもよい。ストレージ装置2700と、プライマリサイトにおける他のストレージ装置とは、例えば、同じ情報処理システムに含まれてもよく、異なる情報処理システムに含まれてもよい。プライマリサイトにおける他のストレージ装置は、例えば、上記第1の実施形態及びその変形例におけるストレージ装置102であってもよく、上記第2の実施形態におけるストレージ装置2500であってもよい。
ストレージ装置2700は、リモート命令処理部2701と、1以上のバックアップボリューム2702と、を含むよう構成される。ストレージ装置2700を構成するこれらの構成要素の間は、適切な通信方法を用いて通信可能に接続されていてもよい。
バックアップボリューム2702は、他のストレージ装置に記憶されたボリュームに関するバックアップデータを記憶する。
リモート命令処理部2701は、以下のような処理(オペレーション)を実現するよう構成される。即ち、リモート命令処理部2701は、他のストレージ装置に含まれる記憶領域である第1ボリュームのバックアップに関する指示(命令)を受信する。係る命令には、他のストレージ装置に含まれる第1ボリュームと、第2ボリュームとの間で、共通のデータが記憶された領域である共通データ領域を特定可能な情報が含まれていて良い。
他のストレージ装置に含まれる第2ボリュームは、第1ボリュームとは異なる記憶領域であり、少なくともその一部の記憶領域に第1ボリュームと同じデータが記憶されていてもよい。第1及び第2ボリュームは、上記第1実施形態におけるクローンボリューム106bと同様に構成されてもよい。
ストレージ装置2700において、第1ボリュームのバックアップデータ及び第2ボリュームのバックアップデータは、例えば、それぞれ異なるバックアップボリューム2702に記憶されてよい。
他のストレージ装置から受信した命令に応じて、リモート命令処理部2701は、共通データ領域に含まれるデータを、第2ボリュームのバックアップデータを記憶するバックアップボリューム2702から、第1ボリュームのバックアップデータを記憶するバックアップボリューム2702にコピーする。
リモート命令処理部2701は、他のストレージ装置から、当該他のストレージ装置における第1ボリュームに記憶されたデータの少なくとも一部(例えば、他のストレージ装第1ボリュームにおける、共通データ領域とは異なる領域に記憶されたデータ)を受信する。リモート命令処理部2701は、受信したデータを、第1ボリュームに関するバックアップボリュームに書き込む。
リモート命令処理部2701は、例えば、上記第1の実施形態及び変形例におけるリモート命令処理部203及び第2構成記憶部204として実現されてもよい。
バックアップボリューム2702は、データを記憶可能な記憶領域により構成された記憶部である。バックアップボリューム2702は、物理的あるいは仮想的な記憶装置により実現可能である。バックアップボリューム2702は、他のストレージ装置におけるボリューム(例えば、クローンボリューム106b、ボリューム2503等)のバックアップデータを記憶するよう構成される。
バックアップボリューム2702は、例えば、上記第1の実施形態及び変形例におけるバックアップボリューム205aとして実現されてもよい。
上記のように構成された本実施形態におけるストレージ装置2700の動作について説明する。
リモート命令処理部2701は、他のストレージ装置から、当該他のストレージ装置に記憶された第1ボリュームのバックアップに関する命令を受信する。上記したように、当該命令には、他のストレージ装置における第1ボリュームと第2ボリュームとの間の共通データ記憶領域を特定可能な情報が含まれてよい。
リモート命令処理部2701は、受信した命令に応じて、第2ボリュームのバックアップボリューム2702の共通データ領域に記憶されたデータを、第1ボリュームのバックアップボリューム2702にコピーする。この際、リモート命令処理部2701は、第2ボリュームに関するバックアップ処理の完了を待ってもよい。
これにより、他のストレージ装置における第1ボリュームと第2ボリュームとの共通データ領域に含まれるデータが、ストレージ装置2700におけるバックアップボリューム2702の間でコピーされる。即ち、ストレージ装置2700は、係る共通データ領域に含まれるデータを、他のストレージ装置から受信する必要がない。
リモート命令処理部2701は、また、他のストレージ装置から、第1ボリュームに記憶されたデータのうち、共通データ領域とは異なる領域に記憶されたデータを受信する。そして、リモート命令処理部2701は、受信したデータを、第1ボリュームに関するバックアップボリュームに書き込む。
リモート命令処理部2701が、バックアップボリューム2702の間で共通データ領域に記憶されたデータをコピーする処理と、他のストレージ装置から受信したデータ(例えば、共通データ領域とは異なる領域に記憶されたデータ)をバックアップボリューム2702に書き込む処理とは、並行に実行されてもよく、逐次的に実行されてもよい。
上記のように構成された本実施形態におけるストレージ装置2700によれば、他のストレージ装置に記憶されたボリュームをバックアップする際、他のストレージ装置との間で転送されるデータ量を低減可能である。その理由は、バックアップ対象の第1ボリュームと、第2ボリュームとの共通データ領域に含まれるデータは、ストレージ装置2700におけるバックアップボリューム2702の間でコピーされるからである。より具体的には、共通データ領域に含まれるデータは、ストレージ装置2700に既にバックアップされている第2ボリュームのバックアップボリューム2702から、第1ボリュームのバックアップボリューム2702にコピーされるからである。これにより、他のストレージ装置と、ストレージ装置2700との間で第1ボリュームをバックアップする際、共通データ領域に含まれるデータを転送する必要がないことから、他のストレージ装置と、ストレージ装置2700との間の通信量を低減することができる。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
以下の説明において、上記各実施形態において説明したストレージ装置(102、202、2500、2700)をまとめて、単に「ストレージ装置」と称する。またストレージ装置の各構成要素を、単に「ストレージ装置の構成要素」と称する。
上記各実施形態において説明したストレージ装置は、1つ又は複数の専用のハードウェア装置により構成してもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した回路構成(circuitry))として実現してもよい。
例えば、ストレージ装置をハードウェアにより実現する場合、ストレージ装置の構成要素は、それぞれの機能を提供可能な回路構成を実装したSoC(System on a Chip)等により実現されてもよい。この場合、例えば、ストレージ装置の構成要素が保持するデータは、SoCに統合されたRAM(Random Access Memory)領域、ROM(Read Only Memory)領域、フラッシュメモリ領域等に記憶されてもよい。
図2に例示するストレージ装置102の構成要素は、バックアップ制御部103の処理を実装するバックアップ制御回路、リモートコピー制御部104の処理を実行するリモートコピー制御回路、第1構成記憶部105及びボリューム106を実現する記憶回路(例えば、RAM、ROM、フラッシュメモリ)等として実装されてもよい。図2に例示するストレージ装置202の構成要素は、リモート命令処理部203の処理を実行するリモート命令処理回路、第2構成記憶部204及びバックアップ先ボリューム205を実現する記憶回路(例えば、RAM、ROM、フラッシュメモリ)等として実装されてもよい。図25、図26に例示するストレージ装置2500の構成要素は、バックアップ制御部2501の処理を実行するバックアップ制御回路、リモートコピー制御部2502の処理を実現するリモートコピー制御回路、及び、ボリューム2503、エンティティボリューム2601を実現する記憶回路等として実装されてもよい。図27に例示するストレージ装置2700の構成要素は、リモート命令処理部2701の処理を実行するリモート命令処理回路、及び、バックアップボリューム2702を実現する記憶回路等として実装されてもよい。なお、上記回路構成は一つの具体的態様であり、実装においては、様々なバリエーションが想定される。
ストレージ装置の各構成要素を接続する通信回線としては、周知の通信バスあるいは通信ネットワーク採用してもよい。また、各構成要素を接続する通信回線は、それぞれの構成要素間をピアツーピアで接続してもよい。ストレージ装置を複数のハードウェア装置により構成する場合、それぞれのハードウェア装置の間は、適切な通信方法(有線、無線、またはそれらの組み合わせ)により通信可能に接続されていてもよい。
上述したストレージ装置は、図28に例示するような汎用のハードウェア装置2800と、係るハードウェア装置2800によって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、ストレージ装置は、適切な数のハードウェア装置2800及びソフトウェア・プログラムにより構成されてもよい。
図28における演算装置2801は、汎用のCPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置2801は、例えば後述する不揮発性記憶装置2803に記憶された各種ソフトウェア・プログラムをメモリ2802に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。
この場合、上記各実施形態におけるストレージ装置の構成要素は、例えば、演算装置2801により実行されるソフトウェア・プログラムとして実現可能である。
図2に例示するストレージ装置102の構成要素は、バックアップ制御部103の処理を実装するバックアップ制御プログラム、リモートコピー制御部104の処理を実行するリモートコピー制御プログラム、第1構成記憶部105及びボリューム106の記憶処理に関するプログラム等として実装されてもよい。図2に例示するストレージ装置202の構成要素は、リモート命令処理部203の処理を実行するリモート命令処理プログラム、第2構成記憶部204及びバックアップ先ボリューム205の記憶処理に関するプログラム等として実装されてもよい。図25、図26に例示するストレージ装置2500の構成要素は、バックアップ制御部2501の処理を実行するバックアップ制御プログラム、リモートコピー制御部2502の処理を実現するリモートコピー制御プログラム、及び、ボリューム2503、エンティティボリューム2601の記憶処理に関するプログラム等として実装されてもよい。図27に例示するストレージ装置2700の構成要素は、リモート命令処理部2701の処理を実行するリモート命令処理プログラム、及び、バックアップボリューム2702の記憶処理に関するプログラム等として実装されてもよい。なお、上記プログラムの構成は一つの具体的態様であり、実装においては、様々なバリエーションが想定される。
メモリ2802は、演算装置2801から参照可能な、RAM等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、メモリ2802は、揮発性のメモリ装置であってもよい。
不揮発性記憶装置2803は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置2803は、各種ソフトウェア・プログラムやデータ等を記憶可能である。
例えば、上記各実施形態における、エンティティボリューム(106a、2601)、クローンボリューム106b、ボリューム2503及びバックアップボリューム(205a、2702)は、不揮発性記憶装置2803にデータを保持してもよい。
ドライブ装置2804は、例えば、後述する記録媒体2805に対するデータの読み込みや書き込みを処理する装置である。
記録媒体2805は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。なお、上記各実施形態におけるバックアップボリューム(205a、2702)は、記録媒体2805に記録されてもよい。
ネットワークインタフェース2806は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。
例えば、上記各実施形態における各ストレージ装置(102、202、2500、2700)は、他のストレージ装置又はホスト(101、201)と、ネットワークインタフェース2806を介して接続された通信回線により、通信可能に接続されていてもよい。
上述した各実施形態を例に説明したストレージ装置は、例えば、図28に例示するハードウェア装置2800に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。より具体的には、例えば、係る装置に対して供給したソフトウェア・プログラムを、演算装置2801が実行することによって、本開示に係る技術が実現されてもよい。この場合、係るハードウェア装置2800で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
上述した各実施形態において、上記各図(例えば、図2、図3、図4、図25、図26、及び図27)に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。ただし、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、上記各部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールは、不揮発性記憶装置2803に記憶されてもよい。そして、演算装置2801が、それぞれの処理を実行する際に、これらのソフトウェアモジュールをメモリ2802に読み出してもよい。
また、これらのソフトウェアモジュールの間は、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成してもよい。このような構成により、これらのソフトウェアモジュールの間は、相互に通信可能に接続可能である。
更に、上記各ソフトウェア・プログラムは記録媒体2805に記録されてもよい。この場合、上記各ソフトウェア・プログラムは、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置2804を通じて不揮発性記憶装置2803に格納されるよう構成されてもよい。
なお、上記の場合において、上記ストレージ装置への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具(ツール)を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本開示に係る技術は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置2800と独立した媒体に限らず、LANやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記憶媒体を含む。
また、上述したストレージ装置、あるいは、当該ストレージ装置の構成要素は、図28に例示するハードウェア装置2800を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図28に例示するハードウェア装置2800の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図28に例示するハードウェア装置2800を物理的な装置として構成した場合と同様の構成にて、本開示に係る技術を実現可能である。
以上、本開示に係る技術を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本開示の技術的範囲は、上述した各実施形態及び変形例に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本開示の技術的範囲に含まれ得る。更に、上述した各実施形態及び変形例、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本開示の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。