(57)【要約】【課題】複数のストレージ仮想化装置に同じ論理的なデバイス構成を構築することを人間にとって負担少なく行えるようにする。【解決手段】ホスト装置１０とストレージサブシステム４０に接続される複数のストレージ仮想化装置６００の共有記憶領域４２が、ストレージ仮想化装置内での論理的なデバイス構成を表すデバイス構成情報１０１を記憶する。論理的なデバイス構成は、ストレージサブシステム内の外部記憶デバイスと、一以上の外部記憶デバイスにより提供される記憶資源を仮想化した記憶空間である仮想デバイスと、ストレージ仮想化装置内の内部記憶デバイスを構成する一以上の論理的な記憶デバイスとの関連である。新たに接続されたストレージ仮想化装置が、共有記憶領域からデバイス構成情報を読み出し、該読み出したデバイス構成情報を、該ストレージ仮想化装置が備える構成情報記憶域に書き込む。【選択図】図１
2007328611.tif 000002
【特許請求の範囲】
【請求項１】
上位装置とストレージサブシステムに接続される複数のストレージ仮想化装置と、
前記複数のストレージ仮想化装置の共有記憶領域と
を備え、
前記共有記憶領域が、ストレージ仮想化装置内での論理的なデバイス構成を表すデバイス構成情報を記憶し、
前記論理的なデバイス構成は、前記ストレージサブシステムが備える記憶デバイスである外部記憶デバイスと、一又は複数の前記外部記憶デバイスにより提供される記憶資源を仮想化した記憶空間である仮想デバイスと、ストレージ仮想化装置内の記憶デバイスである内部記憶デバイスを構成する一以上の論理的な記憶デバイスとの関連であり、
前記複数のストレージ仮想化装置の各々が、
前記デバイス構成情報を記憶する構成情報記憶域と、
内部記憶デバイスを指定した第一のアクセスコマンドを前記上位装置から受信し、前記構成情報記憶域に記憶されたデバイス構成情報に基づいて、該指定された内部記憶デバイスに関連付けられている外部記憶デバイスにアクセスするための第二のアクセスコマンドを生成して前記ストレージサブシステムに送信するコントローラと
を備え、
前記複数のストレージ仮想化装置のうちの前記上位装置及び前記ストレージサブシステムに新たに接続されたストレージ仮想化装置である新接続ストレージ仮想化装置において、前記コントローラが、前記共有記憶領域から前記デバイス構成情報を読み出し、該読み出したデバイス構成情報を前記構成情報記憶域に書き込む、
ストレージ仮想化システム。
【請求項２】
前記複数のストレージ仮想化装置には、第一のストレージ仮想化装置と、前記第一のストレージ仮想化装置よりも後に前記上位装置及び前記ストレージサブシステムに接続される第二のストレージ仮想化装置とが含まれ、
前記第一のストレージ仮想化装置が、第一の構成情報記憶域と第一のコントローラとを備え、前記第一の構成情報記憶域に、前記第一のストレージ仮想化装置内での論理的なデバイス構成を表す前記デバイス構成情報が記憶されており、前記第一のコントローラが、前記第一の構成情報記憶域から前記デバイス構成情報を読み出して前記共有記憶領域に書き込み、
前記第二のストレージ仮想化装置が、第二の構成情報記憶域と第二のコントローラとを備え、前記第二のコントローラが、前記共有記憶領域から前記デバイス構成情報を読み出し、該デバイス構成情報を前記第二の構成情報記憶域に書き込む、
請求項１記載のストレージ仮想化システム。
【請求項３】
前記共有記憶領域が、前記デバイス構成情報にマッピングされている外部記憶デバイスのシステム領域であり、
前記システム領域は、前記複数のストレージ仮想化装置の各々がアクセス可能な記憶領域であるが、前記上位装置からの前記第一のアクセスコマンドを基に発行される前記第二のアクセスコマンドによってはアクセスされない記憶領域である、
請求項１記載のストレージ仮想化システム。
【請求項４】
前記共有記憶領域が、前記デバイス構成情報にマッピングされている外部記憶デバイスとは別の外部記憶デバイスにある、
請求項１記載のストレージ仮想化システム。
【請求項５】
前記第一のコントローラが、前記デバイス構成情報にマッピングされている外部記憶デバイスにシステム領域が無い場合に、前記共有記憶領域を、前記デバイス構成情報にマッピングされている外部記憶デバイスとは別の外部記憶デバイスにし、そうではない場合に、前記共有記憶領域を、前記デバイス構成情報にマッピングされている外部記憶デバイスのシステム領域にし、
前記システム領域は、前記複数のストレージ仮想化装置の各々がアクセス可能な記憶領域であるが、前記上位装置からの前記第一のアクセスコマンドを基に発行される前記第二のアクセスコマンドによってはアクセスされない記憶領域である、
請求項２記載のストレージ仮想化システム。
【請求項６】
前記複数のストレージ仮想化装置のうちのいずれかが、前記論理的な記憶デバイスとは別の論理的な記憶デバイスを備え、
前記共有記憶領域は、前記別の論理的な記憶デバイスにある、
請求項１記載のストレージ仮想化システム。
【請求項７】
前記第一のコントローラが、前記共有記憶領域として使用可能な外部記憶デバイスが前記ストレージサブシステムに無い場合に、前記共有記憶領域を、前記別の論理的な記憶デバイスとし、そうではない場合に、前記共有記憶領域を、外部記憶デバイスにする、
請求項２記載のストレージ仮想化システム。
【請求項８】
前記デバイス構成情報には、前記論理的なデバイス構成を表す情報の他に、該デバイス構成情報であることを意味するコード配列が含まれており、
前記コード配列は、前記デバイス構成情報の所定の場所に存在し、
前記新接続ストレージ仮想化装置の前記コントローラは、前記コード配列が存在する場所を指定したリードコマンドを前記共有記憶領域に発行し、該リードコマンドに従って読み出されたデータが前記コード配列である場合に、前記デバイス構成情報の残りを読み出すためのリードコマンドを前記共有記憶領域に発行する、
請求項１記載のストレージ仮想化システム。
【請求項９】
前記ストレージサブシステムが、各ストレージ仮想化装置のターゲットとなる通信ポートと、外部記憶デバイスを含んだ複数のデバイスと、前記複数のデバイスにそれぞれ対応する複数の論理ユニット番号（ＬＵＮ）とを有し、
前記ストレージサブシステムでは、各通信ポートに、前記複数のＬＵＮのうちの一以上のＬＵＮが属しており、
前記共有記憶領域は、前記外部記憶デバイスであり、
前記新接続ストレージ仮想化装置の前記コントローラは、前記ストレージサブシステムが接続されているネットワークに接続されることによって前記ターゲットの通信ポートを認識し、該ターゲットの通信ポートに、第一の照会コマンドを発行し、該第一の照会コマンドに応答して、該ターゲットの通信ポートに属する一以上のＬＵＮの報告を受け、該一以上のＬＵＮの各々に対し、第二の照会コマンドを発行し、該第二の照会コマンドに応答して、指定したＬＵＮに関わる属性を表す属性データを受信し、該属性データが前記外部記憶デバイスを意味するデータであれば、前記コード配列が存在する場所を指定したリードコマンドを前記共有記憶領域に発行する、
請求項８記載のストレージ仮想化システム。
【請求項１０】
前記複数のストレージ仮想化装置のいずれかのストレージ仮想化装置におけるコントローラが、デバイス構成情報の変更希望を意味する情報である変更希望情報を、前記共有記憶領域に書き、
前記複数のストレージ仮想化装置の他のストレージ仮想化装置における他のコントローラが、前記デバイス構成情報にマッピングされている外部記憶デバイスを使用している場合には、変更を拒否することを意味する変更拒否情報を、前記共有記憶領域に書き込み、そうではない場合には、変更を許可することを意味する変更許可情報を、前記共有記憶領域に書き込み、
前記コントローラが、前記変更拒否情報が前記共有記憶領域に書き込まれている場合には、前記デバイス構成情報の変更を行わず、前記変更拒否情報が書かれておらず前記変更許可情報が前記共有記憶領域に書き込まれている場合には、前記デバイス構成情報の変更を行う、
請求項１記載のストレージ仮想化システム。
【請求項１１】
前記デバイス構成情報には、前記複数のストレージ仮想化装置の各々の優先度が含まれており、
前記コントローラが、前記デバイス構成情報に含まれている、該ストレージ仮想化装置の優先度が所定値以下の場合には、前記変更希望情報を前記共有記憶領域に書き込まない、
請求項１０記載のストレージ仮想化システム。
【請求項１２】
前記デバイス構成情報に、マッピングされているストレージ仮想化装置の数（＝ｋ、ｋ≧２の整数）が記録されており、
前記コントローラは、ｋ−１個の前記変更許可情報が前記共有記憶領域に書き込まれている場合に、前記デバイス構成情報の変更を行う、
請求項１０記載のストレージ仮想化システム。
【請求項１３】
前記新接続ストレージ仮想化装置において、前記コントローラは、特定の照会コマンドを前記上位装置から受けた場合には、前記構成情報記憶域に記憶させた前記デバイス構成情報にマッピングされている外部記憶デバイスに関してユニークな情報を含んだ照会回答情報を返信する、
請求項１記載のストレージ仮想化システム。
【請求項１４】
前記デバイス構成情報に、該デバイス構成情報にユニークなコード配列であるユニークＩＤが含まれており、
前記コントローラは、前記デバイス構成情報から前記ユニークＩＤを抽出し、該ユニークＩＤを含んだ前記照会回答情報を返信する、
請求項１３記載のストレージ仮想化システム。
【請求項１５】
前記コントローラは、前記デバイス構成情報にマッピングされている外部記憶デバイスに対して特定の照会コマンドを発行することによって受信した照会回答情報から、該外部記憶デバイスにユニークの情報を抽出し、特定の照会コマンドを前記上位装置から受けた場合には、前記抽出したユニークの情報を含んだ照会回答情報を返信する、
請求項１３記載のストレージ仮想化システム。
【請求項１６】
前記上位装置が、
各内部記憶デバイスに対して特定の照会コマンドを送信する照会部と、
各特定の照会コマンドに応答して受信した各照会回答情報に、同じユニークな情報が含まれていた場合に、各照会回答情報を受けた各パスが、同一の記憶デバイスに繋がる交替パスであることを認識する交替パス認識部と、
前記認識した複数の交替パスのうちの使用する交替パスを切り替えるパス切替部と
を備える、
請求項１３記載のストレージ仮想化システム。
【請求項１７】
前記パス切替部は、以下の（Ａ）乃至（Ｄ）のいずれかの場合、
（Ａ）同じ交替パスを所定回数連続して使用した場合、
（Ｂ）使用している交替パスの負荷が所定値を超えたことを意味する通知を、該交替パスが経由するストレージ仮想化装置から受けた場合、
（Ｃ）使用している交替パスにおいて、該交替パスが経由するストレージ仮想化装置から応答が無い場合、
（Ｄ）前記複数のストレージ仮想化装置と前記上位装置との間の前記複数の交替パスを管理するサーバから、使用する交替パスの切り替えの指示を受けた場合、
交替パスの切り替えを行う、
請求項１６記載のストレージ仮想化システム。
【請求項１８】
前記共有記憶領域が、外部記憶デバイスにあり、
前記デバイス構成情報には、前記論理的なデバイス構成を表す情報の他に、該デバイス構成情報であることを意味するコード配列が含まれており、
前記コード配列は、前記デバイス構成情報の所定の場所に存在し、
前記複数のストレージ仮想化装置には、第一のストレージ仮想化装置と、前記第一のストレージ仮想化装置よりも後に前記上位装置及び前記ストレージサブシステムに接続される第二のストレージ仮想化装置とが含まれ、
前記第一のストレージ仮想化装置が、第一の構成情報記憶域と第一のコントローラとを備え、前記第一の構成情報記憶域に、前記第一のストレージ仮想化装置内での論理的なデバイス構成を表す前記デバイス構成情報が記憶されており、前記第一のコントローラが、前記第一の構成情報記憶域から前記デバイス構成情報を読み出して前記共有記憶領域に書き込み、
前記第二のストレージ仮想化装置が、第二の構成情報記憶域と第二のコントローラとを備え、前記第二のコントローラが、前記コード配列が存在する場所を指定したリードコマンドを前記共有記憶領域に発行し、該リードコマンドに従って読み出されたデータが前記コード配列である場合に、前記デバイス構成情報の残りを読み出すためのリードコマンドを前記共有記憶領域に発行し、それによって読み出された情報と前記コード配列とを含む前記デバイス構成情報を、前記第二の構成情報記憶域に書き込み、特定の照会コマンドを前記上位装置から受けた場合には、前記第二の構成情報記憶域に記憶させた前記デバイス構成情報にマッピングされている外部記憶デバイスに関してユニークな情報を含んだ照会回答情報を返信し、
前記上位装置が、各内部記憶デバイスに対して特定の照会コマンドを送信する照会部と、各特定の照会コマンドに応答して受信した各照会回答情報に、同じユニークな情報が含まれていた場合に、各照会回答情報を受けた各パスが、同一の記憶デバイスに繋がる交替パスであることを認識する交替パス認識部とを備える、
請求項１記載のストレージ仮想化しシステム。
【請求項１９】
上位装置とストレージサブシステムに接続される複数のストレージ仮想化装置の共有記憶領域が、ストレージ仮想化装置内での論理的なデバイス構成を表すデバイス構成情報を記憶し、
前記論理的なデバイス構成は、前記ストレージサブシステムが備える記憶デバイスである外部記憶デバイスと、一又は複数の前記外部記憶デバイスにより提供される記憶資源を仮想化した記憶空間である仮想デバイスと、ストレージ仮想化装置内の記憶デバイスである内部記憶デバイスを構成する一以上の論理的な記憶デバイスとの関連であり、
前記複数のストレージ仮想化装置のうちの前記上位装置及び前記ストレージサブシステムに新たに接続されたストレージ仮想化装置が、前記共有記憶領域から前記デバイス構成情報を読み出し、該読み出したデバイス構成情報を、該ストレージ仮想化装置が備える構成情報記憶域に書き込む、
ストレージ仮想化方法。
【請求項２０】
上位装置とストレージサブシステムに接続されるストレージ仮想化装置において、
記憶域と、
他のストレージ仮想化装置との共有記憶領域から、論理的なデバイス構成を表す情報であるデバイス構成情報を読出し前記記憶域に書き込むコントローラと
を備え、
前記論理的なデバイス構成は、前記ストレージサブシステムが備える記憶デバイスである外部記憶デバイスと、一又は複数の前記外部記憶デバイスにより提供される記憶資源を仮想化した記憶空間である仮想デバイスと、ストレージ仮想化装置内の記憶デバイスである内部記憶デバイスを構成する一以上の論理的な記憶デバイスとの関連であり、
前記コントローラは、内部記憶デバイスを指定した第一のアクセスコマンドを前記上位装置から受信し、前記構成情報記憶域に書きこんだデバイス構成情報に基づいて、該指定された内部記憶デバイスに関連付けられている外部記憶デバイスにアクセスするための第二のアクセスコマンドを生成して前記ストレージサブシステムに送信する、
ストレージ仮想化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージの仮想化のための技術に関する。
【背景技術】
【０００２】
外部のストレージサブシステムに存在する記憶デバイスを仮想的に自身の記憶デバイスとして上位装置に提供することのできる装置（以下、ストレージ仮想化装置）が知られている。この種の装置として、例えば、特開２００５−１０７６４５号に開示の装置がある。
【０００３】
なお、この技術によれば、ストレージ仮想化装置（第１の記憶制御装置）とストレージサブシステム（第二の記憶制御装置）との間に、ストレージサブシステム内の記憶デバイスに繋がる複数のパス（交替パス）があり、ストレージ仮想化装置は、複数の交替パスのうちのいずれかの交替パスに障害が発生しても、他の交替パスを経由して、ストレージサブシステム内の記憶デバイスにアクセスすることができるようになっている。パスの切り替えのための技術としては、例えば、特開２００６−４００２６号に開示の技術が知られている。
【０００４】
【特許文献１】特開２００５−１０７６４５号公報
【特許文献２】特開２００６−４００２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ストレージ仮想化装置が一つしかないと、そのストレージ仮想化装置が故障した場合には、ストレージサブシステム内の記憶デバイスを上位装置に提供することができなくなる。その可能性を低減するための方法として、ストレージ仮想化装置を冗長化する方法、例えば、ストレージ仮想化装置に接続されているストレージサブシステムに、少なくとも一つのストレージ仮想化装置を更に接続する方法が考えられる。
【０００６】
その方法を採用する場合には、上位装置とストレージサブシステムとの間に介在する全てのストレージ仮想化装置において、ストレージサブシステム内の記憶デバイスにアクセスできるようにするための論理的なデバイス構成を同じにする必要があると考えられる。なぜなら、上位装置が、どのストレージ仮想化装置を経由しても、ストレージサブシステム内の同一の記憶デバイスにアクセスできるようにするためである。（なお、論理的なデバイス構成としては、例えば、論理的な記憶デバイス（ＬＤＥＶ）の番号（ＬＤＥＶ＃）と、仮想的な記憶デバイス（ＶＤＥＶ）の番号（ＶＤＥＶ＃）との組み合わせや、そのＶＤＥＶ＃にマッピングされる、ストレージサブシステム内のＬＵＮなどを含んだ構成とすることができる。）。
【０００７】
しかし、その論理的なデバイス構成を、人間（例えば、ストレージ仮想化システムの管理者）が、追加されたストレージ仮想化装置に構築するのでは、その人間にとって負担である。また、追加されたストレージ仮想化装置に、既存のストレージ仮想化装置内の論理的なデバイス構成と同じデバイス構成を正確に構築することができるとは限らない。人間による入力ミスがあり得るからである。
【０００８】
なお、ストレージ仮想化装置を別のストレージ仮想化装置に交換する場合があり得るが、そのような場合にも、上記のような問題点は生じ得る。なぜなら、交換前のストレージ仮想化装置に構築されていた論理的なデバイス構成を交換後のストレージ仮想化装置に構築する必要が生じるためである。
【０００９】
従って、本発明の目的は、複数のストレージ仮想化装置に同じ論理的なデバイス構成を構築することを人間にとって負担少なく行えるようにすることにある。
【００１０】
本発明の更なる目的は、後の記載から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本発明に従うストレージ仮想化システムは、上位装置とストレージサブシステムに接続される複数のストレージ仮想化装置と、前記複数のストレージ仮想化装置の共有記憶領域と
を備える。前記共有記憶領域が、ストレージ仮想化装置内での論理的なデバイス構成を表すデバイス構成情報を記憶する。前記論理的なデバイス構成は、前記ストレージサブシステムが備える記憶デバイスである外部記憶デバイスと、一又は複数の前記外部記憶デバイスにより提供される記憶資源を仮想化した記憶空間である仮想デバイスと、ストレージ仮想化装置内の記憶デバイスである内部記憶デバイスを構成する一以上の論理的な記憶デバイスとの関連である。前記複数のストレージ仮想化装置の各々が、前記デバイス構成情報を記憶する構成情報記憶域と、内部記憶デバイスを指定した第一のアクセスコマンドを前記上位装置から受信し、前記構成情報記憶域に記憶されたデバイス構成情報に基づいて、該指定された内部記憶デバイスに関連付けられている外部記憶デバイスにアクセスするための第二のアクセスコマンドを生成して前記ストレージサブシステムに送信するコントローラとを備える。前記複数のストレージ仮想化装置のうちの前記上位装置及び前記ストレージサブシステムに新たに接続されたストレージ仮想化装置である新接続ストレージ仮想化装置において、前記コントローラが、前記共有記憶領域から前記デバイス構成情報を読み出し、該読み出したデバイス構成情報を前記構成情報記憶域に書き込む。
【００１２】
前記共有記憶領域は、前記複数のストレージ仮想化装置内に存在しても良いし、前記ストレージサブシステムに存在しても良いし、前記複数のストレージ仮想化装置と前記ストレージサブシステム以外の場所に存在しても良い。
【００１３】
第一の実施態様では、前記複数のストレージ仮想化装置には、第一のストレージ仮想化装置と、前記第一のストレージ仮想化装置よりも後に前記上位装置及び前記ストレージサブシステムに接続される第二のストレージ仮想化装置とが含まれる。前記第一のストレージ仮想化装置が、第一の構成情報記憶域と第一のコントローラとを備えることができる。前記第一の構成情報記憶域に、前記第一のストレージ仮想化装置内での論理的なデバイス構成を表す前記デバイス構成情報が記憶されていて、前記第一のコントローラが、前記第一の構成情報記憶域から前記デバイス構成情報を読み出して前記共有記憶領域に書き込むことができる。前記第二のストレージ仮想化装置が、第二の構成情報記憶域と第二のコントローラとを備えることができる。前記第二のコントローラが、前記共有記憶領域から前記デバイス構成情報を読み出し、該デバイス構成情報を前記第二の構成情報記憶域に書き込むことができる。
【００１４】
第二の実施態様では、前記共有記憶領域が、前記デバイス構成情報にマッピングされている外部記憶デバイスのシステム領域である。前記システム領域は、例えば、前記複数のストレージ仮想化装置の各々がアクセス可能な記憶領域であるが、前記上位装置からの前記第一のアクセスコマンドを基に発行される前記第二のアクセスコマンドによってはアクセスされない記憶領域である。
【００１５】
第三の実施態様では、前記共有記憶領域が、前記デバイス構成情報にマッピングされている外部記憶デバイスとは別の外部記憶デバイスにある。
【００１６】
第四の実施態様では、前記第一の実施態様において、前記第一のコントローラが、前記デバイス構成情報にマッピングされている外部記憶デバイスにシステム領域が無い場合に、前記共有記憶領域を、前記デバイス構成情報にマッピングされている外部記憶デバイスとは別の外部記憶デバイスにし、そうではない場合に、前記共有記憶領域を、前記デバイス構成情報にマッピングされている外部記憶デバイスのシステム領域にすることができる。
【００１７】
第五の実施態様では、前記複数のストレージ仮想化装置のうちのいずれかが、前記論理的な記憶デバイスとは別の論理的な記憶デバイスを備えることができる。この場合、前記共有記憶領域は、前記別の論理的な記憶デバイスにある。
【００１８】
第六の実施態様では、前記第一の実施態様において、前記第一のコントローラが、前記共有記憶領域として使用可能な外部記憶デバイスが前記ストレージサブシステムに無い場合に、前記共有記憶領域を、前記別の論理的な記憶デバイスとし、そうではない場合に、前記共有記憶領域を、外部記憶デバイスにすることができる。
【００１９】
第七の実施態様では、前記デバイス構成情報には、前記論理的なデバイス構成を表す情報の他に、該デバイス構成情報であることを意味するコード配列が含まれている。前記コード配列は、前記デバイス構成情報の所定の場所に存在する。前記新接続ストレージ仮想化装置の前記コントローラは、前記コード配列が存在する場所を指定したリードコマンドを前記共有記憶領域に発行し、該リードコマンドに従って読み出されたデータが前記コード配列である場合に、前記デバイス構成情報の残りを読み出すためのリードコマンドを前記共有記憶領域に発行することができる。
【００２０】
第八の実施態様では、前記第七の実施態様において、前記ストレージサブシステムが、各ストレージ仮想化装置のターゲットとなる通信ポートと、外部記憶デバイスを含んだ複数のデバイスと、前記複数のデバイスにそれぞれ対応する複数の論理ユニット番号（ＬＵＮ）とを有する。前記ストレージサブシステムでは、各通信ポートに、前記複数のＬＵＮのうちの一以上のＬＵＮが属している。前記共有記憶領域は、前記外部記憶デバイスである。前記新接続ストレージ仮想化装置の前記コントローラは、前記ストレージサブシステムが接続されているネットワークに接続されることによって前記ターゲットの通信ポートを認識し、該ターゲットの通信ポートに、第一の照会コマンドを発行し、該第一の照会コマンドに応答して、該ターゲットの通信ポートに属する一以上のＬＵＮの報告を受け、該一以上のＬＵＮの各々に対し、第二の照会コマンドを発行し、該第二の照会コマンドに応答して、指定したＬＵＮに関わる属性を表す属性データを受信し、該属性データが前記外部記憶デバイスを意味するデータであれば、前記コード配列が存在する場所を指定したリードコマンドを前記共有記憶領域に発行することができる。
【００２１】
第九の実施態様では、前記複数のストレージ仮想化装置のいずれかのストレージ仮想化装置におけるコントローラが、デバイス構成情報の変更希望を意味する情報である変更希望情報を、前記共有記憶領域に書くことができる。前記複数のストレージ仮想化装置の他のストレージ仮想化装置における他のコントローラが、前記デバイス構成情報にマッピングされている外部記憶デバイスを使用している場合には、変更を拒否することを意味する変更拒否情報を、前記共有記憶領域に書き込み、そうではない場合には、変更を許可することを意味する変更許可情報を、前記共有記憶領域に書き込むことができる。前記コントローラが、前記変更拒否情報が前記共有記憶領域に書き込まれている場合には、前記デバイス構成情報の変更を行わず、前記変更拒否情報が書かれておらず前記変更許可情報が前記共有記憶領域に書き込まれている場合には、前記デバイス構成情報の変更を行うことができる。
【００２２】
第十の実施態様では、前記第九の実施態様において、前記デバイス構成情報には、前記複数のストレージ仮想化装置の各々の優先度が含まれている。前記コントローラが、前記デバイス構成情報に含まれている、該ストレージ仮想化装置の優先度が所定値以下の場合には、前記変更希望情報を前記共有記憶領域に書き込まないようにすることができる。
【００２３】
第十一の実施態様では、前記第九の実施態様において、前記デバイス構成情報に、マッピングされているストレージ仮想化装置の数（＝ｋ、ｋ≧２の整数）が記録されている。前記コントローラは、ｋ−１個の前記変更許可情報が前記共有記憶領域に書き込まれている場合に、前記デバイス構成情報の変更を行うことができる。
【００２４】
第十二の実施態様では、前記新接続ストレージ仮想化装置において、前記コントローラは、特定の照会コマンドを前記上位装置から受けた場合には、前記構成情報記憶域に記憶させた前記デバイス構成情報にマッピングされている外部記憶デバイスに関してユニークな情報を含んだ照会回答情報を返信することができる。
【００２５】
第十三の実施態様では、前記第十二の実施態様において、前記デバイス構成情報に、該デバイス構成情報にユニークなコード配列であるユニークＩＤが含まれている。前記コントローラは、前記デバイス構成情報から前記ユニークＩＤを抽出し、該ユニークＩＤを含んだ前記照会回答情報を返信することができる。
【００２６】
第十四の実施態様では、前記第十二の実施態様において、前記コントローラは、前記デバイス構成情報にマッピングされている外部記憶デバイスに対して特定の照会コマンドを発行することによって受信した照会回答情報から、該外部記憶デバイスにユニークの情報を抽出し、特定の照会コマンドを前記上位装置から受けた場合には、前記抽出したユニークの情報を含んだ照会回答情報を返信することができる。
【００２７】
第十五の実施態様では、前記第十二の実施態様において、前記上位装置が、各内部記憶デバイスに対して特定の照会コマンドを送信する照会部と、各特定の照会コマンドに応答して受信した各照会回答情報に、同じユニークな情報が含まれていた場合に、各照会回答情報を受けた各パスが、同一の記憶デバイスに繋がる交替パスであることを認識する交替パス認識部と、前記認識した複数の交替パスのうちの使用する交替パスを切り替えるパス切替部とを備えることができる。
【００２８】
第十六の実施態様では、前記第十五の実施態様において、前記パス切替部は、以下の（Ａ）乃至（Ｄ）のいずれかの場合、
（Ａ）同じ交替パスを所定回数連続して使用した場合、
（Ｂ）使用している交替パスの負荷が所定値を超えたことを意味する通知を、該交替パスが経由するストレージ仮想化装置から受けた場合、
（Ｃ）使用している交替パスにおいて、該交替パスが経由するストレージ仮想化装置から応答が無い場合、
（Ｄ）前記複数のストレージ仮想化装置と前記上位装置との間の前記複数の交替パスを管理するサーバから、使用する交替パスの切り替えの指示を受けた場合、
交替パスの切り替えを行うことができる。
【００２９】
第十七の実施態様では、前記共有記憶領域が、外部記憶デバイスにある。前記デバイス構成情報には、前記論理的なデバイス構成を表す情報の他に、該デバイス構成情報であることを意味するコード配列が含まれている。前記コード配列は、前記デバイス構成情報の所定の場所に存在する。前記複数のストレージ仮想化装置には、第一のストレージ仮想化装置と、前記第一のストレージ仮想化装置よりも後に前記上位装置及び前記ストレージサブシステムに接続される第二のストレージ仮想化装置とが含まれる。前記第一のストレージ仮想化装置が、第一の構成情報記憶域と第一のコントローラとを備える。前記第一の構成情報記憶域に、前記第一のストレージ仮想化装置内での論理的なデバイス構成を表す前記デバイス構成情報が記憶されており、前記第一のコントローラが、前記第一の構成情報記憶域から前記デバイス構成情報を読み出して前記共有記憶領域に書き込むことができる。前記第二のストレージ仮想化装置が、第二の構成情報記憶域と第二のコントローラとを備える。前記第二のコントローラが、前記コード配列が存在する場所を指定したリードコマンドを前記共有記憶領域に発行し、該リードコマンドに従って読み出されたデータが前記コード配列である場合に、前記デバイス構成情報の残りを読み出すためのリードコマンドを前記共有記憶領域に発行し、それによって読み出された情報と前記コード配列とを含む前記デバイス構成情報を、前記第二の構成情報記憶域に書き込むことができる。前記第二のコントローラは、特定の照会コマンドを前記上位装置から受けた場合には、前記第二の構成情報記憶域に記憶させた前記デバイス構成情報にマッピングされている外部記憶デバイスに関してユニークな情報を含んだ照会回答情報を返信することができる。前記上位装置が、各内部記憶デバイスに対して特定の照会コマンドを送信する照会部と、各特定の照会コマンドに応答して受信した各照会回答情報に、同じユニークな情報が含まれていた場合に、各照会回答情報を受けた各パスが、同一の記憶デバイスに繋がる交替パスであることを認識する交替パス認識部とを備えることができる。
【００３０】
ストレージ仮想化装置、ストレージサブシステム及び上位装置が行う処理は、所定の各部によって実行することができる。各部は各手段と言い換えることができる。各部或いは各手段は、ハードウェア（例えば回路）、コンピュータプログラム、或いはそれらの組み合わせ（例えば、コンピュータプログラムを読み込んで実行する一又は複数のＣＰＵ）によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源（例えばメモリ）から読み込むことができる。その記憶資源には、ＣＤ−ＲＯＭやＤＶＤ（Digital Versatile Disk）等の記録媒体を介してインストールすることもできるし、インターネットやＬＡＮ等の通信ネットワークを介してダウンロードすることもできる。
【発明の効果】
【００３１】
本発明によれば、複数のストレージ仮想化装置に同じ論理的なデバイス構成を構築することを人間にとって負担少なく行えるようにすることができる。
【発明を実施するための最良の形態】
【００３２】
本発明の一実施形態の概要を説明する。
【００３３】
第一のストレージ仮想化装置が、第一の記憶域（例えば、後述する共有メモリ）を備える。その第一の記憶域に、第一のストレージ仮想化装置内の論理的なデバイス構成を表す情報（以下、デバイス構成情報）が格納される。第一のストレージ仮想化装置とストレージサブシステムとの少なくとも一方に、第一のストレージ仮想化装置と第二のストレージ仮想化装置がアクセス可能な共有記憶域（例えば論理ボリューム）が準備される。第一のストレージ仮想化装置が、デバイス構成情報を共有記憶域に書く。ストレージサブシステムに接続された第二のストレージ仮想化装置が、その共有記憶域から、デバイス構成情報を読出し、そのデバイス構成情報を、自身が備える第二の記憶域に書く。これは、第一のストレージ仮想化装置内の論理的な記憶デバイスが、第二のストレージ仮想化装置に構築されたことを意味する。すなわち、この方法によれば、第一のストレージ仮想化装置内の論理的なデバイス構成を第二のストレージ仮想化装置に構築することを、人間に実質的に負担をかけることなく行うことができる。
【００３４】
また、この実施形態では、上位装置（例えば、後述のホスト装置）と、ストレージサブシステム内の記憶デバイス（例えば、後述の外部ＶＯＬ）との間には、第一のストレージ仮想化装置を経由する第一のパスに代えて又は加えて、第二のストレージ仮想化装置を経由する第二のパスを張ることができる。第二のストレージ仮想化装置は、第二のパスを経由して上位装置から所定の問合せを受けた場合には、第一のパスを経由して所定の問合せを受けた場合に回答される情報中の同じ情報要素を含めた情報を準備し、その準備した情報を、上位装置に送信する。これにより、第二のパスに対応する記憶デバイスが、第一のパスに対応する記憶デバイスと同じであることを、上位装置に認識させることができる。
【００３５】
以下、図面を参照して、本発明の一実施形態について詳細に説明する。なお、以下の説明では、ストレージ仮想化装置内の要素（例えばメモリ）を、「内部要素」と言い、ストレージ仮想化装置の外に存在するストレージサブシステム内の要素を、「外部要素」と言う場合がある。また、同種の要素については、同一の親番号を用いて説明し、同種の要素を区別して説明する場合には、親番号と子符合を用いて説明する。
【００３６】
図１は、本発明の一実施形態に係る計算機システムの構成例を示すブロック図である。
【００３７】
第一の通信ネットワーク１０５に、ホスト装置１０とストレージ仮想化装置６００が接続される。第二の通信ネットワーク１０４に、ストレージ仮想化装置６００とストレージサブシステム４０が接続される。第一の通信ネットワーク１０５も第二の通信ネットワーク１０４も、それぞれ、種々のネットワーク、例えば、一又は複数のスイッチ２を含んだＳＡＮ（Storage Area Network）とすることができる。
【００３８】
ホスト装置１０は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト装置１０は、例えば、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、例えば、モニタディスプレイやスピーカー等の情報出力装置（図示せず）とを備えている。さらに、ホスト装置１０は、例えば、所定の処理を実行するアプリケーションプログラム１１と、通信ネットワーク１０５を介してストレージ仮想化装置６００にアクセスするためのホストバスアダプタ１２とが設けられている。アプリケーションプログラム１１としては、例えば、後述するパス切替ソフトウェアや、交替パスを認識することができるパス認識ソフトウェアなどがある。
【００３９】
ストレージ仮想化装置６００は、例えば、アレイ状に配列された多数のディスク４００を備えるＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）システムとすることができる。但し、これに限らず、ストレージ仮想化装置６００を、通信ネットワークを構成するスイッチ、例えば、高機能化されたインテリジェント型のファイバチャネルスイッチとして構成することもできる。ストレージ仮想化装置６００は、後述のように、ストレージサブシステム４０の有する記憶資源を自己の論理ボリューム（Logical Unit）としてホスト装置１０に提供するものであるから、自己が直接支配するローカルな記憶デバイスを有していなくても良い。
【００４０】
ストレージ仮想化装置６００は、コントローラ部２０と、ディスクユニット３０とに大別することができる。コントローラ部２０は、例えば、チャネルアダプタ（以下、ＣＨＡ）２１と、ディスクアダプタ（以下、ＤＫＡ）２２と、ＳＶＰ（Service Processor）２３と、キャッシュメモリ２４と、共有メモリ２５と、接続部２６とを備えている。
【００４１】
ＣＨＡ２１は、通信ポート２０７を介して外部の装置（例えば、ホスト装置１０やストレージサブシステム４０）との間のデータ通信を行うものである。ＣＨＡ２１は、例えば、ＣＰＵやメモリ等を備えたマイクロコンピュータシステムとして構成されている。ＣＨＡ２１には、そのＣＨＡ２１を識別するためのネットワークアドレス（例えばＷＷＮ（World Wide Name））が割り当てられている。ＣＨＡ２１には、ホスト装置１０に接続されたＣＨＡ２１Ａと、ストレージサブシステム４０に接続されたＣＨＡ２１Ｂとがある。ＣＨＡ２１Ａと２１Ｂは、一体になっていてもよい。
【００４２】
ＤＫＡ２２は、ディスクユニット３０に備えられたディスク（以下、内部ディスク）４００に接続するための通信ポート２２０を有し、その通信ポート２２０を介して、内部ディスク４００と通信することができる。ＤＫＡ２２は、ＣＰＵやメモリ等を備えたマイクロコンピュータシステムとして構成されている。ＤＫＡ２２は、ＣＨＡ２１Ａからキャッシュメモリ２４に書かれたデータを内部ディスク４００に書込んだり、内部ディスク４００から読み出したデータをキャッシュメモリ２４に書込んだりすることができる。また、ＤＫＡ２２は、内部ディスク４００との間でデータ入出力を行う場合、論理的なアドレスを物理的なアドレスに変換することができる。
【００４３】
キャッシュメモリ２４は、例えば揮発性又は不揮発性のメモリであり、ホスト装置１０から受信したデータや、内部ディスク４００から読出されたデータを一時的に記憶することができる。
【００４４】
共有メモリ２５は、例えば不揮発性のメモリであり、ストレージ仮想化装置６００での制御に関する情報（以下、制御情報）が格納される。制御情報としては、例えば、デバイス構成情報１０１がある。デバイス構成情報１０１は、ストレージ仮想化装置６００における論理的なデバイス構成を表す情報を含んでいる。デバイス構成情報１０１により、ストレージサブシステム４０に存在する記憶資源（例えば、論理ボリューム４２）を、ストレージ仮想化装置６００に存在する記憶資源（例えば、論理ボリューム３２）であるかのように、ホスト装置１０に提供することができる。デバイス構成情報１０１については、後に詳述する。
【００４５】
接続部２６は、ＣＨＡ２１、ＤＫＡ２２、キャッシュメモリ２４及び共有メモリ２５を相互に接続させる。接続部２６は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
【００４６】
ディスユニット３０には、アレイ状に配列された複数の内部ディスク４００が含まれている。内部ディスク４００としては、例えば、ハードディスク、フレキシブルディスク、光ディスクなどのディスク型記憶装置とすることができる。内部ディスク４００に代えて、他種の記憶装置、例えば、磁気テープ、半導体メモリ（例えばフラッシュメモリ）を用いることもできる。内部ディスク４００の記憶領域上には、論理ボリューム（以下、内部ＶＯＬ）３１が設けられる。内部ＶＯＬ３１は、物理的な内部ディスク４００が有する記憶資源を用いて設定された論理ボリュームであるのに対し、前述した論理ボリューム（以下、内部ＶＯＬ）１３２は、内部ディスク４００を用いて設定された論理ボリュームではない。つまり、内部ＶＯＬ３１にアクセスが発生した場合には、内部ディスク４００にアクセスが行われるが、内部ＶＯＬ１３２にアクセスが発生した場合には、外部の論理ボリューム（以下、外部ＶＯＬ）４２にアクセスが行われる。
【００４７】
ＳＶＰ２３は、ストレージ仮想化装置６００の保守又は管理を行うための情報処理端末（例えばノート型のパーソナルコンピュータ）である。ＳＶＰ２３は、例えば、内部ＬＡＮ４１０を介して、ＣＨＡ２１内のプロセッサ（例えばＣＰＵ）や、ＤＫＡ２２内のプロセッサに接続されている。ＳＶＰ２３は、ストレージ仮想化装置６００内の障害発生を監視してディスプレイ画面に表示したり、内部ディスク４００の閉塞処理等を指示したりするようになっている。また、ＳＶＰ２３は、デバイス構成情報１０１の少なくとも一部を入力することもできる。また、ＳＶＰ２３は、遠隔の情報処理端末から操作することもできる。
【００４８】
ストレージサブシステム４０は、ストレージ仮想化装置６００のような構成であっても良いし、ストレージ仮想化装置６００よりも簡易な構成であっても良い。ストレージサブシステム４０は、例えば、通信ポート４１を持ったＣＨＡ２１７と、１又は複数のディスク（以下、外部ディスク）８１７とを備えている。外部ディスク５００の記憶領域上には、外部ＶＯＬ４２が備えられている。外部ＶＯＬ４２は、ストレージ仮想化装置６００の内部ＶＯＬ１３２として扱われるようになっている。
【００４９】
以上が、本実施形態に係る計算機システムの構成例である。なお、上記の説明は一例であって、他の構成が採用されてもよい。例えば、共有メモリ２５とキャッシュメモリ２４は、別々のメモリでなく、一つのメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、コントローラ部２０は、ＣＰＵ、メモリ及び通信ポートを備えた回路基盤であっても良い。この場合、ＣＰＵが、複数のＣＨＡやＤＫＡによって行われる処理を実行することができる。
【００５０】
さて、この実施形態では、ストレージ仮想化装置６００を冗長化することができる。以下、その点を含め、本実施形態について詳細に説明する。
【００５１】
図２Ａは、ストレージ仮想化装置６００とストレージサブシステム４０との論理的な接続構造を示す模式図である。
【００５２】
例えば、ホスト１０と、一台のストレージ仮想化装置６００Ａと、４台のストレージサブシステム４０Ａ、４０Ｂ、４０Ｃ及び４０Ｄとが備えられているとする。ストレージ仮想化装置６００Ａでは、論理的なデバイス構成として、例えば、ＶＤＥＶ９７１と、内部ＬＤＥＶ３２と、内部ＬＵＮ（Logical Unit Number）とからなる３層の記憶階層のうちのＶＤＥＶ９７１に外部ＶＯＬ４２が関連付けられているという構成を有している。
【００５３】
このような状況の下で、図２Ａに示すように、ストレージ仮想化装置６００Ｂが、増設された場合、後に詳述する処理が行われることにより、ストレージ仮想化装置６００Ａに存在する論理的なデバイス構成を、図２Ｂに示すように、増設されたストレージ仮想化装置６００Ｂに構築することができる。
【００５４】
以下、まず、論理的なデバイス構成の一例を詳細に説明し、その後で、その論理的なデバイス構成を復元するために行われる処理を説明する。
【００５５】
ＶＤＥＶ９７１は、論理的な記憶階層の最下位に位置する仮想的なデバイス（Virtual Device）である。ＶＤＥＶ９７１は、ストレージサブシステム４０Ａ〜４０Ｄの記憶資源を仮想化した記憶空間であり、RAID構成を適用することができる。例えば、一つのＶＤＥＶ９７１には、仮想的な論理ボリューム（仮想ＶＯＬ）である記憶領域を一又は複数個形成することができる。
【００５６】
内部ＬＤＥＶ３２は、ＶＤＥＶ９７１の記憶空間に基づく論理的な記憶デバイスであり、ＶＤＥＶ９７１中の仮想ＶＯＬに関連付けることができる。内部ＬＵＮには、一又は複数のＬＤＥＶ３２を関連付けることができる。一つの内部ＬＵＮにより、その内部ＬＵＮに関連付けられた一又は複数のＬＤＥＶ３２が一つの内部ＶＯＬとしてホスト装置１０に提供することができる。
【００５７】
このように、本実施形態では、内部ＶＯＬ１３２と外部ＶＯＬ４２との間に位置する中間記憶階層（ＶＤＥＶ９７１）に外部ＶＯＬ４２を接続することにより、外部ＶＯＬ４２を内部ＶＯＬ１３２の１つとして利用できるようにしている。
【００５８】
図３は、論理的なデバイス構成の一例を示す。図４Ａは、図３に例示したデバイス構成の場合のデバイス構成情報１０１の一例を示す。なお、以下の説明では、個々の要素の識別コードとして番号を用い、番号をコード"＃"で表すことにする。
【００５９】
デバイス構成情報１０１には、第一変換テーブル７０１と第二変換テーブル７０３とが含まれている。
【００６０】
第一変換テーブル７０１は、内部ＬＵＮを指定するデータをＶＤＥＶ９７１用データに変換するための、ＬＵＮ−ＬＤＥＶ−ＶＤＥＶ変換テーブルである。このテーブル７０１は、例えば、内部ＬＵＮと、その内部ＬＵＮに対応する内部ＬＤＥＶ＃及び最大スロット数と、内部ＬＤＥＶ＃に対応するＶＤＥＶ＃及び最大スロット数等を対応付けることにより構成される。また、図示しないが、このテーブル７０１には、どの内部ＬＤＥＶにおけるどのＬＢＡが、キャッシュメモリ２４のどのスロットのどのサブブロックに対応するか等も登録されていても良い。なお、スロットとは、キャッシュメモリ２４の一領域である。
【００６１】
第二変換テーブル７０３には、例えば、ＶＤＥＶ＃と、ストライプサイズと、RAIDレベルと、ストレージサブシステム４０を識別するための番号（ＳＳ＃）と、イニシエータポート（ストレージ仮想化装置のポート）の番号と、外部ＷＷＮ及び外部ＬＵＮ（つまりストレージサブシステム４０におけるＷＷＮ及びＬＵＮ）とを対応付けることにより構成されている。この例では、ＶＤＥＶ＃１に、ＳＳ＃（１，４，６，７）で特定される四つのストレージサブシステム４０Ａ〜４０Ｄを利用してＲＡＩＤ１が構成される。換言すれば、ＶＤＥＶ＃１に四つの仮想的な論理ボリューム（以下、仮想ＶＯＬ）＃１、＃４、＃６及び＃７を関連付け、四つの仮想ＶＯＬにより、ＲＡＩＤ１を構成することができる。なお、第二変換テーブル７０３としては、図４Ａに例示するテーブルに限らず、例えば、図４Ｂに例示するように、ストライプサイズ、ＲＡＩＤレベル及び他社ＳＳ＃の無い簡易な構成のテーブル７０３´を採用することもできる。
【００６２】
ＳＳ＃１に割り当てられている三つのパス（イニシエータポート＃、外部ＷＷＮ及び外部ＬＵＮから構成されるパス）は、図５に例示するように、ストレージサブシステム４０Ａにおいて、同一の外部ＬＤＥＶ１４２に割り当てられている（つまり交替パス構造が構築されている）。これにより、ストレージ仮想化装置６００Ａは、それら三つのパスのいずれか二つに障害が発生しても残りの一つのパスを経由して外部ＬＤＥＶ１４２にアクセスすることができるようになっている。
【００６３】
ホスト装置１０に提供される内部ＬＵＮ０に、一つの内部ＬＤＥＶ＃３が関連付けられているとする。この場合、その内部ＬＤＥＶ＃３が、内部ＶＯＬ１３２としてホスト装置１０に提供される。
【００６４】
ＶＤＥＶ９７１には、ＶＤＥＶ９７１へのインタフェースとしてＶＤＥＶ＃があり、そのＶＤＥＶ＃に、内部ＬＤＥＶ＃及び一又は複数の仮想ＶＯＬ１０２を関連付けることができる。具体的には、例えば、ＶＤＥＶ＃１に、内部ＬＤＥＶ＃１と、４つの仮想ＶＯＬ＃１、＃４、＃６及び＃７が関連付けられている。仮想ＶＯＬの番号は、例えば、第二変換テーブル７０３における他社ＳＳ＃に対応している。仮想ＶＯＬ１０２は、ＶＤＥＶ９７１の一記憶領域である。各仮想ＶＯＬ＃１、＃４、＃６及び＃７には、それぞれ、外部ＬＵＮパス（イニシエータポート＃、外部ＷＷＮ及び外部ＬＵＮ）が関連付けられている。
【００６５】
以上の構成により、ストレージ仮想化装置６００Ａが、ホスト装置１０から、内部アドレス（内部ＬＵＮ０及び論理ブロックアドレス（ＬＢＡ））を指定したアクセスコマンド（ライトコマンド或いはリードコマンド）を受信した場合、４つの外部ＶＯＬにそれぞれアクセスが発生する。
【００６６】
具体的には、例えば、図４Ａに例示するように、ＣＨＡ２１Ａは、通信ポート２０７を介して、内部ＬＵＮ０及びＬＢＡを指定したアクセスコマンドをホスト装置１０から受信する。ＣＨＡ２１Ａ又は２１Ｂは、内部ＬＵＮ０及びＬＢＡを、第一変換テーブル７０１に基づいて、ＶＤＥＶ９７１用のアドレス（ＶＤＥＶ＃＋ＳＬＯＴ＃＋ＳＵＢＢＬＯＣＫ＃）に変換する。
【００６７】
次に、ＣＨＡ２１Ａ又は２１Ｂは、第二変換テーブル７０３を参照して、ＶＤＥＶ９７１用のアドレスを、外部アドレス（ＷＷＮ＋ＬＵＮ＋ＬＢＡ）に変換する。ＣＨＡ２１Ｂは、変換後の外部アドレスを指定したアクセスコマンドを、ストレージサブシステム４０Ａ〜４０Ｄに送信する。これにより、各ストレージサブシステム４０Ａ〜４０Ｄにおいて、指定された外部アドレスに対応した外部ＬＤＥＶ１４２に対するアクセスが行われる。
【００６８】
以下、アクセスがライトの場合について説明する。
【００６９】
図６Ａは、記憶階層を中心に示すデータ書込みの流れ図であり、図６Ｂは、キャッシュメモリ２４の使われ方を中心に示すデータ書込みの流れ図である。
【００７０】
ホスト装置１０は、例えば、内部アドレス（内部ＬＵＮ及びＬＢＡ）を指定したライトコマンド（Write）を発行する（ステップＳ１２１）。ＣＨＡ２１Ａ又は２１Ｂは、そのライトコマンドを受信すると、指定された内部アドレスを、ＶＤＥＶ用のアドレスを経て外部アドレスに変換し、ＣＨＡ２１Ｂが、外部アドレスを指定したライトコマンドをストレージサブシステム４０に送信する（Ｓ１２２）。
【００７１】
ホスト装置１０は、ライトコマンドに従うデータをＣＨＡ２１Ａに送信する（Ｓ１２３）。ＣＨＡ２１Ａに受信されたデータは、内部ＬＤＥＶ３２からＶＤＥＶ９７１を介して（Ｓ１２４）、外部ＬＵＮに対して転送される（Ｓ１２５）。Ｓ１２４では、第一変換テーブル７０１を用いて変換されたアドレスが表す場所（キャッシュメモリ２４上の領域）に、データが格納される。
【００７２】
ストレージサブシステム４０は、転送先の外部ＬＵＮに属する外部ＬＤＥＶ１４２（外部ディスク５００）にデータが書かれた場合に、書込み完了報告（Good）を、ＣＨＡ２１Ｂに送信する（Ｓ１２６）。ＣＨＡ２１Ｂは、書込み完了報告を受けたならば、Ｓ１２１でライトコマンドを受けたＣＨＡ２１Ａに、書込み完了報告を送信し、ＣＨＡ２１Ａは、その書込み完了報告を、ホスト装置１０に送信する（Ｓ１２７）。
【００７３】
以上の流れによれば、外部ＬＤＥＶ１４２にデータが書かれた場合に、ホスト装置１０に書込み完了報告が送信される。これにより、ホスト装置１０とストレージサブシステム４０との間に複数のストレージ仮想化装置６００が存在し、外部ＬＤＥＶ１４２へのアクセスの際に経由されるストレージ仮想化装置６００が違っても、データの整合性を保証することができる。具体的には、例えば、ストレージ仮想化装置６００Ａを経由して外部ＬＤＥＶ１４２の或る領域にデータを書くためのライトコマンドが発行された直後に、別のストレージ仮想化装置６００Ｂを経由してその領域からデータを読み出すためのリードコマンドが発行された場合に、確実に、そのリードコマンドに従って読み出されるデータを、その直前に発効されたライトコマンドに従って書かれたデータとすることができる。
【００７４】
なお、このようなデータ保証がなされれば、書込み完了を報告するタイミングは、上記の例に限られない。例えば、ＣＨＡ２１Ａもストレージサブシステム４０も、キャッシュメモリにデータが格納された時に、書込み完了を報告しても良い。その場合、例えば、ＣＨＡ２１Ａもストレージサブシステム４０も、キャッシュメモリにデータを格納し、外部ＬＤＥＶ１４２にデータが格納される前に、そのデータが格納される場所に対するリードコマンドを受信した場合には、キャッシュメモリ上のデータを返すことができる。
【００７５】
図７Ａは、記憶階層を中心に示すデータ読出しの流れ図であり、図７Ｂは、キャッシュメモリ２４の使われ方を中心に示すデータ読出しの流れ図である。
【００７６】
ホスト装置１０は、内部アドレスを指定したリードコマンドを送信する（Ｓ１３１）。ＣＨＡ２１Ａが、そのリードコマンドを受信すると、ＣＨＡ２１Ａ又は２１Ｂは、内部アドレスを、ＶＤＥＶ用のアドレスを経て外部アドレスに変換し、ＣＨＡ２１Ｂが、外部アドレスを指定したリードコマンドをストレージサブシステム４０に送信する（Ｓ１３２）。ストレージサブシステム４０は、ＣＨＡ２１Ｂからリードコマンドを受信し、そのリードコマンドに従うデータを外部ＬＤＥＶ１４２から読み出して、ＣＨＡ２１Ｂに送信し（Ｓ１３３）、正常に読み出しが完了した旨を報告する（Ｓ１３５）。ＣＨＡ２１Ｂは、ストレージサブシステム４０から受信したデータを、キャッシュメモリ２４の所定の場所（ＶＤＥＶ用のアドレスが表す場所）に格納する（Ｓ１３４）。ＣＨＡ２１Ａは、キャッシュメモリ２４に格納されたデータを読み出し、そのデータをホスト装置１０に送信し（Ｓ１３６）、読み出し完了報告を行う（Ｓ１３７）。
【００７７】
ストレージ仮想化装置６００とストレージサブシステム４０との間では、上述したような流れでアクセスが行われる。このようなアクセスを、ストレージ仮想化装置６００を冗長化した場合にも行えるようにするために、本実施形態では、以下に詳述する、デバイス構成情報の入出力処理（以下、構成情報ＩＯ処理）が行われる。
【００７８】
以下、ストレージサブシステム４０が一つであり、第一のストレージ仮想化装置６００Ａに代えて又は加えて、第二のストレージ仮想化装置６００Ｂが備えられる場合を例に採り、構成情報ＩＯ処理の幾つかの例について詳述する。その際、ＣＨＡに搭載されているプロセッサを、「ＣＨＰ」と記載し、ＤＫＡに搭載されているプロセッサを、「ＤＫＰ」と記載する。
【００７９】
図８は、構成情報ＩＯ処理の第一の例を示す。
【００８０】
第一のストレージ仮想化装置６００Ａにおいて、ＣＨＡ２１Ａ上のＣＨＰ７３１Ａは、共有メモリ２５Ａから、デバイス構成情報１０１を読出し、特定の記憶域９１０Ａに書く。この記憶域９１０Ａは、第一のストレージ仮想化装置６００Ａにおける物理的な記憶資源上のどの領域であっても良い。例えば、記憶域９１０Ａは、共有メモリ２５Ａ或いはキャッシュメモリ上に用意することができる。
【００８１】
ＣＨＡ２１Ｂ上のＣＨＰ７３１Ｂが、記憶域９１０Ａからデバイス構成情報１０１を読出し、そのデバイス構成情報１０１を書込み対象データとしたライトコマンドを、ストレージサブシステム４０に送信する。デバイス構成情報１０１の書込み先を表す外部アドレス中の外部ＬＵＮは、そのデバイス構成情報１０１で管理されている一又は複数の外部ＶＯＬ４２のうちのいずれかの外部ＶＯＬ４２であり、外部アドレス中のＬＢＡは、それのシステム領域９０３とされる。
【００８２】
なお、システム領域９０３とは、ストレージ仮想化装置６００、ホスト装置１０、或いはストレージサブシステム４０の制御に関わる情報（以下、システム情報、例えば、ホスト装置１０、ＣＨＡ或いはＤＫＡのオペレーティングシステム）であって、ホスト装置１０のアプリケーション１１がアクセスすることのない情報が格納される領域である。例えば、システム領域９０３は、ストレージ仮想化装置６００、ホスト装置１０、或いはストレージサブシステム４０の起動の際に、その起動する装置によってアクセスされ、システム情報は、その装置によって読み出される。それに対し、外部ＶＯＬ４２には、システム領域９０３以外の領域としてユーザ領域９０１が存在する。ユーザ領域９０１とは、ホスト装置１０のアプリケーション１１がアクセスするデータが格納される領域である。なお、このようにシステム領域がある場合には、ＶＤＥＶ９７１は、外部ＶＯＬ４２のユーザ領域を基に用意されても良い。
【００８３】
ストレージサブシステム４０において、ＣＨＡ２１７上のＣＨＰ２１８が、ＣＨＡ２１Ｂからライトコマンドを受信し、そのライトコマンドを、ＤＫＡ２１９に転送し、デバイス構成情報を、ストレージサブシステム４０内の図示しないキャッシュメモリに書く。ＤＫＡ２１９上のＤＫＰ２２０は、キャッシュメモリからデバイス構成情報を読出し、ライトコマンドに従う外部アドレスが表す場所、すなわち、外部ＶＯＬ４２のシステム領域９０３に、読み出したデバイス構成情報を書く。
【００８４】
第二のストレージ仮想化装置６００Ｂが第二の通信ネットワーク１０４に接続された場合、第二のストレージ仮想化装置６００Ｂ（イニシエータ）が、第二の通信ネットワーク１０４に接続されているストレージサブシステム４０（ターゲット）のポートを認識する。ＣＨＡ２１Ｃ上のＣＨＰ７３１Ｃが、認識したポートに対して、デバイス構成情報１０１が格納されている場所を表す外部アドレスを含んだリードコマンドを送信する。これにより、外部ＶＯＬ４２のシステム領域９０３から、ＣＨＡ２１Ｃに、デバイス構成情報１０１が読み出される。ＣＨＰ７３１Ｃは、読み出されたデバイス構成情報を、特定の記憶域９１０Ｂに書く。この記憶域９１０Ｂは、第二のストレージ仮想化装置６００Ｂにおける物理的な記憶資源上のどの領域であっても良い。例えば、記憶域９１０Ｂは、共有メモリ２５Ｂ或いはキャッシュメモリ上に用意することができる。
【００８５】
ＣＨＡ２１Ｄ上のＣＨＰ７３１Ｄが、記憶域９１０Ｂからデバイス構成情報１０１を読出し、そのデバイス構成情報１０１を、共有メモリ２５Ｂに書く。これにより、第一のストレージ仮想化装置６００Ａにおける論理的なデバイス構成が、第二のストレージ仮想化装置６００Ｂに構築されたことになる。
【００８６】
図９は、デバイス構成情報１０１の構成例を示す。
【００８７】
デバイス構成情報１０１は、例えば、１つのＶＤＥＶ＃について１つ用意される情報である。デバイス構成情報１０１には、例えば、（Ａ）アイキャッチャ、（Ｂ）フォーマットレビジョン番号、（Ｃ）マッピングされているストレージ仮想化装置の数（＝ｋ、ｋ≧１の整数）、（Ｄ）ユニーク管理番号、（Ｅ）仮想化装置情報、（Ｆ）オーナー情報、（Ｇ）仮想ＶＯＬ情報、（Ｈ）内部ＬＤＥＶ情報及び（Ｉ）ホスト／仮想化装置情報が含まれている。
【００８８】
アイキャッチャとは、デバイス構成情報１０１として認識するためのコード配列である。デバイス構成情報１０１のうちのこのアイキャッシャの部分だけを読出し解析することで、読み出された部分が、デバイス構成情報１０１の一部なのかそうでないのかを識別することができる。
【００８９】
フォーマットレビジョン番号とは、デバイス構成情報１０１のフォーマットを表す番号である。これは、例えば、デバイス構成情報のフォーマットがバージョンチェンジした場合などに有効である。フォーマットレビジョン番号を解析することにより、その後に続く構成を特定することができる。具体的には、どういった情報要素が、デバイス構成情報の先頭から何バイトオフセットした位置に何バイト分書かれているかということを特定することができる。これを特定できた場合、例えば、所望の情報要素を読み出す場合には、ストレージ仮想化装置６００は、その情報要素に対応するアドレスを指定したリードコマンドを発行すれば良い。
【００９０】
マッピングされているストレージ仮想化装置の数とは、このデバイス構成情報１０１で管理されている外部ＶＯＬ４２にマッピングされているストレージ仮想化装置の数を意味する。ストレージ仮想化装置６００は、デバイス構成情報１０１を、複数のストレージ仮想化装置６００がアクセス可能な共有記憶域（例えば、前述した外部ＶＯＬ４２）にデバイス構成情報１０１を設定する場合や、その共有記憶域からデバイス構成情報１０１を読み出して自身の所定の記憶域（例えば共有メモリ２５）に設定する場合に、その共有記憶域上のデバイス構成情報１０１におけるｋを、更新する（例えば１加算する）ことができる。このｋを参照することにより、各ストレージ仮想化装置６００は、同一の外部ＶＯＬに何台のストレージ仮想化装置６００がマッピングされているのかを判別することができる。
【００９１】
ユニーク管理番号とは、このデバイス構成情報１０１を一意に識別するための番号である。ユニーク管理番号は、例えば、ストレージサブシステム４０に送信したinquiryコマンドに対する応答として受信した情報（以下、inquiry情報）から抽出される情報要素（例えば、ストレージサブシステム４０のベンダ名、型名、製造番号）により構成することができる。ユニーク管理番号は、このデバイス構成情報に固有の番号となる。一方、前述したアイキャッチャは、情報の種別としてデバイス構成情報であることを知らしめる番号であれば良いので、複数のデバイス構成情報で同じコード配列であっても良い。
【００９２】
仮想化装置情報とは、マッピングされているストレージ仮想化装置に関する情報であり、具体的には、例えば、ストレージ仮想化装置の型名及び製造番号で構成される情報である。なお、仮想化装置情報は、ｋ個存在する。
【００９３】
オーナー情報は、主に外部ＶＯＬを管理しているストレージ仮想化装置（オーナー）に関する情報である。例えば、ストレージサブシステム４０は、オーナー以外によるデバイス構成情報の変更を受付けないことができる。なお、オーナー情報に代えて、マッピングされているストレージ仮想化装置の優先順位であっても良い。
【００９４】
仮想ＶＯＬ情報は、ＶＤＥＶ＃に関連付けられている仮想ＶＯＬに関する情報である。具体的には、例えば、仮想ＶＯＬ情報には、（１）ＲＡＩＤレベル、（２）ストライプ情報、（３）外部ＶＯＬの組み合わせ情報（どの外部ＶＯＬとどの外部ＶＯＬがセットになっているかを表す情報）、及び（４）外部ＬＵＮパス（ストレージ仮想化装置のイニシエータポート＃から外部ＬＵＮとの間のパス）のうちの少なくとも（１）及び／又は（２）と、（３）とが含まれる。この仮想ＶＯＬ情報が、例えば、上記第二変換テーブル７０３に相当する。
【００９５】
内部ＬＤＥＶ情報とは、一又は複数の仮想ＶＯＬ１０２に対応付けられている一又は複数の内部ＬＤＥＶ３２に関する情報である。具体的には、例えば、内部ＬＤＥＶ情報には、内部ＬＤＥＶのサイズ、内部ＬＤＥＶの数、内部ＬＤＥＶ連結情報（幾つの内部ＬＤＥＶを一つの論理的な記憶デバイスとするか）、内部ＬＤＥＶ属性（例えば、ＬＤＥＶ＃、エミュレーションタイプなど）が含まれる。上記仮想ＶＯＬ情報とこの内部ＬＤＥＶ情報とのセットにより、内部ＬＤＥＶと外部ＶＯＬとの対応付けがなされている。なお、この実施形態では、個々の内部ＬＤＥＶのサイズは同じであり、幾つの内部ＬＤＥＶが内部ＬＵＮに対応付けられるかによって、その内部ＬＵＮにより提供される内部ＶＯＬのサイズを決定することができる。個々の内部ＬＤＥＶのサイズは、他の内部ＬＤＥＶのサイズと違っても良い。
【００９６】
ホスト／仮想化装置情報とは、ホストとストレージ仮想化装置との両方に関する情報である。ホスト／仮想化装置情報には、例えば、パス定義情報（例えば、ストレージ仮想化装置のＷＷＮ、内部ＬＵＮ、及び内部ＬＤＥＶ＃のセット）、セキュリティ情報（例えば、内部ＬＵＮ及び／又は内部ＬＤＥＶに設定されたアクセス制限情報）が含まれている。アクセス制限情報としては、例えば、どのホスト装置がアクセス可能かや、リードとライトのうちのいずれのアクセスが可能か等がある。なお、パス定義情報があれば、そのパス定義情報と、仮想ＶＯＬ情報や内部ＬＤＥＶ情報とを組み合わせることにより、第二のストレージ仮想化装置６００Ｂでも、内部ＬＵＮ−内部ＬＤＥＶ＃−ＶＤＥＶ＃−外部ＷＷＮ−外部ＬＵＮの組み合わせを同じにすることができる。もし、パス定義情報が無い場合には、内部ＬＵＮは、第二のストレージ仮想化装置６００Ｂの任意の内部ＬＵＮとされても良い。この場合であっても、第一のストレージ仮想化装置６００Ａと同じ論理的なデバイス構成を構築することができるし、後述する工夫により、ホスト装置１０に交替パスを認識させることも可能である。
【００９７】
以上のデバイス構成情報１０１は、例えば、ＳＶＰ２３を操作する管理者によって構築することができる。或いは、デバイス構成情報１０１の少なくとも一部は、ＣＨＡ２１ＢがＣＨＡ２１７に対して発行したコマンドの応答に基づいて、ＣＨＡ２１Ｂが構築することができる。具体的には、例えば、ＣＨＡ２１Ｂは、上記（Ａ）として、所定のコード配列を登録することができる。また、ＣＨＡ２１Ｂは、上記（Ｂ）として、登録するデバイス構成情報１０１のフォーマットに対応した番号を登録することができる。また、ＣＨＡ２１Ｂは、（Ｃ）として、初期値１を登録し、上記（Ｅ）として、自分に関する情報を登録することができる。また、ＣＨＡ２１Ｂは、inquiryコマンドをストレージサブシステム４０に送信し、その応答として得られたinquiry情報中の種々の情報要素を用いて、上記（Ｄ）を生成して登録し、且つ、それらの情報要素と、ストレージ仮想化装置６００Ａで管理されている、内部ＬＵＮと内部ＬＤＥＶに関する情報を基に、上記（Ｇ）及び（Ｈ）を構成することができる。（具体的には、例えば、上記（Ｇ）及び（Ｈ）の作成には、特開２００５−１０７６４５号公報（US Application No. 10/769,805  US Publication No. US2005/0071559A1）の図５に記載の処理を援用してもよい。）また、ＣＨＡ２１Ｂは、上記（Ｆ）として、自分を表す情報を登録することができる。また、ＣＨＢ２１Ｂは、内部ＬＵＮと内部ＬＤＥＶに関する情報を基に、上記（Ｉ）を表す情報を登録することができる。
【００９８】
第一のストレージ仮想化装置６００Ａのデバイス構成情報１０１は、図８を参照して説明した構成情報ＩＯ処理によって、第二のストレージ仮想化装置６００Ｂに設定されるが、以下、その構成情報ＩＯ処理の流れを、詳細に説明する。
【００９９】
図１０は、構成情報ＩＯ処理の詳細な流れの一例を示す。
【０１００】
第二のストレージ仮想化装置６００Ｂが増設された場合（Ｓ２０１）、第二のストレージ仮想化装置６００ＢのＣＨＡ２１Ｃ（イニシエータ）が、ストレージサブシステム４０のターゲットポートを認識する（Ｓ２０２）。ＣＨＡ２１Ｃは、認識したターゲットポートを指定したレポートＬＵＮコマンドを送信する（Ｓ２０３）。
【０１０１】
ターゲットポートを有するＣＨＡ２１７は、指定されたターゲットポートに属しているＬＵＮを、共有メモリ２２１に格納されているストレージ管理テーブル２２３を参照することにより特定し、特定された全ての外部ＬＵＮを、ＣＨＡ２１Ｃに報告する（Ｓ２０４）。ストレージ管理テーブル２２３は、例えば、ターゲットポートのＷＷＮと、それに属する外部ＬＵＮと、その外部ＬＵＮに対応するデバイス種別と、その外部ＬＵＮに属する外部ＬＤＥＶ＃とが登録されているテーブルである。
【０１０２】
ＣＨＡ２１Ｃは、報告された各外部ＬＵＮを指定した各inquiryコマンドを送信する（Ｓ２０５）。
【０１０３】
ＣＨＡ２１７は、inquiryコマンドを受信した場合、そのコマンドで指定されたＬＵＮに関連する属性データ（例えば、ＬＵＮに対応する論理ユニットのデバイス種別）を、ストレージ管理テーブル２２３を参照することにより特定し、特定された属性データを送信する。
【０１０４】
ＣＨＡ２１Ｃは、受信した属性データが、所定属性であるか否かを判別する（Ｓ２０７）。ここで、所定属性とは、例えば、デバイス構成情報１０１が格納され得る外部ＶＯＬ４２を有する記憶装置種類であり、より具体的には、例えば、ディスクである。
【０１０５】
ＣＨＡ２１Ｃは、受信した属性データが所定属性であれば（Ｓ２０７でＹＥＳ）、所定の場所を表すアドレスを含んだリードコマンドを送信する（Ｓ２０８）。ここで、所定の場所とは、例えば、デバイス構成情報１０１のアイキャッチャが存在し得る領域（例えば、外部ＶＯＬ４２の先頭ＬＢＡ）である。
【０１０６】
ＣＨＡ２１７は、ＣＨＡ２１Ｃからリードコマンドを受信した場合、そのリードコマンドのアドレスからデータを読み出すことをＤＫＡ２１９に指示することにより、そのアドレスに存在するデータを取得し、取得したデータを送信する（Ｓ２０９）。
【０１０７】
ＣＨＡ２１Ｃは、データを受信した場合、そのデータが、特定のコード配列になっているか否か、つまり、そのデータがアイキャッチャであるか否かを判断する（Ｓ２１０）。
【０１０８】
ＣＨＡ２１Ｃは、受信したデータがアイキャッチャであれば（Ｓ２１０でＹＥＳ）、デバイス構成情報１０１を構成する残りのデータを読むためのリードコマンドを送信する（Ｓ２１１）。
【０１０９】
ＣＨＡ２１７は、そのリードコマンドを受信した場合、そのリードコマンドに従う場所からデータを読み出すことをＤＫＡ２１９に指示することにより、その場所に存在するデータを取得し、取得したデータ（すなわち、デバイス構成情報１０１のアイキャッチャ以外の部分）を送信する（Ｓ２１２）。
【０１１０】
ＣＨＡ２１Ｃは、上記受信したアイキャッチャと、受信した、デバイス構成情報１０１のアイキャッチャ以外の部分とで構成されるデバイス構成情報１０１を、共有メモリ２５Ｂに格納する（Ｓ２１３）。
【０１１１】
Ｓ２０７でＮＯ、Ｓ２１０でＮＯ、又はＳ２１３の後、Ｓ２０５で報告された全ての外部ＬＵＮについての属性データを受信していれば（Ｓ２１４でＹＥＳ）、終了となり、そうでなければ、他の外部ＬＵＮの属性データについて、Ｓ２０７が行われる。
【０１１２】
以上が、構成情報ＩＯ処理の第一の例についての説明である。なお、以上の処理流れにおいて、ＣＨＡ２１Ｃは、アイキャッチャに加えてフォーマットレビジョン番号を読出し、アイキャッチャからデバイス構成情報１０１であることを識別した場合には、フォーマットレビジョン番号から、そのデバイス構成情報１０１の構成を識別しても良い。そして、ＣＨＡ２１Ｃは、マッピングされているストレージ仮想化装置の数ｋを更新するライトコマンドを発生することにより、そのｋの値を１増やした後に、デバイス構成情報１０１の残りのデータを読み出しても良い。
【０１１３】
次に、構成情報ＩＯ処理の第二の例について説明する。
【０１１４】
図１１は、構成情報ＩＯ処理の第二の例を示す。以下、第一の例との相違点を主に説明し、第一の例との共通点については説明を省略或いは簡略する（これは、後述の第三及び第四の例についても同様である）。
【０１１５】
この第二の例では、デバイス構成情報１０１で管理されている外部ＶＯＬ４２とは別の新規外部ＶＯＬ４２´に、デバイス構成情報１０１が格納される。具体的には、例えば、第一のストレージ仮想化装置６００Ａが、共有メモリ２５Ａからデバイス構成情報１０１を読み出して記憶域９１０Ａに書き（Ｓ３０１）、その記憶域９１０Ａからデバイス構成情報１０１を読み出して新規外部ＶＯＬ４２´に書く（Ｓ３０２）。新規外部ＶＯＬ４２´は、ストレージサブシステム４０から選択された未使用のＶＯＬとすることができる。未使用のＶＯＬの選択は、例えば、第一のストレージ仮想化装置６００Ａが行うことができる。
【０１１６】
第二のストレージ仮想化装置６００Ｂは、所定属性の外部ＬＵＮに対してリードコマンドを発行することにより、新規外部ＶＯＬ４２´からデバイス構成情報１０１を読み出して記憶域９１０Ｂに書き（Ｓ３０３）、そのデバイス構成情報１０１を共有メモリ２５Ｂに書くことができる（Ｓ３０４）。この結果、第一のストレージ仮想化装置６００Ａに存在する仮想的な内部ＶＯＬ１３２（外部ＶＯＬ４２に対応するＶＯＬ）が、第二のストレージ仮想化装置６００Ｂにも生成される（Ｓ３０５）。
【０１１７】
以上が、構成情報ＩＯ処理の第二の例についての説明である。第二の例は、例えば、第一の例において、デバイス構成情報１０１で管理されている外部ＶＯＬが、使用中、システム領域が無い、或いは、デバイス構成情報１０１を格納することができる程の空きサイズが無い、のいずれかの場合に有効であると考えられる。
【０１１８】
次に、構成情報ＩＯ処理の第三の例について説明する。
【０１１９】
図１２は、構成情報ＩＯ処理の第三の例を示す。
【０１２０】
この第三の例では、内部ＶＯＬ３１（内部ディスク４００上に設けられる論理的な記憶デバイス）に、デバイス構成情報１０１が格納される（Ｓ４０１）。第一のストレージ仮想化装置６００と、第二のストレージ仮想化装置６００Ｂは、ケーブル９８１により接続される。
【０１２１】
第二のストレージ仮想化装置６００Ｂは、内部ＶＯＬ３１の内部ＬＵＮを指定したリードコマンドを、ケーブル９８１を介して、第一のストレージ仮想化装置６００Ａに送信する（Ｓ４０２）。第一のストレージ仮想化装置６００Ａは、指定された内部ＬＵＮに対応する内部ＶＯＬ３１内のデバイス構成情報１０１を、第二のストレージ仮想化装置６００Ｂに送信する（Ｓ４０３）。第二のストレージ仮想化装置６００Ｂは、受信したデバイス構成情報１０１を記憶域９１０Ｂに書き、そのデバイス構成情報を共有メモリ２５Ｂに書く（Ｓ４０４）。この結果、第一のストレージ仮想化装置６００Ａに存在する仮想的な内部ＶＯＬ１３２（外部ＶＯＬ４２に対応するＶＯＬ）が、第二のストレージ仮想化装置６００Ｂにも生成される（Ｓ４０５）。
【０１２２】
以上が、構成情報ＩＯ処理の第三の例についての説明である。第三の例は、例えば、第一及び第二の例において、デバイス構成情報１０１を格納するための外部ＶＯＬが無い場合に、有効であると考えられる。
【０１２３】
次に、構成情報ＩＯ処理の第四の例について説明する。
【０１２４】
図１３は、構成情報ＩＯ処理の第四の例を示す。
【０１２５】
この第四の例では、記憶域９１０Ａが、ＶＤＥＶ９７１に存在する仮想ＶＯＬ１０２とは別種の仮想ＶＯＬである。仮想ＶＯＬ９１０Ａは、共有メモリ２５Ａ或いはキャッシュメモリ上に設けられた記憶空間である。
【０１２６】
仮想ＶＯＬ９１０Ａに、デバイス構成情報１０１が格納される（Ｓ５０１）。第二のストレージ仮想化装置６００Ｂは、仮想ＶＯＬ９１０Ａの内部ＬＵＮを指定したリードコマンドを、ケーブル９８１を介して、第一のストレージ仮想化装置６００Ａに送信する（Ｓ５０２）。第一のストレージ仮想化装置６００Ａは、指定された内部ＬＵＮに対応する仮想ＶＯＬ９１０Ａ内のデバイス構成情報１０１を、第二のストレージ仮想化装置６００Ｂに送信する（Ｓ５０３）。第二のストレージ仮想化装置６００Ｂは、受信したデバイス構成情報１０１を記憶域９１０Ｂに書き、そのデバイス構成情報１０１を共有メモリ２５Ｂに書く（Ｓ５０４）。この結果、第一のストレージ仮想化装置６００Ａに存在する仮想的な内部ＶＯＬ１３２（外部ＶＯＬ４２に対応するＶＯＬ）が、第二のストレージ仮想化装置６００Ｂにも生成される（Ｓ５０５）。
【０１２７】
以上が、構成情報ＩＯ処理の第四の例についての説明である。第四の例は、例えば、第一〜第三の例において、デバイス構成情報１０１を格納するための外部ＶＯＬ及び内部ＶＯＬが無い場合に、有効であると考えられる。なお、第三及び第四の例では、第一のストレージ仮想化装置６００と、第二のストレージ仮想化装置６００Ｂは、第一或いは第二の通信ネットワークを介して通信しても良い。
【０１２８】
以上の第一〜第四の例のうちのいずれの例に対応する構成情報ＩＯ処理を行うかは、例えば、管理者が、予め決めておいても良いし、第一のストレージ管理装置６００Ａ、例えば、ＣＨＡ２１Ｂが、ストレージサブシステム４０の状況や自身の状況に応じて選択してもよい。
【０１２９】
図１４は、構成情報ＩＯ処理の選択ための処理の流れの一例を示す。
【０１３０】
ＣＨＡ２１Ｂは、デバイス構成情報１０１で管理されている外部ＶＯＬにシステム領域があるか否かを判断する（Ｓ６０１）。システム領域があると判断した場合には（Ｓ６０１でＹＥＳ）、ＣＨＡ２１Ｂは、図８に示した構成情報ＩＯ処理（第一の例に従う構成情報ＩＯ処理）を行う。なお、この判断は、例えば、外部ＶＯＬの外部ＬＵＮに対するinquiry情報中の情報要素を解析することにより行うことができる。なお、その情報要素としては、例えば、システム領域の有無を表す情報とすることができる。
【０１３１】
ＣＨＡ２１Ｂは、Ｓ６０１でＮＯの場合、未使用の外部ＶＯＬがあるか否かを判断する（Ｓ６０２）。未使用の外部ＶＯＬがあると判断した場合には（Ｓ６０２でＹＥＳ）、ＣＨＡ２１Ｂは、図１１に示した構成情報ＩＯ処理（第二の例に従う構成情報ＩＯ処理）を行う。なお、この判断は、例えば、外部ＶＯＬの外部ＬＵＮに対するinquiry情報中の情報要素を解析することにより行うことができる。なお、その情報要素としては、例えば、使用中か未使用かを表すステータスとすることができる。
【０１３２】
ＣＨＡ２１Ｂは、Ｓ６０２でＮＯの場合、未使用の内部ＶＯＬ３１があるか否かを判断する（Ｓ６０３）。未使用の内部ＶＯＬ３１があると判断した場合には（Ｓ６０３でＹＥＳ）、ＣＨＡ２１Ｂは、図１２に示した構成情報ＩＯ処理（第三の例に従う構成情報ＩＯ処理）を行う。なお、この判断は、例えば、前述したストレージ管理テーブル２２３に登録されている、各内部ＶＯＬ３１のステータス（例えば、使用中、未使用）を参照することにより、行うことができる。
【０１３３】
ＣＨＡ２１Ｂは、Ｓ６０３でＮＯの場合、図１３に示した構成情報ＩＯ処理（第四の例に従う構成情報ＩＯ処理）を行う。
【０１３４】
第一〜第四の例において、第一の例が最も効果的であり、次いで、第二の例が効果的であると考えられる。第一の例が第二の例よりも効果的であると考えられるのは、第二の例のように、余計に外部ＶＯＬを必要としないからである。第二の例が第三及び第四の例よりも効果的であると考えられるのは、ストレージ仮想化装置同士を接続するケーブルが不要となるし、第一のストレージ仮想化装置６００Ａが除去されても、ストレージサブシステム４０が存在すれば、他のストレージ仮想化装置がデバイス構成情報を取得することができるからである。
【０１３５】
以上の説明によれば、第一のストレージ仮想化装置６００Ａ内の論理的なデバイス構成を第二のストレージ仮想化装置６００Ｂに構築することを、人間に実質的に負担をかけることなく行うことができる。
【０１３６】
また、以上の説明によれば、複数のストレージ仮想化装置６００で同じ外部ＶＯＬをマッピングして作成した場合、全ストレージ仮想化装置６００で、ストレージサブシステム４０から作成する仮想ＶＯＬを、同じサイズ、ストライプ構成及びRAIDレベルなどにより作成することができる。この結果、作成される仮想ＶＯＬはデータとして整合性がとれるようになる。
【０１３７】
ところで、デバイス構成情報１０１は、例えば、以下の手順で、変更することができる。
【０１３８】
図１８Ａは、デバイス構成情報を変更するストレージ仮想化装置６００により行われる処理の流れの一例を示す。
【０１３９】
例えば、ＣＨＡ２１Ｂが、デバイス構成情報の変更を希望することを意味する情報（以下、変更希望情報）を書くためのライトコマンドを、ストレージサブシステム４０に送信する。それにより、そのライトコマンドで指定したアドレスが表す場所に、変更希望情報が書かれる。
【０１４０】
ＣＨＡ２１Ｂは、ストレージサブシステム４０の特定の共有記憶領域に、ｋ−１個の変更許可が記録されているか否かを定期的に監視する（Ｓ８０２）。ｋ−１個とは、マッピングされているストレージ仮想化装置の数ｋから自分の分を減じたことを意味する。
【０１４１】
ＣＨＡ２１Ｂは、ｋ−１個の変更許可が共有記憶領域に書かれていれば（Ｓ８０２でＹＥＳ）、デバイス構成情報を変更する（Ｓ８０３）。具体的には、例えば、ＣＨＡ２１Ｂは、変更前のデバイス構成情報を削除し、変更後のデバイス構成情報を、外部ＶＯＬに書く。
【０１４２】
一方、ＣＨＡ２１Ｂは、ｋ−１個の変更許可が得られなければ（Ｓ８０２でＮＯ）、例えば、一つでも変更拒否が共有記憶領域に書かれていれば、デバイス構成情報を変更することなく終了する。
【０１４３】
なお、この図１８Ａに示す処理において、ＣＨＡ２１Ｂは、オーナー情報を参照し、このストレージ仮想化装置６００がオーナーではない場合には、Ｓ８０１を行うことなく終了しても良い。その際、ＣＨＡ２１Ｂは、オーナーではないためにデバイス構成情報を変更できないことを表すメッセージを、表示しても良い。
【０１４４】
図１８Ｂは、デバイス構成情報を変更するストレージ仮想化装置６００以外のストレージ仮想化装置６００により行われる処理の流れの一例を示す。
【０１４５】
例えば、ＣＨＡ２１Ｂが、ストレージサブシステム４０の特定の共有記憶領域を定期的に参照し、変更希望情報が書かれていれば（Ｓ８１１でＹＥＳ）、変更許可とするか否かを判断する（Ｓ８１２）。例えば、変更希望のデバイス構成情報で管理されている外部ＶＯＬ４２を使用中であれば、ＣＨＡ２１Ｂは、変更拒否を、上記共有記憶領域に登録し（Ｓ８１３）、そうでなければ、変更許可をその共有記憶領域に登録する（Ｓ８１４）。外部ＶＯＬ４２の使用中としては、例えば、その外部ＶＯＬ４２にアクセスコマンドを発行して応答待ちである、外部ＶＯＬ４２と他の外部ＶＯＬ４２との間でデータコピーを行うためのＶＯＬペアの一方となっている、などがある。
【０１４６】
なお、変更許可か変更拒否かが登録される共有記憶領域は、ストレージサブシステム４０に設けられても良いし、ストレージ仮想化装置６００にもうけられても良い。
【０１４７】
さて、第二のストレージ仮想化装置６００Ｂに、第一のストレージ仮想化装置６００Ａの論理的なデバイス構成が構築された場合、図１５に例示するように、ホスト装置１０と外部ＬＵＮとの間で、第一のストレージ仮想化装置６００Ａを経由するパスの他に、第二のストレージ仮想化装置６００Ｂを経由するパスが形成されることになる。すなわち、交替パスができることになる。
【０１４８】
しかし、何の工夫もされないと、ホスト装置１０は、交替パスを認識することができない。なぜなら、第一及び第二のストレージ仮想化装置６００Ａ及び６００Ｂのそれぞれの内部ＬＵＮ（図１５の例では、両方とも内部ＬＵＮ"１"）を指定してinquiryコマンドを送信した場合、指定したそれぞれの内部ＬＵＮが、同一の外部ＬＵＮに通じるパスの内部ＬＵＮであっても、応答として受けるinquiry情報に含まれているＷＷＮ（ターゲットポートのＷＷＮ）が、異なっているためである。
【０１４９】
この実施形態では、第二のストレージ仮想化装置６００Ｂが、指定された内部ＬＵＮのinquiry情報の内容を制御することにより、外部ＬＵＮに対する交替パスを認識させることができる。それを実現するための方法としては、例えば、以下の二つの方法が考えられる。以下、それぞれの方法について説明する。
【０１５０】
図１６Ａは、ホスト装置１０に外部ＬＵＮに対する交替パスを認識させるための第一の方法に従う処理の流れの一例を示す。
【０１５１】
第二のストレージ仮想化装置６００Ｂにおいて、ホスト装置１０からコマンドを受け付けるＣＨＡ２１Ｄは、ホスト装置１０から、内部ＬＵＮを指定したinquiryコマンドを受信した場合（Ｓ７０１）、ボリューム構成情報１０１からユニーク管理番号を抽出し、そのユニーク管理番号を含んだinquiry情報を送信する（Ｓ７０２）。なお、ＣＨＡ２１Ｄは、指定された内部ＬＵＮが、共有メモリ２５Ｂに記憶されたデバイス構成情報１０１に含まれている内部ＬＵＮか否かを判別し、肯定的な判別結果が得られた場合に、Ｓ７０２を行っても良い。
【０１５２】
ホスト装置１０（例えば、図示しないパス管理ソフトウェア）は、第一のストレージ仮想化装置６００Ａから受けたinquiry情報に含まれていたユニーク管理番号を所定の記憶域に記憶させておく。ホスト装置１０は、今回第二のストレージ仮想化装置６００Ｂから受けたinquiry情報中のユニーク管理番号と、上記所定の記憶域に記憶されているユニーク管理番号とを比較照合し、一致が得られた場合に、Ｓ７０１で指定したＬＵＮを経由するパスは、交替パスであることを認識することができる。
【０１５３】
図１６Ｂは、ホスト装置１０に外部ＬＵＮに対する交替パスを認識させるための第二の方法に従う処理の流れの一例を示す。
【０１５４】
第二のストレージ仮想化装置６００Ｂにおいて、ＣＨＡ２１Ｄは、ホスト装置１０から、内部ＬＵＮを指定したinquiryコマンドを受信した場合（Ｓ７１１）、その内部ＬＵＮに対応する外部ＬＵＮにユニークな情報を含んだinquiry情報を送信する（Ｓ７１２）。なお、ＣＨＡ２１Ｄは、指定された内部ＬＵＮが、共有メモリ２５Ｂに記憶されたデバイス構成情報１０１に含まれている内部ＬＵＮか否かを判別し、肯定的な判別結果が得られた場合に、Ｓ７１２を行っても良い。また、上記ユニークな情報としては、例えば、外部ＬＵＮのinquiry情報から抽出されたユニークな情報要素とすることができる。
【０１５５】
ホスト装置１０（例えば、図示しないパス管理ソフトウェア）は、第一のストレージ仮想化装置６００Ａから受けたinquiry情報に含まれていたユニーク情報を所定の記憶域に記憶させておく。ホスト装置１０は、今回第二のストレージ仮想化装置６００Ｂから受けたinquiry情報中のユニーク情報と、上記所定の記憶域に記憶されているユニーク情報とを比較照合し、一致が得られた場合に、Ｓ７１１で指定したＬＵＮを経由するパスは、交替パスであることを認識することができる。
【０１５６】
上記の第一及び第二の方法のいずれの方法においても、ストレージ仮想化装置６００Ａ、６００Ｂの識別子は不要である。ホスト装置１０は、ストレージ仮想化装置６００Ａ、６００Ｂ内の内部ＬＵＮを認識するが、その内部ＬＵＮが、どのストレージ仮想化装置に存在するかを認識しない。
【０１５７】
ホスト装置１０は、交替パスを認識した場合、同一の外部ＬＵＮのアクセスの際に経由すする交替パスを、適宜に切り替えることができる。
【０１５８】
図１７Ａは、第一のパス切替処理の一例を示す。
【０１５９】
ホスト装置１０に、ＣＰＵによって実行されるコンピュータプログラムの一つであるパス切替ソフトウェアが搭載されている。パス切替ソフトウェアは、パスの連続使用回数をカウントする機能を有しており、所定回数連続して、同じパスを経由して、同一の外部ＬＵＮに対応した内部ＬＵＮにアクセスした場合には（Ｓ９０１でＹＥＳ）、違う交替パスを経由して、同一の外部ＬＵＮに対応した違う内部ＬＵＮにアクセスする（Ｓ９０２）。そうではない場合には（Ｓ９０１でＮＯ）、パス切替ソフトウェアは、同一のパスを経由してアクセスを行う（Ｓ９０３）。
【０１６０】
図１７Ｂは、第二のパス切替処理の一例を示す。
【０１６１】
パス切替ソフトウェアは、使用するパスの経由地点であるストレージ仮想化装置６００から負荷が高いことの通知を受けた場合、又は、そのストレージ仮想化装置６００からの応答が無い場合には（Ｓ９１１でＹＥＳ）、そのパスとは異なる交替パスを経由するアクセスを行う（Ｓ９１２）。そうではない場合には（Ｓ９１１でＮＯ）、パス切替ソフトウェアは、そのパスを経由してアクセスを行う（Ｓ９１３）。
【０１６２】
なお、この例では、各ストレージ仮想化装置６００は、各パスの負荷（例えば、各ターゲットポートの負荷）を監視し、その負荷が所定値よりも高くなった場合に、負荷が高いことをホスト装置１０に通知することができる。或いは、各ストレージ仮想化装置６００は、パスの負荷が所定値を超えた場合には、ホスト装置１０に応答を返さなくなってもよい。
【０１６３】
図１７Ｃは、第三のパス切替処理の一例を示す。
【０１６４】
本実施形態に従う計算機システムにおいて、例えば、第一の通信ネットワーク１０５に、ホスト装置１０と各ストレージ仮想化装置６００との間のパスの負荷（例えば、単位時間当たりに流れるデータ量）を監視する管理サーバが備えられても良い。管理サーバは、例えば、各ストレージ仮想化装置６００から、各ターゲットポートの負荷を収集することにより、各パスの負荷を把握することができる。管理サーバは、所定の負荷を超えたパスがある場合には、そのパスと同一の外部ＬＵＮに接続される他の交替パスを使用することのパス切替指示を、ホスト装置１０に送信することができる。
【０１６５】
パス切替ソフトウェアは、管理サーバからパス切替指示を受けた場合には（Ｓ９２１でＹＥＳ）、使用するパスを切り替え（Ｓ９２２）、そうでなければ、パスを切り替えずにアクセスを行う（Ｓ９２３）。
【０１６６】
以上、パス切替方法の例を説明したが、その例に限らず、他の方法が採用されても良い。パス切替の方法としては、例えば、特開２００６−４００２６号公報（US Application No. 10/975,447  US Publication No. US2006/0026346A1）に開示されている方法を援用してもよい。また、上記のパス切替は、ストレージ仮想化装置６００とストレージサブシステムの外部ＬＵＮとの間に形成された交替パスの切り替えにも適用することができる。
【０１６７】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、上述した実施形態では、ストレージ仮想化装置６００とストレージサブシステム４０との間の通信は、ｉＳＣＳＩプロトコルに従って行われても良い。その場合、例えば、ストレージ仮想化装置６００及びストレージサブシステム４０のＣＨＡに代えて、ｉＳＣＳＩネーム（ｉＳＣＳＩプロトコルにおけるユニークなＩＤ）が割当てられた通信ポートを有するチャネルアダプタが備えられても良い。また、その場合、例えば、上述した実施形態において、ストレージ仮想化装置６００とストレージサブシステム４０との間では、ＷＷＮの代わりにｉＳＣＳＩネームがやり取りされても良い。また、ホスト装置１０と通信するＣＨＡ２１Ａは、ＮＡＳとして機能するＣＨＡであっても良い。また、上記実施形態に係る計算機システムは、メインフレームシステムにも適用することができる。また、予め、共有記憶領域（例えば前述した外部ＶＯＬ４２或いは新規外部ＶＯＬ４２´）に、デバイス構成情報１０１を格納しておき、第二のストレージ仮想化装置６００Ｂだけでなく、第一のストレージ仮想化装置６００Ａも、その共有記憶領域からデバイス構成情報１０１を読み出して共有メモリ２５Ａに設定しても良い。
【図面の簡単な説明】
【０１６８】
【図１】図１は、本発明の一実施形態に係る計算機システムの構成例を示すブロック図である。
【図２】図２Ａは、ストレージ仮想化装置６００とストレージサブシステム４０との論理的な接続構造を示す模式図である。図２Ｂは、増設されたストレージ仮想化装置６００Ｂに、ストレージ仮想化装置６００Ａの論理的なデバイス構成が構築されたことを示す。
【図３】図３は、論理的なデバイス構成の一例を示す。
【図４】図４Ａは、図３に例示したデバイス構成の場合のデバイス構成情報１０１の一例を示す。図４Ｂは、第二変換テーブルの変形例を示す。
【図５】図５は、ストレージサブシステム４０Ａに形成されている交替パスの一例を示す。
【図６】図６Ａは、記憶階層を中心に示すデータ書込みの流れ図である。図６Ｂは、キャッシュメモリ２４の使われ方を中心に示すデータ書込みの流れ図である。
【図７】図７Ａは、記憶階層を中心に示すデータ読出しの流れ図である。図７Ｂは、キャッシュメモリ２４の使われ方を中心に示すデータ読出しの流れ図である。
【図８】図８は、構成情報ＩＯ処理の第一の例を示す。
【図９】図９は、デバイス構成情報１０１の構成例を示す。
【図１０】図１０は、構成情報ＩＯ処理の詳細な流れの一例を示す。
【図１１】図１１は、構成情報ＩＯ処理の第二の例を示す。
【図１２】図１２は、構成情報ＩＯ処理の第三の例を示す。
【図１３】図１３は、構成情報ＩＯ処理の第四の例を示す。
【図１４】図１４は、構成情報ＩＯ処理の選択ための処理の流れの一例を示す。
【図１５】図１５を、ホスト装置１０に交替パスを認識させるための工夫の概要の説明図。
【図１６】図１６Ａは、ホスト装置１０に外部ＬＵＮに対する交替パスを認識させるための第一の方法に従う処理の流れの一例を示す。図１６Ｂは、ホスト装置１０に外部ＬＵＮに対する交替パスを認識させるための第二の方法に従う処理の流れの一例を示す。
【図１７】図１７Ａは、第一のパス切替処理の一例を示す。図１７Ｂは、第二のパス切替処理の一例を示す。図１７Ｃは、第三のパス切替処理の一例を示す。
【図１８】図１８Ａは、デバイス構成情報を変更するストレージ仮想化装置６００により行われる処理の流れの一例を示す。図１８Ｂは、デバイス構成情報を変更するストレージ仮想化装置６００以外のストレージ仮想化装置６００により行われる処理の流れの一例を示す。
【符号の説明】
【０１６９】
２…スイッチ  １０…ホスト装置  ２０…コントローラ部  ２１…チャネルアダプタ（ＣＨＡ）  ２２…ディスクアダプタ（ＤＫＡ）  ２３…ＳＶＰ（Service Processor）  ２４…キャッシュメモリ  ２５…共有メモリ  ３０…ディスクユニット  ３１、１３２…内部ＶＯＬ  ４０…ストレージサブシステム  ４２…外部ＶＯＬ  １０１…デバイス構成情報  ３２…内部ＬＤＥＶ  ６００…ストレージ仮想化装置  ９７１…ＶＤＥＶ（仮想デバイス）
【図１】
2007328611.tif 000003
【図２】
2007328611.tif 000004
【図３】
2007328611.tif 000005
【図４】
2007328611.tif 000006
【図５】
2007328611.tif 000007
【図６】
2007328611.tif 000008
【図７】
2007328611.tif 000009
【図８】
2007328611.tif 000010
【図９】
2007328611.tif 000011
【図１０】
2007328611.tif 000012
【図１１】
2007328611.tif 000013
【図１２】
2007328611.tif 000014
【図１３】
2007328611.tif 000015
【図１４】
2007328611.tif 000016
【図１５】
2007328611.tif 000017
【図１６】
2007328611.tif 000018
【図１７】
2007328611.tif 000019
【図１８】
2007328611.tif 000020