バックアップ元ボリューム(業務ボリューム)とバックアップ先ボリューム(バックアプボリューム)の管理形態の組み合わせを考えると、以下の4つのパターンが考えられる。すなわち(A)仮想ボリュームから仮想ボリュームへのバックアップ、(B)仮想ボリュームから物理ボリュームへのバックアップ、(C)物理ボリュームから仮想ボリュームへのバックアップ、(D)物理ボリュームから物理ボリュームへのバックアップの4つである。以下、それぞれのパターンについて、図1〜4を参照して説明する。
図1は、(A)仮想ボリュームから仮想ボリュームへのバックアップの説明図である。図1に示すように、業務ボリューム及びバックアップボリュームは仮想ボリュームである。業務ボリューム、及び、バックアップボリュームの一部には、物理領域が割り当てられている。ただし、割り当てられている領域は異なっている。業務ボリュームに割り当てられている物理領域には、バックアップ対象データが格納されている(図1(A))。バックアップボリュームに割り当てられている物理領域には、バックアップとは無関係のその他のデータが格納されている(図1(B1))。この状態からOPC等によりバックアップが行われた場合、最終的に、バックアップボリュームは、バックアップ開始時点の業務ボリュームと同じ物理割当状態となるのが望ましい。また、バックアップボリュームに割り当てられた物理領域には、バックアップ開始時点の業務ボリュームと同じデータが格納された状態となるのが望ましい(図1(B2))。
図2は、(B)仮想ボリュームから物理ボリュームへのバックアップの説明図である。図2に示すように、業務ボリュームは仮想ボリュームであり、バックアップボリュームは物理ボリュームである。業務ボリュームの一部には、物理領域が割り当てられている。業務ボリュームに割り当てられた物理領域には、バックアップ対象データが格納されている(図2(A))。バックアップボリュームは物理ボリュームであるので、割当の概念はなく、物理領域のそのものである。バックアップボリュームには、バックアップとは無関係の、その他のデータ1及びその他のデータ2が格納されている(図2(B1))。この状態からOPC等によりバックアップが行われた場合、最終的に、バックアップボリュームには、バックアップ対象データとゼロデータ(ダミーデータ)が格納された状態となるのが望ましい。さらに言えば、バックアップボリュームの領域のうち、バックアップ開始時に業務ボリュームに割り当てられていた物理領域に対応する領域に、バックアップ対象データが格納されるのが望ましい。また、バックアップボリュームの領域のうち、バックアップ開始時の業務ボリュームにおいて未割当の領域に対応する領域には、ゼロデータが格納されるのが望ましい(図2(B2))。
図3は、(C)物理ボリュームから仮想ボリュームへのバックアップの説明図である。図3に示すように、業務ボリュームは物理ボリュームであり、バックアップボリュームは仮想ボリュームである。業務ボリュームの物理領域には、バックアップ対象データ及びゼロデータが格納されている(図3(A))。バックアップ前のバックアップボリュームの一部には物理領域が割り当てられており、その物理領域にはバックアップとは無関係のその他のデータが格納されている(図3(B1))。この状態からOPC等によりバックアップが行われた場合、シン・プロビジョニング機能により、仮想ボリューム全体に物理領域が割り当てられ、物理ボリューム全体のコピーが行われた状態となる(図3(B2))。
しかしながら、図3(B2)の状態は望ましい状態であるとはいえない。なぜなら、バックアップボリューム全体に物理領域が割り当てられた状態では、仮想ボリュームの優位性が失われてしまうからである。そこで、バックアップボリュームにおいて仮想ボリュームの優位性を保つための方法の1つとして、Zero Reclamation機能が利用される。Zero Reclamation機能とは、ファームウェアでユーザデータがゼロデータであるかどうかのチェックを独自に行い、ゼロデータである場合は、当該領域の物理割当を解除して未割当状態にする機能である。これにより、ゼロデータ部分の物理領域の解放ができ、期待したバックアップボリュームの状態を実現できる。
このようなZero Reclamation機能を利用し、最終的に、バックアップボリュームは、ゼロデータ部分の物理領域が解放された状態となる(図3(B3))。このように、Zero Reclamation機能を利用すれば、仮想ボリュームの優位性を保つことができる。しかしながら、ゼロデータ部に関して、バックアップによるコピー処理を行い、その後、その部分をZero Reclamation機能により解放するという点には、無駄がある。また、Zero Reclamation機能の利用は、実際に対象ボリュームの全データを読み込み、ゼロデータであるかをチェックするため、処理の負荷が大きい。
図4は、(D)物理ボリュームから物理ボリュームへのバックアップの説明図である。図4に示すように、業務ボリューム及びバックアップボリュームはともに物理ボリュームである。業務ボリュームの物理領域には、バックアップ対象データ及びゼロデータが格納されている(図4(A))。バックアップ前のバックアップボリュームには、バックアップとは無関係の、その他のデータ1及びその他のデータ2が格納されている(図4(B1))。この状態からOPC等によりバックアップが行われた場合、物理ボリューム全体のコピーが行われ、最終的に、バックアップボリュームは業務ボリュームと同じ状態となる(図4(B2))。物理ボリュームから物理ボリュームへのバックアップにおいては、割当処理はない。
バックアップは、OPCまたはQuickOPC機能を利用して行われるが、バックアップしたデータを戻す(リストアする)場合にも、同様にOPCまたはQuickOPC機能が利用される。リストアは、逆向きのバックアップが動作するイメージとなる。すなわち、リストアは、上述した4つのバックアップのパターンに対応する4つのパターンに分類される。
パターンAのリストアは、仮想ボリューム間の逆向きのバックアップとなる。バックアップ元とバックアップ先が入れ替わっていること以外は、パターンAのバックアップと同様である。バックアップ取得時と同様に、リストア先(バックアップ元)の仮想ボリュームの状態は、物理領域の割当状態、及び、物理領域に格納されるデータに関して、リストア元(バックアップ先)と同じとなるのが望ましい。すなわち、業務ボリュームをバックアップし、バックアップしたデータをリストアした場合、元の業務ボリュームの状態となるのが望ましい。
パターンBのリストアは、物理ボリュームから仮想ボリュームへのバックアップとなる。これは、パターンCのバックアップと同様の動作イメージとなる。従って、リストア先(業務ボリューム)の仮想ボリュームには、シン・プロビジョニング機能により、全ての領域で物理領域が割り当てられることとなる。この状態では仮想ボリュームの優位性が失われるので、リストア完了後にZero Reclamation機能を利用することで、ゼロデータが格納されている物理領域を開放し、仮想ボリュームの優位性を保つ。
パターンCのリストアは、仮想ボリュームから物理ボリュームへのバックアップとなる。これは、パターンBのバックアップと同様の動作イメージとなる。従って、仮想ボリュームに割り当てられた物理領域のデータが、物理ボリュームの対応する領域にコピーされる。仮想ボリュームにおいて未割当の領域に対応する物理ボリュームの領域には、ゼロデータが格納される。
パターンDのリストアは、物理ボリューム間の逆向きのバックアップとなる。バックアップ元とバックアップ先が入れ替わっていること以外は、パターンDのバックアップと同様である。従って、単純にリストア元のデータがリストア先に戻される。
図5は、実施形態に係るストレージ制御装置の機能ブロックの一例を示す。
図5において、ストレージ制御装置1は、受信部2、作成部3、領域制御部4、バックアップ制御部5、格納処理部6、リストア指示受信部7、取得部8、及び、リストア制御部9を含む。
受信部2は、利用状況に応じて記憶装置の記憶領域が可変的に割り当てられるバックアップ元仮想ボリュームから、バックアップ先ボリュームへのバックアップ指示を受信する。
作成部3は、バックアップ指示に応じて、バックアップ元仮想ボリュームの記憶領域の割当状況を示す割当情報を作成する。
領域制御部4は、割当情報に基づいて、バックアップ先ボリュームの記憶領域に対して、バックアップ先ボリュームが仮想ボリュームであるか否かに応じた前処理を行う。
バックアップ制御部5は、バックアップ元仮想ボリュームからのデータを前処理がなされた記憶領域にコピーする制御を行う。
ストレージ制御装置1は、バックアップ先が仮想ボリュームか物理ボリュームかに応じて、バックアップ先ボリュームの記憶領域に対するコピー前処理をおこなう。これにより、バックアップ先のリソースの管理形態に応じた最適なバックアップを実現することができる。
また、領域制御部4は、バックアップ先ボリュームが仮想ボリュームである場合、割当情報に基づいて、バックアップ先ボリュームの記憶領域の割当を変更するコピー前処理を行う。これにより、仮想ボリューム間でのバックアップにおいて、格納されているデータ及び物理割当がバックアップ元仮想ボリュームと同じ状態のバックアップ先ボリュームを効率的に作成することができる。
また、領域制御部4は、バックアップ先ボリュームが物理ボリュームである場合、以下の処理を行う。すなわち、領域制御部4は、割当情報に基づいて、バックアップ先ボリュームの記憶領域のうち、バックアップ元仮想ボリュームの記憶領域が割り当てられていない未割当領域に対応する記憶領域にダミーデータを格納するコピー前処理を行う。これにより、バックアップ先ボリュームから不要なデータを削除し、バックアップ先ボリュームをそのまま業務ボリュームとして使用することが可能となる。
また、バックアップ制御部5は、割当情報に基づいて、バックアップ元仮想ボリュームに割り当てられている記憶領域からバックアップ先ボリュームの対応する記憶領域にデータをコピーする。また、バックアップ制御部5は、バックアップ先ボリュームが物理ボリュームである場合、バックアップ元仮想ボリュームの記憶領域に格納されているデータをバックアップし、その他のデータはバックアップしない。これにより、仮想ボリュームから物理ボリュームへのバックアップを効率的に行うことができる。
格納処理部6は、バックアップ時の割当情報をバックアップ先ボリュームと対応付けて記憶部に格納する。尚、記憶部は、ストレージ制御装置1と通信可能に接続された記憶装置に含まれる。もしくは、記憶部はストレージ制御装置1に含まれてもよい。
リストア指示受信部7は、バックアップ先ボリュームからリストア先ボリュームへのリストア指示を受信する。
取得部8は、リストア指示により指定されたバックアップ先ボリュームに対応する割当情報を記憶部から取得する。
リストア制御部9は、取得した割当情報に基づいて、リストア対象データを特定して、特定したリストア対象データをリストア先ボリュームへリストアする。これにより、仮想ボリュームから取得したバックアップデータをリストアする場合に、リストア先のボリュームの形態にかかわらず、バックアップ時に取得した割当情報を利用して効率のよいリストアができる。
また、領域制御部4は、リストア先ボリュームが仮想ボリュームである場合、取得した割当情報に基づいて、リストア先ボリュームの記憶領域の割当を変更する。そして、領域制御部4は、リストア先ボリュームが物理ボリュームである場合、取得した割当情報に基づいて、リストア先ボリュームの記憶領域のうち、バックアップ時におけるバックアップ元仮想ボリュームの未割当領域に対応する記憶領域に、ダミーデータを格納する。そして、リストア制御部9は、取得した割当情報に基づいて、リストア対象データが格納されているバックアップ先ボリュームの記憶領域に対応するリストア先ボリュームの記憶領域に、リストア対象データをリストアする。
ストレージ制御装置1は、リストア先が仮想ボリュームである場合、リストア前に、バックアップ時に取得した割当情報に基づいて、リストア先の物理割当を変更している。これにより、仮想ボリュームから取得したバックアップデータを仮想ボリュームにリストアする場合に、格納されているデータ及び物理割当がバックアップ元と同じ状態のリストア先ボリュームを効率的に作成することができる。また、ストレージ制御装置1は、リストア先ボリュームの記憶領域のうち、リストア対象データが格納されていないリストア元(バックアップ先)ボリュームの記憶領域に対応する記憶領域にダミーデータを格納している。これにより、不要なデータを削除することができ、リストア先ボリュームをそのまま業務ボリュームとして使用することが可能となる。また、ストレージ制御装置1は、リストア先ボリュームが物理ボリュームである場合、バックアップ時に取得した割当情報に基づいて特定したリストア対象データをリストアし、その他のデータはリストアしない。これにより、仮想ボリュームから取得したバックアップデータを物理ボリュームへ効率的にリストアすることができる。
ここで、実施形態のストレージ制御装置における、仮想ボリュームから仮想ボリュームへのバックアップの動作例を説明する。図6は、実施形態のストレージ制御装置における、仮想ボリュームから仮想ボリュームへのバックアップの動作例を示す。これは、図1を参照して説明したパターンAにおける、実施形態のバックアップの様子を示している。
図6において、バックアップ時に、先ず、業務ボリュームの物理割当状況を示す情報が取得される(図6(A))。次いで、この物理割当状況を示す情報に基づいて、バックアップボリュームの物理割当状態が変更される(図6(B1)から図6(B2))。この時点で、業務ボリュームの未割当の領域に対応するバックアップボリュームの領域が未割当の状態となる。この後、物理割当状況を示す情報に基づいて、業務ボリュームに割り当てられている物理領域が特定され、その物理領域からバックアップボリュームへバックアップ対象データがコピーされる(図6(B3))。このように、実施形態では、バックアップ開始前に業務ボリュームの物理割当状況を示す情報を取得し、この情報を活用してバックアップを行うことで、効率的なバックアップ処理を実現する。また、バックアップ前に取得した業務ボリュームの物理割当状況を示す情報は、効率的なリストアを実現するために、バックアップ先ボリュームに対応付けて所定の記憶領域に保管される。
次に、実施形態のストレージ制御装置における、物理ボリュームから仮想ボリュームへのリストアの動作例を説明する。図7は、実施形態のストレージ制御装置における、物理ボリュームから仮想ボリュームへのリストアの動作例を示す。これは、上述したパターンBのリストアであり、動作イメージは、図3を参照して説明したパターンCにおけるバックアップと対応する。
図7において、リストア時に、先ず、リストア元ボリュームに対応する物理割当状況を示す情報が取得される(図7(A))。この情報は、バックアップ時に取得され保管されていたものである。次いで、この物理割当状況を示す情報に基づいて、リストア先ボリュームの物理割当状態が変更される(図7(B2))。この時点で、リストア元ボリュームの未割当の領域に対応するリストア先ボリュームの領域が未割当の状態となる。この後、物理割当状況を示す情報に基づいて、リストア元ボリュームに格納されているリストア対象データが特定され、そのリストア対象データがリストア先ボリュームへコピーされる(図7(B3))。このように、リストア開始前にリストア元ボリュームの物理割当状況を示す情報を取得し、この情報を活用してリストアを行うことで、効率的なリストア処理を実現する。リストアで用いられる物理割当状況を示す情報は、バックアップ時に取得されたものであるので、リストア時においては既に作成済みである。したがって、リストア時においては、物理割当状況を示す情報を作成するための時間と負荷を削減できる。また、リストア先ボリュームに対して、リストア対象データを取得したバックアップ取得時の、バックアップ元ボリュームの物理領域の割当状況と同じ割当状況を再現させることができる。
(実施形態)
以下の説明では、コピー元とは、バックアップ元またはリストア元を指し、コピー先とは、バックアップ先またはリストア先を指す。
図8は、実施形態に係るストレージシステムの構成の一例を示す。図8において、ストレージシステムは、ホスト装置11、及びストレージ装置12を含む。ホスト装置11とストレージ装置12は、通信ネットワーク等を介して接続される。
ホスト装置11は、ストレージ装置12に対して、バックアップ指示及びリストア指示を送信する。そして、ホスト装置11は、ストレージ装置12からバックアップ指示及びリストア指示の応答を受信する。
ストレージ装置12は、1以上のストレージ制御装置13(13a、13b)及び1以上の記憶装置14(14a〜14d)を含む。ストレージ制御装置13と1以上の記憶装置14は、バス、インターコネクト、または通信ネットワーク等を介して接続される。ストレージ制御装置13は、複数の記憶装置14をストレージプールとして一元管理することができる。また、ストレージ制御装置13は、シン・プロビジョニング等のストレージ仮想化機能を有し、論理ボリュームを仮想ボリュームとして管理することができる。ストレージ制御装置は、ボリュームの利用状況に応じてストレージプールの記憶領域を可変的に仮想ボリュームに割り当てることができる。また、ストレージ制御装置13は、OPCやQuick OPC等のアドバンスト・コピー機能を有し、業務ボリュームに記憶されたデータのバックアップを、サーバの資源を使用せずにストレージ制御装置13のファームウェアにより実施することができる。
図9は、ストレージ制御装置13の構成の一例を示す。図9において、ストレージ制御装置13は、記憶部21、受信部22、セッション制御部23、作成部24、決定部25、割当制御部26、複製部27、及び、ゼロデータ格納部28を含む。
ストレージ制御装置13は、ストレージ制御装置1の一例である。受信部22は、受信部2、及びリストア指示受信部7の一例である。作成部24は、作成部3、及び格納処理部6の一例である。決定部25は、取得部8の一例である。割当制御部26、及び、ゼロデータ格納部28は、領域制御部4、及び取得部8の一例である。複製部27は、バックアップ制御部5、及びリストア制御部9の一例である。
記憶部21は、セッション管理情報31、コピービットマップ32、ビットマップ管理情報33、ボリューム管理情報34、割当情報35、及び、割当情報管理情報36を記憶する。セッション管理情報31は、コピーセッションの制御情報である。コピービットマップ32は、コピー対象領域のコピー状況を示す情報である。ビットマップ管理情報33は、コピービットマップ32の管理情報である。ボリューム管理情報34は、ボリュームの管理情報である。割当情報35は、バックアップコピー時におけるバックアップ元仮想ボリュームの物理領域の割当状況を示す情報である。割当情報管理情報36は、割当情報35の管理情報である。各情報の詳細については、後ほど説明する。
受信部22は、ホスト装置11からバックアップ指示及びリストア指示を受信する。バックアップ指示及びリストア指示は、具体的には、OPCまたはQuick OPCコマンドである。バックアップ指示には、バックアップ元ボリュームとバックアップ先ボリュームの識別情報、及び、バックアップの対象範囲を示す情報が含まれる。リストア指示には、リストア元ボリュームとリストア先ボリュームの識別情報、及び、リストアの対象範囲を示す情報が含まれる。
セッション制御部23は、受信部22が受信した指示に応じて、セッションの開始制御を行う。すなわち、セッション制御部23は、開始するセッションに関する情報を作成する。具体的には、セッション制御部23は、バックアップ指示またはリストア指示に応じて、セッション管理情報31、コピービットマップ32、及び、ビットマップ管理情報33を作成し、記憶部21に格納する。また、セッション制御部23は、バックアップ指示またはリストア指示に応じて、ボリューム管理情報34を更新する。コピー先ボリュームが存在しない場合には、セッション制御部23は、コピー先ボリュームを新規作成してもよい。ボリューム管理情報34は、予め記憶部21に格納されているものとするが、存在しない場合には、セッション制御部23がセッション管理情報31等と共に作成してもよい。
ここで、セッション制御部23により作成または設定される各情報について順に説明する。
先ずセッション管理情報31について説明する。セッション管理情報31は、コピーセッションの制御情報である。図10は、セッション管理情報31の構成の一例を示す。
図10において、セッション管理情報31は、「セッションID」、「状態」、「フェーズ」、「コピー元識別情報」、「コピー元開始アドレス」、「コピー先識別情報」、「コピー先開始アドレス」、及び、「コピーサイズ」のデータ項目を含む。さらに、セッション管理情報31は、「モード」、「ビットマップ管理情報ポインタ(Top)」、「ビットマップ管理情報ポインタ(Btm)」、「セッション管理情報ポインタ(Next)」、及び、「セッション管理情報ポインタ(Prev)」のデータ項目を含む。
「セッションID」は、コピーセッションを識別するための識別情報である。「状態」は、現在セッションが正常に動いているか否かを示す。「フェーズ」は、コピー状態を示す。コピー状態とは、例えば、現在コピー処理中であるか否かを示す値である。
「コピー元識別情報」は、コピー元ボリュームの識別情報を示す。具体的には例えば、コピー元ボリュームのLogical Unit Number(LUN)番号である。「コピー元開始アドレス」は、コピー元ボリュームにおけるコピー対象範囲の開始位置を示すアドレスである。コピー対象範囲とは、コピー対象のデータが格納されている領域の範囲である。この範囲は、バックアップ指示またはリストア指示により指定される情報である。アドレスは、例えばLBAで表される。
「コピー先識別情報」は、コピー先ボリュームの識別情報を示す。具体的には例えば、コピー先ボリュームのLUN番号である。「コピー先開始アドレス」は、コピー先ボリュームにおけるコピー対象範囲の開始位置を示すLBAを示す。
「コピーサイズ」は、コピー対象範囲のサイズを示す。すなわち、コピー元開始アドレスからコピーサイズで示されるサイズのデータが、コピー先開始アドレスを先頭とする領域にコピーされることとなる。「モード」は、コピーモードを示す。コピーモードとは、バックアップまたはリストアのいずれかを示す値である。
「ビットマップ管理情報ポインタ(Top)」は、先頭のビットマップ管理情報33へのポインタを示す。「ビットマップ管理情報ポインタ(Btm)」は、最後尾のビットマップ管理情報33へのポインタを示す。ビットマップ管理情報33については、後述する。
「セッション管理情報ポインタ(Next)」及び「セッション管理情報ポインタ(Prev)」は、当該セッションがボリューム管理情報34に関連付けられる場合に、関連するセッション管理情報31同士をリンクで検索できるようにするためのポインタである。ボリューム管理情報34については、後述する。尚、同一のボリューム管理情報34に関連付けられるセッション管理情報31同士は、例えば、セッションの開始時刻の順に先頭から最後尾まで関連付けられてもよい。
次に、コピービットマップ32について説明する。コピービットマップ32は、コピー対象範囲、及び、その範囲の各単位領域のコピーが完了したか否かを示す。コピービットマップ32は、対応するセッションにおいて作成される。
図11は、コピービットマップ32の説明図である。コピービットマップ32は、複数のビットを含む。各ビットは、コピー対象範囲の領域を所定のサイズ毎に分割した単位領域(以下、単位領域Cと記す)のそれぞれに対応付けられる。そして、ビットの値が「1」である場合は、そのビットに対応する単位領域Cのコピーが未完了であることが示され、ビットの値が「0」である場合は、そのビットに対応する単位領域Cのコピーが完了済みであることが示される。尚、単位領域Cは、例えば、ブロックである。
コピービットマップ32のサイズは、所定のサイズであり、例えば、8Kバイトである。1つのコピービットマップ32に含まれるビット数はコピービットマップ32のサイズに応じた所定の値となる。よって、1つのコピービットマップ32の総ビットによりコピーが完了したか否かを示すことのできる領域の範囲も、コピービットマップ32のサイズに応じた所定の値となる。コピー対象の範囲が広く、1つのコピービットマップ32で全てのコピー対象範囲に対応できない場合は、複数のコピービットマップ32が作成される。各ビットマップは、コピー対象範囲のうちの互いに重複しない部分領域(以下、対応領域Cと記す)に対応付けられる。作成された全てのビットマップによって、コピー対象の全範囲がカバーされる。1つのコピー対象範囲に対応する複数のコピービットマップは互いに対応付けられる。
尚、コピービットマップ32は、コピー対象範囲の各単位領域Cのコピーが完了したか否かを識別可能な情報を含むものであれば、ビットマップ形式に限定されない。
また、以下では説明のために、コピー対象範囲が複数の対応領域Cに分けられる場合、複数の対応領域Cのうち、先頭のアドレスが小さい領域から順に昇順で番号を振ることにより、それぞれの対応領域Cを区別する。例えば、コピー対象範囲がn個の対応領域Cに分けられる場合、対応領域Cの先頭のアドレスが小さい領域から順に、対応領域C1、対応領域C2、・・・、対応領域Cnと記す場合がある。対応領域C1に対応するコピービットマップは先頭のコピービットマップであり、対応領域Cnに対応するコピービットマップは最後尾のコピービットマップである。
次に、ビットマップ管理情報33について説明する。ビットマップ管理情報33は、コピービットマップ32の管理情報である。ビットマップ管理情報33は、コピービットマップ32と1対1で対応する。すなわち、コピービットマップ32が複数作成された場合には、それと同数のビットマップ管理情報33が作成される。ビットマップ管理情報33は、コピービットマップ32とともに、対応するセッションにおいて作成される。
図12は、ビットマップ管理情報33の説明図である。図12において、コピービットマップ32は、「ビットマップ種別」、「ビットマップ管理情報ポインタ(Next)」、「ビットマップ管理情報ポインタ(Prev)」、及び「コピービットマップアドレス」のデータ項目を含む。
「ビットマップ種別」は、コピーの種別を示す。具体的には、「ビットマップ種別」は、対応するセッションがバックアップにおけるものか、リストアにおけるものかを示す。尚、この値は、セッション管理情報31の「モード」の値と連動する。
「ビットマップ管理情報ポインタ(Next)」及び「ビットマップ管理情報ポインタ(Prev)」は、対応するセッションにおいて作成された他のコピービットマップ32と関連付けるポインタである。同一コピーセッションのコピー対象範囲に対応する複数のコピービットマップ32同士は、各々が対応する対応領域Cの、コピー対象範囲における位置関係に応じて、関連付けられる。この関連付けを管理するための情報が「ビットマップ管理情報ポインタ(Next)」、及び「ビットマップ管理情報ポインタ(Prev)」である。詳細は後ほど、図13を用いて説明する。
「コピービットマップアドレス」は、当該ビットマップ管理情報33が管理するコピービットマップ32のアドレスを示す。
ここで、セッション管理情報31、コピービットマップ32、及び、ビットマップ管理情報33の関連について説明する。図13は、セッション管理情報31、コピービットマップ32、及び、ビットマップ管理情報33の関連の説明図である。
図13において、セッション管理情報31の「ビットマップ管理情報ポインタ(Top)」には、ビットマップ管理情報33aへのポインタが格納されている。そして、ビットマップ管理情報33aの「コピービットマップアドレス」には、コピービットマップ32aのアドレスが格納されている。これにより、セッション管理情報31のセッションにおいて、対応領域C1に対応するコピービットマップ32は、コピービットマップ32aであることが示される。
また、ビットマップ管理情報33aの「ビットマップ管理情報ポインタ(Next)」には、ビットマップ管理情報33bへのポインタが格納されている。また、セッション管理情報31の「ビットマップ管理情報ポインタ(Btm)」には、ビットマップ管理情報33bへのポインタが格納されている。さらに、ビットマップ管理情報33bの「コピービットマップアドレス」には、コピービットマップ32bのアドレスが格納されている。これにより、セッション管理情報31のセッションにおいて、対応領域C2に対応するコピービットマップ32は、コピービットマップ32bであることが示される。
次に、ボリューム管理情報34について説明する。ボリューム管理情報34は、ボリュームの管理情報である。ボリューム管理情報34は、ボリューム毎に対応付けて作成される。図14は、ボリューム管理情報34の構成の一例を示す。
図14において、ボリューム管理情報34は、「状態」、「ボリュームタイプ」、「コピー元セッション(Top)」、「コピー元セッション(Btm)」のデータ項目を含む。さらに、ボリューム管理情報34は、「コピー先セッション(Top)」、「コピー先セッション(Btm)」、「割当情報管理情報へのポインタ(Top)」、及び「割当情報管理情報へのポインタ(Btm)」のデータ項目を含む。
「状態」は、対応する当該ボリュームの状態を示す。ボリュームの状態は、具体的には、正常または異常である。「ボリュームタイプ」は、当該ボリュームのタイプを示す。ボリュームタイプは、具体的には、物理ボリュームまたは仮想ボリュームである。
「コピー元セッション(Top)」は、当該ボリュームをコピー元とするコピーセッションがある場合、そのコピーセッションに対応する先頭のセッション管理情報31を指し示すポインタである。「コピー元セッション(Btm)」は、当該ボリュームをコピー元とするコピーセッションがある場合、そのコピーセッションに対応する最後尾のセッション管理情報31を指し示すポインタである。
「コピー先セッション(Top)」は、当該ボリュームをコピー先とするコピーセッションがある場合、そのコピーセッションに対応する先頭のセッション管理情報31を指し示すポインタである。「コピー先セッション(Btm)」は、当該ボリュームをコピー先とするコピーセッションがある場合、そのコピーセッションに対応する最後尾のセッション管理情報31を指し示すポインタである。
「割当情報管理情報へのポインタ(Top)」は、当該ボリュームがバックアップ先として指定された場合、バックアップ元ボリュームの割当情報35を管理する割当情報管理情報36を指し示すポインタである。このポインタは、バックアップ元ボリュームの割当情報35が複数ある場合には、先頭の割当情報35を管理する割当情報管理情報36を指し示すポインタとなる。「割当情報管理情報へのポインタ(Btm)」は、当該ボリュームがバックアップ先として指定された場合、バックアップ元ボリュームの割当情報35を管理する割当情報管理情報36を指し示すポインタである。このポインタは、バックアップ元ボリュームの割当情報35が複数ある場合には、最後尾の割当情報35を管理する割当情報管理情報36を指し示すポインタとなる。割当情報35、及び割当情報管理情報36については、後述する。
ここで、セッション管理情報31とボリューム管理情報34の関連について図15を参照して説明する。
図15は、セッション管理情報31とバックアップ元ボリュームに対応するボリューム管理情報34との関連の説明図である。図15において、所定のボリュームaに対応するボリューム管理情報34aの「コピー元セッション(Top)」、及び「コピー元セッション(Btm)」には、セッション管理情報31aへのポインタが格納されている。これにより、ボリュームaは、セッション管理情報31aのセッションにおいて、コピー元ボリュームとなっていることが示される。
図9の説明に戻る。作成部24は、バックアップ元ボリュームの物理割当状況を示す情報を作成して、バックアップ先ボリュームに対応付けて記録する。すなわち、作成部24は、受信部22が受信した指示がバックアップ指示である場合、割当情報35と割当情報管理情報36を作成し記憶部21に格納する。そして、作成部24は、作成した割当情報管理情報36を、バックアップ先ボリュームのボリューム管理情報34に関連付ける。
具体的には、作成部24は、仮想ボリュームのコピー対象範囲について、物理割当の単位領域毎に物理割当がされているか否かをチェックすることにより割当情報35を作成する。
ここで、作成部により作成される割当情報35、及び割当情報管理情報36について順に説明する。
先ず、割当情報35について説明する。割当情報35は、バックアップ元ボリュームのコピー対象範囲における物理領域の割当状況を示す情報である。尚、この物理領域の割当状況は、バックアップ指示を受信した時点におけるものである。割当情報35は、リストア時にバックアップ取得時の業務ボリュームの物理割当状態に戻すために使用される情報である。
図16は、割当情報35の説明図である。割当情報35(35a、35b)は、複数のビットを含む。各ビットは、バックアップ元ボリュームのコピー対象範囲を所定のサイズ毎に分割した単位領域(以下、単位領域Aと記す)のそれぞれに対応付けられる。そして、ビットの値が「1」である場合は、そのビットに対応する単位領域Aに物理領域が割り当てられていることが示され、ビットの値が「0」である場合は、そのビットに対応する単位領域Aに物理領域が割り当てられていない(未割当)であることが示される。尚、単位領域Aは、例えば、チャンクである。チャンクサイズは、ブロックサイズよりも大きくてもよく、例えば、ブロックサイズの整数倍であってもよい。
コピービットマップ32と同様に、割当情報35のサイズは、所定のサイズである。1つの割当情報35が含むことのできるビット数は割当情報35のサイズに応じた所定の値となる。よって、1つの割当情報35の総ビットにより割当状況を示すことのできる領域の範囲も、割当情報35のサイズに応じた所定の値となる。コピー対象範囲のサイズが大きく、1つの割当情報35で、すべてのコピー対象範囲に対応できない場合は、複数の割当情報35が作成される。各割当情報35は、コピー対象範囲のうちの互いに重複しない部分領域(以下、対応領域Aと記す)に対応付けられる。作成された全ての割当情報35によって、コピー対象範囲の全てがカバーされる。
尚、割当情報35は、コピー元ボリュームにおける各単位領域Aの割当状況を識別可能な情報を含むものであれば、ビットマップ形式に限定されない。例えば、割当情報35は、コピー元ボリュームを識別する識別情報と、コピー元ボリュームの各単位領域Aを識別する識別情報と、各単位領域Aの割当状態を示す情報と、を対応付けた情報としてもよい。
また、以下では説明のために、バックアップ元ボリュームのコピー対象範囲が複数の対応領域Aに分けられる場合、複数の対応領域Aのうち、先頭のアドレスが小さい領域から順に、昇順で番号を振ることにより、各対応領域Aを区別する。例えば、バックアップ元ボリュームのコピー対象範囲がn個の対応領域Aに分けられる場合、対応領域Aの先頭のアドレスが小さい領域から順に、対応領域A1、対応領域A2、・・・、対応領域Anと記す場合がある。対応領域A1に対応する割当情報35は、先頭の割当情報35である。対応領域Anに対応する割当情報35は、最後尾の割当情報35である。
次に、割当情報管理情報36について説明する。割当情報管理情報36は、割当情報35を管理する情報である。図17は、割当情報管理情報36の構成の一例を示す。図17において、割当情報管理情報36は、「セッション管理情報の識別情報」、「割当情報管理情報へのポインタ(Next)」、「割当情報管理情報へのポインタ(Prev)」、及び「割当情報のアドレス」のデータ項目を含む。
「セッション管理情報の識別情報」は、対応するコピーセッションのセッション管理情報31の識別情報である。対応するコピーセッションとは、すなわち、当該割当情報管理情報36が管理する割当情報35が作成されたコピーセッションである。
「割当情報管理情報へのポインタ(Next)」は、対応するコピーセッションで作成される割当情報管理情報36同士を関連付けるためのポインタである。
「割当情報管理情報へのポインタ(Prev)」は、対応するコピーセッションで作成される割当情報管理情報36同士を関連付けるためのポインタである。
「割当情報のアドレス」は、当該割当情報管理情報36が管理する割当情報35のアドレス情報を示す。
割当情報35と割当情報管理情報36を作成したら、作成部24は、割当情報管理情報36を、バックアップ先ボリュームのボリューム管理情報34に関連付ける。具体的には、作成部24は、バックアップ先ボリュームのボリューム管理情報34において、「割当情報管理情報へのポインタ(Top)」、及び「割当情報管理情報へのポインタ(Btm)」に、作成した割当情報管理情報36のアドレスを設定する。
ここで、セッション管理情報31、ボリューム管理情報34、割当情報35、及び、割当情報管理情報36の関連について図18を参照して説明する。
図18は、セッション管理情報31、ボリューム管理情報34、割当情報35、及び、割当情報管理情報36の関連の説明図である。図18において、所定のボリュームbに対応するボリューム管理情報34bの「コピー先セッション(Top)」、及び「コピー先セッション(Btm)」には、セッション管理情報31aへのポインタが格納されている。これにより、ボリュームbは、セッション管理情報31aのセッションにおいて、コピー先ボリュームとなっていることが示される。
また、ボリューム管理情報34bの「割当情報管理情報へのポインタ(Top)」には、割当情報管理情報36aへのポインタが格納されている。そして、割当情報管理情報36aの「割当情報のアドレス」には、割当情報35aのアドレスが格納されている。これにより、ボリュームbの先頭の対応領域A1についての割当状況が、割当情報35aによって示されることが示される。
また、割当情報管理情報36aの「割当情報管理情報へのポインタ(Next)」には、割当情報管理情報36bへのポインタが格納されている。そして、割当情報管理情報36bの「割当情報のアドレス」には、割当情報35bのアドレスが格納されている。これにより、対応領域A2についての割当状況が、割当情報35bによって示されることが示される。
また、割当情報管理情報36bの「割当情報管理情報へのポインタ(Next)」には、割当情報管理情報36cへのポインタが格納されている。そして、割当情報管理情報36cの「割当情報のアドレス」には、割当情報35cのアドレスが格納されている。これにより、対応領域A3についての割当状況が、割当情報35cによって示されることが示される。
図9の説明に戻る。決定部25は、コピーセッションにおいてコピー元ボリュームが仮想ボリュームである場合に、実際のデータコピーの対象とする実コピー領域を決定する。具体的には、決定部25は、コピー元仮想ボリュームのうち、物理割当がされていない領域については、データが格納されていないためコピー対象外とするように制御する。これにより、無駄なコピー動作を抑制することができる。
より具体的には、決定部25は、割当情報35に基づいて、コピービットマップ32を変更する。すなわち、決定部25は、割当情報35を参照し、「0」が設定されている未割当領域を抽出する。そして、決定部25は、コピービットマップ32において、抽出した未割当領域に対応するビットの値を「0」に更新する。
図19は、決定部25によるコピービットマップ32の更新の例を示す。図19の例は、割当情報35の各ビットが示す単位領域Aが、コピービットマップ32の各ビットが示す3つの単位領域Cに対応する例を示している。図19に示すように、割当情報35のビットが「0」である領域に対応するコピービットマップ32のビットが「1」から「0」に変更されている。
尚、バックアップとリストアで、割当情報35の参照元は異なる。バックアップの場合には、決定部25は、作成部24により作成された割当情報35を参照する。この割当情報35は、コピー元(バックアップ元)仮想ボリュームの割当状態を示す情報である。リストアの場合には、決定部25は、リストア元ボリュームに関連付けて記憶部21に格納されていた割当情報35を参照する。この割当情報35は、リストア元ボリュームの割当状態を示す情報であるが、リストア元ボリュームへのバックアップ時点におけるバックアップ元仮想ボリュームの割当状態を示す情報でもある。
割当制御部26は、コピーセッションが完了した時点において、コピー先仮想ボリュームの物理割当状態がコピー元仮想ボリュームの物理割当状態と同じになるように、コピー先仮想ボリュームの割当状態を変更する。具体的には、割当制御部26は、コピー元仮想ボリュームの物理割当情報35に基づいて、コピー先仮想ボリュームの物理割当を変更する。この変更処理は、コピー元とコピー先の両方のボリュームが仮想ボリュームである場合に行われる。
より具体的には、割当制御部26は、先ず、割当情報35を参照し、「0」が設定されている未割当領域を抽出する。次いで、割当制御部26は、抽出した未割当領域に対応するコピー先仮想ボリュームの領域に、物理割当がされているか否かをチェックする。物理割当がされている場合は、割当制御部26は、そのコピー先仮想ボリュームの領域を開放する。
尚、割当制御部26は、割当情報35に基づいて、コピー元とコピー先の割当状況が同じになるように、コピー先仮想ボリュームの割当を変更してもよい。
複製部27は、決定部25により決定された実コピー領域のデータをコピー先ボリュームにコピーする。実コピー領域は、コピービットマップ32に基づいて特定される。具体的には、複製部27は、コピービットマップ32を参照し、「1」が設定されている領域のデータをコピーする。そして複製部27は、「1」が設定されている領域のデータのコピーが完了する毎に、コピーが完了した単位領域Cに対応するコピービットマップ32のビットを「1」から「0」に更新する。尚、コピー先ボリュームに物理領域が割当られていない場合には、複製部27は、シン・プロビジョニングの機能を用いて物理領域を割り当てた後、コピーデータを格納する。
ゼロデータ格納部28は、コピー元ボリュームが仮想ボリュームであり、且つ、コピー先ボリュームが物理ボリュームである場合、コピー元ボリュームの未割当領域に対応するコピー先ボリュームの領域にゼロデータを格納する。コピー元ボリュームの未割当領域の特定は、割当情報35に基づいて行われる。
具体的には、ゼロデータ格納部28は、先ず、割当情報35を参照し、「0」が設定されている未割当領域を抽出する。そしてゼロデータ格納部28は、抽出した未割当領域に対応するコピー先物理ボリュームの領域に、ゼロデータを格納する。尚、ゼロデータの格納については、ゼロデータ格納部28は、予め所定の記憶領域に格納されたゼロデータをコピーすることにより、コピー先ボリュームに格納してもよい。ゼロデータは例えばnull値であってもよい。
ここで、実施形態においては、コピービットマップ32のビットが「0」である理由は、以下の2つが考えられる。その理由とは、すなわち、(A)当該領域のコピーが完了したため、または、(B)当該領域に対応する割当情報35のビットが「0」であるため、のいずれかである。理由が(A)か(B)かの判断は、割当情報35に基づいて行われる。コピービットマップ32のビットが「0」であり、割当情報35のビットが「0」である場合には、理由(A)であると判定できる。また、コピービットマップ32のビットが「0」であり、割当情報35のビットが「1」である場合には、理由(B)であると判定できる。理由(B)のためにビットが「0」である場合には、ゼロデータ格納部28は、その領域に対応するコピー先物理ボリュームの領域には、ゼロデータを格納する。
尚、上述したように、バックアップとリストアで、割当情報35の参照元は異なる。バックアップの場合には、決定部25は、作成部24により作成された割当情報35を参照する。リストアの場合には、決定部25は、リストア元ボリュームに関連付けて記憶部21に格納されていた割当情報35を参照する。
次に、バックアップ及びリストアの動作フローを図20〜図25を参照して説明する。図20は、バックアップ及びリストアの全体の処理を図解したフローチャートの一例である。
図20において、先ず、受信部22は、ホスト装置11からバックアップ指示またはリストア指示を受信する(S101)。
次に、セッション制御部23は、受信したバックアップ指示またはリストア指示のパラメータを確認する(S102)。バックアップ指示のパラメータは、バックアップ元ボリュームとバックアップ先ボリュームの識別情報、及び、バックアップの対象範囲を示す情報である。リストア指示のパラメータは、リストア元ボリュームとリストア先ボリュームの識別情報、及び、リストアの対象範囲を示す情報である。
次に、セッション制御部23は、S102で確認したパラメータに基づいて、セッション管理情報31を作成して各データ項目に値を設定し、記憶部21に格納する(S103)。また、セッション制御部23は、コピー元ボリューム及びコピー先ボリュームに対応するボリューム管理情報34に、作成したセッション管理情報31を関連付ける。尚、この関連付けは、コピー元ボリュームに対応するボリューム管理情報34の「コピー元セッション(Top)」、及び「コピー元セッション(Btm)」をセッション制御部23が設定することにより行われる。また、関連付けは、さらに、セッション管理情報31の「セッション管理情報ポインタ(Next)」、及び「セッション管理情報ポインタ(Prev)」をセッション制御部23が設定することにより行われる。
次に、セッション制御部23は、S102で確認したパラメータに基づいて、コピービットマップ32、及び、ビットマップ管理情報33を作成して、各データ項目に値を設定し、記憶部21に格納する(S104)。また、セッション制御部23は、作成したビットマップ管理情報33を、セッション管理情報31に関連付ける。すなわち、セッション制御部23は、セッション管理情報31の「ビットマップ管理情報ポインタ(Top)」及び「ビットマップ管理情報ポインタ(Btm)」に、作成したコピービットマップ32のアドレスを設定する。
次に、セッション制御部23は、同じストレージ装置12に含まれる他のストレージ制御装置13に、セッション管理情報31の作成と設定を指示する(S105)。この指示を受信した他のストレージ制御装置13のセッション制御部23は、S103と同様にして、セッション管理情報31を作成して記憶部に格納する。また、他のストレージ制御装置13のセッション制御部23は、コピー元ボリューム及びコピー先ボリュームに対応するボリューム管理情報34に、作成したセッション管理情報31を関連付ける。
次に、セッション制御部23は、他のストレージ制御装置13に、コピービットマップ32、及び、ビットマップ管理情報33の作成と設定を指示する(S106)。他のストレージ制御装置13のセッション制御部23は、S104と同様にして、コピービットマップ32、及び、ビットマップ管理情報33を作成して記憶部に格納する。また、他のストレージ制御装置13のセッション制御部23は、作成したビットマップ管理情報33を、セッション管理情報31に関連付ける。このように、他のストレージ制御装置13がセッションに関する情報の作成と設定を行うことにより、バックアップまたはリストアを実行するストレージ制御装置13に障害が発生した場合にも、他のストレージ制御装置13により処理を再開することが可能となる。
次に、セッション制御部23は、S101で受信した指示がリストア指示であるか否かを判定する(S107)。リストア指示であると判定された場合(S107でYes)、処理はS109に遷移する。
一方、リストア指示でないと判定された場合(S107でNo)、作成部24は、バックアップ元ボリュームの物理割当状況を示す情報を作成して、バックアップ先ボリュームに対応付けて記録する(S108)。すなわち、作成部24は、割当情報35と割当情報管理情報36を作成し記憶部21に格納する。また作成部24は、作成した割当情報管理情報36を、バックアップ先ボリュームのボリューム管理情報34に関連付ける。この関連付けは、ボリューム管理情報34の「割当情報管理情報へのポインタ(Top)」、及び「割当情報管理情報へのポインタ(Btm)」を作成部24が設定することにより行われる。また、関連付けは、さらに、割当情報管理情報36の「割当情報管理情報へのポインタ(Next)」、「割当情報管理情報へのポインタ(Prev)」を作成部24が設定することにより行われる。割当情報35の作成処理の詳細については、後ほど図21を参照して説明する。
次に、決定部25は、S102で確認したコピー対象範囲のうち、実際にデータコピーの対象とする実コピー領域を決定する(S109)。この実コピー領域の決定処理の詳細は、後ほど図22を参照して説明する。
次に、割当制御部26は、コピー元仮想ボリュームの物理割当情報35に基づいて、コピー先仮想ボリュームの物理割当を変更する(S110)。この物理割当の変更処理の詳細は、後ほど図23を参照して説明する。尚、S109とS110の順番は入れ替わってもよい。
次に、セッション制御部23は、コピーセッションを有効化する(S111)。コピーセッションが有効化されると、複製部27により、実コピー領域からのコピー先ボリュームへのデータのコピーがバックグラウンドで開始される。コピー処理の詳細は、後ほど図24を参照して説明する。
次に、セッション制御部23は、S101で受信したバックアップ指示またはリストア指示に対して応答を行う(S112)。そして、処理は終了する。
次に、S108で実行される割当情報35の作成処理の詳細について説明する。図21は、割当情報35の作成処理の詳細を図解したフローチャートの一例である。
図21において、先ず、作成部24は、コピー元ボリュームが仮想ボリュームであるか否かを判定する(S201)。仮想ボリュームでないと判定された場合(S201でNo)、処理は終了する。
一方、コピー元ボリュームが仮想ボリュームであると判定した場合(S201でYes)、作成部24は、コピー元仮想ボリュームのコピー対象範囲の先頭から、物理領域が割り当てられているか否かの確認を開始する(S202)。
次に、作成部24は、割当の単位領域A毎に、その単位領域に物理領域が割り当てられているか否かを判定する(S203)。単位領域Aに物理領域が割り当てられていると判定した場合(S203でYes)、作成部24は、割当情報35の単位領域Aに対応するビットに、物理領域が割り当てられていることを示す「1」を設定する(S204)。そして処理はS206に遷移する。
一方、単位領域Aに物理領域が割り当てられていないと判定した場合(S203でNo)、作成部24は、割当情報35の単位領域Aに対応するビットに、物理領域が割り当てられていないことを示す「0」を設定する(S205)。
次に、作成部24は、コピー対象範囲のすべての割当の単位領域Aについて、物理領域が割り当てられているか否かをS203で確認したかを判定する(S206)。コピー対象範囲のいずれかの割当の単位領域Aについて割り当ての確認が済んでいないと判定した場合(S206でNo)、作成部24は、処理をS203に再度遷移させ、確認が済んでいない単位領域Aの判定を行う。
一方、コピー対象範囲のすべての単位領域Aについて割当の確認が完了したと判定した場合(S206でYes)、処理は終了する。
次に、S109で実行される実コピー領域の決定処理の詳細について説明する。図22は、決定処理の詳細を図解したフローチャートの一例である。
図22において、先ず、決定部25は、S101で受信した指示がバックアップ指示であるか否かを判定する(S301)。具体的には、決定部25は例えば、セッション管理情報31の「モード」を参照することによりバックアップ指示であるか否かを判定する。
受信した指示がバックアップ指示であると判定した場合(S301でYes)、決定部25は、コピー元ボリュームは仮想ボリュームであるか否かを判定する(S302)。具体的には、例えば決定部25は、ボリューム管理情報34の「ボリュームタイプ」を参照することにより、コピー元ボリュームが仮想ボリュームであるかを判定する。コピー元ボリュームは仮想ボリュームではない、すなわち、コピー元ボリュームは物理ボリュームであると判定された場合(S302でNo)、処理は終了する。
一方、コピー元ボリュームは仮想ボリュームであると判定した場合(S302でYes)、決定部25は、S108で作成された割当情報35を取得する(S303)。そして処理は、S305に遷移する。
受信した指示がバックアップ指示でないと判定した場合(S301でNo)、すなわち、リストア指示であると判定した場合、決定部25は、リストア元ボリュームに関連付けられた割当情報35を特定して取得する(S304)。具体的には、決定部25は、リストア元ボリュームのボリューム管理情報34において、「割当情報管理情報へのポインタ(Top)」、「割当情報管理情報へのポインタ(Btm)」を参照することにより、リストア元ボリュームに関連付けられた割当情報35を特定する。尚、リストア元ボリュームに関連付けられた割当情報35が複数ある場合には、決定部25は割当情報管理情報36の「割当情報管理情報へのポインタ(Next)」、「割当情報管理情報へのポインタ(Prev)」を参照して、関連する全ての割当情報35を特定する。このように、リストアにおいては、割当情報35はバックアップ時に取得して保管されていたものが使用される。これにより、リストア時には、コピー元ボリュームの割当情報の作成を省略でき、効率的なリストアが可能となる。また、このような割当情報に基づいて、コピー先ボリュームの割当またはゼロデータの格納を行うことで、リストア先ボリュームの状態を、バックアップ取得時のバックアップ元ボリュームと同じ状態にすることができる。
次に、決定部25は、S303またはS304で取得した割当情報35について、先頭から物理割当状態の確認を開始する(S305)。
次に、決定部25は、割当情報35のビット毎に、割当情報35の各ビットの値が「1」であるか否かを確認することで、そのビットに対応する単位記憶領域に物理領域が割り当てられているか否かを判定する(S306)。ビットに対応する単位記憶領域に物理領域が割り当てられていると判定された場合(S306でYes)、処理はS308に遷移する。
一方、ビットに対応する単位記憶領域に物理領域が割り当てられていない(未割当である)と判定した場合(S306でNo)、決定部25は、未割当の単位記憶領域に対応するコピービットマップ32の各ビットを「0」に更新する(S307)。これにより、物理領域が未割当の領域を、実コピー領域から除外することができる。
次に、決定部25は、割当情報35のすべてのビットについて、S306の判定が完了したか否かを判定する(S308)。割当情報35のいずれかのビットについて判定が済んでいないと判定した場合(S308でNo)、決定部25は、処理をS306に再度遷移させ、判定が済んでいないビットについての判定を行う。
一方、割当情報35のすべてのビットについて割当の判定が完了したと判定した場合(S308でYes)、処理は終了する。
次に、S110で実行される物理割当の変更処理の詳細について説明する。図23は、物理割当の変更処理の詳細を図解したフローチャートの一例である。
図23において、先ず、割当制御部26は、S101で受信した指示がバックアップ指示であるか否かを判定する(S401)。具体的には、割当制御部26は例えば、セッション管理情報31の「モード」を参照することによりバックアップ指示であるか否かを判定する。
受信した指示がバックアップ指示であると判定した場合(S401でYes)、割当制御部26は、コピー元ボリュームは仮想ボリュームであるか否かを判定する(S402)。具体的には、例えば割当制御部26は、コピー元ボリュームに対応するボリューム管理情報34の「ボリュームタイプ」を参照することにより、コピー元ボリュームが仮想ボリュームであるかを判定する。コピー元ボリュームは仮想ボリュームではない、すなわち、コピー元ボリュームは物理ボリュームであると判定された場合(S402でNo)、処理は終了する。
一方、コピー元ボリュームは仮想ボリュームであると判定した場合(S402でYes)、割当制御部26は、コピー先ボリュームが仮想ボリュームであるか否かを判定する(S403)。具体的には、例えば割当制御部26は、コピー先ボリュームに対応するボリューム管理情報34の「ボリュームタイプ」を参照することにより、コピー先ボリュームが仮想ボリュームであるかを判定する。コピー先ボリュームは仮想ボリュームではない、すなわち、コピー先ボリュームは物理ボリュームであると判定された場合(S403でNo)、処理は終了する。
一方、コピー先ボリュームは仮想ボリュームであると判定した場合(S403でYes)、割当制御部26は、S108で作成された割当情報35を取得する(S404)。そして処理は、S406に遷移する。
S401において、受信した指示がバックアップ指示でない、すなわちリストア指示であると判定した場合(S401でNo)、割当制御部26は、リストア元ボリュームに関連付けられた割当情報35を特定して取得する(S405)。このリストア元ボリュームに関連付けられた割当情報35の具体的な特定方法は、S304におけるものと同様である。
次に、割当制御部26は、S404またはS405で取得した割当情報35について、先頭から物理割当状態の確認を開始する(S406)。
次に、割当制御部26は、割当情報35のビット毎に、各ビットの値が「1」であるか否かを確認することで、そのビットに対応する単位記憶領域に物理領域が割り当てられていない(未割当)か否かを判定する(S407)。ビットに対応する単位記憶領域に物理領域が割り当てられていると判定された場合(S407でNo)、処理はS410に遷移する。
一方、ビットに対応する単位記憶領域に物理領域が割り当てられていないと判定した場合(S407でYes)、割当制御部26は、その未割当の物理領域に対応するコピー先ボリュームの領域に物理領域が割当られているか否かを判定する(S408)。対応するコピー先ボリュームの領域に物理領域が割当られていないと判定された場合(S408でNo)、処理はS410に遷移する。
一方、対応するコピー先ボリュームの領域に物理領域が割当られていると判定した場合(S408でYes)、割当制御部26は、対応するコピー先ボリュームの物理領域を開放する(S409)。このように、コピー元ボリュームで未割当の領域に対応するコピー先ボリュームの領域を開放することで、コピーセッション完了時に、コピー元ボリュームとコピー先ボリュームの割当状況を同じ状態にすることができる。また、実際のコピー前に、バックアップ元の割当情報を用いてバックアップ先の割当状態を変更することで、バックアップ先ボリュームの割当変更を効率的に行うことができる。
次に、割当制御部26は、割当情報35のすべてのビットについて、S407の判定が完了したか否かを判定する(S410)。割当情報35のいずれかのビットについて判定が済んでいないと判定した場合(S410でNo)、割当制御部26は、処理をS407に再度遷移させ、未判定のビットについての判定を行う。
一方、割当情報35のすべてのビットについて割当の判定が完了したと判定した場合(S410でYes)、処理は終了する。
次に、S111でコピーセッションが有効化された後に実行されるコピー処理の詳細について説明する。図24は、コピー処理の詳細を図解したフローチャートの一例である。
図24において、先ず、複製部27は、当該セッションのコピービットマップ32を取得する(S501)。
次に、複製部27は、コピービットマップ32のビット毎に、ビットの値が「1」であるか否かを判定する(S502)。ビットの値が「1」であると判定した場合(S502でYes)、複製部27は、判定したビットに対応する単位領域Cのデータをコピー先ボリュームの対応する領域にコピーする(S503)。
次に、複製部27は、S503でコピーした単位領域Cに対応するコピービットマップ32のビットの値を「1」から「0」に変更する。そして処理は、S506に遷移する。
一方、ビットの値が「0」であると判定された場合(S502でNo)、ゼロデータ格納部28は、コピー先ボリュームの対応する領域にゼロデータを格納するか否かの判定処理を行う(S505)。このゼロデータの格納判定処理の詳細については、後ほど図25を参照して説明する。
次に、複製部27は、コピービットマップ32の全てのビットについて、S502の判定を行ったか否かを判定する(S506)。コピービットマップ32の何れかのビットについて、判定が済んでいないと判定した場合(S506でNo)、複製部27は、処理を再度S502に遷移させ、判定が済んでいないビットについての判定を行う。
一方、コピービットマップ32のすべてのビットについて、値の判定が完了したと判定された場合(S506でYes)、処理は終了する。
次に、S505で実行されるゼロデータの格納判定処理の詳細について説明する。図25は、ゼロデータの格納判定処理の詳細を図解したフローチャートの一例である。
図25において、先ず、ゼロデータ格納部28は、コピー元ボリュームは仮想ボリュームであるか否かを判定する(S601)。具体的には、例えばゼロデータ格納部28は、コピー元ボリュームに対応するボリューム管理情報34の「ボリュームタイプ」を参照することにより、コピー元ボリュームが仮想ボリュームであるかを判定する。コピー元ボリュームは仮想ボリュームではない、すなわち、コピー元ボリュームは物理ボリュームであると判定された場合(S601でNo)、処理は終了する。
一方、コピー元ボリュームは仮想ボリュームであると判定した場合(S601でYes)、ゼロデータ格納部28は、コピー先ボリュームは物理ボリュームであるか否かを判定する(S602)。具体的には、例えばゼロデータ格納部28は、コピー先ボリュームに対応するボリューム管理情報34の「ボリュームタイプ」を参照することにより、コピー先ボリュームが物理ボリュームであるかを判定する。コピー先ボリュームは物理ボリュームではない、すなわち、コピー先ボリュームは仮想ボリュームであると判定された場合(S602でNo)、処理は終了する。
一方、コピー先ボリュームは物理ボリュームであると判定した場合(S602でYes)、ゼロデータ格納部28は、当該コピーセッションがバックアップにおけるものであるか否かを判定する(S603)。具体的には、例えばゼロデータ格納部28は、セッション管理情報31の「モード」を確認することにより、バックアップにおけるものか否かを判定する。当該コピーセッションはバックアップにおけるものであると判定した場合(S603でYes)、ゼロデータ格納部28は、S108で作成された割当情報35を取得する(S604)。そして、処理はS606に遷移する。
一方、当該コピーセッションはバックアップにおけるものではない、すなわち、リストアにおけるものであると判定した場合、ゼロデータ格納部28は、リストア元ボリュームに関連付けられた割当情報35を特定して取得する(S605)。このリストア元ボリュームに関連付けられた割当情報35の具体的な特定方法は、S304におけるものと同様である。
次に、ゼロデータ格納部28は、S604またはS605で取得した割当情報35に基づいて、S502で判定したビットに対応する単位領域C(以下、対象単位領域Cと記す)の物理割当状態をチェックする(S606)。
そして、ゼロデータ格納部28は、対象単位領域Cは、物理領域が割り当てられていない(未割当)の領域か否かを判定する(S607)。具体的には、ゼロデータ格納部28は、割当情報35において、対象単位領域Cを含む単位領域Aのビットが「0」であるか否かを判定する。対象単位領域Cに物理領域が割り当てられていると判定した場合には(S607でNo)、処理は終了する。対象単位領域Cに物理領域が割り当てられていないと判定した場合(S607でYes)、ゼロデータ格納部28は、対象単位領域Cに対応するコピー先の領域にゼロデータを格納する(S608)。このように、割当情報35に基づいて、ゼロデータを格納するか否かを判定するため、既にコピー済みのデータをゼロデータで上書きすることを防ぐことができる。
以上のように、コピー元仮想ボリュームにおいて未割当の領域に対応するコピー先物理ボリュームの領域にゼロデータを格納することで、コピー先ボリュームから不要なデータを除くことができる。不要なデータがコピー先物理ボリュームから削除されるため、例えば、コピー先物理ボリュームを単に切り替えるだけで、業務ボリュームとしてそのまま使用することができる。そして、処理は終了する。
尚、コピー元仮想ボリュームにおいて未割当の領域に対応するコピー先物理ボリュームの領域にゼロデータを格納する処理は、コピーセッションの有効化前(S109またはS110の前後)に行われてもよい。
次に、ストレージ制御装置13のハードウェア構成について説明する。図26は、実施形態に係るストレージ制御装置13のハードウェア構成の一例を示す。
図26において、ストレージ制御装置13は、Central Processing Unit(CPU)601、メモリ602、読取装置603、及び通信インターフェース604を含む。CPU601、メモリ602、読取装置603、及び通信インターフェース604はバス等を介して接続される。
CPU601は、メモリ602を利用して上述のフローチャートの手順を記述したプログラムを実行する。このプログラムを実行することにより、CPU601は、受信部22、セッション制御部23、作成部24、決定部25、割当制御部26、複製部27、及びゼロデータ格納部28の機能の一部または全部の機能を提供する。CPU601が実行するプログラムは、ストレージ制御プログラムであってよい。
メモリ602は、例えば半導体メモリであり、Random Access Memory(RAM)領域およびRead Only Memory(ROM)領域を含んで構成される。メモリ602は記憶部21の一部または全部の機能を提供する。尚、記憶部21の一部または全部の情報は、記憶装置14に記憶されてもよい。
読取装置603は、CPU601の指示に従って着脱可能記憶媒体650にアクセスする。着脱可能記憶媒体650は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。尚、読取装置603はストレージ制御装置13に含まれなくてもよい。
通信インターフェース604は、ホスト装置11と接続し、ホスト装置11との間の通信制御を行う。また、通信インターフェース604は、記憶装置14に接続し、記憶装置14との間の通信制御を行う。ホスト装置11に接続する通信インターフェース604は、例えば、Channel Adapter(CA)である。記憶装置14に接続する通信インターフェース604は、例えば、Fibre Channel(FC)である。
さらに、実施形態のストレージ制御装置13の一部は、ハードウェアで実現してもよい。或いは、実施形態のストレージ制御装置13は、ソフトウェアおよびハードウェアの組合せで実現してもよい。
ストレージ制御装置13は、例えば、Centralized Module(CM)である。
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。