(57)【要約】【課題】アクセス要求を適切に処理できる。【解決手段】制御部１１ｂは、記憶装置群１３に属する論理領域Ｌ１と記憶装置群１４に属する論理領域Ｌ２とを合わせた論理領域Ｌ３に対する第１のアクセス要求をアクセス元装置２０から受信する。制御部１１ｂは、論理領域Ｌ３のうち論理領域Ｌ１に含まれる部分Ｌ１ａにアクセスして第１のアクセス結果を取得する。制御部１１ｂは、論理領域Ｌ３の未アクセス部分に対する第２のアクセス要求をストレージ制御装置１２に送信し、第２のアクセス要求に応じた第２のアクセス結果を受信する。制御部１１ｂは、第１および第２のアクセス結果に基づいて、第１のアクセス要求に対する第３のアクセス結果をアクセス元装置２０に送信する。【選択図】図１
2017058736.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置群を備え、前記複数の記憶装置群それぞれを用いてデータを格納する論理領域を作成可能なストレージシステムであって、
第１の記憶装置群に属する第１の論理領域と第２の記憶装置群に属する第２の論理領域とを合わせた第３の論理領域に対する第１のアクセス要求をアクセス元装置から受信すると、前記第３の論理領域のうち前記第１の論理領域に含まれる部分にアクセスして第１のアクセス結果を取得し、前記第３の論理領域の未アクセス部分に対する第２のアクセス要求を送信し、前記第２のアクセス要求に応じた第２のアクセス結果を受信すると、前記第１および前記第２のアクセス結果に基づいて前記第１のアクセス要求に対する第３のアクセス結果を前記アクセス元装置に送信する第１のストレージ制御装置と、
前記第２のアクセス要求を受信すると、前記第３の論理領域のうち前記第２の論理領域に含まれる部分にアクセスし、前記第２のアクセス結果を前記第１のストレージ制御装置に送信する第２のストレージ制御装置と、
を有するストレージシステム。
【請求項２】
前記第３の論理領域の前記未アクセス部分に対するアクセスを担当する前記第２のストレージ制御装置のアドレスを管理する第３のストレージ制御装置を更に有し、
前記第１のストレージ制御装置は、前記第２のアクセス要求の送信先のアドレスを前記第３のストレージ制御装置から取得する、請求項１記載のストレージシステム。
【請求項３】
前記第３の論理領域におけるアクセス先の論理ブロックを指定した接続要求に応じて、前記第３のストレージ制御装置に前記接続要求を転送する第４のストレージ制御装置を更に有し、
前記第１のストレージ制御装置は、前記第２のアクセス要求の送信先の前記アドレスを把握するために、前記第４のストレージ制御装置に前記接続要求を送信し、前記接続要求に対する応答として、前記第３のストレージ制御装置から第２のアクセス要求の送信先の前記アドレスを取得する、請求項２記載のストレージシステム。
【請求項４】
前記第１のストレージ制御装置は、前記第２のストレージ制御装置に前記第２のアクセス要求を送信する前に、前記第２のストレージ制御装置とのコネクションを確立する、請求項１乃至３の何れか１項に記載のストレージシステム。
【請求項５】
前記第２のストレージ制御装置は、前記第３の論理領域の未アクセス部分に対する第３のアクセス要求を第５のストレージ制御装置に送信し、前記第５のストレージ制御装置から前記第３のアクセス要求に応じた第４のアクセス結果を受信すると、前記第４のアクセス結果を含む前記第２のアクセス結果を前記第１のストレージ制御装置に送信する、請求項１乃至４の何れか１項に記載のストレージシステム。
【請求項６】
複数の記憶装置群を備えており前記複数の記憶装置群それぞれを用いてデータを格納する論理領域を作成可能なストレージシステムに用いられ、第１の記憶装置群に属する第１の論理領域に対するアクセスを制御するストレージ制御装置であって、
前記第１の論理領域と第２の記憶装置群に属する第２の論理領域とを合わせた第３の論理領域に対する第１のアクセス要求をアクセス元装置から受信すると、前記第３の論理領域のうち前記第１の論理領域に含まれる部分にアクセスして第１のアクセス結果を取得し、前記第３の論理領域の未アクセス部分に対する第２のアクセス要求を他のストレージ制御装置に送信し、前記第２のアクセス要求に応じた第２のアクセス結果を受信すると、前記第１および前記第２のアクセス結果に基づいて前記第１のアクセス要求に対する第３のアクセス結果を前記アクセス元装置に送信する制御部、
を有するストレージ制御装置。
【請求項７】
複数の記憶装置群を備え、前記複数の記憶装置群それぞれを用いてデータを格納する論理領域を作成可能なストレージシステムで実行されるアクセス制御方法であって、
第１のストレージ制御装置が、第１の記憶装置群に属する第１の論理領域と第２の記憶装置群に属する第２の論理領域とを合わせた第３の論理領域に対する第１のアクセス要求をアクセス元装置から受信すると、前記第３の論理領域のうち前記第１の論理領域に含まれる部分にアクセスして第１のアクセス結果を取得し、前記第３の論理領域の未アクセス部分に対する第２のアクセス要求を送信し、
第２のストレージ制御装置が、前記第２のアクセス要求を受信すると、前記第３の論理領域のうち前記第２の論理領域に含まれる部分にアクセスして前記第２のアクセス要求に応じた第２のアクセス結果を前記第１のストレージ制御装置に送信し、
前記第１のストレージ制御装置が、前記第２のアクセス結果を受信すると、前記第１および前記第２のアクセス結果に基づいて前記第１のアクセス要求に対する第３のアクセス結果を前記アクセス元装置に送信する、
アクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステム、ストレージ制御装置およびアクセス制御方法に関する。
【背景技術】
【０００２】
現在、データの保存にストレージシステムが利用されている。ストレージシステムは、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの記憶装置を複数有し、大容量の記憶領域を利用可能とする。ストレージシステムは、記憶装置に対するデータの書き込みや読み出しのアクセス制御を行うストレージ制御装置を有する。ストレージシステムでは、ストレージ制御装置を複数搭載して、データアクセスの分散化や冗長化を図り、データアクセスの性能や信頼性を向上させることもある。
【０００３】
例えば、複数のファイル共有装置がそれぞれ有するディレクトリ構成を仮想的に一元化した論理的ディレクトリ構成を、クライアント装置に提供する提案がある。
また、例えば、複数の物理ドライブとそれらのアクセス制御回路とを備えたユニットを複数備えるようにし、各ユニットが、上位装置から送られる仮想ドライブの論理アドレスを物理ドライブの物理アドレスに変換する仮想ディスクシステムの提案がある。この提案では、あるユニットが他ユニットの物理ドライブに対するアクセス要求を受信した場合、当該アクセス要求を他ユニットに転送する。他ユニットは、転送されたアクセス要求に応じて上位装置との接続を確立し、物理ドライブへのデータの書き込みなどを行って、完了報告を上位装置に対して応答する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−３４９９号公報
【特許文献２】特開平７−１５２４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ストレージシステムにおいて、複数の記憶装置を含む集合（記憶装置群）を複数設け、各記憶装置群へのアクセスを担当するストレージ制御装置を、１つの記憶装置群に対して１つ以上設けることが考えられる。すると、各記憶装置群において独立した論理領域を設けたり、記憶装置群とストレージ制御装置との組単位にスケールアウトを行ったり、柔軟な運用を実現し得る。
【０００６】
ここで、各記憶装置群に作成した論理領域を組み合わせて、複数の記憶装置群を跨ぐ論理領域（仮想ボリューム）を作成することが考えられる。しかし、この場合、仮想ボリュームのうち、複数の記憶装置群に跨る領域に対するアクセス要求が生じ得る。例えば、あるストレージ制御装置が当該アクセス要求を受け付けても、自ストレージ制御装置の担当外の部分についてはアクセスを行えず、アクセスが中断するおそれがある。そこで、アクセスが中断しないようアクセス要求を適切に処理可能とする仕組みをどのように実現するかが問題となる。
【０００７】
１つの側面では、本発明は、アクセス要求を適切に処理できるストレージシステム、ストレージ制御装置およびアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、複数の記憶装置群を備え、複数の記憶装置群それぞれを用いてデータを格納する論理領域を作成可能なストレージシステムが提供される。このストレージシステムは、第１のストレージ制御装置と第２のストレージ制御装置とを有する。第１のストレージ制御装置は、第１の記憶装置群に属する第１の論理領域と第２の記憶装置群に属する第２の論理領域とを合わせた第３の論理領域に対する第１のアクセス要求をアクセス元装置から受信すると、第３の論理領域のうち第１の論理領域に含まれる部分にアクセスして第１のアクセス結果を取得し、第３の論理領域の未アクセス部分に対する第２のアクセス要求を送信し、第２のアクセス要求に応じた第２のアクセス結果を受信すると、第１および第２のアクセス結果に基づいて第１のアクセス要求に対する第３のアクセス結果をアクセス元装置に送信する。第２のストレージ制御装置は、第２のアクセス要求を受信すると、第３の論理領域のうち第２の論理領域に含まれる部分にアクセスし、第２のアクセス結果を第１のストレージ制御装置に送信する。
【０００９】
また、１つの態様では、複数の記憶装置群を備えており複数の記憶装置群それぞれを用いてデータを格納する論理領域を作成可能なストレージシステムに用いられ、第１の記憶装置群に属する第１の論理領域に対するアクセスを制御するストレージ制御装置が提供される。このストレージ制御装置は、制御部を有する。制御部は、第１の論理領域と第２の記憶装置群に属する第２の論理領域とを合わせた第３の論理領域に対する第１のアクセス要求をアクセス元装置から受信すると、第３の論理領域のうち第１の論理領域に含まれる部分にアクセスして第１のアクセス結果を取得し、第３の論理領域の未アクセス部分に対する第２のアクセス要求を他のストレージ制御装置に送信し、第２のアクセス要求に応じた第２のアクセス結果を受信すると、第１および第２のアクセス結果に基づいて第１のアクセス要求に対する第３のアクセス結果をアクセス元装置に送信する。
【００１０】
また、１つの態様では、複数の記憶装置群を備え、複数の記憶装置群それぞれを用いてデータを格納する論理領域を作成可能なストレージシステムで実行されるアクセス制御方法が提供される。このアクセス制御方法では、第１のストレージ制御装置が、第１の記憶装置群に属する第１の論理領域と第２の記憶装置群に属する第２の論理領域とを合わせた第３の論理領域に対する第１のアクセス要求をアクセス元装置から受信すると、第３の論理領域のうち第１の論理領域に含まれる部分にアクセスして第１のアクセス結果を取得し、第３の論理領域の未アクセス部分に対する第２のアクセス要求を送信し、第２のストレージ制御装置が、第２のアクセス要求を受信すると、第３の論理領域のうち第２の論理領域に含まれる部分にアクセスして第２のアクセス要求に応じた第２のアクセス結果を第１のストレージ制御装置に送信し、第１のストレージ制御装置が、第２のアクセス結果を受信すると、第１および第２のアクセス結果に基づいて第１のアクセス要求に対する第３のアクセス結果をアクセス元装置に送信する。
【発明の効果】
【００１１】
１つの側面では、アクセス要求を適切に処理できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のストレージシステムを示す図である。
【図２】第２の実施の形態のストレージシステムを示す図である。
【図３】シェルフに含まれるノードの例を示す図である。
【図４】ノードのハードウェア例を示す図である。
【図５】コントローラユニットのハードウェア例を示す図である。
【図６】業務サーバのハードウェア例を示す図である。
【図７】コントローラユニットの機能例を示す図である。
【図８】仮想ボリュームの例を示す図である。
【図９】仮想ボリュームに対する論理セグメントの割り当て例を示す図である。
【図１０】仮想ボリュームに対するＩＯの処理例を示す図である。
【図１１】仮想ボリュームの作成例を示す図である。
【図１２】各ノードが保持するテーブルの例を示す図である。
【図１３】アイランドマスタアドレス管理テーブルの例を示す図である。
【図１４】仮想ボリューム管理テーブルの例を示す図である。
【図１５】ノードアドレス管理テーブルの例を示す図である。
【図１６】担当ノード管理テーブルの例を示す図である。
【図１７】変換テーブルの例（その１）を示す図である。
【図１８】変換テーブルの例（その２）を示す図である。
【図１９】ログイン要求に含まれる情報の例を示す図である。
【図２０】仮想ボリューム作成の第１のシーケンス例を示す図である。
【図２１】仮想ボリューム作成の第２のシーケンス例を示す図である。
【図２２】ＩＯ処理の第１のシーケンス例を示す図である。
【図２３】ＩＯ処理の第２のシーケンス例を示す図である。
【図２４】ＩＯ処理の第２のシーケンス例（続き）を示す図である。
【図２５】ＩＯ処理の第３のシーケンス例を示す図である。
【図２６】ＩＯ処理の第３のシーケンス例（続き）を示す図である。
【図２７】担当ノードによるＩＯ処理例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のストレージシステムを示す図である。ストレージシステム１０は、ＨＤＤやＳＳＤなどの記憶装置を複数備え、複数の記憶装置によりデータを記憶する。ストレージシステム１０は、アクセス元装置２０と接続されている。アクセス元装置２０は、例えば、ストレージシステム１０に記憶されたデータを用いて業務処理を実行する情報処理装置である。
【００１４】
ストレージシステム１０は、ストレージ制御装置１１，１２および記憶装置群１３，１４を有する。ストレージ制御装置１１，１２は、通信可能である。ストレージ制御装置１１は、記憶装置群１３へのアクセス（データの書き込みや読み出し）を担当する。ストレージ制御装置１２は、記憶装置群１４へのアクセスを担当する。ストレージ制御装置１１を第１のストレージ制御装置と呼ぶことができる。ストレージ制御装置１２を第２のストレージ制御装置と呼ぶことができる。
【００１５】
記憶装置群１３，１４は、複数の記憶装置の集合である。記憶装置群１３は、記憶装置１３ａ，１３ｂ，１３ｃを含む。記憶装置群１４は、記憶装置１４ａ，１４ｂ，１４ｃを含む。記憶装置群１３を第１の記憶装置群と呼ぶことができる。記憶装置群１４を第２の記憶装置群と呼ぶことができる。
【００１６】
ストレージ制御装置１１は、記憶装置１３ａ，１３ｂ，１３ｃそれぞれの記憶領域の一部を組み合わせて、論理領域Ｌ１を作成する。ストレージ制御装置１２は、記憶装置１４ａ，１４ｂ，１４ｃそれぞれの記憶領域の一部を組み合わせて、論理領域Ｌ２を作成する。この場合、ストレージ制御装置１１は、論理領域Ｌ１に対するアクセスを担当することになる。ストレージ制御装置１２は、論理領域Ｌ２に対するアクセスを担当することになる。
【００１７】
更に、ストレージ制御装置１１は、論理領域Ｌ１，Ｌ２を組み合わせた論理領域Ｌ３を作成する。ストレージ制御装置１１は、アクセス元装置２０からは論理領域Ｌ３を参照可能とする。例えば、ストレージシステム１０では、論理領域Ｌ３に対するアクセス元装置２０からのアクセス要求をストレージ制御装置１１によって受け付ける。
【００１８】
ストレージ制御装置１１は、記憶部１１ａおよび制御部１１ｂを有する。ストレージ制御装置１２は、記憶部１２ａおよび制御部１２ｂを有する。記憶部１１ａ，１２ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤやフラッシュメモリなどの不揮発性記憶装置でもよい。制御部１１ｂ，１２ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。制御部１１ｂ，１２ｂはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１９】
記憶部１１ａは、記憶装置１３ａ，１３ｂ，１３ｃそれぞれの記憶位置を示す物理アドレスと論理領域Ｌ１における論理アドレスとの対応情報を記憶する。記憶部１１ａは、論理領域Ｌ１における論理アドレスと論理領域Ｌ３における論理アドレスとの対応情報を記憶する。また、記憶部１１ａは、論理領域Ｌ３と論理領域Ｌ１，Ｌ２との対応情報、および、論理領域Ｌ２と論理領域Ｌ２を管理するストレージ制御装置１２の識別情報との対応情報を記憶する。
【００２０】
ここで、記憶部１２ａも、記憶部１１ａと同様に、ストレージ制御装置１２がアクセスを担当する記憶装置１４ａ，１４ｂ，１４ｃそれぞれの記憶位置を示す物理アドレスと論理領域Ｌ２における論理アドレスとの対応情報を記憶する。また、記憶部１２ａは、論理領域Ｌ２における論理アドレスと論理領域Ｌ３における論理アドレスとの対応情報を記憶する。
【００２１】
制御部１１ｂは、アクセス元装置２０により発行された論理領域Ｌ３に対するアクセス要求を受け付けると、論理領域Ｌ３に対するアクセスを実行する。論理領域Ｌ３に対するアクセスは、論理領域Ｌ３全体に対するアクセスでもよい。論理領域Ｌ３に対するアクセスは、論理領域Ｌ３の一部の論理アドレス範囲に対するアクセスでもよい。このとき、アクセス元装置２０により、論理領域Ｌ３へのアクセス要求として、論理領域Ｌ１，Ｌ２の境界を跨ぐアクセスを要求する第１のアクセス要求が発行され得る。
【００２２】
第１のアクセス要求では、アクセス対象となる論理領域Ｌ３および論理領域Ｌ３の論理アドレス範囲を特定するための情報が含まれる。論理領域Ｌ３の当該論理アドレス範囲は、第１の部分が論理領域Ｌ１の部分Ｌ１ａに対応し、第２の部分が論理領域Ｌ２の部分Ｌ２ａに対応する。この場合、制御部１１ｂ，１２ｂは、次のようにして第１のアクセス要求を処理する。
【００２３】
まず、制御部１１ｂは、アクセス元装置２０が発行した第１のアクセス要求を受信する（ステップＳ１）。すると、制御部１１ｂは、記憶部１１ａに記憶された論理領域Ｌ３と論理領域Ｌ１との論理アドレスの対応情報を基に、論理領域Ｌ１の部分Ｌ１ａにアクセスする（ステップＳ２）。このとき、制御部１１ｂは、記憶部１１ａに記憶された論理領域Ｌ１の論理アドレスと記憶装置１３ａ，１３ｂ，１３ｃの物理アドレスとの対応情報により、部分Ｌ１ａに相当する記憶装置１３ａ，１３ｂ，１３ｃ上の物理アドレス群を特定できる。
【００２４】
こうして、制御部１１ｂは、第１のアクセス要求で要求される論理領域Ｌ３の論理アドレス範囲のうち、部分Ｌ１ａに相当する論理アドレス範囲について第１のアクセス結果を取得する。第１のアクセス結果は、例えば、データの書き込みであれば、第１のアクセス要求で要求されたデータの一部について書き込みを行ったことを示す情報であり、データの読み出しであれば、第１のアクセス要求で要求されたデータの一部の読み出し結果である。
【００２５】
制御部１１ｂは、第１のアクセス要求で要求される論理領域Ｌ３の論理アドレス範囲のうち、ストレージ制御装置１１が担当する部分Ｌ１ａ以外の未アクセスの部分（未アクセス部分）が存在することを検出する。すると、制御部１１ｂは、記憶部１１ａに記憶された論理領域Ｌ３と論理領域Ｌ１，Ｌ２との対応情報および論理領域Ｌ２とストレージ制御装置１２との対応情報を参照して、未アクセス部分がストレージ制御装置１２により管理されていると判断する。そして、制御部１１ｂは、論理領域Ｌ３の未アクセス部分に対する第２のアクセス要求を生成し、ストレージ制御装置１２に送信する（ステップＳ３）。このとき、制御部１１ｂは、ストレージ制御装置１２とデータアクセス用のコネクションを確立することになる。コネクションの確立に先立って、制御部１１ｂは、ストレージ制御装置１２に対する所定のログイン処理（例えば、制御部１１ｂがイニシエータとして機能し、ターゲットであるストレージ制御装置１２にログインするなど）を行ってもよい。
【００２６】
制御部１２ｂは、ストレージ制御装置１１が発行した第２のアクセス要求を受信する。すると、制御部１２ｂは、記憶部１２ａに記憶された論理領域Ｌ３と論理領域Ｌ２との論理アドレスの対応情報を基に、論理領域Ｌ２の部分Ｌ２ａにアクセスする（ステップＳ４）。このとき、制御部１２ｂは、記憶部１２ａに記憶された論理領域Ｌ２の論理アドレスと記憶装置１４ａ，１４ｂ，１４ｃの物理アドレスとの対応情報により、部分Ｌ２ａに相当する記憶装置１４ａ，１４ｂ，１４ｃ上の物理アドレス群を特定できる。また、部分Ｌ２ａは、第１のアクセス要求で要求された論理領域Ｌ３のアドレス範囲のうち、ストレージ制御装置１１側で未アクセスであった部分に相当する。
【００２７】
こうして、制御部１２ｂは、第２のアクセス要求に対する第２のアクセス結果を取得する。第２のアクセス結果は、例えば、データの書き込みであれば、第２のアクセス要求で要求されたデータ（すなわち、第１のアクセス要求で要求された残り部分のデータ）について書き込みを行ったことを示す情報である。あるいは、データの読み出しであれば、第２のアクセス結果は、第２のアクセス要求で要求されたデータの読み出し結果（すなわち、第１のアクセス要求で要求されたデータの残り部分の読み出し結果）である。制御部１２ｂは、ストレージ制御装置１１に第２のアクセス結果を送信する（ステップＳ５）。
【００２８】
制御部１１ｂは、ストレージ制御装置１２から第２のアクセス結果を受信する。制御部１１ｂは、第１のアクセス結果と第２のアクセス結果とに基づいて、第１のアクセス要求に対する第３のアクセス結果を生成する。例えば、第１のアクセス要求が、データの書き込み要求であれば、第３のアクセス結果は、論理領域Ｌ３に対する当該データの書き込みが完了したことを示す情報である。また、例えば、第１のアクセス要求が、データの読み出し要求であれば、第３のアクセス結果は、論理領域Ｌ３から読み出した当該データ（第１のアクセス結果（読み出し結果）と第２のアクセス結果（読み出し結果）とを合わせたデータ）である。制御部１１ｂは、生成した第３のアクセス結果を、アクセス元装置２０に送信する（ステップＳ６）。
【００２９】
こうして、ストレージ制御装置１１は、論理領域Ｌ３のうち、論理領域Ｌ１，Ｌ２の境界を跨ぐアクセスを適切に処理できる。具体的には次の通りである。例えば、ストレージ制御装置１１では、アクセス元装置２０により発行された第１のアクセス要求を受け付けたとき、論理領域Ｌ３のうち、論理領域Ｌ１に含まれる部分については、ストレージ制御装置１１が保持する対応情報によってアクセス可能である。しかし、論理領域Ｌ３のうち、論理領域Ｌ２に含まれる部分（残り部分）については、ストレージ制御装置１１によるアクセスの担当外であるため、ストレージ制御装置１１によるアクセスは不可能である。すると、当該残り部分については、ストレージ制御装置１１でアクセスできずに、第１のアクセス要求に対するアクセス処理が中断されることになる。
【００３０】
例えば、中断後、アクセス元装置２０により、ストレージ制御装置１２との接続を確立させて、ストレージ制御装置１２により残り部分のアクセスを実行し、ストレージ制御装置１２からアクセス元装置２０へ残り部分のアクセス結果を応答することも考えられる。しかし、この方法では、ストレージ制御装置１２に対するログイン処理などの接続確立のための処理や、再度のアクセス要求の発行をアクセス元装置２０に強いるだけでなく、第１のアクセス要求によるアクセスが中断されることを避けることはできない。
【００３１】
そこで、ストレージ制御装置１１は、第１のアクセス要求に対し、ストレージ制御装置１１で処理可能な論理領域Ｌ３の一部分について、アクセスを実行し、残り部分に対するアクセス要求をストレージ制御装置１２に送信する。ストレージ制御装置１１は、ストレージ制御装置１１による第１のアクセス結果と、ストレージ制御装置１２による第２のアクセス結果とを合わせて、第１のアクセス要求に対する第３のアクセス結果を生成し、アクセス元装置２０に応答する。これにより、アクセスを中断させずに、また、アクセス元装置２０に対する影響を抑えて、第１のアクセス要求を適切に処理できる。
【００３２】
なお、論理領域Ｌ１，Ｌ２と論理領域Ｌ３との対応関係、および、論理領域Ｌ１，Ｌ２が何れのストレージ制御装置の管理下にあるかを管理する他のストレージ制御装置を、ストレージ制御装置１１，１２とは別個に設けてもよい。この場合、他のストレージ制御装置が、第１のアクセス要求の送信先として、ストレージ制御装置１１の通信アドレス（例えば、ＩＰ（Internet Protocol）アドレスなど）をアクセス元装置２０に提供してもよい。また、ストレージ制御装置１１は、他のストレージ制御装置に問い合わせることで、第２のアクセス要求の送信先であるストレージ制御装置１２の通信アドレスを取得してもよい。
【００３３】
［第２の実施の形態］
図２は、第２の実施の形態のストレージシステムを示す図である。第２の実施の形態のストレージシステムは、シェルフＳＨ１，ＳＨ２，ＳＨ３，ＳＨ４、業務サーバ３０および管理サーバ４０を有する。シェルフＳＨ１，ＳＨ２，ＳＨ３，ＳＨ４および業務サーバ３０は、ＳＡＮ（Storage Area Network）５０に接続されている。シェルフＳＨ１，ＳＨ２，ＳＨ３，ＳＨ４および管理サーバ４０は、ＬＡＮ（Local Area Network）６０に接続されている。
【００３４】
シェルフＳＨ１，ＳＨ２，ＳＨ３，ＳＨ４は、データを記憶するノードを搭載する筐体である。シェルフＳＨ１，ＳＨ２，ＳＨ３，ＳＨ４は、グループ分けされている。１つのグループを、１つのアイランドと称する。具体的には、シェルフＳＨ１，ＳＨ２は、アイランド７０に属する。シェルフＳＨ３，ＳＨ４は、アイランド７０ａに属する。
【００３５】
第２の実施の形態のストレージシステムでは、アイランド毎に独立した論理領域（仮想ボリュームと称する）を作成することができる。また、複数のアイランドを跨いだ仮想ボリュームを作成することもできる。
【００３６】
業務サーバ３０は、ＳＡＮ５０を介して、シェルフＳＨ１，ＳＨ２，ＳＨ３，ＳＨ４に格納されたデータにアクセスし、当該データを用いて業務処理を実行するサーバコンピュータである。
【００３７】
管理サーバ４０は、アイランド７０，７０ａにおける仮想ボリュームを管理するサーバコンピュータである。例えば、システムの管理者は、管理サーバ４０を操作して、仮想ボリュームの新規作成や、シェルフ単位のスケールアウトによる容量増強や性能向上などの運用を行える。
【００３８】
図３は、シェルフに含まれるノードの例を示す図である。シェルフＳＨ１は、ノードＮ１，Ｎ２を有する。シェルフＳＨ２は、ノードＮ３，Ｎ４を有する。シェルフＳＨ３は、ノードＮ５，ノードＮ６を有する。シェルフＳＨ４は、ノードＮ７，Ｎ８を有する。シェルフＳＨ１，ＳＨ２は、アイランド７０に属しているので、ノードＮ１，Ｎ２，Ｎ３，Ｎ４もアイランド７０に属しているということができる。同様に、シェルフＳＨ３，ＳＨ４は、アイランド７０ａに属しているので、ノードＮ５，Ｎ６，Ｎ７，Ｎ８もアイランド７０ａに属しているということができる。
【００３９】
図４は、ノードのハードウェア例を示す図である。ノードＮ１は、コントローラユニット１００およびストレージユニット２００を有する。コントローラユニットは、データへのアクセスを制御する。コントローラユニット１００は、第１の実施の形態のストレージ制御装置１１，１２の一例である。ストレージユニット２００は、ＨＤＤやＳＳＤなどの複数の記憶装置を備える。ノードＮ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６，Ｎ７，Ｎ８も、ノードＮ１と同様に、それぞれが、コントローラユニットとストレージユニットとを有する。
【００４０】
具体的には、ノードＮ２は、コントローラユニット１００ａおよびストレージユニット２００ａを有する。ノードＮ３は、コントローラユニット１００ｂおよびストレージユニット２００ｂを有する。ノードＮ４は、コントローラユニット１００ｃおよびストレージユニット２００ｃを有する。ノードＮ５は、コントローラユニット１００ｄおよびストレージユニット２００ｄを有する。ノードＮ６は、コントローラユニット１００ｅおよびストレージユニット２００ｅを有する。ノードＮ７は、コントローラユニット１００ｆおよびストレージユニット２００ｆを有する。ノードＮ８は、コントローラユニット１００ｇおよびストレージユニット２００ｇを有する。各コントローラユニットが、ＳＡＮ５０およびＬＡＮ６０に接続されることになる（図４では、１つのネットワーク線により簡略化して表わしている）。
【００４１】
ここで、第２の実施の形態のストレージシステムにおいて、ノードＮ１は、アイランド７０，７０ａによって作成された仮想ボリュームを管理するノード（マネージャノードと称することがある）である。
【００４２】
また、ノードＮ２は、アイランド７０内の仮想ボリュームへのアクセスを担当するノード（担当ノードと称することがある）を管理するノード（アイランドマスタと称することがある）である。ノードＮ５は、アイランド７０ａ内の仮想ボリュームへのアクセスを担当する担当ノードを管理するアイランドマスタである。
【００４３】
ただし、マネージャノードとアイランドマスタとの両方の機能を同一のノードに設けてもよい。更に、マネージャノードやアイランドマスタが担当ノードとして機能することもある。
【００４４】
なお、コントローラユニットは、プロセッサユニットと呼ばれることもある。また、アイランド７０は、ノードＮ１，Ｎ２，Ｎ３，Ｎ４それぞれのストレージユニットを含むので、各ストレージユニットに含まれる複数の記憶装置（記憶装置群）を有しているといえる。アイランド７０ａは、ノードＮ５，Ｎ６，Ｎ７，Ｎ８それぞれのストレージユニットを含むので、各ストレージユニットに含まれる複数の記憶装置（記憶装置群）を有しているといえる。
【００４５】
また、同一シェルフ内に属する２つのコントローラユニットを、冗長構成とすることができる。例えば、シェルフＳＨ１において、仮にノードＮ１が故障したとしても、ノードＮ２によりノードＮ１の処理を代替して実行することができる（他のシェルフも同様）。
【００４６】
図５は、コントローラユニットのハードウェア例を示す図である。コントローラユニット１００は、プロセッサ１０１、ＲＡＭ１０２、ＮＶＲＡＭ（Non-Volatile RAM）１０３、ＣＡ（Channel Adapter）１０４、ＮＡ（Network Adapter）１０５、ＤＩ（Drive Interface）１０６および媒体リーダ１０７を有する。他のノードが有するコントローラユニットも、コントローラユニット１００と同様のハードウェアにより実現できる。
【００４７】
プロセッサ１０１は、コントローラユニット１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４８】
ＲＡＭ１０２は、コントローラユニット１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるファームウェアのプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４９】
ＮＶＲＡＭ１０３は、コントローラユニット１００の補助記憶装置である。ＮＶＲＡＭ１０３は、例えば、不揮発性の半導体メモリである。ＮＶＲＡＭ１０３は、ファームウェアのプログラムや各種データなどを記憶する。
【００５０】
ＣＡ１０４は、ＳＡＮ５０を介して業務サーバ３０と通信するためのインタフェースである。ここで、一例として、ＣＡ１０４は、ｉＳＣＳＩ（Internet Small Computer System Interface）のインタフェースであるものとする。この場合、ＳＡＮ５０をＩＰ−ＳＡＮと呼ぶことができる。ただし、ＣＡ１０４として、ファイバチャネル（ＦＣ：Fibre Channel）などの他のインタフェースを用いてもよい。
【００５１】
ＮＡ１０５は、ＬＡＮ６０を介して管理サーバ４０と通信するためのインタフェースである。例えば、ＮＡ１０５として、イーサネット（登録商標）のインタフェースを用いることができる。
【００５２】
ＤＩ１０６は、ストレージユニット２００と通信するためのインタフェースである。例えば、ＤＩ１０６として、ＳＡＳ（Serial Attached SCSI）などのインタフェースを用いることができる。ＤＩ１０６は、コントローラユニット１００ａとの冗長構成を実現するために、ストレージユニット２００ａと接続されてもよい。
【００５３】
媒体リーダ１０７は、可搬型の記録媒体８１に記録されたプログラムやデータを読み取る装置である。記録媒体８１として、例えば、フラッシュメモリなどの不揮発性の半導体メモリを使用することができる。媒体リーダ１０７は、例えば、プロセッサ１０１からの命令に従って、記録媒体８１から読み取ったプログラムやデータを、ＲＡＭ１０２やＮＶＲＡＭ１０３に格納することもできる。
【００５４】
なお、コントローラユニット１００は、コントローラユニット１００ａとシェルフＳＨ１内での通信を行うための所定のインタフェースを有し、当該インタフェースを介してコントローラユニット１００ａとも接続されている。
【００５５】
ストレージユニット２００は、ＩＯＭ（Input/Output Module）２０１および記憶装置群２１０を有する。他のノードが有するストレージユニットも、ストレージユニット２００と同様のハードウェアにより実現できる。ＩＯＭ２０１は、コントローラユニット１００からの指示に応じてＨＤＤ２１１，２１２，２１３，２１４に対するデータアクセスを行う。記憶装置群２１０は、ＨＤＤの集合である。記憶装置群２１０は、ＨＤＤ２１１，２１２，２１３，２１４を含む。
【００５６】
図６は、業務サーバのハードウェア例を示す図である。業務サーバ３０のハードウェア例を示す図である。業務サーバ３０は、プロセッサ３１、ＲＡＭ３２、ＨＤＤ３３、画像信号処理部３４、入力信号処理部３５、媒体リーダ３６および接続アダプタ３７を有する。各ユニットは業務サーバ３０のバスに接続されている。管理サーバ４０も業務サーバ３０と同様のユニットを用いて実現できる。
【００５７】
プロセッサ３１は、業務サーバ３０の情報処理を制御する。プロセッサ３１は、マルチプロセッサであってもよい。プロセッサ３１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ３１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００５８】
ＲＡＭ３２は、業務サーバ３０の主記憶装置である。ＲＡＭ３２は、プロセッサ３１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ３２は、プロセッサ３１による処理に用いる各種データを記憶する。
【００５９】
ＨＤＤ３３は、業務サーバ３０の補助記憶装置である。ＨＤＤ３３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ３３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。業務サーバ３０は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００６０】
画像信号処理部３４は、プロセッサ３１からの命令に従って、業務サーバ３０に接続されたディスプレイ８２に画像を出力する。ディスプレイ８２としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００６１】
入力信号処理部３５は、業務サーバ３０に接続された入力デバイス８３から入力信号を取得し、プロセッサ３１に出力する。入力デバイス８３としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００６２】
媒体リーダ３６は、記録媒体８４に記録されたプログラムやデータを読み取る装置である。記録媒体８４として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体８４として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ３６は、例えば、プロセッサ３１からの命令に従って、記録媒体８４から読み取ったプログラムやデータをＲＡＭ３２またはＨＤＤ３３に格納する。
【００６３】
接続アダプタ３７は、ＳＡＮ５０を介して仮想ボリュームにアクセスするためのインタフェースである。接続アダプタ３７は、例えばｉＳＣＳＩアダプタである。ただし、ＳＡＮ５０にＦＣを用いる場合、接続アダプタ３７としてＦＣアダプタを利用できる。なお、業務サーバ３０は、ＬＡＮ６０に接続して、他のコンピュータと通信するための通信インタフェースを有してもよい。
【００６４】
図７は、コントローラユニットの機能例を示す図である。前述のように、ノードＮ１は、マネージャノードとして機能する。また、ノードＮ２，Ｎ５は、アイランドマスタとして機能する。このため、コントローラユニット１００は、マネージャノードの機能（マネージャ機能）を有する点が他のコントローラユニットと異なる。また、コントローラユニット１００ａ，１００ｄは、アイランドマスタの機能（マスタ機能）を有する点が他のコントローラユニットと異なる。
【００６５】
コントローラユニット１００は、記憶部１１０、ＩＯ（Input/Output）処理部１２０およびマネージャ処理部１３０を有する。記憶部１１０は、ＲＡＭ１０２またはＮＶＲＡＭ１０３に確保された記憶領域として実現され得る。ＩＯ処理部１２０およびマネージャ処理部１３０は、ＲＡＭ１０２に記憶されたプログラムをプロセッサ１０１が実行することで実現され得る。
【００６６】
記憶部１１０は、仮想ボリュームと当該仮想ボリュームが属するアイランドとの対応関係の情報を記憶する。また、記憶部１１０は、各アイランドマスタのアドレス情報を記憶する。第２の実施の形態の例では、ＳＡＮ５０は、ＩＰ−ＳＡＮなので、ＳＡＮ５０の通信に用いるアドレスはＩＰアドレスである。ＳＡＮ５０がＦＣを用いたＦＣ−ＳＡＮであれば、アドレスとしてＷＷＮ（World Wide Name）を用いることができる。
【００６７】
また、ＬＡＮ６０側（主にノード間の通信に用いられる）で通信に用いるアドレスはＩＰアドレスである。また、記憶部１１０は、仮想ボリュームの論理アドレスとストレージユニット２００に含まれるＨＤＤ上の物理アドレスとの対応関係の情報（変換テーブルと称する）を記憶する。
【００６８】
ＩＯ処理部１２０は、記憶部１１０に記憶された変換テーブルに基づいて、ストレージユニット２００へのアクセスを実行する。例えば、ＩＯ処理部１２０は、受け付けたアクセス要求（単にＩＯと称することがある）を分割し、要求されたデータをストレージユニット２００から読み出したり、ストレージユニット２００にデータを書き込んだりする。
【００６９】
マネージャ処理部１３０は、コントローラユニット１００のマネージャ機能を担う。具体的には、マネージャ処理部１３０は、業務サーバ３０に対して、仮想ボリュームを提供する。このため、業務サーバ３０は、第２の実施の形態の仮想ボリュームへアクセスするために、まずは、コントローラユニット１００に対してログイン要求を行うことになる。業務サーバ３０は、ログイン要求において、仮想ボリュームの識別情報およびアクセスを開始する論理ブロックアドレス（ＬＢＡ：Logical Block Address）をマネージャ処理部１３０に対して指定できる。すると、マネージャ処理部１３０は、該当の仮想ボリュームへアクセスするためのアイランドマスタへ代理でログイン要求を送り、アイランドマスタにより、業務サーバ３０のアクセス先を該当の仮想ボリュームの担当ノードにリダイレクトさせる。
【００７０】
また、マネージャ処理部１３０は、管理サーバ４０の指示に応じて、アイランド７０，７０ａ内の仮想ボリュームの作成を制御する。マネージャ処理部１３０は、アイランド７０，７０ａに跨った仮想ボリュームを作成することも可能である。マネージャ処理部１３０は、新たな仮想ボリュームを作成する際に、仮想ボリュームと、当該仮想ボリュームが属するアイランドとの対応関係の情報を作成し、記憶部１１０に格納する。
【００７１】
コントローラユニット１００ａは、記憶部１１０ａ、ＩＯ処理部１２０ａおよびマスタ処理部１４０を有する。記憶部１１０ａは、コントローラユニット１００ａが備えるＲＡＭまたはＮＶＲＡＭに確保された記憶領域として実現され得る。ＩＯ処理部１２０ａおよびマスタ処理部１４０は、コントローラユニット１００ａが備えるＲＡＭに記憶されたプログラムを、コントローラユニット１００ａが備えるプロセッサが実行することで実現され得る。
【００７２】
ここで、記憶部１１０ａおよびＩＯ処理部１２０ａの機能は、記憶部１１０およびＩＯ処理部１２０と同様であるため説明を省略する。ただし、記憶部１１０ａは、仮想ボリュームと仮想ボリュームへのアクセスを担当する担当ノードとの対応関係の情報（アイランドマスタの処理に用いられる情報）を記憶し、マネージャ処理部１３０の処理に用いられる情報を記憶しなくてよい点が記憶部１１０と異なる。
【００７３】
マスタ処理部１４０は、コントローラユニット１００ａのマスタ機能を担う。具体的には、マスタ処理部１４０は、業務サーバ３０から受け付けるログイン要求（マネージャ処理部１３０から転送されたもの）に対して、仮想ボリュームに対するアクセスを担当するノードのＩＰアドレスを、業務サーバ３０に提供する。すると、業務サーバ３０は、提供されたＩＰアドレスのノードとコネクションを確立して、当該ノードに対して、ＩＯを発行できる。マスタ処理部１４０は、他のコントローラユニットから、ログイン要求（マネージャ処理部１３０から転送されたもの）を受け付け、仮想ボリュームに対するアクセスを担当するノードのＩＰアドレスを、当該他のコントローラユニットに、提供することもある。
【００７４】
なお、アイランドマスタとして機能するコントローラユニット１００ｄも、コントローラユニット１００ａと同様の機能を有する。
コントローラユニット１００ｂは、記憶部１１０ｂおよびＩＯ処理部１２０ｂを有する。記憶部１１０ｂは、コントローラユニット１００ｂが備えるＲＡＭまたはＮＶＲＡＭに確保された記憶領域として実現され得る。ＩＯ処理部１２０ｂは、コントローラユニット１００ｂが備えるＲＡＭに記憶されたプログラムを、コントローラユニット１００ｂが備えるプロセッサが実行することで実現され得る。
【００７５】
ここで、記憶部１１０ｂおよびＩＯ処理部１２０ｂの機能は、記憶部１１０およびＩＯ処理部１２０と同様であるため説明を省略する。ただし、記憶部１１０ｂは、マネージャ処理部１３０やマスタ処理部１４０の処理に用いられる情報を記憶しなくてよい点が記憶部１１０，１１０ａと異なる。また、コントローラユニット１００ｃ，１００ｅ，１００ｆ，１００ｇも、コントローラユニット１００ｂと同様の機能を有する。更に、各コントローラユニットは、マネージャノードとして機能するコントローラユニット１００のＩＰアドレスを記憶している。
【００７６】
図８は、仮想ボリュームの例を示す図である。第２の実施の形態のストレージシステムでは、例えば、ＨＤＤ２１１，２１２などの物理ディスクにおける物理的な記憶領域を、１ＭＢ（メガバイト）単位のセグメントと呼ばれる領域に区切る。物理セグメントＰＳは、当該セグメントの１つである。仮想ボリュームは、ＨＤＤ２１１，２１２，・・・から、複数のセグメントが割り当てられた論理的な記憶領域である。仮想ボリュームに割り当てられた物理セグメントに対応するセグメントを、論理セグメントと称する。論理セグメントＬＳは、物理セグメントＰＳに対応する論理セグメントである。
【００７７】
このように、１つの論理的なボリュームに対して、複数の物理的な記憶装置の記憶領域を割り当てる手法を、ストライピングと呼ぶことがある。ここで、複数の論理セグメントを纏めた１単位を、セグメントグループと呼ぶこととする。また、複数のセグメントグループを纏めた１単位を、セグメントセットと呼ぶこととする。
【００７８】
図９は、仮想ボリュームに対する論理セグメントの割り当て例を示す図である。仮想ボリュームは、複数のセグメントセットを含む。仮想ボリュームの複製を作成して、冗長させることもできる（ミラーリング）。
【００７９】
セグメントセットは、ｍ個（ｍは２以上の整数）のセグメントグループを含む。例えば、１つのセグメントグループは、１つのＨＤＤに属する。この場合、ストライプ幅はｍである。また、セグメントグループは、ｎ個（ｎは２以上の整数）の論理セグメントを含む。１論理セグメント（１物理セグメント）のサイズ（ストリップサイズ）を１ＭＢとすれば、１つのセグメントグループのサイズは、１ＭＢ×ｎ個＝ｎＭＢである。すると、１つのセグメントセットのサイズは、ｎＭＢ×ｍ個＝ｎｍＭＢである。
【００８０】
図１０は、仮想ボリュームに対するＩＯの処理例を示す図である。図１０では、一例として、ＩＯ処理部１２０の処理を説明するが、他のＩＯ処理部も同様の処理を実行する。まず、ＩＯ処理部１２０は、ＩＯを受信すると、仮想ボリュームのミラー数でＩＯを複製する（ミラーリングしていなければ複製しなくてよい）。ＩＯ処理部１２０は、そのうちの１つのＩＯに対して、次の処理を実行する。ただし、複製した他のＩＯも、ミラー先ボリュームに対して同様に処理される。
【００８１】
ＩＯ処理部１２０は、ＩＯで指定されたアクセス対象の論理アドレス範囲（ＩＯ範囲）が、何れのセグメントセットに属するかを特定する。ＩＯ処理部１２０は、ＩＯ範囲がセグメントセット境界を含む場合は、ＩＯを分割する。ここで、「ＩＯを分割する」とは、ある論理アドレス範囲を指定したＩＯに対して、当該論理アドレス範囲よりも細かい複数の論理アドレス範囲に分けた複数のＩＯを生成することを意味する。特に、ＩＯ範囲がセグメントセット境界を含む場合のＩＯ分割は、論理アドレス範囲のセグメントセット境界に相当する論理アドレスで、当該論理アドレス範囲を分割する。セグメントセット境界が１つであれば、２つに分割されるし、セグメントセット境界が２つであれば、３つに分割されることになる。ただし、ＩＯ範囲がセグメントセット境界を含まなければ、ＩＯを分割しなくてよい。
【００８２】
ＩＯ処理部１２０は、分割後の１つのＩＯについて、ストリップサイズ（論理セグメントのサイズであり、上記の例によれば１ＭＢ）単位にＩＯを更に分割する。ＩＯ処理部１２０は、セグメントグループのミラー数でストリップサイズに分割した後のＩＯを複製する。ただし、セグメントグループ単位でのミラーリングを行っていない場合は、当該複製を行わなくてよい。ＩＯ処理部１２０は、ＨＤＤ２１１，２１２，・・・に対して、ストリップサイズに分割した後のＩＯを実行する。ＩＯ処理部１２０は、各ＩＯに対応する物理アドレスを、変換テーブルによって特定する。ＩＯ処理部１２０は、セグメントグループ単位にミラーリング（あるセグメントグループのデータを別のセグメントグループに複製してもつ）を行っている場合には、ストリップサイズに分割した後に複製したＩＯについても、同様にＩＯを実行する。
【００８３】
このようにして、ＩＯ処理部１２０は、ＩＯ分割を行って、ＨＤＤ２１１，２１２，・・・に対するＩＯを実行する。上記の例では、仮想ボリュームの階層およびセグメントグループの階層でミラーリングを行うケースも含めて説明したが、何れか一方のみでミラーリングされてもよいし、両方のミラーリングを行わなくてもよい。
【００８４】
図１１は、仮想ボリュームの作成例を示す図である。前述のように、第２の実施の形態のストレージシステムでは、アイランド７０，７０ａそれぞれにおいて独立した仮想ボリュームＶ１を作成することもできるし、アイランド７０，７０ａを跨いだ仮想ボリュームＶ２を作成することもできる。
【００８５】
具体的には、仮想ボリュームＶ１は、アイランド７０に属するノードＮ１，Ｎ２，Ｎ３，Ｎ４（すなわち、ストレージユニット２００，２００ａ，２００ｂ，２００ｃ）が備える各ＨＤＤの物理セグメントによって作成された仮想ボリュームである。
【００８６】
仮想ボリュームＶ２は、アイランド７０に属するノードＮ１，Ｎ２，Ｎ３，Ｎ４（すなわち、ストレージユニット２００，２００ａ，２００ｂ，２００ｃ）が備える各ＨＤＤ、および、アイランド７０ａに属するノードＮ５，Ｎ６，Ｎ７，Ｎ８（すなわち、ストレージユニット２００ｄ，２００ｅ，２００ｆ，２００ｇ）が備える各ＨＤＤの物理セグメントによって作成された仮想ボリュームである。
【００８７】
ここで、管理サーバ４０は、マネージャノードであるノードＮ１に対して、仮想ボリュームの作成指示を行える。ノードＮ１は、管理サーバ４０の指示に応じて、アイランドマスタであるノードＮ２やノードＮ５に仮想ボリュームの作成を指示する。ノードＮ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６，Ｎ７，Ｎ８は、仮想ボリュームの作成に応じて、自ノードが管理する変換テーブルなどの管理情報を更新する。
【００８８】
管理情報では、各ノードや各論理ボリュームなどの識別情報に対応付けて、各種の情報が管理される。第２の実施の形態の例では、次のように識別情報が付与されているものとする。
【００８９】
アイランド７０の識別情報は“ｉ１”である。アイランド７０ａの識別情報は“ｉ２”である。
ノードＮ１の識別情報は“ｎｏｄｅ１”である。ノードＮ２の識別情報は“ｎｏｄｅ２”である。ノードＮ３の識別情報は“ｎｏｄｅ３”である。ノードＮ４の識別情報は“ｎｏｄｅ４”である。ノードＮ５の識別情報は“ｎｏｄｅ５”である。ノードＮ６の識別情報は“ｎｏｄｅ６”である。ノードＮ７の識別情報は“ｎｏｄｅ７”である。ノードＮ８の識別情報は“ｎｏｄｅ８”である。
【００９０】
仮想ボリュームＶ１の識別情報は“Ｖｏｌｕｍｅ１”である。仮想ボリュームＶ２の識別情報は“Ｖｏｌｕｍｅ２”である。
図１２は、各ノードが保持するテーブルの例を示す図である。ノードの役割によって、保持するテーブルが異なる。マネージャノードであるノードＮ１は、アイランドマスタアドレス管理テーブルＴ１１および仮想ボリューム管理テーブルＴ１２を有する。
【００９１】
アイランドマスタアドレス管理テーブルＴ１１は、アイランドマスタのＩＰアドレスを管理するためのテーブルである。仮想ボリューム管理テーブルＴ１２は、仮想ボリュームにおける論理アドレス範囲と、当該論理アドレス範囲を担当するアイランドとの対応関係を管理するためのテーブルである。
【００９２】
アイランド７０のアイランドマスタであるノードＮ２は、ノードアドレス管理テーブルＴ２１および担当ノード管理テーブルＴ３１を有する。ノードアドレス管理テーブルＴ２１は、アイランド７０に属するノードのＩＰアドレスを管理するためのテーブルである。担当ノード管理テーブルＴ３１は、アイランド７０に属する仮想ボリュームと、当該仮想ボリュームに対するアクセスを担当する担当ノードとの対応関係を管理するためのテーブルである。
【００９３】
仮想ボリュームＶ１に対するアクセスを担当するノードＮ３は、変換テーブルＴ４１を有する。変換テーブルＴ４１は、仮想ボリュームＶ１（“Ｖｏｌｕｍｅ１”）の変換テーブルである。なお、変換テーブルＴ４１は、コントローラユニット１００ｂが備えるＲＡＭおよびストレージユニット２００ｂの所定のＨＤＤ内に格納される。変換テーブルＴ４１は、コントローラユニット１００ｂと同一シェルフであるシェルフＳＨ２に属するコントローラユニット１００ｃが備えるＲＡＭおよびストレージユニット２００ｃの所定のＨＤＤ内にも格納されてもよい。仮にコントローラユニット１００ｂが故障しても、コントローラユニット１００ｃによりアクセスを代替して実行可能になるからである。
【００９４】
仮想ボリュームＶ２（アイランド７０に属する部分）に対するアクセスを担当するノードＮ４は、変換テーブルＴ４２を有する。変換テーブルＴ４２は、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）の変換テーブル（ただし、アイランド７０に属する部分）である。変換テーブルＴ４２は、コントローラユニット１００ｃが備えるＲＡＭおよびストレージユニット２００ｃの所定のＨＤＤに格納される。変換テーブルＴ４２も、変換テーブルＴ４１と同様に、コントローラユニット１００ｂおよびストレージユニット２００ｂ上に変換テーブルＴ４２の複製が配置される。ただし、同一シェルフＳＨ２内に限らず、同一アイランド７０内に属するコントローラユニット１００，１００ａ，１００ｂ，１００ｃおよびストレージユニット２００，２００ａ，２００ｂ，２００ｃに、変換テーブルＴ４１，Ｔ４２の複製が配置されてもよい。
【００９５】
アイランド７０ａのアイランドマスタであるノードＮ５は、ノードアドレス管理テーブルＴ２２および担当ノード管理テーブルＴ３２を有する。ノードアドレス管理テーブルＴ２２は、アイランド７０ａに属するノードのＩＰアドレスを管理するためのテーブルである。担当ノード管理テーブルＴ３２は、アイランド７０ａに属する仮想ボリュームと、当該仮想ボリュームに対するアクセスを担当する担当ノードとの対応関係を管理するためのテーブルである。
【００９６】
仮想ボリュームＶ２（アイランド７０ａに属する部分）に対するアクセスを担当するノードＮ６は、変換テーブルＴ４３を有する。変換テーブルＴ４３は、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）の変換テーブル（ただし、アイランド７０ａに属する部分）である。なお、同一シェルフＳＨ３に属するノードＮ５、または、同一アイランド７０ａに属するノードＮ５，Ｎ７，Ｎ８の各コントローラユニットおよび各ストレージユニットに、変換テーブルＴ４３の複製が配置されてもよい。
【００９７】
図１３は、アイランドマスタアドレス管理テーブルの例を示す図である。アイランドマスタアドレス管理テーブルＴ１１は、記憶部１１０に格納される。アイランドマスタアドレス管理テーブルＴ１１は、アイランド、ホスト側ＩＰアドレスおよびノード間通信用ＩＰアドレスの項目を含む。
【００９８】
アイランドの項目には、アイランドの識別情報が登録される。ホスト側ＩＰアドレスの項目には、ＳＡＮ５０（ＩＰ−ＳＡＮ）側の通信に用いられるＩＰアドレスが登録される。ノード間通信用ＩＰアドレスの項目には、ＬＡＮ６０側の通信に用いられるＩＰアドレスが登録される。
【００９９】
例えば、アイランドマスタアドレス管理テーブルＴ１１には、アイランドが“ｉ１”、ホスト側ＩＰアドレスが“１９２．１６８．０．２”、ノード間通信用ＩＰアドレスが“１９２．１６８．１０．２”という情報が登録される。これは、識別情報“ｉ１”に対応するアイランド７０のアイランドマスタであるノードＮ２のＳＡＮ５０側通信用のＩＰアドレスが“１９２．１６８．０．２”であり、ＬＡＮ６０側通信用のＩＰアドレスが“１９２．１６８．１０．２”であることを示す。なお、何れのＩＰアドレスもサブネットマスクは“／２４”とする（以下、同様）。
【０１００】
また、アイランドマスタアドレス管理テーブルＴ１１には、アイランドが“ｉ２”、ホスト側ＩＰアドレスが“１９２．１６８．０．５”、ノード間通信用ＩＰアドレスが“１９２．１６８．１０．５”という情報が登録される。これは、識別情報“ｉ２”に対応するアイランド７０ａのアイランドマスタであるノードＮ５のＳＡＮ５０側通信用のＩＰアドレスが“１９２．１６８．０．５”であり、ＬＡＮ６０側通信用のＩＰアドレスが“１９２．１６８．１０．５”であることを示す。
【０１０１】
図１４は、仮想ボリューム管理テーブルの例を示す図である。仮想ボリューム管理テーブルＴ１２は、記憶部１１０に格納される。仮想ボリューム管理テーブルＴ１２は、仮想ボリューム、セグメントセット、論理セグメント、ＬＢＡおよびアイランドの項目を含む。
【０１０２】
仮想ボリュームの項目には、仮想ボリュームの識別情報が登録される。セグメントセットの項目には、セグメントセットの識別番号が登録される。論理セグメントの項目には、仮想ボリュームの当該セグメントセットにおける論理セグメントの識別番号が登録される。ＬＢＡの項目には、仮想ボリュームの各論理セグメントに対応するＬＢＡの範囲が登録される。アイランドの項目には、アイランドの識別情報が登録される。
【０１０３】
例えば、仮想ボリューム管理テーブルＴ１２には、仮想ボリュームが“Ｖｏｌｕｍｅ１２”、セグメントセットが“１”、論理セグメントが“１”、ＬＢＡが“０−２５５”、アイランドが“ｉ１”という情報が登録される。これは、仮想ボリュームＶ１（“Ｖｏｌｕｍｅ１”）の識別番号“１”のセグメントセットに含まれる識別番号“１”の論理セグメントが、“０”から“２５５”までのＬＢＡ範囲であり、当該ＬＢＡ範囲がアイランド７０（“ｉ１”）に属することを示す。
【０１０４】
仮想ボリューム管理テーブルＴ１２によれば、仮想ボリュームＶ１は、アイランド７０のＨＤＤによって作成されるため、何れのＬＢＡ範囲もアイランド７０に属している。一方、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）は、アイランド７０，７０ａのＨＤＤによって作成されるため、一部のＬＢＡ範囲がアイランド７０に属し、他の一部のＬＢＡ範囲がアイランド７０ａに属している。
【０１０５】
例えば、仮想ボリュームＶ２の識別番号“１”のセグメントセットにおける識別番号“１”の論理セグメントに相当するＬＢＡ範囲“０−２５５”、および、同識別番号“２”の論理セグメントに相当するＬＢＡ範囲“２５６−５１１”は、アイランド７０（“ｉ１”）に属する。
【０１０６】
一方、仮想ボリュームＶ２の識別番号“１”のセグメントセットにおける識別番号“３”の論理セグメントに相当するＬＢＡ範囲“５１２−７６７”、および、同識別番号“４”の論理セグメントに相当するＬＢＡ範囲“７６８−１０２３”は、アイランド７０ａ（“ｉ２”）に属する。
【０１０７】
図１５は、ノードアドレス管理テーブルの例を示す図である。図１５（Ａ）は、ノードアドレス管理テーブルＴ２１を例示している。ノードアドレス管理テーブルＴ２１は、記憶部１１０ａに格納される。図１５（Ｂ）は、ノードアドレス管理テーブルＴ２２を例示している。ノードアドレス管理テーブルＴ２２は、ノードＮ５が有する記憶部に格納される。ノードアドレス管理テーブルＴ２１，Ｔ２２は、ノード、ホスト側ＩＰアドレスおよびノード間通信用ＩＰアドレスの項目を含む。
【０１０８】
ノードの項目には、ノードＩＤ（IDentifier）が登録される。ホスト側ＩＰアドレスの項目には、ＳＡＮ５０（ＩＰ−ＳＡＮ）側の通信に用いられるＩＰアドレスが登録される。ノード間通信用ＩＰアドレスの項目には、ＬＡＮ６０側の通信に用いられるＩＰアドレスが登録される。
【０１０９】
例えば、ノードアドレス管理テーブルＴ２１には、ノードが“ｎｏｄｅ１”、ホスト側ＩＰアドレスが“１９２．１６８．０．１”、ノード間通信用ＩＰアドレスが“１９２．１６８．１０．１”という情報が登録される。これは、ノードＩＤ“ｎｏｄｅ１”に対応するノードＮ１のＳＡＮ５０側通信用のＩＰアドレスが“１９２．１６８．０．１”であり、ＬＡＮ６０側通信用のＩＰアドレスが“１９２．１６８．１０．１”であることを示す。ノードアドレス管理テーブルＴ２１は、アイランド７０内のノードのアドレスを管理するための情報なので、ノードＮ１，Ｎ２，Ｎ３，Ｎ４に関するアドレス情報が登録されることになる。
【０１１０】
また、例えば、ノードアドレス管理テーブルＴ２２には、ノードが“ｎｏｄｅ５”、ホスト側ＩＰアドレスが“１９２．１６８．０．５”、ノード間通信用ＩＰアドレスが“１９２．１６８．１０．５”という情報が登録される。これは、ノードＩＤ“ｎｏｄｅ５”に対応するノードＮ５のＳＡＮ５０側通信用のＩＰアドレスが“１９２．１６８．０．５”であり、ＬＡＮ６０側通信用のＩＰアドレスが“１９２．１６８．１０．５”であることを示す。ノードアドレス管理テーブルＴ２２は、アイランド７０ａ内のノードのアドレスを管理するための情報なので、ノードＮ５，Ｎ６，Ｎ７，Ｎ８に関するアドレス情報が登録されることになる。
【０１１１】
図１６は、担当ノード管理テーブルの例を示す図である。図１６（Ａ）は、担当ノード管理テーブルＴ３１を例示している。担当ノード管理テーブルＴ３１は、記憶部１１０ａに格納される。図１６（Ｂ）は、担当ノード管理テーブルＴ３２を例示している。担当ノード管理テーブルＴ３２は、ノードＮ５が有する記憶部に格納される。担当ノード管理テーブルＴ３１，Ｔ３２は、仮想ボリュームおよびノードの項目を含む。
【０１１２】
仮想ボリュームの項目には、仮想ボリュームの識別情報が登録される。ノードの項目には、ノードＩＤが登録される。
例えば、担当ノード管理テーブルＴ３１には、仮想ボリュームが“Ｖｏｌｕｍｅ１”、ノードが“ｎｏｄｅ３”という情報が登録される。これは、仮想ボリュームＶ１（“Ｖｏｌｕｍｅ１”）のアクセスを担当する担当ノードが、ノードＮ３（“ｎｏｄｅ３”）であることを示す。
【０１１３】
また、例えば、担当ノード管理テーブルＴ３１には、仮想ボリュームが“Ｖｏｌｕｍｅ２”、ノードが“ｎｏｄｅ４”という情報が登録される。これは、仮想ボリュームＶ２（Ｖｏｌｕｍｅ２）のアクセス（ただし、アイランド７０に属する部分）を担当する担当ノードが、ノードＮ４（“ｎｏｄｅ４”）であることを示す。
【０１１４】
更に、例えば、担当ノード管理テーブルＴ３２には、仮想ボリュームが“Ｖｏｌｕｍｅ２”、ノードが“ｎｏｄｅ６”という情報が登録される。これは、仮想ボリュームＶ２（ただし、アイランド７０ａに属する部分）のアクセスを担当する担当ノードが、ノードＮ６（“ｎｏｄｅ６”）であることを示す。
【０１１５】
図１７は、変換テーブルの例（その１）を示す図である。変換テーブルＴ４１は、記憶部１１０ｂに格納される。変換テーブルＴ４１は、仮想ボリュームＶ１におけるＬＢＡと物理アドレスとの変換に用いられるテーブルである。変換テーブルＴ４１は、仮想ボリューム、セグメントセット、論理セグメント、ストレージ、ＬＵＮ（Logical Unit Number）および物理セグメントの項目を含む。
【０１１６】
仮想ボリュームの項目には、仮想ボリュームの識別情報が登録される。セグメントセットの項目には、セグメントセットの識別番号が登録される。論理セグメントの項目には、論理セグメントの識別番号が登録される。ストレージの項目には、該当の論理セグメントに対応する物理セグメントを有するＨＤＤを備えたノードのノードＩＤが登録される。ＬＵＮの項目には、当該ノードにおけるＬＵＮが登録される。物理セグメントの項目には、物理セグメントの識別番号が登録される。
【０１１７】
例えば、変換テーブルＴ４１には、仮想ボリュームが“Ｖｏｌｕｍｅ１”、セグメントセットが“１”、論理セグメントが“１”、ストレージが“ｎｏｄｅ１”、ＬＵＮが“ＬＵＮ１”、物理セグメントが“０”という情報が登録される。これは、仮想ボリュームＶ１（“Ｖｏｌｕｍｅ１”）の識別番号“１”のセグメントセットの識別番号“１”の論理セグメント（ＬＢＡ範囲“０−２５５”）が、ノードＮ１（“ｎｏｄｅ１”）のＬＵＮ“ＬＵＮ１”の識別番号“０”の物理セグメントに対応することを示す。
【０１１８】
また、変換テーブルＴ４１には、仮想ボリュームが“Ｖｏｌｕｍｅ１”、セグメントセットが“１”、論理セグメントが“２”、ストレージが“ｎｏｄｅ１”、ＬＵＮが“ＬＵＮ２”、物理セグメントが“０”という情報が登録される。これは、仮想ボリュームＶ１（“Ｖｏｌｕｍｅ１”）の識別番号“１”のセグメントセットの識別番号“２”の論理セグメント（ＬＢＡ範囲“２５６−５１１”）が、ノードＮ１（“ｎｏｄｅ１”）のＬＵＮ“ＬＵＮ２”の識別番号“０”の物理セグメントに対応することを示す。
【０１１９】
このように、変換テーブルＴ４１には、仮想ボリュームＶ１の各論理セグメント（ＬＢＡ範囲）に対して、ノードＮ１，Ｎ２，Ｎ３，Ｎ４が備えるＨＤＤ内の物理セグメントが対応付けられる。
【０１２０】
ここで、例えば、物理セグメントの識別番号と各ＨＤＤおよびＨＤＤ上の物理アドレスとの対応情報は、各コントローラユニットによって予め保持されている。このため、物理セグメントの識別番号が判明すれば、各コントローラユニットは、当該対応情報に基づいて、該当の物理セグメントにアクセス可能である。その際、各コントローラユニットは、仮想ボリュームの指定されたＬＢＡ範囲に対して、物理セグメント上の物理アドレス範囲への変換を行うことができる。
【０１２１】
図１８は、変換テーブルの例（その２）を示す図である。図１８（Ａ）は、変換テーブルＴ４２を例示している。変換テーブルＴ４２は、ノードＮ４が有する記憶部に格納される。図１８（Ｂ）は、変換テーブルＴ４３を例示している。変換テーブルＴ４３は、ノードＮ６が有する記憶部に格納される。変換テーブルＴ４２，Ｔ４３は、仮想ボリュームＶ２におけるＬＢＡと物理アドレスとの変換に用いられるテーブルである。変換テーブルＴ４２，Ｔ４３は、仮想ボリューム、セグメントセット、論理セグメント、ストレージ、ＬＵＮおよび物理セグメントの項目を含む。ここで、変換テーブルＴ４２，Ｔ４３の各項目に登録される情報は、変換テーブルＴ４１に含まれる同名の項目に登録される情報と同様である。
【０１２２】
例えば、変換テーブルＴ４２には、仮想ボリュームが“Ｖｏｌｕｍｅ２”、セグメントセットが“１”、論理セグメントが“１”、ストレージが“ｎｏｄｅ３”、ＬＵＮが“ＬＵＮ１”、物理セグメントが“０”という情報が登録される。これは、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）の識別番号“１”のセグメントセットの識別番号“１”の論理セグメント（ＬＢＡ範囲“０−２５５”）が、ノードＮ３（“ｎｏｄｅ３”）のＬＵＮ“ＬＵＮ１”の識別番号“０”の物理セグメントに対応することを示す。
【０１２３】
また、変換テーブルＴ４２には、仮想ボリュームが“Ｖｏｌｕｍｅ２”、セグメントセットが“１”、論理セグメントが“２”、ストレージが“ｎｏｄｅ４”、ＬＵＮが“ＬＵＮ２”、物理セグメントが“０”という情報が登録される。これは、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）の識別番号“１”のセグメントセットの識別番号“２”の論理セグメント（ＬＢＡ範囲“２５６−５１１”）が、ノードＮ４（“ｎｏｄｅ４”）のＬＵＮ１（“ＬＵＮ２”）の識別番号“０”の物理セグメントに対応することを示す。
【０１２４】
また、例えば、変換テーブルＴ４３には、仮想ボリュームが“Ｖｏｌｕｍｅ２”、セグメントセットが“１”、論理セグメントが“３”、ストレージが“ｎｏｄｅ５”、ＬＵＮが“ＬＵＮ１”、物理セグメントが“０”という情報が登録される。これは、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）の識別番号“１”のセグメントセットの識別番号“３”の論理セグメント（ＬＢＡ範囲“５１２−７６７”）が、ノードＮ５（“ｎｏｄｅ５”）のＬＵＮ“ＬＵＮ１”の識別番号“０”の物理セグメントに対応することを示す。
【０１２５】
また、変換テーブルＴ４３には、仮想ボリュームが“Ｖｏｌｕｍｅ２”、セグメントセットが“１”、論理セグメントが“４”、ストレージが“ｎｏｄｅ６”、ＬＵＮが“ＬＵＮ１”、物理セグメントが“０”という情報が登録される。これは、仮想ボリュームＶ２（“Ｖｏｌｕｍｅ２”）の識別番号“１”のセグメントセットの識別番号“４”の論理セグメント（ＬＢＡ範囲“７６８−１０２３”）が、ノードＮ６（“ｎｏｄｅ６”）のＬＵＮ“ＬＵＮ１”の識別番号“０”の物理セグメントに対応することを示す。
【０１２６】
このように、仮想ボリュームＶ２は、アイランド７０，７０ａに跨って作成されるため、変換テーブルも、アイランド７０の担当分（変換テーブルＴ４２）と、アイランド７０ａの担当分（変換テーブルＴ４３）とが分けて作成されることになる。
【０１２７】
図１９は、ログイン要求に含まれる情報の例を示す図である。ログイン要求Ｒ１は、複数の項目と、各項目に対する値を含む。例えば、ログイン要求Ｒ１は、アクセスボリューム、アクセス開始ＬＢＡおよびアクセス元ＩＰアドレスの項目を含む。
【０１２８】
アクセスボリュームは、アクセス先の仮想ボリュームの識別情報である。アクセス開始ＬＢＡは、当該仮想ボリュームに対してアクセスを開始するＬＢＡである。アクセス元ＩＰアドレスは、ログイン要求Ｒ１の発行元装置のＩＰアドレスである。
【０１２９】
例えば、ログイン要求Ｒ１は、アクセスボリュームが“Ｖｏｌｕｍｅ１”、アクセス開始ＬＢＡが“２５６”、アクセス元ＩＰアドレスが“１９２．１６８．０．２００”という情報を含む。これは、ログイン要求Ｒ１が、仮想ボリュームＶ１（“Ｖｏｌｕｍｅ１”）のＬＢＡ“２５６”を起点としたアクセスを行うためのログインの要求であり、アクセス元装置のＩＰアドレスが“１９２．１６８．０．２００”であることを示す。なお、ＩＰアドレス“１９２．１６８．０．２００”は、業務サーバ３０のＩＰアドレスである。
【０１３０】
ここで、ログイン要求Ｒ１は、アクセス元装置（業務サーバ３０であることもあるし、ストレージシステムの何れかのノードであることもある）からマネージャノードであるノードＮ１に対して送信される、仮想ボリュームとの接続要求であるということができる。
【０１３１】
以下、第２の実施の形態のストレージシステムにおける処理手順を説明する。まず、仮想ボリュームの作成手順を説明する。仮想ボリュームを作成する方法には、２つのパターンがある。第１には、１つのアイランド内に１つの仮想ボリュームＶ１を作成する場合である（図２０）。第２には、２つのアイランドに跨って１つの仮想ボリュームＶ２を作成する場合である（図２１）。
【０１３２】
図２０は、仮想ボリューム作成の第１のシーケンス例を示す図である。以下、図２０に示す処理をステップ番号に沿って説明する。なお、以下の説明では、ノードＮ１がマネージャノードであること、および、ノードＮ２がアイランドマスタであることが分かり易いように、マネージャノードＮ１およびアイランドマスタＮ２のように明記する。
【０１３３】
（Ｓ１１）管理サーバ４０は、仮想ボリュームＶ１の作成命令（ボリューム作成命令）を、マネージャノードＮ１に送信する。ボリューム作成命令は、新規に作成する仮想ボリュームＶ１のサイズを含む。ボリューム作成命令は、仮想ボリュームＶ１におけるミラーリングの有無やストライプ幅などの指定を含んでもよい。また、ボリューム作成命令は、仮想ボリュームＶ１を作成するアイランドを指定する情報を含んでもよい。マネージャノードＮ１は、管理サーバ４０からボリューム作成命令を受信する。
【０１３４】
（Ｓ１２）マネージャノードＮ１は、ボリューム作成命令に応じて、新規に仮想ボリュームＶ１を作成するアイランドを選択する。例えば、マネージャノードＮ１は、現時点で、仮想ボリュームとしての使用率が最も低いアイランドを仮想ボリュームの作成先として選択することが考えられる。あるいは、ボリューム作成命令に、作成先のアイランドを指定する情報が含まれる場合には、マネージャノードＮ１は、ボリューム作成命令で指定されたアイランドを仮想ボリュームＶ１の作成先として選択してもよい。マネージャノードＮ１は、アイランド７０を仮想ボリュームＶ１の作成先として選択する。
【０１３５】
（Ｓ１３）マネージャノードＮ１は、ステップＳ１２で選択したアイランド７０のアイランドマスタＮ２に対して、仮想ボリュームＶ１の作成命令（ボリューム作成命令）を送信する。ここで、マネージャノードＮ１は、アイランドマスタＮ２のＩＰアドレス（ボリューム作成命令の宛先ＩＰアドレス）を、アイランドマスタアドレス管理テーブルＴ１１から取得する。アイランドマスタＮ２は、マネージャノードＮ１からボリューム作成命令を受信する。
【０１３６】
（Ｓ１４）アイランドマスタＮ２は、ストレージユニット２００，２００ａ，２００ｂ，２００ｃが備える各ＨＤＤの物理セグメントを仮想ボリュームＶ１に割り当てる。アイランドマスタＮ２は、割り当て結果に基づいて変換テーブルＴ４１を作成する。
【０１３７】
（Ｓ１５）アイランドマスタＮ２は、仮想ボリュームＶ１の担当ノードをノードＮ３と決定する。例えば、アイランドマスタＮ２は、アクセスを担当する仮想ボリュームの数が最も少ないノードを、仮想ボリュームＶ１の担当ノードとすることが考えられる。あるいは、アイランドマスタＮ２は、ラウンドロビンによって順番に仮想ボリュームに対する担当ノードの割り当てを行ってもよい。アイランドマスタＮ２は、変換テーブルの更新を指示する変換テーブル更新命令をノードＮ３に送信する。変換テーブル更新命令は、ステップＳ１４で作成された変換テーブルＴ４１を含む。ノードＮ３は、アイランドマスタＮ２から変換テーブル更新命令を受信する。
【０１３８】
（Ｓ１６）ノードＮ３は、アイランドマスタＮ２から受信した変換テーブルＴ４１を、記憶部１１０ｂに登録する（変換テーブル更新）。ノードＮ３は、変換テーブル更新の完了通知をアイランドマスタＮ２に送信する。アイランドマスタＮ２は、変換テーブル更新の完了通知をノードＮ３から受信する。
【０１３９】
（Ｓ１７）アイランドマスタＮ２は、ｉＳＣＳＩターゲット（単にターゲットという）の作成命令をノードＮ３に送信する。ノードＮ３は、ターゲットの作成命令をアイランドマスタＮ２から受信する。
【０１４０】
（Ｓ１８）ノードＮ３は、アイランド７０に属するノードＮ１，Ｎ２，Ｎ３，Ｎ４を制御して、仮想ボリュームＶ１に対応するターゲットを作成する。ノードＮ３は、ターゲット作成の完了通知をアイランドマスタＮ２に送信する。アイランドマスタＮ２は、ターゲット作成の完了通知をノードＮ３から受信する。
【０１４１】
（Ｓ１９）アイランドマスタＮ２は、仮想ボリュームＶ１の作成が完了したことを示すボリューム作成完了通知をマネージャノードＮ１に送信する。マネージャノードＮ１は、ボリューム作成完了通知を、アイランドマスタＮ２から受信する。
【０１４２】
（Ｓ２０）マネージャノードＮ１は、新たに作成された仮想ボリュームＶ１に関する情報を、仮想ボリューム管理テーブルＴ１２に登録する（仮想ボリューム管理テーブルＴ１２を更新する）。
【０１４３】
（Ｓ２１）マネージャノードＮ１は、ボリューム作成完了通知を管理サーバ４０に送信する。管理サーバ４０は、ボリューム作成完了通知をマネージャノードＮ１から受信する。こうして、業務サーバ３０により、仮想ボリュームＶ１に相当する記憶デバイスをマウントして利用することが可能となる。
【０１４４】
図２１は、仮想ボリューム作成の第２のシーケンス例を示す図である。以下、図２１に示す処理をステップ番号に沿って説明する。
（Ｓ３１）管理サーバ４０は、仮想ボリュームＶ２の作成命令（ボリューム作成命令）を、マネージャノードＮ１に送信する。ボリューム作成命令は、新規に作成する仮想ボリュームＶ２のサイズを含む。ボリューム作成命令は、仮想ボリュームＶ２におけるミラーリングの有無やストライプ幅などの指定を含んでもよい。また、ボリューム作成命令は、仮想ボリュームＶ２を作成するアイランドの組を指定する情報を含んでもよい。マネージャノードＮ１は、ボリューム作成命令を管理サーバ４０から受信する。
【０１４５】
（Ｓ３２）マネージャノードＮ１は、ボリューム作成命令に応じて、新規に仮想ボリュームＶ２を作成するアイランドを選択する。例えば、マネージャノードＮ１は、使用率が最も低いアイランドのみでは要求されたボリュームサイズを実現できない場合に、使用率が最も低いアイランドと使用率が２番目に低いアイランドとを、仮想ボリュームＶ２の作成先として選択することが考えられる。あるいは、ボリューム作成命令に、作成先のアイランドの組を指定する情報が含まれる場合には、マネージャノードＮ１は、ボリューム作成命令で指定されたアイランドの組を仮想ボリュームＶ２の作成先として選択してもよい。マネージャノードＮ１は、アイランド７０，７０ａを仮想ボリュームＶ２の作成先として選択する。
【０１４６】
（Ｓ３３）マネージャノードＮ１は、ステップＳ３２で選択したアイランド７０のアイランドマスタＮ２に対して、仮想ボリュームＶ２の第１部分（アイランド７０に属する部分）の作成命令（ボリューム作成命令）を送信する。ここで、マネージャノードＮ１は、アイランドマスタＮ２のＩＰアドレス（ボリューム作成命令の宛先ＩＰアドレス）を、アイランドマスタアドレス管理テーブルＴ１１から取得する。アイランドマスタＮ２は、マネージャノードＮ１からボリューム作成命令を受信する。
【０１４７】
（Ｓ３４）アイランドマスタＮ２は、ストレージユニット２００，２００ａ，２００ｂ，２００ｃが備える各ＨＤＤの物理セグメントを仮想ボリュームＶ２の第１部分に割り当てる。アイランドマスタＮ２は、割り当て結果に基づいて変換テーブルＴ４２を作成する。
【０１４８】
（Ｓ３５）アイランドマスタＮ２は、仮想ボリュームＶ２の第１部分の担当ノードをノードＮ４と決定する。担当ノードの決定方法は、図２０のステップＳ１５で例示した方法と同様である。アイランドマスタＮ２は、変換テーブルの更新を指示する変換テーブル更新命令をノードＮ４に送信する。変換テーブル更新命令は、ステップＳ３４で作成された変換テーブルＴ４２を含む。ノードＮ４は、アイランドマスタＮ２から変換テーブル更新命令を受信する。
【０１４９】
（Ｓ３６）ノードＮ４は、アイランドマスタＮ２から受信した変換テーブルＴ４２を、ノードＮ４が備える記憶部に登録する（変換テーブル更新）。ノードＮ４は、変換テーブル更新の完了通知をアイランドマスタＮ２に送信する。アイランドマスタＮ２は、変換テーブル更新の完了通知をノードＮ４から受信する。
【０１５０】
（Ｓ３７）アイランドマスタＮ２は、ターゲットの作成命令をノードＮ４に送信する。ノードＮ４は、ターゲットの作成命令をアイランドマスタＮ２から受信する。
（Ｓ３８）ノードＮ４は、アイランド７０に属するノードＮ１，Ｎ２，Ｎ３，Ｎ４を制御して、仮想ボリュームＶ２の第１部分に対応するターゲットを作成する。ノードＮ４は、ターゲット作成の完了通知をアイランドマスタＮ２に送信する。アイランドマスタＮ２は、ターゲット作成の完了通知をノードＮ４から受信する。
【０１５１】
（Ｓ３９）アイランドマスタＮ２は、仮想ボリュームＶ２の第１部分の作成が完了したことを示すボリューム作成完了通知をマネージャノードＮ１に送信する。マネージャノードＮ１は、ボリューム作成完了通知を、アイランドマスタＮ２から受信する。
【０１５２】
（Ｓ４０）マネージャノードＮ１は、仮想ボリューム管理テーブルＴ１２に新たに作成された仮想ボリュームＶ２の第１部分に関する情報を登録する（仮想ボリューム管理テーブルＴ１２を更新する）。
【０１５３】
（Ｓ４１）マネージャノードＮ１は、ステップＳ３２で選択したアイランド７０ａのアイランドマスタＮ５に対して、仮想ボリュームＶ２の第２部分（アイランド７０ａに属する部分）の作成命令（ボリューム作成命令）を送信する。ここで、マネージャノードＮ１は、アイランドマスタＮ５のＩＰアドレス（ボリューム作成命令の宛先ＩＰアドレス）を、アイランドマスタアドレス管理テーブルＴ１１から取得する。アイランドマスタＮ５は、マネージャノードＮ１からボリューム作成命令を受信する。
【０１５４】
（Ｓ４２）アイランドマスタＮ５は、ストレージユニット２００，２００ａ，２００ｂ，２００ｃが備える各ＨＤＤの物理セグメントを仮想ボリュームＶ２の第２部分に割り当てる。アイランドマスタＮ５は、割り当て結果に基づいて変換テーブルＴ４３を作成する。
【０１５５】
（Ｓ４３）アイランドマスタＮ５は、仮想ボリュームＶ２の第２部分の担当ノードをノードＮ６と決定する。担当ノードの決定方法は、図２０のステップＳ１５で例示した方法と同様である。アイランドマスタＮ５は、変換テーブルの更新を指示する変換テーブル更新命令をノードＮ６に送信する。変換テーブル更新命令は、ステップＳ４２で作成された変換テーブルＴ４３を含む。ノードＮ６は、アイランドマスタＮ５から変換テーブル更新命令を受信する。
【０１５６】
（Ｓ４４）ノードＮ６は、アイランドマスタＮ５から受信した変換テーブルＴ４３を、ノードＮ６が備える記憶部に登録する（変換テーブル更新）。ノードＮ６は、変換テーブル更新の完了通知をアイランドマスタＮ５に送信する。アイランドマスタＮ５は、変換テーブル更新の完了通知をノードＮ６から受信する。
【０１５７】
（Ｓ４５）アイランドマスタＮ５は、ターゲットの作成命令をノードＮ６に送信する。ノードＮ６は、ターゲットの作成命令をアイランドマスタＮ５から受信する。
（Ｓ４６）ノードＮ６は、アイランド７０ａに属するノードＮ５，Ｎ６，Ｎ７，Ｎ８を制御して、仮想ボリュームＶ２の第２部分に対応するターゲットを作成する。ノードＮ６は、ターゲット作成の完了通知をアイランドマスタＮ５に送信する。アイランドマスタＮ５は、ターゲット作成の完了通知をノードＮ６から受信する。
【０１５８】
（Ｓ４７）アイランドマスタＮ５は、仮想ボリュームＶ２の第２部分の作成が完了したことを示すボリューム作成完了通知をマネージャノードＮ１に送信する。マネージャノードＮ１は、ボリューム作成完了通知を、アイランドマスタＮ５から受信する。
【０１５９】
（Ｓ４８）マネージャノードＮ１は、新たに作成された仮想ボリュームＶ２の第２部分に関する情報を、仮想ボリューム管理テーブルＴ１２に登録する（仮想ボリューム管理テーブルＴ１２を更新する）。
【０１６０】
（Ｓ４９）マネージャノードＮ１は、ボリューム作成完了通知を管理サーバ４０に送信する。管理サーバ４０は、ボリューム作成完了通知をマネージャノードＮ１から受信する。こうして、業務サーバ３０により、仮想ボリュームＶ２に相当する記憶デバイスをマウントして利用することが可能となる。
【０１６１】
ここで、図２０，２１におけるマネージャノードＮ１の処理は、マネージャ処理部１３０によって実行される。また、図２０，２１におけるアイランドマスタＮ３の処理は、マスタ処理部１４０によって実行される。更に、図２１におけるアイランドマスタＮ５の処理は、コントローラユニット１００ｄが備えるマスタ処理部によって実行される。それ以外の処理は、各コントローラユニットのＩＯ処理部によって実行されると考えてよい。
【０１６２】
なお、図２１の例では、２つのアイランドを跨いで仮想ボリュームＶ２を作成する方法を例示したが、３以上のアイランドを跨ぐ仮想ボリュームを作成するときも、同様の方法で作成することができる。具体的には、マネージャノードＮ１は、ステップＳ３２において、３以上のアイランドを選択する。そして、マネージャノードＮ１は、ステップＳ４８の後、ステップＳ４９の前に、更に他のアイランドマスタに対してボリューム作成命令を送信し、他のアイランドマスタに仮想ボリュームの残り部分に相当するターゲットを作成させる。
【０１６３】
次に、仮想ボリュームに対するＩＯ処理の手順を説明する。ＩＯ処理の方法にも、２つのパターンがある。第１には、ＩＯが１つのアイランド内に収まる場合である（図２２）。第２には、ＩＯが２つ以上のアイランドに跨る場合である（図２３〜２６）。
【０１６４】
図２２は、ＩＯ処理の第１のシーケンス例を示す図である。以下、図２２に示す処理をステップ番号に沿って説明する。
（Ｓ５１）業務サーバ３０は、マネージャノードＮ１に対してログイン要求を送信する。例えば、ログイン要求は、アクセス先の仮想ボリュームＶ１、アクセスを開始する仮想ボリュームＶ１のＬＢＡおよび業務サーバ３０のＩＰアドレスを含むとする。マネージャノードＮ１は、業務サーバ３０からログイン要求を受信する。
【０１６５】
（Ｓ５２）マネージャノードＮ１は、ステップＳ５１で受信したログイン要求に含まれる情報と、仮想ボリューム管理テーブルＴ１２とに基づいて、アイランドを選択する。例えば、ログイン要求で、仮想ボリュームＶ１、アクセスを開始するＬＢＡ“２５６”が指定されている場合、仮想ボリューム管理テーブルＴ１２によれば、アイランド７０（識別情報“ｉ１”）を選択することになる。マネージャノードＮ１は、アイランドマスタアドレス管理テーブルＴ１１を参照して、アイランド７０のアイランドマスタＮ２のＩＰアドレス（ログイン要求の転送先アドレス）を取得する。
【０１６６】
（Ｓ５３）マネージャノードＮ１は、アイランドマスタＮ２にログイン要求を転送する。アイランドマスタＮ２は、マネージャノードＮ１により転送されたログイン要求を受信する。
【０１６７】
（Ｓ５４）アイランドマスタＮ２は、担当ノード管理テーブルＴ３１を参照して、ログイン要求に含まれるアクセス先の仮想ボリュームＶ１の担当ノードがノードＮ３であることを特定する。アイランドマスタＮ２は、ノードアドレス管理テーブルＴ２１を参照して、ノードＮ３のＩＰアドレスを取得する。アイランドマスタＮ２は、ログイン要求に含まれる業務サーバ３０のＩＰアドレスを宛先として、ノードＮ３のＩＰアドレスを送信する（業務サーバ３０に対する物理アドレスの提供）。業務サーバ３０は、ノードＮ３のＩＰアドレスをアイランドマスタＮ２から受信する。こうして、業務サーバ３０は、仮想ボリュームＶ１にアクセスするためのコネクションの確立先のＩＰアドレス（ノードＮ３のＩＰアドレス）を解決する。
【０１６８】
（Ｓ５５）業務サーバ３０は、ｉＳＣＳＩのプロトコルに従った所定のログイン要求をノードＮ３に対して送信する。ノードＮ３は、業務サーバ３０からログイン要求を受信する。
【０１６９】
（Ｓ５６）ノードＮ３は、ステップＳ５５で受信したログイン要求による認証に成功すると、業務サーバ３０との間でコネクションを確立する。
（Ｓ５７）業務サーバ３０は、ノードＮ３に対して、仮想ボリュームＶ１に対するＩＯ要求を発行する。例えば、ＩＯ要求は、仮想ボリュームＶ１、仮想ボリュームＶ１におけるアクセス先のＬＢＡ範囲などの情報を含み得る。
【０１７０】
（Ｓ５８）ノードＮ３は、変換テーブルＴ４１に基づいて、論理セグメント単位にＩＯを分割する。具体的な方法は、図１０で例示した通りである。ここで、ノードＮ３は、仮想ボリュームＶ１におけるＬＢＡ範囲と論理セグメントとの対応関係の情報を保持しており、アクセス先のＬＢＡ範囲が指定されることで、論理セグメント単位にＩＯを分割できる。ただし、アクセス先のＬＢＡ範囲が１つの論理セグメントに収まる場合には、ＩＯを分割しなくてよい（以降の処理でも同様）。
【０１７１】
（Ｓ５９）ノードＮ３は、変換テーブルＴ４１に基づいて、論理セグメント単位のＩＯを、物理セグメント単位のＩＯに変換する（ＩＯのアクセス先を、各ＨＤＤ上の物理アドレスに変換する）。
【０１７２】
（Ｓ６０）ノードＮ３は、ノードＮ１，Ｎ２，Ｎ３，Ｎ４を制御してＩＯを実行する。例えば、ＩＯがデータの読み出しであれば、該当のデータの読み出しを実行する。また、ＩＯがデータの書き込みであれば、該当のデータの書き込みを実行する。
【０１７３】
（Ｓ６１）ノードＮ３は、ＩＯの完了通知を業務サーバ３０に送信する。完了通知は、データの読み出しであれば、読み出したデータを含む。また、完了通知は、ＩＯがデータの書き込みであれば、書き込み完了の通知を含む。業務サーバ３０は、ノードＮ３から完了通知を受信する。
【０１７４】
図２３は、ＩＯ処理の第２のシーケンス例を示す図である。以下、図２３に示す処理をステップ番号に沿って説明する。
（Ｓ７１）業務サーバ３０は、マネージャノードＮ１に対してログイン要求を送信する。例えば、ログイン要求は、アクセス先の仮想ボリュームＶ２、アクセスを開始する仮想ボリュームＶ２のＬＢＡおよび業務サーバ３０のＩＰアドレスを含むとする。マネージャノードＮ１は、業務サーバ３０からログイン要求を受信する。
【０１７５】
（Ｓ７２）マネージャノードＮ１は、ステップＳ７１で受信したログイン要求に含まれる情報と、仮想ボリューム管理テーブルＴ１２とに基づいて、アイランドを選択する。例えば、ログイン要求で、仮想ボリュームＶ２、アクセスを開始するＬＢＡ“２５６”が指定されている場合、仮想ボリューム管理テーブルＴ１２によれば、アイランド７０（識別情報“ｉ１”）を選択することになる。マネージャノードＮ１は、アイランドマスタアドレス管理テーブルＴ１１を参照して、アイランド７０のアイランドマスタＮ２のＩＰアドレス（ログイン要求の転送先アドレス）を取得する。
【０１７６】
（Ｓ７３）マネージャノードＮ１は、アイランドマスタＮ２にログイン要求を転送する。アイランドマスタＮ２は、マネージャノードＮ１により転送されたログイン要求を受信する。
【０１７７】
（Ｓ７４）アイランドマスタＮ２は、担当ノード管理テーブルＴ３１を参照して、ログイン要求に含まれるアクセス先の仮想ボリュームＶ２の担当ノードがノードＮ４であることを特定する。アイランドマスタＮ２は、ノードアドレス管理テーブルＴ２１を参照して、ノードＮ４のＩＰアドレスを取得する。アイランドマスタＮ２は、ログイン要求に含まれる業務サーバ３０のＩＰアドレスを宛先として、ノードＮ４のＩＰアドレスを送信する（業務サーバ３０に対する物理アドレスの提供）。業務サーバ３０は、ノードＮ４のＩＰアドレスをアイランドマスタＮ２から受信する。こうして、業務サーバ３０は、仮想ボリュームＶ２にアクセスするためのコネクションの確立先のＩＰアドレス（ノードＮ４のＩＰアドレス）を解決する。
【０１７８】
（Ｓ７５）業務サーバ３０は、ｉＳＣＳＩのプロトコルに従った所定のログイン要求をノードＮ４に対して送信する。ノードＮ４は、業務サーバ３０からログイン要求を受信する。業務サーバ３０は、ターゲットであるノードＮ４に対し、イニシエータとして機能する。
【０１７９】
（Ｓ７６）ノードＮ４は、ステップＳ７５で受信したログイン要求による認証に成功すると、業務サーバ３０との間でコネクションを確立する。
（Ｓ７７）業務サーバ３０は、ノードＮ４に対して、仮想ボリュームＶ２に対するＩＯ要求を発行する。例えば、ＩＯ要求は、仮想ボリュームＶ２、仮想ボリュームＶ２におけるアクセス先のＬＢＡ範囲などの情報を含み得る。
【０１８０】
（Ｓ７８）ノードＮ４は、変換テーブルＴ４２に基づいて、論理セグメント単位にＩＯを分割する。具体的な方法は、図１０で例示した通りである。ここで、ノードＮ４は、仮想ボリュームＶ２の第１部分（アイランド７０に属する部分）におけるＬＢＡ範囲と論理セグメントとの対応関係を保持しており、アクセス先のＬＢＡ範囲が指定されることで、論理セグメント単位にＩＯを分割できる。ただし、ノードＮ４は、仮想ボリュームＶ２の第２部分（アイランド７０ａに属する部分）におけるＬＢＡ範囲については、ノードＮ４では処理できないことになる（仮想ボリュームの第２部分については、ステップＳ７９，Ｓ８０でも処理されない）。具体的には、業務サーバ３０からのＩＯで、仮想ボリュームＶ２のＬＢＡ範囲“２５６−７６７”が指定されたとする。この場合、ＬＢＡ範囲“２５６−５１１”（第１部分。仮想ボリュームＶ２のセグメントセット“１”、論理セグメント“２”に相当）は、ノードＮ４で処理できるが、ＬＢＡ範囲“５１２−７６７”（第２部分。仮想ボリュームＶ２のセグメントセット“１”、論理セグメント“３”に相当）は、ノードＮ４では処理できない。
【０１８１】
（Ｓ７９）ノードＮ４は、変換テーブルＴ４２に基づいて、論理セグメント単位のＩＯを、物理セグメント単位のＩＯに変換する（ＩＯのアクセス先を、各ＨＤＤ上の物理アドレスに変換する）。
【０１８２】
（Ｓ８０）ノードＮ４は、ノードＮ１，Ｎ２，Ｎ３，Ｎ４を制御してＩＯを実行する。例えば、ＩＯがデータの読み出しであれば、該当のデータの読み出しを実行する。また、ＩＯがデータの書き込みであれば、該当のデータの書き込みを実行する。ノードＮ４は、業務サーバ３０から要求されたＩＯに未実行の部分があるため、ＩＯ結果（アクセス結果）をＲＡＭなどの記憶装置に保持する。
【０１８３】
（Ｓ８１）ノードＮ４は、仮想ボリュームＶ２の未アクセス部分に対するＩＯを行うために、マネージャノードＮ１にログイン要求を送信する。当該ログイン要求は、例えば、アクセス先の仮想ボリュームとして仮想ボリュームＶ２、未アクセス部分に相当する仮想ボリュームＶ２のＬＢＡ範囲におけるアクセス開始ＬＢＡ、送信元ＩＰアドレスとしてノードＮ４のＩＰアドレスを含む。マネージャノードＮ１は、ノードＮ４からログイン要求を受信する。
【０１８４】
（Ｓ８２）マネージャノードＮ１は、ステップＳ８１で受信したログイン要求に含まれる情報と、仮想ボリューム管理テーブルＴ１２とに基づいて、アイランドを選択する。例えば、ログイン要求で、仮想ボリュームＶ２、アクセスを開始するＬＢＡ“５１２”が指定されている場合、仮想ボリューム管理テーブルＴ１２によれば、アイランド７０ａ（識別情報“ｉ２”）を選択することになる。マネージャノードＮ１は、アイランドマスタアドレス管理テーブルＴ１１を参照して、アイランド７０ａのアイランドマスタＮ５のＩＰアドレス（ログイン要求の転送先アドレス）を取得する。
【０１８５】
（Ｓ８３）マネージャノードＮ１は、アイランドマスタＮ５にログイン要求を転送する。アイランドマスタＮ５は、マネージャノードＮ１により転送されたログイン要求を受信する。
【０１８６】
（Ｓ８４）アイランドマスタＮ５は、担当ノード管理テーブルＴ３２を参照して、ログイン要求に含まれるアクセス先の仮想ボリュームＶ２の担当ノードがノードＮ６であることを特定する。アイランドマスタＮ５は、ノードアドレス管理テーブルＴ２２を参照して、ノードＮ６のＩＰアドレスを取得する。アイランドマスタＮ５は、ログイン要求に含まれるノードＮ４のＩＰアドレスを宛先として、ノードＮ６のＩＰアドレスを送信する（ノードＮ４に対する物理アドレスの提供）。ノードＮ４は、ノードＮ６のＩＰアドレスをアイランドマスタＮ５から受信する。こうして、ノードＮ４は、仮想ボリュームＶ２の未アクセス部分にアクセスするためのコネクションの確立先のＩＰアドレス（ノードＮ６のＩＰアドレス）を解決する。
【０１８７】
（Ｓ８５）ノードＮ４は、ｉＳＣＳＩのプロトコルに従った所定のログイン要求をノードＮ６に対して送信する。ノードＮ６は、ノードＮ４からログイン要求を受信する。ノードＮ４は、ターゲットであるノードＮ６に対し、イニシエータとして機能する。
【０１８８】
（Ｓ８６）ノードＮ４は、ステップＳ７５で受信したログイン要求による認証に成功すると、業務サーバ３０との間でコネクションを確立する。
（Ｓ８７）ノードＮ４は、ノードＮ６に対して、仮想ボリュームＶ２に対するＩＯ要求を発行する。例えば、ＩＯ要求は、仮想ボリュームＶ２、仮想ボリュームＶ２におけるアクセス先のＬＢＡ範囲などの情報を含み得る。
【０１８９】
図２４は、ＩＯ処理の第２のシーケンス例（続き）を示す図である。以下、図２４に示す処理をステップ番号に沿って説明する。
（Ｓ８８）ノードＮ６は、変換テーブルＴ４３に基づいて、論理セグメント単位にＩＯを分割する。具体的な方法は、図１０で例示した通りである。ここで、ノードＮ６は、仮想ボリュームＶ２の第２部分（アイランド７０ａに属する部分）におけるＬＢＡ範囲と論理セグメントとの対応関係を保持しており、アクセス先のＬＢＡ範囲が指定されることで、論理セグメント単位にＩＯを分割できる。
【０１９０】
（Ｓ８９）ノードＮ６は、変換テーブルＴ４３に基づいて、論理セグメント単位のＩＯを、物理セグメント単位のＩＯに変換する（ＩＯのアクセス先を、各ＨＤＤ上の物理アドレスに変換する）。
【０１９１】
（Ｓ９０）ノードＮ６は、ノードＮ５，Ｎ６，Ｎ７，Ｎ８を制御してＩＯを実行する。例えば、ＩＯがデータの読み出しであれば、該当のデータの読み出しを実行する。また、ＩＯがデータの書き込みであれば、該当のデータの書き込みを実行する。
【０１９２】
（Ｓ９１）ノードＮ６は、ＩＯの完了通知をノードＮ４に送信する。完了通知は、データの読み出しであれば、読み出したデータを含む。また、完了通知は、ＩＯがデータの書き込みであれば、書き込み完了の通知を含む。ノードＮ４は、ノードＮ６から完了通知を受信する。
【０１９３】
（Ｓ９２）ノードＮ４は、ノードＮ６から受信した完了通知に含まれるＩＯ結果と、ノードＮ４がステップＳ８０において保持したＩＯ結果とをマージして、業務サーバ３０からのＩＯ要求に対するＩＯ結果を生成し、業務サーバ３０に送信する。例えば、ＩＯがデータの読み出しであれば、ステップＳ８０で読み出した部分と、ステップＳ９１で取得した部分とをマージしたデータを、読み出しデータとして業務サーバ３０に送信する。また、ＩＯがデータの書き込みであれば、ステップＳ８０で書き込んだ部分の書き込み結果と、ステップＳ９１で取得した書き込み結果とをマージした書き込み結果（例えば、全ての書き込みが成功した、何れかの部分で書き込みが失敗したなど）を、業務サーバ３０に送信する。
【０１９４】
こうして、各ノードは、業務サーバ３０から受け付けた仮想ボリュームＶ２に対するアクセス要求を適切に処理することができる。
なお、ステップＳ９０におけるＩＯ実行でも、未アクセス部分が生じることもある（アクセス先が３以上のアイランドに跨る場合）。その場合、ノードＮ６は、次のようにＩＯ処理を実行する。以下の説明では、３つ目のアイランドのアイランドマスタをアイランドマスタＮ９とする。また、３つ目のアイランドにおいて、アクセス対象の仮想ボリュームに対するアクセスを担当する担当ノードをノードＮ１０とする。
【０１９５】
図２５は、ＩＯ処理の第３のシーケンス例を示す図である。以下、図２５に示す処理をステップ番号に沿って説明する。ここで、図２５では、図２４のステップＳ９０のＩＯ処理で未アクセス部分が発生した場合を例示する。すなわち、アイランド７０，７０ａを含む３つのアイランドに跨る仮想ボリュームに対するＩＯが業務サーバ３０により要求されたケースである。当該仮想ボリュームのアイランド７０，７０ａそれぞれに属する部分に対するＩＯ処理の手順は、図２３，２４で説明した方法と同様であるため、ステップＳ９０までの説明を省略する。ただし、図２５の手順では、ステップＳ９０において、ノードＮ６は、ノードＮ６によるアクセス済の部分をＲＡＭなどに保持する。
【０１９６】
（Ｓ１００）ノードＮ６は、アクセス対象の仮想ボリュームの未アクセス部分に対するＩＯを行うために、マネージャノードＮ１にログイン要求を送信する。当該ログイン要求は、例えば、アクセス先の仮想ボリューム、および、未アクセス部分に相当する当該仮想ボリュームのＬＢＡ範囲におけるアクセス開始ＬＢＡ、送信元ＩＰアドレスとしてノードＮ６のＩＰアドレスを含む。マネージャノードＮ１は、ノードＮ６からログイン要求を受信する。
【０１９７】
（Ｓ１０１）マネージャノードＮ１は、ステップＳ１００で受信したログイン要求に含まれる情報と、仮想ボリューム管理テーブルＴ１２とに基づいて、３つ目のアイランドを選択する。マネージャノードＮ１は、アイランドマスタアドレス管理テーブルＴ１１を参照して、選択したアイランドのアイランドマスタＮ９のＩＰアドレス（ログイン要求の転送先アドレス）を取得する。
【０１９８】
（Ｓ１０２）マネージャノードＮ１は、アイランドマスタＮ９にログイン要求を転送する。アイランドマスタＮ９は、マネージャノードＮ１により転送されたログイン要求を受信する。
【０１９９】
（Ｓ１０３）アイランドマスタＮ９は、担当ノード管理テーブルを参照して、ログイン要求に含まれるアクセス先の仮想ボリュームの担当ノードがノードＮ１０であることを特定する。アイランドマスタＮ９は、ノードアドレス管理テーブルを参照して、ノードＮ１０のＩＰアドレスを取得する。アイランドマスタＮ９は、ログイン要求に含まれるノードＮ６のＩＰアドレスを宛先として、ノードＮ１０のＩＰアドレスを送信する（ノードＮ６に対する物理アドレスの提供）。ノードＮ６は、ノードＮ１０のＩＰアドレスをアイランドマスタＮ９から受信する。こうして、ノードＮ６は、仮想ボリュームの未アクセス部分にアクセスするためのコネクションの確立先のＩＰアドレス（ノードＮ１０のＩＰアドレス）を解決する。
【０２００】
（Ｓ１０４）ノードＮ６は、ｉＳＣＳＩのプロトコルに従った所定のログイン要求をノードＮ１０に対して送信する。ノードＮ１０は、ノードＮ６からログイン要求を受信する。ノードＮ６は、ターゲットであるノードＮ１０に対し、イニシエータとして機能する。
【０２０１】
（Ｓ１０５）ノードＮ１０は、ステップＳ１０４で受信したログイン要求による認証に成功すると、業務サーバ３０との間でコネクションを確立する。
（Ｓ１０６）ノードＮ６は、ノードＮ１０に対して、仮想ボリュームに対するＩＯ要求を発行する。例えば、ＩＯ要求は、仮想ボリューム、当該仮想ボリュームにおけるアクセス先のＬＢＡ範囲などの情報を含み得る。
【０２０２】
図２６は、ＩＯ処理の第３のシーケンス例（続き）を示す図である。以下、図２６に示す処理をステップ番号に沿って説明する。
（Ｓ１０７）ノードＮ１０は、ノードＮ１０が保持する変換テーブルに基づいて、論理セグメント単位にＩＯを分割する。
【０２０３】
（Ｓ１０８）ノードＮ１０は、変換テーブルに基づいて、論理セグメント単位のＩＯを、物理セグメント単位のＩＯに変換する（ＩＯのアクセス先を、各ＨＤＤ上の物理アドレスに変換する）。
【０２０４】
（Ｓ１０９）ノードＮ１０は、ノードＮ１０が属するアイランドの各ノードを制御してＩＯを実行する。例えば、ＩＯがデータの読み出しであれば、該当のデータの読み出しを実行する。また、ＩＯがデータの書き込みであれば、該当のデータの書き込みを実行する。
【０２０５】
（Ｓ１１０）ノードＮ１０は、ＩＯの完了通知をノードＮ６に送信する。完了通知は、データの読み出しであれば、読み出したデータを含む。また、完了通知は、ＩＯがデータの書き込みであれば、書き込み完了の通知を含む。ノードＮ６は、ノードＮ１０から完了通知を受信する。
【０２０６】
（Ｓ１１１）ノードＮ６は、ノードＮ１０から受信した完了通知に含まれるＩＯ結果と、ノードＮ６が保持しているＩＯ結果とをマージして、ノードＮ４からのＩＯ要求に対する完了通知を生成し、ノードＮ４に送信する。
【０２０７】
（Ｓ１１２）ノードＮ４は、ノードＮ６から受信した完了通知に含まれるＩＯ結果と、ノードＮ４が保持しているＩＯ結果とをマージして、業務サーバ３０からのＩＯ要求に対するＩＯ結果を生成し、業務サーバ３０に送信する。
【０２０８】
このようにして、各ノードは、自アイランド内ではＩＯ要求に、仮想ボリュームの未アクセス部分が存在する場合には、次のアイランドに属する担当ノードに、当該未アクセス部分へのアクセスを順次依頼する。そして、最終的なＩＯ結果をノードＮ４により作成して、業務サーバ３０に応答する。このように、各ノードは、３以上のアイランドに跨る仮想ボリュームに対するアクセスも適切に処理することができる。
【０２０９】
ここで、図２２〜２６におけるマネージャノードＮ１の処理は、マネージャ処理部１３０によって実行される。また、図２２〜２６における各アイランドマスタの処理は、各アイランドマスタのコントローラユニットが備えるマスタ処理部によって実行される。それ以外の処理は、各コントローラユニットのＩＯ処理部によって実行されると考えてよい。
【０２１０】
次に、図２２のステップＳ５８〜ステップＳ６１、ステップＳ７８（図２３）〜ステップＳ９２（図２４）、および、ステップＳ８８（図２５）〜ステップＳ１１２（図２６）に相当する処理を実現するための、各ノードによるＩＯ処理の手順を説明する。
【０２１１】
図２７は、担当ノードによるＩＯ処理例を示すフローチャートである。以下、図２７に示す処理をステップ番号に沿って説明する。以下では、ＩＯ処理部１２０の処理手順を主に説明するが、他のノードのＩＯ処理部も同様の処理を実行する。
【０２１２】
（ＳＴ１）ＩＯ処理部１２０は、ＩＯ要求を受信する。
（ＳＴ２）ＩＯ処理部１２０は、自ノード（この場合、ノードＮ１）で保持する変換テーブルに基づいて、ＩＯを論理セグメント単位に分割し、アクセス先の論理セグメントを物理セグメント（各ＨＤＤ上のアドレス）に変換する。
【０２１３】
（ＳＴ３）ＩＯ処理部１２０は、ＩＯを実行し、ＩＯ結果を取得する。
（ＳＴ４）ＩＯ処理部１２０は、ステップＳＴ１で受信したＩＯ要求に対して、未アクセス部分があるか否かを判定する。未アクセス部分がない場合、処理をステップＳＴ５に進める。未アクセス部分がある場合、処理をステップＳＴ６に進める。
【０２１４】
（ＳＴ５）ＩＯ処理部１２０は、ステップＳＴ３で取得したＩＯ結果を、ＩＯ要求元に応答する。そして、処理を終了する。
（ＳＴ６）ＩＯ処理部１２０は、ステップＳＴ３で取得したアクセス済部分のＩＯ結果を記憶部１１０に格納して保持する。
【０２１５】
（ＳＴ７）ＩＯ処理部１２０は、次のアクセス先ノードのＩＰアドレスを解決する。具体的には、ＩＯ処理部１２０は、マネージャ処理部１３０に仮想ボリュームの識別情報と、仮想ボリュームにおける未アクセス部分の先頭ＬＢＡと、自ノード（ノードＮ１）のＩＰアドレスとを通知する。すると、マネージャ処理部１３０は、アイランドマスタアドレス管理テーブルＴ１１および仮想ボリューム管理テーブルＴ１２に基づいて、該当の仮想ボリュームの該当の先頭ＬＢＡにアクセスするためのアイランドマスタへ、ログイン要求を転送する。そして、ＩＯ処理部１２０は、当該アイランドマスタから、ログイン要求に対する応答として、次のアクセス先ノードのＩＰアドレスを受信する。
【０２１６】
（ＳＴ８）ＩＯ処理部１２０は、次のアクセス先ノード（以下、単にアクセス先ノードと称する）に対して、ｉＳＣＳＩなどのプロトコルに応じたログインを実行し、アクセス先ノードとコネクションを確立する。なお、プロトコルによっては（例えば、ＦＣを用いる場合など）、ログインを実行しなくてよい場合もある。
【０２１７】
（ＳＴ９）ＩＯ処理部１２０は、確立したコネクションを用いて、アクセス先ノードにＩＯを発行する。
（ＳＴ１０）ＩＯ処理部１２０は、ステップＳＴ９で発行したＩＯに対して、アクセス先ノードからＩＯ結果を受信する。
【０２１８】
（ＳＴ１１）ＩＯ処理部１２０は、ステップＳＴ６で保持したＩＯ結果と、ステップＳＴ１０で受信したＩＯ結果をマージして、ステップＳＴ１で受信したＩＯ要求の要求元に、当該ＩＯ結果を含むアクセスの完了通知を応答する。
【０２１９】
このようにして、各ノードのコントローラユニットは、仮想ボリュームに対するＩＯを実行する。特に、ＩＯが複数のアイランドに跨る場合、各コントローラユニットが内部的に連携して、ＩＯを実行する。このため、業務サーバ３０から受け付けるＩＯ要求が複数のアイランドに跨る場合にも、ＩＯを中断させることなく適切に処理することができる。
【０２２０】
また、第２の実施の形態のストレージシステムでは、各シェルフの起動時間を短縮できるという利点もある。具体的には、まず、アイランドマネージャとなるノードＮ１を含むシェルフＳＨ１を起動し、その後、ノードＮ１により、アイランド単位に並列で各シェルフや仮想ボリュームを提供するためのサービスを開始させる。並列に起動処理を行えるため、サービスの起動までの時間を短縮することができる。
【０２２１】
また、例えば、スケールアウト後などに行われるデータの再配置（既存ストレージユニットから新規ストレージユニットへのデータの移動）についてもアイランド単位に実行できる。アイランド内に閉じてデータ再配置を行うことにより、データの移動量を少なく抑えることができ、アイランド構成を用いずにストレージユニット全体でデータの再配置を行う場合よりも、データ再配置の時間を短くすることができる。
【０２２２】
更に、第２の実施オン形態のストレージシステムでは、障害の影響を局所化できるという利点もある。例えば、あるノードが使用不可になったとしても、その影響を受ける範囲をアイランド内に限定できる。このため、アイランド構成を用いない場合に比べて、ユーザの業務への影響を小さくすることができる。
【０２２３】
なお、第１の実施の形態の情報処理は、制御部１１ｂ，１２ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、各コントローラユニットが備えるプロセッサにプログラムを実行させることで実現できる。ストレージ制御装置１１，１２や各コントローラユニットは、プロセッサとＲＡＭとを含むコンピュータを備えていると考えてもよい。プログラムは、コンピュータ読み取り可能な記録媒体８１，８４に記録できる。
【０２２４】
例えば、プログラムを記録した記録媒体８１，８４を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体８１，８４に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＮＶＲＡＭ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０２２５】
１０  ストレージシステム
１１，１２  ストレージ制御装置
１１ａ，１２ａ  記憶部
１１ｂ，１２ｂ  制御部
１３，１４  記憶装置群
１３ａ，１３ｂ，１３ｃ，１４ａ，１４ｂ，１４ｃ  記憶装置
Ｌ１，Ｌ２，Ｌ３  論理領域
Ｌ１ａ，Ｌ２ａ  部分
【図１】
2017058736.tif 000003
【図２】
2017058736.tif 000004
【図３】
2017058736.tif 000005
【図４】
2017058736.tif 000006
【図５】
2017058736.tif 000007
【図６】
2017058736.tif 000008
【図７】
2017058736.tif 000009
【図８】
2017058736.tif 000010
【図９】
2017058736.tif 000011
【図１０】
2017058736.tif 000012
【図１１】
2017058736.tif 000013
【図１２】
2017058736.tif 000014
【図１３】
2017058736.tif 000015
【図１４】
2017058736.tif 000016
【図１５】
2017058736.tif 000017
【図１６】
2017058736.tif 000018
【図１７】
2017058736.tif 000019
【図１８】
2017058736.tif 000020
【図１９】
2017058736.tif 000021
【図２０】
2017058736.tif 000022
【図２１】
2017058736.tif 000023
【図２２】
2017058736.tif 000024
【図２３】
2017058736.tif 000025
【図２４】
2017058736.tif 000026
【図２５】
2017058736.tif 000027
【図２６】
2017058736.tif 000028
【図２７】
2017058736.tif 000029