(57)【要約】【課題】複数の制御装置を備える情報処理システムにおいて、各制御装置が自身の役割を容易に決定できるようにする。【解決手段】制御装置の電源投入時において、複数の制御装置のそれぞれに対応する識別情報を収集する収集部１４１と、この制御装置の識別情報と、収集された複数の各制御装置の識別情報とを比較した比較結果に基づき、この制御装置の役割を決定する決定部１４２とを備える。【選択図】図２
2019049866.tif 000002
【特許請求の範囲】
【請求項１】
相互に通信可能に接続された複数の制御装置を備える情報処理システムであって、
前記複数の制御装置のうちの一の制御装置が、
当該一の制御装置の電源投入時において、前記複数の制御装置のそれぞれに対応する識別情報を収集する収集部と、
当該一の制御装置の電源投入時において、当該一の制御装置の識別情報と、収集された各制御装置の識別情報とを比較した比較結果に基づき、当該一の制御装置の役割を決定する決定部と
を備えることを特徴とする、情報処理システム。
【請求項２】
前記識別情報は数値であり、
前記決定部が、当該一の制御装置の識別情報の値と前記複数の制御装置のそれぞれに対応する識別情報の各値との大小関係に基づいて、当該一の制御装置の役割を決定する
ことを特徴とする、請求項１記載の情報処理システム。
【請求項３】
前記識別情報が、前記制御装置の製造時に個々の制御装置に設定される製造番号である
ことを特徴とする、請求項１または２記載の情報処理システム。
【請求項４】
決定された前記役割に応じて、当該一の制御装置の機能設定を行なう機能設定部
を備えることを特徴とする、請求項１〜３のいずれか１項に記載の情報処理システム。
【請求項５】
前記決定部が、決定した当該一の制御装置の役割を示す役割情報を記憶装置に記憶し、
前記複数の制御装置のうち、前記役割が主管理である制御装置に異常が検出された場合に、
前記決定部が、前記役割情報を参照して、当該一の制御装置の役割が前記主管理の代理として機能すべき副管理である場合に、当該一の制御装置の役割を前記主管理に変更し、
前記機能設定部が、当該一の制御装置が主管理として機能するための機能設定を行なう
ことを特徴とする、請求項４記載の情報処理システム。
【請求項６】
当該情報処理システムに新たな制御装置が搭載された場合において、
当該新たな制御装置が、
当該新たな制御装置の識別情報を前記複数の制御装置のそれぞれに送信し、
前記複数の制御装置のそれぞれに対応する識別情報を収集して記憶装置に記憶し、
主管理である制御装置に異常が検出された場合に前記主管理の代理として機能すべき副管理として機能するための機能設定を行なう
ことを特徴とする、請求項１〜５のいずれか１項に記載の情報処理システム。
【請求項７】
複数の他の制御装置と通信可能に接続される制御装置であって、
当該制御装置の電源投入時において、前記複数の他の制御装置のそれぞれに対応する識別情報を収集する収集部と、
当該制御装置の電源投入時において、当該制御装置の識別情報と、収集された前記複数の他の制御装置の各識別情報とを比較した比較結果に基づき、当該制御装置の役割を決定する決定部と
を備えることを特徴とする、制御装置。
【請求項８】
複数の他の制御装置と通信可能に接続される制御装置に備えられるプログラム可能な集積回路装置に、
当該制御装置の電源投入時において、
前記複数の他の制御装置のそれぞれに対応する識別情報を収集し、
当該制御装置の識別情報と、収集された前記複数の他の制御装置の各識別情報とを比較した比較結果に基づき、当該制御装置の役割を決定する
処理を実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム，制御装置および制御プログラムに関する。
【背景技術】
【０００２】
スケールアウト型ストレージシステムでは、性能や容量を向上させるために、例えば、２つのＣＭ（Controller Module）を搭載するＣＥ（Control Enclosure）を増設単位としてスケールアウトを実現している。
【０００３】
図６は従来のスケールアウト型ストレージシステム５００の構成を例示する図である。
【０００４】
この図６に示すストレージシステム５００は、ＦＥ（Front End Controller）５１０および２つ以上のＣＥ５０１を備える。
【０００５】
ＦＥ５１０は、複数のＣＭ５０２を接続するための接続装置であり、図６に示す例においては、その筐体（図示省略）内に２つのＳＶＣ（Service Controller）５１１を搭載することで冗長構成を実現している。
【０００６】
ＳＶＣ５１１は、ストレージシステム５００における各種監視を行なう監視装置である。例えば、ＳＶＣ５１１は、各ＣＭ５０２と通信してエラーステート情報を収集しエラーログを蓄積する。
【０００７】
ＳＶＣ５１１は、通信制御機能を実現するＦＰＧＡ（Flexible Programmable Gate Array）５１２を備える。ＦＰＧＡ５１２は、通信ケーブル（マネジメントパス）を介して、ＣＭ５０２のＦＰＧＡ５０３との間で通信（ＦＰＧＡ間通信）を行なう。
【０００８】
各ＣＭ５０２は、ＳＶＣ５１１を介して相互に通信を行なう。また、ＣＥ５０１を跨いだマネジメント機能に関する通信は、すべてＳＶＣ５１１を経由して行なわれる。
【０００９】
ＣＥ５０１は、その筐体（図示省略）内に２つのＣＭ５０２を搭載している。
【００１０】
ＣＭ５０２は、ストレージシステム５００における種々の制御を行なうものであり、図示しないホスト装置からのストレージアクセス要求に従って、図示しないＨＤＤ（Hard Disk Drive）等の記憶装置へのアクセス制御等、各種制御を行なう。各ＣＭ５０２は互いに同様の構成を有している。
【００１１】
ＣＭ５０２は、通信制御機能を実現するＦＰＧＡ５０３を備える。ＦＰＧＡ５０３は、通信ケーブルを介して、後述するＳＶＣ５１１のＦＰＧＡ５１２との間でＦＰＧＡ間通信を行なう。
【００１２】
ストレージシステム５００は、複数のＣＭ５０２を備える冗長構成とすることにより、マスターとしてのＣＭ５０２（例えばＣＭ＃０）が異常状態となった場合においてもスレーブとしてのＣＭ５０２（例えばＣＭ＃１）により継続して動作することができる。
【００１３】
複数のＣＭ５０２のうち、マスターとしてのＣＭ（以下、マスターＣＭという場合がある）５０２は、状態監視・電源制御・ログ機能などのマネジメント機能を実現する。
【００１４】
このマネジメント機能には、各ＣＭ５０２を制御する機能として、例えば、各ＣＭ５０２の電源のオン／オフやリセットを行なう制御や、ＬＥＤ（Light Emitting Diode）を消灯／点灯させる制御等が含まれる。また、マネジメント機能には、各ＣＭ５０２のログを採取する機能や、ＣＭ−ＣＭ間通信を行なうための、ＣＭ−ＳＶＣ間を経由する通信のルーティング機能およびアービトレーション機能も含まれる。なお、アービトレーション機能は、バスを介して通信を行なう際に、どの機器に対して使用の優先権を与えるべきかを調停する機能である。
【００１５】
そして、ストレージシステム５００をスケールアウトした場合には、これらのマネジメント機能を、複数のＣＭ５０２にて連動して動作させる必要がある。
【００１６】
図６に例示するような、ＳＶＣ５１１を備えるストレージシステム５００においては、マスターＣＭ５０２が異常状態となった場合には、ＳＶＣ５１１が、複数のスレーブＣＭ５０２の中から一のＣＭ５０２を選択し、新たなマスターＣＭ５０２として機能させる制御を行なう。
【００１７】
また、ストレージシステムとしては、少ない数のＣＭを備える小規模構成のストレージシステムも用いられている。
【００１８】
このような小規模構成のストレージシステムにおいては、ＦＥ５１０（ＳＶＣ５１１）を備えずに、複数のＣＭを通信回線を介して相互に接続することで構成される。
【００１９】
このような、ＣＭの数が少ない小規模構成のストレージシステムにおいては、図６のストレージシステム５００ではＳＶＣ５１１が行なっているマネジメント機能を、マスターとして機能するＣＭにおいて実行する。すなわち、複数のＣＭのうち、マスターＣＭと認識したＣＭでマネジメント機能を動作させることで、筐体間マネジメント機能が実現される。
【００２０】
なお、上述の如くマネジメント機能には各ＣＭを制御する機能も含まれる。従って、ストレージシステムの電源投入時に、各ＣＭにおいて、ＦＰＧＡのみが起動しＣＭとしての起動が完了する前の時点で、マスター／スレーブのいずれとして起動するかを決める必要がある。
【００２１】
また、マスターＣＭに異常が検出された際には、スレーブのＣＭにマスターＣＭとしての機能が引き継がれる。すなわち、残ったスレーブのＣＭの中からマスターとなるＣＭが選択され、新たなマスターＣＭとして動作する。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特開２０１５−５５８７８号公報
【特許文献２】特開２０１１−７６５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【００２３】
しかしながら、ＳＶＣを備えないスケールアウト型ストレージにおいては、各ＣＭはマスターおよびスレーブのいずれにもなりうるものであるので、各ＣＭをあらかじめマスターとスレーブとに固定して定義することは、汎用性に欠けることになり望ましくない。
【００２４】
１つの側面では、本発明は、複数の制御装置を備える情報処理システムにおいて、各制御装置が自身の役割を容易に決定できるようにすることを目的とする。
【課題を解決するための手段】
【００２５】
このため、この情報処理システムは、相互に通信可能に接続された複数の制御装置を備える情報処理システムであって、前記複数の制御装置のうちの一の制御装置が、当該一の制御装置の電源投入時において、前記複数の制御装置のそれぞれに対応する識別情報を収集する収集部と、当該一の制御装置の電源投入時において、当該一の制御装置の識別情報と、収集された各制御装置の識別情報とを比較した比較結果に基づき、当該一の制御装置の役割を決定する決定部とを備える。
【発明の効果】
【００２６】
一実施形態によれば、複数の制御装置を備える情報処理システムにおいて、各制御装置が自身の役割を容易に決定できる
【図面の簡単な説明】
【００２７】
【図１】実施形態の一例としてのストレージシステムのハードウェア構成の一例を示すブロック図である。
【図２】実施形態の一例としてのストレージシステムのストレージ制御装置におけるＦＰＧＡの機能構成を示す図である。
【図３】実施形態の一例としてのストレージシステムにおけるＦＰＧＡの処理を説明するためのフローチャートである。
【図４】実施形態の一例としてのストレージシステムにおけるマスターＣＭの故障時の処理を説明するためのフローチャートである。
【図５】実施形態の一例としてのストレージシステムにおけるＣＭの保守交換時のＦＰＧＡの処理を説明するためのフローチャートである。
【図６】従来のスケールアウト型ストレージシステムの構成を例示する図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照して本情報処理システム，制御装置および制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２９】
（Ａ）構成
まず、図１を参照しながら、実施形態の一例としてのストレージシステム１のハードウェア構成について説明する。なお、図１は、本実施形態のストレージ制御装置１０−１〜１０−４を含むストレージシステム１のハードウェア構成の一例を示すブロック図である。
【００３０】
本ストレージシステム１は、ＤＥ（Drive Enclosure）２０−１，２０−２に格納された記憶装置２１を仮想化して、仮想ストレージ環境を形成する。そして、ストレージシステム１は、仮想ボリュームを、上位装置である図示しないホスト装置（サーバ）に提供する。
【００３１】
本ストレージシステム１は、１以上のホスト装置に対して通信可能に接続されている。ホスト装置とストレージ装置１とは、後述するＣＡ（Communication Adapter）１５により接続されている。
【００３２】
ホスト装置は、例えば、サーバ機能を備えた情報処理装置であり、本ストレージシステム１との間において、ＮＡＳ（Network Attached Storage）やＳＡＮ（Storage Area Network）のコマンドを送受信する。ホスト装置は、例えば、ストレージシステム１に対してＮＡＳにおけるリード／ライト等のストレージアクセスコマンドを送信することにより、ストレージシステム１が提供するボリュームにデータの書込または読出を行なう。
【００３３】
そして、本ストレージシステム１は、ホスト装置からボリュームに対して行なわれる入出力要求（例えば、書込要求や読出要求）に応じて、このボリュームに対応する記憶装置２１に対して、データの読出（リード）や書込（ライト）等の処理を行なう。なお、以下では、ホスト装置からの入出力要求のことをＩ／Ｏ（Input／Output）要求という場合がある。
【００３４】
本ストレージシステム１は、図１に示すように、複数（本実施形態では２つ）のＣＥ３０−１，３０−２及び１つ以上（図１に示す例では２つ）のＤＥ２０−１，２０−２を備える。ＤＥ２０−１，２０−２は同様の構成を有する。なお、以下、ＤＥを示す符号としては、複数のＤＥのうち１つを特定する必要があるときには符号２０−１，２０−２を用いるが、任意のＤＥを指すときには符号２０を用いる。
【００３５】
ＤＥ２０は、１つ以上（図１に示す例では４つ以上）の記憶装置（物理ディスク）２１を搭載可能であり、これらの記憶装置２１の記憶領域（実ボリューム，実ストレージ）を、本ストレージシステム１に対して提供する。
【００３６】
例えば、ＤＥ２０は、複数段のスロット（図示省略）を備え、これらのスロットに、記憶装置２１を装着することにより、実ボリューム容量を随時変更することができる。また、複数の記憶装置２１を用いてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を構成することができる。
【００３７】
記憶装置２１は、後述するＲＡＭ（Random Access Memory）１２と比較すると容量の大きい、ＨＤＤ，ＳＳＤ（Solid State Drive）等の記憶装置（ストレージ）であって、種々のデータを格納するものである。
【００３８】
ＤＥ２０−１は、ＣＭ１０−１，１０−２のＤＡ（Device Adapter）１６と接続されており、ＤＥ２０−２は、ＣＭ１０−３，１０−４のＤＡ１６と接続されている。そして、ＤＥ２０−１には、ＣＭ１０−１，１０−２のいずれからもアクセスして、データの書込や読出を行なうことができる。同様に、ＤＥ２０−２には、ＣＭ１０−３，１０−４のいずれからもアクセスして、データの書込や読出を行なうことができる。
【００３９】
すなわち、ＤＥ２０の各記憶装置２１に対して、複数のＣＭ１０のそれぞれを接続することにより、記憶装置２１へのアクセス経路が冗長化されている。
【００４０】
ＣＥ３０−１は、１つ以上（図１に示す例では２つ）のＣＭ１０−１，１０−２を備え、ＣＥ３０−２は、１つ以上（図１に示す例では２つ）のＣＭ１０−３，１０−４を備える。また、ＣＥ３０−１をＣＥ＃０と、ＣＥ３０−２をＣＥ＃１と、それぞれ表す場合がある。そして、以下、ＣＥを示す符号としては、複数のＣＥのうち１つを特定する必要があるときには符号３０−１，３０−２を用いるが、任意のＣＥを指すときには符号３０を用いる。
【００４１】
ＣＭ１０−１〜１０−４は、ストレージシステム１内の動作を制御する制御装置（コントローラ，ストレージ制御装置）であり、ホスト装置から送信されるＩ／Ｏ要求に従って、ＤＥ２０の記憶装置２１へのデータアクセス制御等、各種制御を行なう。又、ＣＭ１０−１〜１０−４は互いに同様の構成を有している。以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する場合には符号１０−１〜１０−４を用い、任意のＣＭを指すときには符号１０を用いる。また、ＣＭ１０−１をＣＭ＃０と、ＣＭ１０−２をＣＭ＃１と、ＣＭ１０−３をＣＭ＃２と、ＣＭ１０−４をＣＭ＃３と、それぞれ表す場合がある。これらの符号＃０〜＃３は、本ストレージシステム１における位置を表す位置情報であり、例えば、システム構築時に、位置管理のために接続順に設定付与される。
【００４２】
そして、本ストレージシステム１に備えられたこれらの複数のＣＭ１０のうち、一つのＣＭ１０が主管理であるマスター（プライマリ）として各種制御を行なう。また、残りの複数のＣＭ１０のうち、一つのＣＭ１０が主管理の代理として機能する副管理であるセカンドのＣＭ１０として機能する。複数のＣＭ１０のうち、マスターのＣＭ１０でなく、且つ、セカンドのＣＭ１０でもないＣＭ１０がスレーブのＣＭ１０として機能する。
【００４３】
以下、マスターのＣＭ１０をマスターＣＭ１０という場合があり、セカンドのＣＭ１０をセカンドＣＭ１０という場合がある。さらに、スレーブのＣＭ１０をスレーブＣＭ１０という場合がある。
【００４４】
マスターＣＭ１０の故障時には、セカンドＣＭ１０が新たなマスターＣＭとなり、マスターＣＭ１０の動作を引き継ぐ。
【００４５】
ＣＥ３０−１において、ＣＭ１０−１，１０−２は二重化されており、ＣＥ３０−２において、ＣＭ１０−３，１０−４は二重化されている。
【００４６】
ＣＭ１０−１〜１０−４は、それぞれＣＡ１５を介してそれぞれホスト装置に接続される。そして、ＣＭ１０−１〜１０−４は、ホスト装置から送信されるリード／ライト等のＩ／Ｏ要求を受信し、ＤＡ１６等を介して記憶装置２１の制御を行なう。
【００４７】
また、同一ＣＥ３０内に備えられたＣＭ１０どうしは、インタフェース１８および通信路１８１を介して相互に通信可能に接続される。例えば、ＣＥ３０−１内において、ＣＥ１０−１とＣＥ１０−２とは、インタフェース１８および通信路１８１を介して通信可能に接続されている。また、ＣＥ３０−２内において、ＣＥ１０−３とＣＥ１０−４とは、インタフェース１８および通信路１８１を介して通信可能に接続されている。通信路１８１は、例えばＰＣＩｅ（Peripheral Component Interconnect Express）等の規格に沿った通信バスであり、ボード間転送により通信が行なわれる。
【００４８】
また、異なるＣＥ３０に備えられたＣＭ１０どうしは、インタフェース１７および通信ケーブル１７１を介して相互に通信可能に接続される。例えば、ＣＥ３０−１のＣＥ１０−１およびＣＥ１０−２は、インタフェース１７および通信路１７１を介してＣＥ３０−２のＣＥ１０−３およびＣＥ１０−４とそれぞれ相互に通信可能に接続されている。通信路１７１は、例えばＬＡＮ（Local Area Network）ケーブルであり、ＴＣＰ／ＩＰ等の規格に沿った通信が行なわれる。
【００４９】
これらの通信路１８１，１７１が、それぞれマネジメントパスとして機能する。なお、通信路１８１の規格はＰＣＩｅに限定されるものではなく、また、通信路１７１の規格はＴＣＰ／ＩＰに限定されるものではなく、それぞれ他の通信規格であってもよい。
【００５０】
ＣＭ１０は、図１に示すように、ＣＡ１５，ＤＡ１６を備えるとともに、ＣＰＵ１１，ＲＡＭ１２，不揮発性メモリ１３およびＦＰＧＡ１４を備える。ＣＡ１５，ＤＡ１６，ＣＰＵ１１，ＲＡＭ１２，不揮発性メモリ１３およびＦＰＧＡ１４は、例えばＰＣＩｅバス１９を介して相互に通信可能に接続される。
【００５１】
ＣＡ１５は、ホスト装置や図示しない管理端末等から送信されたデータを受信したり、ＣＭ１０から出力するデータをホスト装置や管理端末等に送信したりするアダプタである。すなわち、ＣＡ１５は、ホスト装置等の外部装置との間でのデータの入出力を制御する。
【００５２】
ＣＡ１５は、ＮＡＳを介してホスト装置等と通信可能に接続するネットワークアダプタであってもよく、ＳＡＮを介してホスト装置等と通信可能に接続するネットワークアダプタであってもよい。なお、図１に示す例においては、各ＣＭ１０に一つのＣＡ１５が備えられているが、これに限定されるものではなく、複数のＣＡ１５を備えてもよい。
【００５３】
ＤＡ１６は、ＤＥ２０や記憶装置２１等と通信可能に接続するためのインタフェースである。ＤＡ１６は、ＤＥ２０の記憶装置２１が接続され、各ＣＭ１０は、ホスト装置から受信したＩ／Ｏ要求に基づき、記憶装置２１に対するアクセス制御を行なう。
【００５４】
各ＣＭ１００は、ＤＡ１６を介して、記憶装置２１に対するデータのライトやリードを行なう。また、図１に示す例においては、便宜上、各ＣＭ１０のそれぞれに一つのＤＡ１６が図示されているが、これに限定されるものではない。各ＣＭ１０に複数のＤＡ１６を備えてもよく、また、ＤＥ２０への経路を冗長化してもよい。
【００５５】
また、図１に示す例においては、ＣＥ３０−１に備えられたＣＭ１０−１，１０−２がそれぞれ、ＤＡ１６を介して同じＤＥ２０に接続されている。これにより、ＣＭ１０−１，１０−２のいずれからも同じＤＥ２０の記憶装置２１にデータの書込や読出を行なうことができる。
【００５６】
同様に、ＣＥ３０−２に備えられたＣＭ１０−３，１０−４が、それぞれ同じＤＥ２０に接続されている。これにより、ＣＭ１０−３，１０−４のいずれからも同じＤＥ２０の記憶装置２１にデータの書込や読出を行なうことができる。
【００５７】
不揮発性メモリ１３は、ＣＰＵ１１が実行するプログラムや種々のデータ等を格納する記憶装置である。
【００５８】
ＲＡＭ１２は、種々のデータやプログラムを一時的に格納する記憶装置であり、制御プログラムを格納するほか、キャッシュ領域等を有する。制御プログラムは、例えば、ＣＭ１０としてのストレージ制御機能を実現すべくＣＰＵ１１が実行するプログラムであり、ＲＡＭ１２あるいは不揮発性メモリ１３に保存される。
【００５９】
キャッシュ領域は、ホスト装置から受信したデータや、ホスト装置に対して送信するデータを一時的に格納する。なお、ＲＡＭ１２には、ＣＭ１０を含むストレージシステム１で発生する各種ログ情報を一時的に記憶保存してもよい。
【００６０】
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、例えばマルチコアプロセッサ（マルチコアＣＰＵ）である。ＣＰＵ１１は、ＲＡＭ１２，不揮発性メモリ１３等に格納されたＯＳ（Operating System）やプログラムを実行することにより、ＣＭ１０としての種々の機能を実現する。
【００６１】
例えば、ＣＰＵ１１が、マスターＣＭ用のプログラムモジュールを実行することで当該ＣＭ１０がマスターＣＭとして機能し、状態監視・電源制御・ログ機能などのマネジメント機能を実現する。
【００６２】
このマネジメント機能には、各ＣＭ１０を制御する機能として、各ＣＭ１０の電源のオン／オフやリセットを行なう制御や、ＬＥＤを消灯／点灯させる制御等が含まれる。また、マネジメント機能には、各ＣＭ１０のログを採取する機能等が含まれる。
【００６３】
また、ＣＭ１１が、セカンドＣＭ用プログラムモジュールを実行することで当該ＣＭ１０がセカンドＣＭ１０として機能する。すなわち、マスターＣＭ１０に異常が検出された場合に、自ＣＭ１０が新たなマスターＣＭ１０となるための切替制御等を行なう。
【００６４】
また、ＣＭ１１が、スレーブＣＭ用プログラムモジュールを実行することで当該ＣＭ１０がスレーブＣＭ１０として機能する。例えば、マスターＣＭ１０からの指示に従って、マスターＣＭ１０にログ情報の送信等を行なう。
【００６５】
通信インタフェース１８は、同一ＣＥ３０内に備えられた他のＣＭ１０と、通信パス１８１を介して通信するためのインタフェースである。
【００６６】
通信インタフェース１７は、他のＣＥ３０内に備えられた他のＣＭ１０と、通信パス１７１を介して通信するためのインタフェースである。
【００６７】
これらの通信パス１７１，１８１を介して行なわれるＣＭ１０間の通信は、ＦＰＧＡ１４によって制御される。
【００６８】
ＦＰＧＡ１４は、例えば、ＣＭ１０間の通信を監視制御する。
【００６９】
ＦＰＧＡ１４は、プログラム可能な論理コンポーネントを備え、この論理コンポーネントにより、各種機能を実現する。
【００７０】
ＦＰＧＡ１４には、ＲＯＭ１５０が接続されており、このＲＯＭ１５０には、そのＲＯＭ１５０が備えられたＣＭ１０を一意に識別する識別情報が格納されている。以下、ＦＰＧＡ１４に接続されたＲＯＭ１５０を、ＦＰＧＡ１４の配下のＲＯＭ１５０という場合がある。
【００７１】
本実施形態においては、ＣＭ１０の識別情報として、ＣＭ１０の製造時に設定されたシリアルナンバー（Ｓ／Ｎ）が用いられる。シリアルナンバーは、ＣＭ１０毎にユニークに設定される識別情報であり、例えば、ＣＭ１０の製造時に工場等において設定され、ＲＯＭ１５０に記録される。
【００７２】
このシリアルナンバーは、後述するシリアルナンバー交換部１４１（図２参照）によって読み出される。
【００７３】
また、ＦＰＧＡ１４はメモリ１４５を備える。このメモリ１４５には、本ストレージシステム１に備えられた全てのＣＭ１０のシリアルナンバーが格納される。
【００７４】
例えば、ＦＰＧＡ１４の最初の起動時に、後述するシリアルナンバー交換部１４１が、自身起動するＦＰＧＡ１４の配下のＲＯＭ１５０から自ＣＭ１０のシリアルナンバーを読み出し、メモリ１４５の所定の記憶領域に格納する。
【００７５】
また、メモリ１４５には、後述する自ＣＭ役割決定部１４２（図２参照）によって作成される役割情報が格納される。なお、役割情報の詳細については後述する。
【００７６】
図２は本実施形態の一例としてのストレージシステム１のストレージ制御装置（制御装置）１０におけるＦＰＧＡ１４の機能構成を示す図である。
【００７７】
ＦＰＧＡ１４は、ＦＰＧＡ間通信の監視制御としての機能に加えて、図２に示すような、シリアルナンバー交換部１４１，自ＣＭ役割決定部１４２およびＣＭ動作制御部１４３としての機能を備える。
【００７８】
ＦＰＧＡ１４には、当該ＦＰＧＡ１４を搭載したＣＭ１０（ＣＥ３０）を電源ケーブルを介して図示しない電力供給源に接続した時点で電力供給が行なわれる。すなわち、ＦＰＧＡ１４には、ＣＭ１０の電源投入ボタンが押下される前の状態においても電力供給（待機電力供給）が行なわれ、上記シリアルナンバー交換部１４１，自ＣＭ役割決定部１４２およびＣＭ動作制御部１４３としての機能を実施することができる。
【００７９】
このように、ＣＭ１０への電源投入前に、シリアルナンバー交換部１４１，自ＣＭ役割決定部１４２およびＣＭ動作制御部１４３としての機能を実施することで、本ストレージシステム１（ＣＭ１０）の起動に要する時間を短縮することができる。
【００８０】
なお、シリアルナンバー交換部１４１，自ＣＭ役割決定部１４２およびＣＭ動作制御部１４３としての機能は、例えば、当該ＣＭ１０の電源投入時や再起動時に実行されてもよい。
【００８１】
シリアルナンバー交換部１４１は、本ストレージシステム１に備えられる、自ＣＭ１０以外の他のＣＭ１０との間でシリアルナンバーの交換を行なう。
【００８２】
すなわち、シリアルナンバー交換部１４１は、他の全てのＣＭ１０に対して、自ＣＭ１０のシリアルナンバーをＦＰＧＡ間通信により通知する。また、シリアルナンバー交換部１４１は、他のＣＭ１０からそれぞれ送信されるシリアルナンバーを受信し、メモリ１４５の所定の記憶領域にシリアルナンバーリストとして格納する。
【００８３】
シリアルナンバー交換部１４１は、ＲＯＭ１５０から読み出した自ＣＭ１０のシリアルナンバーも、メモリ１４５のシリアルナンバーリストに格納する。これにより、メモリ１４５（シリアルナンバーリスト）には、本ストレージシステム１に備えられた全てのＣＭ１０のシリアルナンバーが登録される。
【００８４】
自ＣＭ役割決定部１４２は、自ＣＭ１０の役割を決定する。すなわち、自ＣＭ役割決定部１４２は、自ＣＭ１０がマスターＣＭ１０，セカンドＣＭ１０およびスレーブＣＭ１０のいずれであるかを決定する。
【００８５】
自ＣＭ役割決定部１４２は、メモリ１４５に格納された、本ストレージシステム１の全ＣＭ１０のシリアルナンバーを用いて、自ＣＭ１０の役割を決定する。
【００８６】
自ＣＭ役割決定部１４２は、メモリ１４５に格納された、本ストレージシステム１の全ＣＭ１０のシリアルナンバーを数値化し、自ＣＭ１０のシリアルナンバーの値の全ＣＭ１０のシリアルナンバー中における順位に基づいて、自ＣＭ１０の役割を決定する。
【００８７】
そこで、自ＣＭ役割決定部１４２は、メモリ１４５のシリアルナンバーリストを、シリアルナンバーを値の大きさに応じて並び替えたソート済みシリアルナンバーリストを作成する。
【００８８】
従って、ソート済みシリアルナンバーリストは、本ストレージシステム１の全てのＣＭ１０のシリアルナンバーを値の大きさに応じて並び替えたものである。
【００８９】
例えば、自ＣＭ役割決定部１４２は、全てのシリアルナンバー（シリアルナンバーリスト）を値の小さいものから大きいものにかけて順に並び替えることでソート済みシリアルナンバーリストを作成する。
【００９０】
自ＣＭ役割決定部１４２は、ソート済みシリアルナンバーリストを参照して、自ＣＭ１０のシリアルナンバーの値が全ＣＭ１０のシリアルナンバーの中で最も小さい場合には、自ＣＭ１０がマスターＣＭ１０であると決定する。
【００９１】
また、自ＣＭ役割決定部１４２は、自ＣＭ１０のシリアルナンバーの値が、全ＣＭ１０のシリアルナンバーの中で２番目に小さい場合に、自ＣＭ１０がセカンドＣＭ１０であると決定する。
【００９２】
さらに、自ＣＭ役割決定部１４２は、自ＣＭ１０がマスターＣＭ１０でもセカンドＣＭ１０でもない場合に、自ＣＭ１０がスレーブＣＭ１０であると決定する。すなわち、自ＣＭ１０のシリアルナンバーの値が、全ＣＭ１０のシリアルナンバーの中で３番目以上である場合に、自ＣＭ１０がスレーブＣＭ１０であると決定する。
【００９３】
このように、自ＣＭ役割決定部１４２は、自ＣＭ２０のシリアルナンバーと、他ＣＭ１０のシリアルナンバーとの対応関係（大小関係）に基づいて、自ＣＭ２０の役割を決定する。
【００９４】
自ＣＭ役割決定部１４２は、決定した自ＣＭ１０の役割を表す情報である役割情報をメモリ１４５の所定の記憶領域に格納する。例えば、自ＣＭ役割決定部１４２は、自ＣＭ１０がマスターＣＭ１０であると決定した場合には、“１”を、自ＣＭ１０がセカンドＣＭ１０であると認定した場合には“２”を、メモリ１４５の所定の記憶領域に役割情報として格納する。また、自ＣＭ役割決定部１４２は、自ＣＭ１０がスレーブＣＭ１０であると決定した場合には、“０”を、メモリ１４５の所定の記憶領域に役割情報として格納する。
【００９５】
なお、メモリ１４５に格納する役割情報は、これらに限定されるものではなく、種々変形して実施することができる。例えば、役割情報として他の値をメモリ１４５に格納してもよい。また、自ＣＭ役割決定部１４２は、役割情報として、メモリ１４５の所定の記憶領域に、マスターＣＭ１０，セカンドＣＭ１０およびスレーブＣＭ１０のいずれかに対応するフラグを設定してもよく、適宜変更して実施することができる。
【００９６】
ＣＭ動作制御部１４３は、自ＣＭ役割決定部１４２によってメモリ１４５に記憶された役割情報に従って、自ＣＭ１０が、マスターＣＭ１０，セカンドＣＭ１０およびスレーブＣＭ１０のいずれかの役割で動作するように制御を行なう。
【００９７】
例えば、ＣＭ動作制御部１４３は、自ＣＭ役割決定部１４２によってメモリ１４５に格納された役割情報に従って、ＣＰＵ１１に実行させるプログラムモジュールを切り替える。例えば、自ＣＭ役割決定部１４２が、自ＣＭ１０がマスターＣＭ１０であると決定した場合には、ＣＰＵ１１が不揮発性メモリ１３等からマスターＣＭ用プログラムモジュールを読み出して実行するよう制御を行なう。また、自ＣＭ役割決定部１４２が、自ＣＭ１０がセカンドＣＭ１０であると決定した場合には、ＣＰＵ１１が不揮発性メモリ１３等からセカンドＣＭ用プログラムモジュールを読み出して実行するよう制御を行なう。さらに、自ＣＭ役割決定部１４２が、自ＣＭ１０がスレーブＣＭ１０であると決定した場合には、ＣＰＵ１１が不揮発性メモリ１３等からスレーブＣＭ用プログラムモジュールを読み出して実行するよう制御を行なう。
【００９８】
すなわち、ＣＭ動作制御部１４３は、ＣＭ１０の起動時に、メモリ１４５の役割情報に対応するプログラムモジュールをＣＰＵ１１に実行させる
【００９９】
（Ｂ）動作
上述の如く構成された本実施形態の一例としてのストレージシステム１におけるＦＰＧＡ１４の処理を、図３に示すフローチャート（ステップＡ１〜Ａ１０）に従って説明する。この図３に示す処理は、例えば、ストレージシステム１の待機電力供給開始時に行なわれるものであるので、本ストレージシステム１に備えられた各ＣＭ１０のそれぞれにおいて、同様のタイミングで実行される。
【０１００】
ステップＡ１において、シリアルナンバー交換部１４１は、自ＣＭ１０のＦＰＧＡ１４の配下のＲＯＭ１５０から、自ＣＭ１０のシリアルナンバーを取得する。
【０１０１】
ステップＡ２において、シリアルナンバー交換部１４１は、ストレージシステム１における他の全てのＣＭ１０に対して、ステップＡ１で取得した自ＣＭ１０のシリアルナンバーを送信する。
【０１０２】
ステップＡ３において、シリアルナンバー交換部１４１は、他ＣＭ１０から送信されるシリアルナンバーの受信を開始する。受信した、シリアルナンバーは、メモリ１４５にシリアルナンバーリストとして格納される。
【０１０３】
なお、ステップＡ１〜Ａ３における、他ＣＭ１０との間のシリアルナンバーの送受信には、通信ケーブル１７１および通信路１８１を介したＦＰＧＡ間通信が用いられる。
【０１０４】
ステップＡ４において、シリアルナンバー交換部１４１は、他の全てのＣＭ１０からシリアルナンバーを受信したかを確認する。他の全てのＣＭ１０からシリアルナンバーを受信していない場合には（ステップＡ４のＮＯルート参照）、ステップＡ４を繰り返し行なう。
【０１０５】
他の全てのＣＭ１０からシリアルナンバーを受信した場合には（ステップＡ４のＹＥＳルート参照）、ステップＡ５に移行する。
【０１０６】
ステップＡ５においては、自ＣＭ役割決定部１４２が、本ストレージシステム１の全てのＣＭ１０のシリアルナンバーを値の大きさに応じて並び替えて、ソート済みシリアルナンバーリストを作成する。例えば、自ＣＭ役割決定部１４２は、全てのシリアルナンバーを値の小さいものから大きいものにかけて順に並び替える。
【０１０７】
ステップＡ６において、自ＣＭ役割決定部１４２は、自ＣＭ１０のシリアルナンバーの値が最小であるかを確認する。すなわち、自ＣＭ１０のシリアルナンバーが最小のシリアルナンバーと等しいかを確認する。
【０１０８】
確認の結果、自ＣＭ１０のシリアルナンバーの値が最小である場合には（ステップＡ６のＹＥＳルート参照）、ステップＡ７において、自ＣＭ役割決定部１４２は、自ＣＭ１０がマスターＣＭ１０であると決定する。
【０１０９】
ＣＭ動作制御部１４３は、自ＣＭ１０をマスターＣＭ１０として動作させる制御を行なう。例えば、ＣＭ動作制御部１４３は、ＣＭ１０に電源投入が行なわれると、自ＣＭ１０のＣＰＵ１１にマスターＣＭ用プログラムモジュールを実行させることで、マスターＣＭ１０としての動作を開始させる。その後、処理を終了する。
【０１１０】
ステップＡ６における確認の結果、自ＣＭ１０のシリアルナンバーの値が最小でない場合には（ステップＡ６のＮＯルート参照）、ステップＡ８に移行する。
【０１１１】
ステップＡ８において、自ＣＭ役割決定部１４２は、自ＣＭ１０のシリアルナンバーの値が２番目に小さいものであるかを確認する。すなわち、自ＣＭ１０のシリアルナンバーが２番目に小さいシリアルナンバーと等しいかを確認する。
【０１１２】
確認の結果、自ＣＭ１０のシリアルナンバーの値が２番目に小さい場合には（ステップＡ８のＹＥＳルート参照）、ステップＡ９において、自ＣＭ役割決定部１４２は、自ＣＭ１０がセカンドＣＭ１０であると決定する。
【０１１３】
ＣＭ動作制御部１４３は、自ＣＭ１０をセカンドＣＭ１０として動作させる制御を行なう。例えば、ＣＭ動作制御部１４３は、ＣＭ１０に電源投入が行なわれると、自ＣＭ１０のＣＰＵ１１にセカンドＣＭ用プログラムモジュールを実行させることで、セカンドＣＭ１０としての動作を開始させる。その後、処理を終了する。
【０１１４】
ステップＡ８における確認の結果、自ＣＭ１０のシリアルナンバーの値が２番目に小さいものでない場合には（ステップＡ８のＮＯルート参照）、ステップＡ１０に移行する。
【０１１５】
ステップＡ１０において、自ＣＭ役割決定部１４２は、自ＣＭ１０がスレーブＣＭ１０であると決定する。
【０１１６】
ＣＭ動作制御部１４３は、自ＣＭ１０をスレーブＣＭ１０として動作させる制御を行なう。例えば、ＣＭ動作制御部１４３は、ＣＭ１０に電源投入が行なわれると、自ＣＭ１０のＣＰＵ１１にスレーブＣＭ用プログラムモジュールを実行させることで、スレーブＣＭ１０としての動作を開始させる。その後、処理を終了する。
【０１１７】
次に、実施形態の一例としてのストレージシステム１におけるマスターＣＭ１０の故障時の処理を、図４に示すフローチャート（ステップＢ１〜Ｂ６）に従って説明する。
【０１１８】
この図４に示す処理は、マスターＣＭ１０における故障検出が通知されたＣＭ１０において行なわれるものであるので、本ストレージシステム１に備えられた各ＣＭ１０のそれぞれにおいて、同様のタイミングで実行される。
【０１１９】
ステップＢ１において、マスターＣＭ１０に何等かの障害が発生し故障が検出される。各ＣＭ１０に対して、マスターＣＭ１０において故障が検出された旨の通知が、例えば、ＦＰＧＡ間通信により送信される。なお、ＣＭ１０間における故障検出の通知は、既知の種々の手法で実現することができ、その具体的な説明は省略する。
【０１２０】
ステップＢ２において、マスターＣＭ１０における故障検出が通知されたＣＭ１０においては、自ＣＭ役割決定部１４２が、メモリ１４５の役割情報を参照して、自ＣＭ１０がセカンドＣＭ１０であるかを確認する。
【０１２１】
確認の結果、自ＣＭ１０がセカンドＣＭ１０である場合には（ステップＢ２のＹＥＳルート参照）、ステップＢ３に移行する。
【０１２２】
ステップＢ３においては、ＣＭ動作制御部１４３が、ＣＰＵ１１が不揮発性メモリ１３等からマスターＣＭ用プログラムモジュールを読み出して実行するよう制御を行なう。これにより、当該ＣＭ１０は新たなマスターＣＭ１０となり、マスターＣＭ１０としての動作を継続して行なう。ＣＭ動作制御部１４３は、例えば、自ＣＭ１０を再起動させ、この再起動時に、ＣＰＵ１１にマスターＣＭ用プログラムモジュールを実行させてもよい。また、自ＣＭ役割決定部１４２は、メモリ１４５の役割情報を、マスターＣＭ１０であることを示す値に変更する。その後、処理を終了する。
【０１２３】
ステップＢ２における確認の結果、自ＣＭ１０がセカンドＣＭ１０でない場合には（ステップＢ２のＮＯルート参照）、ステップＢ４に移行する。
【０１２４】
ステップＢ４において、自ＣＭ役割決定部１４２が、ソート済みシリアルナンバーリストを参照して、自ＣＭ１０のシリアルナンバーがセカンドＣＭ１０の次に小さい値であるかを確認する。
【０１２５】
確認の結果、自ＣＭ１０のシリアルナンバーがセカンドＣＭ１０のシリアルナンバーの次に小さい値である場合には（ステップＢ４のＹＥＳルート参照）、ステップＢ５に移行する。
【０１２６】
ステップＢ５においては、ＣＭ動作制御部１４３が、ＣＰＵ１１が不揮発性メモリ１３等からセカンドＣＭ用プログラムモジュールを読み出して実行するよう制御を行なう。これにより、当該ＣＭ１０は新たなセカンドＣＭ１０となり、セカンドＣＭ１０としての動作を継続して行なう。ＣＭ動作制御部１４３は、例えば、自ＣＭ１０を再起動させ、この再起動時に、ＣＰＵ１１にセカンドＣＭ用プログラムモジュールを実行させてもよい。また、自ＣＭ役割決定部１４２は、メモリ１４５の役割情報を、セカンドＣＭ１０であることを示す値に変更する。その後、処理を終了する。
【０１２７】
ステップＢ４における確認の結果、自ＣＭ１０のシリアルナンバーがセカンドＣＭ１０のシリアルナンバーの次に小さい値でない場合には（ステップＢ４のＮＯルート参照）、ステップＢ６に移行する。
【０１２８】
ステップＢ６においては、当該ＣＭ１０の動作に変更は行なわれず、スレーブＣＭ１０としての動作を継続して行なう。すなわち、ＣＭ動作制御部１４３は自ＣＭ１０の役割変更を行なわない。その後、処理を終了する。
【０１２９】
次に、実施形態の一例としてのストレージシステム１におけるＣＭ１０の保守交換時のＦＰＧＡ１４の処理を、図５に示すフローチャート（ステップＣ１〜Ｃ６）に従って説明する。
【０１３０】
この図５に示す処理は、保守交換によって新たにストレージシステム１に搭載されたＣＭ（交換後ＣＭ）１０のＦＰＧＡ１４において行なわれるものである。
【０１３１】
ステップＣ１において、シリアルナンバー交換部１４１は、自ＣＭ１０のＦＰＧＡ１４の配下のＲＯＭ１５０から、自ＣＭ１０のシリアルナンバーを取得する。
【０１３２】
ステップＣ２において、シリアルナンバー交換部１４１は、ストレージシステム１における他の全てのＣＭ１０に対して、ステップＣ１で取得した自ＣＭ１０のシリアルナンバーを送信する。
【０１３３】
ＣＭ１０の増設や、保守作業によりＣＭ１０の交換を行ない新しいＣＭ１０が搭載される場合には、マスターＣＭ１０から新たに搭載されたＣＭ１０に対してシリアルナンバーを送信する際に、新たに搭載された旨を表す信号が送付される。
【０１３４】
交換後ＣＭ１０は、自ＣＭ１０のシリアルナンバーを他のＣＭ１０に送信する際に、新たに搭載された旨の信号をシリアルナンバーとともに送信してもよい。これにより、マスターＣＭ１０以外の他のＣＭ１０が、交換後ＣＭ１０が、新たに搭載されたものであることを認識することができる。
【０１３５】
ストレージシステム１において、新たに搭載された旨の信号とともにシリアルナンバーを受信した各ＣＭ１０は、自身のシリアルナンバーを、増設されたＣＭ１０に送信する。
【０１３６】
なお、交換後ＣＭ１０のシリアルナンバー交換部１４１は、他の全てのＣＭ１０に対して、各ＣＭ１０のシリアルナンバーの送信を要求してもよい。
【０１３７】
ステップＣ３において、シリアルナンバー交換部１４１は、他ＣＭ１０から送信されるシリアルナンバーの受信を開始する。受信した、シリアルナンバーは、メモリ１４５にシリアルナンバーリストとして格納される。
【０１３８】
なお、ステップＣ１〜Ｃ３における、他ＣＭ１０との間のシリアルナンバーの送受信には、通信ケーブル１７１および通信路１８１を介したＦＰＧＡ間通信が用いられる。
【０１３９】
ステップＣ４において、シリアルナンバー交換部１４１は、他の全てのＣＭ１０からシリアルナンバーを受信したかを確認する。例えば、交換後ＣＭ１０においては、予め本ストレージシステム１に搭載されるＣＭ１０の最大数（例えば４台）が登録されている。シリアルナンバー交換部１４１は、シリアルナンバーの受信数を、このＣＭ１０の最大搭載数と比較することで、他の全てのＣＭ１０からシリアルナンバーを受信したかを確認することができる。他の全てのＣＭ１０からシリアルナンバーを受信していない場合には（ステップＣ４のＮＯルート参照）、ステップＣ４を繰り返し行なう。
【０１４０】
他の全てのＣＭ１０からシリアルナンバーを受信した場合には（ステップＣ４のＹＥＳルート参照）、ステップＣ５に移行する。また、他のＣＭ１０の一部になんらかの障害が生じた場合を鑑みて、シリアルナンバーの受信数が最大搭載数に満たない場合でも、所定時間が経過した場合にはステップＣ５に移行してもよい。
【０１４１】
ステップＣ５においては、自ＣＭ役割決定部１４２が、本ストレージシステム１の全てのＣＭ１０のシリアルナンバーを値の大きさに応じて並び替えて、ソート済みシリアルナンバーリストを作成する。例えば、自ＣＭ役割決定部１４２は、全てのシリアルナンバーを値の小さいものから大きいものにかけて順に並び替える。
【０１４２】
ステップＣ６において、ＣＭ動作制御部１４３は、自ＣＭ１０をスレーブＣＭ１０として動作させる制御を行なう。ストレージシステム１においてＣＭ１０の保守交換が行なわれた場合には、交換後ＣＭ１０は、そのシリアルナンバーの大小にかかわらず、先ずはスレーブＣＭ１０として機能させることが望ましい。これにより、本ストレージシステム１において既に動作中の他のＣＭ１０の役割は変更されることがなく、既存のＣＭ１０に与える影響を少なくすることができ、システムの安定性を維持することができる。
【０１４３】
例えば、ＣＭ動作制御部１４３は、自ＣＭ１０のＣＰＵ１１にスレーブＣＭ用プログラムモジュールを実行させることで、スレーブＣＭ１０としての動作を開始させる。その後、処理を終了する。また、この図５に示した処理は、ストレージシステム１に新たにＣＭ１０の増設を行なう場合に、その増設されるＣＭ１０において行なってもよい。
【０１４４】
（Ｃ）効果
このように、本発明の一実施形態としてのストレージシステム１によれば、各ＣＭ１０において、自ＣＭ役割決定部１４２が、自ＣＭ１０のシリアルナンバーと他のＣＭ１０のシリアルナンバーとを比較することで、自ＣＭ１０の役割（マスターＣＭ／セカンドＣＭ／スレーブＣＭ）を決定する。これにより、ＳＶＣ等の専用の管理装置等を備えることなく、各ＣＭ１０において自ＣＭ役割決定部１４２は自ＣＭ１０の役割を自律的に判断することができ、システムの製造コストを低減することができる。また、この際、自ＣＭ役割決定部１４２が容易に自ＣＭ１０の役割を決定することができ、例えば、マスターＣＭ１０を容易に決定することができる。
【０１４５】
また、自ＣＭ役割決定部１４２が、ソート済みシリアルナンバーリストを参照することで、シリアルナンバーの比較を容易に行なうことができ、自ＣＭ１０の役割を効率的に決定することができる。
【０１４６】
さらに、自ＣＭ役割決定部１４２が決定した役割をメモリ１４５に役割情報として記録する。そして、マスターＣＭ１０に故障が検出された場合に、各ＣＭ１０において、自ＣＭ役割決定部１４２が役割情報を確認し、自ＣＭ１０がセカンドＣＭ１０である場合には、ＣＭ動作制御部１４３が、自ＣＭ１０をマスターＣＭ１０として機能するための制御を行なう。これにより、ＳＶＣ等の専用の管理装置等を備えることなく、マスターＣＭ１０に故障が検出された場合に、速やかにセカンドＣＭ１０がマスターＣＭ１０に切り替わることができ、信頼性を向上させることができる。
【０１４７】
ＦＰＧＡ１４が、ＣＭ１０の電源投入ボタンが押下される前の状態において、待機電力によって供給される電力により、シリアルナンバー交換部１４１，自ＣＭ役割決定部１４２およびＣＭ動作制御部１４３としての各機能を実施することで、本ストレージシステム１（ＣＭ１０）の起動に要する時間を短縮することができる。
【０１４８】
（Ｄ）その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１４９】
例えば、上述した実施形態においては、自ＣＭ役割決定部１４２は、自ＣＭ１０のシリアルナンバーの値が全ＣＭ１０のシリアルナンバーの中で最も小さい場合に自ＣＭ１０がマスターＣＭ１０であると決定し、２番目に小さい場合に自ＣＭ１０がセカンドＣＭ１０であると決定しているが、これに限定されるものではなく、種々変形して実施することができる。
【０１５０】
例えば、自ＣＭ役割決定部１４２は、自ＣＭ１０のシリアルナンバーの値が全ＣＭ１０のシリアルナンバーの中で最も大きい場合に自ＣＭ１０がマスターＣＭ１０であると決定し、２番目に大きい場合に自ＣＭ１０がセカンドＣＭ１０であると決定してもよい。また、
シリアルナンバーの値が所定の基準値に最も近いＣＭ１０をマスターＣＭ１０であると決定し、２番目に近い場合に自ＣＭ１０がセカンドＣＭ１０であると決定してもよい。
【０１５１】
また、上述した実施形態においては、ストレージシステム１に２つのＣＥ３０が備えられ、合計で４つのＣＭ１０が搭載された例について示しているが、これに限定されるものではない。ＳＶＣを備えないストレージシステム１においては、ＣＭ１０の数は４つ程度が望ましいが、例えば、３つ以下もしくは５つ以上のＣＭ１０を搭載してもよく、種々変形して実施することができる。
【０１５２】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１５３】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１５４】
（付記１）
相互に通信可能に接続された複数の制御装置を備える情報処理システムであって、
前記複数の制御装置のうちの一の制御装置が、
当該一の制御装置の電源投入時において、前記複数の制御装置のそれぞれに対応する識別情報を収集する収集部と、
当該一の制御装置の電源投入時において、当該一の制御装置の識別情報と、収集された各制御装置の識別情報とを比較した比較結果に基づき、当該一の制御装置の役割を決定する決定部と
を備えることを特徴とする、情報処理システム。
【０１５５】
（付記２）
前記識別情報は数値であり、
前記決定部が、当該一の制御装置の識別情報の値と前記複数の制御装置のそれぞれに対応する識別情報の各値との大小関係に基づいて、当該一の制御装置の役割を決定する
ことを特徴とする、付記１記載の情報処理システム。
【０１５６】
（付記３）
前記識別情報が、前記制御装置の製造時に個々の制御装置に設定される製造番号である
ことを特徴とする、付記１または２記載の情報処理システム。
【０１５７】
（付記４）
決定された前記役割に応じて、当該一の制御装置の機能設定を行なう機能設定部
を備えることを特徴とする、付記１〜３のいずれか１項に記載の情報処理システム。
【０１５８】
（付記５）
前記決定部が、決定した当該一の制御装置の役割を示す役割情報を記憶装置に記憶し、
前記複数の制御装置のうち、前記役割が主管理である制御装置に異常が検出された場合に、
前記決定部が、前記役割情報を参照して、当該一の制御装置の役割が前記主管理の代理として機能すべき副管理である場合に、当該一の制御装置の役割を主管理に変更し、
前記機能設定部が、当該一の制御装置が主管理として機能するための機能設定を行なう
ことを特徴とする、付記４記載の情報処理システム。
【０１５９】
（付記６）
当該情報処理システムに新たな制御装置が搭載された場合において、
当該新たな制御装置が、
当該新たな制御装置の識別情報を前記複数の制御装置のそれぞれに送信し、
前記複数の制御装置のそれぞれに対応する識別情報を収集して記憶装置に記憶し、
主管理である制御装置に異常が検出された場合に前記主管理の代理として機能すべき副管理として機能するための機能設定を行なう
ことを特徴とする、付記１〜５のいずれか１項に記載の情報処理システム。
【０１６０】
（付記７）
複数の他の制御装置と通信可能に接続される制御装置であって、
当該制御装置の電源投入時において、前記複数の他の制御装置のそれぞれに対応する識別情報を収集する収集部と、
当該制御装置の電源投入時において、当該制御装置の識別情報と、収集された前記複数の他の制御装置の各識別情報とを比較した比較結果に基づき、当該制御装置の役割を決定する決定部と
を備えることを特徴とする、制御装置。
【０１６１】
（付記８）
前記識別情報は数値であり、
前記決定部が、当該制御装置の識別情報の値と前記複数の制御装置のそれぞれに対応する識別情報の各値との大小関係に基づいて、当該制御装置の役割を決定する
ことを特徴とする、付記７記載の制御装置。
【０１６２】
（付記９）
前記識別情報が、前記制御装置の製造時に個々の制御装置に設定される製造番号である
ことを特徴とする、付記７または８記載の制御装置。
【０１６３】
（付記１０）
決定された前記役割に応じて、当該制御装置の機能設定を行なう機能設定部
を備えることを特徴とする、付記７〜９のいずれか１項に記載の制御装置。
【０１６４】
（付記１１）
前記決定部が、決定した当該制御装置の役割を示す役割情報を記憶装置に記憶し、
前記複数の制御装置のうち、前記役割が主管理である制御装置に異常が検出された場合に、
前記決定部が、前記役割情報を参照して、当該制御装置の役割が前記主管理の代理として機能すべき副管理である場合に、当該制御装置の役割を主管理に変更し、
前記機能設定部が、当該制御装置が主管理として機能するための機能設定を行なう
ことを特徴とする、付記１０記載の制御装置。
【０１６５】
（付記１２）
前記複数の他の制御装置に接続された場合において、
自身の識別情報を前記複数の制御装置のそれぞれに送信し、
前記複数の制御装置のそれぞれに対応する識別情報を収集して記憶装置に記憶し、
主管理である制御装置に異常が検出された場合に前記主管理の代理として機能すべき副管理として機能するための機能設定を行なう
ことを特徴とする、付記７〜１１のいずれか１項に記載の制御装置。
【０１６６】
（付記１３）
複数の他の制御装置と通信可能に接続される制御装置に備えられるプログラム可能な集積回路装置に、
当該制御装置の電源投入時において、
前記複数の他の制御装置のそれぞれに対応する識別情報を収集し、
当該制御装置の識別情報と、収集された前記複数の他の制御装置の各識別情報とを比較した比較結果に基づき、当該制御装置の役割を決定する
処理を実行させる、制御プログラム。
【０１６７】
（付記１４）
前記識別情報は数値であり、
前記制御プログラムが、
前記決定部が、当該制御装置の識別情報の値と前記複数の制御装置のそれぞれに対応する識別情報の各値との大小関係に基づいて、当該制御装置の役割を決定する
処理を、前記集積回路装置に実行させることを特徴とする、付記１３記載の制御プログラム。
【０１６８】
（付記１５）
前記識別情報が、前記制御装置の製造時に個々の制御装置に設定される製造番号である
ことを特徴とする、付記１３または１４記載の制御プログラム。
【０１６９】
（付記１６）
前記制御プログラムが、
決定された前記役割に応じて、当該制御装置の機能設定を行なう
処理を、前記集積回路装置に実行させることを特徴とする、付記１３〜１５のいずれか１項に記載の制御プログラム。
【０１７０】
（付記１７）
決定した当該制御装置の役割を示す役割情報を記憶装置に記憶し、
前記複数の制御装置のうち、前記役割が主管理である制御装置に異常が検出された場合に、
前記役割情報を参照して、当該制御装置の役割が前記主管理の代理として機能すべき副管理である場合に、当該制御装置の役割を主管理に変更し、
当該制御装置が主管理として機能するための機能設定を行なう
ことを特徴とする、付記１６記載の制御プログラム。
【０１７１】
（付記１８）
当該情報処理システムに新たな制御装置が搭載された場合において、
前記制御プログラムが、
自身の識別情報を前記複数の制御装置のそれぞれに送信し、
前記複数の制御装置のそれぞれに対応する識別情報を収集して記憶装置に記憶し、
主管理である制御装置に異常が検出された場合に前記主管理の代理として機能すべき副管理として機能するための機能設定を行なう
処理を、前記集積回路装置に実行させることを特徴とする、付記１３〜１７のいずれか１項に記載の制御プログラム。
【符号の説明】
【０１７２】
１    ストレージ装置
１０，１０−１〜１０−４    ＣＭ（制御装置）
１１    ＣＰＵ
１２    ＲＡＭ
１３    不揮発性メモリ
１４    ＦＰＧＡ
１４１    シリアルナンバー交換部
１４２    自ＣＭ役割決定部
１４３    ＣＭ動作制御部
１４５    メモリ
１５    ＣＡ
１６    ＤＡ
１７，１８    インタフェース
１７１    通信ケーブル
１８１    通信路
１９    ＰＣＩｅバス
２０    ＤＥ
２１    記憶装置
３０，３０−１，３０−２    ＣＥ
１５０    ＲＯＭ
【図１】
2019049866.tif 000003
【図２】
2019049866.tif 000004
【図３】
2019049866.tif 000005
【図４】
2019049866.tif 000006
【図５】
2019049866.tif 000007
【図６】
2019049866.tif 000008