(57)【特許請求の範囲】
【請求項１】
ストレージシステムであって、
データを格納する論理的な記憶領域である少なくとも１つの論理ユニットと、前記論理ユニットを制御する少なくとも１つのコントローラと、をそれぞれ含む複数のストレージノードと、
それぞれ異なる前記ストレージノードに含まれる複数の前記コントローラ間を、前記コントローラと前記ストレージシステムに接続されるホストコンピュータとの間のアクセスパスを介することなく接続するコントローラ間結合部と、を備え、
前記ストレージノードの前記コントローラは、
少なくとも１つのＣＰＵコアを含むＣＰＵと、
ネットワークを介してホストコンピュータから前記ストレージシステム内の複数の前記論理ユニットの内の１つを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記ＣＰＵと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記ＣＰＵ内の前記ＣＰＵコアと前記ストレージシステム内の複数の前記論理ユニットコントローラとの組み合わせのそれぞれと対応付けられた複数の第１の共用メモリ領域を有するメモリと、を含み、
前記複数のストレージノードの内の第１のストレージノードに含まれる前記ネットワークコントローラが、前記複数のストレージノードの内の第２のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときは、前記第１のストレージノード内の前記ＣＰＵコアは、受領されたコマンドに応じた処理を実行することによって、前記第２のストレージノードに含まれる論理ユニットに接続された前記論理ユニットコントローラに対するコマンドを、前記第１のストレージノード内の前記ＣＰＵコアと前記第２のストレージノード内の前記論理ユニットコントローラとの組み合わせに対応付けられた前記第１のストレージノード内の前記第１の共用メモリ領域に格納し、
前記第２のストレージノード内の前記論理ユニットコントローラは、前記第１のストレージノード内の前記第１の共用メモリ領域に格納されたコマンドを、前記コントローラ間結合部を介して取得し、取得したコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する、ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記第１のストレージノード内の前記ＣＰＵは、前記ＣＰＵコアを複数含み、
前記第１のストレージノード内の前記メモリは、前記ＣＰＵと前記ネットワークコントローラとで共用されるメモリ領域であって、前記複数のＣＰＵコアのそれぞれと対応付けられた複数の第２の共用メモリ領域を含み、
前記第１のストレージノード内の前記ネットワークコントローラは、受領されたコマンドに応じた処理を実行する前記ＣＰＵコアである担当ＣＰＵコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有すると共に、前記担当ＣＰＵコアに対応付けられた前記第２の共用メモリ領域に受領されたコマンドを格納し、
前記担当ＣＰＵコアは、前記第２の共用メモリ領域からコマンドを取得し、コマンドに応じた処理を実行する、ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
前記論理ユニットコントローラは、前記ストレージシステム内の複数の前記ＣＰＵコアのそれぞれに対応付けられた、前記ＣＰＵと前記論理ユニットコントローラとの通信のための領域である第１の通信領域を含み、
前記第１のストレージノード内の前記担当ＣＰＵコアは、前記第１のストレージノード内の前記第１の共用メモリ領域に格納したコマンドの場所を示す場所情報を、前記担当ＣＰＵコアに対応付けられた前記第２のストレージノードの前記論理ユニットコントローラ内の前記第１の通信領域に格納し、
前記第２のストレージノードの前記論理ユニットコントローラは、前記第１の通信領域に格納された前記場所情報を参照して、前記第１の共用メモリ領域からコマンドを取得する、ストレージシステム。
【請求項４】
請求項２記載のストレージシステムであって、
前記ネットワークコントローラは、複数の前記ＣＰＵコアのそれぞれに対応付けられた、前記ＣＰＵと前記ネットワークコントローラとの通信のための領域である第２の通信領域を含み、
前記第１のストレージノード内の前記ネットワークコントローラは、前記第１のストレージノード内の前記第２の共用メモリ領域に格納したコマンドの場所を示す場所情報を、前記担当ＣＰＵコアに対応付けられた前記第２の通信領域に格納し、
前記担当ＣＰＵコアは、前記第２の通信領域に格納された前記場所情報を参照して、前記第２の共用メモリ領域からコマンドを取得する、ストレージシステム。
【請求項５】
請求項２記載のストレージシステムであって、
前記第１のストレージノード内の前記ネットワークコントローラは、前記第２の共用メモリ領域にコマンドを格納した後、前記担当ＣＰＵコアに割り込み要求を発行し、
前記担当ＣＰＵコアは、前記割り込み要求を受領したとき、前記第２の共用メモリ領域からコマンドを取得する、ストレージシステム。
【請求項６】
請求項２記載のストレージシステムであって、
前記第２のストレージノード内の前記論理ユニットコントローラは、取得したコマンドに従った前記論理ユニットにおけるデータの入出力の制御を完了したときには、処理の完了を表すステータス情報を、前記コントローラ間結合部を介して、前記第１のストレージノード内の前記担当ＣＰＵコアに対応付けられた前記第１の共用メモリ領域に格納し、
前記担当ＣＰＵコアは、前記第１の共用メモリ領域に格納されたステータス情報に応じた処理を実行することによって、前記第１のストレージノード内の前記ネットワークコントローラに対するコマンドを、前記担当ＣＰＵコアに対応付けられた前記第２の共用メモリ領域に格納し、
前記第１のストレージノード内の前記ネットワークコントローラは、前記第２の共用メモリ領域に格納されたコマンドに従って、ホストコンピュータから受領したコマンドの完了に関する処理を実行する、ストレージシステム。
【請求項７】
請求項６記載のストレージシステムであって、
前記第２のストレージノード内の前記論理ユニットコントローラは、前記第１のストレージノード内の前記第１の共用メモリ領域にステータス情報を格納した後、前記担当ＣＰＵコアに割り込み要求を発行し、
前記担当ＣＰＵコアは、前記割り込み要求を受領したとき、前記第１の共用メモリ領域からステータス情報を取得する、ストレージシステム。
【請求項８】
請求項２記載のストレージシステムであって、
前記ストレージノード内の前記コントローラは、前記コントローラ間結合部と接続されるコントローラスイッチを含み、
前記コントローラ間結合部は、前記コントローラスイッチ間を接続する接続線を含む、ストレージシステム。
【請求項９】
請求項２記載のストレージシステムであって、
前記ストレージノード内の前記コントローラは、前記コントローラ間結合部と接続されるコントローラスイッチを含み、
前記コントローラ間結合部は、前記コントローラスイッチと接続された複数の接続線と、前記複数の接続線のそれぞれと接続された結合部スイッチと、を含む、ストレージシステム。
【請求項１０】
請求項２記載のストレージシステムであって、
前記ストレージノードのそれぞれは、前記コントローラを複数含み、
前記ストレージノード内の複数の前記コントローラのそれぞれは、１つの系列に１つの前記ストレージノード内の複数の前記コントローラが属さないように、複数の系列の内のいずれかの系列に属するように設定され、
前記コントローラ間結合部は、前記ストレージシステム内の同一の系列に属する複数の前記コントローラ間を接続する、ストレージシステム。
【請求項１１】
請求項１０記載のストレージシステムであって、
前記ストレージノード内の前記コントローラは、前記コントローラ間結合部と接続されるコントローラスイッチを含み、
前記コントローラ間結合部は、系列毎に共有される結合部スイッチと、前記結合部スイッチと前記結合部スイッチに対応した系列に属する前記コントローラ内の前記コントローラスイッチとを接続する接続線と、複数の前記結合部スイッチ間を接続する接続線と、を含み、
１つの前記ストレージノード内に含まれる複数の前記コントローラは、前記結合部スイッチ間を接続する接続線を介して、互いに接続されている、ストレージシステム。
【請求項１２】
請求項２記載のストレージシステムであって、さらに、
表示部と操作部とを有する管理装置を備え、
前記管理装置の表示部は、前記ストレージシステム内の複数の前記論理ユニットと前記担当ＣＰＵコアとの対応関係を表示可能であり、
前記ネットワークコントローラは、ユーザによる前記管理装置の操作部の操作により、前記管理装置の表示部に表示された前記対応関係が変更された場合に、変更後の前記対応関係に従って、前記担当ＣＰＵコアの設定を行う、ストレージシステム。
【請求項１３】
請求項２記載のストレージシステムであって、
前記コントローラの前記ＣＰＵと、前記ネットワークコントローラと、前記論理ユニットコントローラと、は、１つのチップ上に配置されている、ストレージシステム。
【請求項１４】
ストレージシステムであって、
少なくとも１つのストレージノードを備え、
前記ストレージノードは、
データを格納する論理的な記憶領域である少なくとも１つの論理ユニットと、
複数のＣＰＵコアを含むＣＰＵと、
ネットワークを介してホストコンピュータから前記論理ユニットを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記ＣＰＵと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記ＣＰＵの複数のＣＰＵコアのそれぞれと対応付けられた複数の第１の共用メモリ領域と、前記ＣＰＵと前記ネットワークコントローラとで共用されるメモリ領域であって、前記ＣＰＵの複数のＣＰＵコアのそれぞれと対応付けられた複数の第２の共用メモリ領域と、を有するメモリと、を含み、
前記ネットワークコントローラは、ホストコンピュータから受領されたコマンドに応じた処理を行う前記ＣＰＵコアである担当ＣＰＵコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有すると共に、前記担当ＣＰＵコアに対応付けられた前記第２の共用メモリ領域に受領されたコマンドを格納し、
前記担当ＣＰＵコアは、前記第２の共用メモリ領域に格納されたコマンドに応じた処理を実行することによって、前記論理ユニットコントローラに対するコマンドを、前記担当ＣＰＵコアに対応付けられた前記第１の共用メモリ領域に格納し、
前記論理ユニットコントローラは、前記第１の共用メモリ領域に格納されたコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する、ストレージシステム。
【請求項１５】
ストレージシステムの制御方法であって、
前記ストレージシステムは、
データを格納する論理的な記憶領域である少なくとも１つの論理ユニットと、前記論理ユニットを制御する少なくとも１つのコントローラと、をそれぞれ含む複数のストレージノードと、
それぞれ異なる前記ストレージノードに含まれる複数の前記コントローラ間を、前記コントローラと前記ストレージシステムに接続されるホストコンピュータとの間のアクセスパスを介することなく接続するコントローラ間結合部と、を備え、
前記ストレージノードの前記コントローラは、
少なくとも１つのＣＰＵコアを含むＣＰＵと、
ネットワークを介してホストコンピュータから前記ストレージシステム内の複数の前記論理ユニットの内の１つを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記ＣＰＵと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記ＣＰＵ内の前記ＣＰＵコアと前記ストレージシステム内の複数の前記論理ユニットコントローラとの組み合わせのそれぞれと対応付けられた複数の第１の共用メモリ領域を有するメモリと、を含み、
前記方法は、
（ａ）前記複数のストレージノードの内の第１のストレージノードに含まれる前記ネットワークコントローラが、前記複数のストレージノードの内の第２のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときに、前記第１のストレージノード内の前記ＣＰＵコアが、受領されたコマンドに応じた処理を実行することによって、前記第２のストレージノードに含まれる論理ユニットに接続された前記論理ユニットコントローラに対するコマンドを、前記第１のストレージノード内の前記ＣＰＵコアと前記第２のストレージノード内の前記論理ユニットコントローラとの組み合わせに対応付けられた前記第１のストレージノード内の前記第１の共用メモリ領域に格納する工程と、
（ｂ）前記第２のストレージノード内の前記論理ユニットコントローラが、前記第１のストレージノード内の前記第１の共用メモリ領域に格納されたコマンドを、前記コントローラ間結合部を介して取得し、取得したコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する工程と、を備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特にストレージシステムにおいてコマンドに応じた処理を行う処理装置の切り替えを行う技術に関する。
【背景技術】
【０００２】
ホストコンピュータとストレージシステムとを備えるデータ処理システムが、種々の用途に利用されている。ここで、ストレージシステムとは、データを格納するディスクとディスクを制御するコントローラとを有する少なくとも１つのストレージノードによって構成されたシステムである。ストレージノード内では、一般に、ディスクによって１つまたは複数の論理的な記憶領域（例えば「論理ユニット」と呼ばれる）が構築される。ホストコンピュータは、ストレージシステムのストレージノード内に構築された論理ユニットを対象としたコマンドを発行しながら、データ処理業務を実行する。ホストコンピュータからのコマンドを受領したストレージノード内では、コントローラ内の処理装置（例えばＣＰＵコア）が、受領したコマンドに応じた処理を行う。
【０００３】
このようなストレージシステムにおいて、論理ユニットに格納されたデータ量の増大やホストコンピュータからのアクセス頻度の増大等により、特定のストレージノード内の特定の処理装置の負荷が過大となる場合がある。
【０００４】
他方、ストレージシステムにおいて、第１のストレージノード内の論理ユニットから第２のストレージノード内の論理ユニットにデータを移行する技術が開示されている（例えば特許文献１）。この技術では、データ移行後は、ホストコンピュータからのコマンドが第２のストレージノードによって受領される。そのため、データ移行前に第１のストレージノード内の処理装置によって実行されていたホストコンピュータからのコマンドに応じた処理は、データ移行後は、第２のストレージノード内の処理装置によって実行されることとなる。上述した特定の処理装置の負荷が過大である場合に、このようなホストコンピュータからのコマンドに応じた処理を実行する処理装置の切り替えを実行すれば、ストレージシステム内の負荷分散を図ることができる。
【０００５】
【特許文献１】特開２０００−１８７６０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記従来の技術では、コマンドに応じた処理を実行する処理装置の切り替えを行う際に、データの移行やそれに伴う各種設定の変更を必要とし、処理が煩雑であるという問題があった。
【０００７】
本発明は、上述した従来の課題を解決するためになされたものであり、ストレージシステムにおいて、コマンドに応じた処理を実行する処理装置の切り替えを容易に実現することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題の少なくとも一部を解決するために、本発明の第１のストレージシステムは、
データを格納する論理的な記憶領域である少なくとも１つの論理ユニットと、前記論理ユニットを制御する少なくとも１つのコントローラと、をそれぞれ含む複数のストレージノードと、
それぞれ異なる前記ストレージノードに含まれる複数の前記コントローラ間を、前記コントローラと前記ストレージシステムに接続されるホストコンピュータとの間のアクセスパスを介することなく接続するコントローラ間結合部と、を備え、
前記ストレージノードの前記コントローラは、
少なくとも１つのＣＰＵコアを含むＣＰＵと、
ネットワークを介してホストコンピュータから前記ストレージシステム内の複数の前記論理ユニットの内の１つを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記ＣＰＵと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記ＣＰＵ内の前記ＣＰＵコアと前記ストレージシステム内の複数の前記論理ユニットコントローラとの組み合わせのそれぞれと対応付けられた複数の第１の共用メモリ領域を有するメモリと、を含み、
前記複数のストレージノードの内の第１のストレージノードに含まれる前記ネットワークコントローラが、前記複数のストレージノードの内の第２のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときは、前記第１のストレージノード内の前記ＣＰＵコアは、受領されたコマンドに応じた処理を実行することによって、前記第２のストレージノードに含まれる論理ユニットに接続された前記論理ユニットコントローラに対するコマンドを、前記第１のストレージノード内の前記ＣＰＵコアと前記第２のストレージノード内の前記論理ユニットコントローラとの組み合わせに対応付けられた前記第１のストレージノード内の前記第１の共用メモリ領域に格納し、
前記第２のストレージノード内の前記論理ユニットコントローラは、前記第１のストレージノード内の前記第１の共用メモリ領域に格納されたコマンドを、前記コントローラ間結合部を介して取得し、取得したコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する。
【０００９】
このストレージシステムでは、複数のストレージノードの内の第１のストレージノードに含まれるネットワークコントローラが、複数のストレージノードの内の第２のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときは、第１のストレージノード内のＣＰＵコアが、受領されたコマンドに応じた処理を行うことによって、第２のストレージノード内の論理ユニットに接続された論理ユニットコントローラに対するコマンドを、自らと第２のストレージノード内の論理ユニットコントローラとの組み合わせに対応付けられた第１のストレージノード内の第１の共用メモリ領域に格納する。また、第２のストレージノード内の論理ユニットコントローラは、第１のストレージノード内の第１の共用メモリ領域に格納されたコマンドを、コントローラ間結合部を介して取得し、取得したコマンドに従って、論理ユニットにおけるデータの入出力を制御する。そのため、第１のストレージノード内のＣＰＵコアが、第２のストレージノードに含まれる論理ユニットを対象としたコマンドに応じた処理を行うことができる。従って、このストレージシステムでは、コマンドに応じた処理を実行する処理装置の切り替えの際に、論理ユニットに格納されたデータの移行等を行う必要が無く、切り替えを容易に実現することができる。
【００１０】
また、上記課題の少なくとも一部を解決するために、本発明の第２のストレージシステムは、
少なくとも１つのストレージノードを備え、
前記ストレージノードは、
データを格納する論理的な記憶領域である少なくとも１つの論理ユニットと、
複数のＣＰＵコアを含むＣＰＵと、
ネットワークを介してホストコンピュータから前記論理ユニットを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記ＣＰＵと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記ＣＰＵの複数のＣＰＵコアのそれぞれと対応付けられた複数の第１の共用メモリ領域と、前記ＣＰＵと前記ネットワークコントローラとで共用されるメモリ領域であって、前記ＣＰＵの複数のＣＰＵコアのそれぞれと対応付けられた複数の第２の共用メモリ領域と、を有するメモリと、を含み、
前記ネットワークコントローラは、ホストコンピュータから受領されたコマンドに応じた処理を行う前記ＣＰＵコアである担当ＣＰＵコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有すると共に、前記担当ＣＰＵコアに対応付けられた前記第２の共用メモリ領域に受領されたコマンドを格納し、
前記担当ＣＰＵコアは、前記第２の共用メモリ領域に格納されたコマンドに応じた処理を実行することによって、前記論理ユニットコントローラに対するコマンドを、前記担当ＣＰＵコアに対応付けられた前記第１の共用メモリ領域に格納し、
前記論理ユニットコントローラは、前記第１の共用メモリ領域に格納されたコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する。
【００１１】
このストレージシステムでは、ネットワークコントローラが、ホストコンピュータから受領したコマンドに応じた処理の担当ＣＰＵコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有していると共に、担当ＣＰＵコアに対応付けられた第２の共用メモリ領域に受領されたコマンドを格納する。担当ＣＰＵコアは、第２の共用メモリ領域に格納されたコマンドに応じた処理を行うことによって、論理ユニットコントローラに対するコマンドを、自らに対応付けられた第１の共用メモリ領域に格納する。論理ユニットコントローラは、第１の共用メモリ領域に格納されたコマンドに従って、論理ユニットにおけるデータの入出力を制御する。そのため、ネットワークコントローラにおいて担当ＣＰＵコアの設定を変更するだけで、変更後の担当ＣＰＵコアによる、自らに対応付けられた第１の共用メモリ領域および第２の共用メモリ領域を用いたコマンドに応じた処理が実行される。従って、このストレージシステムでは、コマンドに応じた処理を実行する処理装置の切り替えを容易に実現することができる。
【００１２】
なお、本発明は、種々の態様で実現することが可能であり、例えば、ストレージシステム、ストレージ装置、ストレージシステムまたはストレージ装置の制御方法、これらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを含むコンピュータプログラムセット、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【００１３】
本発明をコンピュータプログラムまたはそのコンピュータプログラムを記録した記録媒体等として構成する場合には、計算機システム全体の動作を制御するプログラムとして構成することも可能であるし、計算機や記憶サブシステム毎の動作を制御するプログラムとして構成することも可能である。
【発明を実施するための最良の形態】
【００１４】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。なお、以下に説明する実施形態は一例であってこれによって本発明が限定されるものではない。
Ａ．第１実施例：
Ａ−１．システムの構成：
Ａ−２．ホストコマンド実行処理：
Ａ−３．コントローラ内担当ＣＰＵコア切り替え：
Ａ−４．ストレージノード１００のコントローラ１１０内におけるアドレス空間およびメモリマップ：
Ａ−５．ストレージシステム１０００のアドレス空間およびメモリマップ：
Ａ−６．ノード間担当ＣＰＵコア切り替え：
Ａ−７．ホストコンピュータとストレージノードとの間のアクセスパス変更：
Ａ−８．管理画面の例：
Ａ−９．第１実施例の応用：
Ｂ．第２実施例：
Ｃ．変形例：
【００１５】
Ａ．第１実施例：
Ａ−１．システムの構成：
図１は、本発明の第１実施例におけるデータ処理システムの構成を概略的に示す説明図である。第１実施例のデータ処理システム１０は、ホストコンピュータ（以下「Ｈｏｓｔ」とも称する）２００と、ホストコンピュータ２００に接続されたストレージシステム１０００と、を備えている。図１の例では、データ処理システム１０は３つのホストコンピュータ２００（２００ａ、２００ｂ、２００ｃ）を備えているが、データ処理システム１０は少なくとも１つのホストコンピュータ２００を備えていればよい。
【００１６】
なお本実施例のデータ処理システム１０では、ホストコンピュータ２００とストレージノード１００とを接続するネットワークとしてＩＰネットワークを想定しており、同様に、ネットワークプロトコルとしてＴＣＰ／ＩＰプロトコルを、ホストコンピュータ２００とストレージノード１００との間のデータプロトコルとしてブロック型Ｉ／ＯインタフェースであるｉＳＣＳＩプロトコルを用いるものと想定しているが、本発明はこれらに限られるものではない。
【００１７】
また、本明細書および図面では、データ処理システム１０内に同じ構成要素が複数ある場合には、それらの構成要素の名前および符号の末尾に、それぞれを区別するための識別子として小文字のアルファベット（ａ、ｂ、ｃ・・・）を付加している。例えば、図１に示すように、３台のホストコンピュータ２００は、それぞれ「ホストコンピュータａ（Ｈｏｓｔ  ａ）」、「ホストコンピュータｂ（Ｈｏｓｔ  ｂ）」、「ホストコンピュータｃ（Ｈｏｓｔ  ｃ）」と表され、その符号はそれぞれ「２００ａ」、「２００ｂ」、「２００ｃ」と表される。ただし、個々の構成要素を特に区別する必要のないときは、付加した識別子を省略する場合もある。
【００１８】
ストレージシステム１０００（図１）は、ストレージノード（以下「ＳＮ」とも称する）１００と、スイッチ３００と、管理装置４００と、ネームサーバ５００と、を含んでいる。なお、ネームサーバ５００は、本実施形態で説明するＴａｒｇｅｔネーム引継ぎによるアクセスパスの切替を行う際に存在していることが必要であるが、後述する別の方法によりアクセスパスの切替を行う場合には必要ではない。
【００１９】
ストレージノード１００は、ホストコンピュータ２００からアクセスされる論理的な記憶領域である論理ユニット（以下「ＬＵ」とも称する）１９０と、論理ユニット１９０を制御してホストコンピュータ２００からのアクセス要求を実行するコントローラ（以下「ＣＴＬ」とも称する）１１０と、を含んでいる。なお、本明細書および図面では、１つのストレージノード１００内の論理ユニット１９０を個々に区別するため、論理ユニット１９０の名前および符号に連続番号（０以上の整数）を付加している。
【００２０】
本実施例のストレージシステム１０００は、このように論理ユニット１９０およびコントローラ１１０を備えるストレージノード１００を１つ以上含むように構成されたシステムである。ストレージシステム１０００では、要求容量や要求性能に応じて、ストレージノード１００の増減設を行うことが可能である。以下では、図１に示すように、ストレージシステム１０００に３つのストレージノード１００が含まれている例を用いて説明を行う。
【００２１】
ストレージノード１００のコントローラ１１０は、ストレージシステム１０００内の他のストレージノード１００のコントローラ１１０と、ノード間コントローラ結合部１０２を介して接続されている。このノード間コントローラ結合部１０２は、スイッチ３００を介することなく、すなわち、ホストコンピュータ２００とコントローラ１１０との間のアクセスパスを介することなく、コントローラ１１０同士を接続している。なお、ノード間コントローラ結合部１０２の詳細構成については、後述する。
【００２２】
スイッチ３００は、ストレージノード１００のコントローラ１１０と、管理装置４００と、ネームサーバ５００と、ホストコンピュータ２００と、を互いに接続している。管理装置４００は、ストレージシステム１０００の管理を行う装置である。ネームサーバ５００は、ストレージノード１００およびホストコンピュータ２００の名前（ネーム）管理および論理的接続関係を管理するための装置である。
【００２３】
なお、図１の例では、スイッチ３００と管理装置４００とネームサーバ５００とは、ストレージシステム１０００内に含まれているが、スイッチ３００と管理装置４００とネームサーバ５００とが、ストレージシステム１０００内に含まれず、ストレージシステム１０００とは独立した構成要素であるとしてもよい。また、図１の例では、管理装置４００がスイッチ３００を介したネットワーク経由で各コントローラ１１０と通信する「ＩｎＢａｎｄ型」の通信形態を想定しているが、各コントローラ１１０に管理のために専用に設けられた管理ネットワーク（図示せず）に接続するための管理インタフェースが設けられ、管理装置４００が管理ネットワークを介して各コントローラ１１０の管理インタフェースに接続して通信する「Ｏｕｔ  ｏｆ  Ｂａｎｄ型」の通信形態をとることも可能である。
【００２４】
ホストコンピュータ２００は、ＣＰＵ、メモリ、及びネットワークコントローラ（いずれも図示せず）を有する計算機であり、メモリ内にイニシエータ管理テーブル２１０を有している。イニシエータ管理テーブル２１０については後述する。
【００２５】
図２は、ストレージノード１００（図１）のハードウェア構成の一例を示す説明図である。図２に示すように、ストレージノード１００は、コントローラ（ＣＴＬ）１１０と、ファイバチャネル（以下「ＦＣ」とも称する）１９２を介してコントローラ１１０に接続された複数のディスク１９４と、を含んでいる。なお、ディスク種としてはＦＣ以外にもＳＡＴＡ、ＳＡＳ、パラレルＳＣＳＩ等も採用することができ、この場合、インタフェースとしてもそれぞれ対応するものを採用することによって同様に実施可能である。
【００２６】
コントローラ１１０は、複数のディスク１９４に対する入出力を制御する装置であり、ストレージノード１００全体を制御するＣＰＵ１２０と、スイッチ３００（図１）に接続するためのネットワークコントローラ（以下「ＮＷＣ」とも称する）１３０と、ブリッジ１４０と、ファイバチャネル１９２を制御するＦＣコントローラ（以下「ＦＣＣ」とも称する）１５０と、メモリ１６０と、を含んでいる。メモリ１６０は、ＣＰＵ１２０が実行する制御プログラムや制御データを格納すると共に、ディスクアクセスの高速化のためのキャッシュとしても使用される。ブリッジ１４０は、ＣＰＵ１２０およびメモリ１６０間のデータ若しくはプログラムの転送と、ネットワークコントローラ１３０およびメモリ１６０間のデータ転送と、ＦＣコントローラ１５０およびメモリ１６０間のデータ転送と、を制御する。なお、図１に示したように、ストレージノード１００内のコントローラ１１０は他のストレージノード１００内のコントローラ１１０とノード間コントローラ結合部１０２を介して接続されているが、この接続の構成については図３に示すものとし、図２では図示を省略している。ＦＣコントローラ１５０は、本発明における論理ユニットコントローラに相当する。なお、コントローラ１１０が、制御プログラムや制御データを格納するためのメモリとキャッシュとして使用されるメモリとを別々のメモリとして含んでいるとしてもよい。
【００２７】
図３は、ノード間コントローラ結合部１０２（図１）の構成を示す説明図である。図３に示すように、各ストレージノード１００内のコントローラ１１０に含まれるブリッジ１４０は、スイッチ１４２（以下「ＳＷ」とも称する）を有している。各ストレージノード１００のコントローラ１１０（ＣＴＬａ、ＣＴＬｂ、ＣＴＬｃ）は、スイッチ１４２間を接続する接続線１０４（以下「ノード間コントローラ接続線１０４」と呼ぶ）によって、互いに接続されている。ノード間コントローラ結合部１０２は、各コントローラ１１０内のスイッチ１４２と、ノード間コントローラ接続線１０４と、から構成されている。
【００２８】
なお、図３の例では、ノード間コントローラ接続線１０４のそれぞれは、２本の線の組によって構成されている。このようにすれば、ノード間コントローラ接続線１０４の１本が障害により不通になっても他の１本が使用できるため、信頼性を向上させることができる。また、２本の線の内の１本を上り専用に、他の１本を下り専用に用いることによって、それぞれの使用帯域を分割することができ、これによってノード間コントローラ接続線１０４における通信性能を向上させることもできる。なお、ノード間コントローラ接続線１０４のそれぞれを、１本の線によって構成することも可能である。また、図３に破線で示した接続線は、ストレージノード１００を将来増設した際に設けるノード間コントローラ接続線である。
【００２９】
図４は、ストレージノード１００に含まれる論理ユニット１９０（図１）の構成の一例を示す説明図である。図４（ａ）には、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）グループ（以下「ＲＧ」とも称する）の構成の一例を示している。図４（ａ）に示した例では、ストレージノード１００に含まれる３つのディスク１９４（図２）によってＲＡＩＤ５型のＲＡＩＤグループ（ＲＧ）が構成されており、そのストライプサイズはＳブロックとなっている。ここで「ブロック」とは、ＳＣＳＩプロトコル仕様で定義された論理ブロックを意味している。一般に、５１２バイトのディスクセクタが1つの論理ブロックとして定義されることが多い。なお、ＲＡＩＤのレベルやブロックサイズは任意に設定可能である。また、ＲＡＩＤグループを構成するために用いるディスク１９４の数は、２台以上であれば何台であってもよい。
【００３０】
図４（ａ）に示したＲＡＩＤグループにおいては、ＲＡＩＤ５型の構成の例であり、一連のデータはＳブロック毎に分割され、分割後のデータ（図４（ａ）において「Ｄｉ」（ｉは０以上の整数）と表す）は３つのディスク１９４に分散配置される。また、各々異なるディスク１９４内に存在する３つの記憶領域からストライプ列が構成され、ストライプ列中の２つの記憶領域にはデータが格納され、残りの１つの記憶領域には、他の２つの記憶領域に格納されたデータから排他的論理和を計算することにより生成されたパリティデータ（図４（ａ）において「Ｐｊ」（ｊは０以上の整数）と表す）が格納される。
【００３１】
図４（ｂ）には、論理ユニット１９０の構成例を示している。上述のように構成されたＲＡＩＤグループには、図４（ｂ）に示すように、２つの論理ユニット１９０（ＬＵ０、ＬＵ１）が構成されている。ＬＵ０は容量ｋブロックの論理ユニット１９０であり、ＬＵ１は容量ｎブロックの論理ユニット１９０である。ＲＡＩＤグループ内での論理ブロックアドレス（以下「ＬＢＡ」とも称する）は、図４（ｂ）に示すように、論理ユニットＬＵ０が０からｋ−１までであり、論理ユニットＬＵ１がｋから（ｋ＋ｎ−１）までとなっている。なお、ひとたび論理ユニット１９０が構築されると、各論理ユニット１９０は、ホストコンピュータ２００（図１）からは論理ユニット１９０毎にローカルなＬＢＡ（以下「Ｌｏｃａｌ  ＬＢＡ」とも称する）を用いてアクセスされ、それぞれの論理ユニット１９０はあたかも独立したディスクのように振る舞うことができる。すなわち論理ユニットＬＵ０のＬｏｃａｌ  ＬＢＡは、０から始まってｋ−１が最終アドレスとなり、論理ユニットＬＵ１のＬｏｃａｌ  ＬＢＡは、同じく０から始まってｎ−１が最終アドレスとなる。
【００３２】
図５は、ストレージノード１００のコントローラ１１０に含まれるＣＰＵ１２０（図２）の構成の一例を示す説明図である。本実施例のＣＰＵ１２０は、２つのコア１２２を含んでいる。すなわち、本実施例のＣＰＵ１２０は、マルチコアＣＰＵである。ここで、コア１２２は、ＣＰＵ１２０において、実際に演算などの処理を行う部分である。図１に示すように、本実施例のストレージシステム１０００は、３つのストレージノード１００を備えており、各ストレージノード１００のコントローラ１１０内のＣＰＵ１２０は、それぞれ２つのコア１２２を含んでいるため、ストレージシステム１０００内には、合計６つのコア１２２が存在することとなる。なお、本明細書および図面では、１つのＣＰＵ１２０に含まれる２つのコア１２２を区別するために、一方のコア１２２の名前および符号の末尾に識別子「ｐ」を付加し、他方のコア１２２の名前および符号の末尾に識別子「ｑ」を付加している。
【００３３】
図６は、ストレージノード１００のコントローラ１１０に含まれるＦＣコントローラ１５０（図２）の構成の一例を示す説明図である。本実施例のＦＣコントローラ１５０は、複数のＦＣＣドアベル１５４を有するドアベルレジスタ１５２と、ＣＰＵ対応器１５６と、複数の割り込み線（以下「ＩＮＴＦ」とも称する）１５８と、を含んでいる。
【００３４】
ＦＣＣドアベル１５４は、ＣＰＵ１２０のコア１２２（図５）とＦＣコントローラ１５０との間の通信のために準備された領域である。ＦＣコントローラ１５０には、ストレージシステム１０００（図１）内に存在する複数のコア１２２のそれぞれに対応付けられたＦＣＣドアベル１５４が準備される。複数のコア１２２とＦＣＣドアベル１５４との対応は、ＣＰＵ対応器１５６によって設定される。なお、必ずしも、コア１２２とＦＣＣドアベル１５４との対応をＣＰＵ対応器１５６によって設定する必要は無く、ストレージシステム１０００内に存在しうるコア１２２の数分のＦＣＣドアベル１５４をＦＣコントローラ１５０に準備し、コア１２２とＦＣＣドアベル１５４との対応を固定的に設定してもよい。また、本明細書および図面では、個々のＦＣＣドアベル１５４を区別するために、ＦＣＣドアベル１５４の名前の末尾に括弧付きの連番（０以上の整数）を付加している。ＦＣＣドアベル１５４は、本発明における第１の通信領域に相当する。
【００３５】
割り込み線１５８は、ＦＣコントローラ１５０からＣＰＵ１２０のコア１２２（図５）に割り込み要求を発行するために準備されている。ＦＣコントローラ１５０には、ストレージシステム１０００（図１）内の複数のコア１２２のそれぞれに対応付けられた割り込み線１５８が準備される。本明細書および図面では、個々の割り込み線１５８を区別するために、割り込み線１５８の名前の末尾に括弧付きの連番（０以上の整数）を付加している。
【００３６】
図７は、ストレージノード１００のコントローラ１１０に含まれるネットワークコントローラ１３０（図２）の構成の一例を示す説明図である。本実施例のネットワークコントローラ１３０は、複数のＮＷＣドアベル１３４を有するドアベルレジスタ１３２と、複数の割り込み線（以下「ＩＮＴＮ」とも称する）１３８と、を含んでいる。
【００３７】
ＮＷＣドアベル１３４は、ＣＰＵ１２０のコア１２２（図５）とネットワークコントローラ１３０との間の通信のために準備された領域である。ネットワークコントローラ１３０には、コントローラ１１０内のＣＰＵ１２０に含まれる２つのコア１２２のそれぞれに対応付けられたＮＷＣドアベル１３４が準備される。また、割り込み線１３８は、ネットワークコントローラ１３０からＣＰＵ１２０のコア１２２（図５）に割り込み要求を発行するために準備されている。ネットワークコントローラ１３０には、コントローラ１１０内のＣＰＵ１２０に含まれる２つのコア１２２のそれぞれに対応付けられた割り込み線１３８が準備される。本明細書および図面では、個々のＮＷＣドアベル１３４および割り込み線１３８を区別するために、ＮＷＣドアベル１３４および割り込み線１３８の名前の末尾に括弧付きの連番（０以上の整数）を付加している。ＮＷＣドアベル１３４は、本発明における第２の通信領域に相当する。
【００３８】
図８は、ストレージノード１００のコントローラ１１０に含まれるメモリ１６０（図２）の構成の一例を示す説明図である。メモリ１６０は、キャッシュ領域１６２と、制御データ領域１６４と、制御プログラム領域１６６と、を含んでいる。
【００３９】
キャッシュ領域１６２は、ホストコンピュータ２００（図１）からのディスクアクセス高速化のためにディスク１９４（図２）に格納されるべきデータやディスク１９４から読み出されたデータのコピーを一時的に保管するディスクキャッシュ（以下単に「キャッシュ」とも称する）を構成する領域である。
【００４０】
制御データ領域１６４は、ＣＰＵ１２０（図２）が制御プログラムを実行する際に参照する各種データ等を格納する領域である。制御データ領域１６４には、ストレージシステム１０００（図１）の構成情報が登録されているシステム構成管理テーブル１７１と、ストレージノード１００が有する論理ユニット１９０（図１）の構成情報が登録されているＬＵ管理テーブル１７２と、論理ユニット１９０に設けられた論理的アドレスであるターゲットネーム（以下「Ｔａｒｇｅｔ」若しくは「ターゲット」とも称する）が登録されているターゲット管理テーブル１７３と、論理ユニット１９０にアクセスするアクセス元の論理アドレスであるイニシエータネーム（以下「Ｉｎｉｔｉａｔｏｒ」若しくは「イニシエータ」とも称する）が登録されているイニシエータ管理テーブル１７４と、が格納されている。
【００４１】
なお、ターゲットネーム若しくはイニシエータネームとしては、例えばｉＳＣＳＩプロトコルを用いるシステムにおけるｉＳＣＳＩネーム、ＦＣシステムにおけるＷＷＮ（Ｗｏｒｌｄ  Ｗｏｄｅ  Ｎａｍｅ）等が該当する。しかしターゲットネームはアクセス先に割り振られたグローバルに一意であり作成されてから削除されるまで変化しない識別子であればこれらに限られることはなく、同様にイニシエータネームもアクセス元に割り振られたグローバルに一意であり作成されてから削除されるまで変化しない識別子であればこれらに限られることはない。なお、アクセス先若しくはアクセス元を識別する情報としてターゲットアドレス若しくはイニシエータアドレスが用いられる場合もある。ターゲットアドレスとしてはＦＣプロトコルを用いるシステムにおけるＤｅｓｔｉｎａｔｉｏｎ  ＩＤ等があり、イニシエータアドレスとしてはＦＣプロトコルを用いるシステムにおけるＳｏｕｒｃｅ  ＩＤ等があるが、勿論これらに限られることはない。ターゲットネーム及びターゲットアドレスは共にアクセス先を識別する識別情報であることに変わりはなく、イニシエータネーム及びイニシエータアドレスは共にアクセス元を識別する識別情報であることに代わりはないので、ターゲットネームの代わりにターゲットアドレスを用いたり、イニシエータネームの代わりにイニシエータアドレスを用いたりすることも可能である。なお、以下ターゲットネームとターゲットアドレスを区別することなく、便宜上、「ターゲットネーム」と呼ぶこととする。またイニシエータに関しても同様である。
【００４２】
制御データ領域１６４（図８）には、また、複数のＮＷＣメールボックス１７６と、複数のＦＣＣメールボックス１７８と、が格納されている。ここで、ＮＷＣメールボックス（以下「ＮＷＣ  ＭＢ」とも称する）１７６は、ＣＰＵ１２０のコア１２２（図５）とネットワークコントローラ１３０（図２）との共有メモリ領域としての機能を有している。メモリ１６０の制御データ領域１６４には、コントローラ１１０内のＣＰＵ１２０に含まれる２つのコア１２２のそれぞれに対応付けられたＮＷＣメールボックス１７６が準備される。各ＮＷＣメールボックス１７６は、図８に示すように、後述するコマンドを格納するコマンド格納領域と、後述するステータスを格納するステータス格納領域と、を含んでいる。なお、本明細書および図面では、個々のＮＷＣメールボックス１７６を区別するために、ＮＷＣメールボックス１７６の名前の末尾に括弧付きの連番（０以上の整数）を付加している。ＮＷＣメールボックス１７６は、本発明における第２の共用メモリ領域に相当する。
【００４３】
また、ＦＣＣメールボックス１７８（以下「ＦＣＣ  ＭＢ」とも称する）は、ＣＰＵ１２０のコア１２２（図５）とＦＣコントローラ１５０（図２）との共有メモリ領域としての機能を有している。メモリ１６０の制御データ領域１６４には、当該メモリ１６０が含まれるコントローラ１１０内のコア１２２とストレージシステム１０００（図１）内の複数のＦＣコントローラ１５０との組み合わせのそれぞれに対応付けられたＦＣＣメールボックス１７８が準備される。すなわち、ストレージノード１００のコントローラ１１０には、自ストレージノード１００内のＦＣコントローラ１５０に限らず、他ストレージノード１００内のＦＣコントローラ１５０と対応付けられたＦＣＣメールボックス１７８が含まれている。各ＦＣＣメールボックス１７８は、図８に示すように、後述するコマンドを格納するコマンド格納領域と、後述するステータスを格納するステータス格納領域と、を含んでいる。なお、本明細書および図面では、個々のＦＣＣメールボックス１７８を区別するために、ＦＣＣメールボックス１７８の名前の末尾に括弧付きの連番（０以上の整数）を付加している。ＦＣＣメールボックス１７８は、本発明における第１の共用メモリ領域に相当する。
【００４４】
制御プログラム領域１６６は、ＣＰＵ１２０（図２）が実行する制御プログラムを格納する領域である。制御プログラム領域１６６には、制御プログラムを実行するための環境となる基本プログラムであるオペレーティングシステムプログラム１８０と、ＴＣＰ／ＩＰプロトコルを用いてスイッチ３００（図１）を介したデータの送受信を実行するＴＣＰ／ＩＰプログラム１８１と、ホストコンピュータ２００とストレージノード１００（図１）との間をｉＳＣＳＩプロトコルで接続するためのｉＳＣＳＩ制御プログラム１８２と、イニシエータであるホストコンピュータ２００からｉＳＣＳＩのターゲットである論理ユニット１９０（図１）へのアクセスを受領する際に、ホストコンピュータ２００からのコマンドの受領や受領したコマンドの解釈等のターゲット処理を制御するターゲット制御プログラム１８３と、ストレージノード１００が備える複数のディスク１９４（図２）から構成されるＲＡＩＤを制御するためのＲＡＩＤ制御プログラム１８４と、キャッシュ領域１６２に構成されるディスクキャッシュを管理し制御するためのキャッシュ制御プログラム１８５と、単体のディスク１９４に対するコマンド生成等のディスク制御処理を行うディスク制御プログラム１８６と、ＦＣコントローラ１５０（図２）を制御しファイバチャネル１９２経由でディスク１９４とコマンドやデータ等の送受信を行うＦＣ制御プログラム１８７と、複数のディスク１９４からＲＡＩＤを構成し、そこから論理的記憶領域である論理ユニット１９０を構成するＬＵ制御プログラム１８８と、ｉＳＣＳＩプロトコル仕様に基づきネームサーバ５００との間でネーム管理のための通信を行う通信プログラム１８９と、が格納されている。
【００４５】
なお上述したように、本実施例のデータ処理システム１０では、ホストコンピュータ２００とストレージノード１００とを接続するネットワークとしてＩＰネットワークを想定しており、同様に、ネットワークプロトコルとしてＴＣＰ／ＩＰプロトコルを、ホストコンピュータ２００とストレージノード１００との間のデータプロトコルとしてブロック型Ｉ／ＯインタフェースであるｉＳＣＳＩプロトコルを用いるものと想定しているが、本発明はこれらに限られるものではない。データ処理システム１０において、他のプロトコルが用いられる場合には、ストレージノード１００内のメモリ１６０の制御プログラム領域１６６には、用いられるプロトコルに応じた所定のプログラムが格納される。
【００４６】
図９は、ＬＵ管理テーブル１７２（図８）の一例を示す説明図である。図９には、ストレージノード１００ａ（図１）のメモリ１６０上の制御データ領域１６４（図８）に格納されているＬＵ管理テーブル１７２の内容を示している。ストレージノード１００の有するＬＵ管理テーブル１７２には、当該ストレージノード１００に含まれる論理ユニット１９０の情報が記載されている。
【００４７】
ＬＵ管理テーブル１７２において、「ＬＵ」欄は論理ユニット１９０（図１）の番号を示している。同様に、「ＲＧ」欄は論理ユニット１９０が構築されているＲＡＩＤグループ（ＲＧ）の識別情報を、「Ｓｔａｒｔ  ＲＧ  ＬＢＡ」欄は論理ユニット１９０が構築されているＲＧ内における論理ユニット１９０の先頭ＲＧ  ＬＢＡ（図４）を、「ＬＥＮ」欄は論理ユニット１９０の容量（単位はブロック）を、それぞれ示している。また、「Ｉｎｉｔｉａｔｏｒ」欄は論理ユニット１９０へのアクセスが許可されているイニシエータ（例えばホストコンピュータ２００に設定されているイニシエータ）のイニシエータネームを示しており、「Ｔａｒｇｅｔ」欄は論理ユニット１９０に割り当てられているターゲットネームを示している。
【００４８】
ＬＵ管理テーブル１７２によって、例えば、ストレージノード１００ａに含まれる論理ユニット１９０「ＬＵａ０」（図１）は、ＲＡＩＤグループ「ＲＧａ０」に存在し、先頭ＲＧ  ＬＢＡが０であり、容量がｋブロックであり、アクセスを許可されたイニシエータが「Ｉｎｉｔ−ａ０」のネームを持つイニシエータ（例えばホストコンピュータ２００ａ（図１））であり、ターゲットネームが「Ｔａｒｇ−ａ０」であることがわかる。なお、データ処理システム１０内の他のＬＵ管理テーブル１７２の内容も図９に示した内容と同様である。
【００４９】
ここで、１つの論理ユニット１９０には１つのターゲットが割り当てられる。一方、１つのターゲットに対して複数のイニシエータがアクセスを許可される場合がある。ＬＵ管理テーブル１７２の「Ｉｎｉｔｉａｔｏｒ」欄にイニシエータネームが登録されると、ターゲット制御プログラム１８３（図８）が、登録されたイニシエータネームを有するイニシエータ以外からの論理ユニット１９０へのアクセスを抑止する。1つの論理ユニット１９０に対して複数のイニシエータからのアクセスを許可する場合には、ＬＵ管理テーブル１７２の「Ｉｎｉｔｉａｔｏｒ」欄に複数のエントリが作成され、複数のイニシエータネームが登録される。なお、論理ユニット１９０に対してアクセス制限をかけない場合、すなわち全てのイニシエータに対して論理ユニット１９０へのアクセスを許可する場合には、この論理ユニット１９０に対応する「Ｉｎｉｔｉａｔｏｒ」欄にはネームを登録しない（ＮＵＬＬとする）。
【００５０】
なお、管理装置４００は、ストレージシステム１０００（図１）内のすべてのストレージノード１００が有するＬＵ管理テーブル１７２を統合したＬＵ管理テーブルを有しているものとする。
【００５１】
図１０は、ターゲット管理テーブル１７３（図８）の一例を示す説明図である。図１０には、ストレージノード１００ａ（図１）のメモリ１６０上の制御データ領域１６４（図８）に格納されているターゲット管理テーブル１７３の一部（論理ユニット１９０ａ０（図１）に関する部分）を示している。ストレージノード１００の有するターゲット管理テーブル１７３には、当該ストレージノード１００に含まれる論理ユニット１９０に設定されたターゲットの情報が記載されている。
【００５２】
ターゲット管理テーブル１７３において、「Ｔａｒｇｅｔ」欄は同テーブルのエントリが管理するターゲットのネームを示している。同様に、「Ｉｎｉｔｉａｔｏｒ」欄は同ターゲットへのアクセスが許可されているイニシエータのネームを、「Ｅｎｔｉｔｙ」欄はターゲットを持つ装置の実体を特定する識別子を、「Ｐｏｒｔａｌ」欄は同ターゲットが存在するポータルを、「Ｐｏｒｔａｌ  Ｇｒ」欄は同ポータルが属するポータルグループを、それぞれ示している。
【００５３】
ここでポータルとは、ストレージノード１００のネットワークコントローラ１３０（図２）もしくはホストコンピュータ２００のネットワークコントローラ（図示せず）が備える、物理ポートのＩＰアドレスとＴＣＰポート番号の対で構築された、論理的なポートを意味している。同一の物理ポートに複数のＴＣＰポートをそなえれば複数のポータルを備えることができる。ポータルグループは複数のポータルを１つの集合体として単一の通信路として使用するためのグループのことである。以下本明細書ではポータルグループについてはグループ名以上のことについては言及しない。
【００５４】
ターゲット管理テーブル１７３によって、例えば、ターゲット「Ｔａｒｇ−ａ０」は、ストレージノード１００ａ（ＳＮａ）のポータルＴａ０に存在し、ポータルグループＴＰＧａ０に属し、イニシエータ「Ｉｎｉｔ−ａ０」にアクセスを許可していることがわかる。なお、データ処理システム１０内の他のターゲット管理テーブルの内容も図１０に示した内容と同様である。
【００５５】
図１１は、イニシエータ管理テーブル２１０（図１）の一例を示す説明図である。図１１には、ホストコンピュータ２００ａ（図１）の有するイニシエータ管理テーブル２１０ａの内容を示している。
【００５６】
イニシエータ管理テーブル２１０において、「Ｉｎｉｔｉａｔｏｒ」欄は同テーブルのエントリが管理するイニシエータのネームを示している。同様に、「Ｅｎｔｉｔｙ」欄はイニシエータを持つ装置の実体を特定する識別子を、「Ｐｏｒｔａｌ」欄は同イニシエータが存在するポータルを、「Ｐｏｒｔａｌ  Ｇｒ」欄は同ポータルが属するポータルグループを、それぞれ示している。
【００５７】
イニシエータ管理テーブル２１０によって、例えば、イニシエータ「Ｉｎｉｔ−ａ０」は、ホストコンピュータ２００ａのポータルＩａ０に存在し、ポータルグループＩＰＧａ０に属していることがわかる。なお、データ処理システム１０内の他のイニシエータ管理テーブルの内容も図１１に示した内容と同様である。
【００５８】
図１２は、ネームサーバ５００（図１）の構成の一例を示す説明図である。ネームサーバ５００は、ネームサーバ５００の全体を制御するＣＰＵ５２０と、スイッチ３００に接続するためのネットワークコントローラ５３０と、ブリッジ５４０と、メモリ５６０と、を含んでいる。ブリッジ５４０は、ＣＰＵ５２０およびメモリ５６０間のデータおよびプログラムの転送や、ネットワークコントローラ５３０およびメモリ５６０間のデータ転送を制御する。メモリ５６０は、ＣＰＵ５２０が実行する制御プログラムおよび制御データを格納する。メモリ５６０は、制御データ領域５６２と、制御プログラム領域５６４と、を有している。
【００５９】
メモリ５６０の制御データ領域５６２は、ＣＰＵ５２０が制御プログラムを実行する際に参照する各種データ等を格納する領域である。制御データ領域５６２には、ｉＳＣＳＩにおけるイニシエータおよびターゲットの名前、及びイニシエータとターゲット間の接続関係が登録されるネーム管理テーブル５７１が格納されている。ネーム管理テーブル５７１には、データ処理システム１０内に存在するターゲット管理テーブル（図１０）およびイニシエータ管理テーブル（図１１）が含まれている。すなわち、ネームサーバ５００は、データ処理システム１０内のイニシエータのイニシエータ管理テーブルと、ターゲットのターゲット管理テーブルとを、ネーム管理テーブル５７１を用いて一元管理すると共に、イニシエータとターゲットとの組を管理している。なお、ネームサーバ５００が保有するネーム管理テーブル５７１と同様のテーブルは、管理装置４００にも格納されている。
【００６０】
制御プログラム領域５６４（図１２）は、ＣＰＵ５２０が実行する制御プログラムを格納する領域である。制御プログラム領域５６４には、制御プログラムを実行するための環境となる基本プログラムであるオペレーティングシステムプログラム５８０と、ＴＣＰ／ＩＰプロトコルを用いてスイッチ３００を介したデータの送受信を実行するＴＣＰ／ＩＰプログラム５８１と、スイッチ３００に接続するｉＳＣＳＩノード（ホストコンピュータ２００およびストレージノード１００）のネームを管理すると共にイニシエータとｉＳＣＳＩノード間の対応関係を制御するネーム管理プログラム５８２と、ｉＳＣＳＩプロトコル仕様に基づき各イニシエータ（例えばホストコンピュータ２００）およびターゲット（例えばストレージノード１００）のネーム管理のための通信を行う通信プログラム５８３と、が格納されている。
【００６１】
なお本実施例では、ネームサーバ５００としてｉＳＣＳＩプロトコル仕様のｉＳＮＳ（ｉＳＣＳＩ  Ｎａｍｅ  Ｓｅｒｖｅｒ）を想定しているが、本発明の実施に際してはｉＳＮＳ以外のネームサーバ仕様を用いてネームサーバを構築しても構わない。
【００６２】
図１３は、ストレージシステム１０００の製品形態の一例を示す説明図である。図１３の例は、いわゆるラックマウント型の例である。１９インチラック１１００の最下段に、スイッチ３００が設置され、その上段に３つのストレージノード１００が、ストレージノード１００ａ、ストレージノード１００ｂ、ストレージノード１００ｃの順に設置される。各ストレージノード１００は、コントローラ筐体１２００と、ディスク筐体１３００とから構成される。コントローラ筐体１２００にはコントローラ１１０が装填され、ディスク筐体１３００にはディスク１９４が装填される。なお、図１３のディスク筐体１３００における破線で囲まれたスペースは、ディスク１９４が未装填であるスペースを示している。ストレージノード１００ｃの上段には、ストレージノードを増設するためのスペース、すなわち、コントローラ筐体１２００もしくはディスク筐体１３００が搭載されていないスペース（ハッチングを付して示す）が設けられ、さらに上段には、ネームサーバ５００と管理装置４００とが設置される。
【００６３】
図１４は、ストレージシステム１０００の製品形態の他の一例を示す説明図である。図１４の例は、いわゆるブレード型の例である。１９インチラック１１００の最下段に、スイッチ３００が設置される。その上段に、すべてのストレージノード１００が共用するコントローラ筐体１２００が設置され、コントローラ筐体１２００内にストレージシステム１０００内のすべてのコントローラ１１０が装填される。なお、図１４のコントローラ筐体１２００における破線で囲まれたスペースは、コントローラ１１０を増設するためのスペースを示している。コントローラ筐体１２００の上段には、３つのストレージノード１００のディスク筐体１３００が、ストレージノード１００ａ用（１３００ａ）、ストレージノード１００ｂ用（１３００ｂ）、ストレージノード１００ｃ用（１３００ｃ）の順に設置され、各ディスク筐体１３００内にディスク１９４が装填される。なお、図１４のディスク筐体１３００における破線で囲まれたスペースは、ディスク１９４が未装填であるスペースを示している。ストレージノード１００ｃ用のディスク筐体１３００ｃの上段には、ディスク筐体１３００を増設するためのスペース、すなわち、ディスク筐体１３００が搭載されていないスペース（ハッチングを付して示す）が設けられ、さらに上段には、ネームサーバ５００と、管理装置４００とが設置される。
【００６４】
Ａ−２．ホストコマンド実行処理：
図１５および図１６は、ストレージシステム１０００のストレージノード１００（図１）におけるホストコマンド実行処理の流れを示すフローチャートである。また、図１７および図１８は、ストレージノード１００におけるホストコマンド実行処理の概要を示す説明図である。ホストコマンド実行処理は、ホストコンピュータ２００（図１）からホストコマンドを受領したストレージノード１００が、ホストコマンドに従って実行する処理である。ここで、ホストコマンドとは、イニシエータ（図１１参照）を有するホストコンピュータ２００から、ターゲット（図１０参照）を有するストレージノード１００の論理ユニット１９０を対象として発行されるコマンドである。ホストコマンドには、論理ユニット１９０に格納されたデータの読み出しを行うためのリードコマンドや、論理ユニット１９０にデータの書き込みを行うためのライトコマンドがある。
【００６５】
以下では、論理ユニット１９０ａ０（ＬＵ  ａ０）（図１）を対象としたホストコマンドが、ホストコンピュータ２００ａ（図１）から、ストレージノード１００ａに対して発行された場合のホストコマンド実行処理を例に用いて説明する。なお、図１５および図１６では、図の左側にネットワークコントローラ（ＮＷＣ）１３０の処理を示しており、また、図の右側にＦＣコントローラ（ＦＣＣ）１５０の処理を、図の中央にＣＰＵ１２０の処理を、それぞれ示している。また、図１７および図１８には、ストレージノード１００ａ（図１）の内部構成を、一部省略して示している。
【００６６】
ここで、ストレージノード１００ａ（図１７および図１８）において、複数のＮＷＣメールボックス（ＮＷＣ  ＭＢ）１７６の内、ＮＷＣメールボックス（０）は、コントローラ１１０ａ（ＣＴＬ  ａ）内のＣＰＵ１２０のコア１２２ｐ（コアｐ）に対応付けられており、ＮＷＣメールボックス（１）はコア１２２ｑ（コアｑ）に対応付けられているものとする。同様に、複数のＮＷＣドアベル１３４の内、ＮＷＣドアベル（０）はコア１２２ｐに対応付けられており、ＮＷＣドアベル（１）はコア１２２ｑに対応付けられている。
【００６７】
また、ストレージノード１００ａ（図１７および図１８）において、複数のＦＣＣメールボックス（ＦＣＣ  ＭＢ）１７８の内、ＦＣＣメールボックス（０）は、コントローラ１１０ａ（ＣＴＬ  ａ）内のＣＰＵ１２０のコア１２２ｐとコントローラ１１０ａ内のＦＣコントローラ１５０との組み合わせに対応付けられており、ＦＣＣメールボックス（１）は、コントローラ１１０ａ内のコア１２２ｑとコントローラ１１０ａ内のＦＣコントローラ１５０との組み合わせに対応付けられている。また、複数のＦＣＣドアベル１５４の内、ＦＣＣドアベル（０）は、コントローラ１１０ａのコア１２２ｐに対応付けられており、ＦＣＣドアベル（１）は、コントローラ１１０ａのコア１２２ｑに対応付けられている。
【００６８】
以下、コマンド処理の流れに注目して説明する。なお、ホストコンピュータ２００とコントローラ１１０との間およびコントローラ１１０とディスク１９４との間で、データの転送が行われるが、この処理はコマンドの種類により転送方向が変化するがコマンド処理とステータス処理との間でデータ転送が行われることは同じである。また、データ転送は、ネットワークコントローラ１３０およびＦＣコントローラ１５０に搭載されたＤＭＡコントローラにより、ＣＰＵ１２０の介在なく実施される。このデータ転送の方法については、従来から知られた方法と同一であるため説明を省略する。
【００６９】
図１５のステップＳ１１０では、ネットワークコントローラ１３０が、ホストコンピュータ２００ａ（図１）からホストコマンドを受領する（図１７の（ｉ））。このホストコマンドの対象の論理ユニット１９０は、論理ユニット１９０ａ０（ＬＵ  ａ０）である。
【００７０】
ステップＳ１２０では、ネットワークコントローラ１３０が、受領したホストコマンドを、メモリ１６０内のＮＷＣメールボックス（ＮＷＣ  ＭＢ）１７６に、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いて転送する（図１７の（ｉｉ））。ここで、ネットワークコントローラ１３０は、ホストコマンドの対象の論理ユニット１９０に応じて、ホストコマンドに応じた処理を行うＣＰＵ１２０のコア１２２（以下「担当ＣＰＵコア」とも呼ぶ）を振り分ける機能を有している。図１７および図１８の例では、論理ユニット１９０ａ０（ＬＵ  ａ０）を対象としたホストコマンドの担当ＣＰＵコアは、コア１２２ｐ（コアｐ）であると設定されているものとする。このとき、ネットワークコントローラ１３０は、受領したホストコマンドを、コア１２２ｐに対応付けられたＮＷＣメールボックス１７６であるＮＷＣメールボックス（０）に転送することによって、ホストコマンドに応じた処理をコア１２２ｐに振り分ける。なお、本実施例では、ホストコマンドは、コマンドリクエストブロック（以下「ＣＲＢ」とも称する）の形式で転送される。
【００７１】
なお、本実施例では、論理ユニット１９０毎に１つのコア１２２が、担当ＣＰＵコアとして設定されるものとしている。また、本実施例では、担当ＣＰＵコアを有するコントローラ１１０のみがキャッシュ等の管理情報や論理ユニット１９０の管理情報を更新することができる。他のコントローラ１１０も論理ユニット１９０をアクセスすることはできるが、この際に担当ＣＰＵコアを有するコントローラ１１０に問い合わせをして、キャッシュの管理情報の更新やロック等の処理を委託する必要がある。
【００７２】
ステップＳ１３０では、ネットワークコントローラ１３０が、ＮＷＣメールボックス１７６に転送したホストコマンドのアドレスを、ＮＷＣドアベル１３４に格納する（図１７の（ｉｉｉ））。このとき、用いられるＮＷＣドアベル１３４は、ホストコマンドの担当ＣＰＵコアであるコア１２２ｐに対応付けられたＮＷＣドアベル１３４（ＮＷＣドアベル（０））である。
【００７３】
ステップＳ１４０では、ネットワークコントローラ１３０が、ホストコマンドの担当ＣＰＵコアであるコア１２２ｐに対し、割り込み要求を発行する（図１７の（ｉｖ））。割り込み要求の発行には、コア１２２ｐに対応付けられた割り込み線１３８（図７）が用いられる。
【００７４】
ステップＳ１５０では、ＣＰＵ１２０のコア１２２ｐが、ＮＷＣドアベル１３４に格納されたアドレスを参照して、ＮＷＣメールボックス１７６に格納されたホストコマンドを取得する（図１７の（ｖ））。また、コア１２２ｐは、ＲＡＩＤ制御プログラム１８４（図８）を実行することによって、取得したホストコマンドの対象の論理ユニット１９０とディスク１９４との変換（以下「ＲＡＩＤアドレス変換」とも称する）を行う。次に、コア１２２ｐは、ディスク制御プログラム１８６（図８）を実行することによって、ホストコマンドに基づき、ディスク１９４に対するコマンドとしてのディスクコマンドを生成する。ディスクコマンドには、例えば、コマンドの種類を表す情報や、対象となるディスク１９４の識別子、ＬＢＡ、転送サイズ、ＤＭＡリスト等が含まれる。本実施例では、ディスクコマンドも、コマンドリクエストブロック（ＣＲＢ）の形式で生成される。コア１２２ｐは、生成したディスクコマンドを、メモリ１６０内のＦＣＣメールボックス１７８に転送する（図１７の（ｖｉ））。このとき、用いられるＦＣＣメールボックス１７８は、担当ＣＰＵコアであるコア１２２ｐとホストコマンドの対象の論理ユニット１９０に接続されたＦＣコントローラ１５０との組み合わせに対応付けられたＦＣＣメールボックス１７８（ＦＣＣメールボックス（０））である。
【００７５】
ステップＳ１６０では、コア１２２ｐが、ＦＣＣメールボックス１７８に転送したディスクコマンドのアドレスを、ＦＣＣドアベル１５４に格納する（図１７の（ｖｉｉ））。このとき、用いられるＦＣＣドアベル１５４は、担当ＣＰＵコアであるコア１２２ｐに対応付けられたＦＣＣドアベル１５４（ＦＣＣドアベル（０））である。
【００７６】
ステップＳ１７０では、ＦＣコントローラ１５０が、ＦＣＣドアベル１５４に格納されたアドレスを参照して、ＦＣＣメールボックス１７８に格納されたディスクコマンドをＤＭＡを用いて取得する（図１７の（ｖｉｉｉ））。また、ＦＣコントローラ１５０は、取得したディスクコマンドに従い、論理ユニット１９０を構成するディスク１９４に対するコマンド処理を実行する（図１７の（ｉｘ））。
【００７７】
以上説明したステップＳ１１０からＳ１７０までにおいて、ホストコンピュータ２００から発行されたホストコマンドに従った、論理ユニット１９０を構成するディスク１９４に対する処理が完了する。次に、ステップＳ１８０以降において、コマンドに従ったディスク１９４に対する処理の完了がホストコンピュータ２００に通知される。このときに使用されるＮＷＣメールボックス１７６、ＮＷＣドアベル１３４、ＦＣＣメールボックス１７８、ＦＣＣドアベル１５４は、ステップＳ１１０からＳ１７０までにおいて使用されたものと同じものとなる。
【００７８】
ステップＳ１８０では、ＦＣコントローラ１５０が、ディスクコマンド終了ステータスをＣＲＢ形式で生成し、ＦＣＣメールボックス１７８に転送する（図１８の（ｘ））。このとき、ＦＣＣメールボックス（０）が用いられる。
【００７９】
図１６のステップＳ１９０では、ＦＣコントローラ１５０が、ＦＣＣメールボックス１７８に格納したディスクコマンド終了ステータスのアドレスを、ＦＣＣドアベル１５４に格納する（図１８の（ｘｉ））。このとき、ＦＣＣドアベル（０）が用いられる。
【００８０】
ステップＳ２００では、ＦＣコントローラ１５０が、コア１２２ｐに対し、割り込み要求を発行する（図１８の（ｘｉｉ））。割り込み要求の発行には、コア１２２ｐに対応付けられた割り込み線１５８（図６）が用いられる。
【００８１】
ステップＳ２１０では、ＣＰＵ１２０のコア１２２ｐが、ＦＣＣドアベル１５４に格納されたアドレスを参照して、ＦＣＣメールボックス１７８に格納されたディスクコマンド終了ステータスを取得する（図１８の（ｘｉｉｉ））。また、コア１２２ｐは、ディスクコマンド終了ステータスに基づきホストコマンド終了ステータス（ＣＲＢ形式）を生成し、ＮＷＣメールボックス１７６に転送する（図１８の（ｘｉｖ））。このとき、ＮＷＣメールボックス（０）が用いられる。
【００８２】
ステップＳ２２０では、ＣＰＵ１２０のコア１２２ｐが、ＮＷＣメールボックス１７６に転送したホストコマンド終了ステータスのアドレスを、ＮＷＣドアベル１３４に格納する（図１８の（ｘｖ））。このとき、ＮＷＣドアベル（０）が用いられる。
【００８３】
ステップＳ２３０では、ネットワークコントローラ１３０が、ＮＷＣドアベル１３４に格納されたアドレスを参照して、ＮＷＣメールボックス１７６に格納されたホストコマンド終了ステータスをＤＭＡを用いて取得する（図１８の（ｘｖｉ））。また、ネットワークコントローラ１３０は、取得したホストコマンド終了ステータスを用いて、ホストコンピュータ２００に対するコマンド終了処理を行う（図１８の（ｘｖｉｉ））。ステップＳ１８０からＳ２３０までにおいて、ホストコンピュータ２００に対するコマンド終了処理が完了する。
【００８４】
ステップＳ２４０以降の処理は、ネットワークコントローラ１３０がＣＰＵ１２０のコア１２２ｐに対して、ホストコンピュータ２００に対する処理が完了したことを通知するための処理である。ステップＳ２４０では、ネットワークコントローラ１３０が、終了ステータスをＮＷＣメールボックス１７６に転送する。ステップＳ２５０では、ネットワークコントローラ１３０が、ＮＷＣメールボックス１７６に転送した終了ステータスのアドレスを、ＮＷＣドアベル１３４に格納する。ステップＳ２６０では、ネットワークコントローラ１３０が、コア１２２ｐに対し割り込み要求を発行する。ステップＳ２７０では、ＣＰＵ１２０のコア１２２ｐが、ＮＷＣメールボックス１７６から終了ステータスを取得する。これにより、ホストコマンド実行処理は完了する。
【００８５】
Ａ−３．コントローラ内担当ＣＰＵコア切り替え：
図１９は、コントローラ内担当ＣＰＵコア切り替え後のホストコマンド実行処理の概要を示す説明図である。図１９には、ホストコマンド実行処理の内、図１７に示した部分に対応する処理が示されている。
【００８６】
コントローラ内担当ＣＰＵコア切り替えとは、ある論理ユニット１９０を対象としたホストコマンドの担当ＣＰＵコアを、あるコア１２２から、同じコントローラ１１０内の他のコア１２２へと変更することを意味している。このような切り替えは、例えば、ストレージノード１００のコントローラ１１０内のコア１２２の負荷分散のために実行される。例えばユーザは、管理装置４００（図１）の表示画面に表示されたコントローラ１１０内の各コア１２２の負荷を参照して、コントローラ内担当ＣＰＵコア切り替えの実行指示を行う。この点については、後述する。
【００８７】
図１９の例は、論理ユニット１９０ａ０（ＬＵ  ａ０）を対象としたホストコマンドの担当ＣＰＵコアが、コントローラ１１０ａ（ＣＴＬ  ａ）のコア１２２ｐ（コアｐ）から、同じくコントローラ１１０ａのコア１２２ｑ（コアｑ）へと変更された例である（図１９の（０）参照）。
【００８８】
ここで、上述したように、本実施例のストレージノード１００では、ネットワークコントローラ１３０が、ホストコマンドの対象の論理ユニット１９０に応じて、ホストコマンドの担当ＣＰＵコアを振り分ける機能を有している。従って、ネットワークコントローラ１３０の設定を変更することによって、コントローラ内担当ＣＰＵコア切り替えを実現することができる。
【００８９】
具体的には、ネットワークコントローラ１３０が、論理ユニット１９０ａ０を対象としたホストコマンドを受領したときに、ホストコマンドを、コア１２２ｑに対応付けられたＮＷＣメールボックス１７６（ＮＷＣメールボックス（１））に転送するように、ネットワークコントローラ１３０の設定を変更する。
【００９０】
その後のホストコマンド実行処理は、コントローラ内担当ＣＰＵコア切り替え前の処理（図１５〜１８参照）と同様に、実行される。両者の違いは、使用されるＮＷＣメールボックス１７６、ＮＷＣドアベル１３４、ＦＣＣメールボックス１７８、ＦＣＣドアベル１５４、割り込み線１３８（図７）、割り込み線１５８（図６）が、コア１２２ｐに対応付けられたものであるか、コア１２２ｑに対応付けられたものであるかという点のみである。すなわち、図１９に示すように、コントローラ内担当ＣＰＵコア切り替え後のホストコマンド実行処理では、コア１２２ｑに対応付けられた構成要素（ＮＷＣメールボックス（１）、ＮＷＣドアベル（１）、ＦＣＣメールボックス（１）、ＦＣＣドアベル（１））が用いられる。なお、コントローラ内担当ＣＰＵコア切り替え後のホストコマンド実行処理の内、図１８に示した部分に対応する処理（図示せず）についても、同様である。
【００９１】
以上説明したように、本実施例のストレージシステム１０００におけるストレージノード１００では、ネットワークコントローラ１３０の設定を変更することによって、コントローラ１１０内においてホストコマンドの担当ＣＰＵコアを切り替えることができる。そして、切り替え後も、切り替え前と同一のシーケンス、同一のディスク処理、同一のネットワークコントローラ１３０、同一のＦＣコントローラ１５０を用いて、ホストコマンド実行処理を行うことができる。ホストコマンドの担当ＣＰＵコアの切り替えに伴い、ホストコンピュータ２００とネットワークコントローラ１３０との間のパスやＦＣコントローラ１５０とディスク１９４との間のパスを変更する必要は無い。従って、本実施例のストレージシステム１０００では、ホストコンピュータからのコマンドに応じた処理を実行するコア１２２の切り替えを容易に実現することができる。
【００９２】
Ａ−４．ストレージノード１００のコントローラ１１０内におけるアドレス空間およびメモリマップ：
図２０は、ストレージノード１００のコントローラ１１０内におけるアドレス空間を概念的に示す説明図である。図２０の左側には、ストレージノード１００ａのコントローラ１１０ａ（図１）内のコア１２２ｐ（コアｐ）のアドレス空間を、図２０の右側には、同じくコントローラ１１０ａ内のコア１２２ｑ（コアｑ）のアドレス空間を、それぞれ示している。
【００９３】
図２０に示すように、コア１２２ｐのアドレス空間には、アドレス「Ａ０」から「Ａ３」に、コントローラ１１０ａのメモリ１６０（図８）内におけるコア１２２ｐ用の領域（以下「メモリａｐ」とも称する）がマッピングされている。また、アドレス「ＡＩＯ０」から「Ａ４」に、ＩＯアドレス領域（メモリマップドＩ／Ｏ）がマッピングされている。
【００９４】
図２０に示すように、コア１２２ｐのアドレス空間におけるメモリａｐの領域には、制御プログラム領域と、制御データ領域と、キャッシュ領域と、がマッピングされている（図８参照）。制御データ領域には、コア１２２ｐに対応付けられたＮＷＣメールボックス１７６（ＮＷＣメールボックス（０））と、同じくコア１２２ｐに対応付けられたＦＣＣメールボックス１７８（ＦＣＣメールボックス（０））と、がマッピングされている。
【００９５】
また、コア１２２ｐのアドレス空間におけるＩＯアドレス領域には、コア１２２ｐに対応付けられたＮＷＣドアベル１３４（ＮＷＣドアベル（０））と、同じくコア１２２ｐに対応付けられたＦＣＣドアベル１５４（ＦＣＣドアベル（０））と、がマッピングされている。
【００９６】
図２０の右側に示すコア１２２ｑのアドレス空間のアドレス「Ａ０」から「Ａ４」には、コア１２２ｐのアドレス空間と同様に、コントローラ１１０ａのメモリ１６０内におけるコア１２２ｑ用の領域（以下「メモリａｑ」とも称する）とＩＯアドレス領域とがマッピングされている。コア１２２ｐのアドレス空間にマッピングされたＮＷＣメールボックス１７６、ＦＣＣメールボックス１７８、ＮＷＣドアベル１３４、ＦＣＣドアベル１５４は、コア１２２ｑに対応付けられたものとなっている。
【００９７】
また、コア１２２ｐのアドレス空間のアドレス「Ａ４」から「Ａ５」には、コア１２２ｑのアドレス空間のアドレス「Ａ０」から「Ａ４」がマッピングされている。同様に、コア１２２ｑのアドレス空間のアドレス「Ａ４」から「Ａ５」には、コア１２２ｐのアドレス空間のアドレス「Ａ０」から「Ａ４」がマッピングされている。なお、他のストレージノード１００（ストレージノード１００ｂ等）のコントローラ１１０内のコア１２２ｐおよびコア１２２ｑのアドレス空間も、図２０に示したアドレス空間と同様である。
【００９８】
図２１は、ストレージノード１００のコントローラ１１０内におけるメモリマップを示す説明図である。図２１には、ストレージノード１００ａのコントローラ１１０ａ（図１）内のメモリ１６０のメモリマップを示している。図２１に示すように、コントローラ１１０ａのメモリ１６０（以下「メモリａ」とも称する）のメモリマップは、コア１２２ｐ用のメモリ領域「メモリａｐ」と、コア１２２ｑ用のメモリ領域「メモリａｑ」と、に分割されている。なお、他のストレージノード１００（ストレージノード１００ｂ等）のコントローラ１１０内のメモリ１６０のメモリマップも、図２１に示したメモリマップと同様である。
【００９９】
Ａ−５．ストレージシステム１０００のアドレス空間およびメモリマップ：
図２２は、ストレージシステム１０００（図１）のアドレス空間を概念的に示す説明図である。図２２の左側には、ストレージノード１００ａのコントローラ１１０ａ（図１）内のコア１２２ｐ（コアｐ）から見たストレージシステム１０００のアドレス空間を、図２２の右側には、ストレージノード１００ｂのコントローラ１１０ｂ内のコア１２２ｑ（コアｑ）から見たストレージシステム１０００のアドレス空間を、それぞれ示している。
【０１００】
図２２に示すように、コントローラ１１０ａのコア１２２ｐから見たストレージシステム１０００のアドレス空間には、セグメントアドレス「ＳＡ０」から「ＳＡ１」に、コントローラ１１０ａのコア１２２ｐ（コアｐ）のアドレス空間と、コントローラ１１０ａのコア１２２ｑ（コアｑ）のアドレス空間と、がマッピングされている（図２０参照）。
【０１０１】
さらに、コア１２２ｐから見たストレージシステム１０００のアドレス空間には、セグメントアドレス「ＳＡ１」から「ＳＡ２」に、コントローラ１１０ｂ（図１）のコア１２２ｐ（コアｐ）およびコア１２２ｑ（コアｑ）のアドレス空間がマッピングされ、セグメントアドレス「ＳＡ２」から「ＳＡ３」に、コントローラ１１０ｃ（図１）のコア１２２ｐ（コアｐ）およびコア１２２ｑ（コアｑ）のアドレス空間がマッピングされている。セグメントアドレス「ＳＡ３」以下は、ストレージノード１００増設時用の予備領域である。
【０１０２】
このように、コントローラ１１０ａのコア１２２ｐから見たストレージシステム１０００のアドレス空間には、他のストレージノード１００のコントローラ１１０（コントローラ１１０ｂ等）を含む、ストレージシステム１０００内のすべてのコントローラ１１０内のコア１２２のアドレス空間が、規則的にマッピングされている。このようなマッピングは、ストレージシステム１０００内のすべてのコントローラ１１０がノード間コントローラ結合部１０２によって互いに接続されていることにより、可能となる。従って、コントローラ１１０ａのコア１２２ｐは、マッピングされたすべての空間を参照することができる。なお、マッピングにおけるアドレス変換は、ブリッジ１４０（図３）において行われる。
【０１０３】
図２２の右側に示したコントローラ１１０ｂのコア１２２ｑから見たストレージシステム１０００のアドレス空間は、図２２左側に示したコントローラ１１０ａのコア１２２ｐから見たアドレス空間と同様である。ただし、マッピングされる空間の順番が異なっている。図２２に示していない他のコントローラ１１０の他のコア１２２から見たストレージシステム１０００のアドレス空間も、同様である。
【０１０４】
図２３は、ストレージシステム１０００（図１）のメモリマップを示す説明図である。図２３は、ストレージノード１００ａのコントローラ１１０ａから見たストレージシステム１０００のメモリマップを示している。図２３に示すように、コントローラ１１０ａから見たメモリマップには、コントローラ１１０ａ内のメモリ１６０の領域（メモリａ）の他に、ストレージシステム１０００内の他のコントローラ１１０のメモリ１６０の領域（メモリｂおよびメモリｃ）がマッピングされている。すなわち、コントローラ１１０ａは、ストレージシステム１０００のすべてのコントローラ１１０内のメモリ１６０の領域を併せたメモリ空間を、単一のメモリ空間として把握することができる。そのため、コントローラ１１０ａ内の各コア１２２は、ストレージシステム１０００内のすべてのメモリ空間にアクセスすることが可能である。ストレージシステム１０００の他のストレージノード１００のコントローラ１１０から見たメモリマップについても同様である。
【０１０５】
Ａ−６．ノード間担当ＣＰＵコア切り替え：
本実施例のストレージシステム１０００（図１）では、各ストレージノード１００のコントローラ１１０の各コア１２２（図５）が図２２および図２３に示したようなアドレス空間およびメモリマップを有しているため、ノード間担当ＣＰＵコア切り替えを実現可能である。ノード間担当ＣＰＵコア切り替えとは、ある論理ユニット１９０を対象としたホストコマンドの担当ＣＰＵコアを、あるコア１２２から、当該コア１２２を含むストレージノード１００とは異なるストレージノード１００に含まれるコア１２２へと変更することを意味している。一般に、ある論理ユニット１９０を対象としたホストコマンドの担当ＣＰＵコアは、当該論理ユニット１９０を含むストレージノード１００に含まれるＣＰＵ１２０のコア１２２である場合が多い。このような場合に、ノード間担当ＣＰＵコア切り替えを行うことによって、ホストコマンドの対象の論理ユニット１９０を含むストレージノード１００とは異なるストレージノード１００に含まれるコア１２２を、当該ホストコマンドの担当ＣＰＵコアに設定することが可能となる。すなわち、ＣＰＵ１２０のコア１２２が、自らが属するストレージノード１００とは異なるストレージノード１００内の論理ユニット１９０を対象としたホストコマンドに応じた処理を行うことが可能となる。このような切り替えは、例えば、ストレージノード１００間の負荷分散のために実行される。例えばユーザは、管理装置４００（図１）の表示画面に表示されたストレージシステム１０００内の各ストレージノード１００のコア１２２の負荷を参照して、ノード間担当ＣＰＵコア切り替えの実行指示を行う。この点については、後述する。
【０１０６】
図２４は、ノード間担当ＣＰＵコア切り替えの一例を示す説明図である。図２４には、ストレージシステム１０００（図１）のストレージノード１００ａおよびストレージノード１００ｂの内部構成を、一部省略して示している。図２４の例では、ノード間担当ＣＰＵコア切り替え前には、ストレージノード１００ａ内の論理ユニット１９０ａ０（ＬＵ  ａ０）を対象としたホストコマンドの担当ＣＰＵコアは、ストレージノード１００ａのコントローラ１１０ａ内のＣＰＵ１２０のコア１２２ｐ（コアｐ）であるものとする。このとき、ストレージノード１００ａ内のコア１２２ｐは、自らに対応付けられたＮＷＣメールボックス１７６（ＮＷＣメールボックス（０））、ＮＷＣドアベル１３４（ＮＷＣドアベル（０））、ＦＣＣメールボックス１７８（ＦＣＣメールボックス（０））、ＦＣＣドアベル１５４（ＦＣＣドアベル（０））を用いて、ホストコマンド実行処理を行っている。
【０１０７】
ノード間担当ＣＰＵコア切り替えにより、論理ユニット１９０ａ０を対象としたホストコマンドの担当ＣＰＵコアが、ストレージノード１００ｂのコントローラ１１０ｂ内のＣＰＵ１２０のコア１２２ｐ（コアｐ）へと変更されるものとする。ここで図２４の例では、コントローラ１１０ｂ内において、コア１２２ｐに対応付けられたＮＷＣメールボックス１７６は、ＮＷＣメールボックス（０）であり、コア１２２ｐに対応付けられたＮＷＣドアベル１３４は、ＮＷＣドアベル（０）である。また、コントローラ１１０ｂ内において、コア１２２ｐとストレージノード１００ａのコントローラ１１０ａ内のＦＣコントローラ１５０との組み合わせに対応付けられたＦＣＣメールボックス１７８は、ＦＣＣメールボックス（２）である。さらに、ストレージノード１００ａ内の論理ユニット１９０ａ０に接続されたＦＣコントローラ１５０において、ストレージノード１００ｂのコントローラ１１０ｂ内のコア１２２ｐに対応付けられたＦＣＣドアベル１５４は、ＦＣＣドアベル（２）である。ストレージノード１００ｂのコントローラ１１０ｂ内のコア１２２ｐは、ノード間担当ＣＰＵコア切り替え後に、これらのメールボックスおよびドアベルを用いて、ホストコマンド実行処理を行う。
【０１０８】
なお、ノード間担当ＣＰＵコア切り替えを行うためには、ホストコマンドが、切り替え後の担当ＣＰＵコアを有するストレージノード１００（ストレージノード１００ｂ）に向けて発行される必要がある。そのため、ノード間担当ＣＰＵコア切り替えの際には、まず、ホストコンピュータ２００（図１）とストレージノード１００との間のアクセスパスの変更が行われる。ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更については、後述する。
【０１０９】
また、ノード間担当ＣＰＵコア切り替え後の担当ＣＰＵコアを有するストレージノード１００（ストレージノード１００ｂ）においては、ネットワークコントローラ１３０が、論理ユニット１９０ａ０を対象としたホストコマンドの処理を、切り替え後の担当ＣＰＵコア（コア１２２ｐ）に割り当てる必要がある。そのため、論理ユニット１９０ａ０を対象としたホストコマンドがコア１２２ｐに割り当てられるように、ネットワークコントローラ１３０の設定が行われる。
【０１１０】
図２５は、ノード間担当ＣＰＵコア切り替え後の担当ＣＰＵコア（ストレージノード１００ｂのコントローラ１１０ｂ内のＣＰＵ１２０のコア１２２ｐ）から見たストレージシステム１０００のアドレス空間を概念的に示す説明図である。図２５に示すように、切り替え後の担当ＣＰＵコアであるコントローラ１１０ｂのコア１２２ｐ（コアｐ）は、コントローラ１１０ｂ内のメモリ１６０のコア１２２ｐ用の領域（「メモリｂｐ」と表す）にマッピングされたＦＣＣメールボックス（２）を参照可能である。同様に、コントローラ１１０ｂのコア１２２ｐは、コントローラ１１０ａ内のコア１２２ｐ用のＩＯアドレス領域にマッピングされたＦＣＣドアベル（２）も参照可能である。
【０１１１】
また、本実施例のストレージシステム１０００では、各ストレージノード１００のコントローラ１１０は、ノード間コントローラ結合部１０２によって互いに接続されている（図１および図３参照）。そのため、切り替え後の担当ＣＰＵコアを有するコントローラ１１０ｂのＣＰＵ１２０から、ストレージノード１００ａのコントローラ１１０ａ内のメモリ１６０およびＦＣコントローラ１５０に至るデータアクセスパスが確保されている。従って、コントローラ１１０ｂのＣＰＵ１２０のコア１２２ｐは、当該アクセスパスを介して、コントローラ１１０ａ内のメモリ１６０およびＦＣコントローラ１５０にアクセス可能である。
【０１１２】
さらに、コントローラ１１０ａのＦＣコントローラ１５０内のＦＣＣドアベル（２）（図２４）は、切り替え後の担当ＣＰＵコアであるコントローラ１１０ｂのコア１２２ｐ専用として準備されており、コア１２２ｐによる占有使用が可能である。そのため、ＦＣＣドアベル１５４についての排他制御は不要である。
【０１１３】
以上のことから、本実施例のストレージシステム１０００では、ノード間担当ＣＰＵコア切り替えを実現することができる。
【０１１４】
図２６および図２７は、ノード間担当ＣＰＵコア切り替え後のホストコマンド実行処理の流れを示すフローチャートである。また、図２８および図２９は、ノード間担当ＣＰＵコア切り替え後のホストコマンド実行処理の概要を示す説明図である。図２８には、ホストコマンド実行処理の内、図１７に示した部分に対応する処理が示されており、図２９には、図１８に示した部分に対応する処理が示されている。
【０１１５】
上述したように、ノード間担当ＣＰＵコア切り替えの際には、ホストコンピュータ２００（図１）とストレージノード１００との間のアクセスパスの変更が行われるため、論理ユニット１９０ａ０を対象としたホストコマンドは、ストレージノード１００ｂのネットワークコントローラ１３０によって受領される（図２６のステップＳ３１０、図２８の（ｉ））。
【０１１６】
また、ストレージノード１００ｂにおいては、論理ユニット１９０ａ０を対象としたホストコマンドがコア１２２ｐに割り当てられるように、ネットワークコントローラ１３０の設定が行われる。そのため、受領されたホストコマンドは、コア１２２ｐに対応付けられたＮＷＣメールボックス１７６（ＮＷＣメールボックス（０））を経て、コア１２２ｐにより取得される（図２６のステップＳ３２０からＳ３５０、図２８の（ｉｉ）から（ｖ））。
【０１１７】
ホストコマンドを取得したコア１２２ｐは、ＲＡＩＤアドレス変換およびディスクコマンド生成（図２６のステップＳ３５０）を行う。なお、ストレージノード１００ｂのコントローラ１１０ｂ内のメモリ１６０には、論理ユニット１９０ａ０についてのＲＡＩＤアドレス変換を行うための情報（ＬＵ管理テーブル（図９）等）が格納されている。
【０１１８】
コア１２２ｐは、生成したディスクコマンドを、メモリ１６０内のＦＣＣメールボックス１７８に転送する（図２６のステップＳ３５０、図２８の（ｖｉ））。このときの転送先のＦＣＣメールボックス１７８は、コア１２２ｐとストレージノード１００ａの論理ユニット１９０ａ０に接続されたＦＣコントローラ１５０との組み合わせに対応付けられたＦＣＣメールボックス（２）である。
【０１１９】
コア１２２ｐは、ＦＣＣメールボックス１７８におけるディスクコマンド格納アドレスを、ストレージノード１００ａの論理ユニット１９０ａ０に接続されたＦＣコントローラ１５０内のＦＣＣドアベル１５４に格納する（図２６のステップＳ３６０、図２８の（ｖｉｉ））。このとき用いられるＦＣＣドアベル１５４は、ストレージノード１００ｂのコントローラ１１０ｂ内のコア１２２ｐに対応付けられたＦＣＣドアベル（２）である。
【０１２０】
ストレージノード１００ａの論理ユニット１９０ａ０に接続されたＦＣコントローラ１５０は、ＦＣＣドアベル（２）に格納されたアドレスを参照して、ストレージノード１００ｂのＦＣＣメールボックス（２）からディスクコマンドを取得し（図２６のステップＳ３７０、図２８の（ｖｉｉｉ））、ディスクコマンド処理を行う（図２６のステップＳ３７０、図２８の（ｉｘ））。
【０１２１】
ディスクコマンド処理が終了すると、ストレージノード１００ａのＦＣコントローラ１５０は、ディスクコマンド終了ステータスをストレージノード１００ａのＦＣＣメールボックス（２）に転送し（図２６のステップＳ３８０、図２９の（ｘ））、その格納アドレスを、自ら有するＦＣＣドアベル（２）に格納する（図２７のステップＳ３９０、図２９の（ｘｉ））。
【０１２２】
さらに、ストレージノード１００ａのＦＣコントローラ１５０は、ストレージノード１００ｂのコア１２２ｐに対し、割り込み要求を発行する（図２７のステップＳ４００、図２９の（ｘｉｉ））。ここで、ストレージノード１００ａおよびストレージノード１００ｂのブリッジ１４０は、割り込み変換器（「ＩＮＴ変換器」とも称する）１４４を有している。ストレージノード１００ａのＦＣコントローラ１５０からストレージノード１００ｂのコア１２２ｐへの割り込み要求（割り込み信号）の伝達経路においては、ストレージノード１００ａ側の割り込み変換器１４４による割り込み要求のノード間コントローラ接続線１０４を通過可能なパケットへの変換と、ストレージノード１００ｂ側の割り込み変換器１４４による逆変換と、が実行される。
【０１２３】
割り込み要求を受領したストレージノード１００ｂのコントローラ１１０ｂ内のコア１２２ｐは、ストレージノード１００ａのＦＣＣドアベル（２）に格納されたアドレスを参照して、ストレージノード１００ｂのＦＣＣメールボックス（２）からディスクコマンド終了ステータスを取得する（図２７のステップＳ４１０、図２９の（ｘｉｉｉ））。その後、コア１２２ｐは、ホストコマンド終了ステータスを生成して、ストレージノード１００ｂのＮＷＣメールボックス（０）に転送し（図２７のステップＳ４１０、図２９の（ｘｉｖ））、アドレスをＮＷＣドアベル（０）に格納する（図２７のステップＳ４２０、図２９の（ｘｖ））。
【０１２４】
ストレージノード１００ｂのコントローラ１１０ｂ内のネットワークコントローラ１３０は、ＮＷＣメールボックス（０）からホストコマンド終了ステータスを取得し（図２７のステップＳ４３０、図２９の（ｘｖｉ））、コマンド終了処理を実行する（図２７のステップＳ４３０、図２９の（ｘｖｉｉ））。なお、その後、ネットワークコントローラ１３０によるＣＰＵ１２０に対する処理完了の通知が行われる（図２７のステップＳ４４０からＳ４７０）。
【０１２５】
以上説明したように、本実施例のストレージシステム１０００では、ある論理ユニット１９０を対象としたホストコマンドの担当ＣＰＵコアを、あるコア１２２から、当該コア１２２を含むストレージノード１００とは異なるストレージノード１００に含まれるコア１２２へと変更するノード間担当ＣＰＵコア切り替えを実現することができる。これにより、ストレージシステム１０００内のストレージノード１００の負荷分散を図ることができる。ノード間担当ＣＰＵコア切り替えは、ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更と、ネットワークコントローラ１３０における担当ＣＰＵコアの設定と、を行うことにより実現可能であり、論理ユニット１９０に格納されたデータを他のストレージノード１００の論理ユニット１９０にコピーする必要は無い。また、ノード間担当ＣＰＵコア切り替え後も、切り替え前と同一のシーケンス、同一のディスク処理、同一のネットワークコントローラ１３０、同一のＦＣコントローラ１５０を用いて、ホストコマンド実行処理を行うことができる。ホストコマンドの担当ＣＰＵコアの切り替えに伴い、ＦＣコントローラ１５０とディスク１９４との間のパスの変更やデータの移動の必要は無い。従って、本実施例のストレージシステム１０００では、ホストコンピュータ２００からのコマンドに応じた処理を実行するコア１２２の切り替えを容易に実現することができる。
【０１２６】
Ａ−７．ホストコンピュータとストレージノードとの間のアクセスパス変更：
上述したように、ノード間担当ＣＰＵコア切り替えの際には、ホストコンピュータ２００（図１）とストレージノード１００との間のアクセスパスの変更を行う必要がある。図３０は、ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更処理の一例を示す説明図である。図３０には、データ処理システム１０（図１）の内、アクセスパスの変更に関連する部分のみを抜き出して表示している。図３０の例では、ホストコンピュータ２００ａから発行される論理ユニット１９０ａ０を対象としたホストコマンドが、ストレージノード１００ａではなく、ストレージノード１００ｂに到達するように、アクセスパスの変更が行われる。
【０１２７】
アクセスパス変更前の状態では、ホストコンピュータ２００ａはイニシエータを有しており、このイニシエータは、ホストコンピュータ２００が有するイニシエータ管理テーブル２１０ａ（図１１参照）に、イニシエータネーム「Ｉｎｉｔ−ａ０」として登録されている。このイニシエータ「Ｉｎｉｔ−ａ０」は、ネームサーバ５００が有するネーム管理テーブル５７１（図１２）にも登録されている。
【０１２８】
また、ストレージノード１００ａ内の論理ユニット１９０ａ０（ＬＵ  ａ０）は、ストレージノード１００ａのコントローラ１１０ａのメモリ１６０に格納されたターゲット管理テーブル１７３（図８および図１０）に、ターゲットネーム「Ｔａｒｇ−ａ０」として登録されている。ターゲット管理テーブル１７３においては、「Ｔａｒｇ−ａ０」へのアクセスが許可されたイニシエータとして「Ｉｎｉｔ−ａ０」が登録されている（図１０参照）。このターゲット「Ｔａｒｇ−ａ０」は、ネームサーバ５００が有するネーム管理テーブル５７１（図１２）にも登録されている。
【０１２９】
さらに、ストレージノード１００ａのコントローラ１１０ａのメモリ１６０に格納されたＬＵ管理テーブル１７２（図８および図９）には、論理ユニット１９０ａ０（ＬＵ  ａ０）のターゲットネームとして「Ｔａｒｇ−ａ０」が登録されており、論理ユニット１９０ａ０へのアクセスが許可されたイニシエータとして「Ｉｎｉｔ−ａ０」が登録されている。
【０１３０】
アクセスパスの変更の際には、まず、ストレージノード１００ａのコントローラ１１０ａからストレージノード１００ｂのコントローラ１１０ｂへのターゲット「Ｔａｒｇ−ａ０」の引継ぎが実行される（図３０の（ｉ））。これにより、ストレージノード１００ｂのコントローラ１１０ｂのメモリ１６０に格納されたターゲット管理テーブル１７３に、ターゲット「Ｔａｒｇ−ａ０」およびイニシエータ「Ｉｎｉｔ−ａ０」の組が登録される。また、ストレージノード１００ａのコントローラ１１０ａのメモリ１６０に格納されたターゲット管理テーブル１７３から、ターゲット「Ｔａｒｇ−ａ０」およびイニシエータ「Ｉｎｉｔ−ａ０」の組が削除される。
【０１３１】
次に、ストレージノード１００ａおよびストレージノード１００ｂは、ネームサーバ５００に対し、構成通知を送信する（図３０の（ｉｉ））。これを受けて、ネームサーバ５００は、保有するネーム管理テーブル５７１（図１２）内のターゲット「Ｔａｒｇ−ａ０」およびイニシエータ「Ｉｎｉｔ−ａ０」の組に関する情報を変更する。
【０１３２】
次に、ネームサーバ５００は、ストレージシステム１０００に接続している各イニシエータ（ホストコンピュータ）に対し、構成変更通知を発行する（図３０の（ｉｉｉ））。構成変更通知を受領した各イニシエータ（ホストコンピュータ）は、ディスカバリを実行し、自身がアクセス可能なターゲットに変更がないかどうかをネームサーバ５００に問い合わせる（図３０の（ｉｖ））。これにより、ホストコンピュータ２００ａは、イニシエータ「Ｉｎｉｔ−ａ０」に対応するターゲット「Ｔａｒｇ−ａ０」がストレージノード１００ｂに移動されたことを把握する。
【０１３３】
ホストコンピュータ２００ａは、変更後のターゲット「Ｔａｒｇ−ａ０」の情報に従い、ストレージノード１００ｂとの間の新たなｉＳＣＳＩセッションを確立する。これにより、ホストコンピュータ２００ａとストレージノード１００との間のパスの切り替えが完了する（図３０の（ｖ））。以上の処理により、ホストコンピュータ２００ａから発行される論理ユニット１９０ａ０（ＬＵ  ａ０）を対象としたホストコマンドは、ストレージノード１００ｂに到達することとなる。
【０１３４】
Ａ−８．管理画面の例：
【０１３５】
図３１は、ストレージシステム１０００の管理装置４００の管理画面４１０の一例を示す説明図である。図３１に示した管理画面４１０には、ストレージシステム１０００内の各論理ユニット１９０の担当ＣＰＵコアが示されている。例えば、論理ユニット１９０「ＬＵ  ｂ０」の担当ＣＰＵコアは、ストレージノード１００ｂのコアｐとなっている。ユーザは、管理画面４１０により、ストレージシステム１０００内の各論理ユニット１９０の担当ＣＰＵコアを容易に把握することができる。
【０１３６】
また、ユーザは、管理画面４１０を参照しつつ管理装置４００の操作を行うことによって、上述したコントローラ内担当ＣＰＵコア切り替えや、ノード間担当ＣＰＵコア切り替えの実行指示を行うことができる。例えばユーザは、管理画面４１０に表示された論理ユニット１９０「ＬＵ  ａ０」のアイコンを、ストレージノード１００ａのコアｐ欄からコアｑ欄へとドラッグアンドドロップを行うことにより（図３１の（ｉ））、論理ユニット１９０「ＬＵ  ａ０」の担当ＣＰＵコアを、コントローラ１１０ａ内のコアｐからコアｑへと変更するコントローラ内担当ＣＰＵコア切り替えの実行を指示することができる。また、ユーザは、論理ユニット１９０「ＬＵ  ａ０」のアイコンを、ストレージノード１００ａのコアｐ欄からストレージノード１００ｂのコアｐ欄へとドラッグアンドドロップを行うことにより（図３１の（ｉｉ））、論理ユニット１９０「ＬＵ  ａ０」の担当ＣＰＵコアを、ストレージノード１００ａ内のコアｐからストレージノード１００ｂ内のコアｐへと変更するノード間担当ＣＰＵコア切り替えの実行を指示することができる。ストレージシステム１０００では、このようなユーザからの指示に従って、上述したコントローラ内担当ＣＰＵコア切り替えや、ノード間担当ＣＰＵコア切り替えが実行される。
【０１３７】
図３２は、ストレージシステム１０００の管理装置４００の管理画面４１０の他の一例を示す説明図である。図３２に示した管理画面４１０には、ストレージシステム１０００内の各ストレージノード１００の稼働状況を表示している。管理画面４１０には、左から順に、ストレージノード１００ａ（ＳＮａ）、ストレージノード１００ｂ（ＳＮｂ）、ストレージノード１００ｃ（ＳＮｃ）、将来増設ストレージノード１００ｄ（ＳＮｄ）の稼働状況が、それぞれ表示される。各ストレージノード１００の稼働状況の表示において、上段には、ＣＰＵ１２０の各コア１２２の稼働率が示され、下段には、各論理ユニット１９０の稼働率が示される。ここで、ＣＰＵ１２０のコア１２２については、例えば、ある計測時間から、その計測時間中におけるアイドルルーチン時間を除いた時間が稼働時間であるとして、稼働率が算定される。また、論理ユニット１９０については、例えば、ホストコンピュータ２００からのコマンド受信から、ホストコンピュータ２００へのコマンド完了報告送信までの時間が稼働時間であるとして、稼働率が算定される。稼働率は、例えば、所定時間経過毎に算定され、管理画面４１０の表示が更新される。なお、稼働状況の表示項目として、他に、ホストコンピュータ２００からのアクセス回数や、リード要求とライト要求との比率や、転送長等を用いてもよい。管理画面４１０の表示によって、ユーザは、ストレージシステム１０００内のストレージノード１００の稼働状況（負荷の大きさ）を把握することができる。そのため、例えばユーザは、管理画面４１０に表示されたＣＰＵ１２０のコア１２２の負荷を参照して、コントローラ内担当ＣＰＵコア切り替えやノード間担当ＣＰＵコア切り替えの実行指示を行うことができる。
【０１３８】
Ａ−９．第１実施例の応用：
第１実施例のストレージシステム１０００では、上述のコントローラ内担当ＣＰＵコア切り替えや、ノード間担当ＣＰＵコア切り替えの他に、種々の応用が可能である。図３３は、ストレージシステム１０００におけるシャドウイメージに関する応用の一例を示す説明図である。
【０１３９】
ストレージシステム１０００におけるシャドウイメージ（「物理コピー」とも呼ばれる）とは、ホストコンピュータからアクセスされる論理ユニット１９０内のデータと同じデータを格納した他の論理ユニット１９０を保持することによって、データの冗長性を確保したり、そのコピーした論理ユニット１９０を分離して別の用途に用いたりする処理である。シャドウイメージでは、ホストコンピュータからアクセスされる論理ユニット１９０とカップリングされた他の論理ユニット１９０が準備され、ホストコンピュータからのライトコマンドによって論理ユニット１９０にデータが書き込まれた場合に、カップリングされた他の論理ユニット１９０にも同じデータが書き込まれる。本実施例のストレージシステム１０００では、このようなシャドウイメージを実行する際に、負荷分散を図ることができる。
【０１４０】
図３３（ａ）には、シャドウイメージにおけるコントローラ１１０内のＣＰＵコア間の負荷分散の一例を示している。シャドウイメージにおいて、ストレージノード１００ａでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納（図３３（ａ）の（ｉ））と、キャッシュ領域に格納されたライトデータの論理ユニット（ＬＵ  ａ０）への書き込み（図３３（ａ）の（ｉｉ））と、ライトデータの論理ユニット（ＬＵ  ａ１）への書き込み（図３３（ａ）の（ｉｉｉ））と、が実行される。このとき、図３３（ａ）の（ｉ）および（ｉｉ）の処理はＣＰＵのコアｐが担当し、図３３（ａ）の（ｉｉｉ）の処理はＣＰＵのコアｑが担当する。このようにすれば、ストレージシステム１０００におけるシャドウイメージにおいて、コントローラ１１０内のコア間で負荷分散を行うことができる。
【０１４１】
図３３（ｂ）には、シャドウイメージにおけるストレージノード間の負荷分散の一例を示している。シャドウイメージにおける処理は、図３３（ａ）に示した処理と同様である（図３３（ｂ）の（ｉ）から（ｉｉｉ））。このとき、図３３（ｂ）の（ｉ）および（ｉｉ）の処理は、ストレージノード１００ａのコアｐが担当し、図３３（ｂ）の（ｉｉｉ）の処理は、ストレージノード１００ｂのコアｐが担当する。このようにすれば、ストレージシステム１０００におけるシャドウイメージにおいて、ストレージノード１００間で負荷分散を行うことができる。
【０１４２】
なお、図３３（ａ）および（ｂ）において、（ｉｉ）の処理から（ｉｉｉ）の処理への移行は、コア間で連絡を行うことにより実現可能である。この連絡は、共有メモリやシグナルを用いた方法等の公知の方法を用いて行うことができる。また、ストレージシステム１０００ではメモリマップが共有されているので（図２３参照）、コマンドリストにコマンドを入力することによっても、移行を実現することができる。また、各コアの処理の分担は、図３３に示した分担とは異なる分担としてもよい。
【０１４３】
図３４は、ストレージシステム１０００におけるシャドウイメージに関する応用の他の例を示す説明図である。図３４の例は、シャドウイメージ運用中にデータのバックアップを行う場合の処理を示している。シャドウイメージ運用中のデータのバックアップとは、シャドウイメージにおいて２つの論理ユニット１９０のカップリング状態を解除（スプリット）し、１つの論理ユニット１９０内に格納されたデータを用いてデータのバックアップを行う処理である。このような処理によって、ストレージシステム１０００において、ホストコンピュータからのコマンドの処理を続行しつつ、データのバックアップを行うことができる。本実施例のストレージシステム１０００では、このようなシャドウイメージ運用中のデータのバックアップを実行する際に、負荷分散を図ることができる。
【０１４４】
図３４（ａ）には、シャドウイメージ運用中のデータのバックアップにおけるコントローラ１１０内のＣＰＵコア間の負荷分散の一例を示している。シャドウイメージ運用中のデータのバックアップ実行時には、ストレージノード１００ａでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納（図３４（ａ）の（ｉ））と、キャッシュ領域に格納されたライトデータの論理ユニット（ＬＵ  ａ０）への書き込み（図３４（ａ）の（ｉｉ））と、論理ユニット（ＬＵ  ａ１）からキャッシュ領域へのデータの読み出し（図３４（ａ）の（ｉｉｉ））と、キャッシュ領域に読み出されたデータのバックアップ先への転送（図３４（ａ）の（ｉｖ））と、が実行される。このとき、図３４（ａ）の（ｉ）および（ｉｉ）の処理はＣＰＵのコアｐが担当し、図３４（ａ）の（ｉｉｉ）および（ｉｖ）の処理はＣＰＵのコアｑが担当する。このようにすれば、シャドウイメージ運用中のデータのバックアップにおいて、コントローラ１１０内のコア間で負荷分散を行うことができる。
【０１４５】
図３４（ｂ）には、シャドウイメージ運用中のデータのバックアップにおけるストレージノード間の負荷分散の一例を示している。シャドウイメージ運用中のデータのバックアップの処理は、図３４（ａ）に示した処理と同様である（図３４（ｂ）の（ｉ）から（ｉｖ））。このとき、図３４（ｂ）の（ｉ）および（ｉｉ）の処理は、ストレージノード１００ａのコアｐが担当し、図３４（ｂ）の（ｉｉｉ）および（ｉｖ）の処理は、ストレージノード１００ｂのコアｐが担当する。このようにすれば、ストレージシステム１０００におけるシャドウイメージ運用中のデータのバックアップにおいて、ストレージノード１００間で負荷分散を行うことができる。なお、各コアの処理の分担は、図３４に示した分担とは異なる分担としてもよい。
【０１４６】
図３５は、ストレージシステム１０００におけるスナップショットに関する応用の一例を示す説明図である。ストレージシステム１０００におけるスナップショット（「論理コピー」または「差分バックアップ」とも呼ばれる）とは、ホストコンピュータからのライトデータ（新データ）の論理ユニット１９０への書き込みを行う前に、新データが書き込まれるべき論理ユニット１９０内の領域に現に格納されているデータ（旧データ）を他の場所に格納することにより、ある時刻における論理ユニット１９０のデータイメージを保存し、バックアップする処理である。スナップショットでは、ホストコンピュータにアクセスされる論理ユニット１９０と仮想ボリュームとしての他の論理ユニット１９０とが準備され、ホストコンピュータからのライトコマンドが受領された場合に、まず旧データがキャッシュ領域に読み出される。その後、新データの論理ユニット１９０への書き込みと、旧データの仮想ボリュームへの書き込みと、が実行される。本実施例のストレージシステム１０００では、このようなスナップショットを実行する際に、負荷分散を図ることができる。
【０１４７】
図３５（ａ）には、スナップショットにおけるコントローラ１１０内のＣＰＵコア間の負荷分散の一例を示している。スナップショットにおいて、ストレージノード１００ａでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータ（新データ）のキャッシュ領域への格納（図３５（ａ）の（ｉ））と、旧データのキャッシュ領域への書き込み（図３５（ａ）の（ｉｉ））と、キャッシュ領域に格納された新データの論理ユニット（ＬＵ  ａ０）への書き込み（図３５（ａ）の（ｉｉｉ））と、キャッシュ領域に格納された旧データの論理ユニット（ＶＬＵ  ａ０）への書き込み（図３５（ａ）の（ｉｖ）と、が実行される。このとき、図３５（ａ）の（ｉ）から（ｉｉｉ）までの処理はＣＰＵのコアｐが担当し、図３５（ａ）の（ｉｖ）の処理はＣＰＵのコアｑが担当する。このようにすれば、ストレージシステム１０００におけるスナップショットにおいて、コントローラ１１０内のコア間で負荷分散を行うことができる。
【０１４８】
図３５（ｂ）には、スナップショットにおけるストレージノード間の負荷分散の一例を示している。スナップショットにおける処理は、図３５（ａ）に示した処理と同様である（図３５（ｂ）の（ｉ）から（ｉｖ））。このとき、図３５（ｂ）の（ｉ）から（ｉｉｉ）までの処理は、ストレージノード１００ａのコアｐが担当し、図３５（ｂ）の（ｉｖ）の処理は、ストレージノード１００ｂのコアｐが担当する。このようにすれば、ストレージシステム１０００におけるスナップショットにおいて、ストレージノード１００間で負荷分散を行うことができる。
【０１４９】
なお、図３５において、（ｉｉｉ）の処理と（ｉｖ）の処理とは、並行して実行可能である。また、図３５の（ｉｉ）の処理から（ｉｖ）の処理への移行は、図３３の場合と同様に、コア間で連絡を行うことにより実現可能である。また、各コアの処理の分担は、図３５に示した分担とは異なる分担としてもよい。
【０１５０】
図３６は、ストレージシステム１０００におけるリモートコピーに関する応用の一例を示す説明図である。ストレージシステム１０００におけるリモートコピーとは、ホストコンピュータにアクセスされる論理ユニット１９０内のデータと同じデータを格納した他の論理ユニット１９０を地理的に離れた地点（リモートサイト）に位置するストレージシステム１０００内に保持することによって、データの冗長性確保やディザスタリカバリを実現する処理である。リモートコピーでは、ホストコンピュータからのライトデータが受領されると、ライトデータの論理ユニット１９０への書き込みが行われると共に、当該ライトデータのリモートサイトへの転送が実行される。本実施例のストレージシステム１０００では、このようなリモートコピーを実行する際に、負荷分散を図ることができる。
【０１５１】
図３６（ａ）には、リモートコピーにおけるコントローラ１１０内のＣＰＵコア間の負荷分散の一例を示している。リモートコピーにおいて、ストレージノード１００ａでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納（図３６（ａ）の（ｉ））と、ライトデータの論理ユニット１９０（ＬＵ  ａ０）への書き込み（図３６（ａ）の（ｉｉ））と、ライトデータのリモートサイトへの転送（図３６（ａ）の（ｉｉｉ））と、が実行される。このとき、図３６（ａ）の（ｉ）および（ｉｉ）の処理はＣＰＵのコアｐが担当し、図３６（ａ）の（ｉｉｉ）の処理はＣＰＵのコアｑが担当する。このようにすれば、ストレージシステム１０００におけるリモートコピーにおいて、コントローラ１１０内のコア間で負荷分散を行うことができる。
【０１５２】
図３６（ｂ）には、リモートコピーにおけるストレージノード間の負荷分散の一例を示している。リモートコピーにおける処理は、図３６（ａ）に示した処理と同様である（図３６（ｂ）の（ｉ）から（ｉｉｉ））。このとき、図３６（ｂ）の（ｉ）および（ｉｉ）の処理は、ストレージノード１００ａのコアｐが担当し、図３６（ｂ）の（ｉｉｉ）の処理は、ストレージノード１００ｂのコアｐが担当する。このようにすれば、ストレージシステム１０００におけるリモートコピーにおいて、ストレージノード１００間で負荷分散を行うことができる。なお、各コアの処理の分担は、図３６に示した分担とは異なる分担としてもよい。
【０１５３】
図３７は、ストレージシステム１０００におけるストレージノード１００間のミラーリングに関する応用の一例を示す説明図である。ストレージノード１００間のミラーリングとは、それぞれ異なるストレージノード１００に属する２つの論理ユニット１９０間で、ミラーリングを行う処理である。図３７の例では、ストレージノード１００ａ内の論理ユニット（ＬＵ  ａ０）とストレージノード１００ｂ内の論理ユニット（ＬＵ  ｂ０）との間でミラーリングが行われる。ストレージノード１００間のミラーリングでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納（図３７の（ｉ））と、ライトデータの論理ユニット（ＬＵ  ａ０）への書き込み（図３７の（ｉｉ））と、ライトデータの論理ユニット（ＬＵ  ｂ０）への書き込み（図３７の（ｉｉｉ））と、が実行される。本実施例のストレージシステム１０００では、図３７の（ｉ）から（ｉｉｉ）までの処理を、ストレージノード１００ａのコアｐが実行することができる。また、例えば、（ｉｉｉ）の処理を、ストレージノード１００ｂのコアｐが実行するなどして、ストレージノード１００間の負荷分散を図ることもできる。
【０１５４】
図３８は、ストレージシステム１０００におけるストレージノード１００間ＲＡＩＤに関する応用の一例を示す説明図である。ストレージノード１００間ＲＡＩＤとは、複数のストレージノード１００間にまたがってＲＡＩＤを構成することを意味している。図３８の例では、ストレージノード１００ａ、ストレージノード１００ｂおよびストレージノード１００ｃのそれぞれに含まれる計３つのディスク１９４によりＲＡＩＤが構成され、ストライピングが実行される。このような構成のストレージシステム１０００において、ホストコンピュータからのライトコマンドが受領された場合には、ホストコンピュータから受領したライトコマンドに含まれるライトデータ（図３８のＤ０およびＤ１）のキャッシュ領域への格納（図３８の（ｉ））と、ライトデータに基づくパリティ（図３８のＰ０）の生成（図３８の（ｉｉ））と、ライトデータおよびパリティのディスク１９４への格納（図３８の（ｉｉｉ）から（ｖ））と、が実行される。本実施例のストレージシステム１０００では、図３８の（ｉ）から（ｖ）までの処理を、ストレージノード１００ａのコアｐが実行することができる。また、例えば、（ｉｖ）の処理をストレージノード１００ｂのコアが実行し、（ｖ）の処理をストレージノード１００ｃのコアが実行するなどして、ストレージノード１００間の負荷分散を図ることもできる。
【０１５５】
なお、本実施例のストレージシステム１０００では、ストレージノード１００の増設が繰り返し行われても、管理者はシングルシステムイメージでストレージシステムを管理することができる。そのため、従来型のストレージシステムを複数台ばらばらに管理する場合と比較して、ストレージシステムの管理コストを大幅に低減することができる。
【０１５６】
また、本実施例のストレージシステム１０００では、以下の４つの利点を得ることができる。第１に、小規模で低コストに構成されたストレージノード１００を複数台集合することで、大規模でコストパフォーマンスの良いストレージシステム１０００を提供することができる。第２に、容量や性能の拡大要求に従い、ストレージノード１００単位での増設が可能となり、常に最適コストで構成されたスケーラブルなストレージシステム１０００を提供することができる。第３に、ストレージノード１００の増減設に伴うノード間担当ＣＰＵコア切り替えの際に、ホストコンピュータ２００のアプリケーションに透過な処理を実現できるので、寿命によってストレージノード１００の交換が必要な際にも、運用を停止する必要が無く、ストレージノード１００の寿命を超えた長期のデータ保存を実現することができる。第４に、ストレージノード１００の組み合わせにより、小規模から大規模まで、また、各種アプリケーションに応じた柔軟なシステム構成を実現できるので、製品開発の際に製品の種類（製品ラインナップ数）を少なくすることができる。
【０１５７】
Ｂ．第２実施例：
図３９は、第２実施例におけるデータ処理システム１０の構成を概略的に示す説明図である。第２実施例のデータ処理システム１０は、各ストレージノード１００が２つのコントローラ１１０を含んでいる点が、図１に示した第１実施例のデータ処理システム１０とは異なっている。また、第２実施例のデータ処理システム１０は、ストレージシステム１０００が２つのスイッチ３００を含んでいる点も、第１実施例のデータ処理システム１０とは異なっている。
【０１５８】
第２実施例におけるストレージシステム１０００では、各ストレージノード１００が２つのコントローラ１１０を含んでおり、コントローラ１１０に関して冗長性を有している。そして、各コントローラ１１０は、２つの系列の内のいずれかに属するように設定されている。ここで、系列とは、コントローラ１１０のグループを意味しており、２つの系列を「ｘ系列」および「ｙ系列」と呼ぶものとしている。
【０１５９】
コントローラ１１０の系列は、１つのストレージノード１００内の２つのコントローラ１１０が、それぞれ異なる系列に属するように設定される。例えば、ストレージノード１００ａ内の２つのコントローラ１１０ａの内の、一方はｘ系列に属し、他方はｙ系列に属するように、系列が設定される。ストレージノード１００ｂおよびストレージノード１００ｃ内の２つのコントローラ１１０についても、同様に設定される。本明細書および図面では、ｘ系列に属するコントローラ１１０の名前および符号の末尾には「ｘ」の添字を付し、ｙ系列に属するコントローラ１１０の名前および符号の末尾には「ｙ」の添字を付している。例えば、ストレージノード１００ａ内のｘ系列に属するコントローラ１１０は、コントローラ１１０ａｘ（ＣＴＬ  ａｘ）と表される。
【０１６０】
図３９に示すように、１つのストレージノード１００内の２つのコントローラ１１０は、互いに接続されている。また、１つのストレージノード１００内の２つのコントローラ１１０は、それぞれ、当該ストレージノード１００内のすべての論理ユニット１９０と接続されている。例えば、ストレージノード１００ａ内の２つのコントローラ１１０（ＣＴＬａｘおよびＣＴＬａｙ）のそれぞれは、２つの論理ユニット１９０（ＬＵａ０およびＬＵａ１）と接続されている。
【０１６１】
また、ストレージシステム１０００の各ストレージノード１００内のコントローラ１１０の内、同じ系列に属するコントローラ１１０同士は、ノード間コントローラ結合部１０２によって互いに接続されている。すなわち、ノード間コントローラ結合部１０２によって、各ストレージノード１００の有するｘ系列に属する３つのコントローラ１１０（ＣＴＬａｘ、ＣＴＬｂｘ、ＣＴＬｃｘ）は、互いに接続されている。同様に、ノード間コントローラ結合部１０２によって、各ストレージノード１００の有するｙ系列に属する３つのコントローラ１１０（ＣＴＬａｙ、ＣＴＬｂｙ、ＣＴＬｃｙ）も互いに接続されている。これらのノード間コントローラ結合部１０２は、スイッチ３００を介することなく、すなわち、コントローラ１１０とホストコンピュータ２００との間のアクセスパスを介することなく、コントローラ１１０間を接続している。
【０１６２】
ストレージシステム１０００内の２つのスイッチ３００は、各ストレージノード１００の有する２つのコントローラ１１０のそれぞれに対応している。すなわち、一方のスイッチ３００ｘ（スイッチｘ）は、各ストレージノード１００に含まれるｘ系列に属するコントローラ１１０のそれぞれと接続され、他方のスイッチ３００ｙ（スイッチｙ）は、各ストレージノード１００に含まれるｙ系列に属するコントローラ１１０のそれぞれと接続される。なお、２つのスイッチ３００は、それぞれ、ホストコンピュータ２００、管理装置４００およびネームサーバ５００とも接続される。
【０１６３】
図４０は、第２実施例におけるノード間コントローラ結合部１０２の構成を示す説明図である。第２実施例におけるノード間コントローラ結合部１０２は、図３に示した第１実施例におけるノード間コントローラ結合部１０２と同様である。すなわち、ストレージノード１００の各コントローラ１１０内のブリッジ１４０は、スイッチ（ＳＷ）１４２を有し、同一系列に属するコントローラ１１０は、スイッチ１４２間を接続する接続線１０４によって、互いに接続されている。なお、ストレージノード１００内では、２つのコントローラ１１０内のスイッチ１４２間を接続する接続線によって、２つのコントローラ１１０が互いに接続されている。
【０１６４】
図４１は、第２実施例におけるストレージシステム１０００のアドレス空間を概念的に示す説明図である。図４１には、ストレージノード１００ａのコントローラ１１０ａｘ（図３９）内のコアｐ（図示せず）から見たストレージシステム１０００のアドレス空間を示している。図４１に示した第２実施例におけるアドレス空間は、図２２に示した第１実施例のアドレス空間と同様である。すなわち、図４１に示すように、ストレージノード１００ａのコントローラ１１０ａｘのコアｐから見たストレージシステム１０００のアドレス空間には、ストレージシステム１０００内のすべての空間が規則的にマッピングされている。これは、他のコアから見たアドレス空間についても同様である。従って、ストレージシステム１０００内に含まれるＣＰＵのコアは、アドレス空間にマッピングされたすべての空間を参照することができる。
【０１６５】
従って、第２実施例のストレージシステム１０００では、第１実施例で説明したコントローラ内担当ＣＰＵコア切り替えや、ノード間担当ＣＰＵコア切り替えを実現可能である。さらに、第２実施例のストレージシステム１０００では、同一ストレージノード１００内の異なるコントローラ１１０に含まれるＣＰＵコア間で担当ＣＰＵコアの切り替えを行うノード内コントローラ間担当ＣＰＵコア切り替えを実現可能である。
【０１６６】
Ｃ．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１６７】
Ｃ−１．変形例１：
上記各実施例におけるノード間コントローラ結合部１０２（図１および図３９）の構成（図３および図４０）は、あくまで一例であり、ノード間コントローラ結合部１０２の構成を他の構成とすることも可能である。図４２は、変形例としてのノード間コントローラ結合部１０２の構成を示す説明図である。
【０１６８】
図４２に示す変形例では、結合部スイッチ１０６が設けられ、結合部スイッチ１０６は、接続線１０４によって各コントローラ１１０のスイッチ（ＳＷ）１４２と接続される。すなわち、図４２に示す変形例では、ノード間コントローラ結合部１０２が、結合部スイッチ１０６と、結合部スイッチ１０６とスイッチ１４２とを接続する接続線１０４とから構成される。図４２に示す変形例では、コントローラ１１０間を接続するための構成を簡素化することができる。なお、図４２の変形例では、結合部スイッチ１０６とスイッチ１４２とを接続する接続線１０４が、１本の線によって構成されているが、接続線１０４を２本の線の組によって構成してもよい。
【０１６９】
なお、図４２には、図３に示した第１実施例におけるノード間コントローラ結合部１０２に対応した変形例を示しているが、図３９に示した第２実施例におけるノード間コントローラ結合部１０２についても、同様に変形可能である。
【０１７０】
図４３は、他の変形例としてのノード間コントローラ結合部１０２の構成を示す説明図である。図４３の変形例は、図４０に示した第２実施例におけるノード間コントローラ結合部１０２に対応した変形例を示している。
【０１７１】
図４３に示す変形例では、２つの結合部スイッチ１０６が設けられ、ノード間コントローラ結合部１０２が、系列毎に、結合部スイッチ１０６と、結合部スイッチ１０６およびスイッチ１４２を接続する接続線１０４とから構成されている。さらに、図４３に示す変形例では、２つの結合部スイッチ１０６が、接続線１０５によって接続されており、この接続線１０５を介して、ストレージノード１００内の２つのコントローラ１１０が接続される。図４３に示す変形例では、コントローラ１１０間を接続するための構成をさらに簡素化することができる。なお、図４３に示す変形例においても、各接続線を２本の線の組によって構成してもよい。
【０１７２】
Ｃ−２．変形例２：
図４４は、変形例としてのストレージノード１００の構成を示す説明図である。上記各実施例におけるストレージノード１００の構成（図２および図３参照）との違いは、ストレージノード１００内のコントローラ１１０の構成である。
【０１７３】
図４４に示す変形例では、コントローラ１１０は、コントローラチップ（ＣＴＬチップ）１１２とメモリ１６０とから構成されている。すなわち、コントローラ１１０内のメモリ１６０以外の構成要素は、１つのチップ上に配置されている。
【０１７４】
図４４に示す変形例において、コントローラチップ１１２上には、ＣＰＵ１２０と、ネットワークコントローラ１３０と、ブリッジ回路１４１およびスイッチ（ＳＷ）１４２と、ＦＣコントローラ１５０と、が配置されている。コントローラチップ１１２上には、また、各種回路（ＤＭＡ回路１１４、パリティ演算回路１１６、メモリ制御回路１６８）が配置されている。
【０１７５】
Ｃ−３．変形例３：
上記各実施例におけるホストコンピュータ２００とストレージノード１００との間のアクセスパス変更の方法（図３０）は、あくまで一例であり、他の方法を用いることも可能である。図４５は、ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更処理の変形例を示す説明図である。図４５の変形例において、ストレージノード１００のコントローラ１１０間では、担当ＣＰＵコアの引継ぎが行われる（図４５の（ｉ））。また、ホストコンピュータ２００は、パス切り替えプログラム２２０を有しており、ホストコンピュータ２００に接続された管理装置４００からの指示に従って、ストレージノード１００へのパスの切り替えを行う（図４５の（ｉｉ））。図４５の変形例の方法は、ＦＣプロトコルやＳＡＳプロトコルを利用するシステムにおいて適用可能である。
【０１７６】
図４６は、ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更処理の他の変形例を示す説明図である。図４６の変形例では、スイッチ３００がバーチャリゼーション装置３１０を有している。バーチャリゼーション装置３１０は、仮想ポートを有しており、ホストコンピュータ２００のイニシエータと仮想ポートとを対応付けていると共に、ストレージノード１００のターゲットと仮想ポートとを対応付けられている。すなわち、ホストコンピュータ２００のイニシエータとストレージノード１００のターゲットとが、バーチャリゼーション装置３１０の仮想ポートを介して対応付けられている。
【０１７７】
ストレージノード１００のコントローラ１１０間における担当ＣＰＵコアの引継ぎ（図４６の（ｉ））に伴い、ターゲットが移動されると、バーチャリゼーション装置３１０において仮想ポートとターゲットとの対応が更新される。これにより、ホストコンピュータ２００のアクセス先（仮想ポート）が変更されることなく、ホストコンピュータ２００とストレージノード１００との間のパスの切り替えを実行することができる（図４６の（ｉｉ））。図４６の変形例の方法は、ｉＳＣＳＩプロトコルを用いるシステムに適用できると共に、ターゲットの移動に伴いターゲットネーム（もしくはＷＷＮ）が変更されるＦＣプロトコルやＳＡＳプロトコルを利用するシステムにも適用可能である。
【０１７８】
Ｃ−４．変形例４：
上記各実施例におけるデータ処理システム１０（図１）の構成は、あくまで一例であり、データ処理システム１０の構成を他の構成とすることも可能である。例えば、データ処理システム１０において、ストレージシステム１０００が１つのストレージノード１００のみを備えるとしてもよい。この場合にも、上述のコントローラ内担当ＣＰＵコア切り替えを実現可能である。
【０１７９】
また、ストレージシステム１０００に含まれるストレージノード１００のコントローラ１１０内のＣＰＵ１２０（図５）が、１つのコア１２２のみを有するとしてもよい。この場合にも、上述のノード間担当ＣＰＵコア切り替えを実現可能である。
【０１８０】
また、データ処理システム１０において用いられるプロトコルとして、種々のプロトコルを採用可能である。データ処理システム１０の各構成要素は、採用するプロトコルに従った構成とすることができる。例えば、上記各実施例のネットワークコントローラ１３０は、イーサネット（Ｅｔｈｅｒｎｅｔ）（登録商標）、ｉＳＣＳＩコントローラ、ＦＣコントローラ、ＳＡＳコントローラ等として構成可能である。また、上記各実施例のＦＣコントローラ１５０は、ＦＣコントローラ、ＳＡＳコントローラ、ＳＡＴＡコントローラ、ＳＣＳＩコントローラ等として構成可能である。また、ストレージノード１００間のネットワークとして、イーサネット、ＰＣＩ−ＥＸＰＲＥＳＳ、ＩｎｆｉｎｉＢａｎｄ、ＰＣＩ／ＰＣＩ−Ｘ、専用線等を採用可能である。なお、コントローラ１１０を、図４４に示すように、１つのチップ上に配置された構成とした場合には、回路がコンパクトであるという理由から、ＦＣコントローラ１５０としてＳＡＳコントローラを採用するのが好ましい。また、コントローラ１１０を１つのチップ上に配置された構成とした場合には、ストレージノード１００間のネットワークとして、シリアル線であるＰＣＩ−ＥＸＰＲＥＳＳやＩｎｆｉｎｉＢａｎｄを採用するのが好ましい。
【０１８１】
Ｃ−５．変形例５：
上記各実施例におけるホストコマンド実行処理（図１５および図１６）の内容は、あくまで一例であり、他の内容に変更することも可能である。例えば、ネットワークコントローラ１３０からＣＰＵ１２０への割り込み要求の発行（図１５のステップＳ１４０）や、ＦＣコントローラ１５０からＣＰＵ１２０への割り込み要求の発行（図１６のステップＳ２００）は、必ずしも行われる必要はなく、ポーリング等によってＣＰＵ１２０の処理への移行を実現可能である。
【図面の簡単な説明】
【０１８２】
【図１】本発明の第１実施例におけるデータ処理システムの構成を概略的に示す説明図である。
【図２】ストレージノード１００のハードウェア構成の一例を示す説明図である。
【図３】ノード間コントローラ結合部１０２の構成を示す説明図である。
【図４】ストレージノード１００に含まれる論理ユニット１９０の構成の一例を示す説明図である。
【図５】ストレージノード１００のコントローラ１１０に含まれるＣＰＵ１２０の構成の一例を示す説明図である。
【図６】ストレージノード１００のコントローラ１１０に含まれるＦＣコントローラ１５０の構成の一例を示す説明図である。
【図７】ストレージノード１００のコントローラ１１０に含まれるネットワークコントローラ１３０の構成の一例を示す説明図である。
【図８】ストレージノード１００のコントローラ１１０に含まれるメモリ１６０の構成の一例を示す説明図である。
【図９】ＬＵ管理テーブルの一例を示す説明図である。
【図１０】ターゲット管理テーブルの一例を示す説明図である。
【図１１】イニシエータ管理テーブルの一例を示す説明図である。
【図１２】ネームサーバ５００の構成の一例を示す説明図である。
【図１３】ストレージシステム１０００の製品形態の一例を示す説明図である。
【図１４】ストレージシステム１０００の製品形態の他の一例を示す説明図である。
【図１５】ストレージシステム１０００のストレージノード１００におけるホストコマンド実行処理の流れを示すフローチャートである。
【図１６】ストレージシステム１０００のストレージノード１００におけるホストコマンド実行処理の流れを示すフローチャートである。
【図１７】ストレージノード１００におけるホストコマンド実行処理の概要を示す説明図である。
【図１８】ストレージノード１００におけるホストコマンド実行処理の概要を示す説明図である。
【図１９】コントローラ内担当ＣＰＵコア切り替え後のホストコマンド実行処理の概要を示す説明図である。
【図２０】ストレージノード１００のコントローラ１１０内におけるアドレス空間を概念的に示す説明図である。
【図２１】ストレージノード１００のコントローラ１１０内におけるメモリマップを示す説明図である。
【図２２】ストレージシステム１０００のアドレス空間を概念的に示す説明図である。
【図２３】ストレージシステム１０００のメモリマップを示す説明図である。
【図２４】ノード間担当ＣＰＵコア切り替えの一例を示す説明図である。
【図２５】ノード間担当ＣＰＵコア切り替え後の担当ＣＰＵコアから見たストレージシステム１０００のアドレス空間を概念的に示す説明図である。
【図２６】ノード間担当ＣＰＵコア切り替え後のホストコマンド実行処理の流れを示すフローチャートである。
【図２７】ノード間担当ＣＰＵコア切り替え後のホストコマンド実行処理の流れを示すフローチャートである。
【図２８】ノード間担当ＣＰＵコア切り替え後のホストコマンド実行処理の概要を示す説明図である。
【図２９】ノード間担当ＣＰＵコア切り替え後のホストコマンド実行処理の概要を示す説明図である。
【図３０】ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更処理の一例を示す説明図である。
【図３１】ストレージシステム１０００の管理装置４００の管理画面４１０の一例を示す説明図である。
【図３２】ストレージシステム１０００の管理装置４００の管理画面４１０の他の一例を示す説明図である。
【図３３】ストレージシステム１０００におけるシャドウイメージに関する応用の一例を示す説明図である。
【図３４】ストレージシステム１０００におけるシャドウイメージに関する応用の他の例を示す説明図である。
【図３５】ストレージシステム１０００におけるスナップショットに関する応用の一例を示す説明図である。
【図３６】ストレージシステム１０００におけるリモートコピーに関する応用の一例を示す説明図である。
【図３７】ストレージシステム１０００におけるストレージノード１００間のミラーリングに関する応用の一例を示す説明図である。
【図３８】ストレージシステム１０００におけるストレージノード１００間ＲＡＩＤに関する応用の一例を示す説明図である。
【図３９】第２実施例におけるデータ処理システムの構成を概略的に示す説明図である。
【図４０】第２実施例におけるノード間コントローラ結合部１０２の構成を示す説明図である。
【図４１】第２実施例におけるストレージシステム１０００のアドレス空間を概念的に示す説明図である。
【図４２】変形例としてのノード間コントローラ結合部１０２の構成を示す説明図である。
【図４３】他の変形例としてのノード間コントローラ結合部１０２の構成を示す説明図である。
【図４４】変形例としてのストレージノード１００の構成を示す説明図である。
【図４５】ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更処理の変形例を示す説明図である。
【図４６】ホストコンピュータ２００とストレージノード１００との間のアクセスパスの変更処理の他の変形例を示す説明図である。
【符号の説明】
【０１８３】
１０...データ処理システム
１００...ストレージノード
１０２...ノード間コントローラ結合部
１０４...接続線
１０５...接続線
１０６...結合部スイッチ
１１０...コントローラ
１１２...コントローラチップ
１１４...ＤＭＡ回路
１１６...パリティ演算回路
１２０...ＣＰＵ
１２２...コア
１３０...ネットワークコントローラ
１３２...ドアベルレジスタ
１３４...ＮＷＣドアベル
１３８...割り込み線
１４０...ブリッジ
１４１...ブリッジ回路
１４２...スイッチ
１４４...割り込み変換器
１５０...ＦＣコントローラ
１５２...ドアベルレジスタ
１５４...ＦＣＣドアベル
１５６...ＣＰＵ対応器
１５８...割り込み線
１６０...メモリ
１６２...キャッシュ領域
１６４...制御データ領域
１６６...制御プログラム領域
１６８...メモリ制御回路
１７１...システム構成管理テーブル
１７２...ＬＵ管理テーブル
１７３...ターゲット管理テーブル
１７４...イニシエータ管理テーブル
１７６...ＮＷＣメールボックス
１７８...ＦＣＣメールボックス
１８０...オペレーティングシステムプログラム
１８３...ターゲット制御プログラム
１８４...ＲＡＩＤ制御プログラム
１８５...キャッシュ制御プログラム
１８６...ディスク制御プログラム
１８７...ＦＣ制御プログラム
１８８...ＬＵ制御プログラム
１８９...通信プログラム
１９０...論理ユニット
１９２...ファイバチャネル
１９４...ディスク
２００...ホストコンピュータ
２１０...イニシエータ管理テーブル
２２０...パス切り替えプログラム
３００...スイッチ
３１０...バーチャリゼーション装置
４００...管理装置
４１０...管理画面
５００...ネームサーバ
５２０...ＣＰＵ
５３０...ネットワークコントローラ
５４０...ブリッジ
５６０...メモリ
５６２...制御データ領域
５６４...制御プログラム領域
５７１...ネーム管理テーブル
５８０...オペレーティングシステムプログラム
５８２...ネーム管理プログラム
５８３...通信プログラム
１０００...ストレージシステム
１２００...コントローラ筐体
１３００...ディスク筐体
【図１】
0004814617.tif 000002
【図２】
0004814617.tif 000003
【図３】
0004814617.tif 000004
【図４】
0004814617.tif 000005
【図５】
0004814617.tif 000006
【図６】
0004814617.tif 000007
【図７】
0004814617.tif 000008
【図８】
0004814617.tif 000009
【図９】
0004814617.tif 000010
【図１０】
0004814617.tif 000011
【図１１】
0004814617.tif 000012
【図１２】
0004814617.tif 000013
【図１３】
0004814617.tif 000014
【図１４】
0004814617.tif 000015
【図１５】
0004814617.tif 000016
【図１６】
0004814617.tif 000017
【図１７】
0004814617.tif 000018
【図１８】
0004814617.tif 000019
【図１９】
0004814617.tif 000020
【図２０】
0004814617.tif 000021
【図２１】
0004814617.tif 000022
【図２２】
0004814617.tif 000023
【図２３】
0004814617.tif 000024
【図２４】
0004814617.tif 000025
【図２５】
0004814617.tif 000026
【図２６】
0004814617.tif 000027
【図２７】
0004814617.tif 000028
【図２８】
0004814617.tif 000029
【図２９】
0004814617.tif 000030
【図３０】
0004814617.tif 000031
【図３１】
0004814617.tif 000032
【図３２】
0004814617.tif 000033
【図３３】
0004814617.tif 000034
【図３４】
0004814617.tif 000035
【図３５】
0004814617.tif 000036
【図３６】
0004814617.tif 000037
【図３７】
0004814617.tif 000038
【図３８】
0004814617.tif 000039
【図３９】
0004814617.tif 000040
【図４０】
0004814617.tif 000041
【図４１】
0004814617.tif 000042
【図４２】
0004814617.tif 000043
【図４３】
0004814617.tif 000044
【図４４】
0004814617.tif 000045
【図４５】
0004814617.tif 000046
【図４６】
0004814617.tif 000047