(57)【要約】【課題】複数のストレージコントローラが相互に通信を行うシステムにおいて、各ストレージコントローラのシステム内の識別子を決定する。【解決手段】ストレージシステムは、複数のボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理する複数のコントローラと、それぞれが複数のポートを有する複数のスイッチと、を含む。複数のコントローラは、複数のスイッチに並列に接続され、複数のスイッチを介して互いに通信する。複数のコントローラの各コントローラは、接続されているスイッチから、接続されている複数のポートを同定する複数のポート識別子を取得し、取得した複数のポート識別子に基づき、ストレージシステム内のコントローラ識別子を決定する。【選択図】図１
2020077137.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムであって、
複数のボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理する複数のコントローラと、
それぞれが複数のポートを有する複数のスイッチと、を含み、
前記複数のコントローラは、前記複数のスイッチに並列に接続され、前記複数のスイッチを介して互いに通信し、
前記複数のコントローラの各コントローラは、
前記接続されているスイッチから、接続されている複数のポートを同定する複数のポート識別子を取得し、
前記取得した複数のポート識別子に基づき、前記ストレージシステム内のコントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記複数のスイッチは、それぞれ、前記ポート識別子を格納するメモリを含む、ことを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記複数のストレージコントローラは、それぞれ、前記コントローラ識別子を格納するメモリを含む、ことを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記複数のスイッチは、それぞれが同じポート識別子のセットを有していることを特徴とするストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記複数のスイッチと前記複数のコントローラにおける第１コントローラとの間の一部の接続が不通である場合、
前記第１コントローラは、
前記複数のスイッチのいずれかを介して前記複数のコントローラの他の全てのコントローラに接続可能な場合に、前記複数のスイッチにおいて前記第１コントローラが接続されているスイッチそれぞれから取得した、前記第１コントローラが接続されているポートのポート識別子に基づき、前記第１コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項６】
請求項４に記載のストレージシステムであって、
前記複数のコントローラにおける第１コントローラは、
前記複数のスイッチにおいて接続されているスイッチそれぞれから、前記第１コントローラが接続されているポートのポート識別子を取得し、
前記ポート識別子において最多のポート識別子に基づき、前記第１コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項７】
請求項４に記載のストレージシステムであって、
前記複数のコントローラにおける第１コントローラと第２コントローラとが、異なるスイッチの同一のポート識別子のポートに接続している場合、
前記第１コントローラは閉塞し、
前記第２コントローラは、前記同一のポート識別子に基づき前記第２コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項８】
請求項４に記載のストレージシステムであって、
前記複数のコントローラにおける第１コントローラと第２コントローラとが、前記複数のスイッチを介して通信不可能な場合、
前記第１コントローラは閉塞し、
前記第２コントローラは、前記複数のスイッチにおいて前記第２コントローラに接続されているスイッチから取得した前記第２コントローラが接続されているポートのポート識別子に基づいて、前記第２コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項９】
ストレージコントローラのストレージシステム内の識別子を決定する方法であって、
前記ストレージシステムは、
複数のボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理する複数のコントローラと、
それぞれが複数のポートを有する複数のスイッチと、を含み、
前記複数のコントローラは、前記複数のスイッチに並列に接続され、前記複数のスイッチを介して互いに通信し、
前記方法は、
前記複数のコントローラの各コントローラが、接続されているスイッチから、接続されている複数のポートを同定する複数のポート識別子を取得し、
前記複数のコントローラの各コントローラが、前記取得した複数のポート識別子に基づき、前記ストレージシステム内のコントローラ識別子を決定する、ことを含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムに関する。
【背景技術】
【０００２】
クラウドサービスを提供する企業は、導入コストを削減するために、サービスの初期稼働時は当面必要となる資源でストレージシステムを構築する。企業は、サービスが稼動し、資源の利用量が増加してきたら、ストレージシステムのストレージコントローラ台数を増やして、システム全体の処理能力を向上させるスケールアウト型ストレージシステムを用いることが多い。
【０００３】
スケールアウト型ストレージシステムは、複数のストレージコントローラを統合して一つのストレージシステムとして制御し、ストレージシステム内のストレージコントローラは、相互にメッセージの送受信および制御情報の読み書きを行う。ストレージコントローラ間で通信を行うために、各ストレージコントローラにアドレスを割り当てる必要がある。さらに、各ストレージコントローラにアドレスを割り当てるために、各ストレージコントローラは固有の識別番号を持つ必要がある。アドレスの割り当て方法としては、例えば、特許文献１には、コントローラ外で各コントローラの識別番号を管理し割り当てることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１７０３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、スケールアウト型ストレージシステムは、初期立ち上げの際にアドレスが割り当てられていないストレージコントローラ間で通信を開始するために、各ストレージコントローラのアドレスを一意に決定する必要がある。さらに、各ストレージコントローラのアドレスを割り当てるために、各ストレージコントローラはシステム内で固有の識別子を持つ必要がある。
【０００６】
特許文献１は、各ストレージコントローラのアドレスを一意に決定することができる。しかし、特許文献１は、ストレージコントローラと異なる装置が、ストレージコントローラそれぞれの識別子の管理及び割り当てを行うことが必要である。
【課題を解決するための手段】
【０００７】
本発明の一態様のストレージシステムは、複数のボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理する複数のコントローラと、それぞれが複数のポートを有する複数のスイッチと、を含む。前記複数のコントローラは、前記複数のスイッチに並列に接続され、前記複数のスイッチを介して互いに通信する。前記複数のコントローラの各コントローラは、前記接続されているスイッチから、接続されている複数のポートを同定する複数のポート識別子を取得し、前記取得した複数のポート識別子に基づき、前記ストレージシステム内のコントローラ識別子を決定する。
【発明の効果】
【０００８】
本発明の一態様によれば、複数のストレージコントローラが相互に通信を行うシステムにおいて、各ストレージコントローラのシステム内の識別子を決定することができる。
【０００９】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】計算機システムの構成例を示す図である。
【図２】メモリの構成を示す図である。
【図３】メモリの論理構成を示す図である。
【図４】プログラム格納領域の構成を示す図である。
【図５】共有メモリ領域の構成を示す図である。
【図６】ストレージ装置とＳＷのパス接続構成を示す図である。
【図７】コントローラ番号決定処理を説明するフローチャートの例である。
【図８】コントローラ番号決定処理を説明するシーケンス図である。
【図９】１パス接続障害または誤接続の一例を示す図である。
【図１０】２パス誤接続の一例を示す図である。
【図１１】誤接続によるコントローラ閉塞の一例を示す図である。
【図１２】ＨＣＡ障害によるコントローラ閉塞の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて説明する。本実施形態では、スケールアウト型ストレージシステムにおいて、複数のストレージコントローラの識別番号を自動で決定することが可能となる例を説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特長の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、計算機システムの構成例を示す図である。計算機システムは、複数のストレージ装置１０１とホスト１０２と、ホスト１０２とストレージ装置１０１を接続する外部ネットワーク１０３を含む。なお、ストレージ装置１０１の数は２以上の任意数であり、ホスト１０２の数は任意である。
【００１３】
ストレージ装置１０１は、１又は複数のストレージコントローラ（以下、コントローラ）１０４を持ち、各コントローラ１０４は内部に一つ以上のマイクロプロセッサ（以下、プロセッサ）１０５と、一つ以上のメモリ１０６と、一つ以上のホストインタフェース（Ｉ／Ｆ）１０７と、一つ以上のドライブＩ／Ｆ１０８と、一つ以上のＨＣＡ（Ｈｏｓｔ  ＣｈＡｎｎｅｌ  ＡＤＡｐｔｅｒ）１１１を有している。
【００１４】
また、コントローラ１０４は、コントローラ間パス１０９で接続されており、互いのメモリ１０６にはプロセッサ１０５、又は図示されていないＤＭＡ（ＤｉｒｅＣｔ  Ｍｅｍｏｒｙ  ＡＣＣｅｓｓ）回路などによってアクセス可能である。
【００１５】
これ以降、簡単のため二つのコントローラを有するストレージ装置１０１の例を説明するが、コントローラの実装数は任意である。また、プロセッサがマルチコアプロセッサの場合、プロセッサ内のいくつかのコアをグループとして、論理的に複数のプロセッサとして管理してもよい。
【００１６】
ホストＩ／Ｆ１０７は、例えば、ＳＡＮ（ＳｔｏｒＡｇｅ  ＡｒｅＡ  Ｎｅｔｗｏｒｋ）などの外部ネットワーク１０３を通してホスト１０２に接続する。外部ネットワーク１０３はデータ通信ができる任意のプロトコルを使用できる。
【００１７】
ストレージ装置１０１のコントローラ１０４は、ドライブＩ／Ｆ１０８を介して一つ以上の記憶デバイス１１０に接続される。記憶デバイス１１０は、例えばＨＤＤ（ＨａｒＤ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）又はテープ型の記憶デバイスなどであってもよい。
【００１８】
記憶デバイス１１０は、その記憶領域を基に論理ボリュームを構成し、コントローラ１０４に論理ボリュームを提供することができる。複数の記憶デバイス１１０は、冗長化のためにＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）グループを構成していてもよく、構成されたＲＡＩＤグループから論理ボリュームを提供してもよい。
【００１９】
コントローラ１０４は、論理ボリュームを、ホスト１０２に対して、ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）として提供可能であり、ホスト１０２が指定するアドレスに対して書き込み要求及び読み出し要求を受け付けることが可能である。なお、各論理ボリュームには、Ｉ／Ｏ処理を担当するプロセッサ１０５が一つ設定されている。
【００２０】
ストレージ装置１０１は、ＨＣＡ１１１と一つ以上のＳＷ（Ｓｗｉｔｃｈ）１１２を介し、一つ以上の他のストレージ装置１０１と接続される。計算機システムは複数のＳＷ１１２を含み、複数のＳＷ１１２はストレージ装置１０１それぞれに並列に接続されている。ＳＷ１１２は、互いに通信可能に接続されている。各ＳＷ１１２は、メモリ１１３を有している。複数のストレージ装置１０１及び複数のＳＷ１１２は、ストレージシステムに含まれる。以下の説明において、ストレージシステムは、スケールアウト型ストレージシステムである。
【００２１】
図２は、ＳＷ１１２のメモリ１１３の論理構成を示す図である。メモリ１１３内のポート情報格納領域２０４は、対象ポート番号２０１と、接続先コントローラ固有情報２０２と、ハード無効情報２０３の領域を含む。対象ポート番号２０１は、ＳＷ１１２が持つポート番号の情報が格納されている領域である。
【００２２】
対象ポート番号２０１は、ＳＷ１１２の全てのポート（物理ポート）の番号を格納している。接続先コントローラ固有情報２０２は、対象ポート番号２０１のポートに接続されているコントローラから受信したコントローラ固有識別子、例えば、コントローラ固有ＩＤ又はコントローラ固有番号を格納する領域である。コントローラ識別子は、例えばＰＣＢ（Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ）のリビジョンである。ハード無効情報２０３は、対象ポート番号２０１のポートが有効か無効かの情報を格納する。
【００２３】
図３は、コントローラ１０４のメモリ１０６の論理構成を示す図である。メモリ１０６は、プログラム格納領域３０１、共有メモリ領域３０２、ローカルメモリ領域３０３、データバッファ領域３０４、キャッシュメモリ領域３０５を含む。
【００２４】
プログラム格納領域３０１は、同一コントローラ１０４のプロセッサ１０５が処理を実施するためのプログラムを格納する領域である。共有メモリ領域３０２は、ストレージシステム内の全てのプロセッサ１０５からアクセスされる領域で、各種制御情報を格納する。ローカルメモリ領域３０３は、特定のプロセッサ１０５のみがアクセスする領域である。メモリ１０６は、ストレージシステム内のプロセッサ１０５の数と同一数のローカルメモリ領域３０３を含む。図３においては、一つのローカルメモリ領域３０３のみが例として図示されている。
【００２５】
データバッファ領域３０４およびキャッシュメモリ領域３０５は、ホストＩ／Ｆ１０７、ドライブＩ／Ｆ１０８又はコントローラ間パス１０９等によるデータ転送の際に、一時的にデータを格納しておく領域である。なお、キャッシュメモリ領域３０５は、キャッシュセグメントに区切られている。
【００２６】
図４は、プログラム格納領域３０１の論理構成を示す図である。プログラム格納領域３０１は、メモリ１０６と同一コントローラ１０４のプロセッサ１０５が処理を実施するためのプログラムを格納している。例えば、プログラム格納領域３０１は、ポート番号判定プログラム４０１、コントローラ番号決定プログラム４０２、コマンド振り分けプログラム４０３、Ｉ／Ｏ処理プログラム４０４、ＲＡＩＤ処理プログラム４０５、コントローラ間データ転送処理プログラム４０６を格納している。
【００２７】
ポート番号判定プログラム４０１と、コントローラ番号決定プログラム４０２はストレージ装置１０１の初期立ち上げ処理に必要なプログラムの一部である。
【００２８】
ポート番号判定プログラム４０１は、ＨＣＡ１１１を介して、接続されているＳＷ１１２それぞれから、対象ポート番号２０１に格納されているポート番号と接続先コントローラ固有情報２０２に格納されているコントローラ固有識別子を取得する。
【００２９】
ポート番号判定プログラム４０１は、各ポート番号に対して、対応するコントローラ固有識別子が一意に定まるか判定する。一つのポート番号に複数のコントローラ固有識別子が対応付けられている場合、又は、一つのコントローラ固有識別子に複数のポート番号が対応付けられている場合、各ポート番号に対して、対応するコントローラ固有識別子が一意に定まらない。各ポート番号に対して、対応するコントローラ固有識別子が一意に定まらない場合やポート番号に対しコントローラ固有識別子が割り当てられていない場合は、ポート番号判定プログラム４０１は、そのポート番号の対象のハード無効情報２０３を無効にする。
【００３０】
コントローラ番号決定プログラム４０２は、対象ポート番号２０１においてポート番号判定プログラム４０１が定めたコントローラ１０４に対応するポート番号に基づき、当該コントローラ１０４のストレージシステム内の識別番号（以下、コントローラ番号）を決定する。当該識別番号は、システム内識別子の例である。
【００３１】
コマンド振り分けプログラム４０３と、Ｉ／Ｏ処理プログラム４０４と、ＲＡＩＤ処理プログラム４０５と、コントローラ間データ転送処理プログラム４０６とは、Ｉ／Ｏ処理に必要なプログラムの一部である。ホスト１０２から送られてきたリード／ライト要求は、コマンド振り分けプログラム４０３により、リード／ライト対象の論理ボリュームのＩ／Ｏ処理を担当するプロセッサ１０５に振り分けられる。
【００３２】
次に、Ｉ／Ｏ処理を担当するプロセッサ１０５が、Ｉ／Ｏ処理プログラム４０４により、対象領域のリード／ライト処理を実施する。その際、必要に応じて、ＲＡＩＤ処理プログラム４０５が、記憶デバイス１１０へのステージング及びデステージを実施する。また、コントローラ間データ転送処理プログラム４０６が、コントローラ間のデータ転送を実施する。
【００３３】
図５は、共有メモリ領域３０２の構成を示す図である。共有メモリ領域３０２は、全てのプロセッサからアクセスされる領域で、ドライブ情報テーブル５０１と、論理ボリューム情報テーブル５０２と、キャッシュセグメント属性管理情報５０３と、キャッシュセグメント管理情報５０４と、キャッシュディレクトリ５０５と、キャッシュセグメント再配置管理情報５０６と、稼働情報５０７と、共有フリーセグメント数管理情報５０８、ポート−コントローラ関連付け情報５０９の各種制御情報が格納されている。
【００３４】
キャッシュセグメントはキャッシュセグメント属性管理情報５０３、キャッシュセグメント管理情報５０４、キャッシュディレクトリ５０５により管理されている。ポート−コントローラ関連付け情報５０９は、ポート番号とコントローラ１０４に対して割り当てられているストレージシステム内で固有の識別子とを関連付ける。ポート−コントローラ関連付け情報５０９は、コントローラ間データ転送処理プログラム４０６に参照される。共有メモリ領域３０２内の各種制御情報は、複数のコントローラ１０４それぞれに含まれるメモリ１０６間でコピーされていてもよく、記憶デバイス１１０又は他の不揮発性メモリに保存されてもよい
【００３５】
図６は、ストレージ装置１０１とＳＷ１１２のパス接続構成を示す図である。なお、図６は、ストレージ装置１０１はｎ台、ＳＷは４台（１１２Ａ、１１２Ｂ、１１２Ｃ、１１２Ｄ）、各ＳＷのポート数が２ｎ＋２(０〜２ｎ＋１)個の構成例を示すが、ストレージ装置台数、ＳＷ台数、各ＳＷのポート数はこれに限らない。
【００３６】
各コントローラ１０４Ａ、１０４Ｂ、１０４Ｃ、１０４Ｄと複数のＳＷを接続する際、接続する各ＳＷのポート番号はコントローラごとに固定とする。例えば、コントローラ１０４Ａは、ＳＷ１１２Ａのポート０番と、ＳＷ１１２Ｂのポート０番と、ＳＷ１１２Ｃのポート０番と、ＳＷ１１２Ｄのポート０番にパスを接続する。また、コントローラ１０４Ｃは、ＳＷ１１２Ａのポート２ｎ番と、ＳＷ１１２Ｂのポート２ｎ番と、ＳＷ１１２Ｃのポート２ｎ番と、ＳＷ１１２Ｄのポート２ｎ番にパスを接続する。
【００３７】
上記のパス接続構成を前提とし、本実施形態は、各コントローラ１０４と接続されているポート番号に基づき、コントローラ番号を決定する。ポート番号からコントローラ番号を一致に決定できる任意の関数を使用できる。例えば、ＳＷ１１２Ａのポート０番と、ＳＷ１１２Ｂのポート０番と、ＳＷ１１２Ｃのポート０番と、ＳＷ１１２Ｄのポート０番に接続されているコントローラ１０４Ａのコントローラ番号０番とする。また、ＳＷ１１２Ａのポート２ｎ番と、ＳＷ１１２Ｂのポート２ｎ番と、ＳＷ１１２Ｃのポート２ｎ番と、ＳＷ１１２Ｄのポート２ｎ番に接続されているコントローラ１０４Ｃをコントローラ番号２ｎ番とする。
【００３８】
図７は、コントローラ番号決定処理を説明するフローチャートの例である。ストレージシステムの初期立ち上げ、また、立ち上げ後の増減設において、各コントローラ１０４が当該フローチャートに従った処理を実行する。フローチャートに基づく動作は以下のとおりである。
【００３９】
ステップ７０１において、コントローラ１０４のプロセッサ１０５は、ポート番号判定プログラム４０１によって、ＨＣＡ１１１を介して、接続されている全てのＳＷ１１２のポート情報格納領域２０４に格納されている情報を取得する。
【００４０】
ステップ７０２において、ポート番号判定プログラム４０１は、ハード無効情報が有効なポート番号とコントローラ固有識別子のペアについて、全てのＳＷ１１２からの情報が一致するか判定を行う。一つのポート番号が複数のコントローラ固有識別子とペアを構成している場合、又は、複数のポート番号が共通のコントローラ固有識別子とペアを構成している場合、当該ポート番号は、一致しないペアに含まれている。
【００４１】
全てのペアが一致した場合、フローはステップ７０３へ遷移する。いずれかのペアが一致しない場合、ポート番号判定プログラム４０１は、例えば図１０から図１２で説明する規定に基づき、一致しないペアに含まれるポート番号のポートを無効に設定するか判定を行う。無効判定された場合、ポート番号判定プログラム４０１は、ＳＷ１１２の対象ポートのハード無効情報２０３の情報を無効に設定する。無効判定されない場合、フローはステップ７０３へ遷移する。
【００４２】
ステップ７０３において、コントローラ番号決定プログラム４０２は、ステップ７０２で一致したと判定したポート番号に基づき、コントローラ番号を決定する。ステップ７０４において、コントローラ番号決定プログラム４０２は、ステップ７０３で決定したコントローラ番号とポート番号を、ポート−コントローラ関連付け情報５０９に格納する。コントローラ番号とポート番号は、他の記憶領域、例えば、コントローラ１０４内のメモリ１０６の他の記憶領域やストレージ装置１０１内に搭載する不揮発性メモリに格納されてもよい。
【００４３】
図８は、ストレージシステムの初期立ち上げにおける、コントローラ番号決定処理を説明するシーケンス図である。ストレージ装置１０１の電源投入後、プロセッサ１０５は、ファームウェア（Ｆ／Ｗ）及びそのコントローラ固有識別子を不図示の不揮発性メモリからローディング８０１する。その後、プロセッサ１０５は、プロセッサ初期設定８０２及びコントローラ初期設定８０３を行い、ＨＣＡ初期設定８０４でＨＣＡに初期立ち上げのためのメッセージ通知を行う。ＨＣＡ１１１は初期立ち上げ完了後、ＳＷ１１２とリンクアップを行い、通信可能な状態となる。
【００４４】
一方、ＳＷ１１２は電源投入後、ＳＷ初期設定８１１を行い、ＳＷ１１２とストレージ装置１０１それぞれとの間のパスがリンクアップされるまでポーリング８１２を実施する。ＳＷ１１２は、ＨＣＡ１１１とのパス接続確認をパスのリンクアップ検出８１３で行う。ＳＷ１１２は、パスのリンクアップ検出８１３時にＨＣＡ１１１を介して、接続先コントローラ固有情報２０２に格納されているストレージコントローラ固有識別子を取得する。その後、ＳＷ１１２は、パス構成の設定８１４を行い、図２で示した対象ポート番号２０１、接続先コントローラ固有情報２０２、ハード無効情報２０３に情報を格納する。リンクアップが検出されている場合、当該ポートのハード無効情報２０３の情報は有効を示す。
【００４５】
次に、ＳＷ１１２は、対象ポート番号２０１、接続先コントローラ固有情報２０２、ハード無効情報２０３に格納した情報を、接続先ＨＣＡ１１１それぞれにライトする。プロセッサ１０５は、ポート情報取得８０５で、対象ポート番号２０１、接続先コントローラ固有情報２０２、ハード無効情報２０３に格納されている情報を、ＨＣＡ１１１からリードする。
【００４６】
その後、プロセッサ１０５は、ポート番号判定８０６及びコントローラ番号決定８０７を行い、キャッシュの初期設定８０８を行う。ここで、ポート情報取得８０５、ポート番号判定８０６、コントローラ番号決定８０７は、それぞれ図７のステップ７０１、ステップ７０２、ステップ７０３の処理に従う。
【００４７】
上述のようにストレージ装置１０１とＳＷ１１２のパス接続構成を固定することで、パスの誤接続が生じる可能性がある。そこで、ＨＣＡ１１１のポートおよびＳＷ１１２のポートにランプを備え、ストレージ装置１０１及びＳＷ１１２は、誤接続時に、例えばランプを点滅又は赤点灯してもよい。これにより、ユーザに誤接続を知らせることができる。または、ストレージ装置１０１及びＳＷ１１２は、接続するパスの順番にランプを点灯させ、ユーザのパス接続作業を手引きしてもよい。
【００４８】
パスの誤接続や接続障害が生じた際のコントローラ番号決定方法について、以下図９から図１２を参照して説明する。図９は、１パス接続障害又は誤接続の一例を示す図である。図６で説明したパス接続構成を前提とし、コントローラ１０４ＡとＳＷ１１２Ａとの間で、接続障害又は誤接続の影響でパス接続されていない場合を例に、コントローラ番号決定方法を説明する。
【００４９】
コントローラ１０４Ａは、ＳＷ１１２Ａ、１１２Ｂ、１１２Ｃ、１１２Ｄそれぞれからポート情報を取得する際に、ＳＷ１１２Ａとパス接続していないため、ＳＷ１１２Ａからポート情報を取得できない。一方、ＳＷ１１２Ｂ、ＳＷ１１２Ｃ、ＳＷ１１２Ｄの各ポート０番にコントローラ１０４Ａのパスが接続されているため、コントローラ１０４Ａは、ＳＷ１１２Ｂ、ＳＷ１１２Ｃ、ＳＷ１１２Ｄからポート情報を取得可能である。この場合、ＳＷ１１２Ｂ、ＳＷ１１２Ｃ、ＳＷ１１２Ｄから取得したポート情報から、コントローラ１０４Ａは自装置及び他のコントローラのコントローラ番号を決定する。
【００５０】
このように、あるパスが接続障害または誤接続によりパス接続されていない場合でも、他のパスが正常にパス接続されている場合は、コントローラは、他のＳＷからパス情報を取得し全てのコントローラのコントローラ番号を決定することができる。図９では１本のパスが不通の例を示したが、いずれかのＳＷを介して全てのコントローラに接続可能な場合、複数のパスが不通となってもコントローラ番号の決定は可能である。
【００５１】
図１０は、２パス誤接続の一例を示す図である。図６で説明したパス接続構成を前提とし、コントローラ１０４Ａとコントローラ１０４Ｂが誤ったポートに接続されている場合を例にコントローラ番号決定方法を説明する。
【００５２】
任意のコントローラ１０４は、ＳＷ１１２Ａ、１１２Ｂ、１１２Ｃ、１１２Ｄそれぞれからポート情報を取得する。例えば、ＳＷ１１２Ａからのポート情報は、コントローラ１０４Ａがポート１番と接続されていることを示し、ＳＷ１１２Ｂ、ＳＷ１１２Ｃ、ＳＷ１１２Ｄからのポート情報はコントローラ１０４Ａがポート０番と接続されていることを示す。また、ＳＷ１１２Ａからのポート情報は、コントローラ１０４Ｂがポート０番と接続されていることを示し、ＳＷ１１２Ｂ、ＳＷ１１２Ｃ、ＳＷ１１２Ｄからのポート情報は、コントローラ１０４Ｂがポート１番と接続されていることを示す。
【００５３】
ポート番号判定プログラム４０１は、ポート番号を判定する際に、各ＳＷからのポート情報を比較し、最多数のポートが接続しているポート番号を採用する。これにより、より最も多くのポートを使用することができる。このとき少数のポートが接続しているＳＷ１１２のポートは使用しないため、ポート番号判定プログラム４０１はＳＷ１１２のメモリ１１３のハード無効情報２０３を無効に設定する。
【００５４】
図１０の場合は、ポート番号判定プログラム４０１は、コントローラ１０４Ａは各ＳＷ１１２のポート０番に接続されていると判定し、コントローラ１０４Ｂは、各ＳＷ１１２のポート１番に接続されていると判定する。また、ＳＷ１１２Ａのポート０番とポート１番のハード無効情報２０３が無効に設定される。
【００５５】
図１１は、誤接続によるコントローラ１０４閉塞の一例を示す図である。図６で説明したパス接続構成を前提とし、コントローラ１０４Ａとコントローラ１０４Ｃを同じポート番号のポートに接続した場合を例にコントローラ番号決定方法を説明する。
【００５６】
ＳＷ１１２Ａ、１１２Ｂからのポート情報は、コントローラ１０４ＡがＳＷ１１２Ａ、ＳＷ１１２Ｂのポート０番と接続されていることを示す。また、ＳＷ１１２Ｃ、１１２Ｄからポート情報は、コントローラ１０４Ｃは、ＳＷ１１２Ｃ、ＳＷ１１２Ｄのポート０番と接続されていることを示す。
【００５７】
ポート番号判定プログラム４０１は、ポート番号を判定する際に、各ＳＷからのポート情報を比較し、同一のポート番号に異なる接続先コントローラ固有情報２０２が割り当てられている場合、例えば接続先コントローラ固有情報２０２が数値のときは、より小さい数値のコントローラ固有情報２０２を採用する。ここで、採用する接続先コントローラ固有情報２０２は数値の大きいほうでもよいし、文字列などのＩＤ情報の場合はアルファベット順で先順位または逆順位を採用してもよい。
【００５８】
このとき非採用となるコントローラが接続しているＳＷ１１２のポートは使用しないため、ポート番号判定プログラム４０１はＳＷ１１２のメモリ１１３のハード無効情報２０３を無効に設定し、他のコントローラに通知する。ハード無効情報２０３が更新された後、改めてポート番号判定プログラム４０１はポート番号を判定し、接続されているポートのハード無効情報２０３が全て無効の場合、対象コントローラに閉塞を指示し、残りのコントローラのみで初期立ち上げを実施する。
【００５９】
図１１の場合は、コントローラ１０４Ａおよびコントローラ１０４Ｃは、いずれも各ＳＷ１１２のポート０番に接続されていると判定される。例えば、ポート番号判定プログラム４０１によりコントローラ１０４Ａに割り当てたポートが採用された場合、ＳＷ１１２Ｃのポート０番およびＳＷ１１２Ｄのポート０番のハード無効情報２０３を無効に設定する。その後、コントローラ１０４Ｃは、いずれのポートにも接続されていないと判定されるため、コントローラ１０４Ｃは閉塞し、コントローラ１０４Ｃ以外のコントローラで初期立ち上げを継続する。
【００６０】
図１２は、ＨＣＡ１１１障害によるコントローラ１０４閉塞の一例を示す図である。図６で説明したパス接続構成を前提とし、ＨＣＡ１１１ＡとＨＣＡ１１１Ｄが障害により閉塞している場合を例にコントローラ番号決定方法を説明する。
【００６１】
コントローラ１０４Ａは、ＨＣＡ１１１Ａが閉塞しているため、ＳＷ１１２ＡとＳＷ１１２Ｂに接続されていない。また、コントローラ１０４Ｄは、ＨＣＡ１１１Ｄが閉塞しているため、ＳＷ１１２ＣとＳＷ１１２Ｄに接続されていない。この場合、コントローラ１０４Ａとコントローラ１０４ＤはいずれのＳＷ１１２を介しても相互に接続することが出来ない。
【００６２】
ポート番号判定プログラム４０１は、ポート番号を判定する際に、各ＳＷからのポート情報を比較し、いずれのＳＷ１１２を介しても相互接続が不可能なコントローラのペアがある場合は、例えば接続先コントローラ固有情報２０２が数値のときは、より小さい数値のコントローラ固有情報２０２を有するコントローラを採用する。ここで、採用する接続先コントローラ固有情報２０２の条件は図１１同様である。
【００６３】
このとき非採用となるコントローラが接続しているＳＷ１１２のポートは使用しないため、ポート番号判定プログラム４０１はＳＷ１１２のメモリ１１３のハード無効情報２０３を無効に設定する。ハード無効情報２０３が更新された後、改めてポート番号判定プログラム４０１はポート番号を判定し、接続されているポートのハード無効情報２０３が全て無効の場合、対象コントローラに閉塞を指示し、残りのコントローラのみで初期立ち上げを実施する。
【００６４】
図１２の場合は、コントローラ１０４Ａとコントローラ１０４Ｄは、いずれのＳＷ１１２を介しても相互に接続することが出来ない。例えばポート番号判定プログラム４０１によりコントローラ１０４Ａを採用した場合、ＳＷ１１２Ａ、１１２Ｂ、１１２Ｃ、１１２Ｄそれぞれのポート２ｎ＋１番のハード無効情報２０３が無効に設定される。その後、コントローラ１０４Ｄは、いずれのポートにも接続されていないと判定されるため、コントローラ１０４Ｄは閉塞し、コントローラ１０４Ｄ以外のコントローラで初期立ち上げを継続する。
【００６５】
上記の通り本実施例に従えば、スケールアウト型ストレージシステムは、各ストレージコントローラの識別番号を自律的に決定することができる。また、ストレージコントローラのネットワーク上の配置位置に応じた識別番号に割り当てることができる。保守員がストレージコントローラごとに各スイッチの同一番号のポートに接続することで、保守員が意図した識別番号を割り当てることができる。また、割り当てられた各ストレージコントローラの識別番号をもとに、各ストレージコントローラのアドレスを一意に決定することが出来る。
【００６６】
なお、上記例は、各ストレージコントローラが、自装置及び他装置のコントローラ番号を決定する。他の例において、各ストレージコントローラは自装置のコントローラ番号のみを決定し、それを他のストレージコントローラにブロードキャストにより通知してもよい。
【００６７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００６８】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（ＳｏｌｉＤ  ＳｔＡｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【００６９】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００７０】
１０１…ストレージシステム、１０２…ホスト、１０３…外部ネットワーク、１０４…ストレージコントローラ、１０５…マイクロプロセッサ、１０６…メモリ、１０７…ホストＩ／Ｆ、１０８…ドライブＩ／Ｆ、１０９…コントローラ間パス、１１０…記憶デバイス、１１１…ＨＣＡ、１１２…ＳＷ、１１３…メモリ、２０１…対象ポート番号、２０２…接続先コントローラ固有情報、２０３…ハード無効情報、２０４…ポート情報格納領域、３０１…プログラム格納領域、３０２…共有メモリ領域、３０３…ローカルメモリ領域、３０４…データバッファ領域、３０５…キャッシュメモリ領域、４０１…ポート番号判定プログラム、４０２…コントローラ番号決定プログラム、４０３…コマンド振り分けプログラム、４０４…Ｉ/Ｏ処理プログラム、４０５…ＲＡＩＤ処理プログラム 、４０６…コントローラ間データ転送処理プログラム
【図１】
2020077137.tif 000003
【図２】
2020077137.tif 000004
【図３】
2020077137.tif 000005
【図４】
2020077137.tif 000006
【図５】
2020077137.tif 000007
【図６】
2020077137.tif 000008
【図７】
2020077137.tif 000009
【図８】
2020077137.tif 000010
【図９】
2020077137.tif 000011
【図１０】
2020077137.tif 000012
【図１１】
2020077137.tif 000013
【図１２】
2020077137.tif 000014
【手続補正書】
【提出日】令和2年1月21日(2020.1.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージシステムであって、
複数のボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理する複数のコントローラと、
それぞれが複数のポートを有する複数のスイッチと、を含み、
前記複数のコントローラは、前記複数のスイッチに並列に接続され、前記複数のスイッチを介して互いに通信し、
前記複数のコントローラの各コントローラは、
前記接続されているスイッチから、接続されている複数のポートを同定する複数のポート識別子を取得し、
前記取得した複数のポート識別子に基づき、前記ストレージシステム内のコントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記複数のスイッチは、それぞれ、前記ポート識別子を格納するメモリを含む、ことを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記複数のコントローラは、それぞれ、前記コントローラ識別子を格納するメモリを含む、ことを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記複数のスイッチは、それぞれが同じポート識別子のセットを有していることを特徴とするストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記複数のスイッチと前記複数のコントローラにおける第１コントローラとの間の一部の接続が不通である場合、
前記第１コントローラは、
前記複数のスイッチのいずれかを介して前記複数のコントローラの他の全てのコントローラに接続可能な場合に、前記複数のスイッチにおいて前記第１コントローラが接続されているスイッチそれぞれから取得した、前記第１コントローラが接続されているポートのポート識別子に基づき、前記第１コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項６】
請求項４に記載のストレージシステムであって、
前記複数のコントローラにおける第１コントローラは、
前記複数のスイッチにおいて接続されているスイッチそれぞれから、前記第１コントローラが接続されているポートのポート識別子を取得し、
前記ポート識別子において最多のポート識別子に基づき、前記第１コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項７】
請求項４に記載のストレージシステムであって、
前記複数のコントローラにおける第１コントローラと第２コントローラとが、異なるスイッチの同一のポート識別子のポートに接続している場合、
前記第１コントローラは閉塞し、
前記第２コントローラは、前記同一のポート識別子に基づき前記第２コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項８】
請求項４に記載のストレージシステムであって、
前記複数のコントローラにおける第１コントローラと第２コントローラとが、前記複数のスイッチを介して通信不可能な場合、
前記第１コントローラは閉塞し、
前記第２コントローラは、前記複数のスイッチにおいて前記第２コントローラに接続されているスイッチから取得した前記第２コントローラが接続されているポートのポート識別子に基づいて、前記第２コントローラの前記コントローラ識別子を決定する、ことを特徴とするストレージシステム。
【請求項９】
コントローラのストレージシステム内の識別子を決定する方法であって、
前記ストレージシステムは、
複数のボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理する複数のコントローラと、
それぞれが複数のポートを有する複数のスイッチと、を含み、
前記複数のコントローラは、前記複数のスイッチに並列に接続され、前記複数のスイッチを介して互いに通信し、
前記方法は、
前記複数のコントローラの各コントローラが、接続されているスイッチから、接続されている複数のポートを同定する複数のポート識別子を取得し、
前記複数のコントローラの各コントローラが、前記取得した複数のポート識別子に基づき、前記ストレージシステム内のコントローラ識別子を決定する、ことを含むことを特徴とする方法。