[計算機システムの構成]
図1は、本発明の実施例1に係る計算機システムの概略構成図である。計算機システムは、移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10b、移行先プライマリストレージ装置20a、移行先セカンダリストレージ装置20b、プライマリサーバ30a、セカンダリサーバ30bからなる。
なお、図1は、以下で説明する移行処理の処理中の構成を表したものであり、移行処理前は、移行先プライマリストレージ装置20aと移行先セカンダリストレージ装置20bは存在しない。移行処理前の状態では、プライマリサーバ30aはSAN(Storage Area Network)50を介して移行元プライマリストレージ装置10aに接続されており、移行元プライマリストレージ装置10aの有する論理ボリューム130aへのアクセスを行っている。またセカンダリサーバ30bは移行処理を実施する前は、SAN60を介して移行元セカンダリストレージ装置10bに接続され、移行元セカンダリストレージ装置10bの論理ボリューム130bにアクセス可能な状態にある。また、移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bはポート(11a、11b)により相互接続されている。なお、本発明の実施例1に係る計算機システムにおいて、SAN50及びSAN60はファイバチャネルケーブル及びファイバチャネルスイッチで構成されたネットワークであるが、イーサネットを用いて構成されたネットワークであってもよい。
移行処理を行う際に、移行先プライマリストレージ装置20aと移行先セカンダリストレージ装置20bが計算機システム内に設置される。そして図1に示されているように、移行先プライマリストレージ装置20aはSAN50を介してプライマリサーバ30aに接続されるとともに、移行元プライマリストレージ装置10a及び移行先セカンダリストレージ装置20bにも接続される。また移行先セカンダリストレージ装置20bは、SAN60を介してセカンダリサーバ30bに接続される。
なお、以下では、移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bをまとめて、「移行元ストレージシステム10」と呼ぶ。また移行先プライマリストレージ装置20a、移行先セカンダリストレージ装置20bをまとめて、「移行先ストレージシステム20」と呼ぶ。そして移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10b、移行先プライマリストレージ装置20a、移行先セカンダリストレージ装置20bを総称して、「ストレージ装置」と呼ぶ。また、プライマリサーバ30a、セカンダリサーバ30bを総称して、「ホスト計算機」と呼ぶ。
ここで、計算機システム内のストレージ装置内部のハードウェア構成について、図2を用いて説明する。ここでは主に、移行先プライマリストレージ装置20aのハードウェア構成について説明するが、他のストレージ装置(移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10b、移行先セカンダリストレージ装置20b)も同様のハードウェア構成を採る。ただし、必ずしもすべてのストレージ装置が同一のハードウェア構成を採用している必要はない。
移行先プライマリストレージ装置20aは、フロントエンドパッケージ(FEPK)201、バックエンドパッケージ(BEPK)202、プロセッサパッケージ(MPPK)203、キャッシュメモリパッケージ(CMPK)204が相互結合網205で互いに結合されて構成されたコントローラ200と、複数のドライブ221を搭載したディスクユニット(DKU)210から構成される。
フロントエンドパッケージ(FEPK)201は、プライマリサーバ30aなどのホスト計算機や、ストレージ装置(10a,10b,20b)と接続するためのポート21を複数有し、CMPK204やMPPK203との間で送受信される制御情報やデータの中継を行うコンポーネントである。FEPK201はポート21の他、図示しないバッファ、CPU、内部バス、及び内部ポートを有する。バッファは、FEPK201が中継する制御情報及びデータを一時的に記憶するための記憶領域であり、CMPK204と同様に、各種の揮発性メモリや不揮発性メモリを用いて構成される。内部バスは、FEPK201内の各種コンポーネントを相互接続する。FEPK201は、内部ポートを介して相互結合網205に接続されている。また、ポート21は、図で示された数に限定されるものではない。
バックエンドパッケージ(BEPK)202は、ドライブ221と接続するためのインタフェース(I/F)2021を複数有し、ドライブ221と、CMPK204またはMPPK203との間で送受信される制御情報やデータの中継を行うコンポーネントである。BEPK202はインタフェース(I/F)2021の他、図示しないバッファ、CPU、内部バス、及び内部ポートを有する。バッファは、BEPK202が中継する制御情報やデータを一時的に記憶するための記憶領域であり、CMPK204と同様に、各種の揮発性メモリや不揮発性メモリを用いて構成される。内部バスは、FEPK201内の各種コンポーネントを相互接続する。
MPPK203は、CPU2031、メモリ(LM)2032、そして非図示の内部バス及び内部ポートとから構成される。メモリ(LM)2032は、キャッシュメモリ2041と同様に、各種の揮発性メモリや不揮発性メモリを用いて構成することができる。CPU2031、メモリ(LM)2032及び内部ポートは、内部バスを介して相互接続される。MPPK203は、MPPK203の内部ポートを介して相互結合網205に接続されている。
またMPPK203は、ストレージ装置内の各種データ処理を行うためのコンポーネントである。CPU2031がメモリ(LM)2032上のプログラムを実行することにより、以下で説明する、ストレージ装置が有するボリュームコピー機能等の各種機能が実現される。
CMPK204は、キャッシュメモリ2041と共有メモリ2042を備えたコンポーネントである。キャッシュメモリ2041は、プライマリサーバ30aあるいは別のストレージ装置から受信したデータを一時的に記憶し、及びドライブ221から読み出したデータを一時的に記憶するため記憶領域である。キャッシュメモリ2041は例えば、DRAMやSRAMのような揮発性メモリ、あるいは、フラッシュメモリ等の揮発性メモリを用いて構成される。
共有メモリ2042は、ストレージ装置内の各種データ処理に関連する管理情報を記憶するための記憶領域である。共有メモリ2042は、キャッシュメモリ2041と同様に、各種の揮発性メモリや不揮発性メモリを用いて構成することができる。なお、共有メモリ2042のハードウェアとしては、キャッシュメモリ2041と共通のハードウェアを用いることもできるし、共通でないハードウェアを用いることもできる。
相互結合網205は、コンポーネント間を相互に接続し、相互に接続されたコンポーネント間で制御情報やデータを転送するためのコンポーネントである。相互結合網は、例えば、スイッチやバスを用いて構成することができる。
ドライブ221は、プライマリサーバ30a上の各種プログラムが使用するデータ(ユーザデータ)、冗長データ(パリティデータ)を格納するための記憶デバイスである。ドライブ221の記憶メディアとしては、HDDで用いられるような磁気記憶媒体のほか、NANDフラッシュメモリ、MRAM、ReRAM、及びPRAMのような不揮発性半導体記憶媒体を用いることができる。
図1の説明に戻る。本発明の実施例1に係る各ストレージ装置は、1以上の論理ボリューム(130a、130b、230a、230b)とコマンドデバイス(135a、135b、235a、235b)を有する。論理ボリューム(130a、130b、230a、230b)は、プライマリサーバ30a等のホスト計算機からのライトデータを格納する記憶デバイスであり、詳細は後述する。コマンドデバイス(135a、135b、235a、235b)は、論理ボリュームの一種であるが、ホスト計算機からのライトデータを格納するために用いられるわけではない。プライマリサーバ30aまたはセカンダリサーバ30b上のストレージマネージャ101から、論理ボリュームのコピー指示などの各種制御命令を受け付けるために用いられる記憶デバイスである。本発明の実施例1に係る計算機システムでは、各ストレージ装置が1つのコマンドデバイスを有する。コマンドデバイスは、管理者が管理端末を用いて、各ストレージ装置にコマンドデバイスの作成指示の命令を発行することによって作成される。
本発明の実施例1に係る各ストレージ装置は、多数のポートを有するため、以下では各ポートを区別するため、図1に示されている通り、各ポートにA〜Rの識別子を付して説明する。移行元プライマリストレージ装置10aは、ポートA〜Eを有し、ポートA、Bはプライマリサーバ30aと接続するために用いられ、またポートD、Eは、移行元セカンダリストレージ装置10bと接続するために用いられる。またポートCは移行処理時に移行先プライマリストレージ装置20aと接続するために用いられる。
移行元セカンダリストレージ装置10bは、ポートF〜Iを有し、ポートF、Gは移行元プライマリストレージ装置10aと接続するために用いられる。ポートH、Iはセカンダリサーバ30bと接続するために用いられる。
移行先プライマリストレージ装置20aはポートJ〜Nを有し、ポートJ、Kはプライマリサーバ30aと接続するために用いられ、またポートM、Nは、移行先セカンダリストレージ装置20bと接続するために用いられる。またポートLは移行元プライマリストレージ装置10aと接続するために用いられる。
移行先セカンダリストレージ装置20bは、ポートO〜Rを有し、ポートO、Pは移行先プライマリストレージ装置20aと接続するために用いられる。ポートQ、Rはセカンダリサーバ30bと接続するために用いられる。
なお、各ストレージ装置は、上で説明した数のポートのみを有する構成に限定されるわけではなく、上で説明した数より多くのポートを有していてもよい。
プライマリサーバ30a、セカンダリサーバ30bは、非図示のCPU、メモリを有した計算機である。また、プライマリサーバ30aとセカンダリサーバ30bは、非図示の通信ネットワークで接続されている。通信ネットワークには、LAN(Local Area Network)やWAN(Wide Area Network)が用いられる。CPUはメモリ上にロードされた各種のプログラムを実行する。プライマリサーバ30a上及びセカンダリサーバ30b上で動作するプログラムには、アプリケーションプログラム(AP)100、ストレージマネージャ101、交替パスソフト102、クラスタソフトウェア103がある。
アプリケーションプログラム(AP)100は一例として、データベース管理システムなどのプログラムで、論理ボリューム130aに対するアクセス(リード、ライト)を行う。また移行元ストレージシステムでは論理ボリューム130aにライトされたデータを、論理ボリューム130bに複製するリモートコピー機能が稼働しており、論理ボリューム130a上のデータは、常に論理ボリューム130bにも複製される。
クラスタソフトウェア103は、いわゆるディザスタリカバリ運用を行うためのプログラムで、プライマリサーバ30aとセカンダリサーバ30bとで稼働する。例えばプライマリサーバ30a、移行元プライマリストレージ装置10aが障害などでダウンした場合、セカンダリサーバ30bで稼働しているクラスタソフトウェア103は、プライマリサーバ30aのAP100で行っていた業務を再開させる処理を行う。
交替パスソフト102は、プライマリサーバ30a等のホスト計算機から、ストレージ装置のボリューム(論理ボリューム)へのアクセス経路(パス)を管理しており、1つのパスが障害で切断された場合でもボリュームへのアクセスを可能にするため、代替パスを用いてボリュームへのアクセスを継続させるプログラムである。
ストレージマネージャ101は、ストレージ装置の設定、制御を行うためのプログラムである。詳細な説明は後述する。
[移行処理で用いられるストレージ装置の機能]
続いて、本発明の実施例における移行方法の説明に必要な、ストレージ装置の機能について説明する。ここでは主に、移行先プライマリストレージ装置20aの持つ機能を中心に説明する。なお、先に述べたとおり、以下で説明するストレージ装置の各機能は、ストレージ装置のCPU2031がメモリ(LM)2032上のプログラムを実行することにより実現される。
(1)ボリューム作成機能
本発明の実施例における移行先プライマリストレージ装置20aは、1または複数のドライブ221を1つのグループとして管理しており、このグループをパリティグループ(図1の要素22a、22b等がパリティグループである)と呼ぶ。また移行先プライマリストレージ装置20aは、いわゆるRAID技術を用いて、パリティグループ22を構成するドライブ群にデータを格納する前に、データから冗長データ(パリティ)を作成する。そしてデータとパリティとをパリティグループ22を構成するドライブ群に格納する。
移行先プライマリストレージ装置20aで管理されるパリティグループ22の情報(たとえばパリティグループを構成するドライブの情報等)は、図3に示されるような、パリティグループ管理テーブルT100で管理される。この情報は、共有メモリ2042に格納される。パリティグループ管理テーブルT100は、パリティグループ名T101、ドライブ名T102、RAIDレベルT103、サイズT104、残サイズT105の欄から構成される。パリティグループ名T101は、パリティグループの識別子が格納され、ドライブ名T102には、パリティグループを構成するドライブの識別子が格納される。RAIDレベルT103には、当該パリティグループの冗長化方式であるRAIDレベルの情報が格納され、サイズT104にはパリティグループの容量の情報が格納される。
後述するが、論理ボリュームを作成する際にパリティグループの記憶領域が使用される。残サイズT105には、パリティグループの容量のうち、まだ論理ボリュームの作成のために使用されていないサイズの情報が格納される。
さらに移行先プライマリストレージ装置20aは、パリティグループの提供する記憶領域を用いて、1つまたは複数の論理ボリューム(LDEVとも呼ばれる)を形成する機能を有する。この機能のことをボリューム作成機能と呼ぶ。
移行先プライマリストレージ装置20aは各論理ボリュームにストレージ装置内で一意な番号を付与して管理しており、それを論理ボリューム番号(LDEV#)と呼ぶ。論理ボリュームの情報は、図5に示されている論理ボリューム管理テーブルT200で管理される。論理ボリューム管理テーブルT200の各行が、論理ボリュームの情報を表しており、LDEV#(T201)が論理ボリュームの識別子である、論理ボリューム番号(LDEV#)であり、サイズT202には、論理ボリュームのサイズが格納される。グループ名T203、先頭アドレスT204は、論理ボリュームの記憶領域が対応付けられているパリティグループ及び当該パリティグループの記憶領域の先頭アドレスの情報が格納される。
図5の例では、LDEV#(T201)が44である論理ボリュームの情報(行906の情報)を参照すると、グループ名T203が“RG A”で、先頭アドレスT204が0であり、また論理ボリュームのサイズ(T202)が100GBであるので、パリティグループ“RG A”の先頭(アドレス0)から100GBの領域が、論理ボリューム“44”に割り当てられていることを表している。
なお、ここでは移行先プライマリストレージ装置20aがボリューム作成機能を有していることを説明したが、その他のストレージ装置も、上で説明したボリューム作成機能を有している。
(2)外部ストレージ接続機能
移行先プライマリストレージ装置20aは、他のストレージ装置(移行元プライマリストレージ装置10a等)の有するボリュームの記憶領域を、移行先プライマリストレージ装置20aの有する記憶領域として扱い、当該記憶領域をプライマリサーバ30a等のホスト計算機に提供する機能を有している。以下、この機能のことを「外部ストレージ接続機能」と呼ぶ。また、外部ストレージ接続機能により管理される記憶領域のことを、外部ボリュームグループ(24a)と呼ぶ。
移行先プライマリストレージ装置20aで管理される外部ボリュームグループの情報は、図4に示されるような、外部ボリュームグループ管理テーブルT150で管理される。各行が外部ボリュームグループの情報を表し、グループ名T151には外部ボリュームグループの識別子が格納され、WWN(T152)、LUN(T153)、サイズ(T154)には、外部ボリュームグループに対応付けられた、外部のストレージ装置の論理ボリュームの情報が格納される。図4の例では、WWN(T152)が“50060e8005111112b”、LUN(T153)が“0”である論理ボリュームが、外部ボリュームグループに対応付けられている。以下では、論理ボリュームを外部ボリュームグループに対応付ける操作のことを、「マッピング」と呼ぶ。なお、移行先プライマリストレージ装置20aの外部ボリュームグループから外部のストレージの論理ボリュームへのアクセス経路(パス)を複数設け、パス障害時にアクセスパスを交替したりすることもできる。
外部ボリュームグループ24aは、パリティグループ22aと同様に扱われる。そのため、ボリューム作成機能では、外部ボリュームグループの記憶領域を用いて、1または複数の論理ボリュームを作成することもできる。図5の論理ボリューム管理テーブルT200の行907に、外部ボリュームグループ“EG1”の記憶領域から作成された論理ボリューム(LDEV#(T201)が“33”のボリューム)の例が示されている。
なお、外部ストレージ接続機能は、本発明の実施例1に係る計算機システムにおいて、移行先プライマリストレージ装置20aのみが有している機能である。ただし、移行先プライマリストレージ装置20a以外のストレージ装置も、外部ストレージ接続機能を有していてもよい。
(3)LUパス設定機能
上で説明した論理ボリュームを、プライマリサーバ30a等のホスト計算機が認識できるようにするために、LUN(論理ユニット番号)やポートの識別子を付す機能を「論理パス作成機能」あるいは「LUパス設定機能」と呼ぶ。本発明の実施例では、各ポート21aが有する識別子であるWWN(World Wide Name)をポート識別子として用いる。ただし、その他の識別子を用いてもよい。図6に示すLU管理テーブルT300は、ストレージ装置内の各論理ボリュームに対応付けられている論理ユニット番号(LUN)とポート名の情報を管理するためのテーブルである。このテーブルは、ストレージ装置の共有メモリ2042に格納される。
ポート名T301とLUN(T302)には、LDEV#(T303)で特定される論理ボリュームに対応付けられているポート名及びLUNの情報が格納される。たとえば図6のLU管理テーブルT300の先頭のエントリ(行)300−5には、ポート名T301が「3e243174 aaaaaaaa」、LUN(T302)が「0」、LDEV#(T303)が「11」の情報が格納されている。この場合、SAN50に接続されているプライマリサーバ30a等のホスト計算機は、ポートの配下に、LUNが0番のボリュームが存在すると認識する。以下、ホスト計算機(プライマリサーバ30a等)が認識するボリュームのことを、「論理ユニット」あるいは「LU」と呼ぶ。
また、本発明の実施例におけるストレージ装置では、1つの論理ボリュームに対して(ポート名、LUN)の組を複数対応付けることができる。たとえば図6の例では、LDEV#(T303)が11番の論理ボリュームの情報が、エントリ(行)300−5に格納されているとともに、下段のエントリ(行)300−6にも格納されている。この場合、ホスト計算機は、ポート(3e243174 aaaaaaaa)の下に、LUNが0番のLUが存在することを認識するとともに、ポート(3e243174 bbbbbbbb)の下にも、LUNが0番のLUが存在すると認識する。
またストレージ装置のLUパス設定機能では、LUパス設定とは逆に、論理ボリュームに対応付けられたLUNとポート名を削除する機能も有する。論理ボリュームに対応付けられたLUNとポート名を削除する処理のことを、LUパス削除処理と呼ぶ。ある論理ボリュームに対してLUパス削除が行われると、ホスト計算機から当該論理ボリュームにはアクセスできない。
(4)ボリュームコピー機能
ストレージ装置は、論理デバイス内のデータを別のボリュームに複製する機能を有し、この機能をボリュームコピー機能と呼ぶ。ボリュームコピー機能には、コピー元ボリュームの属するストレージ装置と同一のストレージ装置内のボリュームにデータをコピーする機能、コピー元ボリュームの属するストレージ装置とは別のストレージ装置内のボリュームにデータをコピーする機能(たとえば移行元プライマリストレージ装置10a内のボリュームのデータを、移行元セカンダリストレージ装置10b内のボリュームへとコピー)とがある。本発明の実施例ではそれぞれを、「ローカルコピー機能」、「リモートコピー機能」と呼ぶ。
ローカルコピー機能としてはたとえば、先に挙げた特許文献2や特許文献3に開示されている技術を用いて実現できる。
またリモートコピー機能は、たとえば特許文献4や特許文献5に開示されている機能である。リモートコピー機能の種類として、同期型リモートコピー、非同期型リモートコピーという2種類が存在するが、ストレージ装置がいずれの種類のリモートコピー機能を採用している場合であっても、本発明は有効である。またリモートコピー機能の中には、たとえば特許文献5に開示されているように、コピーデータをジャーナルとしてボリューム(ジャーナルボリューム)に蓄積し、ジャーナルボリュームに格納されたデータをコピー先のストレージ装置へとコピーする、いわゆるジャーナルを用いたリモートコピーを行う方法も存在するが、その場合でも本発明は有効である。
以下、本明細書で用いられる、ボリュームコピー機能に関する各種用語の定義を説明しておく。
(a)P−VOL:ボリュームコピー機能によりコピーされるボリューム(コピー元ボリューム)は、プライマリボリュームと呼ばれる。また、P−VOLと表記される。
(b)S−VOL:P−VOL内データのコピー先のボリュームは、セカンダリボリュームと呼ばれる。またS−VOLと表記される。
(c)ペア:P−VOL内のデータ複製が格納されるS−VOLのことを、P−VOLと「ペア関係にあるボリューム」と呼ぶ。同様に、S−VOLの複製元データが格納されているP−VOLも、当該S−VOLとペア関係にあるボリューム、と呼ばれることもある。そして、P−VOL及び当該P−VOLのデータの複製が格納されるS−VOLのセットのことは、「ペア」または「ボリュームペア」と呼ばれる。
(d)ペア形成、ペア削除:ボリュームコピー機能を用いてストレージ装置(たとえば移行先プライマリストレージ装置20a)のLDEV(P−VOL)とストレージ装置(たとえば移行先セカンダリストレージ装置20b)のLDEV(S−VOL)とをペア関係にあるボリュームにするよう、ストレージ装置に指示することを、「ペア形成する」(または「ペア作成する」)と呼ぶ。逆に、ペア関係にあるボリュームの関係を解除する(P−VOLのデータ複製がS−VOLに作成されないようにする)オペレーションのことを「ペア解除する」(または「ペア削除する」)と呼ぶ。ストレージ装置は、ペア形成またはペア削除などの指示を、ストレージマネージャ101あるいは管理端末から受け付ける。なお、ストレージ装置が受信する、ペア作成などを指示する制御用命令には、P−VOLの属するストレージ装置のシリアル番号、P−VOLのLDEV#、S−VOLの属するストレージ装置のシリアル番号、S−VOLのLDEV#が含まれている。これによりストレージ装置は、ペア操作対象になるP−VOL、S−VOLを一意に特定する。
(e)ペア状態:ボリュームペアは、ボリューム内のデータのコピー状態によって、いくつかの状態をとる。ストレージ装置がペア形成指示を受信すると、P−VOL内データを全てS−VOLにコピーする作業を開始する。データのコピーを開始した時点では、まだP−VOL内データがすべてS−VOLに反映されていないが、この状態のことを、“copy pending”と呼ぶ。そしてP−VOL内全データのコピーが完了し、P−VOLとS−VOLの内容が同一になった(同期した)状態のことを、“pair”状態と呼ぶ。“pair”状態にあるボリュームペアのP−VOLに対して、ホスト計算機から書き込みがあると、ライトデータはP−VOLに書き込まれるとともに、S−VOLにもライトデータの複製が書き込まれ、P−VOLとS−VOLは同一データが格納されている状態が維持されるように制御される。また、ペア解除された後の状態のことを“simplex”状態と呼ぶ。
さらに、“pair”状態にあるボリュームペアで行われる複製処理を一旦停止することも可能である。複製処理が一時停止した状態のことを“suspended”状態と呼ぶ。また“suspended”状態のボリュームペアに対して、複製処理を再開し、再び“pair”状態にすることもできる。この処理のことを「再同期」と呼ぶ。
ストレージ装置は、ペア管理テーブルT2000を用いて各ボリュームペアを管理している。図7にペア管理テーブルT2000の構成例を示す。ストレージ装置は各ペアに識別子を付して管理しており、この識別子をペア番号(T2001)と呼ぶ。そしてペア管理テーブルT2000には、各ペアのP−VOL、S−VOLの情報(P−VOLの属するストレージ装置を特定可能な識別番号であるPDKC#(T2003)、P−VOLのLDEV#であるP−VOL#(T2004)、S−VOLの属するストレージ装置を特定可能な識別番号であるSDKC#(T2005)、S−VOLのLDEV#であるS−VOL#(T2006))を管理する。PDKC#(T2003)、SDKC#(T2005)には、それぞれストレージ装置のシリアル番号、ストレージ装置20bのシリアル番号が格納される。なお、ペア管理テーブルT2000はP−VOLの属するストレージ装置とS−VOLの属するストレージ装置の両方に格納される。そのため、移行先プライマリストレージ装置20aと移行先セカンダリストレージ装置20bで、ペアボリュームが作成される場合、ペア管理テーブルT2000は移行先プライマリストレージ装置20aと移行先セカンダリストレージ装置20bの両方に格納される。
(5)ボリュームマイグレーション機能
ボリュームマイグレーション機能は、移行先プライマリストレージ装置20a内の、1つの論理ボリュームに格納されているデータを、移行先プライマリストレージ装置20a内のその他の論理ボリュームに移動する機能である。また、論理ボリューム内のデータの移動に加えて、LDEV#等の識別子も移動する。
一例として、移行先プライマリストレージ装置20a内に、LDEV#44、LDEV#33の論理ボリュームが作成されていた場合、そして、論理ボリューム管理テーブルT200の状態が図5に示されている状態であった場合について説明する。移行先プライマリストレージ装置20aが、LDEV#33のデータをLDEV#44に移動するよう指示された場合、移行先プライマリストレージ装置20aは、LDEV#33のデータをLDEV#44に複製する処理を行う。以下では、LDEV#33のデータの移行先となる論理ボリューム(LDEV#44)のことを、「ターゲットボリューム」または「マイグレーションターゲットボリューム」と呼ぶ。また、複製中にプライマリサーバ30a等のホスト計算機からLDEV#33に対するデータ書き込みを受け付けることが可能である。
LDEV#33からLDEV#44への複製が完了した時点で、移行先プライマリストレージ装置20aは、LDEV#33とLDEV#44の役割を入れ替える。具体的には、論理ボリューム管理テーブルT200の、LDEV#(T201)の内容を入れ替える。つまり、図5の例では、行906のLDEV#(T201)に44が、行907のLDEV#(T201)に33が格納されているが、ボリュームマイグレーション機能によるボリューム移動後は、行906のLDEV#(T201)に33が、行907のLDEV#(T201)に44が格納される。すなわち、LDEV#と、データ格納先であるグループ名及び先頭アドレスと、の対応関係をマイグレーション元とマイグレーション先とでスワップしている。これにより、データの格納されている論理ボリュームのLDEV#(及び、論理ボリュームに対応付けられているLUNやポート名)は変化させずに、ホスト計算機などの上位装置に透過的にデータの格納位置を移動することができる。いいかえると、LDEV#33へのアクセスの際、複製完了前は外部ボリュームEG1からデータが読出し/書込みされていたのに対して、複製完了後はパリティグループ RG Aからデータが読出し/書込みされるようになる。
(6)仮想ストレージ
続いて、仮想ストレージについて説明する。本発明の実施例に係る移行先プライマリストレージ装置20aは、移行先プライマリストレージ装置20a等の物理的なストレージ装置とは異なる、1または複数の仮想的なストレージ装置25a(以下、これを仮想ストレージと呼ぶ)を定義し、プライマリサーバ30aに対して、物理的なストレージ装置に加えて仮想ストレージがSAN50上に存在するように見せかける機能を有する。なお、以下では移行先プライマリストレージ装置20aを例にとって説明するが、仮想ストレージを定義する機能は、移行先セカンダリストレージ装置20bも備えているので、移行先セカンダリストレージ装置20bも以下で説明する機能を備えている。また、移行元プライマリストレージ装置10a及び/または移行元セカンダリストレージ装置10bが仮想ストレージを定義する機能を備えていても、備えていなくてもよい。移行元プライマリストレージ装置10a及び/または移行元セカンダリストレージ装置10bが仮想ストレージを定義する機能を備えており、移行元プライマリストレージ装置10a及び/または移行元セカンダリストレージ装置10bに定義された仮想ストレージに属するボリュームペアを移行する場合、以下の説明では、移行元のストレージ装置は移行元の仮想ストレージ装置に、移行元のストレージ装置の装置シリアル番号は仮想製番に、LDEV#はVLDEV#になる。
移行先プライマリストレージ装置20aに仮想ストレージ25aを定義した場合の例を、図8を用いて説明する。仮想ストレージは、装置シリアル番号(S/N)を有し(以下、仮想ストレージの有する装置シリアル番号のことを、「仮想製番」と呼ぶ)、また仮想ストレージ内のリソースとして論理ボリュームを有することができる。図8は、移行元プライマリストレージ装置10aのシリアル番号が1、移行先プライマリストレージ装置20aのシリアル番号が2、そして定義された仮想ストレージ25aのシリアル番号が1(つまり移行元プライマリストレージ装置10aのシリアル番号と同じ)である構成例を示している。また図8において、移行元プライマリストレージ装置10aはLDEV#が11番の論理ボリューム130aを有し、仮想ストレージ25aはLDEV#が33番の論理ボリューム230aを有している。
仮想ストレージの有する論理ボリューム230aは、LDEV#とは別の、仮想的な識別番号を有しており、これを仮想LDEV#あるいはVLDEV#と呼ぶ。図8の仮想ストレージ25aの有する論理ボリューム230aは、VLDEV#が11番(つまり移行元プライマリストレージ装置10aの有する論理ボリューム130aのLDEV#と等しい番号が付されている)である。
この場合、プライマリサーバ30aがSCSIのINQUIRYコマンド等を移行先プライマリストレージ装置20aに発行することにより、論理ボリューム230aの情報を取得すると、ボリューム番号として11番が、装置シリアル番号として1番が返却される。つまりプライマリサーバ30aに対し、仮想製番とVLDEV#が返却される。一方プライマリサーバ30aが移行元プライマリストレージ装置10aから論理ボリューム130aの情報を取得すると、論理ボリューム230aと同一のボリューム番号(11番)及び同一の装置シリアル番号(1番)が返却される。
そのため、プライマリサーバ30a(の交替パスソフト102)はこの2つのボリュームを同一ボリュームとして認識するので、プライマリサーバ30aから論理ボリューム130aへのパス(図中の実線矢印。以下このパスを「パス1」と呼ぶ)の交替パスが、プライマリサーバ30aから論理ボリューム230aへのパス(図中の点線矢印。以下このパスを「パス2」と呼ぶ)であると判断する。
そしてパス1が削除された場合、交替パスソフト102がアプリケーションプログラムなどから論理ボリューム130aへのアクセス要求を受け付けると、交替パスソフト102はパス2を介してアクセス要求を発行する(つまり論理ボリューム230aにアクセス要求を発行する)。
仮想ストレージの管理で用いられる管理情報について、図9を用いて説明する。図9は、移行先プライマリストレージ装置20aが有するV−BOX管理テーブルT1000の構成を示している。V−BOX管理テーブルT1000は移行先プライマリストレージ装置20aの共有メモリ2042に格納される。また、ここでは移行先プライマリストレージ装置20aが有するV−BOX管理テーブルT1000の構成についてのみ説明するが、本発明の実施例1において、データ移行作業時には移行先セカンダリストレージ装置20bにも仮想ストレージが定義されるため、移行先セカンダリストレージ装置20bもV−BOX管理テーブルT1000を有する。
移行先プライマリストレージ装置20aは仮想ストレージを定義する際、ストレージ装置20内にV−BOXと呼ばれる管理情報を生成する。V−BOXとは、ある仮想ストレージに所属させるべき、論理ボリューム等のリソースの情報を管理するための管理情報である。図9のV−BOX管理テーブルT1000内の1つの行(たとえばR1011,R1012)が、1つのV−BOXを表す情報に相当する。
V−BOXは、移行先プライマリストレージ装置20aで定義されるV−BOXの識別子であるID(T1001)、V−BOXの機種名情報(T1002)、V−BOXのシリアル番号(S/N)つまり仮想製番(T1003)、V−BOXに属する論理ボリュームに付されているVLDEV#(T1004)、LDEV#(T1005)から成る。VLDEV#(T1004)、LDEV#(T1005)はそれぞれ、仮想ストレージに所属する論理ボリュームの仮想LDEV#とLDEV#の情報が格納される。
移行先プライマリストレージ装置20aは初期状態では、移行先プライマリストレージ装置20a内に、仮想製番として移行先プライマリストレージ装置20aの装置シリアル番号が設定されたV−BOXが1つ定義されている。以下、このV−BOXを「仮想ストレージv0」と呼ぶ。初期状態ではV−BOX管理テーブルT1000に、行R1011の情報のみが格納された状態にある。また論理ボリュームが作成されると、作成された論理ボリュームはすべて仮想ストレージv0に所属した状態になる。
仮想ストレージは、移行先プライマリストレージ装置20aがストレージマネージャ101あるいは管理端末から、仮想ストレージの機種名、仮想製番の指定とともに、仮想ストレージの定義を指示する命令を受信することに応じて作成される。ただし仮想ストレージが定義された直後は、仮想ストレージ内に論理ボリュームが1つも所属していない仮想ストレージが定義される(つまりT1004,T1005の欄に論理ボリュームの情報が登録されていない)。仮想ストレージの定義後に、仮想ストレージに論理ボリュームを所属させる旨の指示を移行先プライマリストレージ装置20aが受け付けると、V−BOX管理テーブル1000のT1004,T1005の欄に論理ボリュームの情報(仮想LDEV#及びLDEV#)が登録される。
V−BOX管理テーブル1000に論理ボリュームの情報を登録する際に用いられる、仮想LDEV管理テーブルT1500について、図10を用いて説明する。仮想LDEV管理テーブルT1500は、論理ボリュームのLDEV#とVLDEV#との対応関係を管理するテーブルで、LDEV#(T1501)、VLDEV#(T1502)、ID(T1503)、属性(T1504)の欄からなる。
VLDEV#(T1502)には、LDEV#(T1501)で特定される論理ボリュームに付された仮想LDEV#が格納される。初期状態では、全ての論理ボリュームについて、LDEV#(T1501)とVLDEV#(T1502)は同一の値が格納される。ただし外部(ストレージマネージャ101など)からの指示によって、VLDEV#(T1502)は変更可能である。また外部からの指示に応じて、VLDEV#(T1502)の値を無効値(NULL)に設定することもできる。
ID(T1503)は、論理ボリュームが所属しているV−BOXの識別子であるIDが格納される。
属性(T1504)には、当該論理ボリュームが仮想ストレージに登録(予約)されているか否かを表す情報が格納される。論理ボリュームが仮想ストレージに登録(予約)された場合、属性(T1504)には“reserved”が格納される。
仮想LDEV管理テーブルT1500またはV−BOX管理テーブル1000に登録されるLDEV#は、論理ボリュームが作成された状態にあるか否か(論理ボリューム管理テーブルT200に論理ボリュームの情報が登録されているか否か)とは独立に登録されることができる。そのため、論理ボリュームが作成されていない場合であっても、移行先プライマリストレージ装置20aは仮想ストレージに論理ボリュームを登録する処理を実施することができる。
一例として、図5の論理ボリューム管理テーブルT200には、LDEV#(T201)が33、44、55の3つの論理ボリュームの情報が登録されている。つまり、移行先プライマリストレージ装置20aの論理ボリューム管理テーブルT200の状態が図5の状態である場合、移行先プライマリストレージ装置20aは3つの論理ボリュームが作成された状態にある。この状態でも、論理ボリューム管理テーブルT200に登録されていない論理ボリューム、たとえばLDEV#が2番の論理ボリュームを仮想ストレージに所属させる処理を行うことが許されている。
先に述べたとおり、LDEV#に対応づけられたVLDEV#を、後から変更することは可能で、本発明の実施例1ではこの作業を「仮想化」と呼ぶ。たとえば移行先プライマリストレージ装置20aが、LDEV#が44番の論理ボリュームに仮想LDEV#として11番を付す指示を受け付けると、移行先プライマリストレージ装置20aは、仮想LDEV管理テーブルT1500のLDEV#(T1502)が44番の行に対応するVLDEV#(T1501)に11を、そしてV−BOX管理テーブル1000のLDEV#(T1005)が44番の行に対応するVLDEV#(T1004)に11を格納する。
本発明の実施例1に係る移行先プライマリストレージ装置20aで仮想化を行う場合、以下の手順を踏むことになっている。LDEV#が2番の論理ボリュームを仮想ストレージv1(V−BOX管理テーブルT1000において、ID(T1001)がv1である仮想ストレージ)に所属させ、仮想化により4番のVLDEV#を付す時の処理の流れを概説する。なお、以下では、LDEV#がn番の論理ボリュームのことを、「LDEV#n」と略記する。また、LDEV#2は仮想ストレージv0に所属している状態で、LDEV#2に対応するVLDEV#が2である状態を想定する。
まず、移行先プライマリストレージ装置20aは、LDEV#2に対応付けられているVLDEV#をNULLにする。これにより仮想LDEV管理テーブルT1500の、LDEV#(T1501)が2番の行において、VLDEV#(T1502)をNULLにする。また仮想LDEV管理テーブルT1500の属性T1504に“reserved”を格納する。続いて同じ行のID(T1503)を参照し、LDEV#の所属するV−BOXが「v0」であることを認識すると、V−BOX管理テーブルT1000の行R1011において、LDEV#(T1005)が2の行のVLDEV#(T1004)をNULLにする。
続いて、LDEV#2を仮想ストレージv1に所属させる処理が行われる。移行先プライマリストレージ装置20aは、V−BOX管理テーブルT1000の行R1012のLDEV#(T1005)の欄に2を格納する。また対応するVLDEV#(T1004)にはNULLが格納される。仮想LDEV管理テーブルT1500のLDEV#2に対応する行のID(T1503)には「v1」が格納される。
その後、LDEV#2を仮想化する。移行先プライマリストレージ装置20aは、V−BOX管理テーブルT1000に登録されているLDEV#T1005が2番の行に対応するVLDEV#(T1004)に4を格納する。仮想LDEV管理テーブルT1500のLDEV#2に対応する行のVLDEV#(T1502)にも、4を格納する。
詳細は後述するが、本発明の実施例1に係る計算機システムでは、仮想ストレージに所属しているボリュームペアに対してペア操作を行う場合、P−VOLやS−VOLを特定する識別情報として仮想製番と仮想LDEV#の情報、及び命令中に仮想の識別子が使用されている旨の情報が含まれた、ペア操作用の制御用命令がストレージ装置に発行される。ストレージ装置(移行先プライマリストレージ装置20a等)が、P−VOLやS−VOLの識別子として仮想製番と仮想LDEV#の情報を受信すると、V−BOX管理テーブルT1000を参照することによって、仮想LDEV#をLDEV#に変換し、処理対象の論理ボリュームを特定する。また、命令中に仮想の識別子が使用されている旨の情報が含まれていない場合、命令に含まれている仮想製番と、命令を受信したストレージ装置の装置シリアル番号が一致していないとき、ストレージ装置は命令を拒絶する。
(7)ストレージマネージャの機能
ストレージマネージャ101は、プライマリサーバ30aまたはセカンダリサーバ30bからストレージ装置の設定、制御を行うためのプログラムである。本発明の実施例1に係る計算機システムの各ストレージ装置はいずれも、ストレージマネージャ101から制御される。以下では、ストレージマネージャ101の機能及びストレージマネージャ101が使用する設定情報について説明する。
ストレージマネージャ101は、管理者またはクラスタソフトウェア103等のプログラムがストレージ装置の管理操作を行う場合に用いられるプログラムである。ここでの「管理操作」とは、LUパス設定などの設定操作、あるいはリモートコピー機能を用いたペア操作などである。
ストレージマネージャ101は、管理操作用のコマンドをいくつかサポートしており、管理者またはクラスタソフトウェア103等のプログラムはストレージマネージャ101にコマンドを発行することで、ストレージ装置の管理操作を行う。ストレージマネージャ101は、受領したコマンドを加工し、ストレージ装置に対して発行するための制御用命令を作成する。そして作成された制御用命令を、ストレージ装置に定義されているコマンドデバイスに対して発行する。制御用命令を受信したストレージ装置は、受信した制御用命令の内容に応じて、所定の処理(LUパス設定等)を行う。そのため、本発明の実施例1に係る計算機システムに存在する各ストレージ装置には、コマンドデバイスが1つ定義される。
ストレージマネージャ101でサポートされる管理操作用のコマンドは、大別すると二種類のコマンドがある。1つ目の種類のコマンドは、ボリュームコピー機能(ローカルコピー機能、リモートコピー機能)及びボリュームマイグレーション機能を用いた、ボリュームペアの操作用のコマンド(以下これを、「ペア操作用コマンド」と呼ぶ)である。
2つ目の種類のコマンドは、ペア操作用コマンド以外のコマンドで、これにはLUパス設定など、ストレージ装置の設定を行うコマンドが含まれる(以下これを、「設定用コマンド」と呼ぶ)。ストレージマネージャ101は、以下で説明する移行処理において必要となるストレージ装置の各種設定処理のうち、コマンドデバイスの作成処理以外の全ての設定処理を行うことができる。
なお、コマンド発行時に操作対象の論理ボリュームの識別子を指定する必要のあるコマンドが存在する。たとえば、ボリュームペアを作成するコマンドや、LUパス設定コマンドなどである。操作対象の論理ボリュームに仮想LDEV#が付されている場合、指定すべき論理ボリュームの識別子として、仮想LDEV#を指定するべきか、LDEV#を指定するべきかという問題がある。本発明の実施例に係るストレージマネージャ101では、設定用コマンドでは、論理ボリュームを特定する識別子に、仮想LDEV#ではなくLDEV#が用いられる。またペア操作用のコマンド(あるいは後述する設定ファイル)で指定される、論理ボリュームを特定する識別子には、仮想LDEV#が用いられる。
ストレージマネージャ101は、ホスト計算機(プライマリサーバ30aまたはセカンダリサーバ30b)上で動作するオペレーティングシステム(OS)の常駐プログラム(サービス)として動作する。本発明の実施例ではこの常駐プログラムを「インスタンス」と呼ぶ。インスタンスは、1つのホスト計算機で複数稼働させることが可能である。またインスタンスの稼働を開始させることを、「インスタンスを起動する」と呼ぶ。
各インスタンスが起動される時、インスタンス番号と呼ばれる番号が指定される。各インスタンスは起動時に、指定されたインスタンス番号に従って、1つの設定ファイルを読み込む(設定ファイルにはインスタンス番号を含むファイル名が付されており、インスタンスは、指定されたインスタンス番号をファイル名に含むファイルを読み込む)。
設定ファイルには後述する通り、様々な情報が格納されているが、少なくとも使用するコマンドデバイスの情報が格納されている。各インスタンスは設定ファイルに格納されているコマンドデバイスの情報に基づいて、制御用命令の発行先となるコマンドデバイスを特定する。たとえば2つのインスタンスを起動する場合(以下、この2つのインスタンスをそれぞれ、「インスタンス0」、「インスタンス1」と呼ぶ)、インスタンス0用の設定ファイルには移行元プライマリストレージ装置10aのコマンドデバイスの情報を格納し、インスタンス1用の設定ファイルに移行先プライマリストレージ装置20aのコマンドデバイスの情報を格納しておけば、インスタンス0は移行元プライマリストレージ装置10aの管理操作を行うために使用可能で、インスタンス1は移行先プライマリストレージ装置20aの管理操作を行うために使用可能である。
またインスタンス0用の設定ファイルとインスタンス1用の設定ファイルの両方に、同一コマンドデバイスの情報を格納しておけば、いずれのインスタンスも、同じストレージ装置の管理操作を行うために用いることができる。これは、一方のインスタンスを、LUパス設定などの設定用用途で用い、もう一方のインスタンスをペア操作の用途で用いる場合に好適である。
また、ストレージマネージャ101を用いてストレージ装置のリモートコピー機能の制御(ペア操作)を行う場合、P−VOLにアクセスするホスト計算機(プライマリサーバ30a)と、S−VOLにアクセスするホスト計算機(セカンダリサーバ30b)のそれぞれで、少なくとも1つのインスタンスを起動する。
リモートコピー機能の制御を行う場合の設定ファイルの例を図11に示す。設定ファイル3000−1はプライマリサーバ30aに格納される設定ファイルで、設定ファイル3000−2はセカンダリサーバ30bに格納される設定ファイルである。また、設定ファイル3000−1は移行元プライマリストレージ装置10aのペア操作用の設定ファイルで、設定ファイル3000−2は移行元セカンダリストレージ装置10bのペア操作用の設定ファイルである。そしてP−VOLのLDEV#が11番、P−VOLの属するストレージ装置(移行元プライマリストレージ装置10a)のシリアル番号が1番、そしてS−VOLのLDEV#が22番、S−VOLの属するストレージ装置(移行元セカンダリストレージ装置10b)のシリアル製番が11番である場合の例である。
各設定ファイル3000−1,3000−2には、3種類の情報が格納される。1つ目の情報が、先に述べたコマンドデバイスの情報であり、コマンドデバイス名3001のフィールドには、インスタンスが制御用命令を発行するコマンドデバイスの識別子が記録される。コマンドデバイスの識別子の名称は、ストレージ装置毎に一意に定まっており、設定用ファイルを作成する際にはその名称を記録する。
2つ目の情報はボリュームペアの情報であり、ペア情報フィールド3002には、リモートコピー機能による操作対象となるボリュームペアの情報が格納される。記述形式については後述する。
3つ目の情報は、相手先ホスト計算機の情報3003である。ストレージマネージャ101を用いてストレージ装置のリモートコピー機能の制御を行う場合、プライマリサーバ30aのインスタンスはセカンダリサーバ30bのインスタンスからS−VOLの情報等を取得する。相手先ホスト計算機の情報3003はそのために用いられる情報で、相手先ホスト計算機のIPアドレスが記述されている。
2つ目の情報である、ペア情報フィールド3002の記述形式について説明する。ペア情報フィールド3002には、グループ名3002−1、装置シリアル番号3002−2、LDEV#(3002−3)が格納される。LDEV#3002−3は、ボリュームペアを形成するうちの1つの論理ボリュームのLDEV#が記述される。装置シリアル番号3002−2には、LDEVの存在する装置のシリアル番号(S/N)が格納される。グループ名3002−1にはボリュームペアに付されるグループ名が記述される。グループ名3002−1の詳細については後述する。
なお、プライマリサーバ30aの設定ファイルには、移行元(または移行先)プライマリストレージ装置(10aまたは20a)にあるP−VOLのLDEV#が格納され、セカンダリサーバ30bの設定ファイルには、移行元(または移行先)セカンダリストレージ装置(10bまたは20b)にあるS−VOLのLDEV#が格納される。また、少なくともペア関係にあるLDEVについては、同じグループ名が付与される必要がある。図11の例では、LDEV#(3002−3)が11の論理ボリュームと、LDEV#(3002−3)が22の論理ボリュームがペア関係にあり、そのグループ名(3002−1)が“devg01”であることが記述されている。
なお、管理者またはクラスタソフトウェア103等のプログラムが、ストレージマネージャ101(のインスタンス)を用いてボリュームペア操作を行う場合、操作対象となるボリュームペアを特定する情報としてグループ名を用いる。たとえばペア作成を指示するコマンドの書式は、以下の通りである。
paircreate <グループ名>
プライマリサーバ30aで稼働するインスタンスに対して、このコマンドが発行されると、プライマリサーバ30aで稼働するインスタンスは、設定ファイルの内容に基づいて、コマンドで指定されたグループ名に対応するLDEV#(3002−3)及び装置シリアル番号(3002−1)を特定する。またセカンダリサーバ30bで稼働するインスタンスと通信することにより、セカンダリサーバ30bで稼働するインスタンス用の設定ファイルに記述されている、グループ名に対応するLDEV#(3002−3)及び装置シリアル番号(3002−1)を取得する。これによりプライマリサーバ30aで稼働するインスタンスは、P−VOL及びS−VOLのLDEV#及び装置シリアル番号を特定できる。この情報に基づいて、コマンドデバイスに対して発行する制御用命令を作成して、コマンドデバイスに対してペア操作の制御用命令を発行する。
また、複数のボリュームペアに同一のグループ名を付与してもよく、その場合、上で説明したペア操作用コマンドを発行すると、複数のボリュームペアのペア操作が行われることになる。
この設定ファイルは、計算機システムの管理者によって作成されていた。移行元ストレージシステム10でボリュームペアの制御を行う場合には、LDEV#(3002−3)及び装置シリアル番号3002−1には、移行元ストレージシステム10におけるP−VOLまたはS−VOLのLDEV#及び移行元ストレージシステム10の装置シリアル番号が格納されている。ボリューム移行により、ボリュームペアが移行先ストレージシステム20に移動した場合、装置シリアル番号やLDEV#も変更されることになるが、その場合、管理者はこの設定ファイルを書き換える必要がある。つまり装置シリアル番号あるいはLDEV#を、移行先ストレージシステムの装置シリアル番号やLDEV#に書き換える必要がある。この作業は、特にボリューム数が増大すると時間のかかる作業となる。
次に、ストレージ装置に仮想ストレージが定義されており、ペア操作対象となる論理ボリュームが仮想ストレージ装置に所属している場合の設定ファイルの例について、図12を用いて説明する。図12の例は、移行先ストレージシステムにおいて仮想ストレージを定義し、P−VOLの仮想LDEV#が11番、P−VOLの属する仮想ストレージの仮想製番が1番、そしてS−VOLの仮想LDEV#が22番、S−VOLの属する仮想ストレージの仮想製番が11番にした場合の例である(つまり、移行先ストレージシステムにおけるP−VOL(これを移行先P−VOLと呼ぶ)及びS−VOL(これを移行先S−VOLと呼ぶ)に付される仮想製番はそれぞれ、移行元プライマリストレージ装置10a及び移行元セカンダリストレージ装置10bのシリアル番号と同じで、また移行先P−VOL及び移行先S−VOLに付される仮想LDEV#はそれぞれ、移行元プライマリストレージ装置10aのP−VOL(移行元P−VOL)のLDEV#及び移行元セカンダリストレージ装置10bのS−VOL(移行元S−VOL)のLDEV#と等しい関係にある)。
先に述べたとおり、仮想ストレージが定義されているストレージ装置は、仮想ストレージに所属しているボリュームペアに対するペア操作の指示を受け付ける場合、ストレージマネージャ101から、P−VOLやS−VOLの識別子として、仮想製番と仮想LDEV#の情報を受信することによって動作する。そのため、設定ファイルに記述されるボリュームペアの情報としては、P−VOLやS−VOLを特定する情報として、仮想製番と仮想LDEV#が記述される。
図12において、ファイル3000−1’が、移行先プライマリストレージ装置20a用の設定ファイルで、ファイル3000−2’が、移行先セカンダリストレージ装置20b用の設定ファイルである。以下、ファイル3000−1’を例にとって、図11の設定ファイルとの差異を説明する。
図11に示されている設定ファイルの例と比較すると、ブロック3001の内容が、ブロック3001−1’、3001−2’に変更されている点のみが異なる。ブロック3001−1’は、ストレージマネージャ101がコマンドを発行する先であるコマンドデバイスの識別子である。またブロック3001−2’は、仮想ストレージに対してコマンドを発行することを表す情報(HORCM_VCMD)、そして仮想ストレージの仮想製番(1番)を表している。
そしてブロック3001以外の点は、図11の設定ファイルと同じである。そのため、本発明の実施例に係る移行先ストレージシステムを使用した場合、移行元ストレージシステムから移行先ストレージシステムにボリュームを移行する際の設定ファイル変更の必要がないため、移行に係る作業負担を大幅に削減することができる。
設定ファイルの別の例を図13に示す。図13に示されている設定ファイル3000−1’には、コマンドデバイス名3001のフィールドだけが存在する。LUパス設定などの設定用途だけに用いられるインスタンスを起動する場合には、このようにコマンドデバイス名3001のフィールドだけを定義すればよい。
[移行処理の概要]
図14は、本発明の実施例1に係る計算機システムにおける、移行処理の概要を表した図である。移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bは、リモートコピー機能を有している。リモートコピー機能により、移行元プライマリストレージ装置10aの論理ボリューム130aと移行元セカンダリストレージ装置10bの論理ボリューム130bとはペア関係にあり、論理ボリューム130aがP−VOL、論理ボリューム130bがS−VOLという関係にある。つまりプライマリサーバ30aから移行元プライマリストレージ装置10aの論理ボリューム130aに書き込まれたデータは、移行元セカンダリストレージ装置10bの論理ボリューム130bへとコピーされ、論理ボリューム130bには常時、論理ボリューム130aのデータの複製が格納されている状態(ペア状態)にある。以下、論理ボリューム130aのことを「移行元P−VOL」と呼び、論理ボリューム130bのことを「移行元S−VOL」と呼ぶ。
本発明の実施例1に係るボリューム移行方法では、このペア状態にある論理ボリューム130aと論理ボリューム130bを、ペア状態を維持したまま移行先ストレージシステム20へと移行する。まず、移行先プライマリストレージ装置20aにおいて、仮想ストレージ25aを作成する。そして仮想ストレージ25a内に、移行先プライマリボリュームとなる論理ボリューム230a、及び論理ボリューム231aを作成する。同様に移行先セカンダリストレージ装置20bにおいて、仮想ストレージ25bを作成し、仮想ストレージ25b内に移行先セカンダリボリュームとなる論理ボリューム230bを作成する。
仮想ストレージ25aは、移行元プライマリストレージ装置10aのシリアル番号(S/N=1番)と同じ仮想製番(1番)が設定される。また仮想ストレージ25bは、移行元セカンダリストレージ装置10bのシリアル番号(S/N=11番)と同じ仮想製番(11番)が設定される。さらに論理ボリューム230aには、移行元P−VOLのLDEV#と同じ番号の仮想LDEV#が付され、論理ボリューム230bには、移行元S−VOLのLDEV#と同じ番号の仮想LDEV#が付される。
なお、論理ボリューム230aを作成する際、外部ストレージ接続機能により、論理ボリューム130aが記憶領域として対応付けられる。そのため、論理ボリューム230aは「論理ボリューム130aにマッピングされている」と表現されることもある。一方、論理ボリューム231aは、移行先プライマリストレージ装置20a内のパリティグループ22a(図1に記載のパリティグループ22a)を記憶領域として作成された論理ボリュームである。論理ボリューム230a、論理ボリューム231aは、論理ボリューム130aと同サイズのボリュームとして作成される。論理ボリューム230aは、実体(データの記憶される記憶領域)が外部のストレージ装置(移行元プライマリストレージ装置10a)に存在する。
続いてプライマリサーバ30aの論理ボリュームへのアクセス経路(パス)を切り替えることにより、プライマリサーバ30aが論理ボリューム130a(移行元P−VOL)ではなく、移行先P−VOLである論理ボリューム230aにアクセスするように設定を変更する。論理ボリューム230aは、論理ボリューム130aにマッピングされているため、プライマリサーバ30aが論理ボリューム230aにデータをライトすると、そのデータは移行先プライマリストレージ装置20aから移行元プライマリストレージ装置10aに転送され、論理ボリューム130aへと書き込まれる。またプライマリサーバ30aが論理ボリューム230aにリードリクエストを発行すると、論理ボリューム130aからデータが読み出され、読み出されたデータは移行元プライマリストレージ装置10aから移行先プライマリストレージ装置20aに転送され、移行先プライマリストレージ装置20aからプライマリサーバ30aへと返送される。さらに、論理ボリューム230aには、論理ボリューム130aと同一のボリューム番号(仮想ボリューム番号)が付されており、プライマリサーバ30aのアクセス経路は移行先プライマリストレージ装置20aへと変更されたものの、プライマリサーバ30aは、論理ボリューム230aが論理ボリューム130aと同一ボリュームであると認識する。
次に、移行先ストレージシステム20のリモートコピー機能により、論理ボリューム230aと論理ボリューム230bの間でボリュームコピーを開始する。これにより、論理ボリューム230a(実際には論理ボリューム130a)から順次データが読み出されて、論理ボリューム230bへと複製される。なお、この複製処理中も、プライマリサーバ30aは論理ボリューム230aに対してI/O要求を発行することができる。プライマリサーバ30aが論理ボリューム230aに対してライト要求を発行した場合、論理ボリューム230a(実際には論理ボリューム130a)に対してライトデータが書き込まれるとともに、論理ボリューム230bにもライトデータの複製が格納される。移行元ストレージシステム10においても、論理ボリューム130aと論理ボリューム130bはペア状態が維持されているので、論理ボリューム230bに加えて論理ボリューム130bにも、論理ボリューム130aのデータの複製が格納される状態にある。
論理ボリューム230aと論理ボリューム230bの間でボリュームコピーが完了し、2つのボリュームの内容が同一になった時点(つまり、ペア状態が“pair”になった時点)で、セカンダリサーバ30bの論理ボリュームへのアクセス経路を切り替えて、セカンダリサーバ30aが論理ボリューム130bではなく論理ボリューム230bにアクセスするように設定を変更する。これで、プライマリサーバ30aや移行先プライマリストレージ装置20aが障害で停止した場合にも、セカンダリサーバ30b及び移行先セカンダリストレージ装置20bを用いた業務継続が可能になる。ただしこの時点では、移行先プライマリストレージ装置21aには論理ボリューム230aのデータは存在しない。これは、論理ボリューム230aの実体が移行元プライマリストレージ装置10aの論理ボリューム130aだからであり、論理ボリューム230aの実体を移行先プライマリストレージ装置20aに移動しない限り、移行は完了したことにならない。そのため、移行先プライマリストレージ装置20aはボリュームマイグレーション機能を用いることにより、論理ボリューム230aの内容を論理ボリューム231aへと移行する処理を行う。
この移行処理では、移行先プライマリストレージ装置20aは論理ボリューム230aの内容を論理ボリューム231aへと複製する。このとき、論理ボリューム230aのデータの実体は、論理ボリューム130aにあるため、実際は、論理ボリューム130aから論理ボリューム231aに対応付けられた記憶領域にデータがコピーされる。そして複製が完了した時点で移行先プライマリストレージ装置20aは、論理ボリューム230aと論理ボリューム231aの役割を入れ替える。その結果、論理ボリューム231aが、論理ボリューム230bのボリュームペアになり、論理ボリューム231aのボリューム番号が、これまで論理ボリューム230aに付されていたボリューム番号へと変更される。
図15に、ボリュームマイグレーション機能により、論理ボリューム230aと論理ボリューム231aの役割が入れ替わった後の状態を示す。これにより、プライマリサーバ30aからライト要求が到来しても、ライトデータが移行元プライマリストレージシステム10に転送されることはなくなるため、移行元ストレージシステム10を撤去しても良い状態(つまりボリュームペアの移行が完了した状態)になる。
[移行処理のフロー]
続いて、本発明の実施例1に係る計算機システムにおける、ボリューム移行処理のフローを、図16、17、18のフローチャートを用いて説明する。なお、以下では説明の簡単化のため、移行元ストレージシステムの1ボリュームペア(P−VOL、S−VOLのセット)のみの移行処理について説明するが、同時に複数のボリュームペアの移行を行うことも可能である。
最初にストレージマネージャ101は、移行元ストレージシステムの構成の調査を行う(S10)。移行元ストレージシステムの構成の調査では、主に以下の情報を取得する。
(ア) 移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bのシリアル番号(S/N)、機種名
(イ) 移行対象のP−VOL、S−VOLのLDEV#及びサイズ
(ウ) 移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bで使用されていないLDEV#
これらの情報を調査する際、移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bに対して、ストレージマネージャ101から構成情報取得用の制御用命令を発行する。ストレージ装置は構成情報取得用の制御用命令を受信すると、装置のシリアル番号、ストレージ装置内で定義されている論理ボリュームのLDEV#やサイズ等の情報を返却する。ストレージ装置内で定義されている論理ボリュームの情報として、一例では論理ボリューム管理テーブルT200の内容が返却される。管理者は、論理ボリューム管理テーブルT200のLDEV#(T201)を参照することで、LDEV#(T201)に記録されていないLDEV#が「使用されていないLDEV#」であると判断することができる。
なお、以下で説明する移行処理では、各ストレージ装置の構成が以下の場合について説明する。
(a) 移行元プライマリストレージ装置10aのP−VOL(移行元P−VOLと呼ぶ)のLDEV#が11番、サイズが100GB
(b) 移行元セカンダリストレージ装置10bのS−VOL(移行元S−VOLと呼ぶ)のLDEV#が22番、サイズが100GB
(c) 移行元プライマリストレージ装置10aのシリアル番号が1番
(d) 移行元セカンダリストレージ装置10bのシリアル番号が11番
(e) 移行先プライマリストレージ装置20aのシリアル番号が2番
(f) 移行先セカンダリストレージ装置20bのシリアル番号が22番
また、S10において、移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10bで使用されていないLDEV#を調査した結果、移行先P−VOL、移行先S−VOL、ボリュームマイグレーション機能のターゲットボリュームとして用いる論理ボリュームとして、以下のLDEV#の論理ボリュームを用いると決定された場合を想定する。
(g) 移行先プライマリストレージ装置20aのP−VOL(移行先P−VOLと呼ぶ)として選定される論理ボリュームのLDEV#が33番
(h) 移行先プライマリストレージ装置20aにおいて、ボリュームマイグレーション機能のターゲットボリュームとして選定される論理ボリュームのLDEV#が44番、及び仮想LDEV#が99番
(i) 移行元セカンダリストレージ装置10bのS−VOL(移行元S−VOLと呼ぶ)のLDEV#が55番
また、プライマリサーバ30a、セカンダリサーバ30bで稼働している、ストレージマネージャ101のインスタンス番号、及び各インスタンスが使用している設定ファイルを特定しておく。以下の例では、プライマリサーバ30a及びセカンダリサーバ30bで稼働しているインスタンスのインスタンス番号がそれぞれ、100番及び101番であったとする。また以下では、設定ファイルの内容が図11に示されているものであった場合について説明する。
続いて、移行先ストレージシステムを設置し、移行先ストレージシステムをホスト計算機や他のストレージ装置とファイバチャネルケーブルで接続する(S20)。なお、ストレージ装置とホスト計算機、あるいはストレージ装置同士を接続する、ファイバチャネルケーブルなどの伝送線のことを、「物理パス」と呼び、ストレージ装置とホスト計算機、あるいはストレージ装置同士を物理パスで接続する作業のことを、「物理パスの接続」と呼ぶ。
物理パスの接続作業では、以下の物理パスを接続する。
(ア) 移行先プライマリストレージ装置20a(ポートJ、ポートK)とプライマリサーバ30a間の物理パス
(イ) 移行先セカンダリストレージ装置20b(ポートQ、ポートR)とセカンダリサーバ30b間の物理パス
(ウ) 移行元プライマリストレージ装置10a(ポートC)と移行先プライマリストレージ装置10b(ポートL)間の物理パス
(エ) 移行先プライマリストレージ装置20a(ポートM、ポートN)と移行先セカンダリストレージ装置20b(ポートO、ポートP)間の物理パス
(ア)は、プライマリサーバ30aと移行先プライマリストレージ装置20aの間のI/O要求、移行先プライマリストレージ装置20aのコマンドデバイスへの指示をやり取りするための物理パスである。(イ)は、セカンダリサーバ30bと移行先セカンダリストレージ装置20bの間のI/O要求、移行先セカンダリストレージ装置20bのコマンドデバイスへの指示をやり取りするための物理パスである。
(ウ)は、データ移行のために用いられる物理パスで、外部ストレージ接続機能により移行元プライマリストレージ装置10aの移行元ボリューム(P−VOL)を、移行先プライマリストレージ装置20aにマッピングするために用いられる。実施例1では、(ウ)の物理パスは1本の例を説明したが、複数の物理パスを接続する構成をとることもできる。また(エ)は、移行先ストレージシステムで、リモートコピー機能によるデータ伝送のために用いられる物理パスである。
S30では、ストレージマネージャ101は移行元プライマリストレージ装置10aの論理ボリュームに対して、LUパス設定を行う。ここでLUパス設定の行われる論理ボリュームは、移行対象となるP−VOLである。またここで行われるLUパス設定は、移行先プライマリストレージ装置20aが外部ストレージ接続機能により、移行元プライマリストレージ装置10aの移行対象ボリューム(P−VOL)を認識できるようにするために行われる。そのため、S20で移行先プライマリストレージ装置20aと接続した、移行元プライマリストレージ装置10aのポートCに対してLUパス設定を行う。なお、LUパス設定の際、LUNを指定する必要があるが、任意のLUNを指定すればよい。
プライマリサーバ30aのストレージマネージャ101が移行元プライマリストレージ装置10aにLUパス設定の指示を発行すると、移行元プライマリストレージ装置10aは、その指示に従ってP−VOLに対するLUパス設定を行う。また、別の実施態様として、管理端末からLUパス設定が行われてもよい。
続いてS40では、移行先プライマリストレージ装置20aの設定作業を行う。以下、図17を用いて、S40で行われる処理を説明する。まず、管理端末は、コマンドデバイスを作成する。そしてコマンドデバイスの作成後、プライマリサーバ30aでストレージマネージャ101のインスタンスを起動する。この時起動されるインスタンスが読み込む設定ファイルは、図13に示されているようなファイル、つまり少なくともコマンドデバイスの識別子の情報が記録された設定ファイルであればよい。また、ここで起動されるインスタンスのインスタンス番号は、すでにプライマリサーバ30a及びセカンダリサーバ30bで稼働しているインスタンスのインスタンス番号(100番及び101番)とは異なるインスタンス番号を用いる。これ以降の各作業は、ストレージマネージャ101から行われる。ただし別の実施形態として、管理端末が用いられてもよい。
続いてS40bでは、起動されたインスタンスを用いて、移行先プライマリストレージ装置20aのポートのうち、移行元プライマリストレージ装置10aと接続されるポート(ポートL)の属性を、外部ストレージ接続機能用の属性に変更する。さらに移行先プライマリストレージ装置20aのポートのうち、移行先セカンダリストレージ装置20bと接続されるポート(ポートM、ポートN)の属性を、リモートコピー機能用の属性に変更する。具体的にはポートM、ポートNのうち、一方のポートの属性を、移行先プライマリストレージ装置20aから移行先セカンダリストレージ装置20bへのデータ送信用ポートの属性にし、残りのポートの属性を移行先セカンダリストレージ装置20bから移行先プライマリストレージ装置20aへのデータ受信用ポートの属性に変更する。同様に、移行先セカンダリストレージ装置20bのポートのうち、移行先プライマリストレージ装置20aと接続されるポート(ポートO、ポートP)の属性を、リモートコピー機能用の属性に変更する。
S40cでは、ストレージマネージャ101は、移行先プライマリストレージ装置20aに仮想ストレージを作成する。仮想ストレージを作成する際に、ストレージマネージャ101が移行先プライマリストレージ装置20aに発行する仮想ストレージ作成用の制御用命令には、作成対象の仮想ストレージの識別子、仮想ストレージのシリアル番号、機種名の情報が含まれる。S40cで発行される制御用命令に含まれる仮想ストレージの識別子はV−BOX管理テーブルT1000のID(T1001)に格納される識別子であり、定義済みである仮想ストレージの識別子(たとえば、先に述べたように、識別子v0は初期状態で定義済みである)と異なる識別子が指定される。またS40cで発行される制御用命令に含まれる仮想ストレージのシリアル番号は移行元プライマリストレージ10aのシリアル番号、仮想ストレージ機種名は移行元プライマリストレージ10aの機種名が指定される。ストレージマネージャ101はこれらの情報とともに仮想ストレージ作成用の制御用命令を移行先プライマリストレージ装置20aに発行する。仮想ストレージ作成用の制御用命令を受信した移行先プライマリストレージ装置20aは、V−BOX管理テーブルT1000の、ID(T1001)、機種名(T1002)、S/N(T1003)に、受信した仮想ストレージの識別子、機種名、シリアル番号の情報を格納する。
S40dでは、ストレージマネージャ101は移行先プライマリストレージ装置20aに対し、移行先ボリュームとして用いるボリュームに付されている仮想LDEV#を削除する指示を発行する。先に述べたとおり、移行先プライマリストレージ装置20aで用意する移行先ボリューム(移行先P−VOL、ターゲットボリューム)のLDEV#が33番と44番であるので、その場合について説明する。移行先プライマリストレージ装置20aは、仮想LDEV#を削除する制御用命令を受信すると、仮想LDEV管理テーブルに登録されているLDEVのうち、LDEV#(T1501)が44番と33番である行のVLDEV#(T1502)の内容を無効化する(NULL値を格納する)。また、ストレージマネージャ101は、仮想LDEV#を削除したLDEVのLDEV#を、仮想ストレージに登録する指示を発行する。移行先プライマリストレージ装置20aはこの指示を受けると、V−BOX管理テーブルT1000のLDEV#(T1005)にLDEV#を登録し、また仮想LDEV管理テーブルT1500の属性T1504に“reserved”を格納する。属性T1504に“reserved”が格納されていると、移行先プライマリストレージ装置20aは、当該LDEVが仮想ストレージに所属していると認識し、当該LDEVを他の用途で用いない。
S40eでは、ストレージマネージャ101は、仮想ストレージに登録したLDEVを仮想化、つまり仮想ストレージに登録したLDEVに対して仮想LDEV#を付す指示を発行する。先に述べたとおり、ターゲットボリュームの仮想LDEV#には99番を使用する。そして移行先P−VOLの仮想LDEV#には、移行元P−VOLのLDEV#を付すので、LDEV#が33番の論理ボリュームに対して、11番の仮想LDEV#を付す制御用命令を、またLDEV#が44番の論理ボリュームに対して、99番の仮想LDEV#を付す制御用命令を発行する。
移行先プライマリストレージ装置20aはこの指示を受け付けると、V−BOX管理テーブルT1000に登録されているLDEV#(T1005)が33番の行に対応するVLDEV#(T1004)に11を格納し、またLDEV#(T1005)が44番の行に対応するVLDEV#(T1004)に99を格納する。これにより、LDEV#が33番の論理ボリュームに仮想LDEV#として11番が付され、LDEV#が44番の論理ボリュームに、仮想LDEV#として99番が付されたことになる。
S40fでは、外部ストレージ接続機能により、移行元プライマリストレージ装置10aの移行元ボリューム(P−VOL)を、移行先プライマリストレージ装置20aにマッピングする。ストレージマネージャ101は、移行元ボリュームを移行先プライマリストレージ装置20aの外部ボリュームグループに登録する制御用命令を発行する。移行先プライマリストレージ装置20aはこのコマンドを受け付けると、外部ボリュームグループ管理テーブルT150に、移行元ボリュームの情報を登録する。この時移行先プライマリストレージ装置20aは、移行元ボリュームのサイズの情報を移行元プライマリストレージ装置10aから取得し、サイズT154に格納する。図4が移行元P−VOLをマッピングした後の、外部ボリュームグループ管理テーブルT150の例である。ここでは外部ボリュームグループ名(T151)がEG1である外部ボリュームグループに、移行元P−VOLがマッピングされた場合の例が示されている。移行元P−VOLのサイズが100GBであるので、サイズT154には「100GB」が格納される。
さらに、ストレージマネージャ101は外部ボリュームグループの記憶領域から論理ボリューム(移行先P−VOL)を作成する制御用命令を発行する。移行先プライマリストレージ装置20aはこの制御用命令を受信すると、論理ボリューム管理テーブルT200のLDEV#(T201)に33、サイズT202に100GB(つまり移行元P−VOLの全領域を使って移行先P−VOLを作成する)、グループ名T203に“EG1”、先頭アドレスT204に0を格納し、LDEV#が33番の論理ボリュームの記憶領域が外部ボリュームグループEG1の記憶領域である旨の情報を格納する。
S40gでは、ボリュームマイグレーション機能で用いるターゲットボリュームを作成する。ここで作成するターゲットボリュームのサイズは、移行先P−VOLと同サイズであり、記憶領域として、移行先プライマリストレージ装置20a内のパリティグループの記憶領域を用いる。パリティグループが複数存在する場合、パリティグループの残サイズ(パリティグループ管理テーブルT100の残サイズT105)が移行先P−VOLのサイズ以上である、任意のパリティグループを選定して良い。
ストレージマネージャ101は、LDEV#が44番の論理ボリュームに、パリティグループの記憶領域を割り当てる制御用命令を発行する。移行先プライマリストレージ装置20aはこの制御用命令を受け付けると、論理ボリューム管理テーブルT200に、LDEV#及びLDEVに割り当てた記憶領域(パリティグループ)の情報を登録する。図5に、割り当て後の論理ボリューム管理テーブルT200の内容の一例を示す。図5では、LDEV#44に、パリティグループRG Aの領域が100GB割り当てられていること(行906)、LDEV#33に、外部ボリュームグループEG1の領域が100GB割り当てられていること(行907)が示されている。
S40hでは、移行先ボリュームにLUパス設定を行う。ストレージマネージャ101は、LDEV#33に、ポート名、LUNを割り当てる制御用命令を発行する。移行先プライマリストレージ装置20aはこの制御用命令を受け付けると、LU管理テーブルT300に情報を登録する。たとえば、LDEV#33に、ポート名3e243174aaaaaaaa、LUN0を割り当てる旨の指示が到来した場合、移行先プライマリストレージ装置20aは、LU管理テーブルT300の、ポート名T301が“3e243174aaaaaaaa”、LUN(T303)が0の行のLDEV#(T304)の欄に、“33”を登録する。
以上がS40で行われる処理である。続いて図16に戻り、S50以降の処理について説明する。S50では、移行先セカンダリストレージ装置20bの設定作業が行われる。この処理は、S40で移行先プライマリストレージ装置20aに対して行った作業とほとんど同様である。コマンドデバイスの作成(S40a相当の作業)、仮想ストレージの作成(S40c相当の作業)、移行先ボリューム(S−VOL)として用いるボリュームに付されている仮想LDEV#の削除及び移行先ボリュームの仮想ストレージへの登録(S40d相当の作業)、移行先ボリュームの仮想化(S40e相当の作業)、移行先ボリュームの作成(S40f相当の作業)、移行先ボリュームへのLUパス設定(S40h相当の作業)を行う。また、コマンドデバイスの作成作業は、管理端末から実施し、コマンドデバイス作成後にセカンダリサーバ30bでストレージマネージャ101のインスタンスを起動すること、そして以降の作業は、起動されたインスタンスを用いて実施する点も、S40と同様である。
S60では、プライマリサーバ30aから移行先プライマリストレージ装置20aへの交替パスを追加する。プライマリサーバ30aで、プライマリサーバ30aのオペレーティングシステム及び交替パスソフト102が提供するコマンドを実行することで、S40の作業で移行先プライマリストレージ装置20aに作成された移行先P−VOLを、プライマリサーバ30aのオペレーティングシステム及び交替パスソフト102が認識する。移行先P−VOLが交替パスソフト102から認識されると、移行元プライマリストレージ装置10aの移行元P−VOLと、移行先プライマリストレージ装置20aの移行先P−VOLは、プライマリサーバ30aに対して同じ属性情報(装置シリアル番号、LDEV#)を見せているため、交替パスソフト102は双方のボリュームが同一ボリュームであると認識し、交替パスが構築される。
続いて、プライマリサーバ30aから移行元プライマリストレージ装置10aの移行元ボリュームへのパスが無効化されるよう、交替パスソフト102の設定が変更される。これは交替パスソフト102が提供するコマンドが実行されることによって行われる。交替パスソフト102は、移行元P−VOLと移行先P−VOLが同一ボリュームであると認識しているので、交替パスが削除された場合、交替パスソフト102は、プライマリサーバ30aで稼働するアプリケーションプログラムなどが移行元P−VOLに対して発行していたI/O要求を、移行先P−VOLへと発行するようになる。
その後移行元プライマリストレージ装置10aで、移行元P−VOLのLUパスの削除が行われる。この作業は、ストレージマネージャ101または管理端末から、移行元プライマリストレージ装置10aに対してLUパスの削除指示を発行することによって行われる。
S70では、移行先ストレージシステム10で、移行先P−VOLと移行先S−VOL間のペア作成を行う。プライマリサーバ30a及びセカンダリサーバ30bで、移行元P−VOL、移行先S−VOLのボリュームペア操作用に用いられていた設定ファイル(設定ファイルの例は図11)のデータに基づいて、図12のように、仮想ストレージに対して制御用命令を発行するための設定ファイルが作成される。そして作成された設定ファイルを用いて、プライマリサーバ30a及びセカンダリサーバ30bのストレージマネージャ101のインスタンスが起動される。なお、ここで起動されるインスタンスのインスタンス番号は、すでにプライマリサーバ30a及びセカンダリサーバ30bで稼働しているインスタンスのインスタンス番号(100番及び101番)とは異なるインスタンス番号を用いる。その後プライマリサーバ30aのストレージマネージャ101がペア作成の制御用命令を発行すると、移行先ストレージシステム10は、移行先P−VOLと移行先S−VOL間でのデータ複製を開始する。
ペア作成が完了する、つまり移行先P−VOLのデータが完全に移行先S−VOLに複製される間、プライマリサーバ30aが移行先P−VOL(LDEV#33、仮想LDEV#11)にデータをライトすると、そのデータは外部ストレージ接続機能により移行元プライマリストレージ装置10aの移行元P−VOL(LDEV#11)へと書き込まれ、書き込まれたデータは移行元S−VOL(LDEV#22)へと書き込まれる。よって、移行先P−VOLと移行先S−VOLとの間のペア形成中も移行元P−VOLと移行元S−VOLとの間で冗長構成が保たれている。また、ペア状態は、ストレージマネージャ101から移行先プライマリストレージ装置20aに対してペア状態を表示する制御用命令を発行することによって、確認できる。
移行先P−VOLと移行先S−VOLのペア状態が“pair”状態に変更された後、プライマリサーバ30a及びセカンダリサーバ30b上のクラスタソフトウェア103等、ディザスタリカバリ用のソフトウェアの動作が停止される(S80)。
続いて、移行元ストレージシステム用に起動していた、ストレージマネージャ101のインスタンスを停止し、ストレージマネージャ101の設定ファイルの書き換えを行う。設定ファイルの書き換えは、S70で行ったものと同様である。設定ファイルの書き換えでは、ボリュームペアの情報が記載されているブロック3002等の変更は不要であるため、設定ファイルの書き換えは短時間で実施できる。設定ファイルの書き換えが終了すると、プライマリサーバ30a及びセカンダリサーバ30bで、当該設定ファイルを用いたインスタンス起動が行われる(S90)。ここで起動されるインスタンスのインスタンス番号は、移行処理前にプライマリサーバ30a及びセカンダリサーバ30bで稼働しているインスタンスのインスタンス番号(100番及び101番)と同じインスタンス番号が用いられる。
S100では、セカンダリサーバ30bから移行元セカンダリストレージ装置10bの移行元ボリュームへのパスの無効化、移行元セカンダリストレージ装置10bの移行元ボリュームのLUパス削除が行われる。この作業はS60で、移行元プライマリストレージ装置10aの移行元P−VOLに対して行われた作業と同様の作業を、移行元セカンダリストレージ装置10bの移行元S−VOLに対して行うものである。また、セカンダリサーバ30bから移行先セカンダリストレージ装置20bの移行先S−VOLへのLUパス設定を行い、セカンダリサーバ30bに移行先S−VOLを認識させる。その後、S80で停止していたプライマリサーバ30a及びセカンダリサーバ30b上のクラスタソフトウェア103等のディザスタリカバリ用のソフトウェアの動作を再開させる。
続いてS110では、移行先P−VOLをターゲットボリュームに移行する作業が行われる。移行の際、S90で起動したストレージマネージャ101のインスタンスとは別のインスタンス(第2インスタンスと呼ぶ)がプライマリサーバ30aで起動され、移行先プライマリストレージ装置20aに対するボリュームの移行の指示は第2インスタンスを用いて行われる。指示を受け付けた移行先プライマリストレージ装置10aは、ボリュームマイグレーション機能を用いて、移行先P−VOLをターゲットボリュームに移行する。
移行の完了を待つ、つまり移行先P−VOLのデータが完全にターゲットボリュームに複製される間、プライマリサーバ30aが移行先P−VOL(LDEV#33、仮想LDEV#11)にデータをライトすると、そのデータは外部ストレージ接続機能により移行元プライマリストレージ装置10aの移行元P−VOL(LDEV#11)へと書き込まれる。また、書き込まれたデータは移行先S−VOL(LDEV#55、仮想LDEV#22)へと書き込まれる。よって、移行先P−VOLとターゲットボリュームとの間のデータ移行中も移行元P−VOLと移行先S−VOLとの間で冗長構成が保たれている。また、ボリューム状態は、ストレージマネージャ101から移行先プライマリストレージ装置20aに対して、移行状態を取得する制御用命令を発行することによって、確認できる。
移行が完了すると、移行元ストレージシステムのデータはすべて移行先ストレージシステムに格納された状態になる。また、ボリュームマイグレーション機能により、LDEV#とデータ格納先記憶領域との対応関係が、マイグレーション元とマイグレーション先とで入れ替わる。そのため、マイグレーションが完了すると、仮想LDEV#11を指定したプライマリサーバ30aからのアクセス要求に対して、移行先プライマリストレージ装置20a内のパリティグループ22aの記憶領域が対応付けられた論理ボリュームに対してアクセス処理が実行される。プライマリサーバ30a及びセカンダリサーバ30bは移行元ストレージシステムにはアクセスしない状態になっている(パスが削除されているため)ので、管理者は移行元ストレージシステムを撤去する(S120)。これにより移行処理が完了する。ここまで説明した手順により、プライマリサーバ30aからのアクセス(リード、ライト要求等)受け付けを停止することなく、冗長構成を維持したまま、P−VOLとS−VOLのボリュームペアを移行元ストレージシステム10から移行先ストレージシステム20に移行することができる。
[変形例1]
上で説明した移行処理では、S70でペア作成の指示を行った後、ペア状態が“pair”に変化したことが確認されてから、S80以降の処理が行われていた。ただし本発明の移行処理は、上で説明した処理手順に限定されるものではない。別の実施形態として、S70でペア作成の指示を行った直後に、それ以降の作業を実施するようにしてもよい。その場合の処理の流れについて、上で説明した移行処理との相違点を中心に説明する。
S10からS60の処理は、上で説明した処理と同一である。S70において、ペア作成の指示を行うと、ペア状態が“pair”に変化するのを待たずにS80の処理(ディザスタリカバリ用のソフトウェアの動作の停止)に進む。
続いて、上で説明した移行処理のうち、S110のボリュームの移行指示を移行先プライマリストレージ装置20aに対して発行する。ボリューム移行指示の後、ペア作成が完了するのを待つ。この場合、ペア作成が完了すると、同時にボリュームマイグレーション機能により、移行元P−VOLとターゲットボリュームが入れ替わる。
ペア作成が完了した後、S90、S100の処理が実行される。その後S120の処理(移行元ストレージシステムの撤去)を行って、移行処理が終了する。
この移行処理の場合、リモートコピー機能による移行元P−VOLから移行先S−VOLへの複製と、移行元P−VOLからターゲットボリュームへのデータ移行(複製)とが並行して実施されるため、実施例1に係るデータ移行処理よりも、データ移行に要する時間を短縮することができる。
[変形例2]
続いて、本発明の変形例2に係る計算機システムについて説明する。図19は、本発明の変形例2に係る計算機システムの構成図である。本発明の変形例2に係る計算機システムは実施例1に係る計算機システムと同じく、移行元プライマリストレージ装置10a、移行元セカンダリストレージ装置10b、移行先プライマリストレージ装置20a、移行先セカンダリストレージ装置20b、プライマリサーバ30a、セカンダリサーバ30bから構成され、各ストレージ装置のハードウェア構成も実施例1で説明したものと同じである。
実施例1に係る計算機システムとの相違は、リモートコピー機能に、ジャーナルを用いたリモートコピー機能が用いられる点である。なお、変形例2に係る計算機システムにおいて、ジャーナルとは、P−VOLのあるストレージ装置からS−VOLのあるストレージ装置に対して送信される、P−VOLの複製データを一時蓄積するために用いられる記憶領域である。移行元プライマリストレージ装置10aと移行元セカンダリストレージ装置10bにはそれぞれ、ジャーナル13a、ジャーナル13bが設けられている。また、移行処理の際、移行先プライマリストレージ装置20aと移行先セカンダリストレージ装置20bにもそれぞれ、ジャーナル23a、ジャーナル23bが設けられる。
ジャーナル(13a、13b、23a、23b)には、ジャーナルIDと呼ばれる、ストレージ装置内で一意な識別子が付されている。また、ジャーナル13a、13b、23a、23bにはそれぞれ、ジャーナルボリューム133a、133b、233a、233bが登録されている。以下、ジャーナルのことを「JNL」と略記することがあり、またジャーナルボリュームのことを「JVOL」と略記することがある。
ジャーナルボリューム(133a、133b、233a、233b)は、実施例1で説明してきた論理ボリューム130a等と同じ論理ボリュームである。なお、実施例1で説明してきた論理ボリューム130aは、論理ボリューム作成時に、静的にストレージ装置内のパリティグループの記憶領域が対応付けられるボリュームであったが、いわゆるThin Provisioning技術を用いて形成されるボリュームをジャーナルボリュームとして用いてもよい。Thin Provisioning技術を用いて形成されるボリュームの場合、ボリュームに対するアクセスを受け付けた時点で、アクセスのあった領域に対して動的に記憶領域を割り当てるため、記憶領域の節約になる。
変形例2に係る計算機システムにおいて、移行元P−VOLである論理ボリューム130aのデータは、ジャーナルを用いたリモートコピー機能によって、常時移行元S−VOLである論理ボリューム130bに複製されている状態(ペア状態)にある。移行処理中のデータの流れを図20に示すが、移行元P−VOLの複製データが移行元S−VOLへと複製される前に、JNL13a、13bを経由する点以外は、実施例1と変わりはない。つまり、移行元P−VOLの複製データを移行元セカンダリストレージ装置10bに転送する際、複製データは一旦JNL13a(のJVOL133a)に格納される。なお、この時複製データには、シーケンス番号と呼ばれる、複製データの書き込み順を指示する番号が付される。シーケンス番号は、プライマリサーバ30aが移行元P−VOLにデータを書き込んだ順序と同じ順序で、移行元セカンダリストレージ装置10bが移行元S−VOLに複製データを書き込めるようにするために付されるものである。
JNL13aに格納された複製データは、移行元セカンダリストレージ装置10bのJNL13b(のJVOL133b)へと転送される。その後移行元セカンダリストレージ装置10bは、JNL13bに格納された移行元P−VOLの複製データを取り出し、複製データに付されているシーケンス番号の順に、複製データを移行元S−VOLへと反映する。ここでは、移行元ストレージシステム10におけるボリューム複製の概要を説明したが、移行先ストレージシステム20でも、移行先P−VOLと移行先S−VOLのボリュームペア作成が行われると同様の処理が行われる。
[移行処理のフロー]
続いて、ボリューム移行処理のフローを説明する。変形例2に係る計算機システムにおける、ボリューム移行処理の流れは、実施例1で説明したものとほとんど同じであるため、実施例1で用いられた図16〜18を用いて説明する。
変形例2に係る計算機システムでは、リモートコピー機能としてジャーナルを用いたリモートコピー機能を用いるため、移行先ストレージシステム20にジャーナルを用意する処理が加わる点が、主な相違点である。移行処理のS10において、実施例1で説明した情報に加えて、移行元P−VOL、移行元S−VOLのボリュームペアで使用されているジャーナルのジャーナルIDの情報を取得する。
後で説明するS40、S50において、移行先ストレージシステム20にジャーナルを作成するが、そこでは移行元ストレージシステム10のジャーナル13a、13bのジャーナルIDと同じIDのジャーナル(23a、23b)を作成する。以下では、ジャーナルIDの情報の取得の結果、ジャーナル13aのジャーナルIDは0、ジャーナル13bのジャーナルIDは1であった場合を例にとって説明する。また、ジャーナルボリューム233aのLDEV#は77番、ジャーナルボリューム233bのLDEV#は88番とする場合を例にとって説明する。
S20,S30は、実施例1で説明した処理と同じである。
S40では、実施例1で説明した処理(図17のS40a〜S40h)に加えて、S40gとS40hの間に、ジャーナルボリューム233aの作成、そしてジャーナルボリューム233aのジャーナル23aへの登録を行う。それ以外の点は、実施例1で説明したS40の処理と同じである。ジャーナルボリューム233aの作成及びジャーナル23aへの登録は、ストレージマネージャ101から移行先プライマリストレージ装置20aに、ジャーナルID=0のジャーナルに、LDEV#77の論理ボリューム(233a)を登録する制御用命令を発行することで実施される。この制御用命令を受信した移行先プライマリストレージ装置20aは、ジャーナルID=0のジャーナルを作成し、さらにLDEV#77の論理ボリューム(233a)を作成されたジャーナルに登録する処理を行う。なお、この処理を行う順序は上で説明した順に限定されるわけではない。たとえばS40fの前に行うようにしてもよい。
S50でも、実施例1で説明した処理に加えて、ジャーナルボリューム233bの作成及び作成されたジャーナルボリュ―ム233bのジャーナル23bへの登録を行う。それ以外の点は実施例1で説明したS50の処理と同じである。
S60は、実施例1で説明した処理と同じである。
S70は、ストレージマネージャ101が、ボリュームペア(つまり移行先P−VOLと移行先S−VOL)のペア作成の制御用命令を発行する際に、移行先P−VOLと移行先S−VOLの識別子を指定する他に、S40で作成されたジャーナル23a、ジャーナル23bのジャーナルID(0と1)を指定した制御用命令を発行する。それ以外の点は、実施例1で説明した処理と同じである。これにより、ジャーナル23a、ジャーナル23bを用いた、移行先P−VOLから移行先S−VOLへのコピーが行われる。
S80以降の処理は、実施例1で説明した処理と同じである。