(57)【特許請求の範囲】
【請求項１】
相互に通信可能な複数の制御モジュールを含む情報処理装置であって、
各制御モジュールは、他の各制御モジュールとの間の通信において発生したエラーの状況を反映した状況情報を、通信先の制御モジュール及び／又は自制御モジュールそれぞれについて記憶するメモリを有し、
前記各制御モジュールは、他の各制御モジュールとの間の通信においてエラーが発生した際に、発生したエラーの種類を判別し、
前記各制御モジュールは、前記判別されたエラーの種類に応じた値を前記状況情報に加算し、
前記複数の制御モジュールのうち、ある制御モジュールに障害が発生しているか否かを判定する判定対象制御モジュールとは異なる制御モジュールは、判定対象制御モジュールとは異なる２以上の制御モジュールのメモリ上に記憶されている当該判定対象制御モジュールの状況情報に基づいて、当該判定対象制御モジュールに障害が発生しているか否かを判定する
ことを特徴とする情報処理装置。
【請求項２】
前記複数の制御モジュールは、マスター制御モジュールとして動作するマスターモジュールと、次期マスター制御モジュールとして動作する次期マスターモジュールと、それぞれ、スレーブ制御モジュールとして動作する複数のスレーブモジュールとを含み、
前記マスターモジュールに障害が発生しているか否かを判定する際に、次期マスターモジュールが、自モジュール内のメモリ上の前記マスターモジュールの状況情報と前記スレーブモジュールから通知された前記マスターモジュールの状況情報とに基づいて、前記マスターモジュールに障害が発生しているか否かを判定する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記マスターモジュールは、
他の各制御モジュールとの間の通信において発生したエラーの種類に基づき、自モジュール内の前記メモリ上の、通信先の制御モジュールについての状況情報及び／又は自モジュールについての状況情報を更新する第１更新処理と、
次期マスターモジュール及び各スレーブモジュールから送信されてくる各制御モジュ
ールについての状況情報の値を、自モジュール内の前記メモリ上の、各制御モジュールについての状況情報の値に加算する第１加算処理と、
自モジュール内のメモリ上の状況情報の値が、第１所定値以上となった場合に、スレーブモジュール又は次期マスターモジュールに障害が発生したと判定する第１判定処理と、
を行い、
各スレーブモジュールは、
前記第１更新処理と、
自モジュール内のメモリ上のいずれかのスレーブモジュール又は次期マスターモジュールの状況情報の値が、前記第１所定値よりも小さな第２所定値以上となった場合に、当該メモリ上の各制御モジュールの状況情報を前記マスターモジュールに送信し、当該メモリ上の前記マスターモジュールについての状況情報の値が前記第２所定値以上となった場合に、当該メモリ上の前記マスターモジュールについての状況情報を前記次期マスターモジュールに送信する第１送信処理と、
を行い、
次期マスターモジュールは、
前記第１更新処理と、
自モジュール内のメモリ上のいずれかのスレーブモジュール又は自モジュールの状況情報の値が前記第２所定値以上となった場合に、当該メモリ上の各制御モジュールの状況情報の値を前記マスターモジュールに送信する第２送信処理と、
各スレーブモジュールから通知された前記マスターモジュールの状況情報の値を自モジュール内のメモリ上の前記マスターモジュールの状況情報の値に加算する第２加算処理と、
自モジュール内の前記メモリ上の前記マスターモジュールの状況情報の値が第３所定値以上となった場合に、前記マスターモジュールに障害が発生したと判定する第２判定処理と、
を行う
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
各制御モジュールは、前記複数の制御モジュールの識別情報及び動作状況に基づき、自モジュールが、前記マスターモジュール、前記次期マスターモジュール、前記スレーブモジュールのいずれであるかを把握し、把握したモジュールとして動作する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２判定処理が、
自モジュール内の前記メモリ上の前記マスターモジュールについての状況情報の値が前記第３所定値以上となった場合、前記マスターモジュールとの間の通信を試み、当該通信に成功し、且つ、所定期間内における当該通信の成功回数が所定回数未満であった場合には、前記マスターモジュールに障害が発生しているか否かを判定し、当該通信に失敗した場合と、所定期間内における当該通信の成功回数が所定回数以上となった場合とには、前記マスターモジュールに障害が発生したと判定する処理である
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記次期マスターモジュールは、さらに、前記マスターモジュールについての状況情報の受信回数をスレーブモジュール別に計数して管理する計数・管理処理を、行い、
前記第２判定処理が、
自モジュール内の前記メモリ上の前記マスターモジュールについての状況情報の値が第３所定値以上となった場合、前記計数・管理処理により管理されている複数のスレーブモジュールについての受信回数が“１”以上となっているか否かを判断し、複数のスレーブモジュールについての受信回数が“１”以上となっていた場合に限り、前記マスターモジ
ュールに障害が発生したと判定する処理である
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項７】
相互に通信可能な複数の制御モジュールの動作状態を監視する動作状態監視方法であって、
各制御モジュールは、他の各制御モジュールとの間の通信において発生したエラーの状況を反映した状況情報を、通信先の制御モジュール及び／又は自制御モジュールそれぞれについて記憶するメモリを有し、
前記各制御モジュールは、他の各制御モジュールとの間の通信においてエラーが発生した際に、発生したエラーの種類を判別し、
前記各制御モジュールは、前記判別されたエラーの種類に応じた値を前記状況情報に加算し、
前記複数の制御モジュールのうち、ある制御モジュールに障害が発生しているか否かを判定する判定対象制御モジュールとは異なる制御モジュールは、判定対象制御モジュールとは異なる２以上の制御モジュールのメモリ上に記憶されている当該判定対象制御モジュールの状況情報に基づいて、当該判定対象制御モジュールに障害が発生しているか否かを判定する
ことを特徴とする動作状態監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互に通信可能な複数の制御モジュールを含む情報処理装置と、相互に通信可能な複数の制御モジュールの動作状態を監視する動作状態監視方法とに、関する。
【背景技術】
【０００２】
情報処理装置の中には、相互に通信可能な複数の制御モジュールを含み、或る制御モジュールが故障した場合、その制御モジュールを他の部分から切り離して動作し続ける装置が、存在している。
【０００３】
そのような情報処理装置は、通常、いずれの部品（制御モジュール、制御モジュール内の回路等）が故障したのかを、１つのモジュール（制御モジュールあるいは状態監視用のモジュール）が判定（決定）するものとなっている。ただし、１つのモジュールが各部品が故障したか否かを判定する装置では、当該モジュールが故障した場合、『実際には正常な部品が、故障したと誤判定されて切り離される』、『故障した部品が切り離されないが故に、装置が正常に機能しなくなる』といったようなことが生じ得る。そのため、複数の制御モジュールのそれぞれが、各部品の状態を監視し、特定の制御モジュールが、全制御モジュールの監視結果に基づき故障部品がいずれであるかを判定する情報処理装置（以下、従来装置と表記する。）が開発されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２４９７４１号公報
【特許文献２】特開平１１−２４９９３１号公報
【特許文献３】特開２００１−７８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記した従来装置は、特定の制御モジュール（以下、マスター制御モジュールと表記する）が故障したか否かを、マスター制御モジュールとの間の通信に失敗した制御モジュール（以下、送信元モジュールと表記する）が、単独で判定する装置となっている。すなわち、従来装置は、マスター制御モジュールとの通信に失敗した原因が送信元モジュール側の故障であっても、当該故障を送信元モジュールが認識できない場合には、マスター制御モジュールが故障していると誤判定されて切り離される装置となっている。
【０００６】
そこで、１つの側面では、本発明は、相互に通信可能な複数の制御モジュールの状態をより正確に判定することを目的とする。
【課題を解決するための手段】
【０００７】
開示の技術の一態様の情報処理装置は、
相互に通信可能な複数の制御モジュールを含む情報処理装置であって、
各制御モジュールは、他の各制御モジュールとの間の通信において発生したエラーの状況を反映した状況情報を、通信先の制御モジュール及び／又は自制御モジュールそれぞれについて記憶するメモリを有し、
前記複数の制御モジュールのうち、ある制御モジュールに障害が発生しているか否かを判定する際に、判定対象制御モジュールとは異なる制御モジュールが、当該判定対象制御モジュールとは異なる２以上の制御モジュールのメモリ上に記憶されている当該判定対象制御モジュールの状況情報に基づいて、当該判定対象制御モジュールに障害が発生してい
るか否かを判定する。
【０００８】
また、開示の技術の一態様の動作状態監視方法は、
相互に通信可能な複数の制御モジュールの動作状態を監視する動作状態監視方法であって、
各制御モジュールは、他の各制御モジュールとの間の通信において発生したエラーの状況を反映した状況情報を、通信先の制御モジュール及び／又は自制御モジュールそれぞれについて記憶するメモリを有し、
前記複数の制御モジュールのうち、ある制御モジュールに障害が発生しているか否かを判定する際に、判定対象制御モジュールとは異なる制御モジュールが、当該判定対象制御モジュールとは異なる２以上の制御モジュールのメモリ上に記憶されている当該判定対象制御モジュールの状況情報に基づいて、当該判定対象制御モジュールに障害が発生しているか否かを判定する。
【発明の効果】
【０００９】
１実施形態によれば、相互に通信可能な複数の制御モジュールの状態をより正確に判定することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る情報処理装置を用いて構築されるストレージシステムの構成例の説明図
【図２】第１実施形態に係る情報処理装置が備えるＣＭの概略構成図
【図３】各ＣＭが実行するマスターＣＭ特定処理の流れ図
【図４】各スレーブＣＭが通信エラー発生時に実行するスレーブＣＭ用エラー処理の流れ図
【図５】各ＣＭが備える状況値テーブルの説明図
【図６】各ＣＭが保持する加点情報の説明図
【図７】マスターＣＭが通信エラー発生時に実行するマスターＣＭ用エラー処理の流れ図
【図８】マスターＣＭが状況値テーブル受信時に実行するテーブル受信時用処理の流れ図
【図９】次期マスターＣＭが状況値テーブル受信時に実行するテーブル受信時用処理の流れ図
【図１０】次期マスターＣＭが実行する生存確認処理の流れ図
【図１１】第１実施形態に係る情報処理装置の、スレーブＣＭが故障した場合の動作内容の説明図
【図１２】第１実施形態に係る情報処理装置の、マスターＣＭが故障した場合の動作内容の説明図
【図１３】第２実施形態に係る情報処理装置内の次期マスターＣＭが状況値テーブル受信時に実行するテーブル受信時用処理の流れ図
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照して詳細に説明する。尚、以下で説明する第１、第２実施形態は、本発明の一例に過ぎず、本発明は、各実施形態とは具体的な構成／手順が異なる形でも実現することができるものである。
【００１２】
《第１実施形態》
まず、図１及び図２を用いて、第１実施形態に係る情報処理装置１０の使用形態、ハードウェア構成及び基本的な動作（機能）を説明する。尚、図１は、情報処理装置１０を用いることにより構築できるストレージシステムの構成例の説明図である。また、図２は、
情報処理装置１０が備える各ＣＭ（Controller Module；制御モジュール）１１の概略構
成図である。
【００１３】
本実施形態に係る情報処理装置１０は、図１に示したようなストレージシステムを構築するための装置である。
【００１４】
このストレージシステム内の各ＤＥ（Drive Enclosure）１６は、ドライブ（ハードデ
ィスクドライブ又はソリッドステートドライブ）を規定台数まで装着可能な本体ユニットに、複数台（規定台数以下）のドライブを装着したユニットである。各ＥＸＰ（エクスパンダ）１５は、ＣＭ１１・ＤＥ１６間を接続するための多ポートスイッチ（本実施形態では、ＳＡＳ(Serial Attached SCSI(Small Computer System Interface)）エクスパンダ）である。ストレージシステムの構築時、情報処理装置１０と複数のＤＥ１６との間には、通常、情報処理装置１０内の各ＣＭ１１を、任意の（全ての）ＤＥ１６に接続できる数及び仕様（ポート数）のＥＸＰ１５が設けられる。
【００１５】
情報処理装置１０は、ストレージシステム内（複数のＥＸＰ１５を介して自身と接続されている複数のＤＥ１６内）の全ドライブを、複数のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）として機能させる装置である。
【００１６】
図１に示してあるように、情報処理装置１０は、８個のＣＭ１１と４個のＦＲＴ（Front-end Router）１２とを備えている。尚、図１には、８個のＣＭ１１が示してあるが、本情報処理装置１０は、各ＣＭ１１を着脱可能な、８個よりも少ない数のＣＭ１１のみを装着した形で運用することも出来る装置である。以下、情報処理装置１０内の各ＣＭ１１のことを、ＣＭ＃ｎ（ｎ＝０〜７）とも表記する。また、情報処理装置１０内の各ＦＲＴ１２のことを、ＦＲＴ＃ｍ（ｍ＝０〜３）とも表記する。
【００１７】
情報処理装置１０内の各ＣＭ１１は、各ＲＡＩＤ（任意のＲＡＩＤ）に対するリード／ライト要求をホスト（図示略）から受信し、受信したリード／ライト要求に応じた内容のリード／ライトアクセスを各ＲＡＩＤに対して行うモジュールである。尚、各ＣＭ１１が受信するリード／ライト要求は、正確には、“或るＲＡＩＤに対するリード／ライト要求”ではなく、“いずれかのＲＡＩＤに割り当てられている或る論理ボリュームに対するリード／ライト要求”である。
【００１８】
図２に示してあるように、ＣＭ１１は、４個のＤＭＡ（Direct Memory Access）ポート（図２では、“ＤＭＡ”）２１、４個のＣＡ（Channel Adapter）２２及び４個のＩＯＣ
（Input/Output Controller）２３を備えている。また、ＣＭ１１は、２個のＣＰＵ（Central Processing Unit）２４、メモリコントローラ２５及びメモリ２６を備えている。さらに、ＣＭ１１は、ＩＰＬ（Initial Program Loader）等を記憶したＲＯＭ（Read Only Memory；図示略）、キャッシュメモリ（図示略）も備えている。
【００１９】
各ＣＡ２２は、ホストと通信を行うためのインタフェースユニットである。ＣＭ１１の実現時、ＣＡ２２としては、ＦＣ（Fibre Channel）、ｉＳＣＳＩ(Internet Small Computer System Interface)、ＳＡＳ等のプロトコルで通信を行うものが使用される。また、
ストレージシステムを利用するホストとしては、通常、ストレージシステム（情報処理装置１０）と通信を行うためのインタフェースアダプタを複数個備えたものが使用される。そして、各ホストの各インタフェースアダプタが異なるＣＭ１１と通信可能なように、各ＣＭ１１内の各ＣＡ２２と各サーバとの間が、直接又はスイッチ（ＦＣスイッチ、ＬＡＮ（Local Area Network）スイッチ、ＳＡＳスイッチ）を介して接続される。
【００２０】
ＩＯＣ２３は、ＤＥ１６用のインタフェースコントローラ（本実施形態では、ＳＡＳコ
ントローラ）である。ＣＭ１１内の各ＩＯＣ２３は、通常、図１に示してあるように、複数個（本実施形態では、８個）のＥＸＰ１５を介して全てのＤＥ１５と接続される。
【００２１】
ＤＭＡポート２１（図２）は、ＣＭ１１間の通信用のインタフェースユニットである。ＣＭ１１内の各ＤＭＡポート２１は、多ポートスイッチであるＦＲＴ１２（ＦＲＴ＃０〜ＦＲＴ＃３のいずれか）に接続されている。以下、ＦＲＴ＃ｍ（ｍ＝０〜３）と接続されているＤＭＡポート２１のことを、ＤＭＡポート＃ｍとも表記する。
【００２２】
尚、本情報処理装置１０は、或るＣＭ１１が故障した際、当該ＣＭ１１が他の部分から切り離され（当該ＣＭ１１の使用が中止され）、当該ＣＭ１１が行っていた処理を他ＣＭ１１が引き継ぐ装置となっている。換言すれば、情報処理装置１０は、各ＣＭ１１（各ＣＭ１１内のＣＰＵ２４）が、他ＣＭ１１に自身が行っている処理の内容に関する情報を比較的に頻繁に通知する装置となっており、当該情報の通知に各ＤＭＡポート２１が利用される。
【００２３】
また、各ＣＭ１１は、通信を試みることによって他の各ＣＭ１１の状態が正常であるか否かをチェックする処理を、定期的に行うようにも構成（プログラミング）されている。この処理にも各ＤＭＡポート２１が利用される。
【００２４】
メモリ２６は、ＲＯＭ上のＩＰＬに従ってＣＰＵ２４がシステムディスクから読み出すプログラムの記憶領域、当該プログラムの作業領域、状況値テーブル２８の記憶領域（詳細は後述）等として使用されるＤＲＡＭ（Dynamic Random Access Memory）である。尚、システムディスクとは、ＣＰＵ２４がメモリ２６上に読み出して実行するプログラムを記憶した、ストレージシステム内の特定のＲＡＩＤのことである。
【００２５】
メモリコントローラ２５は、メモリ２６の制御や、ＣＭ１１内の各ユニット間（メモリ２６とＤＭＡポート２１との間等）の接続制御を行うユニットである。
【００２６】
以下、本実施形態に係る情報処理装置１０の動作（機能）を具体的に説明する。尚、本実施形態に係る情報処理装置１０は、マスターＣＭ（詳細は後述）が故障したか否かの判定手順に特に特徴があるものとなっている。そのため、以下では、当該判定手順に関連する動作を中心に、情報処理装置１０の動作を説明する。
【００２７】
情報処理装置１０内の各ＣＭ１１は、起動されると、図３に示した手順のマスターＣＭ特定処理を実行する。
【００２８】
すなわち、起動されたため、このマスターＣＭ特定処理を開始したＣＭ１１は、まず、全ＣＭ１１の名称（識別情報）を各ＣＭ１１の優先順位順に並べたリストであるＣＭリストを作成する（ステップＳ１０１）。ここで、“全ＣＭ１１の名称を各ＣＭ１１の優先順位順に並べたリスト”（つまり、ＣＭリスト）とは、“全ＣＭ１１の名称を、優先順位がより高いＣＭ１１の名称の方がより先頭側に位置するように並べたリスト”のことである。また、各ＣＭ１１の優先順位とは、主としてマスターＣＭ（及び次期マスターＣＭ）を決定できるようにすることを目的として各ＣＭ１１に予め割り当てられている優先順位のことである。
【００２９】
ＣＭリストの作成を終えたＣＭ１１は、作成したＣＭリストから、最も先頭側の，未処理の名称（まだ読み出していない名称）を読み出す（ステップＳ１０２）。次いで、ＣＭ１１は、読み出した名称を有するＣＭ１１の状態をＤＭＡポート２１を利用した通信によりチェックする（ステップＳ１０３）。そして、ＣＭ１１は、チェックしたＣＭ１１の状態が異常（オフライン等）であった場合（ステップＳ１０３；異常）には、当該ＣＭ１１
の名称をＣＭリストから削除（ステップＳ１０４）してから、ステップＳ１０５の処理（判断）を実行する。また、ＣＭ１１は、チェックしたＣＭ１１の状態が正常であった場合（ステップＳ１０３；正常）には、ステップＳ１０４の処理を行うことなく、ステップＳ１０５の処理を実行する。
【００３０】
ステップＳ１０５にて、ＣＭ１１は、ＣＭリスト上の全名称に対する処理が完了した（今回、処理した名称が、ＣＭリストの末尾の名称である）か否かを判断する。そして、ＣＭ１１は、ＣＭリスト上の全名称に対する処理が完了していなかった場合（ステップＳ１０５；ＮＯ）には、ステップＳ１０２以降の処理を再び実行する。
【００３１】
ＣＭ１１は、ＣＭリスト上の全名称に対する処理が完了した場合（ステップＳ１０５；ＹＥＳ）には、その時点におけるＣＭリストの先頭の名称を有するＣＭ１１が、マスターＣＭであることを記憶する（ステップＳ１０６）。そして、ＣＭ１１は、このマスターＣＭ特定処理（図３の処理）を終了する。
【００３２】
マスターＣＭ特定処理を終えた各ＣＭ１１は、自身がマスターＣＭであった場合には、マスターＣＭとしての動作を開始し、自身がマスターＣＭではなかった場合には、スレーブＣＭとしての動作を開始する。
【００３３】
以下、スレーブＣＭとして動作している（スレーブＣＭとしての動作を開始している）各ＣＭ１１のことを、スレーブＣＭと表記し、マスターＣＭとして動作しているＣＭ１１のことを、マスターＣＭと表記する。
【００３４】
既に説明したように、情報処理装置１０内の各ＣＭ１１（マスターＣＭ又はスレーブＣＭ）は、ＤＭＡポート２１を利用して他ＣＭ１１に自身が行っている処理の内容に関する情報を比較的に頻繁に通知する。また、各ＣＭ１１は、ＤＭＡポート２１を利用して他の各ＣＭ１１に対する通信が可能であるか否かをチェックする処理も定期的に行う。
【００３５】
スレーブＣＭは、そのような通信時に通信エラーが発生した場合、図４に示した手順のスレーブＣＭ用エラー処理を実行する。
【００３６】
すなわち、他ＣＭ１１との通信時に通信エラーが発生した場合、スレーブＣＭは、まず、状況値テーブル２８上の、発生エラーの種類に応じた各被疑部品（故障した可能性がある部品）の状況値に、発生エラーに応じた値を加算する（ステップＳ２０１）。
【００３７】
ここで、状況値テーブル２８とは、各ＣＭ１１に関する状況値と、各ＣＭ１１内の各ＤＭＡポート２１に関する状況値とを記憶できるテーブルのことである。また、或る部品（ＣＭ１１、ＤＭＡポート２１）に関する状況値とは、エラーが発生している状況を示す値であり、発生したエラーの種別に対応して予め定められた点数の加算値である。
【００３８】
この状況値は、個々のＣＭ１１によって管理される。また、この状況値によって、当該部品が故障している蓋然性（確実性の度合：状況値／しきい値）を求めることができる。
【００３９】
なお、状況値テーブルの状況値の初期値は０であり、エラーが発生した場合に値が更新される。また、情報処理装置１０の電源のOFF/ONやＣＭ１１の再起動でも、状況値は０に初期化される。
【００４０】
以下、図５及び図６を用いて、ステップＳ２０１の処理の内容をさらに具体的に説明する。
【００４１】
各ＣＭ１１（スレーブＣＭ／マスターＣＭ）は、自ＣＭ１１内のメモリ２６上の特定の記憶領域を、図５に示したような形で状況値テーブル２８として使用する。尚、この図５において、“ＣＭ＃ｎ”（ｎ＝０〜７）と記されている１バイト分の記憶領域が、“ＣＭ＃ｎ”の状況値が記憶される領域である。また、“ＣＭ＃ｎＤＭＡｍ”（ｎ＝０〜７、ｍ＝０〜３）と記されている１バイト分の記憶領域が、ＣＭ＃ｎ内のＤＭＡポート＃ｍの状況値が記憶される領域である。
【００４２】
また、各ＣＭ１１は、発生エラー（他ＣＭ１１との通信時に発生した通信エラー）が、以下の５種類のエラーのいずれであるかを判別する機能を有している。
・ＣＭタイムアウト（ＣＭ間）：２ＣＭ１１間の通信タイムアウト
・ＣＭタイムアウト（ＣＰＵ間）：同一ＣＭ１１内の２ＣＰＵ２４間の通信タイムアウト・通信異常（自系側）：通信タイムアウト以外の、自ＣＭ１１側に問題があることが明らかな通信異常
・通信異常（対向側）：通信タイムアウト以外の、他ＣＭ１１（通信相手）側に問題があることが明らかな通信異常
・通信異常（被疑箇所不明）：通信タイムアウト以外の、自ＣＭ１１側、他ＣＭ１１側のいずれに問題があるかが不明な通信異常
【００４３】
さらに、各ＣＭ１１は、図６に示したような内容の加点情報、すなわち、各部品の状況値に加えるべき値（点数）を発生エラーの種類別に既定する加点情報を、保持している。そして、ステップＳ２０１の処理は、この加点情報に基づき、状況値テーブル２８上の、発生エラーの種類に応じた各被疑部品の状況値に、発生エラーに応じた値（加点情報中の点数）を加算する処理となっている。
【００４４】
尚、図６に示した加点情報において、点数が０となっている対応部品の状況値には、０を加算しても、０を加算しなくても良い。
【００４５】
図４に戻って、スレーブＣＭ用エラー処理の説明を続ける。
【００４６】
ステップＳ２０１の処理を終えたスレーブＣＭは、自身が、マスターＣＭの状態判定や切り離しを行う状態判定ＣＭとして動作しているか否かを判断する（ステップＳ２０２）。詳細については後述するが、状態判定ＣＭとして動作することがあるスレーブＣＭは、特定のスレーブＣＭ（後述する次期マスターＣＭ）だけである。また、当該特定のスレーブＣＭ（次期マスターＣＭ）は、特定の状況になった場合にのみ、状態判定ＣＭとして動作する。従って、スレーブＣＭは、通常、ステップＳ２０２の処理（判断）後に、ステップＳ２０５の処理を実行する。
【００４７】
ステップＳ２０５にて、スレーブＣＭは、ステップＳ２０１の処理で値を更新した各状況値について、状況値が転送しきい値を超えたか否かをチェックする。ここで、転送しきい値とは、加点情報（図６）中の大部分の点数よりも大きな値（通常、加点情報中の点数の最大値の２、３倍の値）となるように、予め定められる値のことである。
【００４８】
このステップＳ２０５の処理は、情報処理装置１０内の正常なＣＭ１１の数（以下、ＣＭ数と表記する）によって転送しきい値を変える処理となっている。具体的には、ステップＳ２０４の処理は、ＣＭ数≧４が成立している場合には、転送しきい値＝“４８”であるとして行われ、ＣＭ数≧４が成立していない場合には、転送しきい値＝“３２”であるとして行われる処理となっている。
【００４９】
ステップＳ２０５の処理を終えたスレーブＣＭは、状況値が転送しきい値を超えている部品（以下、転送しきい値超え部品と表記する）が存在していなかった場合（ステップＳ
２０６；ＮＯ）には、このスレーブＣＭ用エラー処理（図４の処理）を終了する。
【００５０】
一方、１個以上の転送しきい値超え部品が存在していた場合（ステップＳ２０６；ＹＥＳ）、スレーブＣＭは、マスターＣＭが転送しきい値超え部品である（いずれかの転送しきい値超え部品がマスターＣＭである）か否かを判断する（ステップＳ２０７）。
【００５１】
マスターＣＭが転送しきい値超え部品ではなかった場合（ステップＳ２０７；ＮＯ）、スレーブＣＭは、ステップＳ２０８にて、状況値テーブル２８（状況値テーブル２８上の全状況値）をマスターＣＭに転送する。その後、スレーブＣＭは、状況値テーブル２８をクリアする処理と、テーブルクリア時刻を、“現在時刻＋規定時間（例えば１分）”に更新する処理とを行う。ここで、“状況値テーブル２８をクリアする”とは、“状況値テーブル２８上の各状況値を“０”に書き換える”ということである。また、テーブルクリア時刻とは、その時刻になったときに、スレーブＣＭが状況値テーブル２８をクリアする時刻のことである。
【００５２】
スレーブＣＭは、ステップＳ２０８にて上記処理を行ってから、スレーブＣＭ用エラー処理を終了する。
【００５３】
スレーブＣＭ用エラー処理の残りの各ステップの内容を説明する前に、ここで、マスターＣＭの動作を説明しておくことにする。
【００５４】
マスターＣＭは、他ＣＭ１１との通信時に通信エラーが発生した場合、図７に示した手順のマスターＣＭ用エラー処理を実行する。
【００５５】
すなわち、他ＣＭ１１との通信時に通信エラーが発生した場合、マスターＣＭは、まず、自身のメモリ２６上の状況値テーブル２８上の、発生エラーの種類に応じた各被疑部品の状況値に発生エラーに応じた値を加算する処理（ステップＳ３０１）を行う。この処理は、図５や図６を用いて説明したステップＳ２０１の処理と同内容の処理である。
【００５６】
次いで、マスターＣＭは、状況値テーブル２８上の各状況値について、状況値が切り離ししきい値を超えているか否かをチェックする（ステップＳ３０２）。ここで、切り離ししきい値とは、上記した転送しきい値（本実施形態では、３２又は４８）よりも大きな値（通常、転送しきい値の数倍の値；例えば、１２８）となるように、予め定められる値のことである。
【００５７】
ステップＳ３０２の処理を終えたマスターＣＭは、状況値が切り離ししきい値を超えている部品（以下、切り離ししきい値超え部品と表記する）が存在しているか否かを判断する（ステップＳ３０３）。そして、マスターＣＭは、切り離ししきい値超え部品が存在していなかった場合（ステップＳ３０３；ＮＯ）には、このマスターＣＭ用エラー処理を終了する。
【００５８】
一方、１個以上の切り離ししきい値超え部品が存在していた場合（ステップＳ３０３；ＹＥＳ）、マスターＣＭは、自身が切り離ししきい値超え部品である（いずれかの切り離ししきい値超え部品が自ＣＭ１１である）か否かを判断する（ステップＳ３０４）。
【００５９】
自身が切り離ししきい値超え部品ではなかった場合（ステップＳ３０４；ＮＯ）、マスターＣＭは、ステップＳ３０５にて、各切り離ししきい値超え部品を他の部分から切り離すための処理を行う。具体的には、マスターＣＭは、このステップＳ３０５にて、各ＣＭ１１（各ＣＭ１１内のプログラム）の状態を、各切り離ししきい値超え部品を利用しない状態に移行させる処理や、切り離したＣＭ１１をホストに通知する処理等を行う。そして
、ステップＳ３０５の処理を終えたマスターＣＭは、このマスターＣＭ用エラー処理を終了する。
【００６０】
一方、自身が切り離ししきい値超え部品であった場合（ステップＳ３０４；ＹＥＳ）、マスターＣＭは、自身を他の部分から切り離すことなく、このマスターＣＭ用エラー処理を終了する。
【００６１】
また、既に説明したように（図４参照）、スレーブＣＭは、所定条件が満たされた場合、マスターＣＭに状況値テーブル２８を転送する。スレーブＣＭからの状況値テーブル２８を受信した場合、マスターＣＭは、図８に示した手順のテーブル受信時用処理を実行する。
【００６２】
すなわち、状況値テーブル２８を受信したマスターＣＭは、まず、受信した状況値テーブル２８中の各部品の状況値を、自身の状況値テーブル２８上の同部品の状況値に加算する（ステップＳ４０１）。
【００６３】
その後、マスターＣＭは、マスターＣＭ用エラー処理（図７）のステップＳ３０２〜Ｓ３０５の処理と全く同内容の処理（ステップＳ４０２〜Ｓ４０５）を行ってから、このテーブル受信時用処理を終了する。
【００６４】
マスターＣＭは、上記のような処理に加えて、自ＣＭ１１内の状況値テーブル２８を規定時間毎にクリアする処理も行う。
【００６５】
図４に戻って、スレーブＣＭ用エラー処理の説明を続ける。
【００６６】
スレーブＣＭは、マスターＣＭが転送しきい値超え部品であった場合（ステップＳ２０７；ＹＥＳ）には、ステップＳ２０９にて、次期マスターＣＭ特定処理を行う。
【００６７】
この次期マスターＣＭ特定処理は、マスターＣＭ特定処理（図３）と同手順で、マスタ−ＣＭを除いたＣＭ１１の中から最も優先順位が高い正常なＣＭ１１を探索し、探索したＣＭ１１を次期マスターＣＭとして特定する（探索したＣＭ１１が次期マスターＣＭであることを記憶する）処理である。
【００６８】
次期マスターＣＭ特定処理を終えたスレーブＣＭは、自身が次期マスターＣＭであるか否かを判断する（ステップＳ２１０）。そして、スレーブＣＭは、自身が次期マスターＣＭではなかった場合（ステップＳ２１０；ＮＯ）には、ステップＳ２１１にて、まず、状況値テーブル２８を次期マスターＣＭに転送する。そして、スレーブＣＭは、状況値テーブル２８をクリアする処理と、テーブルクリア時刻を“現在時刻＋規定時間”に更新する処理とを行ってから、ステップＳ２１１の処理及びスレーブＣＭ用エラー処理（図４の処理）を終了する。
【００６９】
一方、自身が次期マスターＣＭであった場合（ステップＳ２１０；ＹＥＳ）、スレーブＣＭは、ステップＳ２１２にて、生存確認実施回数を“０”に初期化し、実施回数クリア時刻に“現在時刻＋規定時間”を設定する処理を行う。さらに、スレーブＣＭは、このステップＳ２１２にて、状態判定ＣＭとしての動作を開始したこと（状態判定ＣＭとして動作していること）を記憶する処理も行う。尚、生存確認実施回数とは、後述する生存確認処理（図１０）の，既定時間内の実行回数を記憶しておくための変数のことである。また、実施回数クリア時刻とは、その時刻になったときに、状態判定ＣＭ（状態判定ＣＭとして動作している次期スレーブＣＭ）が、状況値テーブル２８をクリアして、通常のスレーブＣＭとしての動作を開始する時刻のことである。
【００７０】
ステップＳ２１２の処理を終えたスレーブＣＭ（状態判定ＣＭとしての動作を開始した次期マスターＣＭ；以下、単に、状態判定ＣＭとも表記する）は、このスレーブＣＭ用エラー処理を終了する。
【００７１】
状態判定ＣＭ（状態判定ＣＭとして動作している次期マスターＣＭ）も、他ＣＭ１１との通信時に通信エラーが発生した場合には、このスレーブＣＭ用エラー処理を開始する。そして、状態判定ＣＭは、ステップＳ２０１の処理を実行した後、自身が状態判定ＣＭとして動作している（ステップＳ２０２；ＹＥＳ）ため、ステップＳ２０５の処理ではなく、ステップＳ２０３の処理（判断）を実行する。
【００７２】
ステップＳ２０３にて、状態判定ＣＭは、自ＣＭ１１内の状況値テーブル２８上のマスターＣＭの状況値が、予め定められている生存確認しきい値（例えば、９６）を超えているか否かを判断する。
【００７３】
そして、状態判定ＣＭは、マスターＣＭの状況値が生存確認しきい値を超えていた場合（ステップＳ２０３；ＹＥＳ）には、ステップＳ２０４にて、生存確認処理（詳細は後述）を行ってから、このスレーブＣＭ用エラー処理を終了する。また、状態判定ＣＭは、マスターＣＭの状況値が生存確認しきい値以下であった場合（ステップＳ２０３；ＮＯ）には、生存確認処理を行うことなく、このスレーブＣＭ用エラー処理を終了する。
【００７４】
既に説明したように（図４参照）、次期マスターＣＭではないスレーブＣＭは、マスターＣＭが転送しきい値超え備品であった場合（ステップＳ２０１；ＮＯ）、次期マスターＣＭに状況値テーブル２８を転送する（ステップＳ２１１）。
【００７５】
次期マスターＣＭは、状況値テーブル２８を受信した場合、図９に示した手順のテーブル受信時用処理を実行する。
【００７６】
すなわち、次期マスターＣＭは、状況値テーブル２８を受信した場合、まず、受信した状況値テーブル２８上の各部品の状況値を、自ＣＭ１１内の状況値テーブル２８上の，同部品の状況値に加算する（ステップＳ５０１）。
【００７７】
次いで、次期マスターＣＭは、状態判定ＣＭとして動作しているか否かを判断する（ステップＳ５０２）。そして、次期マスターＣＭは、状態判定ＣＭとして動作していない場合（ステップＳ５０２；ＮＯ）には、ステップＳ５０３にて、ステップＳ２１２（図４）と同じ処理を行う。すなわち、次期マスターＣＭは、ステップＳ５０３にて、生存確認実施回数を“０”に初期化し、実施回数クリア時刻に“現在時刻＋規定時間”を設定する。また、次期マスターＣＭは、状態判定ＣＭとしての動作を開始したことを記憶する。
【００７８】
ステップＳ５０３の処理を終えた次期マスターＣＭは、マスターＣＭの状況値が生存確認しきい値を超えているか否かを判断する（ステップＳ５０４）。また、次期マスターＣＭは、状態判定ＣＭとして既に動作していた場合（ステップＳ５０２；ＹＥＳ）には、ステップＳ５０３の処理を行うことなく、このステップＳ５０４の処理（判断）を行う。
【００７９】
そして、状態判定ＣＭ（状態判定ＣＭとして動作している次期マスターＣＭ）は、マスターＣＭの状況値が生存確認しきい値を超えていなかった場合（ステップＳ５０４；ＮＯ）には、このテーブル受信時用処理を終了する。また、状態判定ＣＭは、マスターＣＭの状況値が生存確認しきい値を超えていた場合（ステップＳ５０４；ＹＥＳ）には、ステップＳ５０５にて、生存確認処理を行ってから、このテーブル受信時用処理を終了する。
【００８０】
ステップＳ５０５（図９）及びステップＳ２０４（図４）で実行される生存確認処理は、図１０に示した手順の処理である。
【００８１】
すなわち、マスターＣＭの状況値が生存確認しきい値を超えていたため、この生存確認処理を開始した状態判定ＣＭは、まず、マスターＣＭに対する通信を実施（試行）する（ステップＳ６０１）。また、状態判定ＣＭは、状況値テーブル２８をクリアし、テーブルクリア時刻を“現在時刻＋規定時間”に更新する処理（ステップＳ６０２）も行う。
【００８２】
ステップＳ６０１及びＳ６０２の処理を終えた状態判定ＣＭは、ステップＳ６０１におけるマスターＣＭに対する通信が成功していた場合（ステップＳ６０３；ＹＥＳ）には、生存確認実施回数に“１”を加算する（ステップＳ６０４）。その後、状態判定ＣＭは、値を更新した生存確認実施回数が、予め定められている実施回数しきい値（例えば、３）を超えているか否かを判断する（ステップＳ６０５）。
【００８３】
生存確認実施回数が実施回数しきい値を超えていた場合（ステップＳ６０５；ＹＥＳ）、状態判定ＣＭは、ステップＳ６０６にて、マスターＣＭを他の部分から切り離すための処理（各ＣＭ１１に構成が変わったことを通知する処理等）を行う。そして、状態判定ＣＭは、この生存確認処理を終了する。
【００８４】
一方、生存確認実施回数が実施回数しきい値を超えていなかった場合（ステップＳ６０５；ＮＯ）、状態判定ＣＭは、マスターＣＭを他の部分から切り離すことなく、この生存確認処理を終了する。
【００８５】
また、ステップＳ６０１におけるマスターＣＭに対する通信が失敗していた場合（ステップＳ６０３；ＮＯ）、状態判定ＣＭは、生存確認実施回数の値をチェックすることなく、マスターＣＭを他の部分から切り離す（ステップＳ６０６）。そして、状態判定ＣＭは、この生存確認処理を終了する。
【００８６】
以下、本実施形態に係る情報処理装置１０の動作を、さらに具体的に説明する。
【００８７】
まず、ＣＭ＃０がマスターＣＭである状況下、ＣＭ＃３（スレーブＣＭ）が故障した場合を例に、スレーブＣＭが故障した場合における情報処理装置１０の動作を説明する。
【００８８】
この場合、図１１に模式的に示してあるように、各ＣＭ１１（図１１では、ＣＭ＃２、ＣＭ＃６、ＣＭ＃７）からのＣＭ＃３に対する通信（破線矢印）時に通信エラーが発生することになる。
【００８９】
そのため、たとえば、ＣＭ＃２が、ＤＭＡポート＃０を用いてＣＭ＃３に対する通信を行った場合、ＣＭ＃２によりスレーブＣＭ用エラー処理（図４）が実行される。そして、ステップＳ２０１の処理が行われる結果として、ＣＭ＃２内の状況値テーブル２８上のＣＭ＃３に関する状況値、ＣＭ＃３のＤＭＡポート＃０に関する状況値に、たとえば、それぞれ、“３”、“８”（図６参照）が加算されることになる。
【００９０】
ＣＭ＃２は、状態判定ＣＭとして動作しないＣＭ１１（次期マスターＣＭではないＣＭ１１）である。そのため、ステップＳ２０１の処理後に実行されるステップＳ２０２では、“ＮＯ”側への分岐が行われる。そして、値を更新したいずれの状況値も転送しきい値を超えていない（ステップＳ２０６；ＮＯ）ため、状況値テーブル２８がマスターＣＭに転送されることなく、スレーブＣＭ用エラー処理が終了される。
【００９１】
ＣＭ＃３との通信に失敗したＣＭ＃２は、ＣＭ＃３と通信に使用するＤＭＡポート２１
を、たとえばＤＭＡポート＃１に変えてＣＭ＃３との通信を試みる。ＣＭ＃３が故障している場合、この通信時にもエラーが発生するので、ＣＭ＃２は、スレーブＣＭ用エラー処理を再び実行する。その結果、ステップＳ２０１の処理が行われて、ＣＭ＃２内の状況値テーブル２８上のＣＭ＃３に関する状況値、ＣＭ＃３のＤＭＡポート＃１に関する状況値に、たとえば、それぞれ、“３”、“８”が加算されることになる。
【００９２】
ＣＭ＃３と通信を行う必要があるＣＭ＃２は、上記のような処理を繰り返す。従って、比較的に短時間のうちに（規定時間の経過により状況値テーブル２８がクリアされる前に）、ＣＭ＃３の状況値が転送しきい値を超える。そして、その結果として、ＣＭ＃２内の状況値テーブル２８がマスターＣＭ（ＣＭ＃０）に転送されることになる。
【００９３】
ＣＭ＃３との通信を試みた他のＣＭ１１（図１１では、ＣＭ＃６及びＣＭ＃７）でも、通信エラーの発生毎にスレーブＣＭ用エラー処理が実行される。従って、各ＣＭ１１内の状況値テーブル２８も、マスターＣＭ（ＣＭ＃０）に転送されることになる。
【００９４】
一方、マスターＣＭ（ＣＭ＃０）は、状況値テーブル２８を受信する度に、テーブル受信時用処理（図８）を開始し、受信した状況値テーブル２８中の各部品の状況値を、自身の状況値テーブル２８上の各状況値に加算する（ステップＳ４０１）。従って、何回か状況値テーブル２８を受信すると、マスターＣＭ（ＣＭ＃０）内の状況値テーブル２８上のＣＭ＃３に関する状況値が切り離ししきい値を超える。そして、その結果として（ステップＳ４０３；ＹＥＳ）、ＣＭ＃３の切り離しが行われることになる。
【００９５】
次に、ＣＭ＃０がマスターＣＭであり、ＣＭ＃１が次期マスターＣＭである場合を例に、マスターＣＭが故障した場合における情報処理装置１０の動作を説明する。
【００９６】
この場合、図１２に模式的に示してあるように、各ＣＭ１１（図１２では、ＣＭ＃２、ＣＭ＃６、ＣＭ＃７）からのマスターＣＭ（ＣＭ＃０）に対する通信（破線矢印）時に通信エラーが発生する。
【００９７】
そして、通信エラーが発生したことを検出した各ＣＭ１１（ＣＭ＃２、ＣＭ＃６、ＣＭ＃７）は、『スレーブＣＭ用エラー処理を実行してから、通信に使用するＤＭＡポート２１を変えてマスターＣＭ（ＣＭ＃０）に対する通信を試みる処理』を繰り返す。従って、比較的に短時間のうちに、各ＣＭ１１内の状況値テーブル２８上のマスターＣＭ（ＣＭ＃０）に関する状況値が転送しきい値を超えることになる。
【００９８】
マスターＣＭ（ＣＭ＃０）に関する状況値が転送しきい値を超えた場合（ステップＳ２０７；ＹＥＳ）、次期マスターＣＭではないスレーブＣＭは、状況値テーブル２８を次期マスターＣＭ（ＣＭ＃１）に転送する（ステップＳ２１１）。
【００９９】
次期マスターＣＭは、状況値テーブル２８を受信する度に、テーブル受信時用処理（図９）を開始し、受信した状況値テーブル２８中の各部品の状況値を、自身の状況値テーブル２８上の各状況値に加算する（ステップＳ５０１）。従って、何回か状況値テーブル２８を受信すると、次期マスターＣＭ（ＣＭ＃１）内の状況値テーブル２８上のマスターＣＭ（ＣＭ＃０）に関する状況値が生存確認しきい値を超えることになる。
【０１００】
マスターＣＭ（ＣＭ＃０）に関する状況値が生存確認しきい値を超えた場合、次期マスターＣＭは、生存確認処理（図１０）を行う。既に説明したように、生存確認処理は、マスターＣＭに対する通信によりマスターＣＭが故障していることを確認できた場合と、生存確認処理の規定時間内の実施回数が実施回数しきい値を超えた場合とに、マスターＣＭを他の部分から切り離す処理となっている。
【０１０１】
従って、マスターＣＭ（ＣＭ＃０）が実際に故障している場合には、何回目かの生存確認処理時に、マスターＣＭが他の部分から切り離されることになる。
【０１０２】
以上、詳細に説明したように、本実施形態に係る情報処理装置１０は、マスターＣＭが故障したか否かを判定して故障している場合にマスターＣＭを切り離す処理である生存確認処理を、以下の条件が成立したときに実行する装置となっている。
受信した状況値テーブル２８中の各状況値の加算により、状況値テーブル２８上のマスターＣＭに関する状況値が生存確認しきい値を超える。
【０１０３】
そして、この条件は、１つのスレーブＣＭが、マスターＣＭが故障したと誤判定している場合には、通常、成立し得ない条件である。従って、本実施形態に係る情報処理装置１０は、１つのスレーブＣＭがマスターＣＭを切り離すか否かを判定する上記した従来装置よりも、マスターＣＭを切り離すか否かの判定が正確に行える装置となっていると言うことが出来る。
【０１０４】
《第２実施形態》
本発明の第２実施形態に係る情報処理装置は、上記した第１実施形態に係る情報処理装置１０をソフトウェア的に改良した装置である。そのため、以下では、第１実施形態の情報処理装置１０の説明時に用いたものと同じ符号を用いて、第２実施形態に係る情報処理装置１０の動作を、第１実施形態に係る情報処理装置１０と異なる部分を中心に説明する。また、以下では、第１実施形態に係る情報処理装置１０内のＣＭ１１のことを、第１種ＣＭ１１と表記し、第２実施形態に係る情報処理装置１０内のＣＭ１１のことを、第２種ＣＭ１１と表記する。
【０１０５】
第２種ＣＭ１１は、状態判定ＣＭとしての動作内容のみが第１種ＣＭ１１と異なるモジュールとなっている。
【０１０６】
具体的には、スレーブＣＭである場合に第２種ＣＭ１１が実行するスレーブＣＭ用エラー処理は、上記したスレーブＣＭ用エラー処理（図４）と基本的には同内容の処理である。ただし、第２種ＣＭ１１が実行するスレーブＣＭ用エラー処理のステップＳ２１１（第２種ＣＭ１１が次期マスターＣＭである場合に実行するステップＳ２１１）では、他の各第２種ＣＭ１１（以下、送信元ＣＭと表記する）についての受信回数を“０”に初期化する処理も行われる。
【０１０７】
また、第２種ＣＭ１１は、次期マスターＣＭである場合、テーブル受信時用処理として、図１３に示した手順の処理を行う。
【０１０８】
すなわち、次期マスターＣＭである第２種ＣＭ１１（以下、単に、次期マスターＣＭと表記する）は、状況値テーブル２８を受信した場合、まず、状態判定ＣＭとして動作しているか否かを判断する（ステップＳ７０１）。そして、次期マスターＣＭは、状態判定ＣＭとして動作していない場合（ステップＳ７０１；ＮＯ）には、ステップＳ７０２にて、生存確認実施回数及び各送信元ＣＭに関する受信回数を“０”に初期化し、実施回数クリア時刻に“現在時刻＋規定時間”を設定する。また、次期マスターＣＭは、状態判定ＣＭとしての動作を開始したことを記憶する。
【０１０９】
ステップＳ７０２の処理を終えた次期マスターＣＭは、ステップＳ７０３にて、受信した状況値テーブル２８上の各部品の状況値を、自ＣＭ１１内の状況値テーブル２８上の，同部品の状況値に加算する処理を行う。次期マスターＣＭは、このステップＳ７０３にて、今回、受信した状況値テーブル２８の送信元ＣＭに関する受信回数に“１”を加算する
処理も行う。
【０１１０】
また、次期マスターＣＭは、状態判定ＣＭとして既に動作していた場合（ステップＳ７０１；ＹＥＳ）には、ステップＳ７０２の処理を行うことなく、ステップＳ７０３の処理を行う。
【０１１１】
ステップＳ７０３の処理を終えた次期マスターＣＭは、マスターＣＭの状況値が生存確認しきい値を超えているか否かを判断する（ステップＳ７０４）。
【０１１２】
そして、次期マスターＣＭは、マスターＣＭの状況値が生存確認しきい値を超えていた場合（ステップＳ７０４；ＹＥＳ）には、それまで受信した状況値テーブル２８の送信元ＣＭが１ＣＭであるか否かを判断する（ステップＳ７０５）。すなわち、次期マスターＣＭは、送信元ＣＭに関する受信回数の中に、“０”ではない受信回数が１つしか存在していないか否かを判断する（ステップＳ７０５）。
【０１１３】
そして、次期マスターＣＭは、複数の送信元ＣＭから状況値テーブル２８を受信していた場合（ステップＳ７０５；ＮＯ）には、マスターＣＭに対する生存確認処理（図１０）を実行（ステップＳ７０６）してから、このテーブル受信時用処理を終了する。
【０１１４】
一方、１つのＣＭのみから状況値テーブル２８を受信していた場合（ステップＳ７０５；ＹＥＳ）、次期マスターＣＭは、その唯一の状況値テーブル２８の送信元ＣＭに対する生存確認処理を実行（ステップＳ７０７）してから、このテーブル受信時用処理を終了する。
【０１１５】
要するに、第１実施形態に係る情報処理装置１０に関して説明したように、生存確認処理の開始条件である『受信した状況値テーブル２８中の各状況値の加算により、状況値テーブル２８上のマスターＣＭに関する状況値が切り離ししきい値を超える』という条件は、１つのスレーブＣＭが、マスターＣＭが故障したと誤判定している場合には、通常、成立しない条件である。ただし、『受信した状況値テーブル２８中の各状況値の加算により、状況値テーブル２８上のマスターＣＭに関する状況値が切り離ししきい値を超える』という条件は、１つのスレーブＣＭがマスターＣＭが故障したと誤判定している場合に、成立し得ない条件ではない。
【０１１６】
そして、上記手順を採用しておけば、１つのスレーブＣＭによりマスターＣＭの状態の誤判定により、マスターＣＭが誤って切り離されてしまうことを防止できる。また、誤判定しているスレーブＣＭ（つまり、故障しているスレーブＣＭ）を、素早く（その状況値が切り離ししきい値を超える以前に）、他の部分から切り離せることにもなる。そのため、本実施形態に係る情報処理装置１０の各ＣＭ１１を、上記機能を有するものとしてあるのである。
【０１１７】
《変形形態》
上記した各実施形態に係る情報処理装置１０は、各種の変形が行えるものである。たとえば、各情報処理装置１０を、次期マスターＣＭによって、ステップＳ２０４、Ｓ７０６等で、生存確認処理（図１０）ではなく、“マスタ−ＣＭを切り離す処理”が行われる装置に変形することが出来る。また、各情報処理装置１０を、ステップＳ２１１（図４）にて、次期マスターＣＭにマスターＣＭの状況値のみが送信される装置に変形することも出来る。
【０１１８】
各情報処理装置１０を、ＣＭ数によって、転送しきい値ではなく、切り離ししきい値及び生存確認しきい値が変わるものに変形することも出来る。また、各実施形態に係る情報
処理装置１０は、ストレージシステム（ＲＡＩＤシステム）用の装置であったが、上記した技術は、切り離し可能なユニットを複数個含む装置であれば適用可能なものである。従って、上記した技術に基づき、ストレージとは無関係な装置を実現することも出来る。
【符号の説明】
【０１１９】
１０    情報処理装置
１１    ＣＭ
１２    ＦＲＴ
１５    ＥＸＰ
１６    ＤＥ
２１    ＤＭＡポート
２２    ＣＡ
２３    ＩＯＣ
２４    ＣＰＵ
２５    メモリコントローラ
２６    メモリ
２８    状況値テーブル
【図１】
0005810891.tif 000002
【図２】
0005810891.tif 000003
【図３】
0005810891.tif 000004
【図４】
0005810891.tif 000005
【図５】
0005810891.tif 000006
【図６】
0005810891.tif 000007
【図７】
0005810891.tif 000008
【図８】
0005810891.tif 000009
【図９】
0005810891.tif 000010
【図１０】
0005810891.tif 000011
【図１１】
0005810891.tif 000012
【図１２】
0005810891.tif 000013
【図１３】
0005810891.tif 000014