図1は、本発明の実施形態の全体概要を示す構成説明図である。図1に示すように、このストレージシステムは、例えば、複数の仮想化ストレージ装置1,2と、複数の外部ストレージ装置3と、複数のホスト装置(以下、「ホスト」)4と、上位SAN(Storage Area Network)5と、下位SAN6と、管理端末7と、装置間LAN(Local Area Network)8とを備えて構成することができる。
ここで、仮想化ストレージ装置1,2は「接続元ストレージ装置」に対応し、外部ストレージ装置3は「接続先ストレージ装置」に対応する。ホスト4は「ホスト装置」に対応し、上位SAN5は「第1通信ネットワーク」に対応し、下位SAN6は「第2通信ネットワーク」に対応し、管理端末7は「管理端末」に対応し、装置間LAN8は「第3通信ネットワーク」に対応する。
なお、上位SAN5及び下位SAN6は、例えば、FC_SAN(Fibre Channel_Storage Area Network)またはIP_SAN(Internet Protocol_SAN)として構成可能であるが、これに限らず、例えばLANやWAN(Wide Area Network)として構成可能な場合もある。上位SAN5は、各ホスト4と各仮想化ストレージ装置1,2とをそれぞれ接続するためのものである。下位SAN6は、各仮想化ストレージ装置1,2と各外部ストレージ装置3とをそれぞれ接続するためのものである。上位SAN5と下位SAN6とは分離されており、一方の通信ネットワークのトラフィックや障害は、他方の通信ネットワークに直接的な影響を与えない。
第1仮想化ストレージ装置1の構成に着目する。第1仮想化ストレージ装置1は、外部ストレージ装置3の有するボリューム3Aを仮想化して、ホスト4に提供するためのものである。この第1仮想化ストレージ装置1は、例えば、制御部1Aと、第1管理テーブル1Bと、第2管理テーブル1Cと、論理ボリューム1Dと、中間ボリューム1Eとを備えている。
ここで、制御部1Aは「制御部」に対応し、第1管理テーブル1Bは「第1管理情報」に対応し、第2管理テーブル1Cは「第2管理情報」に対応し、論理ボリューム1Dは「論理ボリューム」に対応し、中間ボリューム1Eは「中間ボリューム」に対応する。
制御部1Aは、第1仮想化ストレージ装置1の全体動作を制御する。制御部1Aは、例えば、論理ボリューム1Dを生成してホスト4に提供する。また、制御部1Aは、第1管理テーブル1B及び第2管理テーブル1Cを使用することにより、論理ボリューム1Dと外部ボリューム3Aとを中間ボリューム1Eを介して接続させる。さらに、制御部1Aは、管理端末7からの指示に基づいて、自己の管理下にある外部ボリューム3Aの全部または一部を、第2仮想化ストレージ装置2に移行させる。
第1管理テーブル1Bは、ストレージシステム内に含まれる各外部ボリューム3Aを識別し、所望の外部ボリューム3Aを論理ボリューム1Dに接続するために使用される。第2管理テーブル1Cは、各外部ボリューム3Aのコピーステータスや差分管理情報(差分ビットマップ等)のようなその他の属性情報を管理するために使用される。
第2仮想化ストレージ装置2は、第1仮想化ストレージ装置1と同様の構成を備えることができる。第2仮想化ストレージ装置2は、第1仮想化ストレージ装置1と同様に、各外部ボリューム3Aの全部または一部を、中間ボリューム2Eを介して論理ボリューム2Dに接続することができる。そして、第2仮想化ストレージ装置2は、第1仮想化ストレージ装置1と同様に、外部ボリューム3Aをあたかも自己の内部ボリュームであるかのようにして、ホスト4に提供する。
第2仮想化ストレージ装置2は、例えば、制御部2Aと、第1管理テーブル2Bと、第2管理テーブル2Cと、論理ボリューム2D及び中間ボリューム2Eを備えて構成することができる。これら各部2A〜2Eは、第1仮想化ストレージ装置1で述べた各部1A〜1Eと同様に構成されるので、詳細な説明を省略する。
但し、第2管理テーブル2Cのサイズは、第1仮想化ストレージ装置1の第2管理テーブル1Cのサイズよりも小さい点に留意すべきである。本実施形態では、第1仮想化ストレージ装置1から第2仮想化ストレージ装置2に移管された外部ボリューム3Aに関する属性情報のみが、第1仮想化ストレージ装置1の第2管理テーブル1Cから第2仮想化ストレージ装置2の第2管理テーブル2Cにコピーされる。従って、第2管理テーブル2Cのテーブルサイズは、第2管理テーブル1Cのそれよりも小さい。
第2仮想化ストレージ装置2がストレージシステムに追加されるよりも前に、第1仮想化ストレージ装置1が既に使用されていた場合、即ち、第1仮想化ストレージ装置1が全ての外部ボリューム3Aを仮想化して使用していた場合、第1仮想化ストレージ装置1は、全ての外部ボリューム3Aの属性情報を取得している。その状況下で、第2仮想化ストレージ装置2がストレージシステムに追加され、一部の外部ボリューム3Aが第1仮想化ストレージ装置1から第2仮想化ストレージ装置2に移管された場合、この移管された外部ボリューム3Aに関する属性情報のみが、第1仮想化ストレージ装置1の第2管理テーブル1Cから第2仮想化ストレージ装置2の第2管理テーブル2Cにコピーされる。
各外部ストレージ装置3は、それぞれ少なくとも一つ以上の外部ボリューム3Aを備えている。外部ボリュームとは、各仮想化ストレージ装置1,2の外部に存在するボリュームという意味である。各外部ボリューム3Aは、例えば、一つまたは複数の記憶デバイスの有する物理的な記憶領域上に設けられている。記憶デバイスとしては、例えば、ハードディスクドライブ、光ディスクドライブ、半導体メモリドライブ、テープドライブ等を挙げることができる。また、ハードディスクドライブとしては、例えば、FC(Fibre Channel)ディスク、SAS(Serial Attached SCSI)ディスク、SATA(Serial AT Attachment)ディスク等の各種ディスクを使用することができる。各外部ボリューム3Aは、中間ボリューム1E,2Eを介して、論理ボリューム1D,2Dのいずれか一方に接続され、仮想化ストレージ装置1,2に記憶領域を提供する。
管理端末7は、装置間LAN8を介して、各仮想化ストレージ装置1,2の両方にそれぞれ接続されている。管理端末7は、例えば、パーソナルコンピュータや携帯情報端末(携帯電話等を含む)等のように構成されており、監視部7Aを備えている。監視部7Aは、各仮想化ストレージ装置1,2の負荷状態をそれぞれ監視し、その監視結果を端末画面に表示させることができる。
負荷状態としては、例えば、データ入出力頻度(IOPS)、CPU使用率、キャッシュメモリ使用率等を挙げることができる。システム管理者等のユーザは、監視部7Aによる監視結果に基づいて、各仮想化ストレージ装置1,2の負荷状態を把握することができ、ボリュームの配置等を決定することができる。
なお、ユーザの判断過程の少なくとも一部は、コンピュータプログラムによって実現することができ、各仮想化ストレージ装置1,2の負荷状態に基づいて、ボリューム配置を自動的に行うようにすることも可能である。ユーザによるボリューム移管の決定は、管理端末7を介して、各仮想化ストレージ装置1,2に通知される。
次に、本実施形態によるストレージシステムの運用方法について説明する。最も初期の状態では、ストレージシステムには、各外部ストレージ装置3のみが存在している。その後、ユーザは、第1仮想化ストレージ装置1をストレージシステムに導入し、第1仮想化ストレージ装置1によって、各外部ストレージ装置3の有する外部ボリューム3Aを仮想化して、各ホスト4に提供する。その後、例えば、さらにホスト4の台数が増加し、第1仮想化ストレージ装置1の処理性能の上限まで使用されるようになると、ユーザは、第2仮想化ストレージ装置2の導入を決定する。ユーザは、監視部7Aの監視結果に基づいて、第2仮想化ストレージ装置2の導入を決定することができる(S0)。
そこで、ストレージシステムに第2仮想化ストレージ装置2が追加される(S1)。ユーザまたは第2仮想化ストレージ装置2を販売する企業のエンジニアは、第2仮想化ストレージ装置2を上位SAN5及び下位SAN6にそれぞれ接続する(S2A,S2B)。また、第2仮想化ストレージ装置2は、装置間LAN8を介して、第1仮想化ストレージ装置1に接続される(S3)。
次に、第1仮想化ストレージ装置1の有する第1管理テーブル1Bの内容が、第2仮想化ストレージ装置2にコピーされる(S4)。これにより、第2仮想化ストレージ装置2内に第1管理テーブル2Bが生成される。
ユーザは、監視部7Aの監視結果に基づいて、第1仮想化ストレージ装置1から第2仮想化ストレージ装置2へ移管させる外部ボリューム3Aを選択し、ボリュームの移管を指示する(S5)。
管理端末7からの指示に基づいて、第1仮想化ストレージ装置1の有する第2管理テーブル1Cに記憶された属性情報のうち、第2仮想化ストレージ装置2に移管される外部ボリューム3Aに関する属性情報のみが、第1仮想化ストレージ装置1から第2仮想化ストレージ装置2に転送される(S6)。
第2仮想化ストレージ装置2は、第1管理テーブル2B及び第2管理テーブル2Cを使用することにより、管理端末7から指定された外部ボリューム3Aと論理ボリューム2Dとを接続させる(S7)。そして、第2仮想化ストレージ装置2は、論理ボリューム2Dをホスト4に認識させるための情報を設定し、ホスト4は、その論理ボリューム2Dへアクセスするためのパスを設定する(S8)。
ホスト4によって使用されるデータは、実際には、いずれか所定の外部ボリューム3Aに格納されている。ボリュームの移動前において、ホスト4は、第1仮想化ストレージ装置1の論理ボリューム1Dから中間ボリューム1Eを介して、その所定の外部ボリューム3Aにアクセスしている。ホスト4は、そのデータがその所定の外部ボリューム3Aに記憶されていることを全く意識していない。
その所定の外部ボリューム3Aを第1仮想化ストレージ装置1から第2仮想化ストレージ装置2に移管させる場合、第2仮想化ストレージ装置2は、その所定の外部ボリューム3Aを中間ボリューム2Eを介して論理ボリューム2Dに接続させる。ホスト4は、パス情報を修正することにより、その論理ボリューム2Dへアクセスすることができ、これにより、所望のデータを読み書きすることができる。
以上述べたように、本実施形態では、複数の仮想化ストレージ装置1,2により、外部ボリューム3Aを仮想化して使用することができる。そして、各仮想化ストレージ装置1,2の間で、外部ボリューム3Aを移管させることができる。従って、第1仮想化ストレージ装置1と第2仮想化ストレージ装置2とで処理負荷を分散させることができ、ストレージシステムの処理性能を改善することができる。これにより、ストレージサービスへの需要が増大した場合でも、仮想化ストレージ装置を適宜追加するだけで、その増大した需要に対応することができ、使い勝手が向上する。
なお、各仮想化ストレージ装置1,2を共存させる必要は必ずしもなく、例えば、全ての外部ボリューム3Aを第1仮想化ストレージ装置1から第2仮想化ストレージ装置2に移管させた後、第1仮想化ストレージ装置1をストレージシステムから取り外すようにしてもよい。以下、本実施形態をより詳細に説明する。
図2は、本実施例によるストレージシステムの全体概要を示す説明図である。先に図1との対応関係について説明すると、図2中の第1仮想化ストレージ装置100Aは、図1中の第1仮想化ストレージ装置1に対応し、第2仮想化ストレージ装置100Bは、図1中の第2仮想化ストレージ装置2に対応する。同様に、図2中の外部ストレージ装置200は、図1中の外部ストレージ装置3に対応し、図2中のホスト10は、図1中のホスト4に対応し、図2中の管理端末20は、図1中の管理端末7に対応する。図2中の通信ネットワークCN1は、図1中の上位SAN5に対応し、図2中の通信ネットワークCN2は、図1中の下位SAN6に対応し、図2中の通信ネットワークCN3は、図1中の装置間LAN8に対応する。
先にストレージシステムのネットワーク構成について説明すると、各ホスト10は、上位ネットワークCN1を介して、各仮想化ストレージ装置100A,100Bにそれぞれ接続されている。各仮想化ストレージ装置100A,100Bは、下位ネットワークCN2を介して、各外部ストレージ装置200にそれぞれ接続されている。そして、各仮想化ストレージ装置100A,100Bと管理端末20とは、管理用ネットワークCN3を介して接続されている。例えば、通信ネットワークCN1,CN2は、IP_SANまたはFC_SANとして構成することができる。また、例えば、通信ネットワークCN3は、LANとして構成可能である。但し、管理用の通信ネットワークCN3を廃止し、上位ネットワークCN1または下位ネットワークCN2のいずれかまたは両方を用いて、ストレージシステムを管理するための情報を転送するようにしてもよい。
ストレージシステムの概略構成を説明する。ホスト10は、例えば、HBA(Host Bus Adapter)11と、ボリューム管理部12と、アプリケーションプログラム(図中「アプリケーション」と略記)13とを備えて構成することができる。上位ネットワークCN1をIP_SANとして構成する場合、HBA11に代えて、例えば、TCP/IPオフロードエンジンを搭載したLANカードを用いることができる。ボリューム管理部12は、アクセスすべきボリュームへのパス情報等を管理する。
第1仮想化ストレージ装置100Aは、例えば、ホスト接続用インターフェース(図中では、「I/F」と略記)111Tと、コントローラ101Aと、外部ストレージ接続用インターフェース111Eとを備えて構成することができる。なお、第1仮想化ストレージ装置100Aは、後述のように論理ボリューム164を備えているが、階層記憶構造については、図4と共に後述する。
ホスト接続用インターフェース111Tは、上位通信ネットワークCN1を介して、各ホスト10に接続するためのものである。外部ストレージ接続用インターフェース111Eは、下位通信ネットワークCN2を介して、各外部ストレージ装置200に接続するためのものである。
コントローラ101Aは、第1仮想化ストレージ装置100Aの動作を制御するためのものである。コントローラ101Aの詳細はさらに後述するが、コントローラ101Aは、例えば、一つまたは複数のマイクロプロセッサと、メモリ、データ処理回路等を備えて構成できる。コントローラ101Aにより使用される制御メモリ140には、管理テーブルT1A及び属性テーブルT2Aがそれぞれ記憶されている。管理テーブルT1Aは、図1中の第1管理テーブル1Bに対応し、属性テーブルT2Aは、図1中の第2管理テーブル1Cに対応する。これら各管理テーブルT1A,T2Aの詳細はさらに後述する。コントローラ101Aにより使用されるキャッシュメモリ130には、ホスト10から書き込まれたライトデータ等が記憶される。
第2仮想化ストレージ装置100Bは、第1仮想化ストレージ装置100Aと同様に、ホスト接続用インターフェース111Tと、コントローラ101Bと、外部ストレージ接続用インターフェース111Eとを備えて構成することができる。そして、コントローラ101Bにより使用される制御メモリ140には、管理テーブルT1B及び属性テーブルT2Bがそれぞれ記憶されている。
各外部ストレージ装置200は、例えば、コントローラ210と、通信ポート211と、論理ボリューム240とをそれぞれ備えて構成することができる。この論理ボリューム240は、各仮想化ストレージ装置100A,100Bの外部に存在するボリュームであるため、本明細書では、外部ボリュームと呼ぶ場合がある。
管理端末20は、例えば、パーソナルコンピュータやワークステーションあるいは携帯情報端末等として構成されるもので、監視部21を備えている。監視部21は、各仮想化ストレージ装置100A,100Bの負荷状態をそれぞれ取得し、取得した負荷状態を端末画面に表示させる。
なお、図中に示す符号30は、スイッチを示している。図2中では、上位ネットワークCN1のみにスイッチ30を示しているが、下位ネットワークCN2にも一つまたは複数のスイッチを設けることができる。
図3は、各仮想化ストレージ装置100A,100Bのより詳細なハードウェア構成を示す説明図である。第1仮想化ストレージ装置100について説明すると、第1仮想化ストレージ装置100Aは、例えば、複数のチャネルアダプタ(以下、「CHA」)110と、複数のディスクアダプタ(以下、「DKA」)120と、キャッシュメモリ130と、制御メモリ140と、接続制御部150と、記憶部160と、サービスプロセッサ(以下、「SVP」と略記)170とを備えて構成することができる。
各CHA110は、ホスト10との間のデータ通信を行う。各CHA110は、ホスト10と通信を行うための通信インターフェース111Tをそれぞれ少なくとも一つ以上備えることができる。各CHA110は、それぞれCPUやメモリ等を備えたマイクロコンピュータシステムとして構成される。各CHA110は、ホスト10から受信したリードコマンドやライトコマンド等の各種コマンドを解釈して実行する。
各CHA110には、それぞれを識別するためのネットワークアドレス(例えば、IPアドレスやWWN)が割り当てられており、各CHA110は、それぞれが個別にNAS(Network Attached Storage)として振る舞うこともできる。複数のホスト10が存在する場合、各CHA110は、各ホスト10からの要求をそれぞれ個別に受け付けて処理する。各CHA110のうち、所定のCHA110にはホスト10と通信するためのインターフェース(ターゲットポート)111Tが設けられており、別のCHA110には外部ストレージ装置200と通信するためのインターフェース(外部接続ポート)111Eが設けられている。
各DKA120は、記憶部160が有するディスクドライブ161との間でデータ授受を行うものである。各DKA120は、CHA110と同様に、CPUやメモリ等を備えたマイクロコンピュータシステムとして構成される。各DKA120は、例えば、CHA110がホスト10から受信したデータや外部ストレージ装置200から読み出されたデータを、所定のディスクドライブ161に書込むことができる。また、各DKA120は、所定のディスクドライブ161からデータを読み出し、ホスト10または外部ストレージ装置200に送信することもできる。ディスクドライブ161との間でデータ入出力を行う場合、各DKA120は、論理的なアドレスを物理的なアドレスに変換する。
各DKA120は、ディスクドライブ161がRAIDに従って管理されている場合、RAID構成に応じたデータアクセスを行う。例えば、各DKA120は、同一のデータを別々のディスクドライブ群(RAIDグループ)にそれぞれ書き込んだり(RAID1等)、あるいは、パリティ計算を実行し、データ及びパリティをディスクドライブ群に書き込む(RAID5等)。なお、本実施形態では、各仮想化ストレージ装置100A,100Bは、外部ストレージ装置200の有する外部ボリューム240を仮想化して取り込み、それがあたかも自己の内部ボリュームであるかのようにして、ホスト10に提供する。
従って、各仮想化ストレージ装置100A,100Bは、必ずしも記憶部160を備えている必要はない。各仮想化ストレージ装置100A,100Bは、外部ボリューム240を仮想化して利用できるためである。各仮想化ストレージ装置100A,100Bが記憶部160を有さない場合、DKA120は不要となる。なお、いずれか一方の仮想化ストレージ装置が記憶部160を備え、他方の仮想化ストレージ装置が記憶部160を備えないように構成することもできる。
キャッシュメモリ130は、ホスト10または外部ストレージ装置200から受信したデータを記憶する。また、キャッシュメモリ130は、ディスクドライブ161から読み出されたデータを記憶する。後述のように、キャッシュメモリ130の記憶空間を利用して、仮想的な中間記憶デバイス(V-VOL)が構築される。
制御メモリ140には、仮想化ストレージ装置100Aの作動に使用するための各種制御情報等が格納される。また、制御メモリ140には、ワーク領域が設定されるほか、後述する各種テーブル類も格納される。
なお、ディスクドライブ161のいずれか一つあるいは複数を、キャッシュ用のディスクとして使用してもよい。また、キャッシュメモリ130と制御メモリ140とは、それぞれ別々のメモリとして構成することもできるし、同一のメモリの一部の記憶領域をキャッシュ領域として使用し、他の記憶領域を制御領域として使用することもできる。
接続制御部150は、各CHA110,各DKA120,キャッシュメモリ130及び制御メモリ140を相互に接続させる。接続制御部150は、例えば、クロスバスイッチ等として構成可能である。
記憶部160は、複数のディスクドライブ161を備えている。ディスクドライブ161としては、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、磁気テープドライブ、半導体メモリドライブ、光ディスクドライブ等のような各種記憶デバイス及びこれらの均等物を用いることができる。また、例えば、FC(Fibre Channel)ディスクやSATA(Serial AT Attachment)ディスク等のように、異種類のディスクを記憶部160内に混在させることもできる。
サービスプロセッサ(SVP)170は、LAN等の内部ネットワークを介して、各CHA110とそれぞれ接続されている。SVP170は、CHA110を介して、制御メモリ140やDKA120とデータ授受を行うことができる。SVP170は、第1仮想化ストレージ装置100A内の各種情報を採取して、管理端末20に提供する。
第2仮想化ストレージ装置100Bも、第1仮想化ストレージ装置100Aと同様に構成することができるため、その説明を省略する。但し、各仮想化ストレージ装置100A,100Bは、同一の構造である必要はない。
外部ストレージ装置200は、仮想化ストレージ装置100A,100Bとほぼ同様の構成を備えることもできるし、または、各仮想化ストレージ装置100A,100Bよりも簡易な構成でもよい。
ここで、ストレージシステムのネットワーク構成に留意すべきである。上述のように、ホスト10と各仮想化ストレージ装置100A,100Bとを接続する上位ネットワークCN1と、各ストレージ装置100A,100B,200が相互に接続される下位ネットワークCN2とは、それぞれ別々の通信ネットワークとして構成されている。従って、上位ネットワークCN1に直接的な影響を与えることなく、下位ネットワークCN2を用いて大量のデータを転送することができる。
図4を参照する。図4は、ストレージシステムの記憶構造を示す説明図である。まず、仮想化ストレージ装置100A,100Bの構成を、第1仮想化ストレージ装置100Aを例に挙げて説明する。
第1仮想化ストレージ装置100Aの記憶構造は、例えば、物理的記憶階層と論理的記憶階層とに大別することができる。物理的記憶階層は、物理的なディスクであるPDEV(Physical Device)161により構成される。PDEVは、上述したディスクドライブ161に該当する。
論理的記憶階層は、複数の(例えば2種類の)階層から構成可能である。一つの論理的階層は、VDEV(Virtual Device)162と、VDEV162のように扱われる仮想的なVDEV(以下、「V-VOL」とも呼ぶ)163とから構成可能である。他の一つの論理的階層は、LDEV(Logical Device)164から構成することができる。
VDEV162は、例えば、4個1組(3D+1P)、8個1組(7D+1P)等のような所定数のPDEV161をグループ化して構成される。グループに属する各PDEV161がそれぞれ提供する記憶領域が集合して、一つのRAID記憶領域が形成される。このRAID記憶領域がVDEV162となる。
VDEV162が物理的な記憶領域上に構築されるのと対照的に、V-VOL163は、物理的な記憶領域を必要としない仮想的な中間記憶デバイスである。V-VOL163は、物理的な記憶領域に直接関係づけられるものではなく、外部ストレージ装置200のLU(Logical Unit)をマッピングするための受け皿となる。このV-VOL163は、「中間ボリューム」に該当する。
LDEV164は、VDEV162またはV-VOL163上に、それぞれ少なくとも一つ以上設けることができる。LDEV164は、例えば、VDEV162を固定長で分割することにより構成することができる。ホスト10がオープン系ホストの場合、LDEV164がLU165にマッピングされることにより、ホスト10は、LDEV164を一つの物理的なディスクとして認識する。オープン系のホストは、LUN(Logical Unit Number )や論理ブロックアドレスを指定することにより、所望のLDEV164にアクセスする。なお、メインフレーム系ホストの場合は、LDEV164を直接認識する。
LU165は、SCSIの論理ユニットとして認識可能なデバイスである。各LU165は、ターゲットポート111Tを介してホスト10に接続される。各LU165には、少なくとも一つ以上のLDEV164をそれぞれ関連付けることができる。なお、一つのLU165に複数のLDEV164を関連付けることにより、LUサイズを仮想的に拡張することもできる。
CMD(Command Device)166は、ホスト10上で稼働するI/O制御プログラムとストレージ装置100との間で、コマンドやステータスを受け渡すために使用される専用のLUである。
例えば、ホスト10からのコマンドは、CMD166に書き込むことができる。第1仮想化ストレージ装置100は、CMD166に書き込まれたコマンドに応じた処理を実行し、その実行結果をステータスとしてCMD166に書き込む。ホスト10は、CMD166に書き込まれたステータスを読み出して確認し、次に実行すべき処理内容をCMD166に書き込む。このようにして、ホスト10は、CMD166を介して、第1仮想化ストレージ装置100Aに各種の指示を与えることができる。
なお、ホスト10から受信したコマンドを、CMD166に格納することなく、第1仮想化ストレージ装置100Aは直接的に処理することもできる。また、実体のデバイス(LU)を定義せずに、CMDを仮想的なデバイスとして生成し、ホスト10からのコマンドを受け付けて処理するように構成してもよい。即ち、例えば、CHA110は、ホスト10から受信したコマンドを制御メモリ140に書き込み、この制御メモリ140に記憶されたコマンドを、CHA110又はDKA120が処理する。その処理結果は制御メモリ140に書き込まれ、CHA110からホスト10に送信される。
第1仮想化ストレージ装置100Aの有する外部接続用のイニシエータポート(External Port)111Eには、下位ネットワークCN2を介して、外部ストレージ装置200が接続されている。
外部ストレージ装置200は、複数のPDEV220と、PDEV220の提供する記憶領域上に設定されたVDEV230と、VDEV230上に少なくとも一つ以上設定可能なLDEV240とを備えている。そして、各LDEV240は、LU250にそれぞれ関連付けられている。PDEV220は、図3中のディスクドライブ220に該当する。LDEV240は、「他の論理ボリューム」に該当し、図1中の外部ボリューム3Aに対応する。
外部ストレージ装置200のLU250(即ち、LDEV240)は、V-VOL163にマッピングされている。例えば、外部ストレージ装置200の「LDEV1」,「LDEV2」は、外部ストレージ装置200の「LU1」,「LU2」を介して、第1仮想化ストレージ装置100Aの「V-VOL1」,「V-VOL2」にそれぞれ関連づけられている。「V-VOL1」,「V-VOL2」は、それぞれ「LDEV3」,「LDEV4」に関連づけられており、ホスト10は、これらのボリュームを、「LU3」,「LU4」を介して、利用可能となっている。
なお、VDEV162,V-VOL163には、RAID構成を適用できる。即ち、一つのディスクドライブ161を複数のVDEV162,V-VOL163に割り当てることもできるし(スライシング)、複数のディスクドライブ161から一つのVDEV162,V-VOL163を形成することもできる(ストライピング)。
第2仮想化ストレージ装置100Bも、第1仮想化ストレージ装置100Aと同様の階層記憶構造を備えることができるため、その説明を省略する。
図5は、第1仮想化ストレージ装置100Aにより使用される管理テーブルT1A及び属性テーブルT2Aの概略構成を示す説明図である。これら各テーブルT1A,T2Aは、制御メモリ140に記憶させることができる。
管理テーブルT1Aは、ストレージシステム内に分散された各外部ボリューム240を統一的に管理するために使用される。管理テーブルT1Aは、例えば、各外部ボリューム240に接続するためのネットワークアドレス(WWN:World Wide Name)と、各外部ボリューム240の番号(LUN:Logical Unit Number)と、各外部ボリューム240のボリュームサイズと、外部ボリューム番号と、オーナー権情報と、移行状態フラグとを、それぞれ対応付けることにより、構成することができる。
ここで、外部ボリューム番号とは、各外部ボリューム240をストレージシステム内で一意に特定するための識別情報である。オーナー権情報とは、その外部ボリュームを使用する権限のある仮想化ストレージ装置を特定するための情報である。オーナー権情報に「0」がセットされている場合、その外部ボリューム240は未使用であることを示す。オーナー権情報に「1」がセットされている場合、その外部ボリューム240は、自機が使用権限を有することを意味する。また、オーナー権情報に「−1」がセットされている場合、その外部ボリューム240は、他方の仮想化ストレージ装置が使用権限を有することを示す。
具体的には、第1仮想化ストレージ装置100Aにより使用される管理テーブルT1Aにおいて、オーナー権情報に「1」がセットされている外部ボリューム240は、第1仮想化ストレージ装置100Aが使用権限を有する。同様に、管理テーブルT1Aにおいて、オーナー権情報に「−1」がセットされている外部ボリューム240は、第2仮想化ストレージ装置100Bが使用権限を有する。このように、ある外部ボリューム240について、一方の管理テーブル中のオーナー権情報が「1」にセットされている場合、他方の管理テーブル中では、その外部ボリュームのオーナー権情報が「−1」にセットされることになる。オーナー権情報を参照することにより、その外部ボリュームがいずれの仮想化ストレージ装置の管理下にあるか、あるいは未使用ボリュームであるか否かを知ることができる。
なお、本実施形態では、2つの仮想化ストレージ装置100A,100Bのみを示すため、「1」または「−1」のいずれかをオーナー権情報にセットすることにより、その外部ボリューム240の所属先を特定できる。これに限らず、もしも、ストレージシステム内に3つ以上の仮想化ストレージ装置が存在する場合は、オーナー権情報として、例えば、各仮想化ストレージ装置に割り振られた筐体番号をセットすることもできる。即ち、ストレージシステム内で各仮想化ストレージ装置を一意に特定可能な識別情報を、オーナー権情報として用いることもできる。
移行状態フラグは、その外部ボリューム240が一方の仮想化ストレージ装置から他方の仮想化ストレージ装置に移行中であることを示す情報である。移行状態フラグに「1」がセットされている場合、その外部ボリューム240についてオーナー権の変更が行われている最中であることを示す。これに対し、移行状態フラグに「0」がセットされている場合、その外部ボリューム240は、通常状態にあり、オーナー権の変更が行われていないことを示す。
属性テーブルT2Aは、各外部ボリューム240の各種属性情報を管理するためのテーブルである。属性テーブルT2Aは、例えば、各外部ボリューム240のLU番号と、パス定義情報と、レプリケーション構成情報と、レプリケーションステータス情報と、レプリケーションビットマップ情報とを対応付けることにより、構成することができる。
パス定義情報とは、その外部ボリューム240に接続される論理ボリューム164を、どのCHA110のどのポートを介して、ホスト10にアクセスさせるかを示すための情報である。パス定義情報には、複数のパスを設定することができる。一方のパスは、通常使用されるプライマリパスであり、他方のパスは、プライマリパスに障害が発生した場合等に使用されるオルタネイトパスである。
レプリケーション構成情報は、コピーペアを構成しているボリュームの対応関係を示す情報である。レプリケーション構成情報に「P」がセットされているボリュームは、プライマリボリューム(コピー元ボリューム)であることを示し、レプリケーション構成情報に「S」がセットされているボリュームは、セカンダリボリューム(コピー先ボリューム)であることを示す。なお、「P」及び「S」に添えられている数字は、各コピーペアを識別するための追い番である。
レプリケーションステータス情報は、コピーペアを構成する各ボリュームのステータスを示す情報である。レプリケーションステータス情報に「Pair」がセットされている場合、そのボリュームは、相手方のボリュームと同期しており、コピーペアを形成する各ボリュームが同一の記憶内容を維持し続けることを示す。レプリケーションステータス情報に「Resync」がセットされている場合、そのボリュームと相手方のボリュームとが再同期中であることを示す。レプリケーションステータス情報に「Simplex」がセットされている場合、そのボリュームはレプリケーションの対象になっていないことを示す。レプリケーションステータス情報に「Suspend」がセットされている場合、そのボリュームの相手方のボリュームでは更新されていないことを示す。
レプリケーションビットマップ情報は、そのボリュームにおいてデータが更新された位置を示す情報である。例えば、データが更新されたか否かを示すフラグが各セグメント毎に用意されており、フラグに「1」がセットされているセグメントでは、そのデータが更新されたことを意味する。例えば、ボリュームサイズが1TBの論理ボリューム164について、1MBのセグメントサイズで、データ更新の有無を管理しようとする場合、レプリケーションビットマップ情報のサイズは、128KBとなる。第1仮想化ストレージ装置100Aが、n個の論理ボリューム164を設定可能である場合、レプリケーションビットマップ情報の合計サイズは、n×128KBとなる。nが16384の場合、レプリケーションビットマップ情報の合計サイズは、16384×128KB=2048MBとなる。
このように、レプリケーションビットマップ情報だけに着目しても、属性テーブルT2Aのテーブルサイズは、膨大なものとなる。従って、この属性テーブルT2Aの全体を、第2仮想化ストレージ装置100Bに移行させるとなると、第2仮想化ストレージ装置100Bの制御メモリ140が圧迫される。そこで、本実施形態では、属性テーブルT2Aに記憶された情報のうち、第2仮想化ストレージ装置100Bに移管されるボリュームに関する情報だけを、第2仮想化ストレージ装置100Bに転送させる。つまり、必要な範囲内で、属性情報を転送する。これにより、転送すべきデータ量を少なくして、属性テーブルの構築時間を短縮することができ、また、転送先である第2仮想化ストレージ装置100Bのメモリ資源(制御メモリ140)が圧迫されるのを防止できる。
なお、上述の項目以外に、例えば、デバイスタイプ(ディスクデバイスかテープデバイスか等)、ベンダ名、各ストレージ装置の識別番号等の情報を管理可能である。これらの情報は、管理テーブルT1Aまたは属性テーブルT2Aのいずれかで管理させることができる。
図6は、第2仮想化ストレージ装置100Bにより使用される管理テーブルT1B及び属性テーブルT2Bの概略構成を示す説明図である。管理テーブルT1Bは、上述した管理テーブルT1Aと同様に、例えば、WWN等のネットワークアドレスと、LU番号と、ボリュームサイズと、外部ボリューム番号と、オーナー権情報と、移行状態フラグとを、対応づけることにより構成されている。管理テーブルT1Aと管理テーブルT1Bとは、オーナー権情報を除いて同一の構成である。
属性テーブルT2Bも、上述した属性テーブルT2Aと同様に、LU番号と、パス定義情報と、レプリケーション構成情報と、レプリケーションステータス情報と、レプリケーションビットマップ情報とを、対応付けることにより構成されている。但し、上述のように、第2仮想化ストレージ装置100Bのメモリ資源を有効に利用するべく、第2仮想化ストレージ装置100Bの管理下にあるボリュームの属性情報のみが、管理テーブルT2Bに登録されている点に留意すべきである。
図7は、ホスト10のボリューム管理部12により使用されるパス設定情報T3の概略構成等を示す説明図である。このパス設定情報T3は、ホスト10のメモリまたはローカルディスク内に記憶させることができる。
パス設定情報T3には、通常時に使用するためのプライマリパスに関する情報と、異常時等に使用するためのオルタネイトパスに関する情報とが記載されている。各パスは、例えば、使用するHBA11を特定するための情報と、アクセス先のポート番号と、アクセス対象のボリュームを識別するためのLU番号とを含んで構成される。
パス設定情報T3には、複数のオルタネイトパスが記載されているが、最初に記載されているオルタネイトパスは、通常のオルタネイトパスであり、次に記載されているオルタネイトパスは、本実施形態に特有のパスである。つまり、2番目のオルタネイトパスは、第1仮想化ストレージ装置100Aから第2仮想化ストレージ装置100Bにボリュームを移管させる場合に、設定されるパスである。
図7中の下側には、プライマリパスからオルタネイトパスに切り替えられる様子が模式的に示されている。ここでは、第1仮想化ストレージ装置100Aから第2仮想化ストレージ装置100Bに、「#0」のボリューム240が移管されたものとして説明する。
移管前において、ホスト10は、図中太線で示すように、HBA#0からPort#0にアクセスすることにより、第1仮想化ストレージ装置100Aの論理ボリュームに対してデータを読み書きする。第1仮想化ストレージ装置100A内では、ホスト10からのアクセスに基づいて、Port#1から外部ボリューム240にアクセスする。
ボリュームを移管させる場合、移管されたボリュームにホスト10がアクセスするための情報が、2番目のオルタネイトパスとして、パス設定情報T3に追加される。そして、第1仮想化ストレージ装置100Aは、移管されたボリュームについてのアクセス要求を拒否する。
従って、ホスト10が図中太線で示すプライマリパスを介して、移管されたボリュームにアクセスしようとしても、第1仮想化ストレージ装置100Aにより拒否される。そこで、ホスト10は、図中点線で示す第1のオルタネイトパス(HBA#1→Port#2→LU#0)に切り替えて、再度アクセスを試みる。しかし、このアクセスも第1仮想化ストレージ装置100Aにより拒否される。
そこで、ホスト10は、図中一点鎖線で示す第2のオルタネイトパス(HBA#1→Port#4→LU#0)に切り替え、ボリュームへのアクセスを試みる。第2のオルタネイトパスは、ボリューム移管先である第2仮想化ストレージ装置100Bへのパスである。第2仮想化ストレージ装置100Bは、ホスト10からのアクセス要求を処理可能な状況である場合、そのアクセス要求を処理し、処理結果をホスト10に返す。アクセス要求を処理可能な状況とは、ホスト10からのアクセス要求を処理しても、ボリュームに記憶されているデータに不整合等を生じない状況である。これについては、さらに後述する。
このように、ホスト10は、プライマリパスでのアクセスに失敗すると、第1のオルタネイトパスに切り替え、第1のオルタネイトパスでのアクセスに失敗すると、第2のオルタネイトパスに切り替える。従って、ホスト10のアクセス要求が受け付けられるまで、多少の時間(パス切替時間)を必要とする。しかし、このパス切替時間は、無駄な時間になるわけではない。後述のように、パス切替時間内に、移管されるボリュームへのディステージ処理を行うことができるためである。本実施形態では、ホスト10に記憶されるパス設定情報T3に新たなパスを追加するだけで、ホスト10のアクセス先を切り替えることができる。
図8は、ストレージシステム内に存在する外部ボリュームを探索して、管理テーブルT1Aに登録するための処理の概略を示すフローチャートである。ここでは、第1仮想化ストレージ装置100Aが実行する場合を例に挙げて説明する。
まず、第1仮想化ストレージ装置100Aは、各外部ストレージ装置200に向けて、その存在を確認するためのコマンド(”Test Unit Ready”)を発行する(S11)。正常に動作している各外部ストレージ装置200は、このコマンドへの返信として、Goodステータスを有するReady応答を返す(S12)。
次に、第1仮想化ストレージ装置100Aは、その存在が確認された各外部ストレージ装置200に向けて、”Inquiry”コマンドを発行する(S13)。このコマンドを受信した各外部ストレージ装置200は、例えば、デバイスタイプ等の情報を第1仮想化ストレージ装置100Aに送信する(S14)。
第1仮想化ストレージ装置100Aは、各外部ストレージ装置200に、”Read Capacity”コマンドを発行する(S15)。各外部ストレージ装置200は、外部ボリューム240のサイズを第1仮想化ストレージ装置100Aに送信する(S16)。
第1仮想化ストレージ装置100Aは、”Report LUN”コマンドを各外部ストレージ装置200に送信する(S17)。各外部ストレージ装置200は、LUN数やLUN番号を第1仮想化ストレージ装置100Aに送信する(S18)。
第1仮想化ストレージ装置100Aは、各外部ストレージ装置200から取得した情報を、管理テーブルT1A及び属性テーブルT2Aにそれぞれ登録する。このようにして、第1仮想化ストレージ装置100Aは、複数の問合せコマンドを発行することにより、管理テーブルT1A及び属性テーブルT2Aをそれぞれ構築することができる。
なお、いずれかの外部ストレージ装置200が撤去されたり、新しい外部ストレージ装置200が追加等されて、ストレージシステムの構成が変化する場合もある。ストレージシステムの構成が変化した場合、例えば、RSCN(Registered State Change Notification)や、LIP(Loop Initialization Primitive)、SCR(State Change Registration)やSCN(State Change Notification)等のコマンドや通知に基づいて、第1仮想化ストレージ装置100Aは、構成が変化したことを検出することができる。なお、上記の処理は、第2仮想化ストレージ装置100Bで実行させることもできる。
次に、仮想化ストレージ装置100A,100Bが外部ボリューム240を利用して、ホスト10からのアクセス要求を処理する方法を説明する。ここでは、第1仮想化ストレージ装置100Aがアクセス要求を処理する場合を例に挙げるが、第2仮想化ストレージ装置100Bでも同様の処理を行うことができる。まず、ライトコマンドの処理方法を説明する。ライトコマンドを処理する方法としては、同期転送モードと非同期転送モードとの2種類を挙げることができる。
同期転送モードの場合は、ホスト10からのライトコマンドを第1仮想化ストレージ装置100Aが受信すると、第1仮想化ストレージ装置100Aは、ホスト10から受信したライトデータをキャッシュメモリ130に記憶させた後、通信ネットワークCN2を経由して、外部ストレージ装置200にライトデータを転送する。外部ストレージ装置200は、ライトデータを受信してキャッシュメモリに記憶すると、応答信号を第1仮想化ストレージ装置100Aに送信する。第1仮想化ストレージ装置100Aは、外部ストレージ装置200からの応答信号を受信すると、書込み完了報告をホスト10に送信する。
このように、同期転送モードでは、外部ストレージ装置200へライトデータを転送した後で、ライトコマンドの処理完了をホスト10に通知する。従って、同期転送モードでは、外部ストレージ装置200からの応答を待つ時間だけ遅延が生じる。このため、同期転送モードは、第1仮想化ストレージ装置100Aと外部ストレージ装置200との距離が比較的短距離である場合に適している。逆に、第1仮想化ストレージ装置100Aと外部ストレージ装置200とが遠く離れている場合は、応答遅延や伝播遅延の問題から、一般的に同期転送モードは適さない。
これに対し、非同期転送モードの場合、第1仮想化ストレージ装置100Aは、ホスト10からのライトコマンドを受信すると、ライトデータをキャッシュメモリ130に記憶させた後、直ちにホスト10に書込み完了報告を行う。第1仮想化ストレージ装置100Aは、ホスト10へ書込み完了報告を行った後で、外部ストレージ装置200にライトデータを転送する。ホスト10への書込み完了報告と外部ストレージ装置200へのデータ転送とは、非同期で行われる。従って、非同期転送モードの場合は、第1仮想化ストレージ装置100Aと外部ストレージ装置200との距離とは無関係に、速やかに書込み完了報告をホスト10に送信できる。このため、非同期転送モードは、第1仮想化ストレージ装置100Aと外部ストレージ装置200とが比較的遠距離の場合に適している。
図9は、非同期転送モードの場合を示す説明図である。図9及び図10では、仮想化ストレージ装置100A,100Bの両者を区別せずに、「仮想化ストレージ装置100」と呼ぶ。また、管理テーブルT1A,T1Bの両者を区別せずに、「管理テーブルT1」と呼ぶ。
ホスト10は、仮想化ストレージ装置100の所定のLU165に、ライトコマンドを発行する(S31)。LU165は、V-VOL163を介して、外部ストレージ装置200のLU250に関連づけられている。仮想化ストレージ装置100のLU165は、ホスト10からのアクセス対象であるが、実際にデータを記憶しているのは外部LU250である。従って、例えば、LU165を「アクセス先論理記憶デバイス」と、LU250を「データ格納先論理記憶デバイス」と、それぞれ呼ぶこともできる。
仮想化ストレージ装置100は、ホスト10からのライトコマンドを受信すると、そのライトコマンドが対象としているLUを特定し、管理テーブルT1を参照して、そのLUが外部ボリュームに関連づけられているか否かを判定する。外部ボリュームに関連づけられているLUへのライトコマンドである場合、仮想化ストレージ装置100は、その外部ボリュームを有する外部ストレージ装置200に、ライトコマンドを送信する(S32)。
ライトコマンドの発行後に、ホスト10は、LU165を書込み対象とするライトデータを、仮想化ストレージ装置100に送信する(S33)。仮想化ストレージ装置100は、ホスト10から受信したライトデータをキャッシュメモリ130に一時記憶させる(S34)。仮想化ストレージ装置100は、ライトデータをキャッシュメモリ130に記憶させると、ホスト10に書込み完了を報告する(S35)。
仮想化ストレージ装置100は、アドレス変換等を行ってから、キャッシュメモリ130に記憶されたライトデータを外部ストレージ装置200に送信する(S36)。外部ストレージ装置200は、仮想化ストレージ装置100から受信したライトデータを、キャッシュメモリに記憶させる。そして、外部ストレージ装置200は、仮想化ストレージ装置100に、書込み完了を報告する(S37)。外部ストレージ装置200は、例えば、I/O等の少ない時期を見計らって、キャッシュメモリに記憶されたライトデータを記憶デバイス220に書き込む(ディステージ処理)。非同期転送モードでは、ホスト10からライトデータを受信した後、短い応答時間δ1で、ホスト10へ書込み完了を応答することができる。
図10は、同期転送モードの場合を示す。ホスト10から発行されたライトコマンドを受信すると(S41)、仮想化ストレージ装置100は、そのライトコマンドのアクセス先ボリューム(LU165)に関連づけられている外部ボリューム(LU250)を特定し、その外部ボリュームに向けてライトコマンドを発行する(S42)。
仮想化ストレージ装置100は、ホスト10からのライトデータを受信すると(S43)、このライトデータをキャッシュメモリ130に記憶させる(S44)。仮想化ストレージ装置100は、キャッシュメモリ130に記憶されたライトデータを、外部ボリュームに書き込ませるべく、外部ストレージ装置200に転送する(S45)。外部ストレージ装置200は、ライトデータをキャッシュメモリに記憶させた後で、仮想化ストレージ装置100に書込み完了を報告する(S46)。仮想化ストレージ装置100は、外部ストレージ装置200での書込み完了を確認すると、ホスト10に書込み完了を報告する(S47)。同期転送モードでは、外部ストレージ装置200での処理を待ってから、ホスト10に書込み完了を報告するため、応答時間δ2が長くなる。同期転送モードの応答時間δ2は、非同期転送モードの応答時間δ1よりも長い(δ2≧δ1)。
以上のように、各仮想化ストレージ装置100A,100Bは、外部ストレージ装置200の有する外部ボリューム240を仮想的な内部ボリュームのように取り込んで利用することができる。
次に、第1仮想化ストレージ装置100Aが利用している外部ボリューム240を、第2仮想化ストレージ装置100Bに移管させるための方法を説明する。なお、第2仮想化ストレージ装置100Bから第1仮想化ストレージ装置100Aに外部ボリューム240を移管させることもできる。
図11は、ボリュームの移行(移管)を各仮想化ストレージ装置100A,100Bに指示するための処理を示すフローチャートである。
例えば、ユーザが管理端末20に指示を与えると、監視部21は、第1仮想化ストレージ装置100Aから性能情報を取得する(S51)。監視部21は、管理端末20の端末画面に、この取得した性能情報を表示させる(S52)。この性能情報は、「負荷状態」を示す情報に対応し、例えば、データ入出力頻度(IOPS)、CPU使用率、キャッシュメモリ使用率等が含まれる。
ユーザは、管理端末20の画面に表示された性能情報に基づいて、高負荷になっているCPUが存在するか否かを発見する(S53)。このCPUとは、CHA110に内蔵されているCPUを示す。次に、ユーザは、他のCHA110のCPUが全て所定値以上の負荷であることを確認する(S54)。
そして、ユーザは、高負荷となっているCHA110の負担を軽減させるべく、そのCHA110の管理下にある外部ボリューム240の移行を決定する(S55)。続いて、ユーザは、移行先のパスを設定する(S56)。即ち、ユーザは、移行先である第2仮想化ストレージ装置100Bにおいて、どのポートを介してホスト10にアクセスさせるかのパス情報を定義する(S56)。定義されたパス情報は、ホスト10に追加される。最後に、ユーザは、その外部ボリューム240の移行を各仮想化ストレージ装置100A,100Bに指示する(S57)。
つまり、ユーザは、監視部21による監視結果に基づいて(S51,S52)、移行元(切替元)である第1仮想化ストレージ装置100Aにおいてボトルネックとなっている外部ボリュームを特定し(S53〜S55)、移行先のパスを定義して移行の開始を指示する(S56,S57)。以上の処理を全て自動的に行うことも可能である。
図12は、監視部21による監視結果を示す画面例を示す説明図である。監視部21は、各仮想化ストレージ装置100A,100Bからそれぞれ性能情報を取得して、これら各性能情報を統計処理したり図表化して、表示させることができる。
選択部G11では、ストレージシステム内の各種リソースのうち、いずれのリソースについて負荷状態を表示させるかを選択することができる。ここで、リソースとしては、例えば、「ネットワーク」、「ストレージ」、「スイッチ」等を挙げることができる。
ユーザが「ストレージ」を選択した場合、各仮想化ストレージ装置100A,100Bのいずれかをさらに選択することができる。また、ユーザは、各仮想化ストレージ装置100A,100Bのいずれかを選択した場合、さらに詳細な選択が可能である。詳細な選択としては、「ポート」や「LU」を挙げることができる。このようにして、ユーザは、負荷状態の確認を希望する対象を細かく選択することができる。
例えば、第1表示部G12では、仮想化ストレージ装置100A,100Bのうち、選択された仮想化ストレージ装置の全体状況を一覧表示させることができる。第2表示部G13では、例えば、「ポート」や「LU」等のような、より詳細な監視対象の状況を表示させることができる。また、第3表示部G13では、負荷状態をグラフ化して表示させることができる。
ユーザは、図12に示すような性能監視画面に基づいて、どの仮想化ストレージ装置のどの部分がボトルネックとなっているか否かを比較的容易に判断することができる。そして、ユーザは、その判断に基づいて、移動させるボリュームを決定できる。
図13は、第1仮想化ストレージ装置100Aが稼働中である状況下において、第2仮想化ストレージ装置100Bをストレージシステムに新たに追加し、第1仮想化ストレージ装置100Aから第2仮想化ストレージ装置100Bに一つまたは複数のボリュームを移動させる様子を示すフローチャートである。なお、図13等では、第1仮想化ストレージ装置100Aを「第1ストレージ」と、第2仮想化ストレージ装置100Bを「第2ストレージ」と、それぞれ略記する。
ユーザは、図11,図12と共に述べたような方法で、第1仮想化ストレージ装置100Aの負荷状態を把握することができる。この結果、ユーザは、第2仮想化ストレージ装置100Bの追加投入を決定することができる。
まず最初に、ユーザやベンダのエンジニアは、新たに導入された第2仮想化ストレージ装置100Bの物理的な接続作業を行う(S61)。具体的には、第2仮想化ストレージ装置100Bのホスト接続用インターフェース111Tを上位ネットワークCN1に接続し、また、第2仮想化ストレージ装置100Bの外部ストレージ接続用インターフェース111Eを下位ネットワークCN2に接続し、さらに、第2仮想化ストレージ装置100BのSVP170をネットワークCN3に接続させる。
次に、第2仮想化ストレージ装置100Bは、第1仮想化ストレージ装置100Aから管理テーブルT1Aの記憶内容を取得する(S62)。この取得した内容に基づいて、第2仮想化ストレージ装置100Bは、管理テーブルT1Bを生成する。第2仮想化ストレージ装置100Bは、管理テーブルT1Bに基づいて、ストレージシステム内の外部ボリューム240をそれぞれ検出する(S63)。
ユーザが管理端末20からボリューム移行(ボリューム移管)の指示を与えると(S64)、第2仮想化ストレージ装置100Bは、指示された外部ボリューム240をインターフェース111Eを介してV-VOL163に接続させる(S65)。
外部接続の詳細は、図17に示されている。そこで、先に図17を参照する。第2仮想化ストレージ装置100Bは、移行元のストレージ装置、即ち第1仮想化ストレージ装置100Aから移行対象のボリュームに関する属性情報を取得する(S151)。第2仮想化ストレージ装置100Bは、所得した属性情報のうちパス定義情報以外の属性情報を、属性テーブルT2Bに登録させる(S152)。第2仮想化ストレージ装置100Bは、移行対象のボリュームについて、改めてパス定義情報を設定する(S153)。
ここで、ユーザは、ホスト10からアクセスされる論理ボリューム164を移行対象として選択する。選択された論理ボリューム164が外部ボリューム240に接続されている場合、結果的に、その論理ボリューム164に接続されている外部ボリューム240が、移行先ストレージ装置(100B)の別の論理ボリューム164に接続し直されることになる。このようにして、仮想化ストレージ装置100A,100Bは、外部ボリューム240をV-VOL163を介して論理ボリューム164に接続し、自己の内部記憶デバイスであるかのように使用することができる。
図13に戻る。ホスト10のボリューム管理部12は、移行されるボリュームにアクセスするためのパス情報をパス設定情報T3に追加する(S66)。即ち、第2仮想化ストレージ装置100Bの所定のポートを介して、外部ボリューム240に接続された論理ボリューム164にアクセスするためのパス情報が設定される。
第1仮想化ストレージ装置100Aは、移行対象として指定された外部ボリューム240について、オーナー権を設定する(S67)。つまり、移行対象のボリュームについて、オーナー権情報に「−1」がセットされる。第1仮想化ストレージ装置100Aは、設定されたオーナー権情報を第2仮想化ストレージ装置100Bに通知する(S68)。
第2仮想化ストレージ装置100Bは、第1仮想化ストレージ装置100Aからオーナー権情報を取得すると(S69)、取得したオーナー権情報を管理テーブルT1Bに登録させる(S70)。ここでは、オーナー権情報の値が「1」に変更された上で、管理テーブルT1Bに登録される。移行対象ボリュームの使用権限は、第2仮想化ストレージ装置100Bに移されたためである。第2仮想化ストレージ装置100Bは、オーナー権情報の登録が完了した旨を、第1仮想化ストレージ装置100Aに報告する(S71)。第1仮想化ストレージ装置100Aは、第2仮想化ストレージ装置100Bからオーナー権情報の設定完了報告を受領する(S72)。
移行対象ボリュームに関するアクセス要求が、ホスト10から発行された場合(S73)、第1仮想化ストレージ装置100Aは、そのアクセス要求を処理せずにディステージ処理を開始する(S74)。移行完了前における移行元でのアクセス処理については、図14と共に後述する。第2仮想化ストレージ装置100Bは、第1仮想化ストレージ装置100Aからディステージ処理が完了した旨の通知を受領する(S75)。
ところで、ホスト10は、第1仮想化ストレージ装置100Aに向けて発行したコマンドの処理が拒否されると、パス設定情報T3を参照し、別のパスに切り替えて(S76)、再びコマンドを発行する(S77)。ここでは、説明の便宜上、第1仮想化ストレージ装置100Aを経由するプライマリパスから、第2仮想化ストレージ装置100Bを経由する第2オルタネイトパスに切り替えられたものとする。
第2仮想化ストレージ装置100Bは、ホスト10からのコマンドを受領すると、アクセス処理を行う(S78)。もしも、コマンドを受領した時点で、移行対象ボリュームに関するディステージ処理が完了している場合は、通常のアクセス処理を行うが、ディステージ処理が完了していなければ、別のアクセス処理が行われる。この移行完了前における移行先でのアクセス処理については、図15と共に後述する。なお、図13に示す流れは一例であって、実際には、ステップの順序が異なる場合もある。
図14は、図13中のS74の詳細を示すフローチャートである。移行元ストレージ装置である第1仮想化ストレージ装置100Aは、ホスト10からのコマンドを受信すると(S81:YES)、そのコマンドのアクセス対象を解析する。第1仮想化ストレージ装置100Aは、自己が使用権限を有する外部ボリューム240に接続された論理ボリューム164をアクセス対象とするコマンドであるか否かを判定する(S82)。つまり、第1仮想化ストレージ装置100Aは、自分がオーナー権を有する外部ボリューム240に関するアクセス要求であるか否かを判定する。
第1仮想化ストレージ装置100Aは、使用権限を有さない外部ボリューム240、即ち、オーナー権情報に「−1」がセットされている外部ボリューム240に接続された論理ボリューム164へのアクセスであると判定した場合(S82:NO)、ホスト10からのコマンド処理を拒絶する(S83)。コマンド処理の拒絶は、例えば、所定時間以上何も応答しないことによって(消極的拒絶)、あるいは、処理不能であることをホスト10に通知することによって(積極的拒絶)、行うことができる。
第1仮想化ストレージ装置100Aは、ホスト10からアクセスを要求された外部ボリューム240について、ダーティデータのディステージ処理を開始する(S84)。そして、第1仮想化ストレージ装置100Aは、ディステージ処理が完了した場合(S85:YES)、この旨を第2仮想化ストレージ装置100Bに通知する(S86)。
より詳細に説明する。ホスト10のアクセス対象は、第1仮想化ストレージ装置100Aの論理ボリューム164である。この論理ボリューム164は、移行対象として選択されている。そして、この論理ボリューム164は、外部ストレージ装置200の論理ボリューム240に接続されている。
ここで、第1仮想化ストレージ装置100Aは、非同期転送モードでライトコマンドを処理している。従って、第1仮想化ストレージ装置100Aは、ホスト10から受信したライトデータをキャッシュメモリ130に記憶させた時点で、ホスト10に書込み完了を報告する。キャッシュメモリ130に記憶されたライトデータは、所定のタイミングで外部ストレージ装置200に転送され、外部ボリューム240に反映される。
ライトデータが外部ボリューム240に書き込まれる前の段階では、第1仮想化ストレージ装置100Aのキャッシュメモリ130に記憶されているデータと、外部ボリューム240に記憶されているデータとは相違している。キャッシュメモリ130には、あるセグメントまたはセグメント群についての更新データが記憶されており、外部ボリューム240には、同一のセグメントまたはセグメント群について、更新前の古いデータが記憶されている。このように、外部ボリューム240に反映されておらず、キャッシュメモリ130の記憶内容と外部ボリューム240の記憶内容とが一致しないデータを、ダーティデータと呼ぶ。なお、ライトデータが外部ボリューム240に書き込まれて、キャッシュメモリ130の記憶内容と外部ボリューム240の記憶内容とが一致するデータを、クリーンデータと呼ぶ。第1仮想化ストレージ装置100Aのキャッシュメモリ130に記憶されているダーティデータを外部ボリューム240に書き込んで、反映させる処理をディステージ処理と呼ぶ。
本実施形態では、ボリューム移行の前後でデータの整合性を維持するために、オーナー権が変更された場合、移行元である第1仮想化ストレージ装置100Aは、ホスト10からのアクセス要求を処理せず、ディステージ処理を行う。
ところで、ホスト10からのアクセス対象が、移行対象以外の論理ボリューム164である場合(S82:YES)、第1仮想化ストレージ装置100Aは、コマンドタイプを識別して(S87)、通常のアクセス処理を行う。
ライトコマンドの場合、第1仮想化ストレージ装置100Aは、ホスト10から受信したライトデータをキャッシュメモリ130に記憶して(S88)、書込み完了をホスト10に通知する(S89)。次に、所定のタイミングを見計らって、第1仮想化ストレージ装置100Aは、管理テーブルT1Aを参照して、外部ボリューム240へのパスを確認し(S90)、ライトデータを外部ボリューム240に転送する(S91)。
リードコマンドの場合、第1仮想化ストレージ装置100Aは、ホスト10から要求されたデータを外部ボリューム240から読出し(S92)、このデータをホスト10に転送する(S93)。なお、外部ボリューム240からデータを読み出す場合、管理テーブルT1Aが参照される。また、ホスト10から要求されたデータが、既にキャッシュメモリ130上に存在する場合(ステージング済の場合)、第1仮想化ストレージ装置100Aは、外部ボリューム240にアクセスすることなく、キャッシュメモリ130に記憶されているデータをホスト10に転送する。
図15は、図13中のS78の詳細を示すフローチャートである。移行先となる第2仮想化ストレージ装置100Bは、ホスト10からコマンドを受信すると(S101:YES)、そのコマンドのアクセス対象を解析する。第2仮想化ストレージ装置100Bは、ホスト10のアクセス対象が、第2仮想化ストレージ装置100Bの管理下にある外部ボリューム240に接続された論理ボリューム164であるか否かを判定する(S102)。つまり、第2仮想化ストレージ装置100Bは、自分がオーナー権を有する外部ボリューム240に関するアクセス要求であるか否かを判定する。
第2仮想化ストレージ装置100Bは、自分がオーナー権を有しているボリュームに関するアクセス要求であると判定した場合(S102:YES)、その論理ボリューム164に接続された外部ボリューム240について、第1仮想化ストレージ装置100Aによるディステージ処理が完了しているか否かを判定する(S103)。即ち、第2仮想化ストレージ装置100Bは、そのボリュームに関して、第1仮想化ストレージ装置100Aからディステージ完了通知を取得しているか否かを判定する。
ホスト10のアクセス対象に関して第2仮想化ストレージ装置100Bがオーナー権を有していない場合(S102:NO)、または、第2仮想化ストレージ装置100Bがオーナー権を保有しているが、移行元でのディステージ処理が完了していない場合(S103:NO)のいずれかである場合、第2仮想化ストレージ装置100Bは、コマンド処理を拒絶する(S104)。移行対象のボリュームについてデータの整合性を維持するためである。
これに対し、ホスト10からのアクセス対象ボリュームに関して、第2仮想化ストレージ装置100Bがオーナー権を保有しており(S102:YES)、かつ、そのボリュームに関して移行先でのディステージ処理が完了している場合(S103:YES)、第2仮想化ストレージ装置100Bは、通常のアクセス処理を行うことができる。第2仮想化ストレージ装置100Bによる通常のアクセス処理は、第1仮想化ストレージ装置100Aによる通常のアクセス処理と同様である。
即ち、第2仮想化ストレージ装置100Bは、ホスト10から受領したコマンドのタイプを判別する(S105)。ライトコマンドの場合、第2仮想化ストレージ装置100Bは、ホスト10から受信したライトデータをキャッシュメモリ130に記憶させた後(S106)、書込み完了をホスト10に通知する(S107)。そして、第2仮想化ストレージ装置100Bは、管理テーブルT1Bを参照して外部ボリューム240へのパスを確認し(S108)、キャッシュメモリ130に記憶されたライトデータを外部ボリュームに転送して書き込ませる(S109)。
リードコマンドの場合、第2仮想化ストレージ装置100Bは、ホスト10から要求されたデータを外部ボリューム240(またはキャッシュメモリ130)から読み出して(S110)、このデータをホスト10に転送する(S111)。
以上の説明は、ストレージシステムに第2仮想化ストレージ装置100Bを新たに導入する場合の例である。次に、第2仮想化ストレージ装置100Bを導入した後で、さらなる負荷分散を行う場合について説明する。
図16は、各仮想化ストレージ装置100A,100B間でボリュームを移管する場合の別の例を示すフローチャートである。
ユーザは、監視部21による監視結果に基づいて、ストレージシステムの稼働状況を把握することができる。例えば、ユーザは、第1仮想化ストレージ装置100Aの負荷が重いと判断した場合、管理端末20を介して、第1仮想化ストレージ装置100Aの管理下にある外部ボリューム240を第2仮想化ストレージ装置100Bに移管させるべく、指示を出すことができる(S121)。また、管理端末20からの移行指示に基づいて、ホスト10のパス設定情報T3には、第2仮想化ストレージ装置100Bを経由してアクセスするためのパスが追加される。
第1仮想化ストレージ装置100Aは、管理端末20からの移行指示を受領すると、移行対象として指定された外部ボリュームのオーナー権を「1」から「−1」に変更し、この変更を第2仮想化ストレージ装置100Bに通知する(S122)。
第2仮想化ストレージ装置100Bは、第1仮想化ストレージ装置100Aからの通知を受領すると(S123)、移行対象ボリュームに関する移行状態フラグを「1」にセットして管理テーブルT1Bを更新し(S124)、移行状態フラグの設定が完了した旨を第1仮想化ストレージ装置100Aに通知する(S125)。
第1仮想化ストレージ装置100Aは、第2仮想化ストレージ装置100Bからの通知を受領すると、同様に、移行対象ボリュームに関する移行状態フラグを「1」にセットして管理テーブルT1Aを更新する(S126)。そして、第1仮想化ストレージ装置100Aは、移行対象ボリュームに関するダーティデータのディステージ処理を開始する(S127)。
ディステージ処理が完了する前に、移行対象の論理ボリューム164へのアクセスを要求するコマンドがホスト10から発行された場合(S128)、第1仮想化ストレージ装置100Aは、その処理を拒否する(S129)。
ホスト10は、第1仮想化ストレージ装置100Aによってアクセス処理が拒否されると、パス設定情報T3を参照し、パスを切り替える(S130)。ここでは、第1仮想化ストレージ装置100Aを経由するプライマリパスから、第2仮想化ストレージ装置100Bを経由するオルタネイトパスに切り替わったものとして説明する。ホスト10は、パスを切り替えた後、再びコマンドを発行する(S131)。このコマンドは、ライトコマンドでもリードコマンドでも良いが、説明の便宜上、ライトコマンドが発行されたものとする。
第2仮想化ストレージ装置100Bは、ホスト10からのライトコマンドを受領すると(S132)、ライトコマンドの後にホスト10から送信されるライトデータを受信して、キャッシュメモリ130に記憶させる(S132)。第2仮想化ストレージ装置100Bは、ライトデータをキャッシュメモリ130に記憶させると、ホスト10に書込み完了を報告する(S133)。ホスト10は、第2仮想化ストレージ装置100Bからの処理完了通知を受領する(S134)。
一方、第1仮想化ストレージ装置100Aによるディステージ処理が完了すると(S135)、第1仮想化ストレージ装置100Aは、ディステージ処理が完了した旨を第2仮想化ストレージ装置100Bに通知する(S136)。第2仮想化ストレージ装置100Bは、このディステージ完了通知を受領すると(S137)、移行対象ボリュームに関する移行状態フラグをリセットさせる(S138)。これにより、ボリュームの整合性を維持したままで、ボリュームの移管が完了する。ボリュームの移管が完了した後で、ホスト10が別のコマンドを発行すると(S139)、第2仮想化ストレージ装置100Bは、通常のアクセス処理を行う(S140)。
なお、もしもS131で発行されたコマンドがリードコマンドの場合、第2仮想化ストレージ装置100Bは、第1仮想化ストレージ装置100Aによるディステージ処理が完了するまで、リードコマンドの処理を拒否することができる。
図18は、本実施形態によるボリューム移管の様子を模式的に示す説明図である。まず図18(a)に示すように、最初、ストレージシステムでは、第1仮想化ストレージ装置100Aのみが稼働しているものとする。この状況下では、第1仮想化ストレージ装置100Aが、全ての外部ボリューム240を利用している。
図18(b)に示すように、ユーザは、第1仮想化ストレージ装置100Aの負荷状況に基づいて、第2仮想化ストレージ装置100Bの導入を決定し、第2仮想化ストレージ装置100Bをストレージシステムに追加する。
図18(c)に示すように、ユーザが管理端末20を介して、例えば、「#B」及び「#C」のボリューム240について移管を指示すると、これらのボリューム240は、第2仮想化ストレージ装置100Bの論理ボリューム164に接続される。より正確には、第1仮想化ストレージ装置100Aの論理ボリューム164について、ユーザがボリュームの移行を指示すると、これら移行対象の論理ボリューム164に接続されている外部ボリューム240(#B,#C)が、第2仮想化ストレージ装置100Bの論理ボリューム164に接続し直される。これにより、第1仮想化ストレージ装置100Aの負荷の少なくとも一部は、第2仮想化ストレージ装置100Bに移されて、第1仮想化ストレージ装置100A内のボトルネックが解消する。この結果、ストレージシステム全体の応答性能や効率が改善される。
以上詳述した通り、本実施例によれば、複数の仮想化ストレージ装置100A,100Bによって各外部ボリューム240をそれぞれ管理することができる。従って、ストレージシステム内の負荷を分散させて、ストレージシステム全体の処理性能を改善することができる。
本実施例では、ホスト10からのアクセスを停止させることなく、各仮想化ストレージ装置100A,100B間で外部ボリューム240を移管させることができる。従って、ホスト10を計画停止させることなく、いわゆるオンラインのままでボリューム移行を行うことができ、使い勝手が向上する。
本実施例では、ユーザは、管理端末20を介して指示を与えるだけで、各仮想化ストレージ装置100A,100B間で外部ボリューム240を移管させることができる。従って、外部ボリューム240をそれぞれ仮想化して利用可能な複数の仮想化ストレージ装置100A,100Bを備えたストレージシステムにおいて、比較的簡単な操作で、ストレージシステムの性能を改善することができる。
本実施例では、移行元の仮想化ストレージ装置100Aは、移行対象の外部ボリューム240に関するディステージ処理が完了するまで、ホスト10からのアクセス要求を拒否する構成とした。従って、データの整合性を維持したままで、ボリュームを移行させることができる。