(57)【特許請求の範囲】
【請求項１】
外部のストレージ装置を共有する第１及び第２のストレージ装置を有し、
前記第１のストレージ装置が、前記外部のストレージ装置が提供する論理ボリュームである外部ボリュームに基づく記憶領域でありそれぞれが複数のサブ記憶領域である外部ページに分割された外部容量プールと、複数の第１の仮想領域を含んだ仮想的な論理ボリュームである第１の仮想ボリュームとを有し、
前記第２のストレージ装置が、複数の第２の仮想領域を含んだ仮想的な論理ボリュームである第２の仮想ボリュームを有し、
前記第１及び第２のストレージ装置のうちのいずれか一方が、
ホストからライト要求を受け、
前記ライト要求で指定されているアドレスに属する前記仮想領域であるライト先仮想領域にいずれの前記外部ページが割り当てられておらず、且つ、その仮想領域にいずれか未割当ての前記外部ページを割り当てる場合、外部ページ割当て権限が、自分にあるか否かの第１の判断を行い、
前記第１の判断の結果が肯定的の場合、未割当ての前記外部ページを前記ライト先仮想領域に割り当て、
前記第１の判断の結果が否定的の場合、前記外部ページ割当て権限を有するストレージ装置に外部ページ割当て要求を送信し、
前記第１及び第２のストレージ装置のうち前記外部ページ割当て要求を受けたストレージ装置は、未割当ての前記外部ページを前記ライト先仮想領域に割り当てる、
ストレージシステム。
【請求項２】
前記第１の仮想ボリュームから前記第２の仮想ボリュームへのデータ移行において、前記外部ページが割り当てられている第１の仮想領域から第２の仮想領域へのデータ移行は、下記により完了する、
前記第１のストレージ装置が、前記第１の仮想領域のアドレスである移行元アドレスと、前記第１の仮想領域に割り当てられている外部ページのアドレスである外部アドレスとを、前記第２のストレージ装置に通知し、且つ、
前記第２のストレージ装置が、前記通知された移行元アドレスと前記通知された外部アドレスとの対応関係を記憶する、
請求項１記載のストレージシステム。
【請求項３】
前記第１及び第２のストレージ装置のうちのいずれか一方が、
前記第１及び第２の仮想ボリュームにおける仮想領域に割当て済の前記外部ページを未割当ての前記外部ページとすることである外部ページ解放を決定し、
外部ページ解放権限が、自分にあるか否かの第２の判断を行い、
前記第２の判断の結果が肯定的の場合、前記外部ページ解放を行い、
前記第２の判断の結果が否定的の場合、前記外部ページ解放権限を有するストレージ装置に外部ページ解放要求を送信し、
前記第１及び第２のストレージ装置のうち前記外部ページ解放要求を受けたストレージ装置は、前記外部ページ解放を行う、
請求項１記載のストレージシステム。
【請求項４】
前記第１及び第２のストレージ装置のうちのいずれか一方が、
前記外部ページ割当て権限、又は、前記第１及び第２の仮想ボリュームにおける仮想領域に割当て済の前記外部ページを未割当ての前記外部ページとすることである外部ページ解放の権限を他のストレージ装置に移行するか否かの第３の判断を行い、
前記第３の判断の結果が肯定的の場合、前記外部ページ割当て権限又は前記外部ページ解放権限を前記他のストレージ装置に移行する、
請求項１記載のストレージシステム。
【請求項５】
前記第１の仮想ボリュームから前記第２の仮想ボリュームへのデータ移行において、前記第１及び第２のストレージ装置のうちのいずれか一方が、
前記ホストからリード要求を受信し、
前記リード要求で指定されているアドレスに属する仮想領域に割り当てられている前記外部ページからデータを読出し、読み出した前記データを前記ホストに送信する、
請求項１記載のストレージシステム。
【請求項６】
前記第１及び第２のストレージ装置の各々が、そのストレージ装置が有する物理記憶デバイスに基づく記憶領域でありそれぞれが複数のサブ記憶領域である内部ページに分割された内部容量プールを有しており、
前記ライト要求は、前記第１の仮想ボリュームから前記第２の仮想ボリュームへのデータ移行において受けた要求であり、
前記第１及び第２のストレージ装置のうちのいずれか一方が、
前記ライト先仮想領域にいずれの前記外部ページも前記内部ページも割り当てられていない場合、前記外部ページを割り当てるか前記内部ページを割り当てるかの第４の判断を行い、
前記第４の判断の結果が前記外部ページを割り当てることである場合、前記第１の判断を行い、
前記第４の判断の結果が内部ページを割り当てることである場合、自分が有する前記内部容量プールから未割当ての前記内部ページを前記ライト先仮想領域に割り当てる、
請求項１記載のストレージシステム。
【請求項７】
前記第１のストレージ装置が、前記第１の仮想ボリュームから前記第２の仮想ボリュームへのデータ移行において、
前記ライト先仮想領域が前記第１の仮想ボリュームのうちのデータ移行が完了した仮想領域か否かの第５の判断を行い、
前記第５の判断の結果が肯定的であり、且つ、前記ライト先仮想領域に前記外部ページ又は前記内部ページが割り当てられている場合、前記ライト要求に従うライト対象データを、前記ライト先仮想領域に割り当てられている前記外部ページ又は前記内部ページに書込み、且つ、前記ライト対象データを、前記第２のストレージ装置に送信する、
請求項６記載のストレージシステム。
【請求項８】
前記第１の仮想ボリュームから前記第２の仮想ボリュームへのデータ移行において、前記第２のストレージ装置が、
前記ホストからリード要求を受信し、
前記リード要求で指定されたアドレスに従う仮想領域であるリード元仮想領域が、データ移行が完了した仮想領域であるか否かの第６の判断を行い、
前記第６の判断の結果が肯定的の場合、前記リード元仮想領域に割り当てられているページからデータを読み出し、読み出したデータを前記ホストに送信する、
請求項１記載のストレージシステム。
【請求項９】
前記第１のストレージ装置は、既存のストレージ装置であり、
前記第２のストレージ装置は、新たに用意されたストレージ装置である、
請求項１記載のストレージシステム。
【請求項１０】
前記第２のストレージ装置は、前記第２の仮想ボリュームにおける第２の仮想領域のアドレスであるアクセス先アドレスを指定したアクセス要求を受信した場合、
前記アクセス先アドレスが、前記移行元アドレスに適合するアドレスであれば、前記第２のストレージ装置が、その移行元アドレスに対応する外部アドレスに従うアドレスを指定したアクセス要求を前記外部のストレージ装置に送信し、
前記アクセス先アドレスが、前記移行元アドレスに適合しないアドレスであれば、前記第２のストレージ装置が、前記外部ページの割当て要求を前記第１のストレージ装置に送信し、前記第１のストレージ装置が、その割当て要求に従い、前記外部容量プールにおける未割当ての前記外部ページを決定し、決定した前記外部ページのアドレスである外部ページアドレスを前記第２のストレージ装置に通知し、前記第２のストレージ装置が、前記アクセス先アドレスと通知された外部ページアドレスとの対応関係を記憶し、且つ、その外部ページアドレスに従うアドレスを指定したアクセス要求を前記外部のストレージ装置に送信する、
請求項２記載のストレージシステム。
【請求項１１】
前記第２の仮想ボリュームに割り当てられている前記外部ページにアクセスする権限は、前記第２のストレージ装置が有し、
前記第２の仮想ボリュームに前記外部ページを割り当てる権限は、前記第１のストレージ装置が有する、
請求項１記載のストレージシステム。
【請求項１２】
前記第２の仮想ボリュームに前記外部ページを割り当てる権限は、前記第１のストレージ装置の負荷が所定負荷以上に高い場合に、前記第２のストレージ装置に移行する、
請求項１１記載のストレージシステム。
【請求項１３】
外部のストレージ装置を共有する第１及び第２のストレージ装置を有するシステムでの記憶制御方法であって、
前記第１のストレージ装置が、前記外部のストレージ装置が提供する論理ボリュームである外部ボリュームに基づく記憶領域でありそれぞれが複数のサブ記憶領域である外部ページに分割された外部容量プールと、複数の第１の仮想領域を含んだ仮想的な論理ボリュームである第１の仮想ボリュームとを有し、
前記第２のストレージ装置が、複数の第２の仮想領域を含んだ仮想的な論理ボリュームである第２の仮想ボリュームを有し、
前記記憶制御方法は、前記第１及び第ストレージ装置のうちのいずれか一方により、
ホストからライト要求を受け、
前記ライト要求で指定されているアドレスに属する前記仮想領域であるライト先仮想領域にいずれの外部ページが割り当てられておらず、且つ、その仮想領域にいずれか未割当ての外部ページを割り当てる場合、外部ページ割当て権限が、自分にあるか否かの第１の判断を行い、
前記第１の判断の結果が肯定的の場合、未割当ての前記外部ページを前記ライト先仮想領域に割り当て、
前記第１の判断の結果が否定的の場合、前記外部ページ割当て権限を有するストレージ装置に外部ページ割当て要求を送信し、
前記第１及び第２のストレージ装置のうち前記外部ページ割当て要求を受けたストレージ装置が、未割当ての前記外部ページを前記ライト先仮想領域に割り当てる、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステムでの記憶制御に関する。
【背景技術】
【０００２】
複数のストレージ装置を含んだストレージシステム（例えばデータセンタ）の運用コストを削減したいというニーズがある。この種のストレージシステムに関して、次のような技術が開示されている。
【０００３】
特許文献１は、‘ストレージの仮想化’と呼ばれる技術に関する。本明細書では、ストレージの仮想化機能を有するストレージ装置を「仮想ストレージ」と呼ぶ。また、本明細書では、仮想ストレージに接続されたストレージ装置であり、仮想ストレージによって仮想化される記憶資源を有するストレージ装置を「外部ストレージ」と呼ぶ。特許文献１では、１台の仮想ストレージに、１台以上の外部ストレージが接続され、見かけ上、外部ストレージは、仮想ストレージによって隠蔽される。本明細書では、サーバ等のホスト装置からのアクセス単位となる論理的なボリュームを「ＬＵ」（ＬＵ：Logical Unit）と呼ぶ。外部ストレージ上には、仮想ストレージ上のＬＵに１対１にマッピングされるＬＵが定義される。以降、サーバからアクセスされるＬＵを「サーバＬＵ」と呼び、外部ストレージ上のＬＵを「外部ＬＵ」と呼ぶ。仮想ストレージは、外部ＬＵにマッピングされているサーバＬＵを指定したアクセス要求をホスト装置から受信した場合、その外部ＬＵにアクセスすることで、そのアクセス要求を処理する。この技術によって、管理者は仮想ストレージの管理をすればよいので、管理コストを低減することができる。
【０００４】
特許文献２は、‘容量の仮想化’と呼ばれる技術に関する。容量の仮想化は、シン・プロビジョニング（或いは、ダイミナミック・プロビジョニング）とも呼ばれる。本明細書では、仮想ストレージは、容量の仮想化機能も有している。容量の仮想化機能によれば、「容量プール」と呼ばれる記憶領域が、「ページ」と呼ばれる区画に分割される。一般に、ＬＵを定義する際、あわせて、そのＬＵの容量も指定し、ストレージ装置では、その容量に相当する記憶領域が確保される。一方、容量の仮想化機能をもつ仮想ストレージでは、仮想サーバＬＵ（シン・プロビジョニングに従うサーバＬＵ）の定義の際に、その仮想サーバＬＵの容量分の記憶領域を確保する必要は無い。実際に仮想サーバＬＵに対する書込みが発生した場合に、その書込み先を含んだ領域（仮想サーバＬＵにおける領域）に、ページが割り当てられる。これにより、消費される記憶領域を削減することができる。また、記憶領域を割り当てる契機が、書込みが発生した契機であるため、管理者は、仮想サーバＬＵの容量として適当な容量を定義すればよく、それ故、管理コストも低減することができる。
【０００５】
特許文献３では、外部ストレージの記憶領域に、容量の仮想化機能を適用した技術が適用されている。この技術は、‘ストレージの仮想化’と‘容量の仮想化’の二つ技術が揃って始めて適用可能なため、付加価値の高い技術として重要であると考えられる。この場合、外部ストレージ上には、例えば、大容量の外部ＬＵが定義される。この外部ＬＵが、仮想ストレージ上では一つの容量プールとなる。仮想ストレージが、その容量プール（外部ＬＵにマッピングされた容量プール）を複数のページに分割する。仮想サーバＬＵに書き込みが発生した場合、仮想ストレージが、その書込み先を含んだ領域にページを割り当てる。この場合、一つの仮想サーバＬＵに割り当てられている複数のページには、内部のページ（仮想ストレージ内部の物理記憶デバイスに基づく容量プール内のページ）と外部のページ（外部ＬＵにマッピングされている容量プール内のページ）とが混在してもよい。
【０００６】
特許文献１〜特許文献３で開示されている技術では、仮想ストレージの台数が１台以上の場合に適用可能であった。しかし、さらなる運用管理コストの低減には、複数の仮想ストレージを連携させることも有効である。例えば、特許文献４では、２台の仮想ストレージを連携し、お互いをバックアップする技術が開示されている。また、特許文献４では、複数の仮想ストレージが外部ストレージを共有した環境で、負荷分散のため、外部ストレージ上の外部ＬＵに対するアクセス権限を、当該ＬＵのデータをコピーすることなく、ある仮想ストレージから別の仮想ストレージに移行する技術も開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−００５３７０号公報
【特許文献２】特開２００３−０１５９１５号公報
【特許文献３】特開２００７−１０２４５５号公報
【特許文献４】特開２００７−０７２５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
複数の仮想ストレージと１台以上の外部ストレージを含み、且つ、複数の仮想ストレージ（例えば、仮想ストレージＡと仮想ストレージＢ）が外部ストレージを共有するストレージシステムが考えられる。そして、仮想ストレージＡ上に定義された外部ＬＵに相当する容量プール内のページが割り当てられた仮想サーバＬＵのアクセス権限を、仮想ストレージＡから仮想ストレージＢに移すことが考えられる。
【０００９】
本発明は、特許文献３で開示されたような技術（外部ストレージの記憶領域に、容量の仮想化機能を適用した技術）を、複数の仮想ストレージ間の連携技術に応用した場合に生ずる課題の解決を狙っており、重要度は高い。
【００１０】
仮想サーバＬＵのアクセス権限の移行の主な契機は、例えば、下記である。
（１）仮想ストレージＡと仮想ストレージＢの間の負荷分散。
（２）既存の古くなった仮想ストレージＡから新しい仮想ストレージＢへのデータ移行。
【００１１】
上記（２）で、仮想ストレージＡを廃棄する場合、仮想ストレージＡのすべての仮想サーバＬＵのアクセス権限が、仮想ストレージＢを含む他の仮想ストレージに移されることになる。
【００１２】
外部ストレージが、仮想ストレージＡと仮想ストレージＢ間で共有されている場合、仮想ストレージＡがアクセス権限をもつ外部ＬＵのアクセス権限は、仮想ストレージＢが外部ストレージにアクセス可能であるため、特許文献４に開示された技術に従って、仮想ストレージＡから仮想ストレージＢに移行することが可能である。
【００１３】
しかし、仮想サーバＬＵのアクセス権限に加えて、容量プールに相当する外部ＬＵのアクセス権限も、仮想ボリュームＡから仮想ボリュームＢに移行されると、その容量プールに関連付けられる複数の仮想サーバＬＵとして、仮想ストレージＡがアクセス権限をもつ仮想サーバＬＵと仮想ストレージＢがアクセス権限をもつ仮想サーバＬＵが混在してしまう可能性がある。従来は、このような課題の解決することは考慮されていない。
【課題を解決するための手段】
【００１４】
この課題を解決するために、本発明においては、外部ＬＵに対応する容量プールの割当て・解放権限と、仮想サーバＬＵ（以下、単に「ＬＵ」と言う）に対するアクセス権限が、独立に設けられる。
【００１５】
本発明では、仮想ストレージＡ及びＢとそれら仮想ストレージＡ及びＢが共有する外部ストレージ（外部ストレージが提供する外部ＬＵ）とを含んだストレージシステムでの、仮想ストレージＡから仮想ストレージＢへ、ＬＵ（ＬＵのアクセス権限）が移行される際に、そのＬＵを構成する領域（以下、ＬＵ領域）毎に、下記（ａ）及び（ｂ）の判断、
（ａ）そのＬＵ領域にページが割り当てられているか否か、
（ｂ）そのＬＵ領域にページが割り当てられている場合、そのページは、仮想ストレージＡが有する物理記憶デバイスに基づく容量プール内のページであるか、或いは、外部ストレージが有する外部ＬＵに相当する容量プール内のページであるか、
が行われ、その判断の結果に従う処理が実行される。具体的には、下記の通りである。以下、１つのＬＵ領域を例に取り（以下、対象ＬＵ領域）、ＬＵ移行処理において行われる処理を説明する。
【００１６】
（１）対象ＬＵ領域にページが割り当てられていないケース。
（１ａ）仮想ストレージＡが、対象ＬＵ領域のアドレス及びその領域にページが割り当てられていないことを表す情報を仮想ストレージＢに送信する。
（１ｂ）仮想ストレージＢが、仮想ストレージＡから受信した情報（対象ＬＵ領域のアドレス及びその領域にページが割り当てられていないことを表す情報）を記憶する。
【００１７】
（２）対象ＬＵ領域に、外部ＬＵに相当する容量プール内のページ（以下、外部ページ）が割り当てられているケース。
（２ａ）仮想ストレージＡが、対象ＬＵ領域のアドレスとその領域に割り当てられている外部ページのアドレスとを表す情報を仮想ストレージＢに送信する。
（２ｂ）仮想ストレージＢが、仮想ストレージＡから受信した情報（対象ＬＵ領域のアドレスとその領域に割り当てられている外部ページのアドレスとを表す情報）を記憶する。
【００１８】
これが、本発明の１つの特徴である。これにより、対象ＬＵ領域に割り当てられているページ内のデータをコピーする代わりに、対象ＬＵ領域に割り当てられている外部ページのアドレス（実質的に、外部ＬＵ内の領域のアドレス）を通知するだけでよい。このため、効率のよい、アクセス権限の移行が可能となる。なお、このケースでは、仮想ストレージＢは、移行先のＬＵを指定したリード／ライト要求をホストから受けた場合、そのリード／ライト要求で指定されているアドレス（移行先ＬＵにおけるＬＵ領域のアドレス）が、仮想ストレージＡから通知された対象ＬＵ領域アドレスに適合するアドレスであれば、仮想ストレージＡから通知された外部ページアドレスに従う外部ＬＵ領域（外部ＬＵ内のＬＵ領域）にアクセスする。
【００１９】
（３）対象ＬＵ領域に、仮想ストレージＡが有する物理記憶デバイスに基づく容量プール内のページ（以下、内部ページ）が割り当てられているケース。
（３ａ）仮想ストレージＡが、対象ＬＵ領域のアドレスとその領域に割り当てられている内部ページのアドレスとを表す情報を仮想ストレージＢに送信する。
（３ｂ）仮想ストレージＡが、対象ＬＵ領域に割り当てられている内部ページ内のデータを仮想ストレージＢに送信する。
（３ｃ）仮想ストレージＢが、仮想ストレージＢの物理記憶デバイスに基づく容量プール内のページを確保する。
（３ｄ）仮想ストレージＢが、仮想ストレージＡから受信したデータを、上記（３ｃ）で確保したページに格納する。
【００２０】
ＬＵのアクセス権限を移行する契機は、上記（１）−（３）の処理の実行前と実行後のいずれでもよい。
【００２１】
本発明では、原則として、ＬＵのアクセス権限を仮想ストレージＡから仮想ストレージＢに移行しても、仮想ストレージＡにおいてそのＬＵに関連付けられている容量プール（以下、容量プールＡ）の割当て・解放権限を、仮想ストレージＡが保有していることになる。このため、仮想ストレージＢで、仮想ストレージＢに移行されたＬＵ内の領域に、容量プールＡのページの割当て・解放が必要になった場合、仮想ストレージＢは、仮想ストレージＡに、ページの割当て・解放処理を要求することになる。
【００２２】
なお、例えば、以下の（Ｘ）又は（Ｙ）のケースでは、容量プールＡのページの割当て・解放権限も、仮想ストレージＢに移行されても良い。
（Ｘ）容量プールＡの所定割合以上のページが割り当てられた１以上のＬＵのアクセス権限が仮想ストレージＢに移行されたケース。
（Ｙ）仮想ストレージＡの負荷（例えばＣＰＵ使用率）が所定負荷以上であるケース。例えば、仮想ストレージＡにとって、容量プールＡのページの割当て・解放の負荷が所定負荷以上であるケース。
【発明の効果】
【００２３】
本発明によれば、仮想ストレージＡ及びＢとそれら仮想ストレージＡ及びＢが共有する外部ストレージとを含んだストレージシステムにおいて、外部ＬＵに相当する容量プール（仮想ストレージＡ内の容量プール）内のページが割り当てられたＬＵのアクセス権限が、仮想ストレージＡから仮想ストレージＢに移行される場合、そのＬＵに割り当てられている外部ページに関しては、その外部ページ内のデータをコピーすることに代えて、その外部ページのアドレスが仮想ストレージＢに通知されるだけで、アクセス権限の移行が済む。これにより、高効率なアクセス権限の移行が可能となる。
【図面の簡単な説明】
【００２４】
【図１】実施例１に係るＩＴ（InformationTechnology）システムの構成例を示す。
【図２】実施例１に係る仮想ストレージの構成例を示す。
【図３】実施例１に係る外部ストレージの構成例を示す。
【図４】実施例１に係る内部容量プール情報のフォーマット例を示す。
【図５】実施例１に係る外部ＬＵ情報のフォーマット例を示す。
【図６】実施例１に係る外部容量プール情報のフォーマット例を示す。
【図７】実施例１に係るホストＬＵ情報のフォーマット例を示す。
【図８】実施例１に係る外部ＬＵ情報のフォーマット例を示す。
【図９】実施例１に係る仮想ストレージ１１０が発揮する複数の機能の一例を示す。
【図１０】実施例１に係る移行元の仮想ストレージにおけるデータ移行制御部（ａ）の処理フローの一例を示す。
【図１１】実施例１に係る移行先の仮想ストレージにおけるデータ移行実行部（ａ）の処理フローの一例を示す。
【図１２】実施例１に係る移行元の仮想ストレージにおける読み書き実行部（ａ）の処理フローの一例を示す。
【図１３】実施例１に係るページ割り当て処理部の処理フローの一例を示す。
【図１４】実施例１に係る移行先の仮想ストレージにおけるライトデータ受領部の処理フローの一例を示す。
【図１５】実施例１に係るライトアフタ処理部の処理フローの一例を示す。
【図１６】実施例１に係る外部ページ割り当て処理部の処理フローの一例を示す。
【図１７】実施例１に係る外部ページ解放処理部の処理フローの一例を示す。
【図１８】実施例１に係る制御権移行部の処理フローの一例を示す。
【図１９】実施例２に係る仮想ストレージ１１０が発揮する複数の機能の一例を示す。
【図２０】実施例２に係る移行先の仮想ストレージにおけるデータ移行制御部（ｂ）の処理フローの一例を示す。
【図２１】実施例２に係る移行元の仮想ストレージにおけるデータ移行実行部（ｂ）の処理フローの一例を示す。
【図２２】実施例２に係る移行先の仮想ストレージにおける読み書き実行部（ｂ）の処理フローの一例を示す。
【図２３】実施例２に係る移行元の仮想ストレージにおけるリード要求受領部の処理フローの一例を示す。
【図２４】実施例１に係る制御権移行決定部の処理フローの一例を示す。
【発明を実施するための形態】
【００２５】
以下、図面を参照して、本発明の幾つかの実施例を説明する。
【実施例１】
【００２６】
図１は、本発明の実施例１に係るＩＴ（Information Technology）システムの構成例を示す。
【００２７】
ホスト１００は、アプリケーションが実行される計算機であり、１つ以上のホスト１００が存在する。
【００２８】
仮想ストレージ１１０は、ストレージの仮想化機能と容量の仮想化機能との両方を有するストレージ装置である。仮想ストレージ１１０は、ホスト１００に接続され、ホスト１００からリード／ライト要求（リード要求又はライト要求）を受け付ける。また、仮想ストレージ１１０は、２つ以上存在する。ＩＴシステムが、ストレージの仮想化機能及び容量の仮想化機能の少なくとも１つを有しないストレージ装置を含んでいても良い。例えば、そのようなストレージ装置を、複数の仮想ストレージ１１０に共有される外部ストレージ１３０として採用することが可能である。
【００２９】
図１によれば、仮想ストレージ１１０は、ＳＡＮ（ａ）１２０経由で、ホスト１００に接続される。同様に、仮想ストレージ１１０同士も、ＳＡＮ（ａ）１２０経由で接続されている。ただし、仮想ストレージ１１０はホスト１００と直接接続されていても良いし（ＳＡＮ（ａ）を介さずに接続されていてもよいし）、仮想ストレージ１１０同士も、直接接続されていても良い（ＳＡＮ（ａ）を介さずに接続されていてもよい）。また、１台の仮想ストレージ１１０は、少なくとも一つのホスト１００と、少なくとも一つの仮想ストレージ１１０と接続されている。ホスト１００、仮想ストレージ１１０、ＳＡＮ（ａ）１２０それぞれの接続口を「ポート」１４０と呼ぶ。ホスト１００、仮想ストレージ１１０は、少なくとも１つのポート１４０を持ち、ＳＡＮ（ａ）１２０は、少なくとも二つのポート１４０をもつ。ホスト１００は、仮想ストレージ１１０に発行するリード／ライト要求において、ＬＵ識別子（例えばＬＵＮ（Logical Unit Number））と、ＬＵ内の相対アドレス（例えばＬＢＡ（Logical Block Address））と、データ長を指定する。ホスト１００が指定するＬＵを、以下、「ホストＬＵ」と呼ぶ。
【００３０】
外部ストレージ１３０は、ＳＡＮ（ｂ）１５０経由で、仮想ストレージ１１０に接続される。外部ストレージ１３０は、ホスト１００からのリード／ライト要求は、直接受け付けず、仮想ストレージ１１０経由でこの要求を受け付けるのが基本である。例外があってもよいが、そのケースについては、後述する。外部ストレージ１３０は、少なくとも２台の仮想ストレージ１１０に接続される。外部ストレージ１３０上に定義されたＬＵを、「外部ＬＵ」と呼ぶ。外部ＬＵは、基本的には、仮想ストレージ１１０からアクセスされる。
【００３１】
管理サーバ１６０は、ホスト１００と仮想ストレージ１１０を管理するサーバであり、ホスト１００と仮想ストレージ１１０に接続されている。実施例１及び２では、管理サーバ１６０が、仮想ストレージ１１０のリード／ライト要求の頻度などの情報を収集し、仮想ストレージ１１０間で、ホストＬＵの移行することを決定する。また、実施例３及び４では、管理サーバ１６０が、新しい仮想ストレージ１１０をＳＡＮ（ａ）１２０に接続し、古い仮想ストレージ１１０のすべてのデータを新しい仮想ストレージ１１０に移し、古い仮想ストレージ１１０を廃棄するような制御を統括する。なお、いずれの実施例においても、管理サーバ１６０の機能が、管理サーバ１６０以外の装置（例えば、ホスト１００、あるいは、仮想ストレージ１１０（例えばホストＬＵの移行元となる仮想ストレージ１１０、あるいは、移行先の仮想ストレージ１１０））が有していても良い。
【００３２】
図２は、仮想ストレージ１１０の構成例を示す。
【００３３】
仮想ストレージ１１０は、複数の物理記憶デバイス（例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive））と、複数の物理記憶デバイスに接続されたコントローラとを有する。
【００３４】
複数の物理記憶デバイスを基に、複数の論理ボリューム２１０が構築される。以下、仮想ストレージ１１０内の物理記憶デバイスに基づく論理ボリューム２１０を、「内部ボリューム２１０」と言う。内部ボリューム２１０は、２以上の物理記憶デバイスで構成されたＲＡＩＤグループ（Redundant Array of Independent Disks）に基づいていても良い。ＲＡＩＤ構成の管理は、ストレージプロセッサ２００が行う。
【００３５】
コントローラは、仮想ストレージ１１０の動作を制御する装置である。コントローラは、複数のポート１４０と、キャッシュメモリ２７０を含んだ記憶資源と、それらの要素に接続されたストレージプロセッサ（例えばＣＰＵ（Central Processing Unit））２００とを有する。記憶資源が、内部容量プール情報２３０、外部ＬＵ情報２４０、外部容量プール情報２５０及びホストＬＵ情報２６０を記憶する。また、記憶資源は、ストレージプロセッサ２００が実行する１以上のコンピュータプログラムを記憶する。
【００３６】
１以上のストレージプロセッサ２００は、仮想ストレージ１１０内に含まれ、これらのプロセッサ２００は、ホスト１００から受け付けたリード／ライト要求を処理する。
【００３７】
内部容量プール情報２３０は、内部容量プールに関する情報である。「内部容量プール」とは、仮想ストレージ１１０内の物理記憶デバイスに基づく容量プールであり、１以上の内部ボリューム２１０で構成されている。内部容量プールは、複数のページ（以下、内部ページ）に分割されている。
【００３８】
外部ＬＵ情報２４０は、仮想ストレージ１１０に接続された外部ストレージ１３０に定義されている外部ＬＵに関する情報である。仮想ストレージ１１０に接続されたすべての外部ストレージ１３０上のすべての外部ＬＵについて外部ＬＵ情報２４０が存在しても良いし、一部の外部ＬＵについてのみ外部ＬＵ情報２４０が存在しても良い。
【００３９】
外部容量プール情報２５０は、外部容量プールに関する情報である。「外部容量プール」とは、１以上の外部ＬＵがマッピングされた仮想的な論理ボリューム（ストレージ仮想化機能に従う論理ボリューム）で構成されている。外部容量プールは、複数のページ（以下、外部ページ）に分割されている。外部ページを書込み先としたデータは、実際には、その外部ページの基になっている外部ＬＵ内のＬＵ領域に書き込まれる。
【００４０】
ホストＬＵ情報２６０は、ホストＬＵに関する情報である。
【００４１】
キャッシュメモリ２７０は、ホスト１００がホストＬＵに対して読み書きするデータを格納するメモリである。メモリ２７０は、通常は、半導体メモリであるが、バッテリーなどで不揮発化されていてもよいし、高信頼化のため、２重化されていてもよい。
【００４２】
図３は、外部ストレージ１３０の構成例を示す。
【００４３】
外部ストレージ１３０は、複数の物理記憶デバイス（例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive））と、複数の物理記憶デバイスに接続されたコントローラとを有する。
【００４４】
複数の物理記憶デバイスを基に、複数の論理ボリューム３１０が構築される。以下、外部ストレージ１３０内の物理記憶デバイスに基づく論理ボリューム３１０を、「外部ボリューム３１０」と言う。外部ボリューム３１０は、２以上の物理記憶デバイスで構成されたＲＡＩＤグループに基づいていても良い。ＲＡＩＤ構成の管理は、外部ストレージプロセッサ３００が行う。１以上の外部ボリューム３１０で容量プールが構成され、その容量プールに、シン・プロビジョニングに従う仮想的なＬＵが設けられていても良い。外部ボリューム３１０、或いは、１以上の外部ボリューム３１０で構成された容量プールに関連付けられた仮想的なＬＵが、外部ＬＵであって良い。
【００４５】
コントローラは、外部ストレージ１３０の動作を制御する装置である。コントローラは、複数のポート１４０と、外部キャッシュメモリ３３０を含んだ記憶資源と、それらの要素に接続された外部ストレージプロセッサ（例えばＣＰＵ）３００とを有する。記憶資源が、外部ＬＵ情報３２０を記憶する。また、記憶資源は、外部ストレージプロセッサ３００が実行する１以上のコンピュータプログラムを記憶する。
【００４６】
１以上の外部ストレージプロセッサ３００は、外部ストレージ１３０内に含まれ、これらのプロセッサ３００は、ホスト１００から受け付けたリード／ライト要求を処理する。
【００４７】
外部ＬＵ情報３２０は、外部ＬＵに関する情報である。
【００４８】
外部ストレージキャッシュメモリ３３０は、仮想ストレージが外部ＬＵに対して読み書きするデータを格納するメモリである。メモリ３３０は、通常は、半導体メモリであるが、バッテリーなどで不揮発化されていてもよいし、高信頼化のため、２重化されていてもよい。
【００４９】
以下、各種情報を説明する。その際、内部容量プールと外部容量プールを特に区別しない場合には、単に「容量プール」と言い、内部ページと外部ページを特に区別しない場合には、単に「ページ」と言うことがある。
【００５０】
図４は、内部容量プール情報２３０のフォーマット例を示す。
【００５１】
内部容量プール情報２３０は、内部容量プール毎に存在する。内部容量プール情報２３０は、ページサイズ４００、ページ数４１０、割り当てページ数４２０及びＬＵアドレス４３０を含む。ＬＵアドレス４３０は、内部ページ毎に存在する。以下、１つの内部容量プール（図４の説明において「対象プール」と言う）を例に取り、この情報２３０内の情報要素を説明する。
【００５２】
ページサイズ４００は、内部ページのサイズを表す情報である。
【００５３】
ページ数４１０は、対象プールが有する内部ページの数（対象プールの容量をページサイズ４００で割った値）を表す。
【００５４】
割り当てページ数４２０は、対象プールの中で、割り当て済みの内部ページの数を表す。
【００５５】
ＬＵアドレス４３０は、内部ページの割当て先の領域を表す情報（例えば、ホストＬＵのＬＵＮと、そのホストＬＵの相対アドレス（例えばＬＢＡ））である。ホストＬＵに割り当てていない内部ページに対応するＬＵアドレス４３０として、ヌル値が格納されているとする。
【００５６】
図５は、外部ＬＵ情報２４０のフォーマット例を示す。
【００５７】
外部ＬＵ情報２４０は、外部ＬＵ毎に存在する情報である。外部ＬＵ情報２４０は、外部ＬＵ識別子５００、外部ＬＵ容量５１０、容量仮想化フラグ５２０、割当て情報５３０、制御権情報５４０及び制御権仮想ストレージ５５０を含む。以下、１つの外部ＬＵ（図５の説明において「対象外部ＬＵ」と言う）を例に取り、この情報２４０内の情報要素を説明する。
【００５８】
外部ＬＵ識別子５００は、対象外部ＬＵのＬＵＮと、対象外部ＬＵを有する外部ストレージ１３０の識別子とを含んだ情報である。
【００５９】
外部ＬＵ容量５１０は、対象外部ＬＵの容量を表す情報である。
【００６０】
容量仮想化フラグ５２０は、対象外部ＬＵに容量仮想化機能が適用されているかどうかを表す情報である。容量仮想化機能が適用されてない場合、基本的には、対象外部ＬＵと仮想ストレージ１１０内のホストＬＵとが１対１に対応する。ただし、対象外部ＬＵにホストＬＵがマッピングされていない場合もある。容量仮想化機能が適用されている場合、対象外部ＬＵは、外部容量プールに１対１に対応する。
【００６１】
割り当て情報５３０は、対象外部ＬＵに容量仮想化機能が適用されている場合、対象外部ＬＵに対応する外部容量プールの識別子を表す。対象外部ＬＵに容量仮想化機能が適用されていない場合、対象外部ＬＵにマッピングされているホストＬＵの識別子が格納されている。対象外部ＬＵにホストＬＵがマッピングされていない場合、割り当て情報５３０としてヌル値が格納される。
【００６２】
制御権情報５４０は、対象外部ＬＵに対応する外部容量プールの制御権（外部ページの割り当て・解放権限）をこの外部ＬＵ情報２４０を有する仮想ストレージ１１０が持っているか否かを表す。対象外部ＬＵの制御権をこの仮想ストレージ１１０もっている場合、制御権情報５４０としてオンを表す値が格納される。具体的には、例えば、対象外部ＬＵに容量仮想化機能が適用されている場合、この仮想ストレージ１１０が、対象外部ＬＵに対応する外部容量プールの外部ページの割り当て・解放権限をもっている。また、対象外部ＬＵに容量仮想化機能が適用されていない場合、対象外部ＬＵにマッピングされているホストＬＵに対する読み書き処理の権限を、この仮想ストレージ１１０もっていることになる。
【００６３】
制御権仮想ストレージ５５０は、対象外部ＬＵの制御権をもっている仮想ストレージ１１０の識別子である。
【００６４】
図６は、外部容量プール情報２５０のフォーマット例を示す。
【００６５】
外部容量プール情報２５０は、外部容量プール毎に存在する。外部容量プール情報２５０は、外部ＬＵポインタ６００、ページサイズ４００、ページ数４１０、割り当てページ数４２０及びＬＵアドレス４３０を含む。ＬＵアドレス４３０は、外部ページ毎に存在する。以下、１つの外部容量プール（図６の説明において「対象プール」と言う）を例に取り、この情報２５０内の情報要素を説明する。
【００６６】
外部ＬＵポインタ６００は、対象プールに対応する外部ＬＵの外部ＬＵ情報２４０へのポインタである。
【００６７】
それ以外の情報は、内部容量プール情報２３０に含まれている情報要素と実質的に同一である。すなわち、ページサイズ４００は、外部ページのサイズを表す情報である。ページ数４１０は、対象プールが有する外部ページの数を表す。割り当てページ数４２０は、対象プールの中で、割り当て済みの外部ページの数を表す。ＬＵアドレス４３０は、外部ページの割当て先の領域を表す情報（例えば、ホストＬＵのＬＵＮと、そのホストＬＵの相対アドレス（例えばＬＢＡ））である。
【００６８】
図７は、ホストＬＵ情報２６０のフォーマット例を示す。なお、実施例１では、仮想ストレージ１１０内の全てのホストＬＵに容量仮想化機能が適用されているものとする。しかし、仮想ストレージ１１０において、一部のホストＬＵしか、容量仮想化機能が適用されていなくとも、本発明は有効である。
【００６９】
ホストＬＵ情報２６０は、ホストＬＵ毎に存在する。ホストＬＵ情報２６０は、ホストＬＵ識別子７００、仮想容量７１０、使用ページ数７２０、移行中フラグ７３０、移行中仮想ストレージ識別子７４０、移行中ＬＵ識別子７５０、コピーポインタ７６０、容量プール識別子７７０及び相対アドレス７８０を含む。容量プール識別子７７０及び相対アドレス７８０は、ホストＬＵを構成するＬＵ領域毎に存在する。ＬＵ領域に１つの内部ページ又は外部ページが割り当てられる。従って、ホストＬＵを構成するＬＵ領域の数は、実施例１では、後述の仮想容量７００をページサイズ４００で割った値と同じである。なお、１つのＬＵ領域に複数のページ（内部ページ及び／又は外部ページ）が割り当てられても良い。以下、１つのホストＬＵ（図７の説明において「対象ホストＬＵ」と言う）を例に取り、この情報２６０内の情報要素を説明する。
【００７０】
ホストＬＵ識別子７００は、対象ホストＬＵの識別子（例えばＬＵＮ）である。
【００７１】
仮想容量７１０は、対象ホストＬＵの仮想的な容量を表す情報である。
【００７２】
使用ページ数７２０は、対象ホストＬＵに割り当てられているページの数を示す情報である。
【００７３】
移行中フラグ７３０は、対象ホストＬＵを他の仮想ストレージに移行中であるか否かを示すフラグである。
【００７４】
移行中仮想ストレージ識別子７４０は、対象ホストＬＵを移行する仮想ストレージ１１０（移行元の仮想ストレージ１１０）の識別子である。
【００７５】
移行中ＬＵ識別子７５０は、移行元の仮想ストレージ１１０内でのホストＬＵの識別子（例えばＬＵＮ）である。
【００７６】
コピーポインタ７６０は、移行が完了したＬＵ領域のアドレスを示す。実施例１では、例えば、対象ホストＬＵの先頭のＬＵ領域から末尾のＬＵ領域にかけて順次に移行処理が行われる。コピーポインタ７６０は、どのＬＵ領域まで移行処理が終了したかを示す。
【００７７】
容量プール識別子７７０は、ＬＵ領域に割り当てられたページを含んだ容量プールの識別子である。
【００７８】
相対アドレス７８０は、ＬＵ領域に割り当てられたページの容量プールでの相対アドレスを示す。ページが割り当てられていない場合、容量プール識別子７７０と相対アドレス７８０は、ともに、ヌル値である。
【００７９】
図８は、外部ＬＵ情報３２０のフォーマット例を示す。
【００８０】
外部ＬＵ情報３２０は、外部ＬＵ毎に存在する。外部ＬＵ情報３２０は、外部ＬＵ識別子８００及び外部ＬＵ容量８１０を含む。以下、１つの外部ＬＵ（図８の説明において「対象外部ＬＵ」と言う）を例に取り、この情報３２０内の情報要素を説明する。
【００８１】
外部ＬＵ識別子８００は、外部ストレージ１３０での対象外部ＬＵの識別子（例えばＬＵＮ）である。
【００８２】
外部ＬＵ容量８１０は、対象外部ＬＵの容量を表す情報である。
【００８３】
以上が、各種情報についての説明である。なお、図１〜図８を参照して行った説明は、実施例１〜４で共通である。
【００８４】
図９は、実施例１に係る仮想ストレージ１１０が発揮する複数の機能の一例を示す。
【００８５】
実施例１では、仮想ストレージ１１０においてストレージプロセッサ２００が１以上のコンピュータプログラムを実行することにより、以下の複数の機能、すなわち、データ移行制御部（ａ）９００、データ移行実行部（ａ）９１０、読み書き実行部（ａ）９２０、ページ割り当て処理部９３０、ライトデータ受領部９４０、ライトアフタ処理部９５０、外部ページ割り当て処理部９６０、外部ページ解放処理部９７０、制御権移行部９８０及び制御権移行決定部９９０が発揮される。これらの機能によって実行される処理の少なくとも一部が、ハードウェア回路で実行されても良い。
【００８６】
実施例１では、移行元の仮想ストレージ１１０から移行先の仮想ストレージ１１０にホストＬＵを移行するとき、移行処理の制御を移行元の仮想ストレージ１１０が実行する。また、移行処理中、ホスト１００は、移行元の仮想ストレージ１１０にリード／ライト要求を発行することができる。
【００８７】
本実施例では、管理サーバ１６０が、各仮想ストレージ１１０の負荷を調べ、移行すべき仮想ストレージ１１０のホストＬＵと移行先となる仮想ストレージ１１０を決定する。本実施例では、移行元となるホストＬＵの識別子は、移行先のホストＬＵに引き継がれないものとするが、本発明は、ファイバチャネルプロトコルで定義されたワールワイドネームのような識別子を引き継ぐ場合も有効である。管理サーバ１６０は、移行元の仮想ストレージ１１０に、移行元のホストＬＵの識別子と、移行先の仮想ストレージ１１０の識別子と、移行先のホストＬＵの識別子とを送信する。また、管理サーバ１６０は、移行先の仮想ストレージ１１０に、移行元の仮想ストレージ１１０の識別子と、移行元のＬＵの識別子と、移行先のホストＬＵの識別子と、そのホストＬＵの仮想容量を表す情報とを送信する。
【００８８】
実施例１では、移行元の仮想ストレージ１１０のデータ移行制御部（ａ）９００が、管理サーバ１６０からＬＵ移行要求を受け、その要求を受けたことを管理サーバ１６０に応答した後、図１０に示す処理フローを実行する。
【００８９】
図１０は、移行元の仮想ストレージ１１０におけるデータ移行制御部（ａ）９００の処理フローの一例を示す。
【００９０】
ステップ１０００では、データ移行制御部（ａ）９００は、移行元のホストＬＵの識別子に対応するホストＬＵ情報２６０を見つける。
【００９１】
ステップ１００１では、データ移行制御部（ａ）９００は、ステップ１０００で見つけたホストＬＵ情報２６０（図１０の説明において「対象情報２６０」）における移行中フラグ７３０の値を「オン」を表す値に変更する。さらに、データ移行制御部（ａ）９００は、管理サーバ１６０から受け取った移行先の仮想ストレージ１１０の識別子と移行先のＬＵの識別子とを、対象情報２６０における移行中仮想ストレージ識別子７４０及び移行中ホストＬＵ識別子７５０として設定する。さらに、データ移行制御部（ａ）９００は、対象情報２６０におけるコピーポインタ７６０として、移行元のＬＵにおける先頭のＬＵ領域を表す情報を設定する。
【００９２】
ステップ１００２では、データ移行制御部（ａ）９００は、対象情報２６０におけるコピーポインタ７５０が示すＬＵ領域（図１０の説明において「対象移行元領域」）に対応する容量プール識別子７７０及び相対アドレス７８０を対象情報２６０から特定する。
【００９３】
ステップ１００３では、データ移行制御部（ａ）９００は、ステップ１００２で特定した識別子７７０及びアドレス７８０の値がヌルであるか否かを判断する。
【００９４】
ステップ１００３の判断の結果が肯定的の場合（ステップ１００３：Ｙ）、ステップ１００４で、データ移行制御部（ａ）９００は、対象移行元領域にページが割り当てられていないことを、移行先の仮想ストレージ１１０に通知する。この後、処理は、ステップ１０１１へジャンプする。
【００９５】
ステップ１００３の判断の結果が否定的の場合（ステップ１００３：Ｎ）、ステップ１００５で、データ移行制御部（ａ）９００は、対象移行元領域に割り当てられているページが書き込み先であるが未だそのページに書き込まれていないデータがキャッシュメモリ２７０に有るか否かを判断する。
【００９６】
ステップ１００５の判断の結果が肯定的の場合（ステップ１００５：Ｙ）、ステップ１００６で、データ移行制御部（ａ）９００は、そのデータを、対象移行元領域に割り当てられているページ（内部ページ又は外部ページ）に書き込む。外部ページが書込み先の場合、データ移行制御部（ａ）９００は、その外部ページに対応した外部ＬＵ領域（外部ストレージ１３０内の外部ＬＵにおけるＬＵ領域）に、データを書き込む。
【００９７】
ステップ１００７では、データ移行制御部（ａ）９００は、対象情報２６０における、対象移行元領域に対応した容量プール識別子７７０が、外部容量プールの識別子か否かを判断する。
【００９８】
ステップ１００７の判断の結果が肯定的の場合（ステップ１００７：Ｙ）、ステップ１００８で、データ移行制御部（ａ）９００は、対象移行元領域に対応した容量プール識別子７７０（外部容量プールの識別子）に対応する外部容量プール情報２５０（図１０において「対象外部容量プール情報２５０」）を特定する。データ移行制御部（ａ）９００は、対象外部容量プール情報２５０を基に、対象移行元領域に割り当てられている外部ページに対応する外部ＬＵ領域の相対アドレス（外部ＬＵでの相対アドレス）と、その外部ＬＵ領域を含んだ外部ＬＵの識別子とを特定し、それらの情報を、移行先の仮想ストレージ１１０に送信する。この後、処理は、ステップ１０１１へジャンプする。
【００９９】
ステップ１００７の判断の結果が否定的の場合（ステップ１００７：Ｎ）、データ移行制御部（ａ）９００は、ステップ１００９で、対象移行元領域に割り当てられている内部ページからデータを読み出し、そのデータを、キャッシュメモリ２７０に格納する。
【０１００】
ステップ１０１０では、データ移行制御部（ａ）９００は、移行先の仮想ストレージ１１０に、対象移行元領域の相対アドレスと、対象移行元領域に移行先の仮想ストレージ１１０における内部ページを割り当てる必要があるということと、ステップ１００９でキャッシュメモリ２７０に格納したデータとを送信する。
【０１０１】
ステップ１０１１では、データ移行制御部（ａ）９００は、移行先の仮想ストレージ１１０から完了報告を待つ。
【０１０２】
ステップ１０１２では、データ移行制御部（ａ）９００は、移行元のＬＵの末尾のＬＵ領域について処理が完了したか否かを判断する。
【０１０３】
ステップ１０１２の判断の結果が否定的の場合（ステップ１０１２：Ｎ）、ステップ１０１３で、データ移行制御部（ａ）９００は、次のＬＵ領域を表す情報を、移行元ホストＬＵに対応するホストＬＵ情報２６０におけるコピーポインタ７５０として設定し、ステップ１００２ヘジャンプする。
【０１０４】
ステップ１０１２の判断の結果が肯定的の場合（ステップ１０１２：Ｙ）、ステップ１０１４で、データ移行制御部（ａ）９００は、対象ホストＬＵ情報２６０における移行中フラグ７３０の値を、オフを表す値に変更する。そして、データ移行制御部（ａ）９００は、移行処理が完了したことを管理サーバ１６０に報告し、次の指示をまつ。
【０１０５】
ステップ１０１５で、データ移行制御部（ａ）９００は、管理サーバ１６０から、移行元のホストＬＵに関する情報を消去して良いという指示を受け、以下の処理を実行する。すなわち、データ移行制御部（ａ）９００は、移行元のホストＬＵに割り当てられている全てのページを解放することにより、それぞれのページを空きページとする。また、この際、他の仮想ストレージ１１０が制御権をもっている外部容量プールの外部ページを解放する場合、データ移行制御部（ａ）９００は、その外部容量プールに対応する外部ＬＵ情報２３０を特定する。データ移行制御部（ａ）９００は、その情報２３０における制御権仮想ストレージ５５０から識別される他の仮想ストレージ１１０に、その外部ページの解放要求を送る。データ移行制御部（ａ）９００は、その解放要求に応答した他の仮想ストレージ１１０からの要求により、外部ページを解放する。さらに、データ移行制御部（ａ）９００は、移行元ホストＬＵに対応するホストＬＵ情報２６０を消去する。この後、データ移行制御部（ａ）９００は、この完了を、管理サーバ１６０に通知する。
【０１０６】
ステップ１０１６では、データ移行制御部（ａ）９００は、移行元のホストＬＵに割り当てられていた外部ページが、どの外部容量プールに幾つ存在するかを特定する。
【０１０７】
ステップ１０１７では、データ移行制御部（ａ）９００は、ステップ１０１６で特定された外部容量プール毎に、制御権をどの仮想ストレージ１１０がもっているかを判断する。
【０１０８】
ステップ１０１８では、データ移行制御部（ａ）９００は、移行元のホストＬＵに割り当てられている外部ページを含んだ外部容量プールとして、移行元の仮想ストレージ１１０（自分）以外の他の仮想ストレージ１１０が制御権をもっている外部容量プールがあるか否かを判断する。外部容量プールについての制御権とは、外部ページの割り当て・解放権限である。
【０１０９】
ステップ１０１８の判断の結果が否定的の場合（ステップ１０１８：Ｎ）、処理は、ステップ１０２０へジャンプする。
【０１１０】
ステップ１０１８の判断の結果が肯定的の場合（ステップ１０１８：Ｙ）、ステップ１０１９で、データ移行制御部（ａ）９００は、外部容量プールの制御権をもつ他の仮想ストレージ１１０に、その外部容量プールについて、ステップ１０１６で特定された外部ページ数（移行元ＬＵに割り当てられていた外部ページの数）を表す情報を送信する。データ移行制御部（ａ）９００は、外部容量プールの制御権を移行するか否かの決定を、上記他の仮想ストレージ１１０から待つ。
【０１１１】
ステップ１０２０では、データ移行制御部（ａ）９００は、移行元の仮想ストレージ１１０（自分）が制御権をもっている外部容量プールとして、移行元のホストＬＵに割り当てられている外部ページを含んだ外部容量プールがあるか否かを判断する。
【０１１２】
ステップ１０２０の判断の結果が否定的の場合（ステップ１０２０：Ｎ）、処理が終了する。
【０１１３】
ステップ１０２０の判断の結果が肯定的の場合（ステップ１０２０：Ｙ）、ステップ１０２１で、データ移行制御部（ａ）９００は、外部容量プールの制御権を移行するか否かを判断する。
【０１１４】
ステップ１０２１の判断の結果が否定的の場合（ステップ１０２１：Ｎ）、処理が終了する。
【０１１５】
ステップ１０２１の判断の結果が肯定的の場合（ステップ１０２１：Ｙ）、ステップ１０２２で、データ移行制御部（ａ）９００は、どの仮想ストレージ１１０に外部容量プールの制御権を移行するかを決定する。ここでは、例えば、ＬＵの移行先の仮想ストレージ１１０が決定される。その制御権の移行先の仮想ストレージ１１０を決定した場合、その制御権の移行先の仮想ストレージ１１０に、データ移行制御部（ａ）９００は、その外部容量プールの制御権を移行することと、その外部容量プールに対応する外部容量プール情報２５０が表す全ての情報とを、移行先の仮想ストレージ１１０に送信する。また、それらの情報を送信した後、データ移行制御部（ａ）９００は、その外部容量プール情報２５０内の情報を所定値にリセットし、且つ、その外部容量プールに対応する外部ＬＵ情報２４０における制御権仮想ストレージ５５０として移行先の仮想ストレージ１１０の識別子を設定する。
【０１１６】
ステップ１０２３では、データ移行制御部（ａ）９００は、その外部容量プールに相当する外部ＬＵを有する外部ストレージ１３０に接続された他の全ての仮想ストレージ１１０（移行元の仮想ストレージと制御権の移行先の仮想ストレージ以外の仮想ストレージ）に、制御権の移行先の仮想ストレージ１１０の識別子を通知する。さらに、データ移行制御部（ａ）９００は、この外部ＬＵに対応する外部ＬＵ情報２４０における制御権情報５４０の値をオフを表す値に変更する。
【０１１７】
以上で、データ移行制御部（ａ）９００の処理が完了する。
【０１１８】
実施例１では、移行先の仮想ストレージ１１０において、データ移行実行部（ａ）９１０が、管理サーバ１６０から、移行元の仮想ストレージ１１０の識別子と、移行元のホストＬＵの識別子と、移行先のホストＬＵの識別子と、そのホストＬＵの仮想容量を表す情報とを受信し、図１１に示す処理フローを実行する。
【０１１９】
図１１は、移行先の仮想ストレージ１１０におけるデータ移行実行部（ａ）９１０の処理フローの一例を示す。
【０１２０】
ステップ１１００では、データ移行実行部（ａ）９１０は、受領したホストＬＵの識別子に対応するホストＬＵ情報２６０を生成する。その情報２６０において、ホストＬＵ識別子７００及び仮想容量７１０として、受領したホストＬＵの識別子と仮想容量とが設定される。
【０１２１】
ステップ１１０１では、データ移行実行部（ａ）９１０は、移行元の仮想ストレージ１１０から情報を待つ。
【０１２２】
ステップ１１０２では、データ移行実行部（ａ）９１０は、移行元のホストＬＵのＬＵ領域（対象移行元領域）に対応する、移行先のホストＬＵにおけるＬＵ領域（図１１において「対象移行先領域」）に、ページが割り当てられていないという情報が送られてきたかを判断する。
【０１２３】
ステップ１１０２の判断の結果が肯定的の場合（ステップ１１０２：Ｙ）、データ移行実行部（ａ）９１０は、ステップ１１０３で、対象移行先領域に対応する容量プール識別子７７０と相対アドレス７８０としてそれぞれヌル値を設定する。この後、処理は、ステップ１１０８へジャンプする。
【０１２４】
ステップ１１０４では、データ移行実行部（ａ）９１０は、対象移行先領域が外部ページに割り当てられているという情報を受けたか否かを判断する。
【０１２５】
ステップ１１０４の判断の結果が肯定的の場合（ステップ１１０４：Ｙ）、データ移行実行部（ａ）９１０は、ステップ１１０５では、受けた外部容量プール識別子及び相対アドレスを、対象移行先領域に対応する外部容量プール識別子７７０と相対アドレス７８０として設定する。そのあと、処理は、ステップ１１０８へジャンプする。
【０１２６】
ページを確保せよという要求を移行元の仮想ストレージ１１０から受けた場合、データ移行実行部（ａ）９１０は、ステップ１１０６で、移行先の仮想ストレージ１１０の内部容量プール情報２３０を基に、移行先の仮想ストレージ１１０における内部容量プールから空きの内部ページを特定し、特定した内部ページを対象移行先領域に割り当てる。具体的には、例えば、データ移行実行部（ａ）９１０は、対象移行先領域に対応した容量プール識別子７７０として、割り当てられた内部ページを含んだ内部容量プールの識別子を設定し、且つ、対象移行先領域に対応した相対アドレス７８０として、内部ページのアドレスを設定する。
【０１２７】
ステップ１１０７では、データ移行実行部（ａ）９１０は、移行元の仮想ストレージ１１０から受けたデータを、ステップ１１０６で割り当てた内部ページに書き込む。
【０１２８】
ステップ１１０８では、データ移行実行部（ａ）９１０は、対象移行先領域が移行先のホストＬＵにおける末尾のＬＵ領域であるか否かを判断する（ステップ１１０８）。
【０１２９】
ステップ１１０８の判断の結果が否定的の場合（ステップ１１０８：Ｎ）、データ移行実行部（ａ）９１０は、ステップ１１０１へジャンプして、次の要求をまつ。
【０１３０】
ステップ１１０８の判断の結果が肯定的の場合（ステップ１１０８：Ｙ）、ステップ１１０９で、データ移行実行部（ａ）９１０は、管理サーバ１６０へ移行が完了したことを報告する。
【０１３１】
以上で、データ移行実行部（ａ）９１０が処理を終了する。
【０１３２】
実施例１で、管理サーバ１６０は、移行元の仮想ストレージ１１０と移行先の仮想ストレージ１１０からホストＬＵの移行処理が完了した情報を受け付けると、ホスト１００に、移行元のホストＬＵのＬＵ識別子を指定したリード／ライト要求の送信先を移行先の仮想ストレージ１１０に切り替えるよう要求する。移行元のホストＬＵのＬＵＮと移行先のホストＬＵのＬＵＮが交換される或いは、ワールドワイドネームが移行元から移行先に送られ、ＳＡＮ（ａ）１２０などで自動的に移行先の仮想ストレージ１１０にリード／ライト要求の送信先が切り替えられても良い。
【０１３３】
その後、管理サーバ１６０は、移行元の仮想ストレージ１１０に移行元のホストＬＵの情報を消去する要求を送信する。その要求に応答して、移行元の仮想ストレージ１１０が、移行元のホストＬＵに対応するホストＬＵ情報２６０を所定値にリセットすることができる。
【０１３４】
図１２は、移行元の仮想ストレージ１１０における読み書き実行部（ａ）９２０の処理フローの一例を示す。この処理フローは、移行元のホストＬＵの移行中に移行元のホストＬＵを指定したリード／ライト要求を移行元の仮想ストレージ１１０がホスト１００から受けたときに実行される処理フローである。
【０１３５】
ステップ１２００では、読み書き実行部（ａ）９２０は、受け取った要求が、リード要求かライト要求かをチェックする。
【０１３６】
要求がリード要求の場合、読み書き実行部（ａ）９２０は、ステップ１２０１で、リード対象データが、キャッシュメモリ２７０にあるかどうかを判断する。
【０１３７】
ステップ１２０１の判断の結果が肯定的の場合（ステップ１２０１：Ｙ）、処理が、ステップ１２０３へジャンプする。
【０１３８】
ステップ１２０１の判断の結果が否定的の場合（ステップ１２０１：Ｎ）、ステップ１２０２で、読み書き実行部（ａ）９２０は、リード元を含んだＬＵ領域に割り当てられているページからリード対象データを読出し、そのリード対象データを、キャッシュメモリ２７０に書き込む。
【０１３９】
ステップ１２０３では、読み書き実行部（ａ）９２０は、キャッシュメモリ２７０からリード対象データを読出し、そのデータをホスト１００に転送する。以上で、処理が完了する。
【０１４０】
要求がライト要求の場合、ステップ１２０４では、読み書き実行部（ａ）９２０は、ライト要求で指定されたライト先を含んだＬＵ領域にページが割り当てられているか否かを判断する。
【０１４１】
ステップ１２０４の判断の結果が否定的の場合（ステップ１２０４：Ｎ）、読み書き実行部（ａ）９２０は、ステップ１２０５で、ページ割り当て処理部９３０をコールする。ステップ１２０６で、読み書き実行部（ａ）９２０は、ライト対象データをホスト１００から受け、そのデータをキャッシュメモリ２７０に書き込む。
【０１４２】
ステップ１２０７で、読み書き実行部（ａ）９２０は、ライト先のホストＬＵに対応するホストＬＵ情報２６０における移行中フラグ７３０がオンか否かを判断する。
【０１４３】
ステップ１２０７の判断の結果が否定的の場合（ステップ１２０７：Ｎ）、処理が完了する。
【０１４４】
ステップ１２０７の判断の結果が肯定的の場合（ステップ１２０７：Ｙ）、ステップ１２０８で、読み書き実行部（ａ）９２０は、コピーポインタ７５０を基に、ライト先領域について移行処理を完了しているかをチェックする。コピーポインタ７５０が表すＬＵ領域の相対アドレスが、ライト先領域の相対アドレスよりも後のアドレスであれば、ライト先領域について移行処理が完了している。
【０１４５】
ステップ１２０８の判断の結果が否定的の場合（ステップ１２０８：Ｎ）、処理が完了する。
【０１４６】
ステップ１２０８の判断の結果が肯定的の場合（ステップ１２０８：Ｙ）、ステップ１２０９で、読み書き実行部（ａ）９２０は、ライト先領域に割り当てられているページが、外部ページか否かを判断する。
【０１４７】
ステップ１２０９の判断の結果が否定的の場合（ステップ１２０９：Ｎ）、ステップ１２１０で、読み書き実行部（ａ）９２０は、キャッシュメモリ２７０に格納したライト対象データとそのライト要求（ライト先ＬＵのＬＵ識別子とライト先ＬＵ領域の相対アドレスとを含んだ要求）を、移行先の仮想ストレージ１１０に送信する。その後、処理が完了する。なお、移行先の仮想ストレージ１１０は、そのライト要求を受けた場合、そのライト要求で指定されているライト先ＬＵに対応したホストＬＵと、そのライト要求で指定されているライト先ＬＵ領域に対応したＬＵ領域とを特定し、特定したホストＬＵ内の特定したＬＵ領域に割り当てられている内部ページに、移行元の仮想ストレージ１１０からのライト対象データを書き込む。
【０１４８】
ステップ１２０９の判断の結果が肯定的の場合（ステップ１２０９：Ｙ）、ステップ１２１１で、読み書き実行部（ａ）９２０は、キャッシュメモリ２７０に格納したライト対象データとそのライト要求（ライト先ＬＵ領域に割り当てられている外部ページを含んだ外部容量プールに対応する外部ＬＵのＬＵＮと、その外部ページに対応する相対アドレスとを含んだ要求）を、その外部ＬＵを有する外部ストレージ１３０に送信する。以上で、処理が完了する。なお、外部ストレージ１３０は、そのライト要求を受けた場合、そのライト要求で指定されている外部ＬＵと、そのライト要求で指定されている相対アドレスに対応した外部ＬＵ領域とを特定し、特定した外部ＬＵ内の特定した外部ＬＵ領域に、移行元の仮想ストレージ１１０からのライト対象データを書き込む。
【０１４９】
図１３は、ページ割り当て処理部９３０の処理フローの一例を示す。ページ割り当て処理部９３０は、ページが割り当てられていないＬＵ領域を指定したライト要求を仮想ストレージ１１０が受けた場合に、そのＬＵ領域にページを割り当てる処理を実行する。
【０１５０】
ステップ１３００では、ページ割り当て処理部９３０は、内部ページを割り当てるべきか否かを判断する。内部ページを割り当てるべきか否かは、所定のルールに従い決定されて良い。ルールとしては、例えば、下記のうちの少なくとも１つが考えられる。
（＊）ホストＬＵには内部ページと外部ページが交互に割り当てられる。
（＊）ホストＬＵには内部ページが優先的に割り当てられ、ホストＬＵに関連付けられている内部容量プールの割当て済み内部ページの割合が所定割合以下になった場合に、ホストＬＵに関連付けられている外部容量プールから外部ページが割り当てられる。
【０１５１】
ステップ１３００の判断の結果が肯定的の場合（ステップ１３００：Ｙ）、ステップ１３０１で、ページ割り当て処理部９３０は、ライト先ＬＵに関連付けられている内部容量プールに対応した内部容量プール情報２３０を基に、割り当てるページを決定し、その内部容量プール情報２３０の中の情報で更新すべき情報を更新する。さらに、ページ割り当て処理部９３０は、ライト先ＬＵに対応するホストＬＵ情報２６０における容量プール識別子７７０と相対アドレス７８０として、決定した内部ページを含んだ内部容量プールの識別子と、決定した内部プールのアドレスとを設定する。その後、処理が完了する。
【０１５２】
ステップ１３００の判断の結果が否定的の場合（ステップ１３００：Ｎ）、ステップ１３０２で、ページ割り当て処理部９３０は、割当元の外部容量プールを決定する。また、ページ割り当て処理部９３０は、その処理部９３０を含んだ仮想ストレージ１１０が、その外部容量プールに対応する外部ＬＵの制御権があるか否かを、その外部ＬＵに対応する外部ＬＵ情報２４０内の制御権情報５４０を基に判断する。
【０１５３】
ステップ１３０２の判断の結果が肯定的の場合（ステップ１３０２：Ｙ）、ステップ１３０３で、ページ割り当て処理部９３０は、その外部ＬＵに対応する外部容量プール情報２５０を基に、割当てる外部ページを決定し、外部容量プール情報２５０の中の情報で更新すべき情報を更新する。さらに、ページ割り当て処理部９３０は、ライト先ＬＵに対応するホストＬＵ情報２６０内の容量プール識別子７７０と相対アドレス７８０として、ステップ１３０２で決定した外部容量プールの識別子と、ステップ１３０３で決定した外部ページのアドレスとを設定する。その後、処理が完了する。
【０１５４】
ステップ１３０２の判断の結果が否定的の場合（ステップ１３０２：Ｎ）、ステップ１３０４で、ページ割り当て処理部９３０は、ステップ１３０２で決定した外部容量プールの制御権を有している仮想ストレージ１１０に、ページの割り当てを要求し、回答をまつ。
【０１５５】
ステップ１３０５で、ページ割り当て処理部９３０は、ステップ１３０４での要求先の仮想ストレージ１１０からページのアドレスを受け、ステップ１３０２で決定した外部容量プールの識別子と、受けたアドレスとを、ライト先ＬＵに対応するホストＬＵ情報２６０における容量プール識別子７７０及び相対アドレス７８０として設定する。その後、処理が完了する。
【０１５６】
図１４は、移行先の仮想ストレージにおけるライトデータ受領部９４０の処理フローの一例を示す。ライトデータ受領部９４０は、移行元の仮想ストレージ１１０からライト対象データを受領する。
【０１５７】
ステップ１４００で、ライトデータ受領部９４０は、移行元の仮想ストレージ１１０からライト対象データを受け、そのデータをキャッシュメモリ２７０に格納する。
【０１５８】
ステップ１４０１では、ライトデータ受領部９４０は、そのデータのライト先のＬＵ領域にページが割り当てられているか否かを判断する。
【０１５９】
ステップ１４０１の判断の結果が肯定的の場合（ステップ１４０１：Ｙ）、処理が完了する。
【０１６０】
ステップ１４０１の判断の結果が否定的の場合（ステップ１４０１：Ｎ）、ステップ１４０２で、ライトデータ受領部９４０は、ページ割り当て部９３０をコールして、ライト先のＬＵ領域にページを割り当てる。その後、処理を完了する。
【０１６１】
図１５は、ライトアフタ処理部９５０の処理フローの一例を示す。ライトアフタ処理部９５０は、キャッシュメモリ２７０内のライト対象データ（ライト先ＬＵ領域に割り当てられたページに書き込まれていないデータ）をページに書き込む。
【０１６２】
ステップ１５００では、ライトアフタ処理部９５０は、ライト対象データのライト先ＬＵ領域に割り当てられているページが内部ページか外部ページかを判断する。
【０１６３】
ページが内部ページの場合、ステップ１５０１で、ライトアフタ処理部９５０は、データをキャッシュメモリ２７０から、内部ページに書き込む。このあと、処理が完了する。
【０１６４】
ページが外部ページの場合、ステップ１５０２で、ライトアフタ処理部９５０は、キャッシュメモリ２７０内のデータとそのライト要求（その外部ページを含んだ外部ＬＵの識別子と、その外部ページの相対アドレスとを指定した要求）とを、外部ストレージ１３０に送信する。その後、処理が完了する。
【０１６５】
図１６は、外部ページ割り当て処理部９６０の処理フローの一例を示す。外部ページ割り当て処理部９６０は、外部容量プールの制御権をもっている仮想ストレージ１１０が、他の仮想ストレージ１１０から、ページの割り当て要求を受けときに、次の処理を実行する。
【０１６６】
ステップ１６００では、外部ページ割り当て処理部９６０は、指定された外部容量プールに対応する外部容量プール情報２５０を基に、割り当てる外部ページを決定し、外部容量プール情報２５０の中の情報で更新すべき情報を更新する（外部ページをＬＵ領域に割り当てる）。
【０１６７】
ステップ１６０１では、外部ページ割り当て処理部９６０は、割り当てた外部ページのアドレスを、割り当てを要求した仮想ストレージ１１０に送る。以上で処理が完了する。
【０１６８】
図１７は、外部ページ解放処理部９７０の処理フローの一例を示す。外部ページ解放処理部９７０は、外部容量プールの制御権をもっている仮想ストレージ１１０が、他の仮想ストレージ１１０から、ページの解放要求を受けたときに、次の処理を実行する。
【０１６９】
ステップ１７００では、外部ページ解放処理部９７０は、受けた情報を基に、外部容量プール情報２５０から、解放する外部ページを特定し、外部容量プール情報２５０の中の情報で更新すべき情報を更新する（特定した外部ページを解放する）。
【０１７０】
図１８は、制御権移行部９８０の処理フローの一例を示す。制御権移行部９８０は、外部ＬＵ（外部容量プール）の制御権の移行を、他の仮想ストレージ１１０から受けたときに、次の処理を実行する。
【０１７１】
ステップ１８００で、制御権移行部９８０は、制御権の移行先が、この制御権移行部９８０を含んだ仮想ストレージ１１０（自仮想ストレージ）であるか否かを判断する。
【０１７２】
ステップ１８００の判断の結果が否定的の場合（ステップ１８００：Ｎ）、ステップ１８０１で、制御権移行部９８０は、他の仮想ストレージ１１０の識別子を、受けた情報で指定されている外部ＬＵ（外部容量プール）に対応する制御権仮想ストレージ５５０として設定する。この後、処理が完了する。
【０１７３】
ステップ１８００の判断の結果が肯定的の場合（ステップ１８００：Ｙ）、ステップ１８０２で、制御権移行部９８０は、受けた情報を基に、この外部ＬＵ（外部容量プール）に対応する制御権情報５４０の値をオンとし、制御権仮想ストレージ５５０として、自仮想ストレージ１１０の識別子を設定する。さらに、制御権移行部９８０は、受けた情報に従う外部容量プールに関係する情報を、外部容量プール情報２５０として生成し登録する。
【０１７４】
図２４は、制御権移行決定部９９０の処理フローの一例を示す。制御権移行決定部９９０は、他の仮想ストレージ１１０が実行したホストＬＵの移行により、制御権を他の仮想ストレージ１１０に移行するかどうかの判断をするよう要求を受けたとき、次の処理を実行する。
【０１７５】
ステップ２４００で、制御権移行決定部９９０は、受けた情報を基に、外部ＬＵ（外部容量プール）の制御権（割り当て・解放権限）を移行するか否かを決定する。ほとんどの場合、移行元の仮想ストレージ１１０から制御権は移行されないと決定されるが、例えば、移行元の仮想ストレージ１１０の負荷が所定負荷以上に高い場合に、移行元の仮想ストレージ１１０から制御権が移行されると決定される。
【０１７６】
ステップ２４００の判断の結果が否定的の場合（ステップ２４００：Ｎ）、処理が終了する。
【０１７７】
ステップ２４０１で、制御権移行決定部９９０は、どの仮想ストレージ１１０に権限を移行するかを決定する。制御権移行決定部９９０は、制御権の移行先の仮想ストレージ１１０に、制御権を移行することと、対応する外部容量プール情報２５０が表す全ての情報とを仮想ストレージ１１０に送る。また、この情報を送った後、制御権移行決定部９９０は、対応する外部容量プール情報２５０の情報を所定値にリセットし、且つ、制御権仮想ストレージ５５０として、移行先の仮想ストレージ１１０の識別子を設定する。さらに、制御権移行決定部９９０は、この外部ＬＵに対応する外部ＬＵ情報２４０内の制御権情報５４０の値をオフとする。
【０１７８】
ステップ２４０２では、制御権移行決定部９９０は、その外部ＬＵを有する外部ストレージ１３０に接続された他の仮想ストレージ１１０に、制御権の移行先の仮想ストレージ１１０の識別子を通知する。以上で処理が完了する。
【実施例２】
【０１７９】
以下、実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略或いは簡略する。
【０１８０】
図１９は、実施例２に係る仮想ストレージ１１０が発揮する複数の機能の一例を示す。
【０１８１】
実施例２では、複数の機能として、データ移行制御部（ｂ）１９００、データ移行実行部（ｂ）１９１０、読み書き実行部（ｂ）１９２０、リード要求受領部１９３０、ページ割り当て処理部９３０、ライトデータ受領部９４０、ライトアフタ処理部９５０、外部ページ割り当て処理部９６０、外部ページ解放処理部９７０、制御権移行部９８０、及び制御権移行決定部９９０がある。
【０１８２】
この中で、ページ割り当て処理部９３０、ページ割り当て処理部９３０、ライトデータ受領部９４０、ライトアフタ処理部９５０、外部ページ割り当て処理部９６０、外部ページ解放処理部９７０、制御権移行部９８０、及び制御権移行決定部９９０は、実施例１と共通なので、説明を省略する。
【０１８３】
実施例２では、移行元の仮想ストレージ１１０から移行先の仮想ストレージ１１０にホストＬＵを移行するとき、移行処理の制御を、移行先の仮想ストレージ１１０が実行する。また、移行処理中、ホスト１００は、移行先の仮想ストレージにリード／ライト要求を発行する。
【０１８４】
実施例２でも、管理サーバ１６０が、各仮想ストレージ１１０の負荷を調べ、移行元のホストＬＵと移行先の仮想ストレージ１１０を決定する。管理サーバ１６０は、移行元の仮想ストレージ１１０に、移行元のホストＬＵの識別子と、移行先の仮想ストレージ１１０の識別子と、移行先のホストＬＵの識別子を送る。また、管理サーバ１６０は、移行先の仮想ストレージ１１０に、移行元の仮想ストレージ１１０の識別子と、移行元のＬＵの識別子と、移行先のホストＬＵの識別子と、移行元のホストＬＵの仮想容量とを送る。移行元の仮想ストレージ１１０と移行先の仮想ストレージ１１０の双方から、受領報告が帰ってくると、管理サーバ１６０は、ホスト１００に、移行元のホストＬＵのリード／ライト要求のあて先を、移行先の仮想ストレージ１１０に切り替えるよう要求する。ワールドワイドネームが引き継がれ、ＳＡＮ１２０などで自動的に、移行先の仮想ストレージに、リード／ライト要求のあて先が切り替えられても良い。
【０１８５】
実施例２では、移行先の仮想ストレージ１１０におけるデータ移行制御部（ｂ）１９００が、管理サーバ１６０から、移行元の仮想ストレージ１１０の識別子、移行元のホストＬＵの識別子、移行先のホストＬＵの識別子と、移行元のホストＬＵの仮想容量とを含んだ情報を受け、その情報を受けたことを、管理サーバ１６０に応答した後、以下の図２０に示す処理フローを実行する。
【０１８６】
図２０は、移行先の仮想ストレージ１１０におけるデータ移行制御部（ｂ）１９００の処理フローの一例を示す。
【０１８７】
ステップ２０００では、データ移行制御部（ｂ）１９００は、移行先ホストＬＵ（受領したホストＬＵの識別子）に対応するホストＬＵ情報を生成する。データ移行制御部（ｂ）１９００は、ホストＬＵ識別子７００及び仮想容量７１０として、移行先ホストＬＵの識別子と仮想容量とを設定する。
【０１８８】
ステップ２００１では、データ移行制御部（ｂ）１９００は、移行先ホストＬＵに対応する移行中フラグ７３０をオンにする。さらに、データ移行制御部（ｂ）１９００は、管理サーバ１６０から受けた移行先仮想ストレージ１１０の識別子と移行先ＬＵの識別子とを、移行先ホストＬＵに対応する移行中仮想ストレージ識別子７４０及び移行中ホストＬＵ識別子７５０として設定する。さらに、データ移行制御部（ｂ）１９００は、コピーポインタ７６０を最初のＬＵ領域に設定する。
【０１８９】
ステップ２００２では、データ移行制御部（ｂ）１９００は、コピーポインタ７６０が示すＬＵ領域（以下、図２０の説明で「対象移行先領域」）の処理要求を、移行元の仮想ストレージ１１０に要求する。
【０１９０】
ステップ２００３では、データ移行制御部（ｂ）１９００は、移行先となる仮想ストレージ１１０から情報が送られてくるのを待つ。
【０１９１】
ステップ２００４−ステップ２００９は、図１１のステップ１１０２−ステップ１１０７と同様のため、説明を省略する。
【０１９２】
ステップ２０１０では、データ移行制御部（ｂ）１９００は、対象移行先領域が移行先ホストＬＵにおける末尾のＬＵ領域であるか否かを判断する。
【０１９３】
ステップ２０１０の判断の結果が否定的の場合（ステップ２０１０：Ｎ）、ステップ２０１１で、データ移行制御部（ｂ）１９００は、次のＬＵ領域を表す情報を、移行先ホストＬＵに対応するホストＬＵ情報２６０におけるコピーポインタ７６０として設定し、ステップ２００２ヘジャンプする。
【０１９４】
ステップ２０１０の判断の結果が肯定的の場合（ステップ２０１０：Ｙ）、ステップ２０１２以降が行われる。ただし、ステップ２０１２−ステップ２０１４は、図１１のステップ１１０９−ステップ１１１１と同様のため、説明を省略する。
【０１９５】
実施例２では、移行元の仮想ストレージ１１０が、データ移行実行部（ｂ）１９１０が、管理サーバ１６０から、移行先の仮想ストレージ１１０の識別子と、移行先のホストＬＵの識別子と、移行元のＬＵの識別子とを含んだ情報を受領し、その情報を受領したことを、管理サーバ１６０に応答した後、要求を受け、図２１に示す処理フローを実行する。
【０１９６】
図２１は、移行元の仮想ストレージ１１０におけるデータ移行実行部（ｂ）１９１０の処理フローの一例を示す。
【０１９７】
ステップ２１００では、データ移行実行部（ｂ）１９１０は、移行元のホストＬＵの識別子に対応するホストＬＵ情報を見つける。
【０１９８】
ステップ２１０１では、データ移行実行部（ｂ）１９１０は、移行先の仮想ストレージ１１０から、処理要求が送られてくるのをまつ。
【０１９９】
移行先の仮想ストレージ１１０から、処理要求が来ると、その要求に従う対象移行先領域に対応する移行元のＬＵ領域（図２１において「対象移行元領域」）について、ステップ２１０２以降が実行される。ただし、ステップ２１０２−ステップ２１１０は、図１０のステップ１００２−ステップ１０１０と同様であるため、説明を省略する。
【０２００】
ステップ２１１１では、データ移行実行部（ｂ）１９１０は、対象移行元領域が移行元ホストＬＵにおける末尾のＬＵ領域かどうかを判断する。
【０２０１】
ステップ２１１１の判断の結果が否定的の場合（ステップ２１１１：Ｎ）、データ移行実行部（ｂ）１９１０は、ステップ２１０１へジャンプして、次の処理要求が、移行先の仮想ストレージ１１０から送られてくるのを待つ。
【０２０２】
ステップ２１１１の判断の結果が肯定的の場合（ステップ２１１１：Ｙ）、データ移行実行部（ｂ）１９１０は、ステップ２１１２で、移行処理が完了したことを管理サーバ１６０に報告する。この後、処理が完了する。
【０２０３】
ステップ２１１３−ステップ２１２１は、図１０のステップ１０１５−ステップ１０２３と同様である。このため、説明を省略する。
【０２０４】
実施例２で、管理サーバ１６０は、移行元の仮想ストレージ１１０と移行先の仮想ストレージ１１０からホストＬＵの移行処理が完了した情報を受け付けると、管理サーバ１６０は、移行元の仮想ストレージ１１０に、移行元のホストＬＵの情報を消去するよう、指示する。
【０２０５】
図２２は、移行先の仮想ストレージ１１０における読み書き実行部（ｂ）１９２０の処理フローの一例を示す。この処理は、ホストＬＵの移行中に、移行先の仮想ストレージ１１０が、移行中のホストＬＵを指定したリード／ライト要求をホスト１００から受けた場合に実行される。
【０２０６】
ステップ２２００では、読み書き実行部（ｂ）１９２０は、受けた要求が、リード要求かライト要求かを判断する。
【０２０７】
要求がリード要求の場合、ステップ２２０１で、読み書き実行部（ｂ）１９２０は、キャッシュメモリ２７０にリード対象データが存在するか否かを判断する。この判断の結果が肯定的であれば（ステップ２２１０：Ｙ）、処理がステップ２２０６へジャンプし、この判断の結果が否定的であれば（ステップ２２１０：Ｎ）、ステップ２２０２が行われる。
【０２０８】
ステップ２２０２で、読み書き実行部（ｂ）１９２０は、読出し元のホストＬＵに対応した移行中フラグ７３０がオンであり、且つ、読出し元のＬＵ領域について移行が完了しているか否かを判断する。読出し元のホストＬＵに対応したコピーポインタ７６０が示すアドレスが、読出し元のＬＵ領域のアドレスより後のアドレスであれば、読出し元のＬＵ領域について移行が完了している。
【０２０９】
ステップ２２０２の判断の結果が否定的の場合（ステップ２２０２：Ｎ）、処理がステップ２２０５へジャンプする。
【０２１０】
ステップ２２０２の判断の結果が否定的の場合（ステップ２２０２：Ｎ）、そうでない場合、ステップ２２０３で、読み書き実行部（ｂ）１９２０は、移行元の仮想ストレージ１１０に、読出し元のＬＵ領域に対応するＬＵ領域（移行元ホストＬＵ内のＬＵ領域）におけるデータを送るよう要求し、そのデータが送られてくるのを待つ。ステップ２２０４で、読み書き実行部（ｂ）１９２０は、送られてきたデータを、キャッシュメモリ２７０へ書き込む。
【０２１１】
ステップ２２０５−ステップ２２０６は、図１２のステップ１２０２−ステップ１２０３と同様であるため、説明を省略する。
【０２１２】
ライト要求の場合、ステップ２２０７以降の処理を実行する。ただし、ステップ２２０７−ステップ２２１１の処理は、図１２のステップ１２０４−ステップ１２０８と同様であるため、説明を省略する。
【０２１３】
図２２において、ステップ２２１１で、読み書き実行部（ｂ）１９２０は、コピーポインタ７６０を基に、ライト先ＬＵ領域について移行処理が完了していないと判断すれば（ステップ２２１１：Ｎ）、ステップ２２１２で、キャッシュメモリ内のライト対象データとそのライト要求（ライト先ＬＵの識別子とライト先ＬＵ領域のアドレスとを含んだ要求）を、移行元の仮想ストレージ１１０に送る。これにより、移行元の仮想ストレージにおいて、ライト先ＬＵ領域に対応するＬＵ領域（移行元ホストＬＵのＬＵ領域）に割り当てられているページに、ライト対象データが書き込まれる。読み書き実行部（ｂ）１９２０は、移行元の仮想ストレージ１１０から完了報告を受けると、キャッシュメモリ２７０からこのライト対象データを消去する。この後、処理が完了する。
【０２１４】
ライト先ＬＵ領域が移行処理が完了した領域の場合、ステップ２２１３−ステップ２２１５が実行される。ただし、ステップ２２１３−ステップ２２１５は、図１２のステップ１２０９−ステップ１２１１（但し、ステップ２２１４を除く）と同様である。ステップ２２１４の処理は、図１２のステップ１２１０に相当する。ステップ２２１４では、移行先の仮想ストレージ１１０のキャッシュメモリ２７０内のライト対象データが、移行元の仮想ストレージ１１０に送られる（図１２のステップ１２１０では、逆に、移行元の仮想ストレージ１１０のキャッシュメモリ２７０内のライト対象データが、移行先の仮想ストレージに送られる）。
【０２１５】
図２３は、移行元の仮想ストレージ１１０におけるリード要求受領部１９３０の処理フローの一例を示す。リード要求受領部１９３０は、移行元の仮想ストレージ１１０が、移行先の仮想ストレージ１１０から、データを送って欲しい要求を受け付けたとき、次の処理を実行する。
【０２１６】
ステップ２３００では、リード要求受領部１９３０は、データを読出し元が内部ページか外部ページかを判断する。
【０２１７】
ページが内部ページの場合、ステップ２３０１で、リード要求受領部１９３０は、データを内部ページから読出し、そのデータをキャッシュメモリ２７０に格納する。このあと、処理がステップ２３０３にジャンプする。
【０２１８】
ページが外部ページの場合、ステップ２３０２で、リード要求受領部１９３０は、その外部ページに対応する外部アクセス先情報（外部ＬＵの識別子と、外部ＬＵ領域の相対アドレスとを含んだ情報）を有するリード要求を外部ストレージ１３０に送信する。リード要求受領部１９３０は、そのリード要求に応答して外部ストレージ１３０から受けたデータを、キャッシュメモリ２７０に格納する。
【０２１９】
ステップ２３０３では、リード要求受領部１９３０は、キャッシュメモリ２７０から読み出したデータを、移行先の仮想ストレージ１１０に送る。その後、処理が完了する。
【実施例３】
【０２２０】
以下、実施例３を説明する。
【０２２１】
実施例３及び後述の実施例４では、既設の仮想ストレージ１１０が新たに用意される仮想ストレージ１１０に置き換えられる。まず、実施例３及び４に共通する事項を説明する。その際、既設の（置き換えられる）仮想ストレージ１１０を「旧仮想ストレージ１１０」と言い、新たに用意される仮想ストレージ１１０を「新仮想ストレージ１１０」と言う。
【０２２２】
まず、ホストＬＵの移行に入る準備段階として、以下の手順が実行される。
（１）新仮想ストレージ１１０が、ＳＡＮ（ａ）１２０経由で、ホスト１００に接続され、ホスト１００が、新仮想ストレージ１１０を認識する。ただし、新仮想ストレージ１１０はホスト１００と直接接続されてもよい。
（２）新仮想ストレージ１１０が、管理サーバ１６０に接続され、管理サーバ１６０が、新仮想ストレージ１１０を認識する。
（３）旧仮想ストレージ１１０に接続されているすべての外部ストレージ１３０と、ＳＡＮ（ｂ）１５０経由で、新仮想ストレージ１１０が接続される。新仮想ストレージ１１０は、外部ストレージ１３０内の外部ＬＵを認識し、その外部ＬＵに対応する外部ＬＵ情報２４０を記憶する。ただし、外部ストレージ１３０と新仮想ストレージ１１０は直接接続されてもよい。
（４）新仮想ストレージ１１０は、管理サーバ１６０から、認識したそれぞれの外部ＬＵについて、下記の情報、
（ａ）外部ＬＵは容量仮想化機能が適用されているか否か、
（ｂ）容量仮想化機能が適用されている外部ＬＵについて、その外部ＬＵの制御権は、どの仮想ストレージ１１０が有しているか、
を受ける。これらの情報に基づき、新仮想ストレージ１１０は、認識している外部ＬＵに対応する外部ＬＵ情報２４０を更新する。
（５）新仮想ストレージ１１０は、内部ボリューム２１０を有する。さらに、新仮想ストレージ１１０は、管理サーバ１６０からの情報を基に、内部容量プール情報２３０に必要な情報を設定する。
【０２２３】
以上の準備が整うと、旧仮想ストレージ１１０から新仮想ストレージ１１０へのホストＬＵへの移行が開始される。旧仮想ストレージ１１０に定義されている全てのホストＬＵにそれぞれ容量仮想化機能が適用されていても良いし、一部のホストＬＵに容量仮想化機能が適用されていても良い。
【０２２４】
管理サーバ１６０が、旧仮想ストレージ１１０上に定義されている移行元のホストＬＵを認識し、新仮想ストレージ１１０に移行先のホストＬＵを定義し、移行元のホストＬＵから移行先のホストＬＵへのデータの移行を移行元の仮想ストレージ１１０又は移行先の仮想ストレージ１１０に実行させる。
【０２２５】
実施例３は、ホストＬＵの移行の仕方に、実施例１が適用されたケースである。
【０２２６】
実施例３では、旧仮想ストレージ（移行元の仮想ストレージ）１１０から新仮想ストレージ（移行先の仮想ストレージ）１１０にホストＬＵを移行するとき、移行処理の制御を、旧仮想ストレージ１１０が実行する。また、移行処理中、ホスト１００は、旧仮想ストレージ１１０にリード／ライト要求を発行する。
【０２２７】
本実施例３では、管理サーバ１６０が、旧仮想ストレージ１１０に定義されているホストＬＵを認識し、移行すべきホストＬＵを決定する。決定すると、管理サーバ１６０は、旧仮想ストレージ１１０に、移行元のホストＬＵの識別子と、新仮想ストレージ１１０の識別子と、移行先のホストＬＵの識別子を送る。また、管理サーバ１６０は、新仮想ストレージ１１０に、旧仮想ストレージ１１０の識別子と、移行元のホストＬＵの識別子と、移行先のホストＬＵの識別子と、移行元のホストＬＵの仮想容量とを送る。
【０２２８】
この後、実施例１で説明した処理が行われ、移行元ホストＬＵから移行先ホストＬＵへのデータ移行が完了する。また、この際、必要に応じて、外部ＬＵの制御権も移行されて良い。
【０２２９】
この処理が完了すると、管理サーバ１６０は、旧仮想ストレージ１１０のホストＬＵのすべての移行が完了したかを認識する。まだ、移行が完了していないホストＬＵがある場合、管理サーバ１６０は、移行すべきホストＬＵを決定して、上記の処理を実行させる。
すべてのホストＬＵの移行が完了すると、管理サーバ１６０は、処理を終了する。旧仮想ストレージ１１０が、全てのホストＬＵについてデータ移行が完了したか否かを判断し、その判断の結果が否定的の場合に、データ移行が済んでいないホストＬＵについてデータ移行を行って良い。
【実施例４】
【０２３０】
実施例４は、ホストＬＵの移行の仕方に、実施例２が適用されたケースである。
【０２３１】
実施例４では、旧仮想ストレージ（移行元の仮想ストレージ）１１０から新仮想ストレージ（移行先の仮想ストレージ）１１０にホストＬＵが移行されるとき、移行処理の制御を、新仮想ストレージ１１０が実行する。また、移行処理中、ホスト１００は、新仮想ストレージにリード／ライト要求を発行する。
【０２３２】
実施例４でも、管理サーバ１６０が、旧仮想ストレージ１１０に定義されているホストＬＵを認識し、移行すべきホストＬＵを決定する。決定すると、管理サーバ１６０は、旧仮想ストレージ１１０に、移行元のホストＬＵの識別子と、新仮想ストレージ１１０の識別子と、移行先のホストＬＵの識別子を送る。また、管理サーバ１６０は、新しい仮想ストレージ１１０に、旧仮想ストレージ１１０の識別子と、移行元のＬＵの識別子と、移行先のホストＬＵの識別子と、移行先のホストＬＵの仮想容量とを送る。
【０２３３】
また、実施例２で示したように、管理サーバ１６０は、上記要求の受領報告を、旧仮想ストレージ１１０と新仮想ストレージの双方から受けると、ホスト１００に、移行対象となるホストＬＵのリード／ライト要求のあて先を、新仮想ストレージ１１０に切り替えるよう要求して良い。
【０２３４】
実施例２と同様の処理が実行されることで、上記で指定されたホストＬＵの移行が完了する。また、この際、必要に応じて、外部ＬＵの制御権も移行されて良い。
【０２３５】
この処理が完了すると、管理サーバ１６０は、旧仮想ストレージ１１０のホストＬＵのすべての移行が完了したかを認識する。まだ、移行が完了していないホストＬＵがある場合、管理サーバ１６０は、移行すべきホストＬＵを決定して、上記の処理を実行して良い。すべてのホストＬＵの移行が完了すると、管理サーバ１６０は、処理を終了する。
【０２３６】
以上、本発明の幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【０２３７】
１００：ホスト、１１０：仮想ストレージ、１３０：外部ストレージ
【図１】
0005512833.tif 000002
【図２】
0005512833.tif 000003
【図３】
0005512833.tif 000004
【図４】
0005512833.tif 000005
【図５】
0005512833.tif 000006
【図６】
0005512833.tif 000007
【図７】
0005512833.tif 000008
【図８】
0005512833.tif 000009
【図９】
0005512833.tif 000010
【図１０】
0005512833.tif 000011
【図１１】
0005512833.tif 000012
【図１２】
0005512833.tif 000013
【図１３】
0005512833.tif 000014
【図１４】
0005512833.tif 000015
【図１５】
0005512833.tif 000016
【図１６】
0005512833.tif 000017
【図１７】
0005512833.tif 000018
【図１８】
0005512833.tif 000019
【図１９】
0005512833.tif 000020
【図２０】
0005512833.tif 000021
【図２１】
0005512833.tif 000022
【図２２】
0005512833.tif 000023
【図２３】
0005512833.tif 000024
【図２４】
0005512833.tif 000025