(57)【要約】【課題】待機状態の装置の消費電力を低減する。【解決手段】記憶部１ａは、稼働状態である情報処理装置１の複数の動作状態のそれぞれについて、待機状態である情報処理装置２を稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報１ａ１と、情報処理装置２が備えるモジュールＢ１〜Ｂ３のそれぞれについて、起動にかかる起動時間が登録された第２の情報１ａ２とを記憶する。制御部１ｂは、第１の情報１ａ１に登録された許容時間の中から、情報処理装置１の現在の動作状態に対応する一の許容時間を特定し、第２の情報１ａ２に基づいて、モジュールＢ１〜Ｂ３の中から、停止モジュールの総起動時間が一の許容時間以下になるように停止モジュールを決定し、情報処理装置２に対して停止モジュールを停止させるように指示する。【選択図】図１
2019036202.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置において、
稼働状態である前記情報処理装置の複数の動作状態のそれぞれについて、稼働状態に遷移すると前記情報処理装置の処理を引き継ぐ他の情報処理装置を、待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報と、前記他の情報処理装置が備え、かつ、前記他の情報処理装置が稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報と、を記憶する記憶部と、
稼働状態である前記情報処理装置の現在の動作状態を判定し、前記第１の情報に登録された前記許容時間の中から前記現在の動作状態に対応する一の許容時間を特定し、前記第２の情報に基づいて、前記複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が前記一の許容時間以下になるように前記停止モジュールを決定し、待機状態である前記他の情報処理装置に対して前記停止モジュールを停止させるように指示する制御部と、
を有する情報処理装置。
【請求項２】
前記記憶部は、前記複数のモジュールのそれぞれについて、動作時の消費電力が登録された第３の情報をさらに記憶し、
前記停止モジュールの決定では、前記第３の情報に基づき、決定された前記停止モジュールの中に消費電力が所定の閾値以下である低電力モジュールがある場合、前記低電力モジュールを前記停止モジュールから除外する、
請求項１記載の情報処理装置。
【請求項３】
前記指示では、決定された前記停止モジュールの中に、前記複数のモジュールのうち前記他の情報処理装置において現在動作しているモジュールがある場合、決定された前記停止モジュールを停止させるように前記他の情報処理装置に指示するタイミングを所定時間遅延させる、
請求項１または２記載の情報処理装置。
【請求項４】
前記第１の情報に含まれる前記許容時間は、稼働状態に遷移した前記他の情報処理装置が前記情報処理装置から引き継ぐ処理を停止できる上限時間に基づいて設定される、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記複数の動作状態の１つとして、他の装置からの処理要求の受信を前記情報処理装置が許容している第１の状態が含まれ、前記複数の動作状態の他の１つとして、前記処理要求の受信を前記情報処理装置が停止している第２の状態が含まれる、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項６】
前記第１の情報には、前記第１の状態に対応する許容時間として、前記他の装置が、前記処理要求を送信してから、前記処理要求に対する応答状況に基づいて前記情報処理装置を異常と判定するまでの判定時間より短い時間が登録され、前記第２の状態に対応する許容時間として、前記判定時間以上の時間が登録される、
請求項５記載の情報処理装置。
【請求項７】
稼働状態である第１の情報処理装置と、待機状態であり、稼働状態に遷移すると前記第１の情報処理装置の処理を引き継ぐ第２の情報処理装置と、を有し、
前記第１の情報処理装置は、
前記第１の情報処理装置の複数の動作状態のそれぞれについて、前記第２の情報処理装置を待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報と、前記第２の情報処理装置が備え、かつ、前記第２の情報処理装置が稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報と、を記憶する記憶部と、
前記第１の情報処理装置の現在の動作状態を判定し、前記第１の情報に登録された前記許容時間の中から前記現在の動作状態に対応する一の許容時間を特定し、前記第２の情報に基づいて、前記複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が前記一の許容時間以下になるように前記停止モジュールを決定し、前記停止モジュールを停止させる停止指示を前記第２の情報処理装置に送信する第１の制御部と、
を有し、
前記第２の情報処理装置は、前記停止指示に応じて前記停止モジュールが停止するように制御し、前記切り換え処理が開始されると前記停止モジュールを起動させる第２の制御部を有する、
情報処理システム。
【請求項８】
コンピュータに、
稼働状態である前記コンピュータの現在の動作状態を判定し、
前記コンピュータの複数の動作状態のそれぞれについて、稼働状態に遷移すると前記コンピュータの処理を引き継ぐ他のコンピュータを、待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報を参照して、前記第１の情報に登録された前記許容時間の中から前記現在の動作状態に対応する一の許容時間を特定し、
前記他のコンピュータが備え、かつ、前記他のコンピュータが稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報を参照して、前記複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が前記一の許容時間以下になるように前記停止モジュールを決定し、
待機状態である前記他のコンピュータに対して前記停止モジュールを停止させるように指示する、
処理を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよび制御プログラムに関する。
【背景技術】
【０００２】
情報処理システムでは、消費電力を削減することが常に要求されている。例えば、近年、クラウドコンピューティングの普及に伴って、サーバ装置やストレージ装置のデータセンタへの集約が進んでいる。このようなデータセンタでは、電力設備や空調設備についての短期的な改善が困難であることから、サーバ装置やストレージ装置の省電力化の要求が強くなっている。
【０００３】
消費電力の削減技術に関しては、次のような提案がある。例えば、ホストコンピュータの動作環境や動作状況に応じて、消費電力レベルの異なる低消費電力モードのいずれかに遷移するドライブ装置が提案されている。また、例えば、ディスクアレイ装置に含まれるスタンバイディスクを定期的に起動して動作確認を行い、正常であることが確認できた場合にはスタンバイディスクを停止させ、待機状態にする制御方法が提案されている。
【０００４】
一方、情報処理システムの耐故障性を高める方法として、情報処理装置を冗長化し、一方の情報処理装置の稼働時には他方の情報処理装置を待機状態にし、稼働中の情報処理装置の障害発生時には待機状態の情報処理装置が稼働して処理を引き継ぐ方法が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３１５３７号公報
【特許文献２】特開平６−８９１４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置が冗長化された情報処理システムにおける制御方法としては、稼働中の情報処理装置において起動しているハードウェアやソフトウェアのモジュールと同じモジュールを、待機状態の情報処理装置でもすべて起動させておく方法が考えられる。この方法によれば、待機状態の情報処理装置を稼働状態に遷移させる際にモジュールを新たに起動させる必要がないため、稼働状態とする情報処理装置を切り換える処理にかかる時間を短縮できる。しかし、待機状態では動作しないモジュールが起動したままになる可能性があり、その分だけ消費電力が無駄になるという問題がある。
【０００７】
１つの側面では、本発明は、待機状態の装置の消費電力を低減可能な情報処理装置、情報処理システムおよび制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、記憶部と制御部とを有する次のような情報処理装置が提供される。この情報処理装置において、記憶部は、稼働状態である情報処理装置の複数の動作状態のそれぞれについて、稼働状態に遷移すると情報処理装置の処理を引き継ぐ他の情報処理装置を、待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報と、他の情報処理装置が備え、かつ、他の情報処理装置が稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報と、を記憶する。制御部は、稼働状態である情報処理装置の現在の動作状態を判定し、第１の情報に登録された許容時間の中から現在の動作状態に対応する一の許容時間を特定し、第２の情報に基づいて、複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が一の許容時間以下になるように停止モジュールを決定し、待機状態である他の情報処理装置に対して停止モジュールを停止させるように指示する。
【０００９】
また、１つの案では、稼働状態である第１の情報処理装置と、待機状態であり、稼働状態に遷移すると第１の情報処理装置の処理を引き継ぐ第２の情報処理装置と、を有する情報処理システムが提供される。第１の情報処理装置は、次のような記憶部および第１の制御部を有する。記憶部は、第１の情報処理装置の複数の動作状態のそれぞれについて、第２の情報処理装置を待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報と、第２の情報処理装置が備え、かつ、第２の情報処理装置が稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報と、を記憶する。第１の制御部は、第１の情報処理装置の現在の動作状態を判定し、第１の情報に登録された許容時間の中から現在の動作状態に対応する一の許容時間を特定し、第２の情報に基づいて、複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が一の許容時間以下になるように停止モジュールを決定し、停止モジュールを停止させる停止指示を第２の情報処理装置に送信する。第２の情報処理装置は、停止指示に応じて停止モジュールが停止するように制御し、切り換え処理が開始されると停止モジュールを起動させる第２の制御部を有する。
【００１０】
さらに、１つの案では、上記の情報処理装置と同様の処理をコンピュータに実行させる制御プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、待機状態の装置の消費電力を低減できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る情報処理システムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭが備える処理機能の構成例を示すブロック図である。
【図４】切り換え許容時間情報の具体例を示す図である。
【図５】モジュール情報の具体例を示す図である。
【図６】起動制御情報の具体例を示す図である。
【図７】モジュールの起動時間および消費電力の取得処理例を示すフローチャートである。
【図８】モジュールの起動状態の更新処理例を示すフローチャートである。
【図９】切り換え許容時間判定処理例を示すフローチャートである。
【図１０】起動モジュール決定処理例を示すフローチャートである。
【図１１】モジュール起動制御処理例を示すフローチャートである。
【図１２】アクティブＣＭの切り換え処理の例を示すフローチャートである。
【図１３】スタンバイのＣＭにおける消費電力と切り換え時間の推移の例を示す図である。
【図１４】変形例における起動モジュール決定処理例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理システムの構成例および処理例を示す図である。図１に示す情報処理システムは、情報処理装置１，２を含む。情報処理装置１，２のうち、一方は稼働状態となり、他方は待機状態となる。待機状態の情報処理装置は、稼働状態に遷移すると、それまで稼働状態であった情報処理装置の処理を引き継ぐ。なお、以下の説明において、初期状態では、情報処理装置１は稼働状態であり、情報処理装置２は待機状態であるものとする。
【００１４】
情報処理装置１は、記憶部１ａと制御部１ｂを有する。記憶部１ａは、例えば、情報処理装置が備える記憶装置の記憶領域として実装される。制御部１ｂは、例えば、情報処理装置１が備えるプロセッサとして実装される。
【００１５】
一方、情報処理装置２は、モジュールＢ１〜Ｂ３を備える。モジュールＢ１〜Ｂ３は、情報処理装置２が稼働状態になったときに動作する。したがって、モジュールＢ１〜Ｂ３のそれぞれは、例えば、情報処理装置２が待機状態であるときに停止していた場合、情報処理装置２を稼働状態に切り換える処理の間に起動する必要がある。
【００１６】
なお、モジュールＢ１〜Ｂ３のそれぞれは、ハードウェアのモジュールであってもよいし、ソフトウェアのモジュールであってもよい。また、情報処理装置２が備えるモジュールの数は「３」に限らず、２以上のいずれかの数とされればよい。
【００１７】
情報処理装置１の記憶部１ａには、第１の情報１ａ１と第２の情報１ａ２が記憶される。
第１の情報１ａ１には、稼働状態である情報処理装置１の動作状態Ａ１，Ａ２，・・・のそれぞれについて、情報処理装置２を待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録されている。図１の例では、動作状態Ａ１に対して許容時間ｘ１が登録され、動作状態Ａ２に対して許容時間ｘ２が登録されている。
【００１８】
例えば、情報処理装置１の動作状態によって、情報処理装置１で実行されている所定の処理を停止できる上限時間が変わる場合がある。この所定の処理とは、稼働状態に遷移した情報処理装置２が情報処理装置１から引き継ぐ処理である。より具体的な例としては、この所定の処理が情報処理装置２以外の外部装置からの処理要求に応じて実行される場合が考えられる。この場合、外部装置からの処理要求を受け入れている状態では、外部装置の処理に与える影響を小さくするために、処理要求の受信を停止している状態より、所定の処理を停止できる上限時間が短くなる。また、例えば、情報処理装置１で発生しているエラーの種類や発生状況によっても、所定の処理を停止できる上限時間は変わり得る。したがって、上記の例によれば、情報処理装置１の動作状態に応じた許容時間を、所定の処理を停止できる上限時間に基づいて決定することができる。
【００１９】
第２の情報１ａ２には、モジュールＢ１〜Ｂ３のそれぞれについて、起動にかかる起動時間が登録されている。図１の例では、モジュールＢ１に対して起動時間ｙ１が登録され、モジュールＢ２に対して起動時間ｙ２が登録され、モジュールＢ３に対して起動時間ｙ３が登録されている。
【００２０】
制御部１ｂは、情報処理装置１が稼働状態であるときに、次のような処理を実行する。
制御部１ｂは、情報処理装置１の現在の動作状態を判定する（ステップＳＴ１）。制御部１ｂは、第１の情報１ａ１に登録された許容時間の中から、判定された現在の動作状態に対応する許容時間を特定する（ステップＳＴ２）。制御部１ｂは、第２の情報１ａ２に基づいて、モジュールＢ１〜Ｂ３の中から、動作を停止させる停止モジュールの総起動時間が特定された許容時間以下になるように、停止モジュールを決定する（ステップＳＴ３）。
【００２１】
そして、制御部１ｂは、待機状態である情報処理装置２に対して、決定された停止モジュールを停止させるように指示する（ステップＳＴ４）。情報処理装置２は、指示に応じて、モジュールＢ１〜Ｂ３のうち、停止モジュールに決定されたモジュールが停止し、それ以外のモジュールが起動状態になるように制御する。
【００２２】
以上の処理により、情報処理装置２を待機状態から稼働状態に切り換える切り換え処理を実行すべき事象が発生したとき、その時点で特定されている許容時間内で、モジュールＢ１〜Ｂ３のうち停止しているモジュールの起動を完了することができる。そして、稼働状態に遷移した情報処理装置２は、起動しているモジュールＢ１〜Ｂ３を用いて、情報処理装置１で実行されていた処理を引き継ぐことができる。
【００２３】
このように、情報処理装置１の上記処理により、切り換え処理にかかる時間に影響を与えない範囲で、稼働状態である情報処理装置１の動作状態によってはモジュールＢ１〜Ｂ３の一部またはすべてを停止させておくことができる。このため、切り換え処理にかかる時間を許容時間より延ばさずに、待機状態である情報処理装置２の消費電力を低減できる。
【００２４】
〔第２の実施の形態〕
次に、第２の実施の形態に係るストレージシステムについて説明する。第２の実施の形態に係るストレージシステムでは、上記の情報処理装置１，２の例としてストレージ制御装置が適用される。
【００２５】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ストレージ装置１０と業務サーバ２０とを有する。ストレージ装置１０は、ＣＭ（Controller Module）１００，２００とＤＥ（Drive Enclosure）３００を有する。
【００２６】
ＣＭ１００，２００は、業務サーバ２０からのＩ／Ｏ（Input／Output）要求に応じて、ＤＥ３００に搭載された記憶装置に対するＩ／Ｏ処理を制御するストレージ制御装置である。例えば、ＣＭ１００，２００は、ＤＥ３００に搭載された記憶装置を物理記憶領域として用いた論理ボリュームを設定し、業務サーバ２０から論理ボリュームに対するＩ／Ｏ要求を受け付ける。
【００２７】
ここで、ＣＭ１００，２００のうち、一方はアクティブ（稼働状態）のＣＭとして動作し、他方はスタンバイ（待機状態）のＣＭとして動作する。そして、例えば、アクティブのＣＭの動作が故障などによって停止すると、他方のＣＭがスタンバイからアクティブに遷移し、それまでアクティブであったＣＭの処理を引き継ぐ。
【００２８】
より具体的には、ＣＭ１００，２００のうち、アクティブのＣＭは、業務サーバ２０からのＩ／Ｏ要求を受け付け、そのＩ／Ｏ要求に応じて、ＤＥ３００に搭載された記憶装置に対するＩ／Ｏ処理を制御する。そして、アクティブのＣＭの動作が停止すると、スタンバイのＣＭがアクティブに遷移し、それまでアクティブであったＣＭに代わって業務サーバ２０からのＩ／Ｏ要求を受け付ける。
【００２９】
なお、ＣＭ１００，２００と業務サーバ２０との間は、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。また、ＣＭ１００とＣＭ２００との間は、専用の通信経路を介して接続され、相互に通信可能になっている。
【００３０】
ＤＥ３００には、業務サーバ２０からのアクセスの対象となる記憶装置が複数台搭載されている。本実施の形態では、例として、ＤＥ３００にはこのような記憶装置としてＨＤＤ（Hard Disk Drive）３０１，３０２，３０３，・・・が搭載されているものとする。ただし、ＤＥ３００には、ＳＳＤ（Solid State Disk）などの他の種類の記憶装置が搭載されていてもよい。
【００３１】
業務サーバ２０は、各種の業務に関する処理を実行するサーバコンピュータである。業務サーバ２０は、それらの処理の実行の際に、ＣＭ１００，２００のうちアクティブのＣＭに対して、記憶装置に対するアクセスＩ／Ｏを適宜送信する。
【００３２】
業務サーバ２０は、ＣＭ１００，２００と通信するためのＨＢＡ（Host Bus Adapter）２１を備えている。ＨＢＡ２１は、ＣＭ１００と接続されたポート２１ａと、ＣＭ２００と接続されたポート２１ｂを備える。業務サーバ２０は、ＣＭ１００，２００のうちアクティブのＣＭとの間でのみ通信し、アクティブのＣＭが変更されると（すなわち、フェイルオーバが行われると）、その通信相手を他方のＣＭに切り換える。
【００３３】
なお、フェイルオーバの際の業務サーバ２０による通信相手の変更は、例えば、次のようにして行われる。ホストインタフェース１０５，２０５が備える、業務サーバ２０と通信するためのポート（図示せず）には、共通の論理的なポート番号が割り当てられ、アクティブ側のポートのみ有効化されている。そして、アクティブのＣＭの動作が停止すると、新たにアクティブになったＣＭ側のポートが有効化される。これにより、アクティブのＣＭが変更になったことを業務サーバ２０が意識することなく、業務サーバ２０の通信相手が変更される。
【００３４】
次に、ＣＭ１００，２００のハードウェア構成例について説明する。ＣＭ１００は、プロセッサ１０１、ＲＡＭ（Random Access Memory）１０２、ＳＳＤ１０３、内部インタフェース（Ｉ／Ｆ）１０４、ホストインタフェース（Ｉ／Ｆ）１０５およびドライブインタフェース（Ｉ／Ｆ）１０６を有する。ＣＭ２００は、プロセッサ２０１、ＲＡＭ２０２、ＳＳＤ２０３、内部インタフェース（Ｉ／Ｆ）２０４、ホストインタフェース（Ｉ／Ｆ）２０５およびドライブインタフェース（Ｉ／Ｆ）２０６を有する。
【００３５】
プロセッサ１０１は、ＣＭ１００全体を統括的に制御する。プロセッサ１０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＧＰＵ（Graphics Processing Unit）、ＰＬＤ（Programmable Logic Device）のいずれかである。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＧＰＵ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３６】
ＲＡＭ１０２は、ＣＭ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。ＳＳＤ１０３は、ＣＭ１００の補助記憶装置である。ＳＳＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１００は、補助記憶装置として、ＳＳＤ１０３の代わりにＨＤＤを備えていてもよい。
【００３７】
内部インタフェース１０４は、他方のＣＭ２００との間で通信するためのインタフェースであり、ＣＭ２００の内部インタフェース２０４と接続されている。ホストインタフェース１０５は、業務サーバ２０と通信するためのインタフェースである。したがって、ホストインタフェース１０５は、業務サーバ２０のＨＢＡ２１のポート２１ａと接続されている。ドライブインタフェース１０６は、ＤＥ３００に搭載されたＨＤＤ３０１，３０２，３０３，・・・と通信するためのインタフェースである。
【００３８】
一方、ＣＭ２００のプロセッサ２０１、ＲＡＭ２０２、ＳＳＤ２０３、内部インタフェース２０４、ホストインタフェース２０５、ドライブインタフェース２０６は、それぞれＣＭ１００のプロセッサ１０１、ＲＡＭ１０２、ＳＳＤ１０３、内部インタフェース１０４、ホストインタフェース１０５、ドライブインタフェース１０６に対応するハードウェアであるので、説明を省略する。なお、ホストインタフェース２０５は、業務サーバ２０のＨＢＡ２１のポート２１ｂと接続されている。
【００３９】
図３は、ＣＭが備える処理機能の構成例を示すブロック図である。なお、以下の説明では、例として、ＣＭ１００がアクティブであり、ＣＭ２００がスタンバイであるものとする。
【００４０】
アクティブのＣＭ１００は、Ｉ／Ｏ制御部１１０、シーケンス制御部１２０および記憶部１３０を有する。Ｉ／Ｏ制御部１１０およびシーケンス制御部１２０の処理は、例えば、ＣＭ１００のプロセッサ１０１が所定のプログラムを実行することで実現される。記憶部１３０は、例えば、ＣＭ１００のＲＡＭ１０２の記憶領域として実現される。
【００４１】
Ｉ／Ｏ制御部１１０は、業務サーバ２０からのＩ／Ｏ要求に応じて、ＤＥ３００に搭載された記憶装置に対するＩ／Ｏ処理を制御する。例えば、Ｉ／Ｏ制御部１１０は、業務サーバ２０からのＩ／Ｏ要求に応じて、ＤＥ３００内の記憶装置を用いた論理ボリュームに対するＩ／Ｏ処理を制御する。また、Ｉ／Ｏ制御部１１０は、例えば、論理ボリュームに対して書き込みが要求されたデータをＤＥ３００内の記憶装置に格納する際に、データの圧縮処理、あるいは、同じ内容のデータが重複しないようにする重複除去処理を実行する。
【００４２】
シーケンス制御部１２０は、内部インタフェース１０４を介して、スタンバイのＣＭ２００と連携しながら処理を実行する処理ブロックである。シーケンス制御部１２０は、ＣＭ１００がアクティブである間、スタンバイのＣＭ２００が備えるモジュールのうち、どのモジュールを起動させておくかを制御する。この際の起動制御対象のモジュールとは、ＣＭ２００がアクティブに遷移したときに動作するモジュールである。また、以下の説明では、起動制御対象のモジュールのうち、起動させておくモジュールを「起動モジュール」と呼び、停止させておくモジュールを「停止モジュール」と呼ぶ。
【００４３】
本実施の形態では、起動制御対象のモジュールは、ＣＭ２００で実行されるプログラムであるものとする。したがって、起動制御対象のモジュールは、ＣＭ２００がアクティブに遷移したときに、プロセッサ２０１に実行されるプログラムである。なお、起動制御対象のモジュールとして、ハードウェアが含まれてもよい。例えば、起動制御対象のモジュールとして、ホストインタフェース２０５やドライブインタフェース２０６を適用することができる。
【００４４】
シーケンス制御部１２０は、上記の実行制御の際、アクティブのＣＭをＣＭ１００からＣＭ２００に切り換える処理（アクティブＣＭの切り換え処理）にかかる切り換え所要時間に基づいて、起動モジュールおよび停止モジュールを決定する。具体的には、シーケンス制御部１２０は、アクティブＣＭの切り換え処理の開始から完了までの間にすべての停止モジュールの起動が完了するように、起動モジュールおよび停止モジュールを決定する。また、シーケンス制御部１２０は、ＣＭ１００の動作の状態に応じて、起動モジュールおよび停止モジュールを動的に変更する。
【００４５】
記憶部１３０には、切り換え許容時間情報１３１、モジュール情報１３２および起動制御情報１３３が記憶されている。切り換え許容時間情報１３１、モジュール情報１３２および起動制御情報１３３は、いずれもシーケンス制御部１２０によって参照される情報である。
【００４６】
切り換え許容時間情報１３１は、ＣＭ１００の動作の状態ごとの切り換え許容時間を含む。モジュール情報１３２は、起動制御対象のモジュールのそれぞれについての起動時間および消費電力を含む。起動時間とは、そのモジュールの起動にかかる時間である。消費電力とは、そのモジュールの実行によって消費される電力である。起動制御情報１３３は、主に、起動モジュールまたは停止モジュールとして設定されているモジュールを示す情報を含む。
【００４７】
一方、スタンバイのＣＭ２００は、Ｉ／Ｏ制御部２１０、シーケンス制御部２２０および切り換え制御部２３０を有する。Ｉ／Ｏ制御部２１０、シーケンス制御部２２０および切り換え制御部２３０の処理は、例えば、ＣＭ２００のプロセッサ２０１が所定のプログラムを実行することで実現される。ただし、シーケンス制御部２２０および切り換え制御部２３０の処理は、例えばＢＩＯＳ（Basic Input／Output System）のように、ＯＳが起動していない状況でもプロセッサ２０１に実行されるプログラムによって実現されることが望ましい。なお、シーケンス制御部２２０および切り換え制御部２３０の処理は、プロセッサ２０１とは別の専用回路によって実行されてもよい。
【００４８】
Ｉ／Ｏ制御部２１０は、Ｉ／Ｏ制御部１１０と同様の処理を実行する。すなわち、Ｉ／Ｏ制御部２１０は、ＣＭ２００がアクティブに遷移したとき、Ｉ／Ｏ制御部１１０が実行していた処理を引き継ぐ。
【００４９】
シーケンス制御部２２０は、アクティブのＣＭ１００のシーケンス制御部１２０からの指示に応じて、ＣＭ２００におけるモジュールの起動を制御する。この制御では、シーケンス制御部２２０は、ＣＭ２００のモジュールのうち、アクティブのＣＭ２００のシーケンス制御部１２０から指示されたモジュールのみが起動した状態になるように制御する。また、シーケンス制御部２２０は、シーケンス制御部１２０からの指示に応じて、各モジュールの起動にかかる時間や、各モジュールの実行に伴う消費電力を計測し、シーケンス制御部１２０に通知する。なお、シーケンス制御部２２０は、内部インタフェース２０４を介してＣＭ１００と通信する。
【００５０】
ここで、本実施の形態では、ＣＭ２００には、シーケンス制御部２２０による起動制御の対象となるモジュールとして、ＯＳ２４１とストレージ制御ソフトウェア２４２が記憶されているものとする。ストレージ制御ソフトウェア２４２は、Ｉ／Ｏ制御部２１０の処理を実現するためのプログラムモジュールであり、ＯＳ２４１が起動した環境上で実行される。本実施の形態では、例として、ストレージ制御ソフトウェア２４２は、ソフトウェアＳＷ１，ＳＷ２という２つのプログラムモジュールに分かれている。すなわち、ＣＭ２００のプロセッサ２０１は、ソフトウェアＳＷ１を実行することで、Ｉ／Ｏ制御部２１０の処理のうちの一部を実行でき、ソフトウェアＳＷ２を実行することで、Ｉ／Ｏ制御部２１０の残りの処理を実行できる。
【００５１】
なお、ＯＳ２４１、ソフトウェアＳＷ１，ＳＷ２にそれぞれ対応するデータは、例えば、ＣＭ２００のＳＳＤ２０３に格納されている。
切り換え制御部２３０は、ＣＭ２００をスタンバイからアクティブに切り換える処理を制御する。
【００５２】
以上の構成によれば、シーケンス制御部１２０は、ＣＭ２００がスタンバイからアクティブに変わる切り換え処理の開始から完了までのすべての停止モジュールの起動が完了されるように、起動モジュールおよび停止モジュールを決定する。そして、シーケンス制御部２２０は、その決定結果に応じて、起動モジュールだけを起動させ、停止モジュールの実行を停止する。
【００５３】
これにより、スタンバイのＣＭ２００では、ＣＭ２００がアクティブに遷移したときに起動しなくてはならないモジュールのうち、アクティブＣＭの切り換え処理時間に影響しない範囲で必要最小限のモジュールだけが起動される。したがって、アクティブＣＭの切り換え処理時間を許容時間より延ばすことなく、スタンバイのＣＭ２００における消費電力を低減できる。
【００５４】
ここで、近年のストレージ制御装置では、多機能化が進み、多くの種類の処理が実行されている。このため、ストレージ制御装置には高い性能が要求され、その分、消費電力が増加することが課題となっている。
【００５５】
例えば、前述のように、Ｉ／Ｏ制御部１１０は、業務サーバ２０からのＩ／Ｏ要求に応じた論理ボリュームに対するＩ／Ｏ制御処理、ＤＥ３００内の記憶装置に格納するデータの圧縮処理、その格納時における重複除去処理などを実行する。特に、ＤＥ３００内の記憶装置としてＳＳＤを使用した場合には、ＳＳＤの寿命を延ばすために、ＳＳＤに対する書き込み回数を低減したいという要求があり、そのためにデータの圧縮処理や重複除去処理の必要性が高まっている。
【００５６】
このように、ＣＭ１００が多機能化された分、ＣＭ１００の消費電力が増大することが課題となっている。また、ＤＥ３００内の記憶装置をＨＤＤからＳＳＤに変更することで、ＤＥ３００の消費電力を低減できるものの、その一方で上記理由からＣＭ１００の消費電力が増加する傾向にある。この観点から、ストレージシステムの省電力対策のうち、ストレージ制御装置での消費電力を低減できる対策が重要になっている、とも言える。
【００５７】
さらに、本実施の形態のようにストレージ制御装置が冗長化された場合、次のような問題がある。例えば、スタンバイのＣＭ２００において、アクティブのＣＭ１００と同じモジュールを起動させておくと、ＣＭ２００でもＣＭ１００とほぼ同じだけの電力が消費されてしまう。一方で、スタンバイのＣＭ２００においてモジュールの一部の起動を停止させてしまうと、アクティブＣＭの切り換え処理の際にそれらのモジュールを起動させる必要が生じ、その分だけ切り換え処理に余計な時間がかかる可能性がある。
【００５８】
このような問題に対して、本実施の形態のストレージ装置１０によれば、前述のように、切り換え処理時間を許容時間より延ばすことなく、スタンバイのＣＭ２００における消費電力を低減できる。
【００５９】
次に、図４〜図６を用いて、記憶部１３０に記憶される情報の具体例について説明する。
まず、図４は、切り換え許容時間情報の具体例を示す図である。切り換え許容時間情報１３１には、アクティブのＣＭ１００における動作の状態ごとに、切り換え許容時間があらかじめ設定されている。切り換え許容時間は、ＣＭ１００がその状態のときにアクティブＣＭを切り換えるべき事象が発生した場合に、アクティブＣＭの切り換え処理を開始してから完了するまでにかけることができる時間の上限値を示す。したがって、シーケンス制御部１２０による起動モジュールおよび停止モジュールの決定処理では、すべての停止モジュールの起動が切り換え許容時間内に完了することが求められる。
【００６０】
図４の例では、切り換え許容時間情報１３１には、対応する切り換え許容時間が短い順に、状態と切り換え許容時間とのペアが設定されている。例えば、状態Ｓ０に対して、最短の切り換え許容時間ＴS0＝１０秒に設定され、状態Ｓ１に対して、２番目に短い切り換え許容時間ＴS1＝３０秒が設定されている。また、ＣＭ１００の動作の状態としてｎ個（ただし、ｎは２以上の整数）の状態があるとすると、状態Ｓｎには、最長の切り換え許容時間ＴSn＝６００秒が設定されている。
【００６１】
ここで、例えば、状態Ｓｎは、ＣＭ１００が業務サーバ２０からのＩ／Ｏ要求の受け付けを停止して、Ｉ／Ｏ処理の実行を停止している状態である。このような状態としては、例えば、ＣＭ１００の起動直後の状態や、現在時刻が業務サーバ２０を用いた業務時間外である状態などがある。
【００６２】
一方、例えば、状態Ｓ１は、ＣＭ１００が業務サーバ２０からのＩ／Ｏ要求の受け付けを許容している状態（Ｉ／Ｏ処理中の状態）である。Ｉ／Ｏ処理中の状態では、アクティブのＣＭ１００の動作が停止してしまうと、業務サーバ２０からのＩ／Ｏ要求を処理できなくなり、業務サーバ２０における業務処理に支障をきたす。このため、状態Ｓ１では、Ｉ／Ｏ処理が停止されている状態Ｓｎと比較して、切り換え許容時間が短くなる。
【００６３】
具体的な例としては、状態Ｓ１，Ｓｎに対応する切り換え許容時間は、業務サーバ２０がＩ／Ｏ要求を送信してから、送信先のＣＭが異常であると判定するまでの異常判定時間を基準として設定される。すなわち、状態Ｓ１に対応する切り換え許容時間ＴS1としては、この異常判定時間より短い時間が設定され、状態Ｓｎに対応する切り換え許容時間ＴSnとしては、この異常判定時間以上の時間が設定される。このような異常判定時間としては、業務サーバ２０におけるＩ／Ｏ要求のタイムアウト時間を適用できる。あるいは、Ｉ／Ｏ要求を送信してから、Ｉ／Ｏ要求の送信を所定回数リトライしても応答を得られないと判定するまでの時間を適用することもできる。
【００６４】
このように、状態Ｓ１，Ｓｎに対応する切り換え許容時間は、業務サーバ２０における異常判定時間に基づいて設定される。このことから、状態Ｓ１，Ｓｎに対応する切り換え許容時間は、Ｉ／Ｏ要求の受け付けを停止してＩ／Ｏ処理を停止しておくことができる上限時間と言うことができる。
【００６５】
また、図４の例では、状態Ｓ０も、状態Ｓ１と同様にＩ／Ｏ処理中の状態である。ただし、状態Ｓ１は、ＣＭ１００が備えるハードウェアのエラーが生じていない状態であり、状態Ｓ０は、ハードウェアのエラーが生じている状態である。状態Ｓ０では、ハードウェアのエラーの影響によって、業務サーバ２０が上記の異常判定時間よりさらに短い時間で、送信先のＣＭが異常であると判定する可能性がある。
【００６６】
そこで、状態Ｓ０に対応する切り換え許容時間ＴS0としては、状態Ｓ１に対応する切り換え許容時間ＴS1よりさらに短い時間が設定される。図４では例として、切り換え許容時間ＴS0は１０秒に設定されている。なお、状態Ｓ０では、状態Ｓ１と比較して、Ｉ／Ｏ要求の受け付けを停止してＩ／Ｏ処理を停止しておくことができる上限時間が短い、と言うことができる。
【００６７】
この他、例えば、Ｉ／Ｏ処理中の状態でも、直近の一定時間内に所定数以上のＩ／Ｏ要求を受信した状態とそうでない状態とでは、前者の切り換え許容時間を後者より短くしてもよい。また、ハードウェアのエラーの種類に応じて切り換え許容時間を変えてもよい。例えば、コレクティブなエラーの場合は、そうでないエラーより長い切り換え許容時間を設定してもよい。
【００６８】
以上の例のように、アクティブのＣＭ１００における動作の状態によって、切り換え許容時間は変動し得る。
図５は、モジュール情報の具体例を示す図である。モジュール情報１３２には、起動制御対象のモジュールごとに起動時間と消費電力とが設定される。起動時間とは、そのモジュールの起動にかかる時間である。消費電力とは、そのモジュールの実行によって消費される電力である。また、起動時間と消費電力としては、シーケンス制御部１２０からの問い合わせに応じてＣＭ２００から適宜取得された値が設定される。
【００６９】
図５の例では、ソフトウェアＳＷ２の起動時間ＴE1が１０秒に設定され、ソフトウェアＳＷ２の消費電力ＰE1が５０Ｗ（ワット）に設定されている。また、ソフトウェアＳＷ１の起動時間ＴE2が１０秒に設定され、ソフトウェアＳＷ１の消費電力ＰE2が１００Ｗに設定されている。さらに、ＯＳ２４１の起動時間ＴE3が３０秒に設定され、ＯＳ２４１の消費電力ＰE3が１００Ｗに設定されている。
【００７０】
なお、本実施の形態では、ＣＭ２００におけるモジュールの起動順が決められているものとする。具体的には、ＣＭ２００では、ＯＳ２４１、ソフトウェアＳＷ１、ソフトウェアＳＷ２の順に起動されるものとする。これは、起動制御対象のモジュールの中から起動モジュールを決定していく際に、起動順の遅い順にモジュールを選択し、選択されたモジュールを起動モジュールに決定するか否かを判定していけばよいことを意味する。
【００７１】
また、上記に加えて、モジュール情報１３２には、モード変更の時間ＴE0と、モード変更の消費電力ＰE0とがあらかじめ設定されている。モード変更とは、アクティブＣＭの切り換え処理のうち、アクティブのＣＭ１００の状態によらず、ＣＭ２００において固定的にかかる処理を指す。このような処理には、例えば、ＣＭ２００に設定された、アクティブかスタンバイかを示す動作モードの変更処理や、業務サーバ２０からのアクセス経路の変更処理（例えば、ホストインタフェース２０５のポート有効化処理）などが含まれる。
【００７２】
モード変更の時間ＴE0とは、モード変更にかかる時間であり、モード変更の消費電力ＰE0とは、モード変更の実行によって消費される電力である。図５の例では、モード変更の時間ＴE0が１０秒に登録され、モード変更の消費電力ＰE0が９９９Ｗに設定されている。
【００７３】
図６は、起動制御情報の具体例を示す図である。起動制御情報１３３には、現切り換え時間ＴCC、現起動モジュール名ＭEC、現起動完了時間ＴPC、新切り換え時間ＴCN、新起動モジュール名ＭEN、新起動完了時間ＴPNが、シーケンス制御部１２０によって設定される。
【００７４】
現切り換え時間ＴCCは、現在設定されている切り換え許容時間を示す。現起動モジュール名ＭECは、現在起動モジュールに決定されているモジュールのうち、起動順が最も遅いモジュールを示す。現起動完了時間ＴPCは、現在停止モジュールに決定されているすべてのモジュールが起動するのにかかる時間を示す。
【００７５】
新切り換え時間ＴCNは、次に設定される切り換え許容時間を示す。新起動モジュール名ＭENは、次に起動モジュールに決定されるモジュールのうち、起動順が最も遅いモジュールを示す。新起動完了時間ＴPNは、次に停止モジュールに決定されるすべてのモジュールが起動するのにかかる時間を示す。
【００７６】
新切り換え時間ＴCN、新起動モジュール名ＭEN、新起動完了時間ＴPNは、起動モジュールおよび停止モジュールを再決定する際に設定される情報である。再決定の結果に応じてモジュールの起動状態が更新されると、新切り換え時間ＴCN、新起動モジュール名ＭEN、新起動完了時間ＴPNに設定された値が、それぞれ現切り換え時間ＴCC、現起動モジュール名ＭEC、現起動完了時間ＴPCに対して設定される。
【００７７】
次に、図７〜図１１を用いて、アクティブのＣＭ１１０における処理についてフローチャートを用いて説明する。
まず、図７は、モジュールの起動時間および消費電力の取得処理例を示すフローチャートである。この図７の処理は、例えば一定時間間隔で、繰り返し実行される。
【００７８】
［ステップＳＴ１１］シーケンス制御部１２０は、ＣＭ２００を再起動させるかを判定する。例えば、シーケンス制御部１２０は、Ｉ／Ｏ処理中でなく、かつ、前回の再起動から一定時間以上経過している場合に、ＣＭ２００を再起動させると判定する。シーケンス制御部１２０は、ＣＭ２００を再起動させると判定した場合、ステップＳＴ１２の処理を実行し、再起動させないと判定した場合、ステップＳＴ１３の処理を実行する。
【００７９】
［ステップＳＴ１２］シーケンス制御部１２０は、スタンバイのＣＭ２００に対して再起動するように指示する。ＣＭ２００のシーケンス制御部２２０は、ＣＭ２００の再起動が開始されると、ＯＳ２４１、ソフトウェアＳＷ１，ＳＷ２を順次起動させて、それぞれの起動時間および消費電力を計測する。
【００８０】
［ステップＳＴ１３］シーケンス制御部１２０は、ソフトウェアＳＷ２の起動時間ＴE1および消費電力ＰE1の最新の計測結果をＣＭ２００から取得し、取得内容によってモジュール情報１３２を更新する。
【００８１】
［ステップＳＴ１４］シーケンス制御部１２０は、ソフトウェアＳＷ１の起動時間ＴE2および消費電力ＰE2の最新の計測結果をＣＭ２００から取得し、取得内容によってモジュール情報１３２を更新する。
【００８２】
［ステップＳＴ１５］シーケンス制御部１２０は、ＯＳ２４１の起動時間ＴE3および消費電力ＰE3の最新の計測結果をＣＭ２００から取得し、取得内容によってモジュール情報１３２を更新する。
【００８３】
なお、ステップＳＴ１３〜ＳＴ１５の処理順は変更可能である。また、ＣＭ２００では、再起動を行うことなく、モジュールごとの消費電力を計測できる場合がある。ステップＳＴ１３〜ＳＴ１５では、シーケンス制御部１２０は、このようにして計測された消費電力を取得することができる。
【００８４】
次に、図８は、モジュールの起動状態の更新処理例を示すフローチャートである。この図８の処理は、例えば一定時間間隔で、繰り返し実行される。なお、図８の処理が実行される時間間隔は、切り換え許容時間情報１３１に登録された切り換え許容時間の最小値より短いことが望ましい。
【００８５】
［ステップＳＴ２１］シーケンス制御部１２０は、ＣＭ１００の現在の状態に応じた切り換え許容時間を判定する。なお、この処理の詳細については、図９を用いて説明する。
［ステップＳＴ２２］シーケンス制御部１２０は、ステップＳＴ２１での判定結果とモジュール情報１３２とに基づいて、起動モジュールを決定する。なお、この処理の詳細については、図１０を用いて説明する。
【００８６】
［ステップＳＴ２３］シーケンス制御部１２０は、起動制御対象のモジュールのうち、起動モジュールを起動させ、停止モジュールを停止させる制御処理を実行する。なお、この処理の詳細については、図１１を用いて説明する。
【００８７】
図９は、切り換え許容時間判定処理例を示すフローチャートである。なお、図９の処理は、図８のステップＳＴ２１の処理に対応する。
［ステップＳＴ３１］シーケンス制御部１２０は、起動制御情報１３３内の新切り換え時間ＴCNに、初期値として最大値を設定する。この最大値とは、切り換え許容時間情報１３１に設定された切り換え許容時間の最大値であり、図４に示した例では、状態Ｓｎに対応する切り換え許容時間ＴSn＝６００秒である。
【００８８】
［ステップＳＴ３２］シーケンス制御部１２０は、ステップＳＴ３６のループ端までの処理を、切り換え許容時間情報１３１に設定されたすべての状態について繰り返し実行する。
【００８９】
［ステップＳＴ３３］シーケンス制御部１２０は、ＣＭ１００の現在の状態が、切り換え許容時間情報１３１から選択された処理対象の状態と一致するかを判定する。シーケンス制御部１２０は、状態が一致する場合、ステップＳＴ３４の処理を実行し、状態が一致しない場合、処理をステップＳＴ３６に進める。
【００９０】
［ステップＳＴ３４］シーケンス制御部１２０は、切り換え許容時間情報１３１において処理対象の状態に対応付けられた切り換え許容時間が、現在設定されている新切り換え時間ＴCNより小さいかを判定する。シーケンス制御部１２０は、切り換え許容時間が新切り換え時間ＴCNより小さい場合、ステップＳＴ３５の処理を実行し、切り換え許容時間が新切り換え時間ＴCN以上である場合、処理をステップＳＴ３６に進める。
【００９１】
［ステップＳＴ３５］シーケンス制御部１２０は、処理対象の状態に対応付けられた切り換え許容時間を新切り換え時間ＴCNに対して設定し、新切り換え時間ＴCNを更新する。
［ステップＳＴ３６］シーケンス制御部１２０は、切り換え許容時間情報１３１に設定されたすべての状態について、ステップＳＴ３３〜Ｓ３５の処理が実行された場合に、処理を終了する。
【００９２】
以上の図９の処理により、新切り換え時間ＴCNに対して、ＣＭ１００の現在の状態に対応する切り換え許容時間が設定される。
図１０は、起動モジュール決定処理例を示すフローチャートである。なお、図１０の処理は、図８のステップＳＴ２２の処理に対応する。
【００９３】
［ステップＳＴ４１］シーケンス制御部１２０は、モジュール情報１３２を参照し、図９の処理により設定された新切り換え時間ＴCNに基づいて、スタンバイのＣＭ２００において起動しておく起動モジュールを特定する。具体的には、次のようにして起動モジュールが特定される。
【００９４】
シーケンス制御部１２０は、モジュール情報１３２を参照し、モジュールに対応する起動時間を、モジュールの起動順が遅い順に累積加算する。本実施の形態では、ソフトウェアＳＷ２、ソフトウェアＳＷ１、ＯＳ２４１の順に、対応する起動時間が累積加算される。シーケンス制御部１２０は、累積加算値とモード変更の時間ＴE0との加算値が、新切り換え時間ＴCN以下の範囲で最大になるように、モジュールを選択する。選択されたモジュール以外のモジュールが起動モジュールとなる。
【００９５】
図４、図５に示した数値の例を用いた場合、例えば、次のようにして起動モジュールが特定される。例えば、ＣＭ１００が状態Ｓ１であるとすると、対応する切り換え許容時間ＴS1は３０秒である。また、モード変更の時間ＴE0は１０秒であり、ソフトウェアＳＷ２の起動時間ＴE1は１０秒であり、ソフトウェアＳＷ１の起動時間ＴE2は１０秒であり、ＯＳ２４１の起動時間ＴE3は３０秒である。
【００９６】
ソフトウェアＳＷ２の起動時間ＴE1とソフトウェアＳＷ１の起動時間ＴE2との累積加算値に、モード変更の時間ＴE0を加算すると、合計は３０秒となり、切り換え許容時間ＴS1である３０秒以下となる。一方、ソフトウェアＳＷ２の起動時間ＴE1とソフトウェアＳＷ１の起動時間ＴE2とＯＳ２４１の起動時間ＴE3との累積加算値に、モード変更の時間ＴE0を加算すると、合計は６０秒となり、切り換え許容時間ＴS1である３０秒を超える。このため、上記のモジュール選択条件に基づいてソフトウェアＳＷ１，ＳＷ２が選択されるので、これらを除くＯＳ２４１が起動モジュールとして特定される。
【００９７】
［ステップＳＴ４２］シーケンス制御部１２０は、起動モジュールとして特定されたモジュールのうち起動順が最も遅いモジュールを特定する。例えば、起動モジュールとしてＯＳ２４１とソフトウェアＳＷ１とが特定された場合、起動順が最も遅いモジュールとしてソフトウェアＳＷ１が特定される。シーケンス制御部１２０は、モジュール情報１３２を参照し、起動順が、特定されたモジュールの次であるモジュール（次モジュール）の消費電力が「０」であるかを判定する。シーケンス制御部１２０は、次モジュールの消費電力が「０」の場合、ステップＳＴ４３の処理を実行し、次モジュールの消費電力が「０」でない場合、ステップＳＴ４４の処理を実行する。後者の場合、起動モジュールおよび停止モジュールが確定された状態となる。
【００９８】
［ステップＳＴ４３］シーケンス制御部１２０は、ステップＳＴ４２で特定された次モジュールを起動モジュールに含める。この後、ステップＳＴ４２の処理が再度実行される。
【００９９】
ここで、特定された次モジュールの消費電力が「０」の場合、次モジュールを起動させておいてもＣＭ２００の消費電力は変わらない。すなわち、次モジュールを停止させても省電力効果は得られない。そこで、ステップＳＴ４３で次モジュールを起動モジュールに含めて、次モジュールも起動させておくようにする。これにより、切り換え処理の際にＣＭ２００内の停止モジュールを起動させる時間が短縮されるので、切り換え許容時間内に切り換え処理を確実に完了できる上に、切り換え処理時間自体を短縮することもできる。
【０１００】
［ステップＳＴ４４］シーケンス制御部１２０は、確定された起動モジュールのうち起動順が最も遅いモジュールのモジュール名を、起動制御情報１３３の新起動モジュール名ＭENに設定する。また、シーケンス制御部１２０は、起動モジュール以外の各モジュール（停止モジュール）の起動時間を加算し、算出された加算値を起動制御情報１３３の新起動完了時間ＴPNに設定する。
【０１０１】
図１１は、モジュール起動制御処理例を示すフローチャートである。なお、図１１の処理は、図８のステップＳＴ２３の処理に対応する。
［ステップＳＴ５１］シーケンス制御部１２０は、起動制御情報１３３を参照し、新起動モジュール名ＭENが示すモジュール（新起動モジュール）は、現起動モジュール名ＭECが示すモジュール（現起動モジュール）より後に起動するモジュールかを判定する。シーケンス制御部１２０は、この条件が成立する場合、ステップＳＴ５２の処理を実行し、成立しない場合、ステップＳＴ５３の処理を実行する。
【０１０２】
［ステップＳＴ５２］ステップＳＴ５２で「Ｙｅｓ」と判定されるケースとは、現在停止している停止モジュールの中に、新たに起動モジュールとして特定されたモジュールが存在するケースである。シーケンス制御部１２０は、起動順に沿って、現起動モジュールの次に起動するモジュール（停止モジュール）から新起動モジュールまでの各モジュールを起動させるように、ＣＭ２００に指示する。ＣＭ２００のシーケンス制御部２２０は、この指示に応じて、現在停止している停止モジュールのうち、新たに起動モジュールとして特定されたモジュールだけを起動させる。
【０１０３】
［ステップＳＴ５３］シーケンス制御部１２０は、新起動モジュールは現起動モジュールより前に起動するモジュールかを判定する。シーケンス制御部は、この条件が成立する場合、ステップＳ５４の処理を実行し、この条件が成立しない場合、ステップＳＴ５６の処理を実行する。なお、後者のケースとは、新起動モジュールと現起動モジュールとが同一モジュールであり、現時点で新たにモジュールの起動や停止を指示する必要のないケースである。
【０１０４】
［ステップＳＴ５４］シーケンス制御部１２０は、起動制御情報１３３を参照し、新起動完了時間ＴPNから現起動完了時間ＴPCを減算した時間を算出する。シーケンス制御部１２０は、算出された時間が経過するまで待ち状態となり、算出された時間が経過するとステップＳＴ５５の処理を実行する。
【０１０５】
［ステップＳＴ５５］ステップＳＴ５３で「Ｙｅｓ」と判定されるケースとは、現在起動されている起動モジュールの中に、新たに停止モジュールとして特定されたモジュールが存在するケースである。シーケンス制御部１２０は、起動順とは逆の順序で、新起動モジュールの次に起動するモジュール（起動モジュール）から現起動モジュールまでの各モジュールを停止させるように、ＣＭ２００に指示する。ＣＭ２００のシーケンス制御部２２０は、この指示に応じて、現在起動している起動モジュールのうち、新たに停止モジュールとして特定されたモジュールだけを停止させる。
【０１０６】
ここで、図１１の処理では、ステップＳＴ５５におけるモジュール停止の指示が、ステップＳＴ５４で算出された時間だけ遅延して実行される。ステップＳＴ５４では、現在起動されている起動モジュールのうち、新たに停止モジュールとして特定されたモジュールの総起動時間が求められる。
【０１０７】
例えば、図９の処理によりＣＭ１００の現在の状態が判定されてから短時間で、ＣＭ１００の状態が変化する場合があり得る。そして、変化後の状態が、現在起動されている起動モジュールのうち、新たに停止モジュールとして特定されたモジュールを起動しておくべき状態である場合があり得る。
【０１０８】
もし、このような状態変化の直後に、アクティブＣＭの切り換え処理を行うべき事象が発生した場合、新たに停止モジュールとして特定されたモジュールを停止させてしまうと、切り換え処理の許容時間内に停止モジュールの起動を完了できなくなってしまう。すなわち、このようなケースでは、新たに停止モジュールとして特定されたモジュールを起動したままにする方が適切である。
【０１０９】
ステップＳＴ５５の処理を、ステップＳＴ５４で算出された時間だけ遅延させて実行することで、上記ケースが発生した場合でも、切り換え処理時間の許容時間内に停止モジュールの起動を完了できる可能性を高めることができる。これは、ステップＳＴ５５の処理を実行した場合に、切り換え処理時間の許容時間内に停止モジュールの起動を完了できる可能性を高めることができる、ということも示す。また、遅延時間をステップＳＴ５４の方法で算出することで、このような可能性を高めることができる。
【０１１０】
さらに、ステップＳＴ５５の処理によって停止されるモジュールが、次に図８の処理が実行されたときに起動されるという、モジュールの停止と起動とが頻繁に切り換えられる事態の発生確率を抑制することもできる。
【０１１１】
［ステップＳＴ５６］シーケンス制御部１２０は、起動制御情報１３３を次のように更新する。シーケンス制御部１２０は、新切り換え時間ＴCNを現切り換え時間ＴCCに設定して、現切り換え時間ＴCCを更新する。また、シーケンス制御部１２０は、新起動モジュール名ＭENを現起動モジュール名ＭECに設定して、現起動モジュール名ＭECを更新する。さらに、シーケンス制御部１２０は、新起動完了時間ＴPNを現起動完了時間ＴPCに設定して、現起動完了時間ＴPCを更新する。
【０１１２】
図１２は、アクティブＣＭの切り換え処理の例を示すフローチャートである。ここでは、ＣＭ２００がスタンバイからアクティブに遷移する場合について説明する。
［ステップＳＴ６１］ＣＭ２００の切り換え制御部２３０は、アクティブＣＭの切り換えを行うべきであることを示す切り換えイベントを検知する。例えば、切り換え制御部２３０は、ＣＭ１００からアクティブＣＭの切り換え指示を受信する。このような切り換え指示を、ＣＭ１００ではなく、外部の監視サーバから受信してもよい。あるいは、切り換え制御部２３０は、ＣＭ１００の動作が停止したことを検出する。切り換え制御部２３０は、このような切り換えイベントを検知すると、ステップＳＴ６２以降の処理を実行する。
【０１１３】
［ステップＳＴ６２］切り換え制御部２３０は、ＯＳ２４１が起動しているかを判定する。切り換え制御部２３０は、ＯＳ２４１が起動している場合、ステップＳＴ６３の処理を実行し、ＯＳ２４１が起動していない場合、ステップＳＴ６５の処理を実行する。
【０１１４】
［ステップＳＴ６３］切り換え制御部２３０は、ソフトウェアＳＷ１が起動しているかを判定する。切り換え制御部２３０は、ソフトウェアＳＷ１が起動している場合、ステップＳＴ６４の処理を実行し、ソフトウェアＳＷ１が起動していない場合、ステップＳＴ６６の処理を実行する。
【０１１５】
［ステップＳＴ６４］切り換え制御部２３０は、ソフトウェアＳＷ２が起動しているかを判定する。切り換え制御部２３０は、ソフトウェアＳＷ２が起動している場合、ステップＳＴ６８の処理を実行し、ソフトウェアＳＷ２が起動していない場合、ステップＳＴ６７の処理を実行する。
【０１１６】
［ステップＳＴ６５］切り換え制御部２３０は、ＯＳ２４１を起動させる。
［ステップＳＴ６６］切り換え制御部２３０は、ソフトウェアＳＷ１を起動させる。
［ステップＳＴ６７］切り換え制御部２３０は、ソフトウェアＳＷ２を起動させる。
【０１１７】
［ステップＳＴ６８］切り換え制御部２３０は、ＣＭ２００の動作モードをスタンバイからアクティブに変更するモード変更処理を実行する。このモード変更処理には、例えば、ＣＭ２００に設定された動作モードの設定値の変更処理や、業務サーバ２０からのアクセス経路の変更処理（例えば、ホストインタフェース２０５のポート有効化処理）などが含まれる。
【０１１８】
以上の図１２の処理によれば、切り換えイベントを検知した時点で起動しているモジュールが多いほど、切り換え処理にかかる時間が短くなることがわかる。
以上説明した第２の実施の形態によれば、スタンバイのＣＭ２００において停止させる停止モジュールが、アクティブのＣＭ１００の状態に応じた切り換え処理の許容時間内に停止モジュールを起動できるように決定される。このため、切り換え処理の許容時間を守れる範囲内で、スタンバイのＣＭ２００の消費電力を低減できる。切り換え処理の許容時間を守れることにより、業務サーバ２０が通信先ＣＭを異常と判定してその業務処理が停止する事態の発生確率を抑制できる。したがって、第２の実施の形態によれば、業務サーバ２０の業務処理にできるだけ悪影響を与えずに、スタンバイのＣＭ２００の消費電力を低減できる。
【０１１９】
図１３は、スタンバイのＣＭにおける消費電力と切り換え時間の推移の例を示す図である。図１３に示す太い実線は、スタンバイのＣＭ２００におけるモジュールの起動に伴う消費電力の推移を示す。図１３に示す破線は、ＣＭ２００がもしアクティブに遷移する場合における切り換え時間の推移を示す。この切り換え時間には、その時点での停止モジュールの起動にかかる時間が含まれる。
【０１２０】
図１３によれば、スタンバイのＣＭ２００において起動しておくモジュールが多いほど、切り換え処理を短時間で完了できる態勢が整うものの、ＣＭ２００の消費電力が高くなることがわかる。本実施の形態によれば、アクティブのＣＭ１００の状態に応じた切り換え処理の許容時間内に停止モジュールを起動できるように、停止モジュールが決定される。このため、業務サーバ２０における業務処理にできるだけ支障をきたすことなく、ＣＭ２００の消費電力を低減することができる。
【０１２１】
〔第２の実施の形態の変形例〕
第２の実施の形態に係るＣＭ１００の処理の一部を、次のように変更することができる。
【０１２２】
まず、ＣＭ１００の記憶部１３０には、消費電力の閾値ＰTHがさらに設定される。閾値ＰTHは、モジュールの消費電力が「０」と見なせるかを判定するための閾値である。閾値ＰTHとしては、固定値があらかじめ設定される。また、閾値ＰTHは、ユーザの操作によって任意に設定可能であってもよい。この閾値ＰTHを用いて、図１０の起動モジュール決定処理を次の図１４のように変形することができる。
【０１２３】
図１４は、変形例における起動モジュール決定処理例を示すフローチャートである。図１４の処理では、図１０のステップＳＴ４２の代わりにステップＳＴ４２ａが実行される。
【０１２４】
［ステップＳＴ４２ａ］シーケンス制御部１２０は、ステップＳＴ４１で起動モジュールとして特定されたモジュールのうち、起動順が最も遅いモジュールを特定する。シーケンス制御部１２０は、モジュール情報１３２を参照し、起動順が、特定されたモジュールの次であるモジュール（次モジュール）の消費電力が閾値ＰTH以下であるかを判定する。シーケンス制御部１２０は、次モジュールの消費電力が閾値ＰTH以下の場合、ステップＳＴ４３の処理を実行し、次モジュールの消費電力が閾値ＰTHより大きい場合、ステップＳＴ４４の処理を実行する。
【０１２５】
ステップＳＴ４２ａでは、次モジュールの消費電力が閾値ＰTH以下の場合、この消費電力は「０」と見なせると判定される。この場合には、次モジュールを起動させておいても、次モジュールを停止させた場合と比較して消費電力の低減効果はあまり高くない。一方、次モジュールを起動させておくことで、アクティブＣＭの切り換え処理が実行された場合に停止モジュールの起動を切り換え許容時間内に完了できる確実性を高めることができる。そのため、ステップＳＴ４２ａで次モジュールの消費電力が閾値ＰTH以下と判定された場合には、ステップＳＴ４３の処理により、次モジュールも起動モジュールの１つとして特定されるようにする。
【０１２６】
なお、図１４の処理と同等の効果を奏する別の処理例として、図１４ではなく図１０の処理を適用するとともに、図７の処理を次のように変形してもよい。シーケンス制御部１２０は、ステップＳＴ１３〜ＳＴ１５でモジュールの消費電力を取得したとき、取得した消費電力と上記の閾値ＰTHとを比較する。シーケンス制御部１２０は、取得した消費電力が上記の閾値ＰTHより大きい場合、取得した消費電力をそのままモジュール情報１３２に設定する。一方、シーケンス制御部１２０は、取得した消費電力が上記の閾値ＰTH以下の場合、そのモジュールに対応する消費電力の値として「０」をモジュール情報１３２に設定する。
【０１２７】
このような処理により、図１０のステップＳＴ４２では、モジュールの消費電力の計測値が「０」の場合だけでなく、その計測値が「０」と見なせる場合でも「Ｙｅｓ」と判定されるようになる。その結果、図１４の処理と同等の効果が得られる。
【０１２８】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１，２、ＣＭ１００，２００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１３１】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  情報処理装置において、
稼働状態である前記情報処理装置の複数の動作状態のそれぞれについて、稼働状態に遷移すると前記情報処理装置の処理を引き継ぐ他の情報処理装置を、待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報と、前記他の情報処理装置が備え、かつ、前記他の情報処理装置が稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報と、を記憶する記憶部と、
稼働状態である前記情報処理装置の現在の動作状態を判定し、前記第１の情報に登録された前記許容時間の中から前記現在の動作状態に対応する一の許容時間を特定し、前記第２の情報に基づいて、前記複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が前記一の許容時間以下になるように前記停止モジュールを決定し、待機状態である前記他の情報処理装置に対して前記停止モジュールを停止させるように指示する制御部と、
を有する情報処理装置。
【０１３２】
（付記２）  前記記憶部は、前記複数のモジュールのそれぞれについて、動作時の消費電力が登録された第３の情報をさらに記憶し、
前記停止モジュールの決定では、前記第３の情報に基づき、決定された前記停止モジュールの中に消費電力が所定の閾値以下である低電力モジュールがある場合、前記低電力モジュールを前記停止モジュールから除外する、
付記１記載の情報処理装置。
【０１３３】
（付記３）  前記指示では、決定された前記停止モジュールの中に、前記複数のモジュールのうち前記他の情報処理装置において現在動作しているモジュールがある場合、決定された前記停止モジュールを停止させるように前記他の情報処理装置に指示するタイミングを所定時間遅延させる、
付記１または２記載の情報処理装置。
【０１３４】
（付記４）  前記第１の情報に含まれる前記許容時間は、稼働状態に遷移した前記他の情報処理装置が前記情報処理装置から引き継ぐ処理を停止できる上限時間に基づいて設定される、
付記１乃至３のいずれか１つに記載の情報処理装置。
【０１３５】
（付記５）  前記複数の動作状態の１つとして、他の装置からの処理要求の受信を前記情報処理装置が許容している第１の状態が含まれ、前記複数の動作状態の他の１つとして、前記処理要求の受信を前記情報処理装置が停止している第２の状態が含まれる、
付記１乃至３のいずれか１つに記載の情報処理装置。
【０１３６】
（付記６）  前記第１の情報には、前記第１の状態に対応する許容時間として、前記他の装置が、前記処理要求を送信してから、前記処理要求に対する応答状況に基づいて前記情報処理装置を異常と判定するまでの判定時間より短い時間が登録され、前記第２の状態に対応する許容時間として、前記判定時間以上の時間が登録される、
付記５記載の情報処理装置。
【０１３７】
（付記７）  稼働状態である第１の情報処理装置と、待機状態であり、稼働状態に遷移すると前記第１の情報処理装置の処理を引き継ぐ第２の情報処理装置と、を有し、
前記第１の情報処理装置は、
前記第１の情報処理装置の複数の動作状態のそれぞれについて、前記第２の情報処理装置を待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報と、前記第２の情報処理装置が備え、かつ、前記第２の情報処理装置が稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報と、を記憶する記憶部と、
前記第１の情報処理装置の現在の動作状態を判定し、前記第１の情報に登録された前記許容時間の中から前記現在の動作状態に対応する一の許容時間を特定し、前記第２の情報に基づいて、前記複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が前記一の許容時間以下になるように前記停止モジュールを決定し、前記停止モジュールを停止させる停止指示を前記第２の情報処理装置に送信する第１の制御部と、
を有し、
前記第２の情報処理装置は、前記停止指示に応じて前記停止モジュールが停止するように制御し、前記切り換え処理が開始されると前記停止モジュールを起動させる第２の制御部を有する、
情報処理システム。
【０１３８】
（付記８）  前記記憶部は、前記複数のモジュールのそれぞれについて、動作時の消費電力が登録された第３の情報をさらに記憶し、
前記第１の制御部は、前記停止モジュールの決定において、前記第３の情報に基づき、決定された前記停止モジュールの中に消費電力が所定の閾値以下である低電力モジュールがある場合、前記低電力モジュールを前記停止モジュールから除外する、
付記７記載の情報処理装置。
【０１３９】
（付記９）  前記第１の制御部は、前記停止指示の送信において、決定された前記停止モジュールの中に、前記複数のモジュールのうち前記第２の情報処理装置において現在動作しているモジュールがある場合、決定された前記停止モジュールを停止させるように前記第２の情報処理装置に指示するタイミングを所定時間遅延させる、
付記７または８記載の情報処理システム。
【０１４０】
（付記１０）  前記第１の情報に含まれる前記許容時間は、稼働状態に遷移した前記第２の情報処理装置が前記第１の情報処理装置から引き継ぐ処理を停止できる上限時間に基づいて設定される、
付記７乃至９のいずれか１つに記載の情報処理システム。
【０１４１】
（付記１１）  前記複数の動作状態の１つとして、他の装置からの処理要求の受信を前記第１の情報処理装置が許容している第１の状態が含まれ、前記複数の動作状態の他の１つとして、前記処理要求の受信を前記第１の情報処理装置が停止している第２の状態が含まれる、
付記７乃至９のいずれか１つに記載の情報処理システム。
【０１４２】
（付記１２）  前記第１の情報には、前記第１の状態に対応する許容時間として、前記他の装置が、前記処理要求を送信してから、前記処理要求に対する応答状況に基づいて前記第１の情報処理装置を異常と判定するまでの判定時間より短い時間が登録され、前記第２の状態に対応する許容時間として、前記判定時間以上の時間が登録される、
付記１１記載の情報処理システム。
【０１４３】
（付記１３）  コンピュータに、
稼働状態である前記コンピュータの現在の動作状態を判定し、
前記コンピュータの複数の動作状態のそれぞれについて、稼働状態に遷移すると前記コンピュータの処理を引き継ぐ他のコンピュータを、待機状態から稼働状態に切り換える切り換え処理にかけることができる許容時間が登録された第１の情報を参照して、前記第１の情報に登録された前記許容時間の中から前記現在の動作状態に対応する一の許容時間を特定し、
前記他のコンピュータが備え、かつ、前記他のコンピュータが稼働状態の場合に動作する複数のモジュールのそれぞれについて、起動にかかる起動時間が登録された第２の情報を参照して、前記複数のモジュールの中から、動作を停止させる停止モジュールの総起動時間が前記一の許容時間以下になるように前記停止モジュールを決定し、
待機状態である前記他のコンピュータに対して前記停止モジュールを停止させるように指示する、
処理を実行させる制御プログラム。
【０１４４】
（付記１４）  前記停止モジュールの決定では、前記複数のモジュールのそれぞれについて動作時の消費電力が登録された第３の情報に基づき、決定された前記停止モジュールの中に消費電力が所定の閾値以下である低電力モジュールがある場合、前記低電力モジュールを前記停止モジュールから除外する、
付記１３記載の制御プログラム。
【符号の説明】
【０１４５】
１，２  情報処理装置
１ａ  記憶部
１ａ１  第１の情報
１ａ２  第２の情報
１ｂ  制御部
Ａ１，Ａ２  動作状態
Ｂ１〜Ｂ３  モジュール
ＳＴ１〜ＳＴ４  ステップ
【図１】
2019036202.tif 000003
【図２】
2019036202.tif 000004
【図３】
2019036202.tif 000005
【図４】
2019036202.tif 000006
【図５】
2019036202.tif 000007
【図６】
2019036202.tif 000008
【図７】
2019036202.tif 000009
【図８】
2019036202.tif 000010
【図９】
2019036202.tif 000011
【図１０】
2019036202.tif 000012
【図１１】
2019036202.tif 000013
【図１２】
2019036202.tif 000014
【図１３】
2019036202.tif 000015
【図１４】
2019036202.tif 000016