以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。ストレージシステム1は、複数のストレージを備え、大容量の記憶領域を提供するシステムである。ストレージシステム1は、サブシステム10,10a,ストレージ15,15aおよび接続先装置20を含む。サブシステム10は、制御装置11,12を有する。制御装置11,12は、ストレージ15に対するデータアクセスを制御する。制御装置11,12は、サブシステム10内で冗長化されている。すなわち、制御装置11,12は、ストレージ15に対する冗長パスを提供する。サブシステム10aも、ストレージ15aに対するデータアクセスを制御する2つの制御装置を有する。なお、ストレージシステム1は、3以上のサブシステムおよび3以上のストレージを備えてもよい。
接続先装置20は、サブシステム10,10aと接続される。例えば、ストレージシステム1では、ストレージ15,15aに別個のデータを格納することもできるし、ストレージ15aをストレージ15のミラーディスクとして利用することもできる。後者の場合、接続先装置20は、例えばサブシステム10の故障を検出した際に、サブシステム10での運用から、サブシステム10aでの運用に切り替える制御を行う。それ以外にも、例えば接続先装置20は、サブシステム10,10aの電源制御や稼働状態の監視などの機能を有してもよい。
例えば、ストレージシステム1では、制御装置単位またはサブシステム単位での交換や拡張が可能である。あるサブシステムをストレージシステム1に追加する場合、当該サブシステムに属する各制御装置を接続先装置20に接続する。具体的には、ある制御装置が備える所定のポートに、ケーブルの一端のコネクタを挿入し、接続先装置20が備える所定のポートに、当該ケーブルの他端のコネクタを挿入する。すると、当該制御装置と接続先装置20とが、1本のケーブルによって接続される。制御装置と接続先装置20との接続を冗長化するために、制御装置と接続先装置20とを2本以上のケーブルにより接続することもできる。
このようなケーブルの配線は、システムの管理者や保守員などにより人手で行われることが多い。接続先装置20がサブシステム10,10aおよびサブシステム10,10aに属する各制御装置を適切に管理するためには、各制御装置と接続先装置20とのケーブルによる接続が正しく行われることが求められる。そこで、各制御装置は、接続先装置20とのケーブルの誤接続を検出する機能を提供する。以下の説明では、2つの装置がケーブルを介して接続されている場合に、ケーブルを介している旨の説明を省略して、「2つの装置が接続されている」ということがある。
制御装置11は、記憶部11a、制御部11bおよびポート11p0,11p1を有する。記憶部11aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、フラッシュメモリなどの不揮発性記憶装置でもよい。制御部11bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。制御部11bはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。ポート11p0,11p1は、接続先装置20が備える複数の接続先ポートとケーブルで接続可能なポート(第1ポート)である。ポート11p0,11p1はポート番号が付与されている。ポート11p0のポート番号は“0”である。ポート11p1のポート番号は“1”である。
制御装置12は、記憶部12a,制御部12bおよびポート12p0,12p1を有する。記憶部12a,制御部12bおよびポート12p0,12p1は、記憶部11a,制御部11bおよびポート11p0,11p1と同様の機能をもつユニットである。ポート12p0,ポート12p1はポート番号が付与されている。ポート12p0のポート番号は“0”である。ポート12p1のポート番号は“1”である。
なお、制御装置11,12それぞれには、サブシステム10内における物理的な搭載位置に応じたスロット番号が割り振られている。制御装置11のスロット番号は“0”である(図中“#0”と表記している)。制御装置12のスロット番号は“1”である(図中“#1”と表記している)。
接続先装置20は、接続部21,22およびブリッジ23を有する。接続部21,22は各制御装置をケーブルで接続するためのポート(接続先ポート)を備える。
接続部21は、ポート21p0,21p1,21p2,・・・,21pn,21p(n+1)を有する。ここで、nは2以上の偶数である。接続部21の各ポートはポート番号が付与されている。ポート21p0のポート番号は“0”である。ポート21p1のポート番号は“1”である。ポート21p2のポート番号は“2”である。ポート21pnのポート番号は“n”である。ポート21p(n+1)のポート番号は“n+1”である。
接続部22は、ポート22p0,22p1,22p2,・・・,22pn,22p(n+1)を有する。接続部22の各ポートはポート番号が付与されている。ポート22p0のポート番号は“0”である。ポート22p1のポート番号は“1”である。ポート22p2のポート番号は“2”である。ポート22pnのポート番号は“n”である。ポート22p(n+1)のポート番号は“n+1”である。
なお、接続部21,22それぞれには、接続先装置20内における物理的な搭載位置に応じたスロット番号が割り振られている。接続部21のスロット番号は“0”である(図中“#0”と表記している)。接続部22のスロット番号は“1”である(図中“#1”と表記している)。
ブリッジ23は、接続部21,22を接続する。接続部21,22は、ブリッジ23を介して接続されることで、冗長構成となっている。例えば、制御装置11のポート11p0をケーブルにより接続部21のポート21p0に接続し、ポート11p1を他のケーブルにより接続部22のポート22p0に接続する。これにより、仮に接続部21,22の何れか一方が故障しても、接続先装置20は、制御装置11との通信を行える。
ストレージシステム1では、サブシステム10,10aや制御装置11,12を含む各制御装置に対して、識別情報が付与される。制御装置11は、ポート11p0,11p1が接続部21,22における何れのポートに接続されているかに応じて、制御装置11の識別情報(ID:IDentifier)を認識する。例えば、制御装置11のIDは番号(識別番号)で表わされる。より具体的には、制御部11bは、ポート11p0,11p1の両方がケーブルで接続されている接続部21,22のポート番号(接続先ポート番号)を接続部21,22から取得し、接続先ポート番号に応じて、ストレージシステム1における制御装置11のIDを認識する。
図1では、制御装置11,12と接続先装置20とが制御装置11,12の全てのポートにおいて正しく接続されている場合を例示している。例えば、ポート11p0はポート21p0に接続されており、ポート11p1はポート22p0に接続されている。
制御部11bは、制御装置11のポート11p0,11p1と、接続部21,22の各ポートのうちポート11p0,11p1それぞれと接続されたポート21p0,22p0の接続先ポート番号との照合に応じて、制御装置11のIDを認識する。例えば、ポート21p0,22p0のポート番号(接続先ポート番号)は、何れも“0”である。よって、制御装置11に対する接続先ポート番号は“0”であり、制御部11bは、制御装置11の識別番号を“0”と決定する。
また、例えば、ポート12p0はポート21p1に接続されており、ポート12p1はポート22p1に接続されている。ポート21p1,22p1のポート番号(接続先ポート番号)は、何れも“1”である。よって、制御装置12に対する接続先ポート番号は“1”であり、制御部12bは、制御装置12の識別番号を“1”と決定する。この場合、サブシステム10に対する接続部21,22の接続先ポート番号は、“0”、“1”である。よって、制御装置11,12は、更に接続先ポート番号の小さい方“0”を、制御装置11,12が属するサブシステム10の識別番号とする。サブシステム10aに属する複数の制御装置も制御装置11,12と同様にして、識別情報を得る。
上記の例では、接続部21,22がそれぞれn+2個(nは2以上の偶数)の接続先ポートを備えるので、ストレージシステム1には制御装置を合計でn+2個搭載可能である。すなわち、1つのサブシステムが2つの制御装置を有する場合、サブシステムの数は、(n/2+1)個である。
テーブルT1は、接続先装置20と各制御装置とが正常に接続されている場合の、接続先ポート番号に応じた制御装置のID(制御装置ID)およびサブシステムのID(サブシステムID)を示している。例えば、制御部11bは、制御装置11の制御装置IDおよびサブシステム10のサブシステムIDを記憶部11aに格納する。また、制御部12bは、制御装置12の制御装置IDおよびサブシステム10のサブシステムIDを記憶部12aに格納する。
このとき、各サブシステムや各制御装置に付与される識別番号は、ストレージシステム1内における各制御装置の物理的な配置の並びに整合していることが重要となる。例えば、ストレージシステム1を収容するラックに、複数の制御装置を横方向または縦方向に並べて搭載する。例えば、各制御装置の制御装置IDは、ストレージシステム1内での横方向の配置の並びに沿って、左側から右側へ(あるいは、右側から左側へ)、各制御装置により“0(制御装置11),1(制御装置12),2,・・・”と順番に認識されることが好ましい。接続先装置20での制御装置IDによる冗長構成の認識や管理などを適切に行えるようにするためである。仮に、制御装置12がポート21p2,22p2に接続されてしまうと、制御装置12の識別番号は“2”となる。この場合、例えば、接続先装置20がポート21p2,22p2に対応する何らかの表示(例えば、接続部21,22の複数のポートに対応する複数のLED(Light Emitting Diode)の点灯による電源オン状態や異常状態などの表示)を行う際、表示内容(例えば、制御装置ID“2”に対応するLEDなど)と、制御装置のラック内搭載位置(例えば、制御装置12の搭載位置)とが整合せず、適切な保守管理を行えないおそれがある。
図2は、第1の実施の形態のストレージシステムの誤接続の例を示す図である。図2の例では、制御装置12のポート12p0が接続部21のポート21p(n+1)に接続されている。制御装置12のポート12p1は、接続部21,22の何れのポートとも接続されていない。この場合、制御部12bは、ポート番号の照合により、ポート12p0(ポート番号“0”)の先の、接続先ポート番号“n+1”のポート21p(n+1)を認識する。制御部12bは、ポート12p1(ポート番号“1”)では接続先ポート番号を取得できないので、ポート12p1が接続先装置20と接続されていないことを認識する。この場合、制御装置12にはID“n+1”が割り当てられる。一方、図1で例示したように、制御装置12には、ID“1”が割り当てられることが適切である。すなわち、ケーブルの誤接続により、制御装置12にID“n+1”が誤って割り当てられてしまう。
そこで、制御部11b,12bは、次のように、自制御装置のポートと接続先ポートのポート番号との照合により、ケーブルの誤接続を検出する。具体的には、制御部11b,12bは、ストレージシステム1内の接続条件に応じた所定の判断基準によってポート番号の照合を行える。例えば、次のような照合を順番に行うことが考えられる。以下では、制御部11bが行う照合を例示するが、制御部12bやその他の制御装置でも同様の照合を行う。
第1の照合は、制御装置11が備えるポート11p0,11p1のポート番号と接続部21,22のスロット番号(接続先装置20における接続部21,22の搭載位置を示す番号)とが一致しているか否かである。制御装置11が備えるポート11p0,11p1の何れか一方のみが接続先装置20と接続されている場合は、接続されている何れか一方のポートについて第1の照合を行う。
第2の照合は、制御装置11のサブシステム10内のスロット番号(サブシステム10内の制御装置11の搭載位置を示す番号)と、接続先ポート番号とが偶数値または奇数値で一致しているか否かである。
第3の照合は、制御装置11が備えるポート11p0,11p1で取得した接続先ポート番号が同じであるか否かである。同じである場合、制御部11bは、制御装置11が接続されている接続先ポート番号を、ポート11p0,11p1により取得した接続先ポート番号と確定する。制御装置11が備えるポート11p0,11p1の何れか一方のみが接続先装置20と接続されている場合は、接続されている片方のポートにより取得した接続先ポート番号を、制御装置11が接続する接続先ポート番号として確定する。
制御部11bは、第1,第2,第3の照合をこの順番で段階的に行い、ある段階の照合結果が真の場合に次の段階の照合を行う。一方、何れかの照合結果が偽の場合に、その時点で制御装置11と接続先装置20との接続に誤りがあることになる。
制御装置11について、上記第1,第2,第3の照合の結果が全て真であれば、制御装置11と接続先装置20とが正しく接続されている可能性が高い(ただし、後述するように誤接続の可能性は残っている)。
例えば、制御部11bは、接続部21のスロット番号と、接続部22のスロット番号とを接続部21,22それぞれから取得する。接続部21のスロット番号は“0”である。接続部22のスロット番号は“1”である。制御部11bは、ポート11p0のポート番号“0”と接続部21のスロット番号“0”とが一致しており、ポート11p1のポート番号“1”と接続部22のスロット番号“1”とが一致していると判断する。このため、制御部11bは、第1の照合の結果を真と判定する。すると、制御部11bは、第2の照合を行う。
制御部11bは、ポート11p0の接続先ポートであるポート21p0から、ポート21p0のポート番号“0”を取得する。制御部11bは、ポート11p1の接続先ポートであるポート22p0から、ポート22p0のポート番号“0”を取得する。制御部11bは、取得したポート21p0,22p0のポート番号“0”と制御装置11のスロット番号“0”とを比較する。両者は、偶数値で一致している。このため、制御部11bは、第2の照合の結果を真と判定する。すると、制御部11bは、第3の照合を行う。
制御部11bは、ポート11p0で取得したポート21p0のポート番号“0”とポート11p1で取得したポート22p0のポート番号“0”とを比較する。両者は、“0”で一致している。このため、制御部11bは、第3の照合の結果を真と判定する。第3の照合まで真だったので、制御部11bは、制御装置11の接続先ポート番号が“0”であると確定する。
同様にして、制御部12bも、制御装置12の接続先ポート番号が“n+1”であると確定する。すなわち、ポート12p0(ポート番号“0”)は接続部21(スロット番号“0”)に接続されており、第1の照合の結果は真である。制御装置12のスロット番号“1”と、ポート21p(n+1)のポート番号“n+1”とは、奇数(前述のようにnは2以上の偶数である)で一致するため、第2の照合の結果は真である。そして、第3の照合により、制御部12bはポート12p0により取得したポート21p(n+1)のポート番号“n+1”を、制御装置12の接続先ポート番号と確定する。
第1〜第3の照合を用いれば、制御装置11,12単体での接続先ポート番号の適否を判断し得る。仮に、制御装置12のポート12p1がポート22p1に接続されていれば、第1〜第3の照合によって、制御部12bは、ポート12p0,12p1の誤接続を検出し得る(第3の照合が偽となるため)。ところが、上記のようにポート12p1が接続部21,22の何れのポートとも接続されていないと、第3の照合によりポート12p0が誤接続されているか否かを判断することが難しくなる。また、同じサブシステムに属する制御装置同士の関係に対する接続の正否が考慮されていない。そこで、制御部11bは、更に、第4の照合を行う(制御部12bも同様に第4の照合を行う)。
第4の照合は、制御装置11での照合により確定された接続先ポート番号と、制御装置11が属するサブシステム10に属する制御装置12での照合により確定された接続先ポート番号との関係がストレージシステム1内の接続条件を満たすか否かである。ストレージシステム1では、同じサブシステムに属する制御装置同士は、隣り合う位置に搭載される。このため、同じサブシステムに属する制御装置11,12に対する接続条件は、接続先ポート番号が隣り合わせの値(連続する値)になることである。
すなわち、各接続先ポート番号が隣り合う値であれば、制御部11bは、制御装置12の接続先ポート番号に対して制御装置11の接続先ポート番号は正しいと判断する。一方、各接続先ポート番号が隣り合う値でなければ、制御部11bは、制御装置12の接続先ポート番号に対して制御装置11の接続先ポート番号は正しくないと判断する。図2のケースの場合、制御部11bは、制御装置12から接続先ポート番号“n+1”を取得する。制御部11bは、制御装置11での照合により確定された接続先ポート番号“0”と、制御装置12での照合により確定された接続先ポート番号“n+1”とを比較する。接続先ポート番号“0”と接続先ポート番号“n+1”とは連続する値ではない。よって、制御部11bは、ポート11p0,11p1が接続先装置20に対して誤接続されていると判定する。同様に、制御部12bは、制御装置11の接続先ポート番号“0”と、制御装置12の接続先ポート番号“n+1”との比較により、ポート12p0が接続先装置20に誤接続されていると判定する。こうして、サブシステム10として誤接続されていることを適切に検出できる。
次に、制御部11bによる接続判定の手順を例示する。制御部11bの処理を例示するが、制御部12bおよび他の制御装置の制御部も同様の手順を実行する。
図3は、第1の実施の形態の接続判定の例を示すフローチャートである。以下、図3に示す処理をステップ番号に沿って説明する。
(S1)制御部11bは、自制御装置(制御装置11)のポート番号と接続先ポート番号とを照合する。ここでいう照合は、図2で説明した、第1,第2,第3の照合を示す。図2の接続例でいえば、制御部11bは、照合結果として、制御装置11に対する接続先ポート番号“0”を確定する。
(S2)制御部11bは、自制御装置(制御装置11)と同じサブシステム10に属する他の制御装置(制御装置12)によるポート番号と接続先ポート番号との照合結果を、当該他の制御装置(制御装置12)から取得する。制御部12bでも、ステップS1の照合(前述の第1,第2,第3の照合)を行っている。このため、制御部11bは、制御装置12から制御部12bによる照合結果を取得できる。図2の接続例でいえば、制御部11bは、制御装置12での照合結果として、制御装置12に対する接続先ポート番号“n+1”を取得する。
(S3)制御部11bは、自制御装置(制御装置11)および他の制御装置(制御装置12)での照合により確定された各接続先ポート番号の関係が、ストレージシステム1内の接続条件を満たすか否かを判定する。満たす場合、処理をステップS4に進める。満たさない場合、処理をステップS5に進める。この判定は、図2で例示した第4の照合に相当する。当該接続条件は、制御装置11および制御装置12での照合により確定された各接続先ポート番号が、隣り合わせの値(連続する値)であることである。すなわち、制御装置11,12での照合により確定された各接続先ポート番号が隣り合わせの値であれば、接続条件を満たす。一方、当該各接続先ポート番号が隣り合わせの値でなければ、接続条件を満たさない。図2の接続例によれば、制御装置11に対する接続先ポート番号“0”と、制御装置12に対する接続先ポート番号“n+1”とは、隣り合わせの値ではない。よって、この場合、制御部11bは、接続条件を満たさないと判定することになる。
(S4)制御部11bは、自制御装置(制御装置11)と接続先装置20との接続が、正しい接続であると判定する。制御部11bは、接続先装置20に正常に接続されていることを通知してもよい。そして、処理を終了する。
(S5)制御部11bは、自制御装置(制御装置11)と接続先装置20との接続が、誤った接続であると判定する。制御部11bは、接続先装置20に誤接続されていることを通知してもよい。そして、処理を終了する。
このようにして、制御装置11は、制御装置12による接続先ポート番号の照合結果も考慮して、制御装置12の接続先ポート番号に対する制御装置11の接続先ポート番号の正否を判定する。これにより、制御装置11,12と接続先装置20との接続の正否を適切に検出できる。例えば、図2のようにポート12p1が未接続、かつ、制御装置12の接続先ポート番号が“n+1”と確定されているときでも、制御部12bは、制御装置11の接続先ポート番号“0”との比較によって、ポート12p0の誤接続を適切に検出することができる。
ステップS4,S5でも例示したように、制御部11bは、接続の正否の判定結果を、接続先装置20に通知してもよい。例えば、接続先装置20は、誤接続の検出されたサブシステムを用いずに運用を継続するようストレージシステム1を制御する(ストレージシステム1を縮退運転する)。
具体的には、図2の例において制御部11bは、接続部21,22のポート番号“0”のポート21p0,22p0が誤接続されていることを接続先装置20に通知する。また、制御部12bは、接続部21のポート番号“n+1”のポート21p(n+1)が誤接続されていることを接続先装置20に通知する。すると、接続先装置20は、ポート21p0,21p(n+1),22p0の先に接続されている制御装置11,12を用いてデータアクセスを行わないよう制御する。
例えば、制御装置11,12は、ストレージシステム1の起動時に、上記の接続判定を行うことが考えられる。その場合、接続先装置20は、制御装置11,12の起動を中止し、他のサブシステムによる起動を継続し、サブシステム10を用いないようにする。このように、誤接続されている制御装置11,12が使用されるのを抑制することで、ストレージシステム1の動作に対する高信頼化を図れる。接続先装置20は、例えば、ポート21p0,21p(n+1),22p0に対応する通知用LEDを所定の色に点灯させる、エラーメッセージをユーザの端末に送信するなどの方法により、これらのポートの誤接続を報知してもよい。こうして、ユーザによる誤接続の発見を支援することもできる。
[第2の実施の形態]
図4は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、ストレージシステム100、運用サーバ200および業務サーバ300を有する。ストレージシステム100、運用サーバ200および業務サーバ300は、ネットワーク30に接続されている。ネットワーク30は、例えばLAN(Local Area Network)である。ストレージシステム100および業務サーバ300は、SAN(Storage Area Network)40に接続されている。
ストレージシステム100は、HDDやSSDなどを含むストレージを複数搭載し、大容量の記憶領域を利用可能とする。ストレージシステム100は、ストレージへのデータアクセスを行う複数のサブシステムを有し、複数のサブシステムによりデータ保存およびデータアクセスの高信頼化が図られている。
運用サーバ200は、ストレージシステム100および業務サーバ300の運用管理を行うサーバコンピュータである。例えば、運用サーバ200は、ストレージシステム100が実行するファームウェアのプログラムをストレージシステム100に配信する。
業務サーバ300は、SAN40を介してストレージシステム100に格納されたデータへアクセスし、当該データを用いた業務処理を実行するサーバコンピュータである。業務サーバ300は、ネットワーク30に接続されたクライアントコンピュータ(図4では図示を省略している)からの要求に応じて業務処理を実行してもよい。
図5は、第2の実施の形態のストレージシステムの例を示す図である。ストレージシステム100は、コントローラエンクロージャ(CE:Controller Enclosure)110,110a、フロントエンクロージャ(FE:Front Enclosure)120およびドライブエンクロージャ(DE:Drive Enclosure)130,130aを含む。ストレージシステム100は、3以上のCEを含んでもよい。ストレージシステム100は、3以上のDEを含んでもよい。
CE110,110aは、DE130,130aの記憶領域の管理やDE130,130aに対するアクセス制御を行う。CE110,110aとFE120との間およびCE110,110aとDE130,130aとの間はケーブルにより接続されている。CE110,120は、ネットワーク30に接続されている。CE110,120は、第1の実施の形態のサブシステム10,10aの一例である。
FE120は、CE110,110aおよびDE130,130aに対する管理機能およびCE間通信の中継機能を提供する。FE120は、第1の実施の形態の接続先装置20の一例である。FE120は、サービスコントローラ(SVC:SerVice Controller)121,122およびフロントエンドルータ(FRT:Frontend RouTer)140,140aを含む。
SVC121,122は、例えば、CE110,110aおよびDE130,130aに対する電源制御、状態監視および動作設定などの機能を担う。電源制御の処理として、例えば各部の電源オン/オフの切り替えを行う。また、状態監視の処理として、例えばCE110,110aなどの動作でエラーが発生していないかなどの監視を行う。更に、動作設定の処理として、例えばCE110,110aとFRT140,140aとの間の通信における信号強度の設定(FRT140,140aが備えるリピータの設定)などを行う。SVC121,122は、第1の実施の形態の接続部21,22の一例である。FRT140,140aは、CE間通信を中継する中継装置である。
DE130,130aは、複数のHDD(磁気ディスク装置)を収容し、複数のHDDを組み合わせた大容量の記憶領域を利用可能とする。DE130,130aは、HDDの代わりに、または、HDDと併せて、SSDなどの他の不揮発性記憶媒体を備えてもよい。例えば、CE110,110aは、DE130,130aに内蔵された複数のHDD(あるいはSSD)を用いてRAID(Redundant Array of Independent Disks)と呼ばれる技術により、アクセス性能や耐障害性を確保した論理的な記憶領域を実現し得る。CE110,110aは、DE130,130a内のHDDやSSDを用いて、同一のデータを格納した複数のRAIDグループを形成し、データの保存およびアクセスの信頼性を一層向上させることもできる。DE130,130aは、第1の実施の形態のストレージ15,15aの一例である。
ストレージシステム100では、CE110,110aが故障したとしても、CE110単位での交換が可能である。また、ストレージシステム100に対してCE単位での追加(スケールアウト)も可能である。ストレージシステム100では、新たなCEを追加する際、システムの管理者や保守員などが、新たなCEをFE120にケーブルにより接続することになる。
図6は、第2の実施の形態のSVCおよびCEの接続例を示す図である。CE110は、CM(Controller Module)111,112を有する。CE110aは、CM111a,112aを有する。CM111,112は、DE130に対するデータアクセスを制御する。CM111a,112aは、DE130aに対するデータアクセスを制御する。CM111,112,CM111a,112aは、第1の実施の形態の制御装置11,12の一例である。
CM111,112は、CE110の筐体が備えるスロットに搭載されている。CM111は、スロット番号“0”のスロットに搭載されている。CM112は、スロット番号“1”のスロットに搭載されている。同様に、CM111a,112aは、CE110aが備えるスロットに搭載されている。CM111aは、スロット番号“0”のスロットに搭載されている。CM112aは、スロット番号“1”のスロットに搭載されている。
CM111,112,111a,112aそれぞれは、FE120とケーブルを用いて接続するための複数のポートを有する。CM111は、ポートP0,P1を有する。ポートP0のポート番号は“0”である。ポートP1のポート番号は“1”である。CM112は、ポートP2,P3を有する。ポートP2のポート番号は“0”である。ポートP3のポート番号は“1”である。CM111aは、ポートP4,P5を有する。ポートP4のポート番号は“0”である。ポートP5のポート番号は“1”である。CM112aは、ポートP6,P7を有する。ポートP6のポート番号は“0”である。ポートP7のポート番号は“1”である。
FE120は、SVC121,122およびFE−BRG(BRidGe)123を有する。前述のように、SVC121,122は、FE120におけるCE110,110aなどに対する管理機能を担う。SVC121,122は、FE−BRG123を介して接続される。FE−BRG123は、第1の実施の形態のブリッジ23の一例である。SVC121は、FE120の筐体が備えるスロットに搭載されている。SVC121は、スロット番号“0”のスロットに搭載されている。SVC122は、スロット番号“1”のスロットに搭載されている。
SVC121,122それぞれは、CE110,110aとケーブルを用いて接続するための複数のポートを有する。SVC121は、ポートPa0,Pa1,Pa2,Pa3,・・・,Pan,Pa(n+1)を有する。ポートPa0のポート番号は“0”である。ポートPa1のポート番号は“1”である。ポートPa2のポート番号は“2”である。ポートPa3のポート番号は“3”である。ポートPanのポート番号は“n”である。nは2以上の偶数である。ポートPa(n+1)のポート番号は“n+1”である。
SVC122は、ポートPb0,Pb1,Pb2,Pb3,・・・,Pbn,Pb(n+1)を有する。ポートPb0のポート番号は“0”である。ポートPb1のポート番号は“1”である。ポートPb2のポート番号は“2”である。ポートPb3のポート番号は“3”である。ポートPbnのポート番号は“n”である。ポートPb(n+1)のポート番号は“n+1”である。
FE−BRG123は、SVC121,122を接続するブリッジである。例えば、SVC121,122は、FE−BRG123を介して相互に通信し、CE110,110aとFE120との間の冗長パスを提供する。CE110,110aとFE120との間の物理インタフェースには、例えば、RS422(Recommended Standard 422)が用いられる。CM111,112,111a,112aには、SVC121,122の何れのポートに接続されるかに応じてIDが付与される。CM111,112,111a,112aには、ストレージシステム100内の搭載位置に応じて適正なIDが付与されることが求められる。例えば、CE110,110aおよびFE120のケーブルによる正しい接続関係は次の通りである。
ポートP0とポートPa0とを接続する。ポートP1とポートPb0とを接続する。ポートP2とポートPa1とを接続する。ポートP3とポートPb1とを接続する。ポートP4とポートPa2とを接続する。ポートP5とポートPb2とを接続する。ポートP6とポートPa3とを接続する。ポートP7とポートPb3とを接続する。こうして整然とCMとSVCとを接続していくと、FE120は合計でn+2個のCMと接続可能であり、各CMに対してSVC121,122を介した冗長パスを提供できる。
図6では、ポートPan,Pa(n+1),Pbn,Pb(n+1)に接続されるCE110xも図示している(ただし、図5では、CE110xおよびDE130xの図示を省略している)。CE110xは、ストレージシステム100における(n/2)+1個目のCEである。例えば、CE110xは、DE130xに対するデータアクセスを制御する。
CE110xは、CM111x,112xを有する。CM111xは、ストレージシステム100におけるn+1個目のCMである。CM112xは、ストレージシステム100におけるn+2個目のCMである。
CM111xはポートPx1,Px2を有する。ポートPx1のポート番号は“0”である。ポートPx2のポート番号は“1”である。CM112xはポートPx3,Px4を有する。ポートPx3のポート番号は“0”である。ポートPx4のポート番号は“1”である。この場合、ポートPx1をポートPanに接続し、ポートPx2をポートPbnに接続し、ポートPx3をポートPa(n+1)に接続し、ポートPx4をポートPb(n+1)に接続するのが正しい接続である。
図7は、第2の実施の形態のCMおよびSVCのハードウェア例を示す図である。CM111は、ポートP0,P1、監視モジュール151、FPGA152、MRAM(Magneto-resistive Random Access Memory)153、PEX(PCI EXpress)154、CPU155、DIMM(Dual Inline Memory Module)156および通信IF(InterFace)157、IOC(Input / Output Controller)158およびCA(Channel Adaptor)159を有する。なお、PCIは、Peripheral Component Interconnectの略である。
ポートP0,P1は、前述のようにSVC121,122と接続するためのインタフェースである。
監視モジュール151は、CM111とSVC121,122との誤接続の有無を監視する。監視モジュール151は、FPGA152、PEX154およびCM112の監視モジュール(後述する監視モジュール151a)と接続されている。監視モジュール151とCM112の監視モジュールとの間のインタフェースには、例えば、I2C(Inter-Integrated Circuit)を利用できる。監視モジュール151は、エキスパンダ(Expander)と呼ばれるものでもよい。
また、監視モジュール151は、DE130にも接続されており、データへのアクセスを中継する。監視モジュール151は、CM111の起動時において、CPU155による処理が開始される前に、SVC121,122との接続のチェックを行う。当該接続のチェックは、監視モジュール151が実行するBIOS(Basic Input / Output System)によるチェック(例えば、POST(Power On Self Test))の1つとして実装されてもよい。
FPGA152は、ポートP0,P1を介したSVC121,122と監視モジュール151とのデータ通信や、SVC121,122とCPU155とのデータ通信を中継する。また、FPGA152は、MRAM153に格納されたファームウェアのプログラムやデータを読み出して、監視モジュール151やCPU155に提供する。FPGA152は、CM112のFPGA(後述するFPGA152a)とも接続され、FPGA通信を行える。
MRAM153は、監視モジュール151やCPU155に実行させるファームウェアのプログラムや、ファームウェアの処理に用いられるデータを記憶する不揮発性メモリである。MRAM153に代えて、または、MRAM153と併せて、フラッシュメモリなどの他の不揮発性メモリを用いてもよい。
PEX154は、CM111とDE130とのデータの伝送路を提供する。当該伝送路には、PCI Expressが用いられる。例えば、PEX154は、SAN40を介してDE130のデータへアクセスするための伝送路を提供する。
CPU155は、CM111を制御するプロセッサである。CPU155は、監視モジュール151による接続チェックが完了した後に、MRAM153からDIMM156へファームウェアをロードし、ファームウェアを実行することで、DE130へのデータアクセス制御を開始する。
DIMM156は、CPU155が実行するファームウェアのプログラムや各種のデータを記憶するメモリである。
通信IF157は、ネットワーク30に接続される通信インタフェース(例えば、イーサネット(登録商標)など)である。通信IF157は、ネットワーク30を介して、運用サーバ200と通信する。
IOC158は、DE130に対するデータの読み書きなどのデータアクセスを制御するモジュールである。
CA159は、SAN40と接続される通信インタフェースである。CM111は、CA159を複数備え、SAN40との間に冗長パスを形成し得る。なお、CM111は、更に、FRT140,140aと接続されるNTB(Non Transparent Bridge)を有する(ただし、図7では、NTBの図示を省略している)。
CM112は、ポートP2,P3、監視モジュール151a、FPGA152a、MRAM153a、PEX154a、CPU155a、DIMM156a、通信IF157a、IOC158aおよびCA159aを有する。
ポートP2,P3は、前述のようにSVC121,122と接続するためのインタフェースである。監視モジュール151a、FPGA152a、MRAM153a、PEX154a、CPU155a、DIMM156a、通信IF157a、IOC158aおよびCA159aは、CM111における同名のユニットと同様のハードウェアであるため、説明を省略する。
SVC121は、ポートPa0,Pa1,Pa2,Pa3,・・・,Pa(n+1)、MPU(Micro-Processing Unit)161、DIMM162、FPGA163およびMRAM164を有する。SVC122もSVC121と同様のハードウェアにより実現される。
MPU161は、SVC121を制御するプロセッサである。MPU161は、MRAM164に記憶されたファームウェアのプログラムをDIMM162にロードして実行することで、各CMに対する電源制御や監視処理などの機能を発揮する。
DIMM162は、MPU161が実行するファームウェアのプログラムや各種のデータを記憶するメモリである。
FPGA163は、ポートPa0,Pa1,Pa2,Pa3,・・・Pa(n+1)を介したMPU161と各CMとの間のデータ通信を中継する。また、FPGA163は、FE−BRG123に接続されている。FPGA163は、FE−BRG123を介したMPU161とSVC122との間のデータ通信を中継する。更に、FPGA163は、MRAM164に格納されたファームウェアのプログラムやデータを読み出して、MPU161に提供する。
MRAM164は、MPU161に実行させるファームウェアのプログラムや、ファームウェアの処理に用いられるデータを記憶する不揮発性メモリである。MRAM164に代えて、または、MRAM164と併せて、フラッシュメモリなどの他の不揮発性メモリを用いてもよい。
また、DE130は、IOM(Input / Output Module)131を有する。IOM131は、CM111,112から受け付けたデータへのアクセス要求(読み出し要求や書き込み要求)に応じて、DE130に収納されたHDDやSSDに対するアクセス(データの読み出しやデータの書き込み)を実行する。DE130は、アクセス要求に対する処理結果をCM111,112に応答する。
図8は、第2の実施の形態の監視モジュールのハードウェア例を示す図である。監視モジュール151は、プロセッサ171、RAM172、I2C−IF173およびPEX−IF174を有する。監視モジュール151aも監視モジュール151と同様のハードウェアにより実現される。
プロセッサ171は、監視モジュール151の情報処理を制御する。プロセッサ171は、マルチプロセッサであってもよい。プロセッサ171は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ171は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM172は、監視モジュール151の主記憶装置である。RAM172は、プロセッサ171に実行させるファームウェアのプログラムの少なくとも一部を一時的に記憶する。RAM172は、プロセッサ171の処理に用いられる各種データを記憶する。なお、監視モジュール151は、RAM172に加えて、プロセッサ171が実行するファームウェアのプログラムを記憶する不揮発性メモリを備えてもよい。
I2C−IF173は、I2Cのインタフェースである。I2C−IF173は、監視モジュール151aと接続される。
PEX−IF174は、PCI−Expressのインタフェースである。PEX−IF174は、DE130と接続される。
図9は、第2の実施の形態の運用サーバの例を示す図である。運用サーバ200は、プロセッサ201、RAM202、HDD203、画像信号処理部204、入力信号処理部205、媒体リーダ206および通信IF207を有する。各ユニットは運用サーバ200のバスに接続されている。業務サーバ300も運用サーバ200と同様のハードウェアにより実現される。
プロセッサ201は、運用サーバ200の情報処理を制御する。プロセッサ201は、マルチプロセッサであってもよい。プロセッサ201は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ201は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM202は、運用サーバ200の主記憶装置である。RAM202は、プロセッサ201に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM202は、プロセッサ201による処理に用いる各種データを記憶する。
HDD203は、運用サーバ200の補助記憶装置である。HDD203は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD203は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。運用サーバ200は、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部204は、プロセッサ201からの命令に従って、運用サーバ200に接続されたディスプレイ31に画像を出力する。ディスプレイ31としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部205は、運用サーバ200に接続された入力デバイス32から入力信号を取得し、プロセッサ201に出力する。入力デバイス32としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
媒体リーダ206は、記録媒体33に記録されたプログラムやデータを読み取る装置である。記録媒体33として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体33として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ206は、例えば、プロセッサ201からの命令に従って、記録媒体33から読み取ったプログラムやデータをRAM202またはHDD203に格納する。
通信IF207は、ネットワーク30を介してストレージシステム100を含む他の装置との通信を行う。通信IF207は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
図10は、第2の実施の形態のCMの機能例を示す図である。CM111は、記憶部181、誤接続判定部182、通知部183を有する。例えば、記憶部181は、RAM172に確保された記憶領域として実現される。例えば、誤接続判定部182および通知部183は、RAM172に記憶されたプログラムをプロセッサ171が実行することで実現される。
記憶部181は、誤接続判定部182および通知部183の処理に用いられるデータを記憶する。例えば、記憶部181は、CM111の接続先ポート番号はCM112から取得したCM112の接続先ポート番号の情報を記憶する。また、記憶部181は、誤接続判定部182によって決定されたCM111やCE110のIDなどの情報も記憶する。
誤接続判定部182は、ポートP0,P1に対して、ポートP0,P1の先に接続されているSVC121,122のポート(接続先ポート)のポート番号(接続先ポート番号)を照合する。また、誤接続判定部182は、当該照合結果と、CM112における照合結果とに基づいて、ポートP0,P1とSVC121,122とのケーブルを介した接続に誤接続があるか否かを判定する。
ここで、誤接続があるか否かの判定のために、記憶部181は、正常な接続構成の判断基準を示す情報を予め記憶する。正常な接続構成の判断基準とは、以下の全ての接続条件を満たす接続を示す。
(1)CM側のポートのポート番号と、当該ポートが接続する接続先のSVCのスロット番号が同じ値である。
(2)CMのスロット番号と接続先のSVCのポート番号とが偶数値または奇数値で一致している。ここで、偶数値は“0”を含むものとする。
(3)同一CM内のポート番号“0”およびポート番号“1”の両ポートで受信した接続先ポート番号が同じ値である。
(4)自CMが属するCE内の2つのCMで受信した接続先ポート番号が隣り合わせの値(連続する値)である。なお、以下の説明では、例えば上記(1)〜(4)の接続条件の何れかを指して、「接続条件(1)」(これは上記(1)の接続条件を示している)などと表記することがある。
誤接続判定部182は、上記(1)〜(4)の接続条件に基づき、SVC側のスロット番号、接続先ポート番号、CM111側の受信ポート番号、および、CM111のスロット番号を照合して段階的な判断を行うことで、CM111とSVC121,122との接続の正常性を判定する。
通知部183は、SVC121,122およびCM112へのデータの送信を行う。例えば、通知部183は、CM111でのポート番号の照合結果をCM112に通知する。また、通知部183は、CM111における誤接続の判定結果をSVC121,122に通知する。
CM112は、記憶部181a、誤接続判定部182aおよび通知部183aを有する。例えば、記憶部181aは、監視モジュール151aが備えるRAMに確保された記憶領域として実現される。例えば、誤接続判定部182aおよび通知部183aは、監視モジュール151aが備えるRAMに記憶されたプログラムを監視モジュール151aが備えるプロセッサが実行することで実現される。
ここで、記憶部181a、誤接続判定部182aおよび通知部183aは、CM111で例示した同名の機能と同様である。すなわち、誤接続判定部182aは、ポートP2,P3のポート番号と、ポートP2,P3の先に接続されているSVC121,122のポート(接続先ポート)のポート番号(接続先ポート番号)を照合する。また、誤接続判定部182aは、当該照合結果と、CM111における照合結果とに基づいて、ポートP2,P3とSVC121,122とのケーブルを介した接続に誤接続があるか否かを判定する。また、通知部183aは、SVC121,122およびCM111へのデータの送信を行う。例えば、通知部183aは、CM112でのポート番号の照合結果をCM111に通知する。また、通知部183aは、CM112における誤接続の判定結果をSVC121,122に通知する。
図11は、第2の実施の形態のSVCの機能例を示す図である。SVC121は、記憶部191、接続情報通知部192およびエラー処理部193を有する。例えば、記憶部191は、DIMM162に確保された記憶領域として実現される。例えば、接続情報通知部192およびエラー処理部193は、DIMM162に記憶されたプログラムをMPU161が実行することで実現される。
記憶部191は、接続情報通知部192およびエラー処理部193の処理に用いられるデータを記憶する。例えば、記憶部191は、SVC121が有するポートのポート番号と、当該ポートの先に接続されたCMのIDとCEのIDとの対応関係の情報を記憶する。また、例えば、記憶部191は、CM111,112などから通知されたケーブルの誤接続の判定結果を記憶する。
接続情報通知部192は、SVC121の接続情報を、SVC121のポートに接続されたCMに通知する。接続情報は、CMが接続されているSVC121のポート(接続先ポート)のポート番号(接続先ポート番号)と、SVC121のスロット番号とを含む。
エラー処理部193は、各CMから通知された誤接続の判定結果に応じて、エラー処理(ストレージシステム100を安定稼働させるための高信頼化処理)を実行する。高信頼化処理は、RAS(Reliability, Availability and Serviceability)処理と呼ばれることもある。具体的には、エラー処理部193は、誤接続(接続エラー)のあるCMをストレージシステム100の運用に用いないよう制御する処理や、エラー情報の生成などを行う。また、FE120は、ユーザによる操作入力を受け付けるオペレーションパネルを備えている。オペレーションパネルには、CMの搭載位置に対応する複数のLEDが設けられる。エラー処理部193は、FE120の当該オペレーションパネルを制御して、エラーのあるCMの搭載位置に対応するLEDを、エラーを示す色で点灯させたり、エラーを示す周期で点滅させたりする。
SVC122は、記憶部191a、接続情報通知部192aおよびエラー処理部193aを有する。例えば、記憶部191aは、SVC122が備えるDIMMに確保された記憶領域として実現される。例えば、接続情報通知部192aおよびエラー処理部193は、SVC122が備えるDIMMに記憶されたプログラムを、SVC122が備えるMPUが実行することで実現される。
ここで、記憶部191a、接続情報通知部192aおよびエラー処理部193aは、SVC121で例示した同名の機能と同様である。すなわち、接続情報通知部192aは、SVC122の接続情報を、SVC122のポートに接続されたCMに通知する。接続情報は、CMが接続されているSVC122のポート(接続先ポート)のポート番号(接続先ポート番号)と、SVC122のスロット番号とを含む。
エラー処理部193aは、各CMから通知された誤接続の判定結果に応じて、エラー処理を実行する。エラー処理部193,193aは、互いに連携して、何れか一方のみがエラー処理を実行してもよい。
図12は、第2の実施の形態の接続管理テーブルの例を示す図である。接続管理テーブルT10は、記憶部181に格納される。接続管理テーブルT10は、CM111,112がSVC121,122から取得した接続情報を管理するためのテーブルである。
接続管理テーブルT10には、CM111(図中、「CM−スロット#0」と表記)のポートP0(図中、「ポート0」と表記)およびポートP1(図中、「ポート1」と表記)それぞれに対する接続情報が登録される。接続情報は、前述のように接続先のSVCのスロット番号(図中、「SVCスロット番号」と表記)および接続先のSVCのポート番号(図中、「SVCポート番号」と表記)が含まれる。
同様に、接続管理テーブルT10には、CM112(図中、「CM−スロット#1」と表記)のポートP2(図中、「ポート0」と表記)およびポートP3(図中、「ポート1」と表記)それぞれに対する接続情報が登録される。
例えば、図6で示したCE110とFE120との接続例では、ポートP0に対して、SVCスロット番号“0”(SVC121のスロット番号)、SVCポート番号“0”(ポートPa0のポート番号)となる。ポートP1に対して、SVCスロット番号“1”(SVC122のスロット番号)、SVCポート番号“0”(ポートPb0のポート番号)となる。ポートP2に対して、SVCスロット番号“0”(SVC121のスロット番号)、SVCポート番号“1”(ポートPa1のポート番号)となる。ポートP3に対して、SVCスロット番号“1”(SVC122のスロット番号)、SVCポート番号“1”(ポートPb1のポート番号)となる。
次に、ストレージシステム100の起動時における接続確認の処理手順を説明する。以下の説明では、SVC121およびCM111に着目して説明するが、SVC122を含む他のSVCおよびCM112を含む他のCMも同様の手順を実行する。
ここで、ストレージシステム100の起動時には、まず、SVC121,122が起動される。SVC121,122は各CMとのリンクを確認してCMの電源投入を行う。このとき、CMは、CM−SVC間の各パスについて誤接続の有無を確認する。
図13は、第2の実施の形態のSVCの処理例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(S11)接続情報通知部192は、CM111−SVC121間のリンクアップ(CM111側のポートとSVC121側ポートとの接続)を検出する。同様に、接続情報通知部192は、CM112を含む他のCMとSVC121との間のリンクアップを検出する。
(S12)接続情報通知部192は、リンクアップしたポートを介して、接続情報をCM111に送信する。接続情報は、SVC121のスロット番号およびSVC121側のポートのポート番号(接続先ポート番号)を含む。接続情報通知部192は、ポート番号として、SVC121側の接続されたポートに応じたポート番号を送信する。例えば、図6の接続例において、接続情報通知部192は、ポートPa0からCM111へ、SVC121のスロット番号“0”およびポートPa0のポート番号“0”を送信する。また、接続情報通知部192は、ポートPa1からCM112へ、SVC121のスロット番号“0”およびポートPa1のポート番号“1”を送信する。
(S13)エラー処理部193は、SVC121に接続されている全CMによる誤接続の判定結果の取得を待機する。エラー処理部193は、全CMによる誤接続の判定結果を、各CMから受信すると、処理をステップS14に進める。
(S14)エラー処理部193は、ステップS13で取得した判定結果の情報に基づいて、SVC121の何れかのポートにおいて、誤接続があるか否かを判定する。誤接続がある場合、処理をステップS15に進める。誤接続がない場合、処理をステップS16に進める。
(S15)エラー処理部193は、エラー処理を実行する。例えば、エラー処理部193は、誤接続が検出されたSVC121側のポートから、起動処理の中止を指示するデータを送信し、当該ポートの先に存在するCMの起動処理を中止させる。そして、処理をステップS16に進める。
(S16)エラー処理部193は、正常接続の(誤接続が検出されていない)CMの起動処理を継続する。例えば、エラー処理部193は、誤接続が検出されていないSVC121側のポートから、起動処理の継続を指示するデータを送信し、当該ポートの先に存在するCMの起動処理を継続させる。そして、処理を終了する。
図14は、第2の実施の形態のCMの処理例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
(S21)誤接続判定部182は、接続先SVC(SVC121またはSVC122)から接続情報(接続先SVCのスロット番号と接続先ポート番号とを含む)を受信する。誤接続判定部182は、受信したCM111側のポート番号m(受信ポート番号m)に対応付けて、受信した接続情報を接続管理テーブルT10に登録する。ここで、CM111側の受信ポート番号mは、m=0またはm=1の何れかである。誤接続判定部182は、本ステップS21において今回受信した接続情報(SVC121およびSVC122の何れかから受信した接続情報)に基づき、次のステップS22,S23の判定を行う。
(S22)誤接続判定部182は、SVCスロット番号とCM111側の受信ポート番号mとが一致するか(すなわち、SVCスロット番号=受信ポート番号mであるか)否かを判定する。一致する場合、処理をステップS23に進める。一致しない場合、処理をステップS24に進める。ステップS22の判定は、CM111のポートのポート番号と、当該ポートが接続する接続先のSVCのスロット番号が同じ値であるか否か(接続条件(1)を満たすか否か)を判定していることに相当する。
(S23)誤接続判定部182は、CM111のスロット番号を2で割った余りと、接続先ポート番号を2で割った余りとが一致するか否かを判定する。一致する場合、処理をステップS25に進める。一致しない場合、処理をステップS24に進める。ここで、図14では、この判定を「(CMスロット番号)%2=(接続先ポート番号)%2?」と表記している。“%2”の演算は、2で割った余りを取得する演算である。ステップS23の判定は、CM111のスロット番号と接続先のSVCのポート番号とが偶数値または奇数値で一致しているか否か(接続条件(2)を満たすか否か)を判定していることに相当する。
(S24)誤接続判定部182は、ポート番号mのポートを誤接続と判断する。そして、処理を終了する。なお、誤接続判定部182は、CM111のポートP0,P1のうちの一方のポートに対する判定しか行っていない場合、他方のポートに対して、ステップS22,S23を実行することで誤接続の有無を判定してから、処理を終了してもよい。
(S25)誤接続判定部182は、CM111内の両ポート(ポートP0,P1の両方)についてステップS22,S23のチェックを完了したか否かを判定する。両ポートのチェックを完了した場合、処理をステップS26に進める。両ポートのチェックを完了していない場合、処理をステップS21に進める。ただし、誤接続判定部182は、リンクアップしている(SVCと接続されている)ポートに対してのみ、ステップS21〜S23の処理を行える。ポートP0,P1のうち何れか一方のポートがリンクアップしていない場合、リンクアップしていない(SVCと接続されていない)ポートのチェックを行わずにステップS26に進める。この場合、リンクアップしていないポートの状態(接続ステータス)は、ステータスなし、または、異常として管理される。これに対し、リンクアップしているポートの接続ステータスは、ステータスありとして管理される。
(S26)誤接続判定部182は、CM111内の両方のポートに接続ステータスがあるか否かを判定する。両方のポートに接続ステータスがある場合、処理をステップS27に進める。何れか一方のポートに接続ステータスがない(または、接続ステータスが異常)の場合、処理をステップS29に進める。
(S27)誤接続判定部182は、CM111のポートP0の接続先ポート番号とCM111の他方のポートP1の接続先ポート番号とが一致するか否かを判定する。一致する場合、処理をステップS29に進める。一致しない場合、処理をステップS28に進める。図14中では、ポートP0を「ポート番号“0”のポート」という意味で「ポート0」と表記し、ポートP1を「ポート番号“1”のポート」という意味で「ポート1」と表記している(以降のステップでも同様に表記することがある)。その上で、当該判定を「CM ポート0接続先ポート番号=CM ポート1接続先ポート番号?」と表記している。ステップS27の判定は、接続条件(3)を満たすか否かを判定していることに相当する。
(S28)誤接続判定部182は、ポート0または1(すなわち、ポートP0またはP1)を誤接続と判断する。そして、処理をステップS31に進める。
(S29)誤接続判定部182は、自CM(CM111)の接続先ポート番号を確定する。具体的には、ステップS26でNoであった場合、一方のポートにより取得した接続先情報に含まれる接続先ポート番号を、CM111の接続先ポート番号と確定する。また、ステップS27でYesであった場合、CM111の両方のポートで受信した接続先ポート番号を、CM111の接続先ポート番号と確定する。
(S30)通知部183は、確定した接続先ポート番号を、自CM(CM111)と同じCE110に属する他CM(CM112)へ送信する。例えば、通知部183は、CM112からの接続先ポートの取得要求に応じて、確定した接続先ポート番号を、CM112に送信してもよい。
(S31)誤接続判定部182は、自CM(CM111)と同じCE110に属する他CM(CM112)での照合により確定された接続先ポート番号を、当該他CMに要求する。
図15は、第2の実施の形態のCMの処理例(続き)を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(S32)誤接続判定部182は、CE110内の他CM(CM112)の接続先ポート番号を受信する。ここで、CM112側の照合でCM112の接続先ポートが確定されていない場合もあり得る。この場合、誤接続判定部182は、ステップS31に対するCM112側からの応答として、接続先ポート番号なし、または、異常という照合結果を得ることになる。
(S33)誤接続判定部182は、他CM(CM112)の接続先ポート番号があるか否かを判定する。ある場合、処理をステップS34に進める。ない(または、異常)の場合、処理をステップS40に進める。接続先ポート番号がある場合とは、ステップS32において、CM112で確定された接続先ポート番号を、CM112から受信できている場合である。一方、接続先ポート番号がない場合とは、ステップS32において、CM112から接続先ポート番号なし、または、異常という照合結果を受信している場合である。
(S34)誤接続判定部182は、ステップS27のチェックで両ポートを正常と判断したか否かを判定する。正常と判断している場合、処理をステップS35に進める。正常と判断していない場合、処理をステップS36に進める。ここで、ステップS27のチェックで両ポートを正常と判断している場合とは、ステップS27の判定により両ポートで取得した接続先ポート番号が一致している場合である。ただし、ステップS26でNoである場合も例外的に両ポートが正常と判断されたとみなす(すなわち、ステップS34をYesと判定する)。それ以外の場合は、両ポートが正常と判断されていない(すなわち、両ポートのうちの少なくとも何れかが異常と判断されている)ことになる。
(S35)誤接続判定部182は、他CM(CM112)の接続先ポート番号を2で割った商と、自CM(CM111)の接続先ポート番号を2で割った商とが一致するか否かを判定する。一致する場合、処理をステップS41に進める。一致しない場合、処理をステップS42に進める。ここで、図15では、この判定を「(他CM 接続先ポート番号)/2=(自CM 接続先ポート番号)/2?」と表記している。“/2”の演算は、2で割った商を取得する演算である(以降のステップでも同様である)。ステップS35の判定は、自CMが属するCE内の2つのCMで受信した接続先ポート番号が隣り合わせの値(連続する値)であるか否か(接続条件(4)を満たしているか否か)を判定していることに相当する。
(S36)誤接続判定部182は、他CM(CM112)の接続先ポート番号を2で割った商と、自CM(CM111)のポートP0で取得した接続先ポート番号を2で割った商とが一致するか否かを判定する。一致する場合、処理をステップS37に進める。一致しない場合、処理をステップS38に進める。ここで、図15では、この判定を「(他CM 接続先ポート番号)/2=(自CM ポート0接続先ポート番号)/2?」と表記している。ステップS36の判定は、自CMが属するCE内の2つのCMで受信した接続先ポート番号(CM111側はポートP0で受信した接続先ポート番号)が隣り合わせの値(連続する値)であるか否か(接続条件(4)を満たしているか否か)を判定していることに相当する。
(S37)誤接続判定部182は、ポート1(すなわち、ポートP1)を誤接続と判断する。ステップS36でYesの場合、ポートP0側の接続が正しいことが判明するからである。そして、処理を終了する。
(S38)誤接続判定部182は、他CM(CM112)の接続先ポート番号を2で割った商と、自CM(CM111)のポートP1で取得した接続先ポート番号を2で割った商とが一致するか否かを判定する。一致する場合、処理をステップS39に進める。一致しない場合、処理をステップS42に進める。ここで、図15では、この判定を「(他CM 接続先ポート番号)/2=(自CM ポート1接続先ポート番号)/2?」と表記している。ステップS38の判定は、自CMが属するCE内の2つのCMで受信した接続先ポート番号(CM111側はポートP1で受信した接続先ポート番号)が隣り合わせの値(連続する値)であるか否か(接続条件(4)を満たしているか否か)を判定していることに相当する。
(S39)誤接続判定部182は、ポート0(すなわち、ポートP0)を誤接続と判断する。ステップS38でYesの場合、ポートP1側の接続が正しいことが判明するからである。そして、処理を終了する。
(S40)誤接続判定部182は、ステップS27のチェックで両ポートを正常と判断したか否かを判定する。正常と判断している場合、処理をステップS41に進める。正常と判断していない場合、処理をステップS42に進める。ここで、ステップS27のチェックで両ポートを正常と判断している場合とは、ステップS27の判定により両ポートで取得した接続先ポート番号が一致している場合である。ただし、ステップS26でNoである場合も例外的に両ポートが正常と判断されたとみなす(すなわち、ステップS40をYesと判定する)。それ以外の場合は、両ポートが正常と判断されていない(すなわち、両ポートのうちの少なくとも何れかが異常と判断されている)ことになる。
(S41)誤接続判定部182は、ポート0,1(すなわち、ポートP0,P1)を正常接続と判断する。なお、ステップS26でNoである場合は、ポート0,1の何れか一方について、正常接続であると判断することになる。そして、処理を終了する。
(S42)誤接続判定部182は、ポート0,1(すなわち、ポートP0,P1)を誤接続と判断する。そして、処理を終了する。
このようにして、誤接続判定部182は、SVC121,122との接続が正常であるか否かの判定を行う。通知部183は、ポート毎の誤接続の有無を示す情報をSVC121,122に送信する。例えば、通知部183は、誤接続と判断されたポートに接続された接続先ポートに対して、当該ポートと接続先ポートとが誤って接続されている旨の情報を送信してもよい。また、通知部183は、正常な接続と判断されたポートに接続された接続先ポートに対して、当該ポートと接続先ポートとが正しく接続されている旨の情報を送信してもよい。次に、以上の手順によるCM111,121およびSVC121,122による処理の流れの例を説明する。
図16は、第2の実施の形態の処理を示すシーケンス例である。以下、図16に示す処理をステップ番号に沿って説明する。
(ST1)SVC121の電源がオンになる。SVC121は、SVC121のポートにCMが接続されていることを検出し、当該ポートから接続情報を送信する。接続情報には、SVC121のスロット番号および該当のポートのポート番号が含まれる。例えば、CM111,112は、SVC121から接続情報を受信する。
(ST2)SVC122の電源がオンになる。SVC122は、SVC122のポートにCMが接続されていることを検出し、当該ポートから接続情報を送信する。接続情報には、SVC122のスロット番号および該当のポートのポート番号が含まれる。例えば、CM111,112は、SVC122から接続情報を受信する。なお、ステップST1,ST2は、並列に行われてもよいし、逆の順番で行われてもよい。
(ST3)CM111は、接続条件(1),(2),(3)に基づき、SVC側のスロット番号、接続先ポート番号、CM111側の受信ポート番号、および、CM111のスロット番号を照合する。図14でも例示したように、CM111は、当該照合によって、何れかのポートの誤接続を検出することもある。
(ST4)CM112は、CM111と同様に、接続条件(1),(2),(3)に基づき、SVC側のスロット番号、接続先ポート番号、CM112側の受信ポート番号、および、CM112のスロット番号を照合する。図14でも例示したように、CM112は、当該照合によって、何れかのポートの誤接続を検出することもある。なお、ステップST3,4は、並列に行われてもよいし、逆の順番で行われてもよい。
(ST5)CM111は、ステップST3の照合結果をCM112に送信する。CM112は、ステップST4の照合結果をCM111に送信する。これにより、CE110に属するCM111,112において、ステップST3,4の照合結果が共有される。
(ST6)CM111は、CM111での接続先ポートの照合結果とCM112での接続先ポートの照合結果とから接続条件(4)に基づき、ポートP0,P1の誤接続の有無を判定する。図15でも例示したように、ステップST3で何れかのポートの誤接続を検出していなくても、ステップST6により、誤接続が検出されることもある。また、ステップST3で誤接続があることは検出できているが、誤接続のあるポートが何れであるかが不明である場合でも、ステップST6により、誤接続のあるポートを確定できることもある。
(ST7)CM112は、CM111と同様に、接続条件(4)に基づき、ポートP2,P3の誤接続の有無を判定する。図15でも例示したように、ステップST4で何れかのポートの誤接続を検出していなくても、ステップST7により、誤接続が検出されることもある。また、ステップST4で誤接続があることは検出できているが、誤接続のあるポートが何れであるかが不明である場合でも、ステップST7により、誤接続のあるポートを確定できることもある。なお、ステップST6,7は、並列に行われてもよいし、逆の順番で行われてもよい。
(ST8)CM111は、ポートP0,P1の誤接続の判定結果をSVC121,122に送信する。例えば、ポートP0がSVC121のポートPa0に接続されている場合、CM111は、ポートP0が誤接続されているか否かを示す情報をポートP0からポートPa0に送信する。例えば、ポートP1がSVC122のポートPb0に接続されている場合、CM111は、ポートP1が誤接続されているか否かを示す情報をポートP1からポートPa1に送信する。
(ST9)CM112は、ポートP2,P3の誤接続の判定結果をSVC121,122に送信する。例えば、ポートP2がSVC121のポートPa1に接続されている場合、CM112は、ポートP2が誤接続されているか否かを示す情報をポートP2からポートPa1に送信する。例えば、ポートP3がSVC122のポートPb1に接続されている場合、CM112は、ポートP3が誤接続されているか否かを示す情報をポートP3からポートPb1に送信する。
こうして、SVC121,122は、CM111,112からの判定結果を受信することで、SVC121,122とCM111,112との誤接続を認識する。SVC121,122は、誤接続がある場合には所定のエラー処理を行う。次に、誤接続の幾つかのパターンを例示して、誤接続検出の具体例を説明する。以下の説明では、図6で例示した正常な接続に対して、誤接続が存在するケースを例示する。以下の各図では、誤接続されたポートや接続されていないポートを主に説明するが、それ以外のポートについては図6で例示した接続になっているものとする。
図17は、第2の実施の形態の誤接続の例(その1)を示す図である。ポートP1とポートPanとが誤接続されている例である。誤接続されているケーブルを、図中では他のポート間を接続するケーブルを示す線よりも太い線で示している(以降の図でも同様)。
この場合、CM111は、SVC121のスロット番号“0”、ポートPa0のポート番号“0”を、ポートP0により受信する。また、CM111は、SVC121のスロット番号“0”、ポートPanのポート番号“n”を、ポートP1により受信する。
図18は、第2の実施の形態の誤接続判定の例(その1)を示す図である。テーブルT11は、図17の接続においてCM111,112,111a,112a側の各ポートでSVC121,122から取得される接続情報の一覧を示している。
テーブルT11において、“CE0”はCE110に相当する。“CE1”はCE110aに相当する。“CE0”の“スロット#0”は、CM111に相当する。CM111の“ポート0”はポートP0である。CM111の“ポート1”はポートP1である。“CE0”の“スロット#1”は、CM112に相当する。CM112の“ポート0”はポートP2である。CM112の“ポート1”はポートP3である。“CE1”の“スロット#0”は、CM111aに相当する。CM111aの“ポート0”はポートP4である。CM111aの“ポート1”はポートP5である。“CE1”の“スロット#1”は、CM112aに相当する。CM112aの“ポート0”はポートP6である。CM112aの“ポート1”はポートP7である。以降の図でも同様に表記することがある。
前述のように、図17の例では、ポートP1に対して、SVCスロット番号が“0”、SVCポート番号(接続先ポート番号)が“n”となる。この場合、ポートP1のポート番号“1”と、SVCスロット番号“0”とが一致していない(該当の不適合箇所を網掛けで示している)。すなわち、ポートP1は、接続条件(1)を満たしていない。よって、CM111は、ポートP1を誤接続されていると判定する。
図19は、第2の実施の形態の誤接続の例(その2)を示す図である。ポートP4とポートPa(n+1)とが誤接続されている例である。この場合、CM111aは、SVC121のスロット番号“0”、ポートPa(n+1)のポート番号“n+1”を、ポートP4により受信する。また、CM111aは、SVC122のスロット番号“1”、ポートPb2のポート番号“2”をポートP5により受信する。
図20は、第2の実施の形態の誤接続判定の例(その2)を示す図である。テーブルT12は、図19の接続においてCM111,112,111a,112a側の各ポートでSVC121,122から取得される接続情報の一覧を示している。
前述のように、図19の例では、ポートP4に対して、SVCスロット番号が“0”、SVCポート番号(接続先ポート番号)が“n+1”となる。この場合、ポートP4のポート番号“0”と、SVCスロット番号“0”とが一致する。したがって、CM111aは、ポートP4について接続条件(1)を満たすと判断する。
次に、CM111aは、CM111aのスロット番号“0”と、ポートP4の接続先ポートであるポートPa(n+1)のポート番号(接続先ポート番号)“n+1”とを比較する。CM111aは、CM111aがCE110a内の偶数スロットにあり、ポートP4の接続先ポート番号が奇数であり、両者の偶数/奇数が一致していないと判断する。すなわち、ポートP4は接続条件(2)を満たしていない。よって、CM111aは、ポートP4を誤接続されていると判定する。
図21は、第2の実施の形態の誤接続の例(その3)を示す図である。ポートP2とポートPa(n+1)とが誤接続されている例である。この場合、CM112は、SVC121のスロット番号“0”、ポートPa(n+1)のポート番号“n+1”を、ポートP2により受信する。また、CM112は、SVC122のスロット番号“1”、ポートPb1のポート番号“1”をポートP3により受信する。
図22は、第2の実施の形態の誤接続判定の例(その3)を示す図である。テーブルT13は、図21の接続においてCM111,112,111a,112a側の各ポートでSVC121,122から取得される接続情報の一覧を示している。
前述のように、図21の例では、ポートP2に対して、SVCスロット番号が“0”、SVCポート番号(接続先ポート番号)が“n+1”となる。この場合、ポートP2のポート番号“0”と、SVCスロット番号“0”とが一致する。したがって、CM112は、ポートP2について接続条件(1)を満たすと判断する。
次に、CM112は、CM112のスロット番号“1”と、ポートP2の接続先ポートであるポートPa(n+1)のポート番号(接続先ポート番号)“n+1”とを比較する。CM112は、CM112がCE110内の奇数スロットにあり、ポートP2の接続先ポート番号が奇数であり、両者が奇数で一致していると判断する。したがって、CM112は、ポートP2について接続条件(2)を満たすと判断する。CM112は、ポートP3についても同様に、接続条件(1),(2)を満たすと判断する。
次に、CM112は、ポートP2の接続先ポート番号“n+1”と、ポートP3の接続先ポート番号“1”とを比較し、両者が一致していないと判断する。このため、CM112は、ポートP2,P3が接続条件(3)を満たしていないと判断する。ただし、この段階では、CM112は、ポートP2,P3の何れが誤接続であるかを確定できていない。
そこで、CM112は、CM111による照合結果を取得する。CM111では、CM111の接続先ポート番号が“0”と正しく確定されている。この場合、CM112側の接続先ポート番号としては、CM111の接続先ポート番号“0”に隣り合う値である“1”が期待される。CM112は、ポートP3の接続先ポート番号が“1”であり、期待される接続先ポート番号“1”と一致するが、ポートP2の接続先ポート番号“n+1”が接続先ポート番号“1”と一致しないと判断する。すなわち、ポートP2,P3のうち、ポートP2のみが接続条件(4)を満たしていない。よって、CM112は、ポートP2を誤接続されていると判定する。また、CM112は、ポートP3を正常に接続されていると判定する。
なお、この場合、CM111は、CM111の接続先ポート番号を“0”と確定する。一方、CM112では、接続先ポート番号を確定できていない。このため、CM111は、ポートP0,P1の接続を正常と判定することになる。
図23は、第2の実施の形態の誤接続の例(その4)を示す図である。ポートP2とポートPa(n+1)とが誤接続され、ポートP3とポートPb(n+1)とが誤接続されている例である。この場合、CM112は、SVC121のスロット番号“0”、ポートPa(n+1)のポート番号“n+1”を、ポートP2により受信する。また、CM112は、SVC122のスロット番号“1”、ポートPb(n+1)のポート番号“n+1”を、ポートP3により受信する。
図24は、第2の実施の形態の誤接続判定の例(その4)を示す図である。テーブルT14は、図23の接続においてCM111,112,111a,112a側の各ポートでSVC121,122から取得される接続情報の一覧を示している。
前述のように、図23の例では、ポートP2に対して、SVCスロット番号が“0”、SVCポート番号(接続先ポート番号)が“n+1”となる。また、ポートP3に対して、SVCスロット番号が“1”、SVCポート番号(接続先ポート番号)が“n+1”となる。
この場合、ポートP2のポート番号“0”と、SVCスロット番号“0”とが一致する。したがって、CM112は、ポートP2について接続条件(1)を満たすと判断する。また、ポートP3のポート番号“1”と、SVCスロット番号“1”とが一致する。したがって、CM112は、ポートP3について接続条件(1)を満たすと判断する。
次に、CM112は、CM112のスロット番号“1”と、ポートP2の接続先ポートであるポートPa(n+1)のポート番号(接続先ポート番号)“n+1”とを比較する。CM112は、CM112がCE110内の奇数スロットにあり、ポートP2の接続先ポート番号が奇数であり、両者が奇数で一致していると判断する。したがって、CM112は、ポートP2について接続条件(2)を満たすと判断する。
同様に、CM112は、CM112のスロット番号“1”と、ポートP3の接続先ポートであるポートPb(n+1)のポート番号(接続先ポート番号)“n+1”とを比較する。CM112は、CM112がCE110内の奇数スロットにあり、ポートP3の接続先ポート番号が奇数であり、両者が奇数で一致していると判断する。したがって、CM112は、ポートP3について接続条件(2)を満たすと判断する。
次に、CM112は、ポートP2の接続先ポート番号“n+1”と、ポートP3の接続先ポート番号“n+1”とを比較し、両者が一致していると判断する。このため、CM112は、ポートP2,P3が接続条件(3)を満たすと判断する。
更に、CM112は、CM111による照合結果を取得して、ポートP2,P3の誤接続の有無を判定する。CM111では、CM111の接続先ポート番号が“0”と確定されている。この場合、CM112側の接続先ポート番号としては、CM111の接続先ポート番号“0”に隣り合う値である“1”が期待される。
CM112は、ポートP2,P3の接続先ポート番号が“n+1”であり、期待される接続先ポート番号“1”と一致しないと判断する。すなわち、ポートP2,P3は接続条件(4)を満たしていない。よって、CM112は、ポートP2,P3を誤接続されていると判定する。
このとき、CM111も、CM112と同様に、ポートP0,P1の誤接続の有無を判定することになる。CM112では、CM112の接続先ポート番号が“n+1”と確定されている。この場合、CM111側の接続先ポート番号としては、CM112の接続先ポート番号“n+1”に隣り合う値である“n”が期待される。
CM111は、ポートP0,P1の接続先ポート番号が“0”であり、期待される接続先ポート番号“n”と一致しないと判断する。すなわち、ポートP0,P1は接続条件(4)を満たしていない。よって、CM111は、ポートP0,P1を誤接続されていると判定する。したがって、この場合、CE110内の全てのポートP0,P1,P2,P3が誤接続されていると判定されることになる。
図25は、第2の実施の形態の誤接続の例(その5)を示す図である。ポートP2とポートPa(n+1)とが誤接続され、ポートP3がSVC121,122の何れとも接続されていない例である。この場合、CM112は、SVC121のスロット番号“0”、ポートPa(n+1)のポート番号“n+1”を、ポートP2により受信する。また、CM112は、ポートP3では接続情報を受信しない。
図26は、第2の実施の形態の誤接続判定の例(その5)を示す図である。テーブルT15は、図25の接続においてCM111,112,111a,112a側の各ポートでSVC121,122から取得される接続情報の一覧を示している。
前述のように、図25の例では、ポートP2に対して、SVCスロット番号が“0”、SVCポート番号(接続先ポート番号)が“n+1”となる。また、ポートP3に対して、SVCスロット番号がなし“−(ハイフン)”、SVCポート番号(接続先ポート番号)がなし“−”となる。
この場合、ポートP2のポート番号“0”と、SVCスロット番号“0”とが一致する。したがって、CM112は、ポートP2について接続条件(1)を満たすと判断する。
次に、CM112は、CM112のスロット番号“1”と、ポートP2の接続先ポートであるポートPa(n+1)のポート番号(接続先ポート番号)“n+1”とを比較する。CM112は、CM112がCE110内の奇数スロットにあり、ポートP2の接続先ポート番号が奇数であり、両者が奇数で一致していると判断する。したがって、CM112は、ポートP2について接続条件(2)を満たすと判断する。
ここで、ポートP3については、接続情報を取得していないので、CM112は、ポートP2,P3に対して接続条件(3)に基づく照合をスキップする。この場合、CM112は、CM112の接続先ポート番号をポートP2で取得した接続先ポート番号“n+1”と確定する。
更に、CM112は、CM111による照合結果を取得して、ポートP2の誤接続の有無を判定する。CM111では、CM111の接続先ポート番号が“0”と確定されている。この場合、CM112側の接続先ポート番号としては、CM111の接続先ポート番号“0”に隣り合う値である“1”が期待される。
CM112は、ポートP2の接続先ポート番号が“n+1”であり、期待される接続先ポート番号“1”と一致しないと判断する。すなわち、ポートP2は接続条件(4)を満たしていない。よって、CM112は、ポートP2を誤接続されていると判定する。
このとき、CM111も、CM112と同様に、CM112による照合結果を取得して、ポートP0,P1の誤接続の有無を判定することになる。CM112では、CM112の接続先ポート番号が“n+1”と確定されている。この場合、CM111側の接続先ポート番号としては、CM112の接続先ポート番号“n+1”に隣り合う値である“n”が期待される。
CM111は、ポートP0,P1の接続先ポート番号が“0”であり、期待される接続先ポート番号“n”と一致しないと判断する。すなわち、ポートP0,P1は接続条件(4)を満たしていない。よって、CM111は、ポートP0,1を誤接続されていると判定する。したがって、この場合、CE110内の全てのポートP0,P1,P2が誤接続されていると判定されることになる。
このように、ストレージシステム100では、CM−SVC間のケーブル接続に対し、各CMが自CMでの接続先ポート番号の照合結果と同CE内の他CMでの接続先ポート番号の照合結果とを基に、他CMの接続先ポートに対する自CMの接続先ポートの正否を判断する。これにより、各CMは、自CMとSVCとのケーブル接続について、正しいか否かを適切に検出することができる。
ところで、第2の実施の形態で例示したように、各SVCと各CMとをケーブルによって接続する方法の他にも、2つのSVCと複数のCMとを1つのCEの中に組み込むことも考えられる。例えば、CEが備えるバックパネルの各スロットにSVCおよびCMをはめ込む。この場合、SVCは、バックパネルのスロットIDに応じてCMのIDを決定し得る。ところが、この方法では、バックパネルのサイズ(スロット数)により搭載CM数が制限されてしまう。そこで、第2の実施の形態のように、例えば2つのCMを冗長化したサブシステムとしてCEを、2つのSVCを冗長化したサブシステムとしてFEを設け、FEと複数のCE間をケーブルにより接続することで、CMの拡張性を向上できる。
しかし、この場合、ケーブルの誤接続が問題となる。誤接続があると、ストレージシステム100内の装置間の接続に矛盾が発生した状態で各装置が起動されるおそれがある。例えば、誤接続チェックの方法として、工場出荷試験の段階で正常に接続した状態で各装置を起動させ、監視機能をもつSVCで接続されているCMのシリアル番号の情報をSVCのポート番号に対応付けて記録しておくことが考えられる。この場合、次回以降のCM起動時のCM−SVC間の疎通確認において、ポート毎の接続先のCMのシリアル番号を、記録されているシリアル番号と比較して、一致していなければ誤接続と認識する。
ところが、この方法では、工場出荷試験で誤接続された状態で装置を起動した場合、SVCに異常な接続状態のCMのシリアル番号が記録されてしまい、装置出荷後に誤接続を適正に検出できないという問題がある。更に、出荷後に、SVCが保守部品(例えば、予備のSVC)に非活電で(電源オフ状態で)交換されてしまった場合に、交換後の部品に上記シリアル番号の情報が引き継がれず、誤接続を検出できなくなるおそれがある。このように、事前に取得しておいた接続先のシリアル番号の情報を利用する方法では、当該情報に依存することになり、当該情報が不正確であったり、当該情報が失われたりした場合に、適切な接続チェックが困難になり得る。更に、比較対象をCMのシリアル番号とすると、誤接続の検出対象がCM単位となり、ポート単位での誤接続を検出することもできない。
そこで、ストレージシステム100では、CM−SVC間のケーブルによるポート毎の接続が、ストレージシステム100内の接続条件に合致しているか否かによって、誤接続を検出する。特に、CM単位でのポート番号やスロット番号の照合に加えて、同一CE内に属するCM間での接続先ポート番号の照合を行うことで、CM−SVC間の誤接続を適正に検出可能となる。例えば、図25のように、あるCM(例えば、CM112)で、一部のポートがSVCと接続されていなくても、相手のCM(例えば、CM111)の照合結果との対比によって、誤接続を検出できる。
なお、第2の実施の形態の接続判定の方法は、例えば、冗長化された2つのユニット(CM111,112に対応する2つのユニット)それぞれを2つの接続先装置に接続する他の接続構成に適用することもできる。
また、第1の実施の形態の情報処理は、制御部11bや制御部12bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ171にプログラムを実行させることで実現できる。制御装置11は、記憶部11a(例えば、メモリ)と制御部11b(例えば、プロセッサ)とを有するコンピュータを含むといえる(他の制御装置も同様)。また、CM111は、RAM172とプロセッサ171とを有するコンピュータを含むといえる(他のCMも同様)。プログラムは、コンピュータ読み取り可能な記録媒体33に記録できる。
例えば、プログラムを記録した記録媒体33を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータ(例えば、運用サーバ200)に格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体33に記録されたプログラムまたは他のコンピュータから受信したプログラムを、MRAM153やRAM172などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
以上の第1,第2の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) ストレージシステムに複数搭載可能であり、ストレージへのデータアクセスを制御する制御装置であって、
接続先装置が備える複数の接続先ポートとケーブルで接続可能な複数の第1ポートと、
前記複数の第1ポートと前記複数の接続先ポートのポート番号との第1の照合結果、および、自制御装置が属するサブシステム内の他の制御装置が備える複数の第2ポートと前記複数の接続先ポートのポート番号との第2の照合結果に基づいて、前記複数の第1ポートと前記複数の接続先ポートとの接続が正常であるか否かを判定する制御部と、
を有する制御装置。
(付記2) 前記第1の照合結果は、自制御装置に対する接続先ポートの第1のポート番号を含み、
前記第2の照合結果は、前記他の制御装置に対する接続先ポートの第2のポート番号を含み、
前記制御部は、前記第1のポート番号と前記第2のポート番号との比較に応じて、前記第2のポート番号に対し、前記第1のポート番号が自制御装置の接続先ポートのポート番号として正しいか否かを判定する、
付記1記載の制御装置。
(付記3) 前記制御部は、前記第1および前記第2のポート番号が隣り合う値である場合に前記第1のポート番号が自制御装置の接続先ポートのポート番号として正しいと判定し、前記第1および前記第2のポート番号とが隣り合う値でない場合に前記第1のポート番号が自制御装置の接続先ポートのポート番号として正しくないと判定する、付記2記載の制御装置。
(付記4) 前記接続先装置は、接続先ポートを複数備えた複数の接続部を有し、
前記制御部は、何れかの接続先ポートに接続されている第1ポートのポート番号と、当該接続先ポートが属する接続部の前記接続先装置における搭載位置を示すスロット番号との比較により当該接続先ポートと前記第1ポートとの誤接続の検出を行い、当該比較により誤接続が検出されない場合に当該接続先ポートのポート番号に基づいて前記第1のポート番号を決定する、付記2または3記載の制御装置。
(付記5) 前記制御部は、前記第1ポートのポート番号と前記接続部のスロット番号とが一致する場合に前記接続先ポートと前記第1ポートとの誤接続を検出せず、前記第1ポートのポート番号と前記接続部のスロット番号とが一致しない場合に当該誤接続を検出する、付記4記載の制御装置。
(付記6) 前記制御部は、前記サブシステムにおける自制御装置の搭載位置を示すスロット番号と前記第1ポートに接続されている接続先ポートのポート番号との比較により当該接続先ポートと前記第1ポートとの誤接続の検出を行い、当該比較により誤接続が検出されない場合に当該接続先ポートのポート番号に基づいて前記第1のポート番号を決定する、付記2乃至5の何れか1つに記載の制御装置。
(付記7) 前記制御部は、自制御装置のスロット番号と前記接続先ポートのポート番号とが偶数または奇数で一致する場合に前記接続先ポートと前記第1ポートとの誤接続を検出せず、自制御装置のスロット番号と前記接続先ポートのポート番号とが偶数または奇数で一致しない場合に当該誤接続を検出する、付記6記載の制御装置。
(付記8) 前記制御部は、前記複数の第1ポートそれぞれに接続された各接続先ポートのポート番号の比較に応じて前記第1のポート番号を決定する、付記2乃至7の何れか1つに記載の制御装置。
(付記9) 前記制御部は、前記各接続先ポートのポート番号が一致する場合に当該ポート番号を前記第1のポート番号と決定し、前記各接続先ポートのポート番号が一致しない場合に異なる当該ポート番号それぞれを前記第1のポート番号と決定して異なる当該ポート番号それぞれを前記第2のポート番号との比較対象とする、付記8記載の制御装置。
(付記10) 前記サブシステムは、複数の制御装置が冗長化されたシステムである、付記1乃至9の何れか1つに記載の制御装置。
(付記11) 複数の接続先ポートを備える接続先装置と、
前記複数の接続先ポートとケーブルで接続可能な複数の第1ポートを備える第1の制御装置、および、前記複数の接続先ポートとケーブルで接続可能な複数の第2ポートを備える第2の制御装置を含むサブシステムと、を有し、
前記第1の制御装置は、前記複数の第1ポートと前記複数の接続先ポートのポート番号との第1の照合結果、および、前記第2の制御装置による前記複数の第2ポートと前記複数の接続先ポートのポート番号との第2の照合結果に基づいて、前記複数の第1ポートと前記複数の接続先ポートとの接続が正常であるか否かを判定する、
ストレージシステム。
(付記12) ストレージシステムに複数搭載可能であり、ストレージへのデータアクセスを制御する制御装置に用いられるコンピュータに、
接続先装置が備える複数の接続先ポートとケーブルで接続可能であり、前記制御装置が備える複数の第1ポートと、前記複数の接続先ポートのポート番号との第1の照合結果、および、前記制御装置が属するサブシステム内の他の制御装置が備える複数の第2ポートと前記複数の接続先ポートのポート番号との第2の照合結果に基づいて、前記複数の第1ポートと前記複数の接続先ポートとの接続が正常であるか否かを判定する、
処理を実行させるプログラム。