(57)【要約】【課題】冗長構成されたモジュールの起動時に異常を検出しても、モジュールの起動にかかる遅延時間を抑制する。【解決手段】情報処理装置１は、複数のモジュール１２を冗長構成にして備える。起動制御部２（起動処理実行部３）は、起動処理７を処理ブロックごとに逐次実行する。起動制御部２（異常情報生成部４）は、起動制御時に異常を生じたモジュール１２を検出した場合に、異常情報１０を生成し、メモリ９に保持する。起動制御部２（縮退運転判定部５）は、縮退運転の可否の判定をおこなう。起動制御部２（再起動実行部６）は、縮退運転ができない場合に、異常情報１０にもとづいて選択した異常モジュールについて再起動処理８を実行する。【選択図】図１
2014071668.tif 000002
【特許請求の範囲】
【請求項１】
冗長構成のモジュールの起動制御をおこなう情報処理装置であって、
前記モジュールの起動制御時に生じた異常に関する異常情報を保持するメモリと、
複数の処理ブロックからなる起動処理を前記処理ブロックごとにシーケンシャルに実行し、
起動制御時に異常を生じたモジュールを検出した場合に、前記異常情報の生成と、起動制御時に異常を生じたモジュールを除外した縮退運転の可否の判定とをおこない、
前記縮退運転ができる場合に、実行中の処理ブロックの実行を完了し、
前記縮退運転ができない場合に、起動制御時に異常を生じたすべてのモジュールのうち前記異常情報にもとづいて選択したモジュールの再起動処理を実行し、前記再起動処理を完了してから実行中の処理ブロックの実行を完了する、
起動制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記起動制御部は、起動制御時に異常を生じたすべてのモジュールのうちから前記異常情報より特定可能な復旧優先度を比較して選択したモジュールの再起動処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記起動制御部は、前記復旧優先度の高いモジュールを選択することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記起動制御部は、起動制御時に異常を生じたすべてのモジュールのうちから１つのモジュールを選択して再起動処理を実行することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記起動制御部は、前記再起動処理を正常に完了したモジュールについて、実行中の処理ブロックまで前記起動処理を再実行することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記メモリは、前記モジュールの冗長構成を特定可能な構成情報を保持し、
前記起動制御部は、前記構成情報に基づいて起動制御時に異常を生じたモジュールを除外した縮退運転の可否の判定をおこなうことを特徴とする請求項１乃至５のいずれか１つに記載の情報処理装置。
【請求項７】
前記起動制御部は、前記起動処理の終了後に、起動制御時に異常を生じたモジュールのうち前記起動処理中に再起動処理を実行しなかったモジュールについて再起動処理をおこなうことを特徴とする請求項１乃至５のいずれか１つに記載の情報処理装置。
【請求項８】
冗長構成のモジュールの起動制御をおこなう起動プログラムであって、
コンピュータに、
複数の処理ブロックからなる起動処理を前記処理ブロックごとにシーケンシャルに実行し、
起動制御時に異常を生じたモジュールを検出した場合に、異常に関する異常情報の生成と、起動制御時に異常を生じたモジュールを除外した縮退運転の可否の判定とをおこない、
前記縮退運転ができる場合に、実行中の処理ブロックの実行を完了し、
前記縮退運転ができない場合に、起動制御時に異常を生じたすべてのモジュールのうち前記異常情報にもとづいて選択したモジュールの再起動処理を実行し、前記再起動処理を完了してから実行中の処理ブロックの実行を完了する、
処理を実行させることを特徴とする起動プログラム。
【請求項９】
冗長構成のモジュールの起動制御をおこなう起動方法であって、
コンピュータが、
複数の処理ブロックからなる起動処理を前記処理ブロックごとにシーケンシャルに実行し、
起動制御時に異常を生じたモジュールを検出した場合に、異常に関する異常情報の生成と、起動制御時に異常を生じたモジュールを除外した縮退運転の可否の判定とをおこない、
前記縮退運転ができる場合に、実行中の処理ブロックの実行を完了し、
前記縮退運転ができない場合に、起動制御時に異常を生じたすべてのモジュールのうち前記異常情報にもとづいて選択したモジュールの再起動処理を実行し、前記再起動処理を完了してから実行中の処理ブロックの実行を完了する、
処理を実行することを特徴とする起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、起動プログラム、および起動方法に関する。
【背景技術】
【０００２】
情報処理装置は、サービスを提供するための一部の処理を担うモジュールの冗長構成により、信頼性の高いサービス提供を図っている。このような冗長構成されたモジュールは、モジュールを統括制御する情報処理装置により起動制御がおこなわれる。
【０００３】
情報処理装置は、一部のモジュールに異常が発生した場合に、異常を検出したモジュールの切り離しをおこなったり、異常を検出したモジュールの再起動をおこなったりして、サービス提供をおこなえる状態で起動するように努める。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−６９９６号公報
【特許文献２】特開平５−１６６２８７号公報
【特許文献３】特開平９−１９８３２５号公報
【特許文献４】特開２００７−２９３４４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、異常を検出したモジュールの切り離しをおこなった結果、サービス提供をおこなえる状態での起動に失敗して、全体として再起動をやり直すことになると、サービスの提供が可能になるまでの起動時間が大きくなる。
【０００６】
また、異常を検出したモジュールについて、その都度、再起動をおこなう場合も、サービスの提供が可能になるまでの起動時間が大きくなる。
このような起動時間の増大は、定期的に停止と起動をおこなう情報処理システムにおいて、タイムスケジュールにしたがう運用の遅延につながるおそれがある。
【０００７】
１つの側面では、本発明は、冗長構成されたモジュールの起動時に異常を検出しても、モジュールの起動にかかる遅延時間を抑制可能な情報処理装置、起動プログラム、および起動方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、以下に示すような、冗長構成のモジュールの起動制御をおこなう情報処理装置が提供される。情報処理装置は、メモリと、起動制御部と、を備える。メモリは、モジュールの起動制御時に生じた異常に関する異常情報を保持する。起動制御部は、複数の処理ブロックからなる起動処理を処理ブロックごとにシーケンシャルに実行し、起動制御時に異常を生じたモジュールを検出した場合に、異常情報の生成と、起動制御時に異常を生じたモジュールを除外した縮退運転の可否の判定とをおこない、縮退運転ができる場合に、実行中の処理ブロックの実行を完了し、縮退運転ができない場合に、起動制御時に異常を生じたすべてのモジュールのうち異常情報にもとづいて選択したモジュールの再起動処理を実行し、再起動処理を完了してから実行中の処理ブロックの実行を完了する。
【０００９】
また、上記目的を達成するために、冗長構成のモジュールの起動制御をおこなう情報処理装置を起動する起動プログラム、および起動方法が提供される。起動プログラム、および起動方法は、以下に示すような処理をコンピュータに実行させる。コンピュータは、複数の処理ブロックからなる起動処理を処理ブロックごとにシーケンシャルに実行し、起動制御時に異常を生じたモジュールを検出した場合に、異常に関する異常情報の生成と、起動制御時に異常を生じたモジュールを除外した縮退運転の可否の判定とをおこない、縮退運転ができる場合に、実行中の処理ブロックの実行を完了し、縮退運転ができない場合に、起動制御時に異常を生じたすべてのモジュールのうち異常情報にもとづいて選択したモジュールの再起動処理を実行し、再起動処理を完了してから実行中の処理ブロックの実行を完了する、処理を実行する。
【発明の効果】
【００１０】
１態様によれば、情報処理装置、起動プログラム、および起動方法において、冗長構成されたモジュールの起動時に異常を検出しても、モジュールの起動にかかる遅延時間を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態の情報処理装置の構成例を示す図である。
【図２】第２の実施形態のストレージ装置の構成例を示す図である。
【図３】第２の実施形態の管理モジュールの制御部のハードウェア構成例を示す図である。
【図４】第２の実施形態のチャネルアダプタモジュールの冗長構成例を示す図である。
【図５】第２の実施形態のＣＡ接続先情報の一例を示す図である。
【図６】第２の実施形態のサーバグループ情報の一例を示す図である。
【図７】第２の実施形態の電源投入シーケンスの一例を示す図である。
【図８】第２の実施形態のＣＡ再起動処理の一例を示す図である。
【図９】第２の実施形態の電源投入時起動処理のフローチャートである。
【図１０】第２の実施形態のモジュール再起動処理のフローチャートである。
【図１１】第２の実施形態の再起動モジュール選択処理のフローチャートである。
【図１２】第２の実施形態の異常構成情報の一例を示す図である。
【図１３】第２の実施形態の電源投入シーケンスにおいて冗長構成のチャネルアダプタモジュールの１つの異常検出例である。
【図１４】図１３に示す異常検出時の異常構成情報の一例を示す図である。
【図１５】第２の実施形態の電源投入シーケンスにおいて冗長構成のチャネルアダプタモジュールのすべての異常検出例である。
【図１６】図１５に示す異常検出時の異常構成情報の一例を示す図である。
【図１７】図１５に示す異常検出時の異常構成情報の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、実施の形態を図面を参照して詳細に説明する。
［第１の実施形態］
まず、第１の実施形態の情報処理装置について図１を用いて説明する。図１は、第１の実施形態の情報処理装置の構成例を示す図である。
【００１３】
情報処理装置１は、所定の起動契機（たとえば、電源投入やリセット）に起動処理７を実行する。情報処理装置１は、起動プログラムにしたがい起動処理７を実行する。情報処理装置１は、情報処理装置１自身の起動制御をおこなうほかに、複数のモジュール１２の起動制御をおこなう。
【００１４】
情報処理装置１は、複数のモジュール１２を外部接続、あるいは内部接続する。複数のモジュール１２は、情報処理装置１によるサービス提供に必要な最小限度の数に、余裕分を加えた数だけある。
【００１５】
情報処理装置１は、起動制御部２と、メモリ９を備える。起動制御部２は、起動処理実行部３と、異常情報生成部４と、縮退運転判定部５と、再起動実行部６とを備える。
起動処理実行部３は、起動処理７を実行する。起動処理（起動プログラム）７は、複数の処理ブロック（たとえば、処理ブロック＃０、処理ブロック＃１、・・・、処理ブロック＃４）を有する。起動処理実行部３は、各処理ブロックをシーケンシャルに実行する。たとえば、起動処理実行部３は、最初の処理ブロック＃０を実行し、処理ブロック＃０の実行完了後に次の処理ブロック＃１を実行する。同様にして、起動処理実行部３は、最後の処理ブロック＃４を実行して、処理ブロック＃４の実行完了により起動処理７の実行を終了する。
【００１６】
異常情報生成部４は、起動制御時に異常を生じたモジュール１２（起動経過が正常でないモジュール１２）を検出した場合に、異常情報１０の生成をおこなう。異常情報１０は、起動経過が正常でないモジュール１２の起動制御時に生じた異常に関する情報である。異常情報１０は、異常の程度（復旧優先度）を比較可能な情報を含む。異常情報生成部４が生成した異常情報１０は、メモリ９に保持される。
【００１７】
異常情報生成部４は、起動処理７の各処理ブロックを実行する都度、起動制御時に異常を生じたモジュール１２の検出と、異常情報１０の生成をおこなうようにしてもよい。
縮退運転判定部５は、起動制御時に異常を生じたモジュール１２を検出した場合に、起動制御時に異常を生じたモジュール１２を除外した縮退運転の可否の判定をおこなう。縮退運転の可否の判定は、縮退運転に最低限必要とされる数のモジュール１２の起動経過が正常であるか否かの判定によっておこなうことができる。たとえば、縮退運転に最低限必要とされる数は、メモリ９が保持する設定値や、装置構成を定義した構成情報から特定することができる。
【００１８】
縮退運転判定部５は、起動処理７の各処理ブロックを実行する都度、起動制御時に異常を生じたモジュール１２を検出した場合に、縮退運転の可否の判定をおこなうようにしてもよい。
【００１９】
起動処理実行部３は、縮退運転ができる場合に実行中の処理ブロックの実行を完了し、縮退運転ができない場合に実行中の処理ブロックの実行を完了しない。
再起動実行部６は、縮退運転ができない場合に、すべての異常モジュール（起動経過が正常でないモジュール１２）のうち異常情報１０にもとづいて選択した異常モジュール（選択モジュール）について再起動処理８を実行する。異常情報１０にもとづく選択は、たとえば、異常情報１０から特定可能な復旧優先度を比較しておこなうことができる。復旧優先度は、検出した異常の種類に応じてあらかじめ複数段階で設定される。したがって、再起動実行部６は、異常モジュールごとの異常情報１０を比較することで、復旧優先度を順序付けすることができる。再起動実行部６は、たとえば、最も復旧優先度の高い異常モジュールを選択モジュールとする。
【００２０】
再起動実行部６は、すべての異常モジュールのうちから選択モジュールを再起動処理８の実行対象とするので、異常モジュールのすべてを実行対象とする場合に比較して、選択モジュールの再起動処理８の実行完了の期待を大きくできる。また、再起動実行部６は、選択モジュールを１つとしてもよく、その場合に実行対象とした異常モジュールの再起動処理８の実行完了の期待をより大きくすることができる。
【００２１】
したがって、情報処理装置１は、再起動処理８を失敗する可能性を低減することができ、再起動処理８のやり直しにかかる処理時間を低減することができる。
このようにして、情報処理装置１は、冗長構成されたモジュール１２の起動時に異常を検出しても、モジュール１２の起動にかかる遅延時間を抑制できる。
【００２２】
［第２の実施形態］
次に、第２の実施形態のストレージ装置について図２を用いて説明する。図２は、第２の実施形態のストレージ装置の構成例を示す図である。
【００２３】
ストレージ装置１６は、図示しないサーバからストレージデバイスへのアクセス要求（サービス要求）を受け付けて応答（サービス応答）する装置である。ストレージ装置１６は、管理モジュール（ＣＭモジュール：Central Management Module）１７と、デバイスエンクロージャ（ＤＥ：Device Enclosure）１８を備える。
【００２４】
ストレージ装置１６は、ＣＭ＃０とＣＭ＃１の２つの管理モジュール１７を備える。管理モジュール１７は、制御部１９を備え、制御部１９によりストレージ装置１６を統括的に制御するとともに、ストレージ装置１６の資源管理をおこなう。管理モジュール１７によるストレージ装置１６の統括的な制御には、ストレージ装置１６の起動制御を含む。
【００２５】
ＣＭ＃０とＣＭ＃１の２つの管理モジュール１７のうちＣＭ＃０がストレージ装置１６で唯一のマスターＣＭであり、ＣＭ＃１がその余のスレーブＣＭである。ストレージ装置１６は、２つの管理モジュール１７を備えるが、管理モジュール１７を３つ以上備えてもよく、その場合、１つの管理モジュール１７がマスターＣＭとなり、その余の管理モジュール１７がスレーブＣＭとなる。したがって、ストレージ装置１６は、冗長構成の管理モジュール１７を有する。
【００２６】
管理モジュール１７は、それぞれが備える制御部１９を接続し、制御部１９間でネゴシエーションを図り、１つの管理モジュール１７をマスターＣＭとする。いずれの管理モジュール１７がマスターＣＭとなるかは、あらかじめ設定する決定順位により決定してもよいし、ストレージ装置１６の起動時に管理モジュール１７間で所定の決定ルールにしたがい決定してもよい。マスターＣＭに異常が生じた場合、残りのスレーブＣＭのうちの１つがマスターＣＭとなる。
【００２７】
マスターＣＭは、ストレージ装置１６の起動処理を統括的に制御する。スレーブＣＭは、マスターＣＭの指示にしたがい起動処理を実行する。
管理モジュール１７は、チャネルアダプタモジュール（ＣＡモジュール：Channel Adapter Module）２０と、デバイスアダプタモジュール（ＤＡモジュール：Device Adapter Module）２１と、制御部１９とを備える。
【００２８】
チャネルアダプタモジュール２０は、図示しないサーバとの接続制御（インタフェース制御）を担うインタフェースモジュールである。管理モジュール１７は、４つのチャネルアダプタモジュール２０を備える。ＣＭ＃０は、ＣＡ＃００、ＣＡ＃０１、ＣＡ＃０２、およびＣＡ＃０３の４つのチャネルアダプタモジュール２０を備え、ＣＭ＃１は、ＣＡ＃１０、ＣＡ＃１１、ＣＡ＃１２、およびＣＡ＃１３の４つのチャネルアダプタモジュール２０を備える。各チャネルアダプタモジュール２０は、属する管理モジュール１７の制御部１９と接続する。
【００２９】
デバイスアダプタモジュール２１は、デバイスエンクロージャ１８との接続制御（インタフェース制御）を担うインタフェースモジュールである。管理モジュール１７は、４つのデバイスアダプタモジュール２１を備える。ＣＭ＃０は、ＤＡ＃００、ＤＡ＃０１、ＤＡ＃０２、およびＤＡ＃０３の４つのデバイスアダプタモジュール２１を備え、ＣＭ＃１は、ＤＡ＃１０、ＤＡ＃１１、ＤＡ＃１２、およびＤＡ＃１３の４つのデバイスアダプタモジュール２１を備える。各デバイスアダプタモジュール２１は、属する管理モジュール１７の制御部１９と接続する。
【００３０】
デバイスエンクロージャ１８は、複数のストレージデバイスを収容するストレージデバイスの集合体である。ストレージデバイス（記憶装置）は、所要の情報を記録可能であり、たとえば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive:フラッシュメモリドライブ）などである。ストレージ装置１６は、ＤＥ＃０、ＤＥ＃１、ＤＥ＃２、およびＤＥ＃３の４つのデバイスエンクロージャ１８を備える。デバイスエンクロージャ１８は、複数の管理モジュール１７と接続する。ＤＥ＃０は、ＤＡ＃００とＤＡ＃１０に接続し、ＤＥ＃１は、ＤＡ＃０１とＤＡ＃１１に接続し、ＤＥ＃２は、ＤＡ＃０２とＤＡ＃１２に接続し、ＤＥ＃３は、ＤＡ＃０３とＤＡ＃１３に接続する。なお、ストレージ装置１６がデバイスエンクロージャ１８を内蔵した例を図２に示したが、デバイスエンクロージャ１８は、ストレージ装置１６に外部接続されるものであってもよい。
【００３１】
このように、ストレージ装置１６は、管理モジュール１７を冗長構成として、ストレージ装置１６の統括的制御の信頼性向上を図っている。また、各ストレージ装置１６は、チャネルアダプタモジュール２０とデバイスアダプタモジュール２１とをそれぞれ冗長構成として、サーバとの接続およびデバイスエンクロージャ１８との接続の信頼性向上を図っている。
【００３２】
次に、第２の実施形態の制御部１９のハードウェア構成について図３を用いて説明する。図３は、第２の実施形態の管理モジュールの制御部のハードウェア構成例を示す図である。
【００３３】
制御部１９は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０５を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３４】
ＲＡＭ１０２は、制御部１９の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データ（たとえば、システム制御や起動制御の情報管理）が格納される。また、ＲＡＭ１０２は、ストレージデバイスのキャッシュメモリを含むものであってもよい。
【００３５】
バス１０５に接続されている周辺機器としては、不揮発性メモリ１０３、および入出力インタフェース１０４がある。
不揮発性メモリ１０３は、ストレージ装置１６の電源遮断時においても記憶内容を保持する。不揮発性メモリ１０３は、たとえば、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）やフラッシュメモリなどの半導体記憶装置や、ＨＤＤなどである。また、不揮発性メモリ１０３は、制御部１９の補助記憶装置として使用される。不揮発性メモリ１０３には、ＯＳのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
【００３６】
入出力インタフェース１０４は、チャネルアダプタモジュール２０、デバイスアダプタモジュール２１、および他の管理モジュール１７に属する制御部１９と接続して入出力をおこなう。入出力インタフェース１０４は、他のモジュールから送られてくる信号やデータをプロセッサ１０１やキャッシュメモリ（ＲＡＭ１０２）に送信する。
【００３７】
以上のようなハードウェア構成によって、第２の実施形態の制御部１９の処理機能を実現することができる。なお、チャネルアダプタモジュール２０、デバイスアダプタモジュール２１の他、第１の実施形態に示した情報処理装置１も、図３に示した制御部１９と同様のハードウェアにより実現することができる。
【００３８】
次に、第２の実施形態のチャネルアダプタモジュールの冗長構成について図４を用いて説明する。図４は、第２の実施形態のチャネルアダプタモジュールの冗長構成例を示す図である。
【００３９】
ストレージ装置１６は、２つのサーバ１５（サーバ＃１、サーバ＃２）と、それぞれ２つの経路で接続する。したがって、ストレージ装置１６とサーバ１５は、１つの通信経路が故障しても通信可能な冗長構成で接続する。
【００４０】
ストレージ装置１６は、２つの管理モジュール１７のそれぞれが、２つのサーバ１５と接続し、一方の管理モジュール１７が故障しても２つのサーバ１５と通信可能にしている。ＣＭ＃０は、ＣＡ＃００がサーバ＃１と接続し、ＣＡ＃０１がサーバ＃２と接続する。ＣＭ＃１は、ＣＡ＃１０がサーバ＃１と接続し、ＣＡ＃１１がサーバ＃２と接続する。
【００４１】
このように、ストレージ装置１６は、ＣＡ＃００とＣＡ＃１０とでサーバ＃１と接続し、ＣＡ＃０１とＣＡ＃１１とでサーバ＃２と接続することで、チャネルアダプタモジュール２０の冗長構成を有する。
【００４２】
次に、第２の実施形態のＣＡ接続先情報について図５を用いて説明する。図５は、第２の実施形態のＣＡ接続先情報の一例を示す図である。
ＣＡ接続先情報５０は、ストレージ装置１６に属するチャネルアダプタモジュール２０ごとの接続先情報である。ＣＡ接続先情報５０は、ユーザシステム環境に合わせて工場出荷時に設定される設定情報として不揮発性メモリ１０３に保持される。なお、ＣＡ接続先情報５０は、通信アドレスや通信ポートなどの設定情報を収集して生成されるものであってもよく、ＲＡＭ１０２に保持されるものであってもよい。ＣＡ接続先情報５０は、マスターＣＭによって保持される。
【００４３】
図５に示すＣＡ接続先情報５０によれば、ＣＡ＃００とＣＡ＃１０は、サーバ＃１と接続し、ＣＡ＃０１とＣＡ＃１１は、サーバ＃２と接続し、ＣＡ＃０２、ＣＡ＃０３、ＣＡ＃１２、およびＣＡ＃１３は、接続先がない。マスターＣＭは、ＣＡ接続先情報５０によってチャネルアダプタモジュールの冗長構成を把握することができる。
【００４４】
次に、第２の実施形態のサーバグループ情報について図６を用いて説明する。図６は、第２の実施形態のサーバグループ情報の一例を示す図である。
サーバグループ情報５１は、サーバ１５ごとの所属ＣＡ（チャネルアダプタモジュール）を表したものである。サーバグループ情報５１は、ＣＡ接続先情報５０から生成される。サーバグループ情報５１は、マスターＣＭによって保持される。
【００４５】
なお、マスターＣＭは、ＣＡ接続先情報５０とサーバグループ情報５１を保持するとしたが、一方から他方を生成可能であるため、いずれか一方を保持するものであってもよい。また、スレーブＣＭは、ＣＡ接続先情報５０およびサーバグループ情報５１をマスターＣＭと同期させて保持してもよい。
【００４６】
なお、図４から図６を用いて、チャネルアダプタモジュール２０の冗長構成、ＣＡ接続先情報５０、およびサーバグループ情報５１を説明したが、デバイスアダプタモジュール２１についても同様の冗長構成とすることができる。その場合、マスターＣＭは、デバイスアダプタモジュール２１の接続先となるデバイスエンクロージャ１８を示すＤＡ接続先情報を保持する。また、マスターＣＭは、デバイスエンクロージャ１８ごとの所属ＤＡ（デバイスアダプタモジュール）を表したデバイスエンクロージャグループ情報を保持する。
【００４７】
これら、ＣＡ接続先情報５０、サーバグループ情報５１、ＤＡ接続先情報、およびデバイスエンクロージャグループ情報などは、ストレージ装置１６のモジュールの構成関係を特定可能な構成情報に相当する。
【００４８】
次に、第２の実施形態の電源投入シーケンスについて図７を用いて説明する。図７は、第２の実施形態の電源投入シーケンスの一例を示す図である。
電源投入シーケンス５２は、ストレージ装置１６が電源投入時におこなう起動処理である。なお、説明を簡単にするため、管理モジュール１７とチャネルアダプタモジュール２０を対象とした処理を示し、チャネルアダプタモジュール２０を対象とした処理と同様のデバイスアダプタモジュール２１を対象とした処理を省略する。
【００４９】
電源投入シーケンス５２は、処理ブロックと、処理ブロックごとのＣＭ処理番号およびＣＡ処理番号、ＣＭ処理番号ごとの処理内容であるＣＭ実行処理、ＣＡ処理番号ごとの処理内容であるＣＡ実行処理を定義したテーブルデータである。電源投入シーケンス５２は、ＲＡＭ１０２に保持される。
【００５０】
電源投入シーケンス５２は、処理ブロックという複数の処理単位に分かれている。処理ブロックは、シーケンシャルな識別番号を有し、初期値である「０１」から「０２」、「０３」と昇順でシーケンシャルに処理（逐次処理）が実行される。
【００５１】
電源投入シーケンス５２は、マスターＣＭが制御主体となる。マスターＣＭは、電源投入シーケンス５２における処理ブロック単位の進行管理をおこなう。
処理ブロックは、「処理ブロック０１」から「処理ブロック０９」まで９つある。マスターＣＭは、「処理ブロック０１」から実行を開始し、「処理ブロック０１」の実行が完了すると、「処理ブロック０２」の実行を開始する。このようにして、マスターＣＭは、「処理ブロック０９」までの実行を完了すると、装置Ｒｅａｄｙとなり、ストレージ装置１６は、サービスの提供が可能な状態となる。
【００５２】
より詳細に説明すると、マスターＣＭは、「処理ブロック０１」において、ＣＭ処理番号「ＣＭ０１」の処理であるＣＭハードウェア設定を実行する。ＣＭハードウェア設定は、管理モジュール１７のハードウェア設定をおこなう処理である。マスターＣＭは、ＣＭ処理番号「ＣＭ０１」の処理を実行するとともに、スレーブＣＭに対してＣＭ処理番号「ＣＭ０１」の処理の実行を指示する。マスターＣＭは、ＣＭ処理番号「ＣＭ０１」の処理の完了と、スレーブＣＭからのＣＭ処理番号「ＣＭ０１」の処理の完了報告とにより、ＣＭ処理番号「ＣＭ０１」の処理を完了する。マスターＣＭは、「処理ブロック０１」において、ＣＭ処理番号「ＣＭ０１」の処理に続く処理がないことから、「処理ブロック０１」の処理を完了する。
【００５３】
マスターＣＭは、完了した「処理ブロック０１」の処理の次の処理である「処理ブロック０２」の実行を開始する。「処理ブロック０２」は、ＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理と、ＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理がある。ＣＭ処理番号「ＣＭ０２」は、ファームウェア情報を取得する処理であり、ＣＭ処理番号「ＣＭ０３」は、取得したファームウェア情報の正当性を確認する処理である。ＣＡ処理番号「ＣＡ０１」は、チャネルアダプタモジュール２０の電源を投入するＣＡ電源投入処理であり、ＣＡ処理番号「ＣＡ０２」は、チャネルアダプタモジュール２０のリセット状態を解除するＣＡリセット状態解除処理である。
【００５４】
マスターＣＭは、ＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理を逐次実行するとともに、スレーブＣＭに対してＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理の逐次実行を指示する。マスターＣＭは、マスターＣＭに属するチャネルアダプタモジュール２０にＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理の逐次実行を指示する。マスターＣＭは、スレーブＣＭに対して、スレーブＣＭに属するチャネルアダプタモジュール２０のＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理の逐次実行を指示する。なお、管理モジュール１７の起動処理と、チャネルアダプタモジュール２０の起動処理とは、並列に処理を実行可能である。
【００５５】
マスターＣＭは、ＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理の完了と、スレーブＣＭからのＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理の完了報告とにより、ＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理を完了する。マスターＣＭは、マスターＣＭに属するチャネルアダプタモジュール２０からのＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理の完了報告と、スレーブＣＭからのＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理の完了報告とにより、ＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理を完了する。マスターＣＭは、「処理ブロック０２」において、ＣＭ処理番号「ＣＭ０２」、「ＣＭ０３」の処理、およびＣＡ処理番号「ＣＡ０１」、「ＣＡ０２」の処理に続く処理がないことから、「処理ブロック０２」の処理を完了する。
【００５６】
以下、「処理ブロック０３」は、ＣＭ処理番号「ＣＭ０４」の処理と、ＣＡ処理番号「ＣＡ０３」の処理とがある。ＣＭ処理番号「ＣＭ０４」の処理は、管理モジュール１７のメモリ（ＲＡＭ１０２）の診断をおこなうＣＭメモリ診断である。ＣＡ処理番号「ＣＡ０３」の処理は、チャネルアダプタモジュール２０のハードウェア設定をおこなう処理である。
【００５７】
「処理ブロック０４」は、ＣＭ処理番号「ＣＭ０５」の処理がある。ＣＭ処理番号「ＣＭ０５」の処理は、ストレージデバイスのアクセス可能状態を確認するＤｉｓk Ｒｅａｄｙ確認である。
【００５８】
「処理ブロック０５」は、ＣＡ処理番号「ＣＡ０４」の処理がある。ＣＡ処理番号「ＣＡ０４」の処理は、アダプタ処理の開始を指示する処理である。
「処理ブロック０６」は、ＣＭ処理番号「ＣＭ０６」の処理がある。ＣＭ処理番号「ＣＭ０６」の処理は、構成情報を更新する処理である。
【００５９】
「処理ブロック０７」は、ＣＡ処理番号「ＣＡ０５」の処理がある。ＣＡ処理番号「ＣＡ０５」の処理は、構成情報の受領を指示する処理である。
「処理ブロック０８」は、ＣＡ処理番号「ＣＡ０６」の処理がある。ＣＡ処理番号「ＣＡ０６」の処理は、通信可能にネットワークに接続するオンラインを指示する処理である。
【００６０】
「処理ブロック０９」は、ＣＭ処理番号「ＣＭ０７」の処理がある。ＣＭ処理番号「ＣＭ０７」の処理は、ストレージ装置１６によるサービス提供が可能となる装置Ｒｅａｄｙである。
【００６１】
なお、マスターＣＭは、電源投入シーケンスの実行中にチャネルアダプタモジュール２０のモジュール異常を検出した場合、異常を検出したチャネルアダプタモジュール２０の再起動の是非を判定する。マスターＣＭは、チャネルアダプタモジュール２０の再起動をおこなわないとした場合、ストレージ装置１６が装置Ｒｅａｄｙとなった後に、チャネルアダプタモジュール２０の再起動をおこなう。マスターＣＭは、チャネルアダプタモジュール２０の再起動をおこなうとした場合、処理ブロックの進行を止めて、チャネルアダプタモジュール２０の再起動をおこなう。
【００６２】
次に、第２の実施形態のＣＡ再起動処理について図８を用いて説明する。図８は、第２の実施形態のＣＡ再起動処理の一例を示す図である。
ＣＡ再起動処理シーケンス５３は、異常を検出したチャネルアダプタモジュール２０の再起動処理である。なお、モジュールの再起動処理の一例としてＣＡ再起動処理シーケンス５３について説明するが、その他のモジュールについては、同様の再起動処理であるため説明を省略する。
【００６３】
ＣＡ再起動処理シーケンス５３は、処理ブロックと、処理ブロックごとのＣＡ処理番号、ＣＡ処理番号ごとの処理内容であるＣＡ実行処理を定義したテーブルデータである。ＣＡ再起動処理シーケンス５３は、ＲＡＭ１０２に保持される。ＣＡ再起動処理シーケンス５３は、電源投入シーケンス５２と同様に、処理ブロックという複数の処理単位に分かれている。
【００６４】
ＣＡ再起動処理シーケンス５３は、マスターＣＭが制御主体となる。マスターＣＭは、ＣＡ再起動処理シーケンス５３における処理ブロック単位の進行管理をおこなう。
処理ブロックは、「処理ブロック０１」から「処理ブロック０５」まで５つある。マスターＣＭは、「処理ブロック０１」から実行を開始し、「処理ブロック０１」の実行が完了すると、「処理ブロック０２」の実行を開始する。このようにして、マスターＣＭは、「処理ブロック０５」までの実行の完了により、異常を検出したチャネルアダプタモジュール２０の正常な再起動を確認する。
【００６５】
より詳細に説明すると、マスターＣＭは、「処理ブロック０１」において、ＣＡ処理番号「ＣＡＲ０１」、「ＣＡＲ０２」、および「ＣＡＲ０３」処理の逐次実行を、異常を検出したチャネルアダプタモジュール２０に指示する。なお、異常を検出したチャネルアダプタモジュール２０がスレーブＣＭに属する場合は、マスターＣＭは、異常を検出したチャネルアダプタモジュール２０を管理するスレーブＣＭに指示する。
【００６６】
ＣＡ処理番号「ＣＡＲ０１」は、チャネルアダプタモジュール２０をリセットする処理である。ＣＡ処理番号「ＣＡＲ０２」は、チャネルアダプタモジュール２０の電源切断と、電源切断後の電源投入とをおこなう処理である。ＣＡ処理番号「ＣＡＲ０３」は、チャネルアダプタモジュール２０のリセット状態を解除する処理である。
【００６７】
マスターＣＭは、「処理ブロック０１」において、ＣＡ処理番号「ＣＡＲ０３」の処理に続く処理がないことから、「処理ブロック０１」の処理を完了する。
マスターＣＭは、完了した「処理ブロック０１」の処理の次の処理である「処理ブロック０２」の実行を開始する。「処理ブロック０２」は、ＣＡ処理番号「ＣＡＲ０４」の処理がある。ＣＡ処理番号「ＣＡＲ０４」は、チャネルアダプタモジュール２０のハードウェア設定をおこなう処理である。
【００６８】
「処理ブロック０３」は、ＣＡ処理番号「ＣＡＲ０５」の処理がある。ＣＡ処理番号「ＣＡＲ０５」の処理は、アダプタ処理の開始を指示する処理である。
「処理ブロック０４」は、ＣＡ処理番号「ＣＡＲ０６」の処理がある。ＣＡ処理番号「ＣＡＲ０６」の処理は、構成情報の受領を指示する処理である。
【００６９】
「処理ブロック０５」は、ＣＡ処理番号「ＣＡＲ０７」の処理がある。ＣＡ処理番号「ＣＡＲ０７」の処理は、通信可能にネットワークに接続するオンラインを指示する処理である。
【００７０】
マスターＣＭは、チャネルアダプタモジュール２０の再起動完了により、チャネルアダプタモジュール２０の正常な再起動を確認することができる。
次に、第２の実施形態のマスターＣＭの制御部１９が実行する電源投入時起動処理について図９を用いて説明する。図９は、第２の実施形態の電源投入時起動処理のフローチャートである。
【００７１】
電源投入時起動処理は、ストレージ装置１６の起動を制御する処理である。電源投入時起動処理は、マスターＣＭの制御部１９により電源投入時またはリセット時に実行される。
【００７２】
［ステップＳ１１］マスターＣＭの制御部１９は、電源投入シーケンス５２の処理対象となる処理ブロックを「０１」に初期化する。
［ステップＳ１２］マスターＣＭの制御部１９は、電源投入シーケンス５２の最終処理ブロック（「処理ブロック０９」）の起動処理が終了（完了）したか否かを判定する。マスターＣＭの制御部１９は、電源投入シーケンス５２の最終処理ブロックの起動処理が終了した場合に電源投入時起動処理を終了し、終了していない場合にステップＳ１３にすすむ。
【００７３】
［ステップＳ１３］マスターＣＭの制御部１９は、処理ブロック起動処理を実行する。処理ブロック起動処理は、電源投入シーケンス５２の処理対象となる処理ブロックを実行する処理である。マスターＣＭは、ＣＭ実行処理がある場合に、マスターＣＭのＣＭ実行処理を実行するとともに、スレーブＣＭにＣＭ実行処理の実行を指示する。また、マスターＣＭは、ＣＡ実行処理がある場合に、マスターＣＭに属するチャネルアダプタモジュール２０とスレーブＣＭにＣＡ実行処理の実行を指示する。スレーブＣＭは、ＣＭ実行処理の実行を指示された場合に、ＣＭ実行処理を実行して、ＣＭ実行処理の実行完了後にマスターＣＭに完了応答をおこなう。スレーブＣＭは、ＣＡ実行処理の実行を指示された場合に、スレーブＣＭに属するチャネルアダプタモジュール２０にＣＡ実行処理の実行を指示する。スレーブＣＭは、チャネルアダプタモジュール２０からの完了応答を受けて、マスターＣＭに完了応答をおこなう。マスターＣＭの制御部１９は、電源投入シーケンス５２の処理対象となる処理ブロックの実行完了を確認して、処理ブロック起動処理を終了する。なお、完了応答は、正常に処理を終了したか、異常を生じて処理を終了しなかったかを判別可能な情報を含み、所定時間内に応答のない無応答を含む。
【００７４】
［ステップＳ１４］マスターＣＭの制御部１９は、電源投入シーケンス５２の処理対象となる処理ブロックの実行による異常モジュールの検出の有無を判定する。マスターＣＭの制御部１９は、自己の処理結果あるいは完了応答により異常モジュールの検出の有無を判定することができる。マスターＣＭの制御部１９は、異常モジュールの検出がある場合にステップＳ１５にすすみ、検出がない場合にステップＳ１７にすすむ。
【００７５】
［ステップＳ１５］マスターＣＭの制御部１９は、モジュール再起動処理を実行する。モジュール再起動処理は、異常を検出したモジュールのうちから再起動対象のモジュールを選択し、再起動をおこなう処理である。モジュール再起動処理の詳細は、図１０を用いて後述する。
【００７６】
［ステップＳ１６］マスターＣＭの制御部１９は、やり直し起動処理を実行する。やり直し起動処理は、再起動処理を実行したモジュールのうち正常に起動したモジュール（再起動モジュール）について、電源投入シーケンス５２のやり直しをおこなう処理である。マスターＣＭの制御部１９は、再起動モジュールについて、電源投入シーケンス５２の「処理ブロック０１」から実行中の処理ブロックまでの処理を再実行する。
【００７７】
［ステップＳ１７］マスターＣＭの制御部１９は、処理ブロックを１インクリメントしてステップＳ１２にすすむ。
このようにして、ストレージ装置１６は、電源投入時起動処理を実行し、異常を検出したモジュールのうち選択したモジュールについて再起動処理と、やり直し起動処理とを実行することで、早期の復旧可能性の向上を図る。
【００７８】
次に、第２の実施形態のマスターＣＭの制御部１９が実行するモジュール再起動処理について図１０を用いて説明する。図１０は、第２の実施形態のモジュール再起動処理のフローチャートである。
【００７９】
モジュール再起動処理は、異常を検出したモジュールのうちから再起動対象のモジュールを選択し、再起動をおこなう処理である。モジュール再起動処理は、マスターＣＭの制御部１９により電源投入時起動処理のステップＳ１５で実行される。
【００８０】
［ステップＳ２１］マスターＣＭの制御部１９は、サーバグループ情報５１を保持しているか否かを判定する。マスターＣＭの制御部１９は、サーバグループ情報５１を保持している場合にステップＳ２３にすすみ、保持していない場合にステップＳ２２にすすむ。なお、マスターＣＭの制御部１９は、ストレージ装置１６のモジュールの冗長構成を特定可能な構成情報を保持していればよく、サーバグループ情報５１に代えてその他の構成情報で判定をおこなうようにしてもよい。
【００８１】
［ステップＳ２２］マスターＣＭの制御部１９は、モジュールの冗長構成を特定できないため、すべての異常モジュールを再起動して、モジュール再起動処理を終了する。異常モジュールは、チャネルアダプタモジュール２０であるので、異常モジュールの再起動は、ＣＡ再起動処理シーケンス５３にしたがっておこなう。
【００８２】
［ステップＳ２３］マスターＣＭの制御部１９は、サーバグループの番号を「１」に初期化する。
［ステップＳ２４］マスターＣＭの制御部１９は、サーバグループ所属のすべてのチャネルアダプタモジュール２０の異常を検出したか否かを判定する。マスターＣＭの制御部１９は、すべてのチャネルアダプタモジュール２０の異常を検出した場合にステップＳ２５にすすみ、いずれかのチャネルアダプタモジュール２０の異常を検出していない場合にステップＳ２６にすすむ。
【００８３】
なお、いずれかのチャネルアダプタモジュール２０の異常を検出していない場合に、再起動モジュール選択処理を実行しなかったが、サーバグループごとのチャネルアダプタモジュール２０の最低稼働台数が１台だからである。すなわち、モジュール再起動処理は、ステップＳ２４において、サーバグループごとのチャネルアダプタモジュール２０の最低稼働台数が確保可能か否かの判定をおこなっている。したがって、モジュール再起動処理は、ステップＳ２４において、サーバグループごとのチャネルアダプタモジュール２０の最低稼働台数（たとえば、２台など）に応じた判定をおこなうようにしてもよい。
【００８４】
［ステップＳ２５］マスターＣＭの制御部１９は、再起動モジュール選択処理を実行する。再起動モジュール選択処理は、異常を検出したモジュールの復旧優先度を比較して再起動対象のモジュールを選択し、再起動をおこなう処理である。再起動モジュール選択処理の詳細は、図１１を用いて後述する。
【００８５】
［ステップＳ２６］マスターＣＭの制御部１９は、最終サーバグループまでのチャネルアダプタモジュール２０の最低稼働台数の確保を確認したか否かを判定する。マスターＣＭの制御部１９は、最終サーバグループまでのチャネルアダプタモジュール２０の最低稼働台数の確保を確認していない場合にステップＳ２７にすすみ、確認している場合にモジュール再起動処理を終了する。
【００８６】
［ステップＳ２７］マスターＣＭの制御部１９は、サーバグループの番号を１インクリメントしてステップＳ２４にすすむ。
次に、第２の実施形態のマスターＣＭの制御部１９が実行する再起動モジュール選択処理について図１１を用いて説明する。図１１は、第２の実施形態の再起動モジュール選択処理のフローチャートである。
【００８７】
再起動モジュール選択処理は、異常を検出したモジュールの復旧優先度を比較して再起動対象のモジュールを選択し、再起動をおこなう処理である。再起動モジュール選択処理は、マスターＣＭの制御部１９によりモジュール再起動処理のステップＳ２５で実行される。
【００８８】
［ステップＳ３１］マスターＣＭの制御部１９は、異常を検出したモジュール（異常モジュール）を再起動対象とするリストである異常構成情報を生成する。
ここで、異常構成情報について図１２を用いて説明する。図１２は、第２の実施形態の異常構成情報の一例を示す図である。異常構成情報５５は、異常を検出したモジュールごとの異常に関する情報であり、位置情報、Ｓｔａｔｕｓ（状態）、エラー要因、重度、復旧可能性、およびポイントを含む。
【００８９】
位置情報は、異常を検出したモジュールが属するモジュールと、異常を検出したモジュールを特定可能な情報である。たとえば、位置情報「ＣＭ＃０、ＣＡ＃００」は、管理モジュール１７（ＣＭ＃０）に属するチャネルアダプタモジュール２０（ＣＡ＃００）で異常を検出したことを示す。
【００９０】
Ｓｔａｔｕｓ（状態）は、異常検出対象のモジュールの状態を示す情報である。たとえば、Ｓｔａｔｕｓ「Ｄｅｇｒａｄｅ」は、異常検出対象のモジュールが異常な状態であることを示す。
【００９１】
エラー要因は、異常の要因を示す情報である。異常の要因を示す情報は、たとえば、「ハードエラー」、「ソフトエラー」「致命的なハードエラー」などがある。エラー要因は、エラー（異常）の種別を特定可能な情報であってもよく、たとえば、エラーコードなどであってもよい。
【００９２】
重度は、異常の程度を相対的に比較可能な情報である。重度は、たとえば、「軽」、「中」、「重」があり、異常の程度が軽いのが「軽」、異常の程度が重いのが「重」、「軽」と「重」との中間程度の異常が「中」である。したがって、重度に応じてモジュールの復旧順序を決定する場合、重度は復旧優先度に相当する。復旧優先度は、復旧順序を決定に用いればよく、重度のほかに復旧可能性を含めてもよい。
【００９３】
なお、重度は、エラー要因に応じて一意に決定されるものであってもよいし、位置、タイミングなどの異常検出時の状況に応じて決定されるものであってもよい。
復旧可能性は、エラー復旧の可能性を示す情報である。たとえば、復旧可能性は、エラー復旧の可能性のある「復旧可能」と、エラー復旧の見込みのない「復旧不能」がある。
【００９４】
たとえば、異常構成情報５５によれば、マスターＣＭは、復旧優先度の高い（重度の軽い）ＣＡ＃０１の復旧を優先し、ＣＡ＃０１の復旧に失敗した場合にＣＡ＃００の復旧をおこなう。ＣＡ＃１０は、復旧可能性が「復旧不能」であるため復旧対象とならない。
【００９５】
ポイントは、エラーを検出した処理番号を示す情報である。ポイント「ＣＡ０４」は、電源投入シーケンス５２の「処理ブロック０５」において、ＣＡ処理番号「ＣＡ０４」の処理中にエラーを検出したことを示す。
【００９６】
［ステップＳ３２］マスターＣＭの制御部１９は、再起動対象モジュールのうち、重度の軽いモジュールを１つ選択する。重度とは、異常の程度である。マスターＣＭの制御部１９は、起動対象モジュールの重度を比較して最も重度の軽いモジュールを選択する。重度の軽重は、経験的に得られる復旧可能性の高低と相関を有するように、異常の種類ごとにあらかじめ設定される。したがって、起動対象モジュールの重度の比較は、復旧可能性の比較に相当する。
【００９７】
［ステップＳ３３］マスターＣＭの制御部１９は、選択した異常モジュールを再起動する。異常モジュールは、チャネルアダプタモジュール２０であるので、異常モジュールの再起動は、ＣＡ再起動処理シーケンス５３にしたがっておこなう。
【００９８】
［ステップＳ３４］マスターＣＭの制御部１９は、異常モジュールの再起動が正常に終了したか否かを判定する。マスターＣＭの制御部１９は、異常モジュールの再起動が正常に終了した場合にステップＳ３５にすすみ、正常に終了していない場合にステップＳ３６にすすむ。
【００９９】
［ステップＳ３５］マスターＣＭの制御部１９は、異常モジュールの再起動が正常に終了したことを、ＲＡＭ１０２の作業領域に記録して、再起動モジュール選択処理を終了する。正常に再起動が完了したモジュールは、作業領域の記録から特定可能であり、電源投入時起動処理のステップＳ１６におけるやり直し起動処理の処理対象となる。
【０１００】
［ステップＳ３６］マスターＣＭの制御部１９は、異常モジュールの再起動に失敗したことを、ＲＡＭ１０２の作業領域に記録する。
［ステップＳ３７］マスターＣＭの制御部１９は、異常構成情報にあるすべての異常モジュールの再起動を実施したか否かを判定する。マスターＣＭの制御部１９は、すべての異常モジュールの再起動を実施していない場合にステップＳ３２にすすみ、すべての異常モジュールの再起動を実施した場合に再起動モジュール選択処理を終了する。なお、異常が深刻で再起動可能性のない異常モジュールは、再起動対象からあらかじめ除外するようにしてもよい。
【０１０１】
このようにして、マスターＣＭの制御部１９は、異常を検出したモジュールのうちから復旧可能性の高い異常モジュールを選択して再起動をおこなう。したがって、ストレージ装置１６は、復旧可能性の低いモジュールを再起動して異常を繰り返し検出することによる、起動処理の遅延を低減できる。
【０１０２】
これにより、ストレージ装置１６は、定時完了性の高い電源投入時起動処理を実行することができる。なお、ストレージ装置１６は、電源投入時起動処理の終了時までに、異常モジュールのいくつかについて再起動をおこなっていない。マスターＣＭの制御部１９は、ストレージ装置１６が装置Ｒｅａｄｙとなった電源投入時起動処理の終了後に、異常モジュールの再起動をおこなうことで、サービス提供を可能な状態で冗長構成の復旧を図る。
【０１０３】
次に、第２の実施形態のマスターＣＭの制御部１９が実行する電源投入時起動処理において、冗長構成のチャネルアダプタモジュール２０の第１の異常検出例について図１３、図１４を用いて説明する。図１３は、第２の実施形態の電源投入シーケンスにおいて冗長構成のチャネルアダプタモジュールの１つの異常検出例である。
【０１０４】
第１の異常検出例は、電源投入シーケンス５２の「処理ブロック０５」において、ＣＡ処理番号「ＣＡ０４」の処理中に、冗長構成されたチャネルアダプタモジュール２０の１つであるＣＡ＃００の起動失敗（異常）を検出したケースである。
【０１０５】
このときに生成される異常構成情報を図１４に示す。図１４は、図１３に示す異常検出時の異常構成情報の一例を示す図である。
異常構成情報５６によれば、ＣＡ＃００は、復旧可能な重度「中」のエラーである。ＣＡ＃００は、サーバグループ情報５１より、冗長構成されたチャネルアダプタモジュール２０の１つであり、ＣＡ＃００が稼働しなくてもＣＡ＃１０が稼働する縮退運転が可能であることがわかる。したがって、マスターＣＭは、ＣＡ＃００の異常を検出してもＣＡ＃００の復旧（ＣＡ再起動処理）をおこなわずに、ストレージ装置１６の起動処理を進める。マスターＣＭは、ストレージ装置１６を装置Ｒｅａｄｙにした後、ＣＡ＃００の復旧をおこなう。したがって、ストレージ装置１６は、ＣＡ＃００の異常検出によって起動処理を遅延させることがない。
【０１０６】
次に、第２の実施形態のマスターＣＭの制御部１９が実行する電源投入時起動処理において、冗長構成のチャネルアダプタモジュール２０の第２の異常検出例について図１５、から図１７を用いて説明する。図１５は、第２の実施形態の電源投入シーケンスにおいて冗長構成のチャネルアダプタモジュールのすべての異常検出例である。
【０１０７】
第２の異常検出例は、電源投入シーケンス５２において、複数のチャネルアダプタモジュール２０の起動失敗（異常）を検出したケースである。第２の異常検出例は、「処理ブロック０２」において、ＣＡ処理番号「ＣＡ０２」の処理中にＣＡ＃１０の起動失敗（第１の起動失敗）を検出し、「処理ブロック０５」において、ＣＡ処理番号「ＣＡ０４」の処理中にＣＡ＃００の起動失敗（第２の起動失敗）を検出する。
【０１０８】
第１の起動失敗時に生成される異常構成情報を図１６に示す。図１６は、図１５に示す異常検出時の異常構成情報の一例を示す図である。
異常構成情報５８によれば、ＣＡ＃１０は、復旧可能な重度「中」のエラーである。ＣＡ＃１０は、サーバグループ情報５１より、冗長構成されたチャネルアダプタモジュール２０の１つであり、ＣＡ＃１０が稼働しなくてもＣＡ＃００が稼働する縮退運転が可能であることがわかる。したがって、マスターＣＭは、ＣＡ＃１０の異常を検出してもＣＡ＃１０の復旧（ＣＡ再起動処理）をおこなわずに、ストレージ装置１６の起動処理を進める。
【０１０９】
次に、第２の起動失敗時に生成される異常構成情報を図１７に示す。図１７は、図１５に示す異常検出時の異常構成情報の一例を示す図である。
異常構成情報５９によれば、ＣＡ＃００は、復旧不能な重度「重」のエラーである。ＣＡ＃００は、ＣＡ＃１０とともに冗長構成されたチャネルアダプタモジュール２０であり、すでにＣＡ＃１０の異常が検出済みであることから、ＣＡ＃００が稼働しない場合、ストレージ装置１６の縮退運転ができないことがわかる。
【０１１０】
したがって、マスターＣＭは、ＣＡ＃００とＣＡ＃１０の異常検出により、ストレージ装置１６の縮退運転を可能にするため、いずれか一方の復旧（ＣＡ再起動処理）をおこなう。ここで、マスターＣＭは、ＣＡ＃００の重度「重」とＣＡ＃１０の重度「中」を比較し、重度の軽いＣＡ＃１０の復旧可能性が高いとして、ＣＡ＃１０を復旧対象とし、ＣＡ＃００を復旧対象としない。なお、マスターＣＭは、ＣＡ＃００の復旧可能性が「復旧不能」であることをもって、ＣＡ＃００を復旧対象から外すようにしてもよい。
【０１１１】
マスターＣＭは、復旧対象となったＣＡ＃１０について、ＣＡ再起動処理を実行する。その後、マスターＣＭは、ＣＡ＃１０の正常な再起動を確認した場合に、電源投入時起動処理におけるやり直し起動処理を実行し、ストレージ装置１６の起動処理を進める。
【０１１２】
したがって、ストレージ装置１６は、第１の起動失敗だけであれば起動処理を遅延させることがない。また、ストレージ装置１６は、第２の起動失敗によりストレージ装置１６の縮退運転ができなくなった場合においても、復旧可能性が高いモジュールの再起動を優先するため、復旧可能性の低いモジュールの再起動失敗に伴い起動処理を遅延させることがない。
【０１１３】
以上、ストレージ装置１６を例示して説明したが、その他の情報処理装置においても適用可能である。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１、ストレージ装置１６（制御部１９）が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１４】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１５】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１１６】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【０１１７】
１  情報処理装置
２  起動制御部
３  起動処理実行部
４  異常情報生成部
５  縮退運転判定部
６  再起動実行部
７  起動処理
８  再起動処理
９  メモリ
１０  異常情報
１２  モジュール
１５  サーバ
１６  ストレージ装置
１７  管理モジュール
１８  デバイスエンクロージャ
１９  制御部
２０  チャネルアダプタモジュール
２１  デバイスアダプタモジュール
５０  ＣＡ接続先情報
５１  サーバグループ情報
５２  電源投入シーケンス
５３  ＣＡ再起動処理シーケンス
５５，５６，５８，５９  異常構成情報
１０１  プロセッサ
１０２  ＲＡＭ
１０３  不揮発性メモリ
１０４  入出力インタフェース
１０５  バス
【図１】
2014071668.tif 000003
【図２】
2014071668.tif 000004
【図３】
2014071668.tif 000005
【図４】
2014071668.tif 000006
【図５】
2014071668.tif 000007
【図６】
2014071668.tif 000008
【図７】
2014071668.tif 000009
【図８】
2014071668.tif 000010
【図９】
2014071668.tif 000011
【図１０】
2014071668.tif 000012
【図１１】
2014071668.tif 000013
【図１２】
2014071668.tif 000014
【図１３】
2014071668.tif 000015
【図１４】
2014071668.tif 000016
【図１５】
2014071668.tif 000017
【図１６】
2014071668.tif 000018
【図１７】
2014071668.tif 000019