国際・国内特許データベース検索
このアプリケーションの一部のコンテンツは現在ご利用になれません。
この状況が続く場合は、次のお問い合わせ先までご連絡ください。フィードバック & お問い合わせ
1. (WO2015132946) ストレージシステム及びストレージシステムの制御方法
Document

明 細 書

発明の名称 ストレージシステム及びストレージシステムの制御方法

技術分野

0001  

背景技術

0002   0003  

先行技術文献

特許文献

0004  

発明の概要

発明が解決しようとする課題

0005   0006  

課題を解決するための手段

0007   0008  

発明の効果

0009  

図面の簡単な説明

0010  

発明を実施するための形態

0011  

実施例 1

0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102  

実施例 2

0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133  

実施例 3

0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171  

符号の説明

0172  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12  

図面

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29  

明 細 書

発明の名称 : ストレージシステム及びストレージシステムの制御方法

技術分野

[0001]
 本発明はストレージシステムに関する。

背景技術

[0002]
 ストレージ装置が正ボリュームと正ボリュームの差分のデータを格納するプールボリュームと副ボリュームとを持ち、正ボリュームに対する更新があると、正ボリュームの更新前のデータをプールボリュームに退避する。そして、副ボリュームはそれぞれのチャンクが正ボリュームまたはプールボリュームのチャンクを参照することによって、正ボリュームのある時点の複製を構成するスナップショット機能という機能がある。
[0003]
 特許文献1には移動元ストレージがスナップショットを構成する際、移動先ストレージに、移動元の正ボリュームの複数のデータと、プールボリュームの複数のデータをボリューム単位で送るとともに、副ボリュームのチャンクが参照するチャンクの位置情報をボリューム単位で送ることで、移動先ストレージにスナップショット機能を適応したボリュームを移動する技術が開示されている。

先行技術文献

特許文献

[0004]
特許文献1 : 米国特許公開公報第2013/0297899号

発明の概要

発明が解決しようとする課題

[0005]
 しかし、特許文献1では、スナップショット機能を適用したボリュームの移動中に、移動対象のボリュームへのホストからのライトを実行することは開示していない。移動元ストレージのスナップショット構成を移動先ストレージにコピーする際、ホストからライトを受け付けると移動元と移動先でスナップショット構成に食い違いが起きてしまうという問題が発生する。特に、近年では、ホストにストレージ装置の物理構成を意識させず、複数のストレージ装置に跨った1以上の仮想ストレージをホストに提供するストレージ装置の仮想化技術が発展してきている。ホスト透過でボリュームを移行する際、ボリュームの移動中にホストからのライトを受け付けるニーズは高まっており、この点からも上記の問題を解決する必要がある。
[0006]
 また、エンタープライズ向けのシステムにおいては、稼働率99.999%(年間5分程度の停止)という高い可用性が要求される。例えばスナップショット機能を適用したボリュームの移行を金融機関が行うことを想定した際、移行の間にボリュームへのライトを実行出来ないとすると、経済活動の基礎となる金融機関のサービスが停止することになり、社会全体の経済活動を妨げることになってしまう。この点からも上記の問題を解決する必要がある。

課題を解決するための手段

[0007]
 上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
[0008]
 本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば以下のストレージシステムである。
ストレージシステムは第1のストレージ装置と第2のストレージ装置とを備える。第1のストレージ装置は、第1の正ボリューム、第1のプールボリューム、第1の副ボリュームでスナップショット構成を提供する。第1の正ボリュームは複数のチャンクを含む。第1のプールボリュームは複数のチャンクを含み、第1の正ボリュームの差分データを格納する。第1の副ボリュームは第1の正ボリュームの所定の時点の複製であり、それぞれが第1の正ボリュームのチャンクまたは第1のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含む。第1のストレージ装置は、さらに、第1の副ボリュームの複数のチャンクの参照先を管理する。第2のストレージ装置は、第2の正ボリューム、第2のプールボリューム、第2の副ボリュームでスナップショット構成を提供する。第2の正ボリュームは複数のチャンクを含む。第2のプールボリュームは複数のチャンクを含み、第2の正ボリュームの差分データを格納する。第2の副ボリュームは第2の正ボリュームの所定の時点の複製であり、それぞれが第2の正ボリュームのチャンクまたは第2のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含む。第2のストレージ装置は、さらに、第2の副ボリュームの複数のチャンクの参照先を管理する。第1のストレージ装置は、スナップショット構成を第1のストレージ装置から第2のストレージ装置に移行する。その際、移行の対象となるチャンクの排他を取得し、移行の対象となるチャンクの管理情報であるスナップショット割当情報を前記第2のストレージ装置に送信する。そして、上位装置からライト要求を受信すると、ライト要求に係る第1のチャンクと、ライト要求に係るチャンクと前記参照により関連する第2のチャンクと、の排他を取得し、当該ライト要求に係るライト処理を実行する。

発明の効果

[0009]
 本発明の一実施形態によれば、スナップショット機能を適用したボリュームをストレージ装置間で移動しつつ、ホストからのライト及びリードを実行できる。これにより、ホストのダウンタイムなしで、スナップショット機能を維持したままストレージ装置のリプレースや負荷分散や冗長化が実施可能となる。

図面の簡単な説明

[0010]
[図1] 本発明の第1の実施形態におけるスナップショットボリュームの移動処理の一例を示す概念図である。
[図2] 本発明の第1の実施形態におけるITシステム構成の一例を示す図である。
[図3] 本発明の第1の実施形態におけるホスト計算機及び管理サーバのシステム構成の一例を示す図である。
[図4] 本発明の第1の実施形態におけるストレージ装置のシステム構成の一例を示す図である。
[図5] 本発明の第1の実施形態における仮想ボリューム管理情報及び仮想ストレージボックス管理情報の一例を示す図である。
[図6] 本発明の第1の実施形態におけるスナップショットPVOL、SVOL及びプールの構成の一例を示す図である。
[図7] 本発明の第1の実施形態におけるスナップショットペア管理情報、スナップショットPVOL管理情報及びスナップショットSVOL管理情報の一例を示す図である。
[図8] 本発明の第1の実施形態におけるプール管理情報の一例を示す図である。
[図9] 本発明の第1の実施形態における移動コピーペア管理情報の一例を示す図である。
[図10] 本発明の第1の実施形態におけるスナップショット割当情報の一例を示す図である。
[図11] 本発明の第1の実施形態におけるボリューム移動処理の一例を示すフローチャートである。
[図12] 本発明の第1の実施形態における移動コピー処理の一例を示すフローチャートである。
[図13] 本発明の第1の実施形態における移動元ストレージ装置からのスナップショット割当情報受信時処理の一例を示すフローチャートである。
[図14] 本発明の第1の実施形態における移動元VOLへのホストライト受領時処理の一例を示すフローチャートである。
[図15] 本発明の第1の実施形態における移動元ストレージ装置からのライト及びスナップショット割当情報受信時処理の一例を示すフローチャートである。
[図16] 本発明の第1の実施形態におけるデータ退避処理の一例を示すフローチャートである。
[図17] 本発明の第1の実施形態における移動先VOLへのホストライト受領時処理の一例を示すフローチャートである。
[図18] 本発明の第1の実施形態における移動先ストレージ装置からのライト受領時処理の一例を示すフローチャートである。
[図19] 本発明の第1の実施形態における移動元VOLへのリード受領時処理の一例を示すフローチャートである。
[図20] 本発明の第1の実施形態における移動先VOLへのホストリード受領時処理の一例を示すフローチャートである。
[図21] 本発明の第2の実施形態における移動コピー処理の一例を示すフローチャートである。
[図22] 本発明の第2の実施形態における移動元VOLへのホストライト受領時処理の一例を示すフローチャートである。
[図23] 本発明の第2の実施形態における移動元ストレージ装置からのライト受領時処理の一例を示すフローチャートである。
[図24] 本発明の第2の実施形態における移動先VOLへのホストライト受領時処理の一例を示すフローチャートである。
[図25] 本発明の第2の実施形態における移動先ストレージ装置からのライト受領時処理の一例を示すフローチャートである。
[図26] 本発明の第3の実施形態における移動コピー処理の一例を示すフローチャートである。
[図27] 本発明の第3の実施形態における移動元VOLへのホストライト受領時処理の一例を示すフローチャートである。
[図28] 本発明の第3の実施形態における移動先VOLへのホストライト受領時処理の一例を示すフローチャートである。
[図29] 本発明の第3の実施形態における移動先ストレージ装置からのライト受領時処理の一例を示すフローチャートである。

発明を実施するための形態

[0011]
 以下、添付図面に基づいて、本発明の実施形態を説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。また、以下の説明では、ストレージ装置を主語として処理を説明する場合があるが、コントローラ、プログラム、またはストレージ装置が有するCPUによって実行することで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がプログラムとされても良い。また、プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
実施例 1
[0012]
 図1から図20に基づいて、本発明に従う第一の実施例について説明する。
[0013]
 図1は本実施例の概略を示す図である。移動元ストレージ装置500Aには、実ボリューム520が設定されており、各実ボリューム520にはスナップショット機能が適用されている。実ボリューム520AはスナップショットPVOL(以下、単にPVOLと呼ぶこともある)であり、PVOLに含まれる複数のチャンクには実際にデータが格納される。実ボリューム520B及び520CはスナップショットSVOL(以下、単にSVOLと呼ぶこともある)である。SVOLは、ある時点のPVOLのデータを差分として管理する。つまり、SVOLは、PVOLのチャンクや差分のデータが実際に格納されているプール530内のチャンクへのポインタといった情報を持つ。
[0014]
 移動先ストレージ装置500Bには、移動元ストレージ装置500A内の各実ボリューム520の移動先となる実ボリューム520D、520E及び520Fが設定されており、さらに移動元ストレージと同様にスナップショット機能が適用されている。以下、移動元ストレージ装置500Aのボリュームを移動元VOLと呼ぶことがある。また、PVOLとSVOLを区別する場合には移動元PVOL、移動元SVOLとそれぞれ呼ぶことがある。同様に、移動先ストレージ装置500Bの実ボリューム520を移動先VOL、移動先PVOL、移動先SVOLと記載することがある。
[0015]
 移動元ストレージ装置500A及び移動先ストレージ装置500Bは、後述の移動コピー処理により、移動元VOLから移動先VOLへデータ及びポインタのコピーを行うことで、スナップショット機能の適用されたボリュームの移動を実行する。ホスト計算機100にストレージ装置の物理構成を意識させず、複数のストレージ装置500に跨った1以上の仮想ストレージ装置600をホストに提供する機能がある。
移動元VOLと移動先VOLは、同じ仮想ストレージ装置600に属し、さらに対応するボリューム同士は、同じ仮想ボリュームIDを設定されている。すなわち、実ボリューム520Aと520D、520Bと520E、520Cと520Fにはそれぞれ同じ仮想ボリュームIDが設定されている。仮想ボリュームIDとは、実ボリューム520に設定された識別子とは別に設定される仮想的な識別子である。
[0016]
 ストレージ装置500は、ホスト計算機100上の交替パスソフト111から実ボリューム520に対して識別子を要求されると、仮想ストレージ装置600の識別子である仮想ストレージID、及び仮想ボリュームIDから計算される識別子を応答する。すなわち、実ボリューム520Aと520D、520Bと520E、520Cと520Fは、それぞれ同一の識別子を応答することになる。交替パスソフト111は、同一の識別子を応答する実ボリューム520を、一つの仮想ボリューム601への交替パスであると認識し、OS110からのI/O(Input/Output)を処理する。
[0017]
 このような仮想ストレージ環境下では、ホストは仮想ストレージ装置600を認識し、仮想ストレージ装置600を構成するストレージ装置500A及び500Bを認識しなくてよい。そのため、ホスト計算機100に透過的に、業務停止することなくストレージ装置500の増設、リプレース、構成変更を行うことが出来る。
これにより、移動コピー処理中にOS110は移動元VOLと移動先VOLを区別することなくI/Oを発行可能である。また、移動が完了した際などに移動元VOLを削除しても、移動先VOLに継続してI/Oを発行可能であるため、OS110の動作には影響がない。
[0018]
 移動コピーは、例えば、移動元ストレージ装置500Aから移動先ストレージ装置500Bへのリプレース、移動元ストレージ装置500Aの一部のスナップショット構成を移動先ストレージ装置500Bに移すことによる負荷分散、移動元ストレージ装置Aと移動先ストレージ装置Bでスナップショット機能を二重化することによる冗長化のために行う。
[0019]
 移動コピー処理中に、移動元ストレージ装置500Aがホスト計算機100からI/Oを受領した場合の処理をS0からS7に示す。
S0:チャンクごとに移動コピー処理を開始。
S1:ホスト計算機100から実ボリューム520Aに対してライトが発行される。
S2:移動元ストレージ装置500Aは当該ライトを受領し、実ボリューム520Aの更新時にポインタの書換えが発生するSVOL(実ボリューム520B)のライト対象のアドレスについて、移動コピー処理を排他する。なお、アドレスとは、実ボリューム520上のチャンクの位置を示す数値である。
S3:移動元ストレージ装置500Aは実ボリューム520Aにライトによるデータ更新を実行する。
S4:移動元ストレージ装置500AはS3でのライト実行前のデータをプール530に格納し、SVOL(実ボリューム520B)のポインタを当該格納先のアドレスに変更する。なお、このように、プール530にデータを格納し、SVOLのポインタ(アドレス)を変更することを退避と呼ぶことがある。
S5:移動元ストレージ装置500Aはライト及びSVOL(実ボリューム520B)のポインタといった情報を含むスナップショット割当情報を送信する。
S6:移動先ストレージ装置500BはS5にて送信されたライト及びスナップショット割当情報を反映する。
S7:移動先ストレージ装置500BはS6のライトの結果必要となる退避を実行する。
[0020]
 図2はITシステム構成の概要を示すブロック図である。本システムは、ホスト計算機100、管理サーバ200、一つ以上のストレージ装置500から構成され、互いにLAN400で接続されている。またストレージ装置500とホスト計算機100は互いにSAN300で接続されている。なお、ホスト計算機は複数存在してもよく、その場合は管理用のLAN400に加えてデータ転送用のLANでホスト計算機が互いに接続されていてもよい。
[0021]
 図3(a)はホスト計算機100の内部構成を示したものである。ホスト計算機100は、一つ以上のCPU101、一つ以上のメモリ102、一つ以上のSANインタフェース105、一つ以上のLANインタフェース106、一つ以上のストレージデバイス103で構成され、それらは互いに内部バス107で接続されている。ホスト計算機100はSANインタフェース105を介してSANスイッチ400と接続されている。またホスト計算機100はLANインタフェース106を介してLANスイッチ400に接続されている。なお、ストレージデバイス103は必ずしも備えなくてもよい。備えない場合は、ストレージ装置500内のボリュームをソフトウェアの記憶領域として用いる。
[0022]
 図3(b)は管理サーバ200の内部構成を示したものである。管理サーバ200の内部構成はホスト計算機100と同様だが、必ずしもSANインタフェースを備えていない。管理サーバ200はLANインタフェース204を介して、LANスイッチ400と接続されている。
[0023]
 図4はストレージ装置500の内部構成を示したものである。ストレージ装置500は一つ以上のコントローラ540および一つ以上の物理ディスク501で構成される。コントローラ540は、一つ以上のCPU506、一つ以上のメモリ508、一つ以上の不揮発性メモリ505、一つ以上のキャッシュメモリ507、一つ以上のバックエンドインターフェース509、一つ以上のLANインタフェース504、一つ以上のSANインタフェース502で構成され、それらは相互に内部バス541で接続されている。コントローラ540はバックエンドインターフェース509を介して物理ディスク501と接続されている。
[0024]
 また、ストレージ装置500はLANインタフェース504を介して管理サーバ200と接続されている。また、ストレージ装置500はSANインタフェース502を介してホスト計算機100と接続されている。また、物理ディスク501はSAS(Serial Attached SCSI(Small Computer System Interface))ディスク、SATA(Serial Advanced Technology Attachment)ディスク、SSD(Solid State Drive)といった複数の種別のディスクから構成されていてもよい。なお、図1にて示した実ボリューム520のうちPVOLは、多くの場合、一つ以上の物理ディスク501を使用してRAID(Redundunt Arrays of Inexpensive Disks)で構成された領域だが、例えばデータ書込み時に動的に領域を割り当てるThin Provisioningといった技術により実装してもよい。
[0025]
 また、SVOLは、PVOLまたはプール530のチャンクのアドレスへの参照で構成される。プール530は、一つ以上の物理ディスク501で構成されたRAIDの領域、あるいはRAIDで構成された一つ以上の実ボリューム520のグループとして実装される。
[0026]
 後者の場合は、コントローラ540が、一つ以上の実ボリューム520のチャンクに通し番号(アドレス)を付けることで、一つのボリュームのように扱う。また、メモリ508にはリソース管理プログラム550、スナップショット制御プログラム551、移動コピー制御プログラム552が格納されており、CPU506がこれらのプログラムを実行する。リソース管理プログラム550は、後述の仮想ボリューム管理情報610や仮想ストレージボックス管理情報700といった情報の参照及び変更を行うことで、仮想ストレージ装置600とボリュームの包含関係などを管理する。
[0027]
 また、スナップショット制御プログラム551は、後述のスナップショットペア管理情報800、スナップショットPVOL管理情報900、スナップショットSVOL管理情報1000、プール管理情報1100といった情報の参照及び変更を行うことで、データ退避処理及びリード、ライトの処理といったスナップショットの制御にかかる処理を行う。移動コピー制御プログラム552は、後述の移動コピーペア管理情報1200及びスナップショットに関する情報の参照及び変更を行うことで、後述の移動コピー処理を実行する。
[0028]
 図5(a)は仮想ボリューム管理情報610の一例を示したものである。この情報は、各ストレージ装置500が保持する情報であり、主にメモリ508に格納される。実ボリュームID列611には、実ボリューム520の識別子が格納される。実ボリュームIDはストレージ装置500内で実VOL520を特定するための識別子である。リソースグループID列612には、実ボリューム520が所属するリソースグループの識別子が格納される。なお、リソースグループとは、実ボリューム520をグループ分けするための単位であり、後述のストレージボックスと1対Nの関係にある。
[0029]
 リソースグループは、例えばアクセス可能なユーザを設定することで、特定のユーザのみが当該リソースグループ内の実ボリューム520を扱え、他のユーザのアクセスを禁止するといったアクセス制御を実現することができる。仮想ボリュームID列613は、実ボリューム520に設定された第二の識別子が格納される。仮想ボリュームIDとは実ボリュームIDと対応付けられた識別子であり、ストレージ装置500はホスト計算機100から識別子を要求されると、仮想ボリュームIDを返す。
[0030]
 図5(b)は仮想ストレージボックス管理情報700の一例を示したものである。この情報は、各ストレージ装置500が保持する情報である。仮想ストレージボックスID列には、仮想ストレージボックスの識別子が格納される。仮想ストレージボックスとは、仮想ストレージ装置600のストレージ装置500毎の部分である。つまり、仮想ストレージ装置600の実体は、各ストレージ装置500で同一の仮想ストレージIDを設定された仮想ストレージボックスの集合である。
[0031]
 仮想ストレージID列702には、仮想ストレージ装置600の識別子が格納される。リソースグループID列703には、仮想ストレージボックスに所属するリソースグループIDが格納される。実ボリューム520は、仮想ボリューム管理情報610及び仮想ストレージボックス管理情報700を組み合わせることで、所属する仮想ストレージボックスや仮想ストレージ装置600を特定できる。
[0032]
 図6はスナップショットPVOL(実ボリューム520A)、SVOL(実ボリューム520B、520C)及びプール530の概念を示す図である。PVOL、SVOL、プールは、いずれも一つ以上のチャンクからなる。SVOLの各チャンクに格納されたデータは、PVOL参照、共有参照、占有参照のいずれかにより管理される。PVOL参照とは、PVOLの同一アドレスのチャンクを参照するものである。ホスト計算機100からSVOLのPVOL参照のチャンクにリードが発行された場合、ストレージ装置500は、PVOLの同一アドレスのチャンクのデータを応答する。
[0033]
 共有参照とは、プール530のチャンクを参照するものである。ホスト計算機100からSVOLの共有参照のチャンクにリードが発行された場合、ストレージ装置500は、SVOLの当該チャンクが参照するプール530のチャンクのデータを応答する。占有参照とは、共有参照と同様に、プール530のチャンクを参照するものである。共有参照と占有参照は、退避の発生した契機によって区別される。PVOLのあるチャンクにライトが発生した場合、ストレージ装置500は、SVOLのうち同一アドレスのチャンクがPVOL参照のものについて、ライト実行前の古いデータをプール530へ格納したうえで、参照先(ポインタ)を退避先のプールのアドレスに変更する。
[0034]
 このように、PVOLにライトが発生した契機で退避されたデータを参照している場合は、それを共有参照と呼ぶ。この理由は、多くの場合、複数のSVOLが退避されたデータを共有しているためである。一方、SVOLのあるチャンクにライトが発生した場合、ストレージ装置500は、ライトのデータをプール530の未割当のチャンク531に格納したうえで、SVOLの当該チャンクの参照先をライトデータが格納されたチャンクに変更する。このように、SVOLにライトが発生した契機で退避されたデータを参照する場合を占有参照と呼ぶ。これは、退避されたデータが当該SVOLに固有のデータとなるためである。なお、ライト契機でのPVOL参照、共有参照及び占有参照間の遷移は一方向であり、PVOL参照から共有参照または占有参照、共有参照から占有参照へ遷移するが、それ以外の遷移はない。
[0035]
 図7(a)は、スナップショットペア管理情報800の一例を示したものである。この情報は、各ストレージ装置500が保持する情報であり、主にメモリ508に格納される。スナップショットペアとは、スナップショットを構成するPVOLとSVOLの組である。一つのPVOLに、それぞれが異なる時点でのPVOLの複製である一つ以上のSVOLが構成される。スナップショットペアID列801は、スナップショットペアの識別子が格納される。ペア状態列802には、スナップショットペアの状態が格納される。ペア状態は、PAIR、COPY、PSUS、SMPLのいずれかである。PAIRとはPVOLとSVOLが一致している状態であり、ペア状態がPAIRの場合、SVOLの全てのチャンクはPVOL参照である。つまり、ホスト計算機100からリードを実行した際に、PVOLとSVOLのデータは全チャンクで一致する。
[0036]
 また、PAIRの場合、SVOLへのライトは禁止される。例えば、ホスト計算機100からペア状態がPAIRのSVOLにライトが発行された場合はエラーを応答する。COPYは、PAIRへ遷移するためのコピー中の過渡状態である。PAIRと同じく、SVOLへのライトは禁止される。ペア状態PSUSとは、ペアの関係は保持したまま、PVOL、SVOLのどちらに対して更新があっても、他方にその更新自体を反映させない状態であり、PVOLとSVOLは独立している。つまり、PVOLにライトが発生した場合、SVOLのデータの退避が実行される。
[0037]
 また、SVOLへのライトも許可される。ペア状態がSMPLの場合は、PVOLとSVOLはペアを組んでおらず、当該スナップショットペアIDが使用されていないことを示す。PVOL実ボリュームID列803には、PVOLの実ボリュームの識別子が格納される。SVOL実ボリュームID列804には、SVOLの実ボリュームの識別子が格納される。プールID列805には、データを退避するプール530の識別子が格納される。
[0038]
 なお、PVOLの実ボリュームIDが同じ場合、通常は同一のプール530を使用する。この理由は、プールが異なるとSVOL間で退避したデータを共有することができず、容量の使用効率や、退避の際の処理速度が落ちるためである。なお、本実施例では、PSUSのスナップショットペアのストレージ装置500間での移動を主な対象とする。この理由は、PAIRやCOPYにおいては、PVOLとSVOLのデータが完全に一致し、SVOLへのライトが発生しないため、移動処理がPSUSのスナップショットペアを移動する処理で実現できるためである。
[0039]
 図7(b)は、スナップショットPVOL管理情報900の一例を示したものである。この情報は、各ストレージ装置500が保持する情報であり、主にメモリ508に格納される。PVOL実ボリュームID列901には、PVOLの実ボリュームの識別子が登録される。アドレス列902には、PVOLのチャンクのアドレスが登録される。排他列903には、当該アドレスが排他されている(yes)か否(no)かを示す値が登録される。ここで排他とは、複数の主体があるチャンクに同時にアクセスしないように、ある主体がそのチャンクにアクセスしている間、別の主体のそのチャンクへのアクセスを禁止、または制限することである。
[0040]
 図7(c)は、スナップショットSVOL管理情報1000の一例を示したものである。この情報は、各ストレージ装置500が保持する情報であり、主にメモリ508に格納される。SVOL実ボリュームID列1001には、SVOLの実ボリュームの識別子が登録される。アドレス列1002には、SVOLのチャンクのアドレスが登録される。参照種別列1003には、当該アドレスのチャンクがPVOL参照、共有参照、占有参照のいずれであるかを示す値が登録される。参照アドレス列1004には、当該アドレスのチャンクが参照するプール530のチャンクのアドレスが登録される。なお、PVOL参照の場合は、参照先のアドレスは必ずPVOLの同一アドレスとなるため、参照アドレスは「なし」となる。排他列1005には当該アドレスが排他されている(yes)か否(no)かを示す値が登録される。
[0041]
 共有相手VOL実ボリュームID列1006には、参照種別が共有参照の場合に、プール530上の同一アドレスを参照するSVOL(共有相手VOL)の実ボリュームIDが登録される。PVOL参照、占有参照の場合、共有相手VOL実ボリュームID列1006は「なし」となる。また、共有参照であっても、例えばPVOLとスナップショットペアを組むSVOLが一つしかない場合など、共有相手VOLが存在しない場合は「なし」となる。
[0042]
 図8は、プール管理情報1100の一例を示したものである。この情報は、各ストレージ装置500が保持する情報であり、主にメモリ508に格納される。プールID列1101には、プール530の識別子が登録される。アドレス列1102には、プール530のチャンクのアドレスが登録される。割当済み列1103には、当該アドレスがSVOLに対して割当済み(yes)か否(no)かを示す値が登録される。
[0043]
 図9は、移動コピーペア管理情報1200の一例を示したものである。この情報は、各ストレージ装置500が保持する情報であり、主にメモリ508に格納される。移動コピーペアID列1201には、移動コピーペアの識別子が登録される。ペア状態列1202には、移動コピーペアの状態を示すPAIRまたはCOPYの値が登録される。PAIRは、後述の移動コピー処理が当該移動コピーペアの全アドレスについて完了した状態であり、移動元VOLと移動先VOLのデータが一致している。COPYは、PAIRでない状態である。
[0044]
 移動元VOL実ボリュームID列には、移動コピーペアのうち移動元VOLの実ボリュームID及び移動元ストレージ装置500Aの識別子が登録される。移動先VOL実ボリュームID列には、移動コピーペアのうち移動先VOLの実ボリュームID及び移動先ストレージ装置500Bの識別子が登録される。アドレス列1205には、移動元VOL及び移動先VOLのチャンクのアドレスが登録される。移動コピー状態列1206には、当該アドレスのチャンクの移動コピーが完了したか否(未完)かの値が登録される。
[0045]
 図10は、スナップショット割当情報1300の一例を示したものである。この情報は、チャンクごとに生成され、チャンクごとの移動コピーの際に移動元ストレージ装置500Aから移動先ストレージ装置500Bに送信されるチャンクごとの管理情報である。移動先VOL実ボリュームID列1301には、移動先VOLの実ボリュームIDが登録される。アドレス列1302には、移動先VOLのチャンクのアドレスが登録される。参照種別列1303には、PVOL参照、共有参照、占有参照のいずれであるかを示す値が登録される。移動先VOLがPVOLの場合、参照種別列1303の値は空となる。共有相手VOL実ボリュームID列1304には、共有相手VOLのうち、当該アドレスの移動コピー状態が「完了」のものの実ボリュームIDが登録される。
[0046]
 移動先VOLがSVOLでPVOL参照または占有参照の場合、及び移動先VOLがPVOLの場合は「なし」となる。また、共有参照であっても、共有相手VOLがない場合、またはどの共有相手VOLの移動コピー状態も未完である場合は、移動先ストレージ装置500Bのプール530に共有すべきデータが格納されていないため「なし」となる。データ有無列1305には、データ列1306にデータがあるか否かの値が登録される。データ列1306には、当該チャンクのデータが格納される。なお、データが格納される条件は、「移動先VOLがPVOLであること」、または「移動先VOLがSVOLで共有参照、かつ共有相手VOL実ボリュームID列1304の値が「なし」であること」、または「移動先VOLがSVOLで占有参照であること」である。
[0047]
 図11は、ボリューム移動処理の一例を示すフローチャートである。本処理を実行するのは以降の各ステップの説明においては移動元ストレージ500Aだが、管理サーバ200が実行してもよい。管理サーバ200が実行する場合、管理サーバ200は、LANを経由して各ストレージ装置500及びホスト計算機100に指示を出すことで、各ステップを実行する。ストレージ装置500が実行する場合には、ストレージ装置500に含まれる、移動コピー制御プログラム552によって実行される。
[0048]
 ステップ1401:移動先ストレージ装置500Bに、移動元ストレージ装置500Aの移動元VOLと同じ仮想ストレージIDの仮想ストレージ装置600に属し、かつ同じ仮想ボリュームIDを持つ移動先VOLを作成する。その際、移動元ストレージ装置500Aと移動先ストレージ装置500Bとで、スナップショットペア管理情報800、スナップショットPVOL管理情報900、スナップショットSVOL管理情報1000を更新する。なお、移動元VOLは、一つのPVOL、及び当該PVOLとスナップショットペアを組む全てのSVOLである。従って、このステップでは一つ以上の移動先VOLを作成することになる。さらに、作成した移動先VOLに対して、移動元ストレージ装置500Aと同じ構成のスナップショットペアを設定する。このとき、スナップショットのペア状態はPSUSである。また、移動先VOLをホストに対してパス設定する。
[0049]
 ステップ1402:移動元VOLと移動先VOLに移動コピーペアを設定する。このとき、移動コピーペアのペア状態はCOPYとなる。
ステップ1403:移動コピー処理(図12記載)を実行する。
ステップ1404:移動元VOLのホストへのパスを解除する。
ステップ1405:移動コピーペアを解除する。
なお、ステップ1401で「全てのSVOL」としたが「一部のSVOL」としてもよい。この場合、一部のSVOLのみ移動先ストレージ装置500Bに移動することになる。このような部分的な移動は、例えば移動元ストレージ装置500Aと移動先ストレージ装置500Bとで負荷分散を行う際に有効である。
[0050]
 なお、移動したSVOLについては、本フローチャート終了後、移動元ストレージ装置500Aから削除することができる。一方、PVOLは、移動元ストレージ装置500Aと移動先ストレージ装置500Bの両方でスナップショットペアを維持するために、両ストレージ装置500に残す必要がある。また、移動コピーを二重化のために実行する場合には、移動元ストレージ装置500AにPVOLとSVOLを両方残す必要があるため、S1404、S1405は不要となる
 図12は、移動コピー処理の一例を示すフローチャートである。本処理を実行するのは移動元ストレージ装置500Aの移動コピー制御プログラム552である。
[0051]
 ステップ1501:移動コピーペア管理情報1200を参照し、移動コピーペアのうち、ペア状態がCOPYのものを一つ選択する。ここで選択した移動コピーペアを対象ペアと呼ぶ。
ステップ1502:対象ペアが見つかった場合、ステップ1503に進む。さもなければ、全ての移動コピーを完了したことになるため、ステップ1512(終了)に進む。
ステップ1503:移動コピーペア管理情報1200を参照し、対象ペアのアドレスのうち、移動コピー状態が「未完」のアドレスを一つ選択する。ここで選択したアドレスを対象アドレスと呼ぶ。なお、以降の説明において、誤解の恐れがない限りは「アドレス」という単語で、そのアドレスが示すチャンクのことを指す場合がある。
[0052]
 ステップ1504:スナップショットペア管理情報800と移動コピーペア管理情報1200を参照し、対象ペアが、スナップショットPVOL同士の移動コピーペアである場合(YES)は、ステップ1507に進む。スナップショットSVOL同士の移動コピーペアである場合(NO)は、ステップ1505に進む。
ステップ1505:移動コピーペア管理情報1200を参照し、対象ペアのボリューム(SVOL)とスナップショットペアを組むPVOLの対象アドレスが、移動コピー状態「完了」である場合は、ステップ1507に進む。移動コピー状態が「未完」の場合はステップ1506に進む。
[0053]
 ステップ1506:PVOLの対象アドレスの移動コピー状態が「未完」の場合は、先にPVOLの対象アドレスの移動コピーを実行する必要があるため、対象ペアをPVOL同士の移動コピーペアに変更する。SVOLに参照されているPVOLの移動コピー状態が「未完」のまま、先に、参照しているSVOLの移動コピーをしてしまうと、移動先のSVOLが移動コピー状態「完了」になる前のPVOLを参照し、移動元と移動先でスナップショット構成に食い違いが起きてしまう。ステップ1506により、この食い違いを防ぐことが可能となる。
[0054]
 ステップ1507:移動元VOLの対象アドレスの排他を取得する。なお、本処理含め、以降の処理全てにおいて、移動元VOLでのみ排他を取得し、移動先VOLでは排他制御は行わない。後に説明する図17のステップ2002にあるように、移動先VOLに対するライトコマンドを受領した際には、移動元ストレージ装置にライトコマンドを転送するため、移動元VOLでのみ排他制御を行えば、移動元と移動先のVOLでスナップショット構成に食い違いが起きることはない。
ステップ1508:排他の取得が成功した場合、ステップ1509に進む。失敗した場合、ステップ1501に進む。
[0055]
 ステップ1509:スナップショット割当情報1300を移動先ストレージ装置500Bに送信し、移動先ストレージ装置500Bからの処理完了通知を待つ。なお、スナップショット割当情報1300の移動先VOL実ボリュームID列1301には、移動コピーペア管理情報1200に基づき、対象ペアの移動先VOL実ボリュームIDが登録される。アドレス列1302には、対象アドレスが登録される。参照種別1303には、スナップショットSVOL管理情報1000に基づき、参照種別が登録される。対象ペアがPVOL同士の移動コピーペアの場合は、参照種別1303は空となる。共有相手VOL実ボリュームID列1304には、スナップショットSVOL管理情報1000の共有相手VOL実ボリュームID列1006に基づいて、共有相手VOLの実ボリュームIDが登録される。参照種別等の条件によって登録されない場合があるが、その条件については記載済みである。また、データ有無列1305、及びデータ列1306が登録される条件についても記載済みである。
[0056]
 ステップ1510:移動コピーペア管理情報1200の対象ペアの対象アドレスの移動コピー状態を「完了」にし、排他を解除する。
ステップ1511:対象ペアの全アドレスの移動コピー状態が「完了」であれば、移動コピーのペア状態をPAIRに変更し、ステップ1501に進む。さもなければ本ステップでは何もせず、同様にステップ1501に進む。
[0057]
 図13は、移動元ストレージ装置からのスナップショット割当情報受信時処理の一例を示すフローチャートである。本処理を実行するのは移動先ストレージ装置500Bの移動コピー制御プログラム552である。
[0058]
 ステップ1601:ステップ1509で送信されたスナップショット割当情報1300を受信する。
ステップ1602:スナップショット割当情報1300の移動先VOL実ボリュームID列1301が示す移動先VOLが、スナップショットPVOLである場合(YES)、ステップ1603に進む。スナップショットSVOLである場合(NO)、ステップ1604に進む。
ステップ1603:移動先VOLの対象アドレス(アドレス列1302の値)のデータを、データ列1306のデータで更新する。なお、本ステップはPVOLを対象としたステップのため、参照種別等のスナップショットSVOL管理情報1000に関する更新はない。
[0059]
 ステップ1604:スナップショット割当情報1300の共有相手VOL実ボリュームID列1304に共有相手VOLの実ボリュームIDが格納されている場合(YES)は、ステップ1606に進む。共有相手VOLの実ボリュームIDが格納されていない場合(NO)は、ステップ1605に進む。
ステップ1605:プール530の未割当のアドレスを検索し、見つかったアドレスのチャンクにデータ列1306のデータを格納する。さらに、移動先VOLのスナップショットSVOL管理情報1000の参照種別列1003の値を、スナップショット割当情報1300の参照種別列1303の値で更新する。また、参照アドレス列1004の値を、データを格納したプール530のチャンクのアドレスとする。
[0060]
 ステップ1606:移動先VOLの対象アドレスについて、スナップショットSVOL管理情報1000の参照種別列1003及び共有相手VOL実ボリュームID列1006の値を、スナップショット割当情報1300のそれぞれ同名の列の値で更新する。また、同じく移動先VOLの対象アドレスについて、参照アドレス列1004を、共有相手VOLのスナップショットSVOL管理情報1000の同名の列の値で更新する。また、共有相手VOLの対象アドレスについて、スナップショットSVOL管理情報1000の共有相手VOL実ボリュームID列1006の値を、スナップショット割当情報1300の同名の列の値で更新する。このように、共有相手VOLが存在する場合は、スナップショットSVOL管理情報1000の書換えのみで処理が完了し、データの転送を伴わない。
[0061]
 ステップ1607:移動先VOLが属する移動コピーペアの対象アドレスの移動コピー状態を「完了」にする。
ステップ1608:ステップ1607で全アドレスの移動コピー状態が「完了」となれば、移動コピーペアのペア状態をPAIRに変更する。それ以外の場合、本ステップでは何もしない。
ステップ1609:移動元ストレージ装置500Aに完了通知を送信する。
このように、移動コピー処理はチャンク単位の情報であるスナップショット割当情報1300によってチャンク単位で行われ、その際の排他取得もチャンク単位で行われる。ボリュームごとに移動コピー処理を行い、ボリュームごとに排他を取得する場合よりも、細かい単位で排他を取得することで、同じボリュームに含まれていても、移動コピー処理と無関係のチャンクにはI/Oを受け付けることが可能となる。
[0062]
 図14は、移動元VOLへのホストライト受領時処理の一例を示すフローチャートである。本処理を実行するのは移動元ストレージ装置500Aのスナップショット制御プログラム551である
 ステップ1701:ホストから移動元VOLに対するライトコマンドを受領する。移動元VOLはPVOLとSVOLいずれであってもよい。また、ライトの対象となったボリューム及びアドレスを、それぞれ対象VOL(またはライト対象VOL)、対象アドレスと呼ぶ。
[0063]
 ステップ1702:ライト対象VOL及び当該ライト対象VOLとデータを共有するSVOLの、対象アドレスの排他を取得する。ここで「当該ライト対象VOLとデータを共有するSVOL」とは、ライト対象VOLがPVOLの場合は「対象アドレスがPVOL参照であるようなSVOL」、ライト対象VOLがSVOLの場合は対象アドレスについての共有相手VOLのことである。なお、ライト対象VOLの対象アドレスがPVOL参照または占有参照の場合は、排他を取得するのはライト対象VOLについてのみとなる。
[0064]
 ステップ1702での排他により、ライト処理中に、ライト対象のアドレスとスナップショット構成によりライトによって参照先が変更されるアドレスに移動コピー処理が実行されることがなくなるため、移動元と移動先のボリュームでスナップショット構成に食い違いが発生することを防ぐことが出来る。ここで、当該ライト対象VOL及び当該ライト対象VOLとデータを共有するSVOLの、対象アドレスが、移動コピーにより排他を取得されている場合は、例えばステップ1703に進まず、ステップ1702を再度実行するか、ホストにエラーを返す。
[0065]
 ステップ1703:ライトを実行する。つまり、ライトコマンドに含まれるデータを、対象VOLの対象アドレスに書き込む。ライト対象VOLがSVOLかつ対象アドレスがPVOL参照の場合、プール530の未割当のチャンクを検索し、見つかったチャンクにデータを書き込み、対象アドレスを見つかったプール530のチャンクのアドレスで更新する。それ以外の場合は、対象アドレスにはチャンクが割り当たっているため、当該チャンクにデータを書き込む。なお、ここでの書き込みは物理的にはまずキャッシュメモリ507に対して行い、キャッシュメモリ507から物理ディスク501への書き込み(デステージ)は本処理とは非同期的に実行する。これは一般的なストレージ装置の処理である。
[0066]
 ステップ1704:データ退避処理(図16記載)を実行する。
[0067]
 ステップ1705:ライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ1706に進む。「未完」の場合はステップ1709に進む。移動コピー状態が「未完」の場合には移動元VOLのライト対象VOLに対するライトは、その後の移動コピーによって移動先VOLに反映させ、移動コピー状態が「完了」の場合には移動元VOLのライト対象VOLに対するライトをステップ1706によって移動先VOLに反映させる。
[0068]
 ステップ1706:移動先ストレージ装置500Bに、ライト対象VOLと移動コピーペアを組む移動先VOLに対するライトコマンド、及びステップ1702で排他を取得したSVOLのスナップショット割当情報1300を送信し、完了通知を待つ。なお、送信するスナップショット割当情報1300は「ステップ1702で排他を取得したSVOLのスナップショット割当情報1300」ではなく「ステップ1702で排他を取得したSVOLのうち、対象アドレスの移動コピー状態が未完のもののスナップショット割当情報1300」としてもよい。
[0069]
 また、送信するスナップショット割当情報1300は、ステップ1704によりデータを退避する前のものを送信する。移動元VOLに対するライトによって生じた退避による参照先の変更等は、移動先で行われる退避によって反映されるため、送信するスナップショット割当情報1300は、ステップ1704によりデータを退避する前のものでよい。また、スナップショット割当情報1300をライトコマンドとともに送信することで、移動コピーを図12、図13の移動コピー処理だけでなく、移動元へのライトの際にも実行する。
[0070]
 ステップ1707:ステップ1706でスナップショット割当情報1300を送信したSVOLの対象アドレスの移動コピー状態を「完了」にする。
ステップ1708:ステップ1707の結果、全アドレスの移動コピー状態が「完了」となった移動コピーペアのペア状態をPAIRにする。
ステップ1709:ステップ1702で取得した排他を解除する。
ステップ1710:ホストに完了(RSP)を送信する。
[0071]
 図15は移動元ストレージ装置500Aからのライト及びスナップショット割当情報受信時処理の一例を示すフローチャートである。本処理を実行するのは移動先ストレージ装置500Bのスナップショット制御プログラム551である。
[0072]
 ステップ1801:ステップ1706で移動元ストレージ装置500Aから送信された、移動先VOL(ライト対象VOL)に対するライトコマンド及びスナップショット割当情報を受信する。
[0073]
 ステップ1802:スナップショット割当情報1300に基づいて、スナップショットSVOL管理情報1000を更新する。なお、この更新処理はスナップショット割当情報受信時処理(図13記載)と同様である。ただし、本ステップで処理するスナップショット割当情報1300には、複数のSVOLの情報が含まれているため、各々についてスナップショット割当情報受信時処理を実行する。
[0074]
 ステップ1803:ステップ1802で更新したSVOLについて、対象アドレスの移動コピー状態を「完了」にする。
ステップ1804:ステップ1803の結果、全アドレスの移動コピー状態が「完了」になった移動コピーペアのペア状態をPAIRにする。
ステップ1805:ライトを実行する。
ステップ1806:データ退避処理(図16記載)を実行する。
ステップ1807:移動元ストレージ装置500Aに完了通知を応答する。
[0075]
 図16は、データ退避処理の一例を示すフローチャートである。本処理を実行するのはストレージ装置500のスナップショット制御プログラム551である。また、本処理はライトを実行した直後に実行されるが、非同期的に実行してもよい。すなわち、ライトを実行(キャッシュメモリ507に書き込み)した直後にはデータ退避処理を実行せず、デステージを実行する際に実行してもよい。
[0076]
 ステップ1901:ライト対象VOLがPVOLの場合、ステップ1902に進む。対象VOLがSVOLの場合、ステップ1905に進む。
ステップ1902:SVOLのうち、対象アドレスの参照種別がPVOL参照のものを検索する。
[0077]
 ステップ1903:ステップ1902で一つでもSVOLが見つかった場合、プール530から未割当のチャンクを検索し、当該チャンクに対象アドレスのライト実行前のデータを格納する。格納先のチャンクのアドレスを新アドレスと呼ぶ。なお、SVOLが一つも見つからなかった場合、本ステップでは何もしない。
[0078]
 ステップ1904:ステップ1902で見つけたSVOLの対象アドレスについて、スナップショットSVOL管理情報1000の参照種別列1003を共有参照、参照アドレス列1004を新アドレスに更新する。また、共有相手VOL実ボリュームID列1006の値を、見つけたSVOLに基づき更新する。
[0079]
 ステップ1905:対象アドレスが共有参照である場合、ステップ1906に進む。対象アドレスがPVOL参照または占有参照である場合、ステップ1910に進む。
ステップ1906:ライト対象VOLの対象アドレスについて、スナップショットSVOL管理情報1000の参照種別列1003を占有参照にする。
ステップ1907:ライト対象VOLの対象アドレスについて、共有相手VOLを検索する。つまり、スナップショットSVOL管理情報1000の共有相手VOL実ボリュームID列1006を参照する。
[0080]
 ステップ1908:ステップ1907で一つでも共有相手VOLが見つかった場合、プール530から未割当のチャンクを検索し、当該チャンクに対象アドレスのライト実行前のデータを格納する。格納先のチャンクのアドレスを新アドレスと呼ぶ。なお、共有相手VOLが一つも見つからなかった場合、本ステップでは何もしない。
ステップ1909:ステップ1907で見つけた共有相手VOLの対象アドレスについて、スナップショットSVOL管理情報1000の参照アドレス列1004を新アドレスに更新する。
[0081]
 ステップ1910:ライト対象VOLの対象アドレスについて、スナップショットSVOL管理情報1000の参照種別列1003を占有参照にする。なお、すでに占有参照となっている場合は本ステップでは何もしない。
[0082]
 図17は、移動先VOLへのホストライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動先ストレージ装置500Bのスナップショット制御プログラム551である。
[0083]
 ステップ2001:ホスト計算機100から、移動先VOLに対するライトを受領する。
ステップ2002:移動元ストレージ装置500Aにライトコマンドを転送し、完了通知を待つ。
ステップ2003:完了通知に含まれるライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ2004に進む。「未完」の場合、ステップ2009に進む。
[0084]
 ステップ2004:完了通知に含まれるスナップショット割当情報1300に基づいて、スナップショットSVOL管理情報1000を更新する。なお、この更新処理はスナップショット割当情報受信時処理(図13記載)と同様である。ただし、本ステップで処理するスナップショット割当情報1300には、複数のSVOLの情報が含まれているため、各々についてスナップショット割当情報受信時処理を実行する。
[0085]
 ステップ2005:ステップ2004で更新したSVOLの対象アドレスについて、移動コピー状態を「完了」にする。
ステップ2006:ステップ2005の結果、全アドレスの移動コピー状態が「完了」になった移動コピーペアのペア状態をPAIRにする。
[0086]
 ステップ2007:ライトを実行する。
ステップ2008:データ退避処理を実行する。
ステップ2009:ホスト計算機100に完了(RSP)を送信する。
ステップ2010:移動元ストレージ装置500Aに排他解除を送信する。
[0087]
 図18は、移動先ストレージ装置500Bからのライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動元ストレージ装置500Aである。
[0088]
 ステップ2101:移動先ストレージ装置500Bからライトコマンドを受信する。
ステップ2102:ライト対象VOL及び当該ライト対象VOLとデータを共有するSVOLの、対象アドレスの排他を取得する。ここで「当該ライト対象VOLとデータを共有するSVOL」とは、ライト対象VOLがPVOLの場合は「対象アドレスがPVOL参照であるようなSVOL」、ライト対象VOLがSVOLの場合は対象アドレスについての共有相手VOLのことである。なお、ライト対象VOLの対象アドレスがPVOL参照または占有参照の場合は、排他を取得するのはライト対象VOLについてのみとなる。
[0089]
 ステップ2103:ライトを実行する。
ステップ2104:データ退避処理を実行する。
ステップ2105:ライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ2106に進む。「未完」の場合ステップ2109に進む。
[0090]
 ステップ2106:移動先ストレージ装置500Bに、完了通知を応答し、排他解除の指示を待つ。なお、送信する完了通知には、「ライト対象VOLの対象アドレスの移動コピー状態が「完了」である」こと、及びステップ2102で排他を取得したSVOLのスナップショット割当情報1300が含まれる。なお、スナップショット割当情報1300は、ステップ2104のデータ退避処理実行前のものである。
[0091]
 また、送信するスナップショット割当情報1300は「排他を取得したSVOLのスナップショット割当情報1300」ではなく「排他を取得したSVOLのうち、対象アドレスの移動コピー状態が未完のもののスナップショット割当情報1300」でもよい。
[0092]
 ステップ2107:ステップ2106でスナップショット割当情報1300を送信したSVOLの対象アドレスについて、移動コピー状態を「完了」にする。
[0093]
 ステップ2108:ステップ2107の結果、全アドレスの移動コピー状態が「完了」になった移動コピーペアのペア状態をPAIRにする
 ステップ2109:移動先ストレージ装置500Bに、完了通知を応答し、排他解除の指示を待つ。なお、送信する完了通知には、「ライト対象VOLの対象アドレスの移動コピー状態が「未完」である」ことが含まれる。
[0094]
 ステップ2110:取得していた排他を解除する。本ステップは、ステップ2106及びステップ2109に記載の通り、移動先ストレージ装置500Bからの排他解除指示があるまで実行されない。
[0095]
 図17及び図18で示した処理により、移動先でライト要求を受け付けても、スナップショット構成に食い違いが起きることなくライトを実行することが可能となる。
[0096]
 図19は、移動元VOLへのリード受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動元ストレージ装置500Aのスナップショット制御プログラム551である。
[0097]
 ステップ2201:ホスト計算機100又は移動先ストレージ装置500Bからリード(リードコマンドと呼ぶこともある)を受信する。リードの対象となるボリューム及びアドレスを、それぞれリード対象VOL、対象アドレスと呼ぶ。
ステップ2202:リード対象VOLの対象アドレスの排他を取得する。
ステップ2203:リードを実行する。つまり、リード対象VOLの対象アドレスに格納されたデータを読み出す。
ステップ2204:ステップ2202で取得した排他を解除する。
ステップ2205:完了(RSP)を送信する。RSPにはリード結果のデータも含まれる。
[0098]
 図20は、移動先VOLへのリード受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動先ストレージ装置500Bのスナップショット制御プログラム551である。
[0099]
 ステップ2301:ホスト計算機100からリードを受信する。
ステップ2302:リード対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ2303に進む。「未完」の場合、ステップ2304に進む。
ステップ2303:リードを実行する。
ステップ2304:移動元ストレージ装置500Aにリードを転送し、RSPを待つ。応答されるRSPには、リード結果のデータが含まれる。
ステップ2305:ホストにRSPを送信する。RSPには、リード結果のデータが含まれる。
[0100]
 このように、実施例1では移動コピーをスナップショット割当情報1300によってチャンク単位で行い、その際に、チャンク単位で排他を取得する。これにより、移動コピー処理と関係しないチャンクには引き続きI/Oを受け付けることが可能となる。そして、移動コピーの移動元または移動先のボリュームにホストからのライトがあった際、移動元のボリュームにライトデータを書き込み、ライト対象のアドレスの移動コピーが完了しているか否かを判定し、移動コピーが完了している場合には移動先のボリュームへライト要求に係るデータを送信して移動元へのライトを移動先に反映させ、移動コピーが未完である場合にはライトのデータを移動先に送信せず、後に行われる移動コピーにより移動元へのライトを移動先に反映させる。
[0101]
 これにより、移動コピーが完了した移動コピーペアにもライトが反映されるため、移動コピーが完了した移動コピーペアにおいて、移動元と移動先でスナップショット構成に食い違いが起きるのを防ぐことが出来る。また、移動コピー対象のアドレスと、ライト対象アドレスと、スナップショット構成によりライト対象アドレスと関係するアドレスと、の排他を取得することで、移動コピーの際にライトを受け付けても、移動元と移動先でスナップショット構成が食い違うことを防ぐことが出来きる。
[0102]
 これにより、ホストのダウンタイムなしで、スナップショット機能を維持したままストレージ装置のリプレースが実施可能となる。その他としては、移動元から移動先へのライト送信に併せて、スナップショット割当情報1300を送信することで、移動元又は移動先へのライトの際に移動コピー処理を行うことである。ライト処理と移動コピー処理はともにチャンクの排他を取得する。ライト処理によって排他を取得したチャンクの移動コピーをそのライト処理を契機に行うことで、後に再度そのチャンクの排他を取得して移動コピーを行う場合に比べ、排他を取得する回数を減らすことが可能となり、結果として移動コピーの処理時間を短くすることが出来る。
実施例 2
[0103]
 図2から図11、図13、図16、図19から図25に基づき、本発明に従う第二の実施例について説明する。なお、本実施例と実施例1の違いは移動コピー処理において、対象アドレスの排他を取得しないことである。これにより、移動コピー処理が移動元VOL及び移動先VOLのライト性能/リード性能に与える影響を小さくすることができる。また、PVOLへのライトが発生した際の移動元ストレージ装置500Aでの排他取得は、実施例1と比べて細かい範囲で実施する。これにより、PVOLのライト性能/リード性能が実施例1と比べて向上する。以下、実施例1との差分である図21から図27の説明を記載する。
[0104]
 図21は、移動コピー処理の一例を示すフローチャートである。本処理を実行するのは移動元ストレージ装置500Aである。
ステップ2401:移動コピーペアのうち、ペア状態がCOPYのものを一つ選択する。ここで選択した移動コピーペアを対象ペアと呼ぶ。
[0105]
 ステップ2402:対象ペアが見つかった場合、ステップ2403に進む。さもなければ、全ての移動コピーを完了したことになるため、ステップ2412(終了)に進む。
[0106]
 ステップ2403:対象ペアのアドレスのうち、移動コピー状態が「未完」のアドレスを一つ選択する。ここで選択したアドレスを対象アドレスと呼ぶ。
[0107]
 ステップ2404:対象ペアが、スナップショットPVOL同士の移動コピーペアである場合(YES)は、ステップ2407に進む。スナップショットSVOL同士の移動コピーペアである場合(NO)は、ステップ2405に進む。
[0108]
 ステップ2405:対象ペアのボリューム(SVOL)とスナップショットペアを組むPVOLの対象アドレスが、移動コピー状態「完了」である場合は、ステップ2407に進む。移動コピー状態が「未完」の場合はステップ2406に進む。
[0109]
 ステップ2406:PVOLの対象アドレスの移動コピー状態が「未完」の場合は、先にPVOLの対象アドレスの移動コピーを実行する必要があるため、対象ペアをPVOL同士の移動コピーペアに変更する。
[0110]
 ステップ2407:スナップショット割当情報1300を移動先ストレージ装置500Bに送信し、移動先ストレージ装置500Bからの処理完了通知を待つ。なお、スナップショット割当情報1300の各列に登録される値については、実施例1の場合と同じである。また、データ退避処理をライトと非同期に実行する方法を取っている場合は、本ステップ実行前に、関連するボリュームの対象アドレス(対象ペアの対象アドレスがPVOL参照であればPVOLの対象アドレス、対象ペアの対象アドレスに共有相手VOLがあれば共有相手VOLの対象アドレス)のデステージ及びデータ退避処理を実行する。また、この関連するボリュームのデステージ及びデータ退避処理は、ステップ2408でスナップショット割当情報1300の差異を検出する直前にも実行する。
[0111]
 ステップ2408:ステップ2407で送信したスナップショット割当情報1300と、本ステップ実行時の移動元ストレージ装置500Aの最新情報に基づくスナップショット割当情報1300とを比較し、差異があればステップ2407に戻る。同一であればステップ2409に進む。このステップは、ステップ2407で移動先ストレージ装置500Bにスナップショット割当情報1300を送信している間に、移動元ストレージ装置500Aで対象ペアの対象アドレスのデータや管理情報が、ライトやデータ退避処理により変更された場合に、当該変更を検出し、修正するために実行する。
[0112]
 同様の理由により、移動先ストレージ装置500Bではスナップショット割当情報1300を受信しても、移動コピー状態を「完了」にしてよいか判断することができないため、スナップショット割当情報受信時処理(図13記載)のうちステップ1607及びステップ1608は省略する。なお、移動先ストレージ装置500Bにおける移動コピー状態の変更は、ステップ2411により実行される。
[0113]
 ステップ2408により、移動元のアドレスと移動先のアドレスのスナップショット構成に差異がなくなるまでステップ2407を繰り返すので、移動コピー処理中に移動コピー処理対象のアドレスやスナップショット構成により移動コピー処理対象のアドレスと関連するアドレスにライト処理が起きても、移動元と移動先のアドレスでスナップショット構成が食い違うことを防ぐことが出来る。また、実施例1と同様に、チャンクごとに排他を取得し、チャンク単位の情報であるスナップショット割当情報1300を用いて移動コピーを行うことで、移動コピーと無関係のチャンクへのI/Oを受け付けることが出来る。
[0114]
 ステップ2409:対象ペアの対象アドレスの移動コピー状態を「完了」にする。
ステップ2410:対象ペアの全アドレスの移動コピー状態が「完了」であれば、移動コピーのペア状態をPAIRに変更し、ステップ2411に進む。さもなければ本ステップでは何もせず、同様にステップ2411に進む。
[0115]
 ステップ2411:ステップ2409及びステップ2410での移動コピー状態及びペア状態の変更を、移動先ストレージ装置500Bに送信する。つまり、移動先ストレージ装置500Bに、対象ペアの対象アドレスの移動コピー状態を「完了」にするよう通知する。また、全アドレスの移動コピー状態が「完了」であれば、移動コピーのペア状態をPAIRにするよう、合わせて通知する。なお、この通知を受信した移動先ストレージ装置500Bの処理は、単に移動コピーペア管理情報1200を更新するだけであるため、フローチャートは省略する。
[0116]
 図22は、移動元VOLへのホストライト受領時処理の一例を示すフローチャートである。本処理を実行するのは移動元ストレージ装置500Aである。
[0117]
 ステップ2501:ホストから移動元VOLに対するライトコマンドを受領する。移動元VOLはPVOLとSVOLいずれであってもよい。また、ライトの対象となったボリューム及びアドレスを、それぞれ対象VOL(またはライト対象VOL)、対象アドレスと呼ぶ。
[0118]
 ステップ2502:ライト対象VOLがPVOL、または「ライト対象VOLがSVOLかつ対象アドレスが占有参照」の場合、ステップ2503に進む。それ以外(SVOLで対象アドレスがPVOL参照または共有参照)の場合、ステップ2504に進む。
ステップ2503:ライト対象VOLの対象アドレスの排他を取得する。
ステップ2504:ライト対象VOLの対象アドレスがPVOL参照の場合、ステップ2505に進む。共有参照の場合、ステップ2506に進む。
[0119]
 ステップ2505:ライト対象VOL及び「ライト対象VOLとスナップショットペアを組むPVOL」の対象アドレスの排他を取得する。
ステップ2506:ライト対象VOL及び「ライト対象VOLの対象アドレスについて共有相手VOLであるボリューム」の対象アドレスの排他を取得する。
[0120]
 ステップ2502乃至2506の排他取得は実施例1のステップ1702の排他取得とは異なる。PVOLとそのPVOLを参照するSVOLにおいて、実施例1ではPVOLにライトがあった際、PVOLとSVOLの排他を取得し、SVOLにライトがあった際は、SVOLの排他を取得する。一方、実施例2では、PVOLにライトがあった際、PVOLの排他を取得し、SVOLにライトがあった際、SVOLと参照されているPVOLの排他を取得する。
[0121]
 実施例1の排他ではSVOLへのライトの際にライト対象の排他しか取得しないため、SVOLへのライト性能を上げることができる。一方で、実施例2の排他では、PVOLへのライトの際にライト対象の排他しか取得しないため、PVOLへのライト性能を上げることができる。なお、実施例2において実施例1のステップ1702に記載した範囲で排他取得を用いても構わない。
[0122]
 ステップ2507:ライトを実行する。
ステップ2508:データ退避処理(図16記載)を実行する。
ステップ2509:ライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ2510に進む。「未完」の場合はステップ2511に進む。
ステップ2510:移動先ストレージ装置500Bに、ライト対象VOLと移動コピーペアを組む移動先VOLに対するライトコマンドを送信し、完了通知を待つ。
ステップ2511:取得した排他を解除する。
ステップ2512:ホストに完了(RSP)を送信する。
[0123]
 図23は、移動元ストレージ装置からのライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動先ストレージ装置500Bである。
[0124]
 ステップ2601:ステップ2510で移動元ストレージ装置500Aから送信された、移動先VOL(ライト対象VOL)に対するライトコマンドを受信する。
ステップ2602:ライトを実行する。
ステップ2603:データ退避処理(図16記載)を実行する。
ステップ2604:移動元ストレージ装置500Aに完了(RSP)を送信する。
[0125]
 図24は、移動先VOLへのホストライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動先ストレージ装置500Bである。
[0126]
 ステップ2701:ホスト計算機100から、移動先VOLに対するライトを受領する。
ステップ2702:移動元ストレージ装置500Aにライトコマンドを転送し、完了通知を待つ。
ステップ2703:完了通知に含まれるライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ2704に進む。「未完」の場合、ステップ2706に進む。
[0127]
 ステップ2704:ライトを実行する。
ステップ2705:データ退避処理を実行する。
ステップ2706:ホスト計算機100に完了(RSP)を送信する。
ステップ2707:移動元ストレージ装置500Aに排他解除を送信する。
[0128]
 図25は、移動先ストレージ装置500Bからのライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動元ストレージ装置500Aである。
[0129]
 ステップ2801:移動先ストレージ装置500Bからライトコマンドを受信する。
ステップ2802からステップ2806:排他を取得するステップだが、図22のステップ2502からステップ2506と同様の処理となるため説明を省略する。
ステップ2807:ライトを実行する。
ステップ2808:データ退避処理を実行する。
[0130]
 ステップ2809:ライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ2810に進む。「未完」の場合ステップ2811に進む。
ステップ2810:移動先ストレージ装置500Bに、完了通知を応答し、排他解除の指示を待つ。なお、送信する完了通知には、「ライト対象VOLの対象アドレスの移動コピー状態が「完了」である」ことが含まれる。
[0131]
 ステップ2811:移動先ストレージ装置500Bに、完了通知を応答し、排他解除の指示を待つ。なお、送信する完了通知には、「ライト対象VOLの対象アドレスの移動コピー状態が「未完」である」ことが含まれる。
[0132]
 ステップ2812:取得していた排他を解除する。本ステップは、ステップ2810及びステップ2811に記載の通り、移動先ストレージ装置500Bからの排他解除指示があるまで実行されない。
[0133]
 実施例2では、実施例1と異なり、移動コピー処理の際に、移動コピーの対象アドレスの排他を取得せず、代わりに、移動コピーの対象ペア間でスナップショット構成に差異がなくなるまでスナップショット割当情報1300の送信を繰り返す。そのため、移動コピーの対象アドレスに対するライトが移動コピーによる排他によって遅延することがない、また、移動元へのライトの際、移動元VOLから移動先VOLへのライトコマンド転送する場合にスナップショット割当情報1300を送信しない。そのため、実施例1と比べライト処理の際の負荷が軽減する。その他としては、前述したように移動元へのライトの際の排他取得は、実施例1に比べ、PVOLへのライト性能が高くなる。
実施例 3
[0134]
 図2から図9、図11、図16、図19、図20、図23、図26から図29に基づき、本発明に従う第三の実施例について説明する。なお、本実施例と、実施例1及び2との主な違いは移動コピー処理の方法にある。実施例1及び2においては、移動コピー処理において、移動元VOLのチャンクのデータ及びポインタ等を含むスナップショット割当情報1300を移動元ストレージから移動先ストレージに送信することで、スナップショットVOLの移動を実行した。
[0135]
 一方、本実施例においては、移動元ストレージ装置500Aから移動先ストレージ装置500Bに対して、移動元VOLのチャンクのデータを、ライトコマンドとして送信することにより、スナップショットVOLの移動を実行する。この処理方式により、実施例1及び2と比べて、移動先ストレージ装置500Bにはスナップショット割当情報1300を解釈するための処理が不要となる。
[0136]
 つまり、移動先ストレージ装置500Bはホストからのライトを処理する機能及びスナップショット機能という、ストレージ装置として基本的な機能を備えていればスナップショットVOLの移動が可能となる。ただし、実施例1及び2が移動コピー処理の対象VOLの順序を特に考慮しなかったことに対し、本実施例では古い世代のSVOLから順に、移動先ストレージ装置500Bに再現する処理を行う必要があるため、処理順序に制限がある。
[0137]
 また、実施例1及び2では、図11のステップ1401でスナップショットペアを設定する際に移動元VOLと同じPSUSに設定するが、本実施例では全てPAIRとし、移動コピー処理中でPSUSに遷移させる。以下、実施例1及び2との差分である図26から図29の説明を記載する。
[0138]
 図26は、移動コピー処理の一例を示すフローチャートである。本処理を実行するのは、移動元ストレージ装置500Aである。
[0139]
 本処理では「1.最古世代の移動元SVOLの全データを移動先PVOLに書き込み、2.当該移動元SVOLに対応する移動先SVOLのスナップショットペアのペア状態をPSUSに遷移させることで、その後移動先PVOLに書き込みがあっても、当該移動元VOLと当該移動先SVOLのデータが一致したままになるようにし、3.最古世代より一つ若い世代の移動元SVOLについて最古世代SVOLとの差分データを移動先PVOLに書き込み、4.当該移動元SVOLに対応する移動先SVOLのスナップショットペアのペア状態をPSUSに遷移させることで、その後移動先PVOLに書き込みがあっても、当該移動元VOLと当該移動先SVOLのデータが一致したまになるようにする。5.以降、世代を一つずつ若くして3から4の処理を繰り返す」ことで全世代の移動を行う。
[0140]
 つまり、移動先のすべてのSVOLのスナップショットペアのペア状態をPAIRにしてから、移動元のSVOLで管理される差分データ(最古世代のSVOLにおいてはそのSVOLの全データ)を古い世代のものから順に移動先のPVOLに書き込む。その際に、ある世代の差分データ(最古世代のSVOLにおいてはそのSVOLの全データ)の移動先PVOLへの書き込みが終了したら、その世代に対応する移動先SVOLのスナップショットペアのペア状態をPSUSにすることで、以降の移動コピーによる移動先PVOLへの書き込みによっても、その世代の移動元SVOLと移動先SVOLが一致したままになるようにし、移動先において古い世代から順に、移動元のスナップショット構成を再現していくのである。
[0141]
 以下、図26の各ステップについて説明する。
ステップ2901:ペア状態がCOPYである移動コピーペアのうち、移動元VOLのスナップショットの世代が最も古いもの(最古世代)を選択する。ここで選択した移動コピーペアを対象ペアと呼ぶ。なお、PVOLは最新世代と見なして選択する。なお、スナップショットの世代とは、ある一つのPVOLの一つ以上のスナップショットペアをPSUSに変化した順に並べたときの順番である。
[0142]
 つまり、PSUSに変化したのが最も昔のスナップショットペアを最古世代として、PSUSに変化した順に最新世代まで並ぶ。この世代についての情報は、例えばスナップショットペア管理情報800に、世代番号として保持する。この世代番号は、あるスナップショットペアがPSUSに変化するたびに増分(インクリメント)されて、当該スナップショットペアの世代番号として登録される。すなわち、世代番号が小さいほど古い世代、大きいほど新しい世代となる。
[0143]
 ステップ2902:対象ペアが見つかった場合、ステップ2903に進む。さもなければ、全ての移動コピーを完了したことになるため、ステップ2912(終了)に進む。
ステップ2903:対象ペアのアドレスのうち、移動コピー状態が「未完」のアドレスを一つ選択する。ここで選択したアドレスを対象アドレスと呼ぶ。
[0144]
 ステップ2904:対象アドレスの排他を取得する。
ステップ2905:ステップ2904で排他取得に成功した場合は、ステップ2906に進む。失敗した場合はステップ2903に進む。
ステップ2906:対象ペアの対象アドレスのデータが、一つ古い世代(前世代)と比べて差分があるか検出する。差分がある場合、ステップ2907に進む。差分がない場合、ステップ2908に進む。なお、前世代が存在しない場合、当該アドレスは差分があるものと見なして処理する。
[0145]
 ステップ2907:移動先PVOLに対し、対象アドレスのデータ(差分データ)のライトコマンドを送信し、処理完了を待つ。これにより、対象ペアの移動元VOLと、移動先PVOLの対象アドレスのデータが一致する。
[0146]
 ステップ2908:対象ペアの対象アドレスの移動コピー状態を「完了」にする。
[0147]
 ステップ2909:対象ペアの全アドレスの移動コピー状態が「完了」であれば、移動コピーのペア状態をPAIRに変更し、ステップ2910に進む。さもなければ本ステップでは何もせず、同様にステップ2910に進む。
[0148]
 ステップ2910:ステップ2909の結果、移動コピーペアのペア状態がPAIRであれば、移動先ストレージ装置500Bに、対象ペアの移動コピーのペア状態をPAIR、移動先SVOLのスナップショットのペア状態をPSUSに変更するよう通知する。なお、対象ペアがPVOLのペアの場合は、対象ペアの移動コピーのペア状態をPAIRに変更する通知のみ送信し、スナップショットのペア状態をPSUSに変更する通知は省略する。なお、この通知を受信した移動先ストレージ装置500Bの処理は、単に移動コピーペア管理情報1200及びスナップショットSVOL管理情報1000を更新するだけであるため、フローチャートは省略する。
ステップ2911:取得していた排他を解除する。
[0149]
 図27は移動元VOLへのホストライト受領時処理の一例を示すフローチャートである。本処理を実行するのは移動元ストレージ装置500Aである。なお、おおまかな処理としては、ライト対象VOLの移動コピーが終了して(PAIRになって)いれば、ライト対象VOLと移動コピーペアを組む移動先VOLにライトコマンドを送信し、移動元VOLと移動先VOLのデータを一致させる。ライト対象VOLの移動コピーが終了しておらず、かつ対象アドレスの移動コピー状態が「完了」であれば、移動コピー処理でのPSUS遷移前なので、移動先PVOLにライトを転送し、移動元VOLと移動先PVOLのデータを一致させる。ライト対象VOLの移動コピーが終了しておらず、かつ対象アドレスの移動コピー状態が「未完」であれば、移動先ストレージ装置500Bにライトは転送しない。以下、各ステップについて説明する。
[0150]
 ステップ3001:ホストから移動元VOLに対するライトコマンドを受領する。移動元VOLはPVOLとSVOLいずれであってもよい。また、ライトの対象となったボリューム及びアドレスを、それぞれ対象VOL(またはライト対象VOL)、対象アドレスと呼ぶ。
[0151]
 ステップ3002からステップ3006:これらのステップでは、適切な範囲の排他を取得する。ステップ2502からステップ2506と同じであるため、詳細は省略する。
[0152]
 ステップ3007:ライトを実行する。
[0153]
 ステップ3008:データ退避処理(図16記載)を実行する。
[0154]
 ステップ3009:ライト対象VOLの移動コピーのペア状態がPAIRの場合、ステップ3012に進む。この場合、ライト対象VOLがSVOLであれば、対応する移動先SVOLのスナップショットペアはPSUSになっている。それ以外の場合、ステップ3010に進む。この場合、ライト対象VOLがSVOLであれば、対応する移動先SVOLのスナップショットペアはPAIRになっている。
[0155]
 ステップ3010:ライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ3011に進む。「未完」の場合、ステップ3013に進む。「未完」の場合にはライト対象VOLの対象アドレスに対して後に実行される移動コピー処理によって、移動元へのライトを移動先に反映することが可能だからである。
[0156]
 ステップ3011:移動先PVOLにライトコマンドを送信し処理完了を待つ。ライトコマンドを受信した移動先ストレージ装置500Bは、図23に示すライト受領時処理を実行する。
[0157]
 ステップ3012:移動先VOLにライトコマンドを送信し処理完了を待つ。ライトコマンドを受信した移動先ストレージ装置500Bは、図23に示すライト受領時処理を実行する。なお、本ステップとステップ3011の違いは、ライトコマンドの送信対象が「ライト対象VOLと移動コピーペアを組む移動先VOL」か「当該移動先VOLとスナップショットペアを組む移動先PVOL」かである。本ステップでは、ライト対象VOLがSVOLであれば、対応する移動先SVOLのスナップショットペアはPSUSになっている。よって、移動元でのライトを移動先に反映させるためには、「ライト対象VOLと移動コピーペアを組む移動先VOL」にライトコマンドを送信すればよい。一方で、ステップ3011ではライト対象VOLがSVOLであれば、対応する移動先SVOLのスナップショットペアはPAIRになっている。よって、移動元でのライトを移動先に反映させるためには、「当該移動先VOLとスナップショットペアを組む移動先PVOL」にライトコマンドを送信すればよい。なお、ライト対象VOLがPVOLの場合、どちらの場合でもライトコマンドの送信対象は移動先PVOLである。
[0158]
 ステップ3013:取得していた排他を解除する。
ステップ3014:ホストに完了(RSP)を送信する。
[0159]
 図28は、移動先VOLへのホストライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動先ストレージ装置500Bである。
[0160]
 ステップ3101:ホスト計算機100から、移動先VOLに対するライトを受領する。
ステップ3102:移動元ストレージ装置500Aにライトコマンドを転送し、完了通知を待つ。
ステップ3103:ライト対象VOLの移動コピーのペア状態がPAIRの場合、ステップ3104に進む。この場合、ライト対象VOLがSVOLであれば、当該SVOLのスナップショットペアはPSUSになっている。それ以外の場合、ステップ3106に進む。この場合、ライト対象VOLがSVOLであれば、当該SVOLのスナップショットペアはPAIRになっている。
[0161]
 ステップ3104:ライトを実行する。
ステップ3105:データ退避処理を実行する。
ステップ3106:ホスト計算機100に完了(RSP)を送信する。
ステップ3107:移動元ストレージ装置500Aに排他解除を送信する。
図29は、移動先ストレージ装置からのライト受領時処理の一例を示すフローチャートである。本処理を実行するのは、移動元ストレージ装置500Aである。
[0162]
 ステップ3201:移動先ストレージ装置500Bからライトコマンドを受信する。
ステップ3202からステップ3206:排他を取得するステップだが、ステップ2502からステップ2506と同様の処理となるため説明を省略する。
ステップ3207:ライトを実行する。
ステップ3208:データ退避処理を実行する。
[0163]
 ステップ3209:ライト対象VOLの移動コピーのペア状態がPAIRの場合、ステップ3212に進む。この場合、移動先VOLへのライトは図28のステップ2104によって行われる。それ以外の場合、ステップ3210に進む。この場合、ライト対象VOLがSVOLであれば、対応する移動先SVOLのスナップショットペアはPAIRになっている。
[0164]
 ステップ3210:ライト対象VOLの対象アドレスの移動コピー状態が「完了」の場合、ステップ3211に進む。「未完」の場合、ステップ3212に進む。「未完」の場合にはライト対象VOLの対象アドレスに対して後に実行される移動コピー処理によって、移動元へのライトを移動先に反映することが可能だからである。
[0165]
 ステップ3211:移動先PVOLにライトコマンドを送信し、処理完了を待つ。本ステップではライト対象VOLがSVOLであれば、対応する移動先SVOLのスナップショットペアはPAIRになっている。よって、移動元でのライトを移動先に反映させるためには、移動先PVOLにライトコマンドを送信すればよい。ライトコマンドを受信した移動先ストレージ装置500Bは、図23に示すライト受領時処理を実行する。
[0166]
 ステップ3212:移動先ストレージ装置500Bに、完了通知を応答し、排他解除の指示を待つ。
[0167]
 ステップ3213:取得していた排他を解除する。本ステップは、ステップ3212に記載の通り、移動先ストレージ装置500Bからの排他解除指示があるまで実行されない。
[0168]
 このように実施例3では、移動コピー処理をライトコマンドによって実行するため、移動先ストレージ装置500Bはホストからのライトを処理する機能及びスナップショット機能という、ストレージ装置として基本的な機能を備えていればスナップショットVOLの移動が可能となる。本実施例では移動先VOLのスナップショットペアを全てPAIRとし、移動コピー処理中でPSUSに遷移させるため、移動コピー処理中のライト処理では、ライト対象VOLの移動コピーのペア状態がPAIRか否かを判定することで、対応する移動先のVOLのスナップショットペアがPAIRかPSUSかを判定し、ライト対象VOLがSVOLであった場合に、移動先でPVOLにライトを実行するか、SVOLにライトを実行するかを決定している。
[0169]
 最後に、本発明の有用性を改めて述べる。本発明の有用性はホストからのI/O無停止で移動元のスナップショット構成をそのスナップショット構成を維持したまま移動先に移行出来ることである。仮に、I/Oを受け付けつつ通常のボリュームを移行する技術をスナップショット構成の移行に適応することを考える。この場合、PVOLとプールボリュームへのチャンク参照によってPVOLの複製を構成している全世代分のSVOLについて、差分のデータだけでなく、各SVOLを構成する全データを移動元から移動先にコピーする必要がある。SVOLの世代は1000世代にもなるため、このボリュームを構成する全データのコピーであるフルコピーには多くの時間を要してしまう。
[0170]
 本発明の技術によって、スナップショット構成の移動元から移動先への移行を、上述したフルコピーを行うことなく短時間で実施しつつ、移行中にホストからのI/Oを受け付けることが出来る。移動コピーの時間を短縮することには、例えば移動コピーがリプレースの目的であった場合には、移動元である古い装置の維持コストの削減や、移動先の装置である新しい装置の早期運用により、早期に性能向上や新機能の利用が可能となるといったメリットがある。よって、本発明によって初めて、上述した短時間での移動コピーによるメリットを保持しつつ、スナップショット機能を適用したボリューム移行中のI/O無停止という高い可用性を実現することが可能になるのである。
[0171]
 また、本発明は例えば以下のような観点によっても特徴づけられうる。
ストレージシステムは第1のストレージ装置と第2のストレージ装置とを備える。第1のストレージ装置は、第1の正ボリューム、第1のプールボリューム、第1の副ボリュームでスナップショット構成を提供する。第1の正ボリュームは複数のチャンクを含み、第1の実ボリュームIDと第1の実ボリュームIDに対応付けられた第1の仮想ボリュームIDとを持つ。第1のプールボリュームは複数のチャンクを含み、第1の正ボリュームの差分データを格納する。第1の副ボリュームは第1の正ボリュームの所定の時点の複製であり、それぞれが第1の正ボリュームのチャンクまたは第1のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含み、第2の実ボリュームIDと第2の実ボリュームに対応付けられた第2の仮想ボリュームIDを持つ。第1のストレージ装置は、さらに、第1の副ボリュームの複数のチャンクの参照先を管理し、第1の正ボリュームに対する識別子の要求を受信すると第1の仮想ボリュームIDを応答し、第1の副ボリュームに対する識別子の要求を受信すると第2の仮想ボリュームIDを応答する。第2のストレージ装置は、第2の正ボリューム、第2のプールボリューム、第2の副ボリュームでスナップショット構成を提供する。第2の正ボリュームは複数のチャンクを含み、第3の実ボリュームIDと第3の実ボリュームIDに対応付けられた第1の仮想ボリュームIDとを持つ。第2のプールボリュームは複数のチャンクを含み、第2の正ボリュームの差分データを格納する。第2の副ボリュームは第2の正ボリュームの所定の時点の複製であり、それぞれが第2の正ボリュームのチャンクまたは第2のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含み、第4の実ボリュームIDと第4の実ボリュームIDに対応付けられた第2の仮想ボリュームIDを持つ。第2のストレージ装置は、さらに、第2の副ボリュームの複数のチャンクの参照先を管理し、第2の正ボリュームに対する識別子の要求を受信すると第1の仮想ボリュームIDを応答し、第2の副ボリュームに対する識別子の要求を受信すると第2の仮想ボリュームIDを応答する。第1のストレージ装置は、スナップショット構成を第1のストレージ装置から第2のストレージ装置に移行する。その際、第1の副ボリュームの第1のチャンクが、第1の正ボリュームの第2のチャンクを参照している場合、第2のチャンクを移行した後に、第1のチャンクを移行する。ことを特徴とするストレージシステム。

符号の説明

[0172]
100 ホスト計算機
200 管理サーバ
500 ストレージ装置
520 実ボリューム
530 プール
600 仮想ストレージ装置

請求の範囲

[請求項1]
 複数のチャンクを含む第1の正ボリュームと、
 複数のチャンクを含み、前記第1の正ボリュームの差分データを格納する第1のプールボリュームと、
 前記第1の正ボリュームの所定の時点の複製であり、それぞれが前記第1の正ボリュームのチャンクまたは前記第1のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含む、第1の副ボリュームと、
 を有する第1のスナップショット構成を提供し、
 前記第1の副ボリュームの複数のチャンクの参照先を管理する、
 第1のストレージ装置と、
 複数のチャンクを含む第2の正ボリュームと、
 複数のチャンクを含み、前記第2の正ボリュームの差分データを格納する第2のプールボリュームと、
 前記第2の正ボリュームの所定の時点の複製であり、それぞれが前記第2の正ボリュームのチャンクまたは前記第2のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含む、第2の副ボリュームと、
 を有する第2のスナップショット構成を提供し、
 前記第2の副ボリュームの複数のチャンクの参照先を管理する、
 第2のストレージ装置と、
 を備えるストレージシステムであって、
 前記第1のストレージ装置は、
前記第1のスナップショット構成を前記第1のストレージ装置から前記第2のストレージ装置に移行するに際し、
 移行の対象となるチャンクの排他を取得し、移行の対象となるチャンクの管理情報であるスナップショット割当情報を前記第2のストレージ装置に送信し、
 前記移行中に、上位装置からライト要求を受信すると、
 当該ライト要求に係る第1のチャンクと、当該ライト要求に係るチャンクと前記参照により関連する第2のチャンクと、の排他を取得し、当該ライト要求に係るライト処理を実行する、
 ことを特徴とするストレージシステム。
[請求項2]
 前記第1の副ボリュームのチャンクに係る前記スナップショット割当情報は、
 前記送信の先のボリュームを識別する情報と、前記送信の先のチャンクを識別する情報と、前記第1の副ボリュームのチャンクの前記参照の種別を示す情報と、第3の副ボリュームに含まれ、前記第1の副ボリュームのチャンクと同じ前記第1のプールボリュームのチャンクを参照し、移行が完了しているチャンクがある場合、前記第3の副ボリュームを識別する情報と、前記第3の副ボリュームがない場合、前記第1の副ボリュームのチャンク係るデータと、を含む、
 請求項1に記載のストレージシステム。
[請求項3]
 前記第1のストレージ装置は、
当該ライト要求に係るデータを前記第1のチャンクに書き込み、前記第1のチャンクの移行が完了している場合、前記第2のストレージ装置に当該ライト要求に係るデータを送信し、前記第1のチャンクの移行が未完の場合、前記第2のストレージ装置に当該ライト要求に係るデータを送信しない、
 請求項1に記載のストレージシステム。
[請求項4]
 前記第1のストレージ装置は
 前記ライト要求に係るデータとあわせて、前記第2のチャンクの前記スナップショット割当情報を前記第2のストレージ装置に送信する、
 請求項3に記載のストレージシステム。
[請求項5]
 前記第2のストレージ装置は、
 前記上位装置からライト要求を受信すると、前記ライト要求を前記第1のストレージ装置に転送し、
 当該転送されたライト要求に係るチャンクの移行が完了している場合、前記ライト要求に係るデータを前記第2のストレージ装置の前記ライト要求に係るチャンクに書き込み、
 当該転送されたライト要求に係るチャンクの移行が未完である場合、前記ライト要求に係るデータを前記第2のストレージ装置の前記ライト要求に係るチャンクに書き込まない
 請求項1に記載のストレージシステム。
[請求項6]
 前記第2のストレージ装置は、
 前記上位装置からリード要求を受信すると、当該リード要求に係るチャンクの前記移行が完了している場合、前記第2のストレージ装置から当該要求に係るデータを読み出し、
 当該リード要求に係るチャンクの前記移行が未完の場合、前記リード要求を前記第1のストレージ装置に転送し、
 前記第1のストレージ装置は、前記第2のストレージ装置から当該転送されたリード要求を受信すると前記第1のストレージ装置から当該リード要求に係るデータを読み出し、前記第2のストレージ装置に送信する、
 請求項1に記載のストレージシステム。
[請求項7]
複数のチャンクを含む第1の正ボリュームと、
 複数のチャンクを含み、前記第1の正ボリュームの差分データを格納する第1のプールボリュームと、
 前記第1の正ボリュームの所定の時点の複製であり、それぞれが前記第1の正ボリュームのチャンクまたは前記第1のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含む、第1の副ボリュームと、
 を有する第1のスナップショット構成を提供し、
 前記第1の副ボリュームの複数のチャンクの参照先を管理する、
 第1のストレージ装置と、
 複数のチャンクを含む第2の正ボリュームと、
 複数のチャンクを含み、前記第2の正ボリュームの差分データを格納する第2のプールボリュームと、
 前記第2の正ボリュームの所定の時点の複製であり、それぞれが前記第2の正ボリュームのチャンクまたは前記第2のプールボリュームのチャンクのいずれかを参照する複数のチャンクを含む、第2の副ボリュームと、
 を有する第2のスナップショット構成を提供し、
 前記第2の副ボリュームの複数のチャンクの参照先を管理する、
 第2のストレージ装置と、
 を備えるストレージシステムの制御方法であって、
 前記第1のスナップショット構成を前記第1のストレージ装置から前記第2のストレージ装置に移行するに際し、
 移行の対象となるチャンクの排他を取得し、移行の対象となるチャンクの管理情報であるスナップショット割当情報を前記第2のストレージ装置に送信し、
 前記移行中に、上位装置からライト要求を受信すると、
 当該ライト要求に係る第1のチャンクと、当該ライト要求に係るチャンクと前記参照により関連する第2のチャンクと、の排他を取得し、当該ライト要求に係るライト処理を実行する、
 ことを特徴とするストレージシステムの制御方法。
[請求項8]
 前記第1の副ボリュームのチャンクに係る前記スナップショット割当情報は、
 前記送信の先のボリュームを識別する情報と、前記送信の先のチャンクを識別する情報と、前記第1の副ボリュームのチャンクの前記参照の種別を示す情報と、第3の副ボリュームに含まれ、前記第1の副ボリュームのチャンクと同じ前記第1のプールボリュームのチャンクを参照し、移行が完了しているチャンクがある場合、前記第3の副ボリュームを識別する情報と、前記第3の副ボリュームがない場合、前記第1の副ボリュームのチャンク係るデータと、を含む、
 請求項7に記載のストレージシステムの制御方法。
[請求項9]
 当該ライト要求に係るデータを前記第1のチャンクに書き込み、前記第1のチャンクの移行が完了している場合、前記第2のストレージ装置に当該ライト要求に係るデータを送信し、前記第1のチャンクの移行が未完の場合、前記第2のストレージ装置に当該ライト要求に係るデータを送信しない、
 請求項7に記載のストレージシステムの制御方法。
[請求項10]
 前記ライト要求に係るデータとあわせて、前記第2のチャンクの前記スナップショット割当情報を前記第2のストレージ装置に送信する、
 請求項9に記載のストレージシステムの制御方法。
[請求項11]
 前記上位装置から前記第2のストレージ装置へのライト要求を受信すると、前記ライト要求を前記第1のストレージ装置に転送し、
 当該転送されたライト要求に係るチャンクの移行が完了している場合、前記ライト要求に係るデータを前記第2のストレージ装置の前記ライト要求に係るチャンクに書き込み、
 当該転送されたライト要求に係るチャンクの移行が未完である場合、前記ライト要求に係るデータを前記第2のストレージ装置の前記ライト要求に係るチャンクに書き込まない、
請求項7に記載のストレージシステムの制御方法。
[請求項12]
 前記上位装置から前記第2のストレージ装置へのリード要求を受信すると、当該リード要求に係るチャンクの前記移行が完了している場合、前記第2のストレージ装置から当該要求に係るデータを読み出し、
 当該リード要求に係るチャンクの前記移行が未完の場合、前記リード要求を前記第1のストレージ装置に転送し、
 前記第1のストレージ装置が、前記第2のストレージ装置から当該転送されたリード要求を受信すると、前記第1のストレージ装置から当該リード要求に係るデータを読み出し、
前記第2のストレージ装置に送信する、
 請求項7に記載のストレージシステムの制御方法。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]

[ 図 16]

[ 図 17]

[ 図 18]

[ 図 19]

[ 図 20]

[ 図 21]

[ 図 22]

[ 図 23]

[ 図 24]

[ 図 25]

[ 図 26]

[ 図 27]

[ 図 28]

[ 図 29]