(57)【特許請求の範囲】
【請求項１】
ストレージ装置と、
前記ストレージ装置を制御し、所定の管理処理の実行条件のうちの、前記管理処理を実行する実行装置に接続される通信ポートに関する隣接ポート条件を満たす第１の通信ポートを有し、かつ前記実行条件のうちの、前記実行装置に隣接する隣接装置に関する隣接装置条件を満たす第１の制御装置と、
前記ストレージ装置を制御し、前記実行条件のうちの、前記隣接装置に接続される通信ポートに関する接続ポート条件を満たす第２の通信ポートを有し、かつ前記実行条件のうちの、前記実行装置に関する実行装置条件を満たしており、前記第２の通信ポートが前記第１の通信ポートに接続されたときに前記実行条件が満たされたと判定し、前記管理処理を実行する第２の制御装置と、
前記第１の制御装置の前記第１の通信ポートと、前記第２の制御装置の前記第２の通信ポートとを接続する通信ケーブルと、
を有するストレージシステム。
【請求項２】
前記隣接ポート条件は、前記隣接装置内で通信ポートを識別するポート番号に関する条件であり、前記隣接装置条件は、前記隣接装置が実装された第１の筐体内で前記隣接装置を識別する識別番号に関する条件であり、前記接続ポート条件は、前記実行装置内で通信ポートを識別するポート番号に関する条件であり、前記実行装置条件は、前記実行装置が実装された第２の筐体内で前記実行装置を識別する識別番号に関する条件である、
請求項１記載のストレージシステム。
【請求項３】
前記第２の制御装置は、前記通信ケーブルを介して、前記第１の制御装置から、前記第１の通信ポートのポート番号と、前記第１の制御装置の装置番号とを含む制御情報を取得し、前記制御情報に基づいて、前記隣接ポート条件および前記隣接装置条件が満たされたと判定する、
請求項２記載のストレージシステム。
【請求項４】
さらに、
前記ストレージ装置を制御し、前記管理処理を実行する前記第２の制御装置の監視処理を実行する条件を示す監視実行条件のうちの、前記監視処理を実行する監視装置に接続される通信ポートに関する監視隣接ポート条件を満たす第３の通信ポートを有し、かつ前記監視実行条件のうちの、前記監視装置に隣接する監視隣接装置に関する監視隣接装置条件を満たす第３の制御装置と、
前記ストレージ装置を制御し、前記監視実行条件のうちの、前記監視隣接装置に接続される通信ポートに関する監視接続ポート条件を満たす第４の通信ポートを有し、かつ前記監視実行条件のうちの、前記監視装置に関する監視装置条件を満たしており、前記第４の通信ポートが前記第３の通信ポートに接続されたときに前記監視実行条件が満たされたと判定し、前記監視処理を実行する第４の制御装置と、
前記第３の制御装置の前記第３の通信ポートと、前記第４の制御装置の前記第４の通信ポートとを接続する監視装置接続通信ケーブルと、
を有する請求項１乃至３のいずれかに記載のストレージシステム。
【請求項５】
前記第４の制御装置は、前記第２の制御装置の監視により、前記第２の制御装置の故障を検知した場合、前記管理処理を実行する、
請求項４記載のストレージシステム。
【請求項６】
ストレージ装置を制御する制御装置であって、
管理処理を実行する実行装置に接続される通信ポートに関する隣接ポート条件、前記実行装置に隣接する隣接装置に関する隣接装置条件、前記隣接装置に接続される通信ポートに関する接続ポート条件、および前記実行装置に関する実行装置条件を含む、所定の管理処理の実行条件を記憶する記憶装置と、
前記接続ポート条件を満たす第１の通信ポートを有し、前記制御装置が前記実行装置条件を満たし、前記第１の通信ポートが、前記隣接装置条件を満たす他の制御装置の前記隣接ポート条件を満たす第２の通信ポートに接続されたときに前記実行条件が満たされたと判定し、前記管理処理を実行する管理回路と、
を有する制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、および制御装置に関する。
【背景技術】
【０００２】
ストレージシステムでは、記憶容量や性能が不足すると、例えばスケールアウトが行われる。スケールアウトでは、複数のハードディスクを実装したＤＥ（Device Enclosure）とＣＥ（Controller Enclosure）とがストレージシステムに増設される。ＣＥは、複数のＣＭ（Controller Module）を有している。ＣＭはハードディスクに接続されており、ハードディスクへのホスト装置からのアクセスを制御する。
【０００３】
ストレージシステムの中には、ストレージ装置の増設が容易なスケールアウト型ストレージシステムがある。スケールアウト型ストレージシステムでは、例えばＦＥ（Front End controller）と呼ばれる装置内に設けられたＳＶＣ（Service Controller）によって、ＣＭが管理される。例えば各ＣＭは、マネジメントバスによってＳＶＣに接続される。ＳＶＣは、マネジメントバスを介して各ＣＭと通信し、ＣＭの動作を管理する。例えばＳＶＣは、ＣＭの電源制御、ＣＭの状態監視、ＣＭからのログ採取、リセット制御、ＬＥＤ（Light Emitting Diode）消灯・点灯処理などを行う。
【０００４】
なお、ストレージシステムの管理には、様々な技術が利用されている。例えばファイル管理情報の一貫性を維持するため、乱数およびモジュロ演算によってファイルごとのマスタ２次記憶制御装置を、複数の２次記憶制御装置の中から選択して決定するシステムがある。また二重制御装置においてリアルタイムで同期したミラー型メモリを使用することで、ディスク記憶システムの制御装置またはそのメモリが故障した場合に即時に正確な故障回復を行うシステムも考えられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−２４４６４２号公報
【特許文献２】特開平８−２４１１７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のスケールアウト型ストレージシステムでは、ＳＶＣによって各ＣＭを管理するため、ＳＶＣに障害が発生すると、システムを正しく運用できなくなる。そこで、信頼性向上のため、ＦＥにはＳＶＣが２台搭載される。ＳＶＣが２台あれば、一方のＳＶＣに障害が発生しても、他方のＳＶＣが正常にＣＭを管理することができる。ただし、ＳＶＣを２台搭載した結果、ＦＥが大規模化し、ＦＥの配置スペースの増加やコストの増加を招いている。
【０００７】
そこで、ＳＶＣをなくし、複数のＣＭのいずれかに、すべてのＣＭを管理させることが考えられる。いずれかのＣＭにおいて、ＣＭ全体を管理することができれば、スケールアウト型ストレージシステムにおいてＳＶＣが不要となり、システムの設置スペースを縮小できる。しかし、従来は、ＳＶＣと同様の管理機能を複数のＣＭそれぞれに搭載したとしても、どのＣＭに管理させるのかを決定することができない。そのため、ＳＶＣを用いずに、複数のＣＭ内の一部のＣＭにＣＭ全体を管理させることが困難である。
【０００８】
なお、以上の説明におけるＣＭは、ストレージ装置を制御する制御装置の一例である。そして、制御装置一般においてもＣＭの場合と同様に、一部の制御装置に複数の制御装置全体を管理させようとしても、どの制御装置に管理させるのかを決定できないという問題がある。
【０００９】
１つの側面では、本件は、複数の制御装置全体の管理をどの制御装置に実施させるのかを容易に決定できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、ストレージ装置、第１の制御装置、第２の制御装置、および通信ケーブルを有するストレージシステムが提供される。
第１の制御装置は、ストレージ装置を制御し、所定の管理処理の実行条件のうちの、管理処理を実行する実行装置に接続される通信ポートに関する隣接ポート条件を満たす第１の通信ポートを有し、かつ実行条件のうちの、実行装置に隣接する隣接装置に関する隣接装置条件を満たす。
【００１１】
第２の制御装置は、ストレージ装置を制御し、実行条件のうちの、隣接装置に接続される通信ポートに関する接続ポート条件を満たす第２の通信ポートを有し、かつ実行条件のうちの、実行装置に関する実行装置条件を満たしており、第２の通信ポートが第１の通信ポートに接続されたときに実行条件が満たされたと判定し、管理処理を実行する。
【００１２】
通信ケーブルは、第１の制御装置の第１の通信ポートと、第２の制御装置の第２の通信ポートとを接続する。
【発明の効果】
【００１３】
複数の制御装置全体の管理をどの制御装置に実施させるのかを容易に決定できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のストレージシステムの構成例を示す図である。
【図２】第２の実施の形態のストレージシステムの一例を示す図である。
【図３】ＣＭのハードウェア例を示す図である。
【図４】ＦＰＧＡ内の通信ポートの一例を示す図である。
【図５】ＣＭ間の通信に用いる信号の一例を示す図である。
【図６】ＣＭ間の接続形態の一例を示す図である。
【図７】ＦＰＧＡの機能の一例を示すブロック図である。
【図８】マスタ条件テーブルの一例を示す図である。
【図９】マスタ決定例を示す図である。
【図１０】制御パケットのフォーマットの一例を示す図である。
【図１１】「マスタ１」と「マスタ２」との制御パケット内のデータ例を示す図である。
【図１２】「マスタ３」と「マスタ４」との制御パケット内のデータ例を示す図である。
【図１３】２台のＣＥの接続例を示す図である。
【図１４】ＤＣ−ＯＮの手順を示すシーケンス図の前半である。
【図１５】ＤＣ−ＯＮの手順を示すシーケンス図の後半である。
【図１６】マスタ決定処理の手順を示すシーケンス図（１／３）である。
【図１７】マスタ決定処理の手順を示すシーケンス図（２／３）である。
【図１８】マスタ決定処理の手順を示すシーケンス図（３／３）である。
【図１９】監視対象の一例を示す図である。
【図２０】マスタＣＭ故障時のフェイルオーバの例を示す図である。
【図２１】２つのマスタＣＭ故障時のフェイルオーバの例を示す図である。
【図２２】マスタとなるＣＭ間の監視処理の一例を示すシーケンス図である。
【図２３】システム情報のミラーリング処理の一例を示すシーケンス図である。
【図２４】フェイルオーバ処理の手順の一例を示すシーケンス図である。
【図２５】ＣＭ間の接続形態の変形例を示す図である。
【図２６】ＦＰＧＡが実施するＤＣ−ＯＮ制御処理の手順の一例を示すフローチャートである。
【図２７】ＦＰＧＡが実施するマスタ判定処理の手順の一例を示すフローチャートの前半である。
【図２８】ＦＰＧＡが実施するマスタ判定処理の手順の一例を示すフローチャートの後半である。
【図２９】ＦＰＧＡが実施するマスタ１，２判定処理の手順の一例を示すフローチャートである。
【図３０】ＦＰＧＡが実施する監視処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。
【００１６】
図１は、第１の実施の形態のストレージシステムの構成例を示す図である。ストレージシステムは、複数のストレージ装置１〜３と、ストレージ装置１〜３に接続された筐体１０ａ〜１０ｃを有する。
【００１７】
筐体１０ａには、装置番号「０」の制御装置１１と装置番号「１」の制御装置１２が搭載されている。制御装置１１は、ポート番号「０」の通信ポート１１ａとポート番号「１」の通信ポート１１ｂとを備えた管理回路１１ｃを有する。制御装置１２は、ポート番号「０」の通信ポート１２ａとポート番号「１」の通信ポート１２ｂとを備えた管理回路１２ｃを有する。管理回路１１ｃと管理回路１２ｃとは、筐体１０ａ内部の信号線で接続されている。
【００１８】
筐体１０ｂには、装置番号「０」の制御装置１３と装置番号「１」の制御装置１４が搭載されている。制御装置１３は、ポート番号「０」の通信ポート１３ａとポート番号「１」の通信ポート１３ｂとを備えた管理回路１３ｃを有する。制御装置１４は、ポート番号「０」の通信ポート１４ａとポート番号「１」の通信ポート１４ｂとを備えた管理回路１４ｃを有する。管理回路１３ｃと管理回路１４ｃとは、筐体１０ｂ内部の信号線で接続されている。
【００１９】
筐体１０ｃには、装置番号「０」の制御装置１５と装置番号「１」の制御装置１６が搭載されている。制御装置１５は、ポート番号「０」の通信ポート１５ａとポート番号「１」の通信ポート１５ｂとを備えた管理回路１５ｃを有する。制御装置１６は、ポート番号「０」の通信ポート１６ａとポート番号「１」の通信ポート１６ｂとを備えた管理回路１６ｃを有する。管理回路１５ｃと管理回路１６ｃとは、筐体１０ｃ内部の信号線で接続されている。
【００２０】
各制御装置１１〜１６は、ストレージ装置１〜３へのアクセスを制御する。各制御装置１１〜１６の装置番号は、その制御装置が搭載されている筐体１０ａ〜１０ｃ内での制御装置の識別子である。
【００２１】
通信ポート１１ａ，１１ｂ，１２ａ，１２ｂ，１３ａ，１３ｂ，１４ａ，１４ｂ，１５ａ，１５ｂ，１６ａ，１６ｂは、他の筐体内の制御装置と通信するための通信ケーブル４ａ〜４ｆの接続ポートである。各通信ポート１１ａ，１１ｂ，１２ａ，１２ｂ，１３ａ，１３ｂ，１４ａ，１４ｂ，１５ａ，１５ｂ，１６ａ，１６ｂのポート番号は、その通信ポートが搭載されている制御装置内での通信ポートの識別子である。
【００２２】
通信ケーブル４ａは、制御装置１１の通信ポート１１ａと制御装置１６の通信ポート１６ｂとを接続している。通信ケーブル４ｂは、制御装置１１の通信ポート１１ｂと制御装置１６の通信ポート１６ａとを接続している。通信ケーブル４ｃは、制御装置１２の通信ポート１２ａと制御装置１３の通信ポート１３ａとを接続している。通信ケーブル４ｄは、制御装置１２の通信ポート１２ｂと制御装置１３の通信ポート１３ｂとを接続している。通信ケーブル４ｅは、制御装置１４の通信ポート１４ａと制御装置１５の通信ポート１５ａとを接続している。通信ケーブル４ｆは、制御装置１４の通信ポート１４ｂと制御装置１５の通信ポート１５ｂとを接続している。
【００２３】
制御装置１１〜１６は、マスタ条件５を記憶する記憶装置を有する。マスタ条件５には、所定の管理処理の実行条件や、管理処理を実行する装置を監視する条件を示す監視実行条件が含まれる。
【００２４】
実行条件には、例えば、隣接ポート条件、隣接装置条件、接続ポート条件、および実行装置条件が含まれる。隣接ポート条件は、管理処理を実行する実行装置に接続される通信ポートに関する条件である。隣接装置条件は、実行装置に隣接する隣接装置に関する条件である。接続ポート条件は、隣接装置に接続される通信ポートに関する条件である。実行装置条件は、実行装置に関する条件である。
【００２５】
監視実行条件は、例えば、監視隣接ポート条件、監視隣接装置条件、監視接続ポート条件、および監視装置条件が含まれる。監視隣接ポート条件は、監視処理を実行する監視装置に接続される通信ポートに関する条件である。監視隣接装置条件は、監視装置に隣接する監視隣接装置に関する条件である。監視接続ポート条件は、監視隣接装置に接続される通信ポートに関する条件である。監視装置条件は、監視装置に関する条件である。
【００２６】
なお隣接ポート条件および監視隣接ポート条件は、例えば、装置内で通信ポートを識別するポート番号に関する条件である。隣接装置条件および監視隣接装置条件は、例えば筐体内で装置を識別する識別番号に関する条件である。接続ポート条件および監視接続ポート条件は、例えば装置内で通信ポートを識別するポート番号に関する条件である。実行装置条件および監視装置条件は、例えば筐体内で装置を識別する識別番号に関する条件である。
【００２７】
以下、管理処理を実行する装置を「マスタ１」、管理装置を監視する装置を「マスタ２」と呼ぶこととする。図１の例では、「マスタ１」になる条件（実行条件）として、「マスタ１」となる制御装置に隣接する制御装置の装置番号が「１」、「マスタ１」となる制御装置に接続される隣接装置側の通信ポートの通信ポート番号が「０」であることが定義されている。また、「マスタ１」になる条件では、「マスタ１」となる制御装置の装置番号が「０」であり、「マスタ１」となる制御装置において隣接する制御装置に接続される通信ポートのポート番号が「１」であることが定義されている。
【００２８】
「マスタ２」になる条件（監視実行条件）として、監視する制御装置に隣接する制御装置の装置番号が「０」であり、監視する制御装置に接続される隣接装置側の通信ポートの通信ポート番号が「０」であることが定義されている。また「マスタ２」になる条件では、監視する制御装置の装置番号が「１」であり、隣接する制御装置に接続される通信ポートのポート番号が「１」であることが定義されている。
【００２９】
通信ケーブル４ａ〜４ｆを接続する際には、複数の制御装置１１〜１６のうちの１台が、「マスタ１」となり、別の１台が「マスタ２」となるように接続される。図１の例では、制御装置１１は、自身が「マスタ１」となり、制御装置１６が「マスタ２」となる。
【００３０】
第１の実施の形態では、各制御装置１１〜１６は、自身がいずれかのマスタになるか否かを自己判断することができる。例えば、各制御装置１１〜１６は、通信ポートごとに、自身の装置番号と通信ポートのポート番号との組、およびその通信ポートの接続先の制御装置の装置番号と、接続先の通信ポートのポート番号との組が、「マスタ１」になる条件を満たしているか否を判断する。「マスタ１」になる条件を満たす通信ポートがあった場合、その通信ポートを有する制御装置は、自身が、制御装置１１〜１６すべてを管理するものと決定する。この決定は、例えば各制御装置１１〜１６内の管理回路１１ｃ，１２ｃ，１３ｃ，１４ｃ，１５ｃ，１６ｃで行われる。
【００３１】
同様に各制御装置１１〜１６は、通信ポートごとに、自身の装置番号と通信ポートのポート番号との組、およびその通信ポートの接続先の制御装置の装置番号と、接続先の通信ポートのポート番号との組が、「マスタ２」になる条件を満たしているか否を判断する。「マスタ２」になる条件を満たす通信ポートがあった場合、その通信ポートを有する制御装置は、自身が、「マスタ１」の制御装置を監視するものと決定する。また「マスタ２」の制御装置は、「マスタ１」の制御装置が故障したときに「マスタ１」に昇格し、制御装置１１〜１６すべてを管理する。
【００３２】
なお、複数の通信ケーブル４ａ〜４ｆのうちの１本のケーブルのみが、そのケーブルの一端の制御装置が、「マスタ１」となる条件を満たすように接続されている。「マスタ１」となる条件を満たすように接続されたケーブル以外のケーブルは、「マスタ１」となる条件を満たさないように接続されている。
【００３３】
このように、第１の実施の形態では、通信ケーブル４ａ〜４ｆの接続状態に基づいて、「マスタ１」および「マスタ２」となる制御装置が一意に決まる。しかも制御装置１１〜１６それぞれが、「マスタ１」または「マスタ２」となるか否かを、通信ケーブル４ａ〜４ｆの接続状態に基づいて、自身で容易に判断できる。その結果、ＳＶＣのような外部の管理装置が不要となり、システム全体の小規模化を図ることができる。
【００３４】
さらに、「マスタ１」となった制御装置が故障したときは、「マスタ２」の制御装置が即座に「マスタ１」となり、制御装置１１〜１６の管理を開始するため、システムの高い信頼性が確保される。
【００３５】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、スケールアウト型のストレージシステムにおいて、ＣＭ内にマネジメント用のＦＰＧＡ（Field Programmable Gate Array）を配置し、ＳＶＣやＣＭ内のプロセッサの介在なしに、ＣＭの管理を実現するものである。ＳＶＣを削減することで、ストレージシステムの規模を縮小することが可能となる。
【００３６】
図２は、第２の実施の形態のストレージシステムの一例を示す図である。図２に示すストレージシステムは、ＣＥ１００，２００，３００，４００、ＤＥ５００，６００，７００，８００およびホスト装置９００を含む。ホスト装置９００は、ＣＥ１００，２００，３００，４００を介して、ＤＥ５００，６００，７００，８００内のハードディスク装置（ＨＤＤ：Hard Disk Drive）に対するデータの入出力を行う。
【００３７】
ＣＥ１００は、ＣＭ１１０，１２０を有する。ＣＥ２００は、ＣＭ２１０，２２０を有する。ＣＥ３００は、ＣＭ３１０，３２０を有する。ＣＥ４００は、ＣＭ４１０，４２０を有する。各ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０には、各ＣＥ１００，２００，３００，４００内での識別番号（ＣＭ番号）が設定されている。ＣＭ１１０，２１０，３１０，４１０のＣＭ番号は「０」，ＣＭ１２０，２２０，３２０，４２０のＣＭ番号は「１」である。
【００３８】
ＣＭ１１０とＣＭ４２０は、接続されている。ＣＭ１２０とＣＭ２１０は、接続されている。ＣＭ２２０とＣＭ３１０は、接続されている。ＣＭ３２０とＣＭ４１０は、接続されている。例えば、２つのＣＭは、シリアルケーブルを介して接続される。
【００３９】
また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０には、ホスト装置９００が接続されている。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０とホスト装置９００とは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。なお、図２では例として１台のホスト装置９００がＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０に接続されているが、例えば、複数台のホスト装置のそれぞれが１台以上のＣＭに接続されていてもよい。
【００４０】
ＤＥ５００，６００，７００，８００は、それぞれ複数の記憶装置を搭載するディスクアレイ装置である。例えばＤＥ５００には、複数のＨＤＤ５１１，・・・，５１ｎが搭載されている。ＤＥ６００には、複数のＨＤＤ６１１，・・・，６１ｎが搭載されている。ＤＥ７００には、複数のＨＤＤ７１１，・・・，７１ｎが搭載されている。ＤＥ８００には、複数のＨＤＤ８１１，・・・，８１ｎが搭載されている。図２の例では、ＤＥ５００，６００，７００，８００は、記憶装置としてＨＤＤを用いているが、ＳＳＤ（Solid State Drive）などの他の種類の記憶装置を用いることもできる。
【００４１】
ＣＭ１１０，１２０には、ＤＥ５００が接続されている。ＣＭ１１０，１２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ５００に搭載されたＨＤＤ５１１，・・・，５１ｎに対するアクセスを制御する。ＣＭ２１０，２２０には、ＤＥ６００が接続されている。ＣＭ２１０，２２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ６００に搭載されたＨＤＤ６１１，・・・，６１ｎに対するアクセスを制御する。ＣＭ３１０，３２０には、ＤＥ７００が接続されている。ＣＭ３１０，３２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ７００に搭載されたＨＤＤ７１１，・・・，７１ｎに対するアクセスを制御する。ＣＭ４１０，４２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ８００に搭載されたＨＤＤ８１１，・・・，８１ｎに対するアクセスを制御する。
【００４２】
なお、ＣＥ１００とＤＥ５００とは、例えば、１つの筐体に搭載されるストレージ装置として実現される。ＣＥ２００とＤＥ６００、ＣＥ３００とＤＥ７００、ＣＥ４００とＤＥ８００についても同様である。図２のストレージシステムは、このようなストレージ装置単位でスケールアウトが可能な構成となっている。
【００４３】
また、ストレージシステムに含まれるＣＥの数は４台に限定されるものではなく、各ＣＥに含まれるＣＭの数も２台に限定されるものではない。例えば、ストレージシステムには、２台以上のＣＭを備えるＣＥが４台以上含まれていてもよい。
【００４４】
図３は、ＣＭのハードウェア例を示す図である。ＣＭ１１０は、プロセッサ１１１、ＲＡＭ１１２、ＳＳＤ１１３、ＣＡ（Channel Adapter）１１４、ＦＰＧＡ１１５、ＤＩ（Device Interface）１１６および読み取り装置１１７を有する。
【００４５】
プロセッサ１１１は、ＣＭ１１０の情報処理を制御する。プロセッサ１１１には、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）などを含み得る。プロセッサ１１１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
【００４６】
ＲＡＭ１１２は、ＣＭ１１０の主記憶装置である。ＲＡＭ１１２は、プロセッサ１１１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１１２は、プロセッサ１１１による処理に用いる各種データを記憶する。
【００４７】
ＳＳＤ１１３は、ＣＭ１１０の補助記憶装置である。ＳＳＤ１１３は、不揮発性の半導体メモリである。ＳＳＤ１１３には、ＯＳのプログラム、ファームウェアのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１１０は、補助記憶装置として、ＳＳＤ１１３の代わりにＨＤＤを備えていてもよい。
【００４８】
ＣＡ１１４は、ホスト装置９００と通信するためのインタフェースである。ホスト装置９００から送られたアクセス要求は、ＣＡ１１４で受信され、プロセッサ１１１に送られる。
【００４９】
ＦＰＧＡ１１５は、製造後に内部論理回路を定義・変更可能な集積回路である。ＦＰＧＡ１１５は、マネジメントバスにより、ＣＥ１００内の他のＣＭ１２０に接続されている。またＦＰＧＡ１１５は、マネジメントバスにより、他のＣＥ４００内のＣＭ４２０にも接続されている。ＦＰＧＡ１１５は、マネジメントバスを介して、接続されたＣＭ１２０，４２０と通信し、ＣＭ１１０が、すべてのＣＭを管理するマスタとなるか否かを判断する。そしてＦＰＧＡ１１５は、マスタとなる場合、マネジメントバスを介して他のＣＭを管理する。
【００５０】
なお、ＣＭ１１０全体には、ＤＣ（直流）−ＯＮの指示があったときに電源供給が開始されるが、ＦＰＧＡ１１５についてのみ、ＣＥに対して交流（ＡＣ）電源が供給されたときに、電源供給が開始される。そしてＦＰＧＡ１１５は、ＤＣ−ＯＮ指示の入力などに応じて、ＣＭ１１０全体に対する電源供給を開始する。
【００５１】
ＤＩ１１６は、ＤＥ５００と通信するためのインタフェースである。読み取り装置１１７は、可搬型の記録媒体１１７ａに記録されたプログラムやデータを読み取る装置である。記録媒体１１７ａとして、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１１７ａとして、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置１１７は、例えば、プロセッサ１１１からの命令に従って、記録媒体１１７ａから読み取ったプログラムやデータをプロセッサ１１１に送信する。
【００５２】
なお、ＣＭ１２０，２１０，２２０，３１０，３２０，４１０，４２０もＣＭ１１０と同様のハードウェアにより実現できる。
次に、ＦＰＧＡ１１５内の通信ポートについて詳細に説明する。
【００５３】
図４は、ＦＰＧＡ内の通信ポートの一例を示す図である。ＦＰＧＡ１１５は、２つのマネジメントポート１１５ａ，１１５ｂと１つの内部通信ポート１１５ｃとを有している。マネジメントポート１１５ａ，１１５ｂには、それぞれポート番号が付与されている。マネジメントポート１１５ａのポート番号は「０」、マネジメントポート１１５ｂのポート番号は「１」である。
【００５４】
ＦＰＧＡ１２５は、２つのマネジメントポート１２５ａ，１２５ｂと１つの内部通信ポート１２５ｃとを有している。マネジメントポート１２５ａのポート番号は「０」、マネジメントポート１２５ｂのポート番号は「１」である。
【００５５】
ＦＰＧＡ１１５内のマネジメントポート１１５ａ，１１５ｂは、ＣＥ１００とは別のＣＥ４００のＣＭ４２０内のＦＰＧＡが有するマネジメントポートに、マネジメントケーブル２１，２２で接続されている。ＦＰＧＡ１２５内のマネジメントポート１２５ａ，１２５ｂは、ＣＥ１００とは別のＣＥ２００のＣＭ２１０内のＦＰＧＡが有するマネジメントポートに、マネジメントケーブル２３，２４で接続されている。ＣＭ１１０内のＦＰＧＡ１１５の内部通信ポート１１５ｃと、ＣＭ１２０内のＦＰＧＡ１２５の内部通信ポート１２５ｃとは、マネジメントケーブル３１で接続されている。
【００５６】
マネジメントケーブルは、４本の信号線を有している。そのうちの２本の信号線は、データ送信用であり、他の２本はデータ受信用である。図４では、各通信ポートの送信用の信号線の接続部を「Ｔ」、受信用の信号線の接続部を「Ｒ」と表している。送信用の信号線の接続部には、ＩＤ「０」が割り当てられている。受信用の信号線の接続部には、ＩＤ「１」が割り当てられている。
【００５７】
ＣＭ間のＦＰＧＡによる通信方式は、例えば、同期式のシリアル伝送方式である。
図５は、ＣＭ間の通信に用いる信号の一例を示す図である。送信クロックの信号名は「ＴＸＣＬＫ」である。送信クロックの通信方向は、送信（Ｏｕｔ）である。送信データの信号名は「ＴＸＤＡＴＡ」である。送信データの通信方向は、送信（Ｏｕｔ）である。受信クロックの信号名は「ＲＸＣＬＫ」である。受信クロックの通信方向は、受信（Ｉｎ）である。受信データの信号名は「ＲＸＤＡＴＡ」である。受信データの通信方向は、受信（Ｉｎ）である。
【００５８】
このように、マネジメントケーブルは、データ線とクロック線とのペアで構成されている。そして各ＦＰＧＡは、マネジメントケーブルを介して、クロック信号を用いた同期式のシリアル伝送によるマネジメント通信を行う。クロック周波数は、例えば１００ＭＨｚである。
【００５９】
第２の実施の形態では、以下の条件を満たすようにマネジメントケーブルが接続される。
１）ＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートと、そのＣＭとは別のＣＥに搭載されているＣＭのＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートとを接続するマネジメントケーブルが１本だけある。
【００６０】
２）ＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートと、そのＣＭとは別のＣＥに搭載されているＣＭのＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートとを接続するマネジメントケーブルが１本だけある。
【００６１】
３）上記１），２）の場合を除き、ＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートと、そのＣＭとは別のＣＥに搭載されているＣＭのＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブルで接続されている。
【００６２】
４）上記１），２）の場合を除き、ＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートと、そのＣＭとは別のＣＥに搭載されているＣＭのＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートとが、マネジメントケーブルで接続されている。
【００６３】
以上の４つの条件を満たすようにＣＭ間をマネジメントケーブルで接続することで、ストレージシステム全体を管理するマスタとなるＣＭを、マネジメントケーブルの接続形態に基づいて一意に決定可能となる。
【００６４】
図６は、ＣＭ間の接続形態の一例を示す図である。ＣＥ１００と同様に、他のＣＥ２００，３００，４００内の各ＣＭ２１０，２２０，３１０，３２０，４１０，４２０も、それぞれＦＰＧＡ２１５，２２５，３１５，３２５，４１５，４２５を有している。ＦＰＧＡ２１５，２２５，３１５，３２５，４１５，４２５は、ＦＰＧＡ１１５，１２５と同様に、マネジメントポート２１５ａ，２１５ｂ，２２５ａ，２２５ｂ，３１５ａ，３１５ｂ，３２５ａ，３２５ｂ，４１５ａ，４１５ｂ，４２５ａ，４２５ｂを有している。マネジメントポート２１５ａ，２２５ａ，３１５ａ，３２５ａ，４１５ａ，４２５ａのポート番号は「０」、マネジメントポート２１５ｂ，２２５ｂ，３１５ｂ，３２５ｂ，４１５ｂ，４２５ｂのポート番号は「１」である。
【００６５】
ＣＥ１００のＣＭ１１０内のＦＰＧＡ１１５とＣＥ４００のＣＭ４２０内のＦＰＧＡ４２５とが、マネジメントケーブル２１，２２で接続されている。マネジメントケーブル２１は、ＦＰＧＡ１１５のポート番号「０」のマネジメントポート１１５ａと、ＦＰＧＡ４２５のポート番号「１」のマネジメントポート４２５ｂとを接続している。マネジメントケーブル２２は、ＦＰＧＡ１１５のポート番号「１」のマネジメントポート１１５ｂと、ＦＰＧＡ４２５のポート番号「０」のマネジメントポート４２５ａとを接続している。
【００６６】
ＣＥ１００のＣＭ１２０内のＦＰＧＡ１２５とＣＥ２００のＣＭ２１０内のＦＰＧＡ２１５とが、マネジメントケーブル２３，２４で接続されている。マネジメントケーブル２３は、２つのＦＰＧＡ１２５，２１５それぞれのポート番号「０」のマネジメントポート１２５ａ，２１５ａ同士を接続している。マネジメントケーブル２４は、２つのＦＰＧＡ１２５，２１５それぞれのポート番号「１」のマネジメントポート１２５ｂ，２１５ｂ同士を接続している。
【００６７】
ＣＥ２００のＣＭ２２０内のＦＰＧＡ２２５とＣＥ３００のＣＭ３１０内のＦＰＧＡ３１５とが、マネジメントケーブル２５，２６で接続されている。マネジメントケーブル２５は、２つのＦＰＧＡ２２５，３１５それぞれのポート番号「０」のマネジメントポート２２５ａ，３１５ａ同士を接続している。マネジメントケーブル２６は、２つのＦＰＧＡ２２５，３１５それぞれのポート番号「１」のマネジメントポート２２５ｂ，３１５ｂ同士を接続している。
【００６８】
ＣＥ３００のＣＭ３２０内のＦＰＧＡ３２５とＣＥ４００のＣＭ４１０内のＦＰＧＡ４１５とが、マネジメントケーブル２７，２８で接続されている。マネジメントケーブル２７は、２つのＦＰＧＡ３２５，４１５それぞれのポート番号「０」のマネジメントポート３２５ａ，４１５ａ同士を接続している。マネジメントケーブル２８は、２つのＦＰＧＡ３２５，４１５それぞれのポート番号「１」のマネジメントポート３２５ｂ，４１５ｂ同士を接続している。
【００６９】
このように、マネジメントケーブル２３〜２８は、同じポート番号のマネジメントポート同士を接続している。それに対し、マネジメントケーブル２１，２２は、異なるポート番号のマネジメントポート同士を接続している。
【００７０】
図６に示すマネジメントケーブルの接続関係に基づいて、マスタとなるＣＭが決定される。第２の実施の形態では、マスタには、「マスタ１」〜「マスタ４」の４つのレベルがある。この場合、いずれか４台のＣＭが、それぞれ「マスタ１」〜「マスタ４」となる。「マスタ１」となったＣＭは、ストレージシステム内のすべてのＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０を管理する。「マスタ２」となったＣＭは、「マスタ１」のＣＭを監視し、そのＣＭの障害を検出すると「マスタ１」となる。「マスタ３」となったＣＭは、「マスタ１」のＣＭを監視し、そのＣＭの障害を検出すると「マスタ２」となる。「マスタ４」となったＣＭは、「マスタ２」のＣＭを監視し、そのＣＭの障害を検出すると「マスタ２」となる。
【００７１】
なお、図６の例では、複数のＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０がリング型のデイジーチェーンで接続されている。ここで、同じポート番号のマネジメントポート同士を接続しているマネジメントケーブル２３〜２８とＣＥ１００，２００，３００，４００の内部接続とによる直列の接続関係に着目する（マネジメントケーブル２１，２２の接続を考慮に入れない）と、「マスタ１」となるＣＭ１１０と「マスタ２」となるＣＭ４２０は、最も外側となる。そして、「マスタ３」のＣＭ１２０は、直列の接続関係において、「マスタ１」のＣＭ１１０の内側に位置する。また「マスタ４」のＣＭ４１０は、直列の接続関係において「マスタ２」の内側に位置する。このような配置とすることで、外側の「マスタ１」または「マスタ２」のＣＭ１１０，４２０が故障したとき、ＣＥ内接続で接続された、すぐ内側のＣＭ１２０，４１０にフェイルオーバにより機能を容易に移管することができる。これにより、冗長性が強化されている。
【００７２】
各ＦＰＧＡ１１５，１２５，２１５，２２５，３１５，３２５，４１５，４２５は、マネジメントケーブル２１〜２８で接続された相手のＣＭとの間で、制御パケットを受け渡すことで、自身が「マスタ１」または「マスタ２」になるか否かを判断する。
【００７３】
例えば接続されたＦＰＧＡ同士で、互いに、ＣＭ番号や接続されたマネジメントポートのポート番号を含む制御パケットを交換する。そして、例えば、受信した制御パケットのＣＭ番号とポート番号の組と、その制御パケットを受信したＣＭのＣＭ番号とマネジメントポートのポート番号との組に関する所定の条件が満たされたＣＭが、「マスタ１」または「マスタ２」になる。
【００７４】
「マスタ３」となるＣＭは、例えば「マスタ１」となったＣＭと同じＣＥ内の他のＣＭである。「マスタ４」となるＣＭは、例えば「マスタ２」となったＣＭと同じＣＥ内の他のＣＭである。
【００７５】
このように、第２の実施の形態では、マネジメントケーブル２１〜２８を用いた接続関係に基づいて、マスタが決定される。
どのＣＭがマスタになるのかは、各ＦＰＧＡ１１５，１２５，２１５，２２５，３１５，３２５，４１５，４２５が自立的に判断する。また「マスタ１」となったＣＭは、他のＣＭを管理する。また、１台のＣＭがＤＣ−ＯＮの指示を受けたときに、各ＦＰＧＡ１１５，１２５，２１５，２２５，３１５，３２５，４１５，４２５は、互いに連携動作し、すべてのＣＭにおいて直流電源の供給を開始することができる。
【００７６】
図７は、ＦＰＧＡの機能の一例を示すブロック図である。ＦＰＧＡ１１５は、記憶部１１５ｄ、ＤＣ−ＯＮ制御部１１５ｅ、マスタ決定部１１５ｆ、および監視部１１５ｇを有する。
【００７７】
記憶部１１５ｄは、ＦＰＧＡ１１５が実装されたＣＭ１１０のＣＭ番号１１５ｃａ、マスタ条件テーブル１１５ｃｂ、システム情報１１５ｃｃなどを記憶する。マスタ条件テーブル１１５ｃｂは、ＣＭ１１０が「マスタ１」または「マスタ２」となるための条件が定義されたデータテーブルである。システム情報１１５ｃｃは、ストレージシステム内の全てのＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０から収集された管理情報である。なお、システム情報１１５ｃｃは、ＣＭ１１０がマスタになった場合に、記憶部１１５ｄに格納される。記憶部１１５ｄは、例えばＦＰＧＡ１１５内のＲＡＭなどのメモリにより実現される。
【００７８】
ＤＣ−ＯＮ制御部１１５ｅは、ＣＭ１１０への直流電源の供給を制御する。例えばＤＣ−ＯＮ制御部１１５ｅは、外部からＤＣ−ＯＮの指示が入力されると、ＣＭ１１０のへの直流電源の供給を開始させるとともに、他のＣＭ内のＦＰＧＡに対して、ＤＣ−ＯＮを指示する制御パケットを送信する。またＤＣ−ＯＮ制御部１１５ｅは、他のＣＭ内のＦＰＧＡから、ＤＣ−ＯＮを指示する制御パケットを受信すると、ＣＭ１１０のへの直流電源の供給を開始させる。そしてＤＣ−ＯＮ制御部１１５ｅは、受信した制御パケットの送信元とは別のＣＭ内のＦＰＧＡに対して、ＤＣ−ＯＮを指示する制御パケットを送信する。
【００７９】
マスタ決定部１１５ｆは、各ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０への直流電源の供給が完了すると、ＣＭ１１０がマスタとなるか否かを決定する。例えばマスタ決定部１１５ｆは、ポート番号「０」のマネジメントポートから、マネジメントケーブルで接続された他のＣＭに対して、制御パケットの一種であるＣＰＤ（CM/Port/Direction）パケットを送信する。ＣＰＤパケットは、送信元のＣＭのＣＭ番号、送信するマネジメントポートのポート番号、および通信方向を示す情報（ＣＰＤ）を含む。またマスタ決定部１１５ｆは、ポート番号「０」のマネジメントポートを介して、マネジメントケーブルで接続された他のＣＭが送信したＣＰＤパケットを受信する。マスタ決定部１１５ｆは、受信したＣＰＤパケットの内容に基づいて、ＣＭ１１０が「マスタ１」または「マスタ２」となるか否かを決定する。マスタ決定部１１５ｆは、ＣＭ１１０が「マスタ１」となる場合、同じＣＥ１００内の他のＣＭ１２０に対して、「マスタ２」となるように指示する。またマスタ決定部１１５ｆは、ＣＭ１１０が「マスタ２」となる場合、同じＣＥ１００内の他のＣＭ１２０に対して、「マスタ４」となるように指示する。さらにマスタ決定部１１５ｆは、同じＣＥ１００内の他のＣＭ１２０から、「マスタ３」または「マスタ４」となるように指示を受けると、ＣＭ１１０を指示されたマスタに決定する。
【００８０】
監視部１１５ｇは、ＣＭ１１０がマスタになることが決定された場合、マスタの種別に応じ、他のＣＭが正常に動作しているかどうかを監視する。例えばＣＭ１１０が「マスタ１」に決定されると、監視部１１５ｇは、「マスタ２」となったＣＭの動作を監視し、そのＣＭの障害を検知すると、フェイルオーバ処理により他のＣＭのマスタレベルを「マスタ２」に変更させる。ＣＭ１１０が「マスタ２」に決定された場合、監視部１１５ｇは、「マスタ１」となったＣＭの動作を監視し、そのＣＭの障害を検知すると、フェイルオーバ処理によりＣＭ１１０のマスタのレベルを「マスタ１」に変更する。ＣＭ１１０が「マスタ３」に決定された場合、監視部１１５ｇは、「マスタ１」となったＣＭの動作を監視し、そのＣＭの障害を検知すると、フェイルオーバ処理によりＣＭ１１０のマスタのレベルを「マスタ２」に変更する。ＣＭ１１０が「マスタ４」に決定された場合、監視部１１５ｇは、「マスタ２」となったＣＭの動作を監視し、そのＣＭの障害を検知すると、フェイルオーバ処理によりＣＭ１１０のマスタのレベルを「マスタ２」に変更する。
【００８１】
ＦＰＧＡ１１５以外のＦＰＧＡ１２５，２１５，２２５，３１５，３２５，４１５，４２５も、ＦＰＧＡ１１５と同様の機能を有する。これにより、ＳＶＣを用いずに、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０を管理することができる。
【００８２】
ＣＭ１１０が「マスタ１」となった場合、ＣＭ１１０が、すべてのＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０を管理することとなる。ＣＭ１１０が「マスタ１」または「マスタ２」となるか否かは、マスタ条件テーブル１１５ｃｂに定義されている。
【００８３】
図８は、マスタ条件テーブルの一例を示す図である。マスタ条件テーブル１１５ｃｂには、マスタレベル、ＣＰＤパケット内のＣＰＤ、および受信ポートのＣＰＤの欄が設けられている。マスタレベルの欄には、決定対象のマスタのレベルが設定されている。ＣＰＤパケット内のＣＰＤの欄には、ＣＭ１１０が対応するマスタになるための、受信したＣＰＤパケットに含まれるＣＰＤの値の条件が設定される。受信ポートのＣＰＤの欄には、ＣＭ１１０が対応するマスタになるための、ＣＰＤパケットを受信したマネジメントポートのＣＰＤの値の条件が設定される。なおＣＰＤの値は、左から、ＣＭ番号、ポート番号、通信方向（送信：０、受信：１）を示している。
【００８４】
なお、他のＣＭから受信するＣＰＤパケットに含まれるＣＰＤの通信方向の値は、常に「０」である。またＣＰＤパケットを受信するマネジメントポートのＣＰＤの通信方向の値は、常に「１」である。そこで、図８の例では、ＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートから出力されたＣＰＤパケットを、ＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートで受信した場合、受信したＣＭが、「マスタ１」のレベルのマスタになる。また、ＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートから出力されたＣＰＤパケットを、ＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートで受信した場合、受信したＣＭが、「マスタ２」のレベルのマスタになる。
【００８５】
図９は、マスタ決定例を示す図である。例えばストレージシステム全体にＡＣ電源が供給されると、各ＦＰＧＡ１１５，１２５，２１５，２２５，３１５，３２５，４１５，４２５が、マネジメントポートからＣＰＤパケットを送信する。なお、図８に示したマスタ条件テーブル１１５ｃｂの例では、「マスタ１」または「マスタ２」となる条件を満たすのは、ポート番号「０」のマネジメントポートから出力されるＣＰＤパケットのみである。そのため、図８に示したマスタ条件テーブル１１５ｃｂを使用する場合、ポート番号「０」のマネジメントポートのみが、ＣＰＤパケットを送信するようにしてもよい。
【００８６】
例えばＦＰＧＡ１１５のポート番号「０」のマネジメントポート１１５ａから送信されるＣＰＤパケット４１に含まれるＣＰＤの値は「０００」である。このＣＰＤパケット４１は、ＦＰＧＡ４２５のポート番号「１」のマネジメントポート４２５ｂで受信される。マネジメントポート４２５ｂの受信側に対応するＣＰＤの値は「１１１」である。この場合、マスタ条件テーブル１１５ｃｂにおける「マスタ２」の条件に合致する。そこで、ＦＰＧＡ４２５は、ＣＭ４２０が「マスタ２」のレベルのマスタになることを決定する。
【００８７】
なお、ＦＰＧＡ１２５のポート番号「０」のマネジメントポート１２５ａからも、ＣＰＤパケット４１と同様のＣＰＤを含むＣＰＤパケット４３が送信される。このＣＰＤパケット４３は、ＦＰＧＡ２１５のポート番号「０」のマネジメントポート２１５ａで受信される。マネジメントポート２１５ａの受信側に対応するＣＰＤの値は「００１」である。この場合、マスタ条件テーブル１１５ｃｂにおけるいずれの条件にも合致しない。そこで、ＦＰＧＡ２１５は、ＣＭ２１０が「マスタ１」および「マスタ２」のいずれのレベルのマスタにもならないことを決定する。
【００８８】
またＦＰＧＡ４２５のポート番号「０」のマネジメントポート４２５ａから送信されるＣＰＤパケット４２に含まれるＣＰＤの値は「１００」である。このＣＰＤパケット４２は、ＦＰＧＡ１１５のポート番号「１」のマネジメントポート１１５ｂで受信される。マネジメントポート１１５ｂの受信側に対応するＣＰＤの値は「０１１」である。この場合、マスタ条件テーブル１１５ｃｂにおける「マスタ１」の条件に合致する。そこで、ＦＰＧＡ１１５は、ＣＭ１１０を「マスタ１」のレベルのマスタにすることを決定する。
【００８９】
また、ＦＰＧＡ２１５のポート番号「０」のマネジメントポート２１５ａからも、ＣＰＤパケット４１と同様のＣＰＤを含むＣＰＤパケット４４が送信される。このＣＰＤパケット４４は、ＦＰＧＡ１２５のポート番号「０」のマネジメントポート１２５ａで受信される。マネジメントポート１２５ａの受信側に対応するＣＰＤの値は「１０１」である。この場合、マスタ条件テーブル１１５ｃｂにおけるいずれの条件にも合致しない。そこで、ＦＰＧＡ１２５は、ＣＭ１２０が「マスタ１」および「マスタ２」のいずれのレベルのマスタにもならないことを決定する。
【００９０】
ＣＭ１１０を「マスタ１」に決定したＦＰＧＡ１１５は、同じＣＥ１００内の他のＦＰＧＡ１２５に対して、「マスタ３」のレベルのマスタになることを指示する。この指示に従って、ＦＰＧＡ１２５は、ＣＭ１２０を「マスタ３」のレベルのマスタにすることを決定する。
【００９１】
ＣＭ４２０を「マスタ２」に決定したＦＰＧＡ４２５は、同じＣＥ４００内の他のＦＰＧＡ４１５に対して、「マスタ４」のレベルのマスタになることを指示する。この指示に従って、ＦＰＧＡ４１５は、ＣＭ４１０を「マスタ４」のレベルのマスタにすることを決定する。
【００９２】
このようにして、「マスタ１」〜「マスタ４」の各マスタとして動作するＣＭが決定される。このようなマスタ決定処理は、非常に短時間で実行できる。例えば、ＡＣ電源投入から１秒以内に、マスタを決定することができる。
【００９３】
なお、ＣＰＤパケット４１〜４４などの制御パケットは、ＦＰＧＡ１１５，１２５，２１５，２２５，３１５，３２５，４１５，４２５間での制御用の情報の送受信に用いられるパケットである。各ＣＥ１００，２００，３００，４００において他のＣＥからの制御パケットを受信したＣＭは、自身が宛先（ターゲットＣＭ）でなければ、同じＣＥ内の別のＣＭへ、ＣＥ内通信によって、その制御パケットを転送する。
【００９４】
ＣＥ内通信で制御パケットを受信したＣＭは、自身が宛先でなければ、他のＣＥ内のＣＭへその制御パケットを転送する。この際、他のＣＥからの制御パケットを受信したＣＭのマネジメントポートのポート番号が「０」であれば、ＣＥ内通信で制御パケットを受信したＣＭは、ポート番号「１」のマネジメントポートから制御パケットを送信する。また他のＣＥからの制御パケットを受信したＣＭのマネジメントポートのポート番号が「１」であれば、ＣＥ内通信で制御パケットを受信したＣＭは、ポート番号「０」のマネジメントポートから制御パケットを送信する。すなわちＣＥにおいて制御パケットを受信したときのポート番号とは別のポート番号のマネジメントポートから、その制御パケットが送信される。
【００９５】
図１０は、制御パケットのフォーマットの一例を示す図である。制御パケット４０は、１２個のフィールド４０ａ〜４０ｌを含んでいる。
フィールド４０ａのサイズは４ビットである。フィールド４０ａには、ＳＯＦ（Start Of Frame）ヘッダが格納される。ＳＯＦヘッダは、パケットの先頭を示す所定値である。例えばＳＯＦヘッダの値は、「１１１１（２進数）」である。
【００９６】
フィールド４０ｂのサイズは１バイトである。フィールド４０ｂには、プロセッサＩＤ（ＰＩＤ）が格納される。ＰＩＤは、ストレージシステム内でＣＭを一意に識別する識別子である。ＰＩＤには、例えば「２５５（１０進数）」〜「００００（１０進数）」のいずれかの値が設定される。
【００９７】
フィールド４０ｃのサイズは１バイトである。フィールド４０ｃには、シーケンスＩＤ（ＳＩＤ）が格納される。ＳＩＤは、制御パケットを送信するＣＭによってパケットに割り振られる番号である。ＳＩＤとしては、例えばメモリアドレスやコマンド種別などに基づいて、「２５５（１０進数）」〜「００００（１０進数）」のいずれかの値が設定される。
【００９８】
フィールド４０ｄのサイズは１バイトである。フィールド４０ｄには、ＣＰＤの値が設定される。
フィールド４０ｅのサイズは１バイトである。フィールド４０ｅには、データ保護用に、ＣＰＤのＣＲＣ（Cyclic Redundancy Check）コード（ＣＲＣ＃０）が格納される。ＣＲＣコードは、例えばＣＲＣ−８−ＡＴＭ（Asynchronous Transfer Mode）と呼ばれる多項式によって算出される値である。
【００９９】
フィールド４０ｆのサイズは１バイトである。フィールド４０ｆには、転送段数設定値（ＴＩＤ＿ＳＥＴ）が格納される。転送段数設定値は、送信元のＣＭから送信先のＣＭまでのＣＭ間転送の段数の指定値である。例えば、ＣＭ１１０がマネジメントケーブル２１で直接接続されたＣＭ４２０へ制御パケットを転送する場合の段数は「１」である。また、ＣＭ１１０が、ＣＭ４２０を経由して、ＣＭ４２０と同じＣＥ内の他のＣＭ４１０へ制御パケットを転送する場合の段数は「２」である。
【０１００】
フィールド４０ｇのサイズは１バイトである。フィールド４０ｇには、ＣＭ間の転送制御設定値（ＴＩＤ＿ＣＮＴ）が格納される。ＴＩＤ＿ＣＮＴは、転送現状値を加算しながら転送（加算転送）するのか、減算しながら転送（減算転送）するのかを指定する情報、あるいはターゲットＣＭ（宛先のＣＭ）を特定する情報である。ターゲットＣＭを特定する情報としては、例えばマスタとなっているＣＭのマスタのレベルを指定する番号（マスタＣＭ番号）を用いることができる。
【０１０１】
フィールド４０ｈのサイズは１バイトである。フィールド４０ｈには、データ保護用に、転送段数設定値（ＴＩＤ＿ＳＥＴ）のＣＲＣコード（ＣＲＣ＃１）が格納される。ＣＲＣコードは、例えばＣＲＣ−８−ＡＴＭによって算出される値である。
【０１０２】
フィールド４０ｉのサイズは１バイトである。フィールド４０ｉには、転送現状値（ＴＩＤ＿ＶＡＬ）が格納される。加算転送の場合、転送現状値の初期値は「００」（１６進数）で、ＣＭ間で転送されるごとに１ずつカウントアップされる。減算転送の場合、転送現状値の初期値は転送段数設定値であり、ＣＭ間で転送されるごとに１ずつカウントダウンされる。
【０１０３】
フィールド４０ｊのサイズは４バイトである。フィールド４０ｊはペイロードである。フィールド４０ｊには、メッセージ、または制御データが格納される。
フィールド４０ｋのサイズは１バイトである。フィールド４０ｋには、データ保護用に、ＰＩＤのＣＲＣコード（ＣＲＣ＃２）が格納される。ＣＲＣコードは、例えばＣＲＣ−８−ＡＴＭによって算出される値である。
【０１０４】
フィールド４０ｌのサイズは４ビットである。フィールド４０ｌには、ＥＯＦ（End Of Frame）ヘッダが格納される。ＥＯＦヘッダは、パケットの終わりを示す所定値である。例えばＥＯＦヘッダの値は、「００００（２進数）」である。
【０１０５】
以上のようなフォーマットの制御パケット４０により、マスタとなったＣＭ間での制御用の通信が行われる。図１１および図１２に、「マスタ１」〜「マスタ４」の各ＣＭが送信する制御パケット内の主要なデータの例を示す。図１１は、「マスタ１」と「マスタ２」との制御パケット内のデータ例を示す図である。図１２は、「マスタ３」と「マスタ４」との制御パケット内のデータ例を示す図である。
【０１０６】
図１１，図１２に示すように、「マスタ１」となったＣＭが送信する制御パケットのＰＩＤは、「０ｘ０１」である。「マスタ２」となったＣＭが送信する制御パケットのＰＩＤは、「０ｘ０２」である。「マスタ３」となったＣＭが送信する制御パケットのＰＩＤは、「０ｘ０３」である。「マスタ４」となったＣＭが送信する制御パケットのＰＩＤは、「０ｘ０４」である。
【０１０７】
ＳＩＤとしては、データ、マスタ通知通信、WatchDog通信などがある。WatchDog通信とは、正常に動作していることを示す信号の通信である。マスタとなったＣＭがWatchDog通信により、定期的に信号を他のＣＭに送信することで、他のＣＭが正常に動作していることを認識できる。
【０１０８】
このように、各ＦＰＧＡ１１５，１２５，２１５，２２５，３１５，３２５，４１５，４２５は、受信したＣＰＤパケット内のＣＰＤと、ＣＰＤパケットを受信したマネジメントポートのＣＰＤとを照合することで、マスタになるか否かを決定できる。
【０１０９】
なお、図２の例では、４台のＣＥ１００，２００，３００，４００が示されているが、ストレージシステムの運用開始時には２台のＣＥ１００，２００で運用し、その後の負荷の上昇に応じて、スケールアウトを行うこともできる。ＣＥが２台であっても、マネジメントケーブルの接続方法、およびマスタの決定方法は、ＣＥが４台の場合と同じである。
【０１１０】
図１３は、２台のＣＥの接続例を示す図である。図１３の例では、ＣＥ１００のＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートと、ＣＥ２００のＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートとが、マネジメントケーブル５１で接続されている。ＣＥ１００のＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートと、ＣＥ２００のＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブル５２で接続されている。ＣＥ１００のＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートと、ＣＥ２００のＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブル５３で接続されている。ＣＥ１００のＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートと、ＣＥ２００のＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートとが、マネジメントケーブル５４で接続されている。
【０１１１】
このように接続することで、ＣＥ１００のＣＭ番号「０」のＣＭが「マスタ１」、ＣＥ２００のＣＭ番号「１」のＣＭが「マスタ２」、ＣＥ１００のＣＭ番号「１」のＣＭが「マスタ３」、ＣＥ２００のＣＭ番号「０」のＣＭが「マスタ４」となる。
【０１１２】
次に、図１３のような接続状態のときの、各ＣＭ１１０，１２０，２１０，２２０のＤＣ−ＯＮの手順について説明する。
図１４は、ＤＣ−ＯＮの手順を示すシーケンス図の前半である。図１４の例では、ＣＥ２００に対して、ＤＣ−ＯＮを指示する操作が行われたものとする。このとき、ＣＥ２００内のＣＭ番号「０」のＣＭ２１０内のＦＰＧＡ２１５が、ＤＣ−ＯＮの指示を受け付ける（ステップＳ１１１）。ＦＰＧＡ２１５は、ポート番号「０」のマネジメントポートから、DC-ONstartパケットを送信する（ステップＳ１１２）。送信されたDC-ONstartパケットは、ＣＭ１２０内のＦＰＧＡ１２５で受信される。
【０１１３】
DC-ONstartパケットを受信したＦＰＧＡ１２５は、ＣＭ２１０にCompletion応答を送信する（ステップＳ１１３）。さらにＦＰＧＡ１２５は、同じＣＥ１００内の他系のＣＭ１１０に、ＣＥ内通信でDC-ONstartパケットを送信する（ステップＳ１１４）。
【０１１４】
DC-ONstartパケットを受信したＣＭ１１０内のＦＰＧＡ１１５は、ＣＭ１２０にCompletion応答を送信する（ステップＳ１１５）。さらにＦＰＧＡ１１５は、ポート番号「１」のマネジメントポートから、DC-ONstartパケットを送信する（ステップＳ１１６）。送信されたDC-ONstartパケットは、ＣＭ２２０内のＦＰＧＡ２２５で受信される。
【０１１５】
DC-ONstartパケットを受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ１１７）。さらにＦＰＧＡ２２５は、同じＣＥ２００内の他系のＣＭ２１０に、ＣＥ内通信でDC-ONstartパケットを送信する（ステップＳ１１８）。
【０１１６】
DC-ONstartパケットを受信したＣＭ２１０内のＦＰＧＡ２１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ１１９）。ＦＰＧＡ２１５は、DC-ONstartパケットを受信したことにより、構成されている全ＣＭのＤＣ−ＯＮ指示が完了したと判定する。
【０１１７】
図１５は、ＤＣ−ＯＮの手順を示すシーケンス図の後半である。全ＣＭのＤＣ−ＯＮ指示が完了したと判定したＦＰＧＡ２１５は、ポート番号「０」のマネジメントポートから、DC-ONendパケットを送信する（ステップＳ１２１）。送信されたDC-ONendパケットは、ＣＭ１２０内のＦＰＧＡ１２５で受信される。
【０１１８】
DC-ONendパケットを受信したＦＰＧＡ１２５は、ＣＭ２１０にCompletion応答を送信する（ステップＳ１２２）。さらにＦＰＧＡ１２５は、同じＣＥ１００内の他系のＣＭ１１０に、ＣＥ内通信でDC-ONendパケットを送信する（ステップＳ１２３）。
【０１１９】
DC-ONendパケットを受信したＣＭ１１０内のＦＰＧＡ１１５は、ＣＭ１２０にCompletion応答を送信する（ステップＳ１２４）。さらにＦＰＧＡ１１５は、ポート番号「１」のマネジメントポートから、DC-ONendパケットを送信する（ステップＳ１２５）。送信されたDC-ONendパケットは、ＣＭ２２０内のＦＰＧＡ２２５で受信される。
【０１２０】
DC-ONendパケットを受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ１２６）。さらにＦＰＧＡ２２５は、同じＣＥ２００内の他系のＣＭ２１０に、ＣＥ内通信でDC-ONendパケットを送信する（ステップＳ１２７）。
【０１２１】
DC-ONendパケットを受信したＣＭ２１０内のＦＰＧＡ２１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ１２８）。
これにより各ＣＭ１１０，１２０，２１０，２２０へのＤＣ−ＯＮ処理が完了する。ＤＣ−ＯＮ処理が完了すると、マスタ決定処理が開始される。以下、図１６〜図１８を参照して、マスタ決定処理の手順について詳細に説明する。
【０１２２】
図１６は、マスタ決定処理の手順を示すシーケンス図（１／３）である。各ＣＥ１００，２００内のＣＭ番号「０」のＣＭ１１０，２１０のＦＰＧＡ１１５，２１５は、それぞれＣＰＤパケットを、ポート番号「０」、「１」の両方のマネジメントポートから送信する（ステップＳ２１１，Ｓ２１２）。ＦＰＧＡ１１５から送信されたＣＰＤパケットは、ＣＭ２２０内のＦＰＧＡ２２５で受信される。ＦＰＧＡ２１５から送信されたＣＰＤパケットは、ＣＭ１２０内のＦＰＧＡ１２５で受信される。
【０１２３】
ＣＰＤパケットを受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ２１３）。同様に、ＣＰＤパケットを受信したＦＰＧＡ１２５は、ＣＭ２１０にCompletion応答を送信する（ステップＳ２１４）。また、ＣＰＤパケットを受信した各ＦＰＧＡ１２５，２２５は、それぞれ、同じＣＥ１００，２００内の他系のＣＭ１１０，２１０に、Completion応答を送信する（ステップＳ２１５，Ｓ２１６）。
【０１２４】
次に、各ＣＥ１００，２００内のＣＭ番号「１」のＣＭ１２０，２２０のＦＰＧＡ１２５，２２５は、それぞれＣＰＤパケットを、ポート番号「０」、「１」の両方のマネジメントポートから送信する（ステップＳ２１７，Ｓ２１８）。ＦＰＧＡ１２５から送信されたＣＰＤパケットは、ＣＭ２１０内のＦＰＧＡ２１５で受信される。ＦＰＧＡ２２５から送信されたＣＰＤパケットは、ＣＭ１１０内のＦＰＧＡ１１５で受信される。
【０１２５】
ＣＰＤパケットを受信したＦＰＧＡ１１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ２１９）。同様に、ＣＰＤパケットを受信したＦＰＧＡ２１５は、ＣＭ１２０にCompletion応答を送信する（ステップＳ２２０）。また、ＣＰＤパケットを受信した各ＦＰＧＡ１１５，２１５は、それぞれ、同じＣＥ１００，２００内の他系のＣＭ１２０，２２０に、Completion応答を送信する（ステップＳ２２１，Ｓ２２２）。
【０１２６】
各ＦＰＧＡ１１５，１２５，２１５，２２５は、ＣＰＤパケット送信のCompletion応答が確認できたタイミングで、ＣＰＤに基づくマスタ判定を行い、「マスタ１」または「マスタ２」になるか否かを判定する（ステップＳ２２３〜Ｓ２２６）。図１６の例では、ＦＰＧＡ１１５において、ＣＭ１１０が「マスタ１」になると判定されている。またＦＰＧＡ２２５において、ＣＭ２２０が「マスタ２」になると判定されている。
【０１２７】
「マスタ１」および「マスタ２」が決定されると、各ＣＭが「マスタ１」のＣＭまでのホップ数を把握するために、「マスタ１」となったＣＭの通知処理が行われる。以下に、マスタ決定処理のうちの、ＣＭ通知処理移行の処理を説明する。
【０１２８】
図１７は、マスタ決定処理の手順を示すシーケンス図（２／３）である。「マスタ１」となったＣＭの通知処理は、「マスタ１」となったＣＭ１１０のＦＰＧＡ１１５が有する２つのマネジメントポートそれぞれのルートで行われる。
【０１２９】
まず「マスタ１」となったＣＭ１１０のＦＰＧＡ１１５は、ポート番号「０」のマネジメントポート１１５ａから、マスタ１決定通知パケットを送信する（ステップＳ２４１）。ＦＰＧＡ１１５から送信されたマスタ１決定通知パケットは、ＣＭ２２０内のＦＰＧＡ２２５で受信される。マスタ１決定通知パケットは、例えばＴＩＤ＿ＣＮＴを加算転送とする。これによりマスタ１決定通知パケットは、ＣＭで中継されるごとに、ＴＩＤ＿ＶＡＬの値が１ずつカウントアップされる。またマスタ１決定通知パケットを受信した各ＣＭ内のＦＰＧＡは、受信したマスタ１決定通知パケットのＴＩＤ＿ＶＡＬに基づいて、「マスタ１」のＣＭまでのホップ数を把握する。
【０１３０】
マスタ１決定通知パケットを受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ２４２）。さらにＦＰＧＡ２２５は、同じＣＥ２００内の他系のＣＭ２１０に、ＣＥ内通信でマスタ１決定通知パケットを送信する（ステップＳ２４３）。
【０１３１】
マスタ１決定通知パケットを受信したＣＭ２１０のＦＰＧＡ２１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ２４４）。またＦＰＧＡ２１５は、ポート番号「１」のマネジメントポート２１５ｂから、マスタ１決定通知パケットを送信する（ステップＳ２４５）。ＦＰＧＡ２１５から送信されたマスタ１決定通知パケットは、ＣＭ１２０内のＦＰＧＡ１２５で受信される。
【０１３２】
マスタ１決定通知パケットを受信したＦＰＧＡ１２５は、ＣＭ２１０にCompletion応答を送信する（ステップＳ２４６）。さらにＦＰＧＡ１２５は、同じＣＥ１００内の他系のＣＭ１１０に、ＣＥ内通信でマスタ１決定通知パケットを送信する（ステップＳ２４７）。
【０１３３】
マスタ１決定通知パケットを受信したＣＭ１１０のＦＰＧＡ１１５は、ＣＭ１２０にCompletion応答を送信する（ステップＳ２４８）。
ＦＰＧＡ１１５は、ＣＭ１２０からマスタ１決定通知を受信したことにより、ポート番号「０」のマネジメントポート１１５ａを経由するルートでの通知が完了したものと判断する。ＦＰＧＡ１１５は、ステップＳ２４１でのマスタ１決定通知の送信から所定の時間を経過しても、ＣＭ１２０からマスタ１決定通知を受信できない場合は、受信できるまで、ステップＳ２４１の処理を繰り返し実行する。
【０１３４】
図１８は、マスタ決定処理の手順を示すシーケンス図（３／３）である。ＣＭ１１０のＦＰＧＡ１１５は、ポート番号「１」のマネジメントポート１１５ｂから、マスタ１決定通知パケットを送信する（ステップＳ２５１）。ＦＰＧＡ１１５から送信されたマスタ１決定通知パケットは、ＣＭ２２０内のＦＰＧＡ２２５で受信される。
【０１３５】
マスタ１決定通知パケットを受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ２５２）。さらにＦＰＧＡ２２５は、同じＣＥ２００内の他系のＣＭ２１０に、ＣＥ内通信でマスタ１決定通知パケットを送信する（ステップＳ２５３）。
【０１３６】
マスタ１決定通知パケットを受信したＣＭ２１０のＦＰＧＡ２１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ２５４）。またＦＰＧＡ２１５は、ポート番号「０」のマネジメントポート２１５ａから、マスタ１決定通知パケットを送信する（ステップＳ２５５）。ＦＰＧＡ２１５から送信されたマスタ１決定通知パケットは、ＣＭ１２０内のＦＰＧＡ１２５で受信される。
【０１３７】
マスタ１決定通知パケットを受信したＦＰＧＡ１２５は、ＣＭ２１０にCompletion応答を送信する（ステップＳ２５６）。さらにＦＰＧＡ１２５は、同じＣＥ１００内の他系のＣＭ１１０に、ＣＥ内通信でマスタ１決定通知パケットを送信する（ステップＳ２５７）。
【０１３８】
マスタ１決定通知パケットを受信したＣＭ１１０のＦＰＧＡ１１５は、ＣＭ１２０にCompletion応答を送信する（ステップＳ２５８）。
ＦＰＧＡ１１５は、ＣＭ１２０からマスタ１決定通知を受信したことにより、ポート番号「１」のマネジメントポート１１５ｂを経由するルートでの通知が完了したものと判断する。ＦＰＧＡ１１５は、ステップＳ２５１でのマスタ１決定通知の送信から所定の時間を経過しても、ＣＭ１２０からマスタ１決定通知を受信できない場合は、受信できるまでステップＳ２５１の処理を繰り返し実行する。
【０１３９】
２つのルートによるマスタ１決定通知が完了したとき、「マスタ２」となったＣＭ２２０のＦＰＧＡ２２５は、受信したマスタ１決定通知パケットのＴＩＤ＿ＶＡＬにより、ＣＭ２２０が、「マスタ１」のＣＭ１１０から各ルートの何ホップ目になるのを把握できる。そこで、ＣＭ２２０のＦＰＧＡ２２５は、「マスタ１」のＣＭ１１０に対して、マスタ２ルート通知を送信する（ステップＳ２５９）。マスタ２ルート通知は、例えば、ＣＭ１１０までのホップ数がＴＩＤ＿ＳＥＴに設定され、ＴＩＤ＿ＣＮＴでは減算転送が指定される。「マスタ１」のＣＭ１１０のＦＰＧＡ１１５は、受信したマスタ２ルート通知のＴＩＤ＿ＳＥＴの値を参照し、「マスタ２」のＣＭ２２０までのホップ数を認識する。そして、マスタ２ルート通知を受信したＣＭ１１０のＦＰＧＡ１１５は、ＣＭ２２０までのホップ数に基づいて、ＣＭ２２０にCompletion応答を送信する（ステップＳ２６０）。
【０１４０】
次にＣＭ１１０のＦＰＧＡ１１５は、同じＣＥ１００内の他のＣＭ１２０に対して、ＣＭ１２０が「マスタ３」になることを示すマスタ３決定通知を送信する（ステップＳ２６１）。マスタ３決定通知を受信したＣＭ１２０のＦＰＧＡ１２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ２６２）。
【０１４１】
またＣＭ２２０のＦＰＧＡ２２５は、同じＣＥ２００内の他のＣＭ２１０に対して、ＣＭ２１０が「マスタ４」になることを示すマスタ４決定通知を送信する（ステップＳ２６３）。マスタ４決定通知を受信したＣＭ２１０のＦＰＧＡ２１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ２６４）。
【０１４２】
このようにして、各ＣＭ１１０，１２０，２１０，２２０の連携動作により、「マスタ１」〜「マスタ４」の各マスタとなるＣＭが決定される。しかもＣＭ１１０，１２０，２１０，２２０内のＦＰＧＡ１１５，１２５，２１５，２２５によってマスタ決定処理が実行できるため、他のＣＭのプロセッサ（ファームウェアに基づくプロセッサの処理）の介在なしに、マスタを決定できる。
【０１４３】
「マスタ１」となったＣＭ１１０は、他のＣＭ１２０，２１０，２２０を管理する。例えばＣＭ１１０は、他のＣＭ１２０，２１０，２２０から動作ログを採取する。また「マスタ１」〜「マスタ４」となった各ＣＭ１１０，１２０，２１０，２２０は、それぞれ、他のいずれかのマスタのＣＭを監視し、監視対象のＣＭの故障に備える。
【０１４４】
図１９は、監視対象の一例を示す図である。第２の実施の形態では、例えば「マスタ１」のＣＭは、「マスタ２」のＣＭの動作を監視する。「マスタ２」のＣＭは、「マスタ１」のＣＭの動作を監視する。「マスタ３」のＣＭは、「マスタ１」のＣＭの動作を監視する。「マスタ４」のＣＭは、「マスタ２」のＣＭの動作を監視する。
【０１４５】
ＣＭの監視は、例えばWatchDog通信によって行われる。この場合、監視しているＣＭが監視対象のＣＭとの間で、WatchDog通信を行う。例えば監視しているＣＭは、監視対象のＣＭに対して、定期的に生存確認要求を送信する。他のＣＭを監視しているＣＭは、監視対象のＣＭからの生存確認要求に対する応答が一定期間以上受信できない場合、所定回数だけ生存確認要求を再送する。所定回数だけ生存確認要求を再送しても応答を受信できない場合、監視しているＣＭは、監視対象のＣＭに異常が発生したと判断する。
【０１４６】
また他のＣＭからの監視対象となっているＣＭのマスタレベルが、監視しているＣＭより上の場合、監視対象となっているＣＭは、ストレージシステム全体の動作状態に関する情報（システム情報）を、監視しているＣＭにミラーリングによって配信する。例えば「マスタ１」のＣＭでは、そのＣＭが集約したシステム情報を、そのＣＭ内のＦＰＧＡが、ＣＭのプロセッサの介在なしに、「マスタ２」のＣＭと「マスタ３」のＣＭとに同時に配信する。「マスタ１」のＣＭからシステム情報を受信した「マスタ２」のＣＭでは、そのＣＭ内のＦＰＧＡが、ＣＭのプロセッサの介在なしに、受信したシステム情報を「マスタ４」のＣＭに配信する。
【０１４７】
このように、システム情報をミラーリングで配信しておくことで、マスタレベルが上位のＣＭが故障したとき、そのＣＭを監視している、マスタレベルが下位のＣＭが、フェイルオーバ処理によって、上位のマスタレベルに移行することができる。なお、故障したＣＭは、いずれのレベルのマスタでもなくなる。以下、マスタではなくなることを「degrade」と称する。
【０１４８】
図２０は、マスタＣＭ故障時のフェイルオーバの例を示す図である。例えば、「マスタ１」のＣＭが故障によりdegradeした場合、「マスタ２」のＣＭがフェイルオーバにより「マスタ１」に移行する。「マスタ３」のＣＭは、フェイルオーバにより「マスタ２」に移行する。「マスタ４」のＣＭは、フェイルオーバにより「マスタ３」に移行する。
【０１４９】
「マスタ２」のＣＭが故障によりdegradeした場合、「マスタ４」のＣＭがフェイルオーバにより「マスタ２」に移行する。「マスタ３」および「マスタ４」のＣＭが故障によりdegradeした場合、他のＣＭのマスタのレベルの変更はない。
【０１５０】
また、マスタとなっている４つのＣＭのうちの２つが同時に故障する場合も考えられる。この場合、正常に動作しているＣＭが、「マスタ１」と「マスタ２」となる。
図２１は、２つのマスタＣＭ故障時のフェイルオーバの例を示す図である。例えば「マスタ１」のＣＭと「マスタ３」のＣＭとが同時に故障し、共にdegradeした場合、「マスタ２」のＣＭがフェイルオーバにより「マスタ１」に移行する。「マスタ４」のＣＭは、フェイルオーバにより「マスタ２」に移行する。「マスタ２」のＣＭと「マスタ４」のＣＭとが同時に故障し、共にdegradeした場合、「マスタ３」のＣＭがフェイルオーバにより「マスタ２」に移行する。「マスタ１」のＣＭと「マスタ２」のＣＭとが同時に故障し、共にdegradeした場合、「マスタ３」のＣＭがフェイルオーバにより「マスタ１」に移行する。「マスタ４」のＣＭは、フェイルオーバにより「マスタ２」に移行する。「マスタ３」のＣＭと「マスタ４」のＣＭとが同時に故障し、共にdegradeした場合、フェイルオーバは行われない。
【０１５１】
以下、図１３に示すような接続状態の場合を例に採り、マスタとなるＣＭ間での監視、システム情報のミラーリング、および故障時のフェイルオーバ処理について、詳細に説明する。
【０１５２】
図２２は、マスタとなるＣＭ間の監視処理の一例を示すシーケンス図である。「マスタ１」のＣＭ１１０内のＦＰＧＡ１１５は、「マスタ２」の生存を確認するための生存確認要求を、「マスタ２」のＣＭ２２０に送信する（ステップＳ３１１）。ＦＰＧＡ１１５から送信された生存確認要求は、ＣＭ２２０内のＦＰＧＡ２２５で受信される。生存確認要求を受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ３１２）。
【０１５３】
「マスタ２」のＣＭ２２０内のＦＰＧＡ２２５は、「マスタ１」の生存を確認するための生存確認要求を、「マスタ１」のＣＭ１１０に送信する（ステップＳ３１３）。ＦＰＧＡ２２５から送信された生存確認要求は、ＣＭ１１０内のＦＰＧＡ１１５で受信される。生存確認要求を受信したＦＰＧＡ１１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ３１４）。
【０１５４】
ＦＰＧＡ１２５は、「マスタ１」の生存を確認するための生存確認要求を、「マスタ１」のＣＭ１１０に送信する（ステップＳ３１５）。ＦＰＧＡ１２５から送信された生存確認要求は、ＣＭ１１０内のＦＰＧＡ１１５で受信される。生存確認要求を受信したＦＰＧＡ１１５は、ＣＭ１２０にCompletion応答を送信する（ステップＳ３１６）。
【０１５５】
ＦＰＧＡ２１５は、「マスタ２」が生存していることを示す生存確認要求を、「マスタ２」のＣＭ２２０に送信する（ステップＳ３１７）。ＦＰＧＡ２１５から送信された生存確認要求は、ＣＭ２２０内のＦＰＧＡ２２５で受信される。生存確認要求を受信したＦＰＧＡ２２５は、ＣＭ２１０にCompletion応答を送信する（ステップＳ３１８）。
【０１５６】
「マスタ１」のＣＭ１１０内のＦＰＧＡ１１５は、生存確認要求の送信、およびCompletion応答の受信によるWatchDog通信が問題なく完了すると、ＣＭ１１０内のプロセッサへ、生存確認完了を通知する（ステップＳ３１９）。「マスタ２」のＣＭ２２０内のＦＰＧＡ２２５は、WatchDog通信が問題なく完了すると、ＣＭ２２０内のプロセッサへ、生存確認完了を通知する（ステップＳ３２０）。
【０１５７】
図２３は、システム情報のミラーリング処理の一例を示すシーケンス図である。WatchDog通信が完了すると、ＣＭ１１０のプロセッサからＦＰＧＡ１１５に、システム情報のミラー配置の指示が出される。この指示に応じて、ＦＰＧＡ１１５は、ＣＭ１１０のプロセッサがストレージシステム全体から収集したシステム情報を、プロセッサから取得する（ステップＳ３３１）。取得したシステム情報は、一時的に記憶部１１５ｄに格納される。
【０１５８】
ＦＰＧＡ１１５は、取得したシステム情報を、「マスタ２」のＣＭ２２０と「マスタ３」のＣＭとに送信する（ステップＳ３３２，Ｓ３３３）。ＦＰＧＡ１１５から送信されたシステム情報は、ＣＭ２２０内のＦＰＧＡ２２５とＣＭ１２０内のＦＰＧＡ１２５とで受信される。ＦＰＧＡ２２５が受信したシステム情報はＣＭ２２０のプロセッサに送信され、そのプロセッサにより管理される。ＦＰＧＡ１２５が受信したシステム情報はＣＭ１２０のプロセッサに送信され、そのプロセッサにより管理される。システム情報を受信したＦＰＧＡ２２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ３３４）。また、システム情報を受信したＦＰＧＡ１２５は、ＣＭ１１０にCompletion応答を送信する（ステップＳ３３５）。
【０１５９】
その後、ＣＭ２２０のプロセッサからＦＰＧＡ２２５に、システム情報のミラー配置の指示が出される。この指示に応じて、ＦＰＧＡ２２５は、ＣＭ２２０のプロセッサが管理するシステム情報を、プロセッサから取得する（ステップＳ３３６）。ＦＰＧＡ２２５は、取得したシステム情報を、「マスタ４」のＣＭ２１０に送信する（ステップＳ３３７）。ＦＰＧＡ２２５から送信されたシステム情報は、ＣＭ２１０内のＦＰＧＡ２１５で受信される。ＦＰＧＡ２１５が受信したシステム情報はＣＭ２１０のプロセッサに送信され、そのプロセッサにより管理される。システム情報を受信したＦＰＧＡ２１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ３３８）。
【０１６０】
ＦＰＧＡ２２５は、「マスタ１」のＣＭ１１０へ、システム情報の転送完了通知を送信する（ステップＳ３３９）。転送完了通知は、ＣＭ１１０内のＦＰＧＡ１１５で受信される。転送完了通知を受信したＦＰＧＡ１１５は、ＣＭ２２０にCompletion応答を送信する（ステップＳ３４０）。
【０１６１】
そして、ＣＭ１１０のＦＰＧＡ１１５が、ＣＭ１１０のプロセッサへ、システム情報の転送が完了したことを通知する（ステップＳ３４１）。
このようにして、ＦＰＧＡ１１５，１２５，２１５，２２５によるシステム情報の転送が、ＣＭ１１０，１２０，２１０，２２０内のプロセッサを介さずに実施される。システム情報が各ＣＭ１１０，１２０，２１０，２２０に予め渡されていることで、いずれかのＣＭが故障した場合に、迅速にフェイルオーバ処理を実施できる。
【０１６２】
図２４は、フェイルオーバ処理の手順の一例を示すシーケンス図である。図２４には、「マスタ２」のＣＭ２２０が故障した場合のフェイルオーバ処理の例を示している。なお、「マスタ１」のＣＭ１１０と「マスタ２」のＣＭ２２０とは、互いに監視し合っており、双方から生存確認要求が送信される。この場合、「マスタ１」のＣＭ１１０内のＦＰＧＡ１１５は、生存確認要求に対するCompletion応答がＣＭ２２０から送られてこない場合に、ＣＭ２２０を故障と判定することができる。また、ＦＰＧＡ１１５は、ＣＭ２２０が定期的に送信するはずの生存確認要求が所定期間以上送られてこない場合にも、ＣＭ２２０を故障と判定することができる。図２４では、Completion応答が送られてこないことによる故障検知例が示されている。
【０１６３】
「マスタ１」のＣＭ１１０内のＦＰＧＡ１１５は、生存確認要求を、「マスタ２」のＣＭ２２０と「マスタ３」のＣＭ１２０とに送信する（ステップＳ３５１，Ｓ３５２）。ＣＭ１２０は正常に動作しているため、ＦＰＧＡ１２５からは、ＣＭ１１０にCompletion応答が送信される（ステップＳ３５３）。しかし、ＣＭ２２０は故障しており、ＣＭ１１０のＦＰＧＡ１１５は、ＣＭ２２０からのCompletion応答を受信できない。
【０１６４】
ＦＰＧＡ１１５は、生存確認要求を送信してから２００ｍｓ経過してもCompletion応答を受信できない場合、生存確認要求の送信（２回目）を実行する（ステップＳ３５４）。再送信した生存確認要求に対してもCompletion応答を受信できない場合、生存確認要求を送信してから２００ｍｓ経過後に、生存確認要求の送信（３回目）を実行する（ステップＳ３５５）。
【０１６５】
３回目の生存確認要求の送信に対しても、Completion応答を受信できない場合、ＣＭ１２０に対して、「マスタ４」のＣＭ２１０をターゲットＣＭとしたフェイルオーバ指示を送信する（ステップＳ３５６）。ＣＭ１２０のＦＰＧＡ１２５は、ＣＭ２１０に対して、フェイルオーバ指示を転送する（ステップＳ３５７）。
【０１６６】
フェイルオーバ指示を受信したＣＭ２１０のＦＰＧＡ２１５は、ＣＭ２１０のマスタレベルを「マスタ４」から「マスタ２」に変更する（ステップＳ３５８）。そしてＦＰＧＡ２１５は、ＣＭ１１０をターゲットＣＭとするCompletion応答を、ＣＭ１２０に送信する（ステップＳ３５９）。ＣＭ１２０のＦＰＧＡ１２５は、Completion応答をＣＭ１１０に転送する（ステップＳ３６０）。
【０１６７】
このようにして、「マスタ２」となったＣＭが故障しても、すぐにフェイルオーバが行われ、他のＣＭが故障したＣＭに変わって、ストレージシステム全体のＣＭの管理を実施することができる。
【０１６８】
なお、マネジメントケーブルの接続に関する条件を満たす接続形態は、さまざまなものが考えられる。
図２５は、ＣＭ間の接続形態の変形例を示す図である。図２５の例では、３台のＣＥ１００，２００，３００が設けられている。
【０１６９】
ＣＥ１００のＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートと、ＣＥ３００のＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブル６１で接続されている。ＣＥ１００のＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートと、ＣＥ２００のＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブル６２で接続されている。ＣＥ１００のＣＭ番号「１」のＣＭのポート番号「０」のマネジメントポートと、ＣＥ２００のＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブル６３で接続されている。ＣＥ１００のＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートと、ＣＥ３００のＣＭ番号「０」のＣＭのポート番号「０」のマネジメントポートとが、マネジメントケーブル６４で接続されている。ＣＥ２００のＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートと、ＣＥ３００のＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートとが、マネジメントケーブル６５で接続されている。ＣＥ２００のＣＭ番号「１」のＣＭのポート番号「１」のマネジメントポートと、ＣＥ３００のＣＭ番号「０」のＣＭのポート番号「１」のマネジメントポートとが、マネジメントケーブル６６で接続されている。
【０１７０】
この場合、ＣＥ１００内のＣＭ番号「０」のＣＭ１１０が「マスタ１」となる。またＣＥ１００内のＣＭ番号「１」のＣＭ１２０が「マスタ２」となる。この場合、「マスタ１」のＣＭ１１０と同じＣＥ１００内の他のＣＭ１２０は、既に「マスタ２」である。そのため、そのＣＭ１２０を「マスタ３」にすることができない。このような、マスタの競合が発生する場合、例えば、「マスタ１」のＣＭ１１０のポート番号「０」のマネジメントポートを介して接続された他のＣＭを、「マスタ３」とする。図２５の例では、ＣＥ３００内のＣＭ番号「１」のＣＭ３２０が、「マスタ３」となる。「マスタ４」についても競合が発生している。この場合、「マスタ２」のＣＭ１２０のポート番号「０」のマネジメントポートを介して接続された他のＣＭを、「マスタ４」とする。図２５の例では、ＣＥ２００内のＣＭ番号「０」のＣＭ２１０が、「マスタ４」となる。
【０１７１】
このように、マネジメントケーブルの接続条件を満たしていれば、さまざまな接続形態が許容される。そして各ＣＭ内のＦＰＧＡがマネジメントケーブル経由で制御パケットを用いた通信を行うことで、ＤＣ−ＯＮ制御、マスタ決定、およびフェイルオーバを含む監視処理を実施することができる。
【０１７２】
以下、ＣＭ１１０のＦＰＧＡ１１５を例に採り、ＦＰＧＡ１１５が実行する処理を詳細に説明する。
図２６は、ＦＰＧＡが実施するＤＣ−ＯＮ制御処理の手順の一例を示すフローチャートである。以下、図２６に示す処理をステップ番号に沿って説明する。
【０１７３】
［ステップＳ４１１］ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮ指示が入力されたか否かを判断する。ＤＣ−ＯＮ指示が入力された場合、ＤＣ−ＯＮ制御部１１５ｅは、ＣＭ１１０に直流電源の供給を開始し、処理をステップＳ４１２に進める。ＤＣ−ＯＮ指示が入力されていなければ、処理がステップＳ４１６に進められる。
【０１７４】
［ステップＳ４１２］ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮstartパケットを、マネジメントケーブルで接続された他のＣＥ内のＣＭに送信する。ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮstartパケットに対するCompletion応答を受信すると、処理をステップＳ４１３に進める。
【０１７５】
［ステップＳ４１３］ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮstartパケットを、同じＣＥ１００内の他のＣＭ１２０から受信したか否かを判断する。ＤＣ−ＯＮstartパケットを受信した場合、ＣＭ１２０にCompletion応答を送信し、処理をステップＳ４１４に進める。ＤＣ−ＯＮstartパケットを受信していなければ、受信するまでステップＳ４１３の判断を繰り返す。
【０１７６】
［ステップＳ４１４］ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮendパケットを、マネジメントケーブルで接続された他のＣＥ内のＣＭに送信する。ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮendパケットに対するCompletion応答を受信すると、処理をステップＳ４１５に進める。
【０１７７】
［ステップＳ４１５］ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮendパケットを、同じＣＥ１００内の他のＣＭ１２０から受信したか否かを判断する。ＤＣ−ＯＮendパケットを受信した場合、ＣＭ１２０にCompletion応答を送信し、処理を終了する。ＤＣ−ＯＮendパケットを受信していなければ、受信するまでステップＳ４１５の処理が繰り返される。
【０１７８】
［ステップＳ４１６］ＤＣ−ＯＮ制御部１１５ｅは、他のＣＭからＤＣ−ＯＮstartパケットを受信したか否かを判断する。ＤＣ−ＯＮstartパケットを受信した場合、ＤＣ−ＯＮstartパケットの送信元のＣＭにCompletion応答を送信すると共に、ＤＣ−ＯＮ制御部１１５ｅは、ＣＭ１１０に直流電源の供給を開始し、処理をステップＳ４１７に進める。ＤＣ−ＯＮstartパケットを受信していなければ、処理がステップＳ４１１に進められる。
【０１７９】
［ステップＳ４１７］ＤＣ−ＯＮ制御部１１５ｅは、受信したＤＣ−ＯＮstartパケットの送信元とは別のＣＭに、ＤＣ−ＯＮstartパケットを送信する。ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮstartパケットに対するCompletion応答を受信すると、処理をステップＳ４１８に進める。
【０１８０】
［ステップＳ４１８］ＤＣ−ＯＮ制御部１１５ｅは、他のＣＭからＤＣ−ＯＮendパケットを受信したか否かを判断する。ＤＣ−ＯＮendパケットを受信した場合、ＤＣ−ＯＮendパケットの送信元のＣＭにCompletion応答を送信し、処理をステップＳ４１９に進める。ＤＣ−ＯＮendパケットを受信していなければ、受信するまでステップＳ４１８の処理が繰り返される。
【０１８１】
［ステップＳ４１９］ＤＣ−ＯＮ制御部１１５ｅは、受信したＤＣ−ＯＮendパケットの送信元とは別のＣＭに、ＤＣ−ＯＮendパケットを送信する。ＤＣ−ＯＮ制御部１１５ｅは、ＤＣ−ＯＮendパケットに対するCompletion応答を受信すると、処理を終了する。
【０１８２】
このようにして、ＦＰＧＡ１１５によってＣＭ１１０のＤＣ−ＯＮが制御される。
次に、ＦＰＧＡ１１５によるマスタ決定処理について詳細に説明する。
図２７は、ＦＰＧＡが実施するマスタ判定処理の手順の一例を示すフローチャートの前半である。以下、図２７に示す処理をステップ番号に沿って説明する。
【０１８３】
［ステップＳ４３１］マスタ決定部１１５ｆは、２つのマネジメントポートそれぞれから、他のＣＭ宛てのＣＰＤパケットを送信する。マスタ決定部１１５ｆは、ＣＰＤパケットに対するCompletion応答を受信すると、処理をステップＳ４３２に進める。
【０１８４】
［ステップＳ４３２］マスタ決定部１１５ｆは、他のＣＭからＣＰＤパケットを受信したか否かを判断する。マスタ決定部１１５ｆは、ＣＰＤパケットを受信した場合、ＣＰＤパケットの送信元のＣＭにCompletion応答を送信し、処理をステップＳ４３３に進める。ＣＰＤパケットを受信していない場合、ステップＳ４３２の処理が繰り返される。
【０１８５】
［ステップＳ４３３］マスタ決定部１１５ｆは、マスタ１，２判定処理を行う。この処理の詳細は後述する（図２９参照）。
［ステップＳ４３４］マスタ決定部１１５ｆは、マスタ１，２判定処理により、「マスタ１」と判定されたか否かを判断する。「マスタ１」と判定された場合、処理がステップＳ４３５に進められる。「マスタ１」と判定されていない場合、処理がステップＳ４５１（図２８参照）に進められる。
【０１８６】
［ステップＳ４３５］マスタ決定部１１５ｆは、ＣＭ１１０をマスタレベル「マスタ１」のマスタに設定する。
［ステップＳ４３６］マスタ決定部１１５ｆは、ＦＰＧＡ１１５の２つのマネジメントポート１１５ａ，１１５ｂそれぞれからマスタ１決定通知（２ルート分）を送信する。マスタ決定部１１５ｆは、送信した２ルート分のマスタ１決定通知それぞれに対するCompletion応答を受信すると、処理をステップＳ４３７に進める。
【０１８７】
［ステップＳ４３７］マスタ決定部１１５ｆは、他のＣＭから、２ルート分のマスタ１決定通知を受信したか否かを判断する。マスタ決定部１１５ｆは、マスタ１決定通知を受信するごとに、マスタ１決定通知の送信元のＣＭにCompletion応答を送信する。そして、２ルート分のマスタ１決定通知を受信した場合、処理がステップＳ４３８に進められる。２ルート分のマスタ１決定通知を受信していなければ、ステップＳ４３７の処理が繰り返される。
【０１８８】
［ステップＳ４３８］マスタ決定部１１５ｆは、他のＣＭからマスタ２ルート通知を受信したか否かを判断する。マスタ２ルート通知を受信した場合、処理がステップＳ４３９に進められる。マスタ２ルート通知を受信していなければ、ステップＳ４３８の処理が繰り返される。
【０１８９】
［ステップＳ４３９］マスタ決定部１１５ｆは、「マスタ２」となるＣＭと「マスタ３」にする第１候補であるＣＭとが競合するか否かを判断する。例えばＣＭ１１０と同じＣＥ１００内の他のＣＭ１２０が「マスタ２」となる場合、競合が発生する。競合が発生しなければ、処理がステップＳ４４０に進められる。競合が発生する場合、処理がステップＳ４４１に進められる。
【０１９０】
［ステップＳ４４０］マスタ決定部１１５ｆは、ＣＭ１１０と同一ＣＥ１００内の他のＣＭ１２０を「マスタ３」に決定する。その後、処理がステップＳ４４２に進められる。
［ステップＳ４４１］マスタ決定部１１５ｆは、ＦＰＧＡ１１５のポート番号「０」のマネジメントポート１１５ａを介して接続されているＣＭを、「マスタ３」に決定する。
【０１９１】
［ステップＳ４４２］マスタ決定部１１５ｆは，「マスタ３」に決定したＣＭに対して、マスタ３決定通知を送信する。マスタ決定部１１５ｆは、マスタ３決定通知に対するCompletion応答を受信すると、処理を終了する。
【０１９２】
図２８は、ＦＰＧＡが実施するマスタ判定処理の手順の一例を示すフローチャートの後半である。以下、図２８に示す処理をステップ番号に沿って説明する。
［ステップＳ４５１］マスタ決定部１１５ｆは、マスタ１，２判定処理により、「マスタ２」と判定されたか否かを判断する。「マスタ２」と判定された場合、処理がステップＳ４５２に進められる。「マスタ２」と判定されていない場合、処理がステップＳ４５９に進められる。
【０１９３】
［ステップＳ４５２］マスタ決定部１１５ｆは、ＣＭ１１０をマスタレベル「マスタ２」のマスタに設定する。
［ステップＳ４５３］マスタ決定部１１５ｆは、他のＣＭから、マスタ１決定通知を受信したか否かを判断する。マスタ１決定通知は、異なるルートで２回受信する。マスタ決定部１１５ｆは、マスタ１決定通知を受信した場合、マスタ１決定通知の送信元のＣＭにCompletion応答を送信し、処理をステップＳ４５４に進める。ステップＳ４５３の処理は、２ルート分のマスタ１決定通知を受信するまで繰り返される。
【０１９４】
［ステップＳ４５４］マスタ決定部１１５ｆは、マスタ１決定通知を受信した場合、そのマスタ１決定通知の送信元のＣＭとは別のＣＭに、マスタ１決定通知を送信する。マスタ決定部１１５ｆは、２ルート分のマスタ１決定通知の送信、およびマスタ１決定通知に対するCompletion応答の受信が完了すると、処理をステップＳ４５５に進める。
【０１９５】
［ステップＳ４５５］マスタ決定部１１５ｆは、「マスタ１」となるＣＭと「マスタ４」にする第１候補であるＣＭとが競合するか否かを判断する。例えばＣＭ１１０と同じＣＥ１００内の他のＣＭ１２０が「マスタ１」となる場合、競合が発生する。競合が発生しなければ、処理がステップＳ４５６に進められる。競合が発生する場合、処理がステップＳ４５７に進められる。
【０１９６】
［ステップＳ４５６］マスタ決定部１１５ｆは、ＣＭ１１０と同一ＣＥ１００内の他のＣＭ１２０を「マスタ４」に決定する。その後、処理がステップＳ４５８に進められる。
［ステップＳ４５７］マスタ決定部１１５ｆは、ＦＰＧＡ１１５のポート番号「０」のマネジメントポート１１５ａを介して接続されているＣＭを、「マスタ４」に決定する。
【０１９７】
［ステップＳ４５８］マスタ決定部１１５ｆは，「マスタ４」に決定したＣＭに対して、マスタ４決定通知を送信する。マスタ決定部１１５ｆは、マスタ４決定通知に対するCompletion応答を受信すると、処理を終了する。
【０１９８】
［ステップＳ４５９］マスタ決定部１１５ｆは、マスタ３決定通知を受信したか否かを判断する。マスタ決定部１１５ｆは、マスタ３決定通知を受信した場合、マスタ３決定通知の送信元のＣＭにCompletion応答を送信し、処理をステップＳ４６０に進める。マスタ３決定通知を受信していなければ、処理がステップＳ４６１に進められる。
【０１９９】
［ステップＳ４６０］マスタ決定部１１５ｆは、ＣＭ１１０をマスタレベル「マスタ３」のマスタに設定し、処理を終了する。
［ステップＳ４６１］マスタ決定部１１５ｆは、マスタ４決定通知を受信したか否かを判断する。マスタ決定部１１５ｆは、マスタ４決定通知を受信した場合、マスタ４決定通知の送信元のＣＭにCompletion応答を送信し、処理をステップＳ４６２に進める。マスタ４決定通知を受信していなければ、処理がステップＳ４６３に進められる。
【０２００】
［ステップＳ４６２］マスタ決定部１１５ｆは、ＣＭ１１０をマスタレベル「マスタ４」のマスタに設定し、処理を終了する。
［ステップＳ４６３］マスタ決定部１１５ｆは、マスタ３決定通知およびマスタ４決定通知の何れも受信せずに、マスタ決定処理が開始されてから所定時間が経過したか否かを判断する。所定時間以内に、マスタ３決定通知またはマスタ４決定通知を受信できなかった場合、マスタ決定部１１５ｆは、ＣＭ１１０がマスタにならないと判断し、処理を終了する。マスタ決定部１１５ｆは、マスタ決定処理が開始されてから所定時間が経過していなければ、処理をステップＳ４５９に進め、マスタ３決定通知またはマスタ４決定通知が送られてくるのを待つ。
【０２０１】
次に、マスタ１，２判定処理の詳細について説明する。
図２９は、ＦＰＧＡが実施するマスタ１，２判定処理の手順の一例を示すフローチャートである。以下、図２９に示す処理を、ステップ番号に沿って説明する。
【０２０２】
［ステップＳ４７１］ＦＰＧＡ１１５のマスタ決定部１１５ｆは、ＣＰＤパケットを受信すると、ＣＰＤパケット内のＣＰＤの値が「０００」か否かを判断する。ＣＰＤの値が「０００」であれば、処理がステップＳ４７２に進められる。ＣＰＤの値が「０００」でなければ、処理がステップＳ４７４に進められる。
【０２０３】
［ステップＳ４７２］マスタ決定部１１５ｆは、ＣＰＤパケットを受信したマネジメントポートのＣＰＤが「１１１」か否かを判断する。マネジメントポートのＣＰＤが「１１１」であれば、処理がステップＳ４７３に進められる。マネジメントポートのＣＰＤが「１１１」でなければ、処理がステップＳ４７４に進められる。
【０２０４】
［ステップＳ４７３］マスタ決定部１１５ｆは、ＣＭ１１０がマスタレベル「マスタ２」のマスタになると判定し、処理を終了する。
［ステップＳ４７４］マスタ決定部１１５ｆは、受信したＣＰＤパケット内のＣＰＤの値が「１００」か否かを判断する。ＣＰＤの値が「１００」であれば、処理がステップＳ４７５に進められる。ＣＰＤの値が「１００」でなければ、処理が終了する。
【０２０５】
［ステップＳ４７５］マスタ決定部１１５ｆは、ＣＰＤパケットを受信したマネジメントポートのＣＰＤが「０１１」か否かを判断する。マネジメントポートのＣＰＤが「０１１」であれば、処理がステップＳ４７６に進められる。マネジメントポートのＣＰＤが「０１１」でなければ、処理が終了する。
【０２０６】
［ステップＳ４７６］マスタ決定部１１５ｆは、ＣＭ１１０がマスタレベル「マスタ１」のマスタになると判定し、処理を終了する。
以上のようにして、いずれかのレベルのマスタになるのか否かが決定される。ＣＭ１１０がマスタになった場合、ＣＭ１１０内のＦＰＧＡ１１５は、監視対象のＣＭの動作を監視する。
【０２０７】
図３０は、ＦＰＧＡが実施する監視処理の手順の一例を示すフローチャートである。以下、図３０に示す処理を、ステップ番号に沿って説明する。なお、図３０に示す処理は、定期的に実行される。
【０２０８】
［ステップＳ４８１］監視部１１５ｇは、監視先のＣＭに対して生存確認要求を送信する。
［ステップＳ４８２］監視部１１５ｇは、生存確認要求の送信先から、Completion応答を受信したか否かを判断する。Completion応答を受信した場合、処理がステップＳ４８５に進められる。所定期間（例えば２００ｍｓ）以内にCompletion応答を受信しなかった場合、処理がステップＳ４８３に進められる。
【０２０９】
［ステップＳ４８３］監視部１１５ｇは、生存確認要求を３回送信したか否かを判断する。生存確認要求の送信が３回に満たなければ、処理がステップＳ４８１に進められる。生存確認要求が既に３回送信されていれば、処理がステップＳ４８４に進められる。
【０２１０】
［ステップＳ４８４］監視部１１５ｇは、監視対象のＣＭに故障が発生したものと判断し、監視対象のＣＭのマスタレベルと、自己のＣＭ１１０のマスタレベルとに応じたフェイルオーバ処理を行う。例えば監視対象のＣＭのマスタレベルが「マスタ１」であり、ＣＭ１１０のマスタレベルが「マスタ２」であれば、監視部１１５ｇは、ＣＭ１１０のマスタレベルを「マスタ１」に変更する。
【０２１１】
［ステップＳ４８５］監視部１１５ｇは、ＣＭ１１０のプロセッサ１１１で管理されているシステム情報を取得する。例えば監視部１１５ｇは、ＲＡＭ１１２またはＳＳＤ１１３の所定の領域からシステム情報を読み出し、記憶部１１５ｄに格納する。
【０２１２】
［ステップＳ４８６］監視部１１５ｇは、ＣＭ１１０を監視対象としている他のＣＭに、システム情報を送信する。監視部１１５ｇは、送信したシステム情報に対するCompletion応答を受信すると、処理を終了する。
【０２１３】
このようにして、ＣＭへのＤＣ−ＯＮ制御、マスタ決定、マスタＣＭの監視およびフェイルオーバを、ファームウェアに基づくプロセッサの処理を介在させずに、ＦＰＧＡで実行することができる。
【０２１４】
以上説明した第２の実施の形態によれば、スケールアウト型ストレージシステム設備の削減が可能となる。具体的には、２台のＳＶＣが不要となることで、配置スペースの削減や装置価格削減が可能となる。さらに、「マスタ１」以外に「マスタ２」〜「マスタ４」を設け、ＣＭ管理機能に冗長性を持たせたことで、２台のＳＶＣを不要としながらも、信頼性の高いＣＭ管理が可能となる。
【０２１５】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０２１６】
１〜３  ストレージ装置
４ａ〜４ｆ  通信ケーブル
５  マスタ条件
１０ａ〜１０ｃ  筐体
１１〜１６  制御装置
１１ａ，１１ｂ，１２ａ，１２ｂ，１３ａ，１３ｂ，１４ａ，１４ｂ，１５ａ，１５ｂ，１６ａ，１６ｂ  通信ポート
１１ｃ〜１６ｃ  管理回路
【図１】
0006547600.tif 000002
【図２】
0006547600.tif 000003
【図３】
0006547600.tif 000004
【図４】
0006547600.tif 000005
【図５】
0006547600.tif 000006
【図６】
0006547600.tif 000007
【図７】
0006547600.tif 000008
【図８】
0006547600.tif 000009
【図９】
0006547600.tif 000010
【図１０】
0006547600.tif 000011
【図１１】
0006547600.tif 000012
【図１２】
0006547600.tif 000013
【図１３】
0006547600.tif 000014
【図１４】
0006547600.tif 000015
【図１５】
0006547600.tif 000016
【図１６】
0006547600.tif 000017
【図１７】
0006547600.tif 000018
【図１８】
0006547600.tif 000019
【図１９】
0006547600.tif 000020
【図２０】
0006547600.tif 000021
【図２１】
0006547600.tif 000022
【図２２】
0006547600.tif 000023
【図２３】
0006547600.tif 000024
【図２４】
0006547600.tif 000025
【図２５】
0006547600.tif 000026
【図２６】
0006547600.tif 000027
【図２７】
0006547600.tif 000028
【図２８】
0006547600.tif 000029
【図２９】
0006547600.tif 000030
【図３０】
0006547600.tif 000031