(57)【要約】【課題】クラスタシステムの実現に要する構成部材の数を低減する。【解決手段】情報処理装置は、情報処理を実行可能な第１処理モジュールと、第１処理モジュールと互換性を有する第２処理モジュールと、第１処理モジュールに代替して情報処理を実行可能な第３処理モジュールと、運用環境を構築する構成管理部とを含む。構成管理部は、二つの処理モジュールを組み合わせることで、冗長構成が実現された第１の運用環境を構築し、第１の運用環境に用いられなかった単一の処理モジュールを用いて第２の運用環境を構築する。第１処理モジュールと第２処理モジュールとにより冗長構成が実現された第１の運用環境において、情報処理に関する障害が発生した場合、構成管理部は、第２処理モジュールと第３処理モジュールとを用いて、冗長構成が実現された運用環境として第２の運用環境を再構築し、第２の運用環境において情報処理が実行される。【選択図】  図７
2019067014.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータとして情報処理を実行可能な処理モジュールである第１処理モジュールと、
前記第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な処理モジュールである第２処理モジュールと、
前記第１処理モジュール及び前記第２処理モジュールの少なくともいずれかと互換性を有するコンピュータとして、前記第１処理モジュールが実行する情報処理を、前記第１処理モジュールに代替して実行可能な処理モジュールである第３処理モジュールと、
前記第２処理モジュールと、前記第１処理モジュール又は前記第３処理モジュールの一方とを組み合わせることで、冗長構成が実現された第１の運用環境と、前記第１の運用環境の実現に用いられない単一の処理モジュールにより構成された第２の運用環境との２つの運用環境を構築する構成管理手段と、を備え、
前記第１処理モジュールと前記第２処理モジュールとにより冗長構成が実現された前記第１の運用環境において実行される情報処理に関する障害が発生した場合、前記第３処理モジュールにより構成された前記第２の運用環境は、その障害を検知して前記構成管理手段に通知し、
前記構成管理手段は、前記第３処理モジュールにより構成された前記第２の運用環境からの通知に応じて、前記第１処理モジュールと前記第２処理モジュールとの組合せを、前記第３処理モジュールと前記第２処理モジュールとの組合せに切り替えることで、前記第３処理モジュールにより構成された前記第２の運用環境を、前記第３処理モジュールと前記第２処理モジュールとにより冗長構成が実現された前記運用環境として再構築し、
前記第３処理モジュールと前記第２処理モジュールとにより再構築された前記第２の運用環境は、前記第１処理モジュールと前記第２処理モジュールとにより構成されていた前記第１の運用環境において実行されていた処理を前記第１の運用環境に代替して実行する
情報処理装置。
【請求項２】
前記第１処理モジュールと前記第２処理モジュールとにより冗長構成が実現された前記運用環境である前記第１の運用環境において障害が発生していない場合、前記第１の運用環境は、自情報処理装置における情報処理を実行する稼働系のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として第１のＯＳを実行し、前記第３処理モジュールにより構成された前記第２の運用環境は、前記第１の運用環境において障害が発生した際に稼働系のＯＳに代替して処理を実行する待機系のＯＳとして第２のＯＳを実行し、
前記第１の運用環境において、前記第１のＯＳに障害が発生した場合、前記構成管理手段により前記第２処理モジュールと前記第３処理モジュールとが組み合わされることで冗長構成が実現されるよう再構築された前記運用環境である前記第２の運用環境は、前記第２のＯＳを稼働系のＯＳとして実行する
請求項１に記載の情報処理装置。
【請求項３】
前記第１の運用環境において、前記第１のＯＳに障害が発生した後、前記第１のＯＳが障害から回復した場合、
前記第１の運用環境は、前記第１のＯＳを待機系のＯＳとして実行する
請求項２に記載の情報処理装置。
【請求項４】
前記第１の運用環境において、前記第１のＯＳに障害が発生していない場合、前記第１処理モジュールは、前記第１処理モジュールと、前記第２処理モジュールとを同期する同期処理を実行し、
前記第１の運用環境において、前記第１のＯＳに障害が発生した場合、前記第２の運用環境において、前記第３処理モジュールは、前記第３処理モジュールと、前記第２処理モジュールとを同期する同期処理を実行する
請求項２又は請求項３に記載の情報処理装置。
【請求項５】
前記第１の運用環境において、前記第１のＯＳに障害が発生した場合、
前記第２の運用環境は、前記第１処理モジュール及び前記第２処理モジュールを停止し、前記第２の運用環境が再構築された際に、前記第１処理モジュール及び前記第２処理モジュールを起動し、
前記構成管理手段は、前記第１処理モジュール及び前記第２処理モジュールが停止された後、前記第２処理モジュールを前記運用環境から切り離し、前記第２処理モジュールと前記第３処理モジュールとを組み合わせることで、前記第２の運用環境を構築する
請求項２から請求項４のいずれかに記載の情報処理装置。
【請求項６】
情報処理装置が、
コンピュータとして情報処理を実行可能な処理モジュールである第１処理モジュールと、前記第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な処理モジュールである第２処理モジュールとを組み合わせることで、コンピュータが冗長構成された運用環境である第１の運用環境を構築し、
前記第１処理モジュール及び前記第２処理モジュールの少なくともいずれかと互換性を有するコンピュータとして、前記第１処理モジュールが実行する情報処理を、前記第１処理モジュールに代替して実行可能な処理モジュールである第３処理モジュールのみを用いて構成された運用環境である第２の運用環境を構築し、
前記第１処理モジュールと前記第２処理モジュールとにより冗長構成が実現された前記第１の運用環境において実行される情報処理に関する障害が発生した場合、その障害を検知し、
前記第１処理モジュールと前記第２処理モジュールとの組合せを、前記第３処理モジュールと前記第２処理モジュールとの組合せに切り替えることで、冗長構成が実現された運用環境として前記第２の運用環境を再構築し、
前記第１の運用環境が実行する処理を、前記第１の運用環境に代替して、再構築された前記第２の運用環境において実行する
情報処理方法。
【請求項７】
情報処理装置に、
コンピュータとして情報処理を実行可能な処理モジュールである第１処理モジュールと、前記第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な処理モジュールである第２処理モジュールとを組み合わせることで、コンピュータが冗長構成された運用環境である第１の運用環境を構築する処理と、
前記第１処理モジュール及び前記第２処理モジュールの少なくともいずれかと互換性を有するコンピュータとして、前記第１処理モジュールが実行する情報処理を、前記第１処理モジュールに代替して実行可能な処理モジュールである第３処理モジュールのみで構成された運用環境である第２の運用環境を構築する処理と、
前記第１処理モジュールと前記第２処理モジュールとにより冗長構成が実現された前記第１の運用環境において実行される情報処理に関する障害が発生した場合、その障害を検知する処理と、
前記第１処理モジュールと前記第２処理モジュールとの組合せを、前記第３処理モジュールと前記第２処理モジュールとの組合せに切り替えることで、冗長構成が実現された運用環境として前記第２の運用環境を再構築する処理と、
前記第１の運用環境が実行する処理を、前記第１の運用環境に代替して、再構築された前記第２の運用環境において実行する処理と、を実行させる
コンピュータ・プログラム。
【請求項８】
情報処理を実行可能なコンピュータである第１コンピュータと、
前記第１コンピュータと互換性を有するコンピュータである第２コンピュータと、
前記第１コンピュータ及び前記第２コンピュータの少なくともいずれかと互換性を有するコンピュータとして、前記第１コンピュータが実行する情報処理を、前記第１コンピュータに代替して実行可能な第３コンピュータと、
前記第２コンピュータと、前記第１コンピュータ又は前記第３コンピュータの一方とを組み合わせることで、冗長構成が実現された第１の運用環境と、前記第１の運用環境の実現に用いられない単一のコンピュータにより構成された第２の運用環境との２つの運用環境を構築する情報処理装置である構成管理装置と、を備え、
前記第１コンピュータと前記第２コンピュータとにより冗長構成が実現された前記第１の運用環境において実行される情報処理に関する障害が発生した場合、前記第２の運用環境は、その障害を検知して前記構成管理装置に通知し、
前記構成管理装置は、前記第２の運用環境からの通知に応じて、前記第１コンピュータと前記第２コンピュータとの組合せを、前記第３コンピュータと前記第２コンピュータとの組合せに切り替えることで、冗長構成が実現された前記運用環境として、前記第２の運用環境を再構築し、
前記第３コンピュータと前記第２コンピュータとにより再構築された前記第２の運用環境は、前記第１の運用環境が実行する処理を、前記第１の運用環境に代替して実行する
情報処理システム。
【請求項９】
コンピュータとして情報処理を実行可能な装置により構成されるコンピューティング・モジュールであって、
コンピュータとして情報処理を実行可能な第１処理モジュールと、前記第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な第２処理モジュールと、を組み合わせることで、冗長構成が実現された運用環境である第１の運用環境において実行される情報処理に関する障害を検知するクラスタ制御部と、
前記第１の運用環境における障害が検知された際、前記第１処理モジュール及び前記第２処理モジュールを停止し、前記第１処理モジュールと前記第２処理モジュールとの組合せを、自コンピューティング・モジュールと前記第２処理モジュールとの組合せに切り替える要求を出力するフォールトトレラント制御部と、
その要求に応じて再構築された、自コンピューティング・モジュールと前記第２処理モジュールとを組み合わせることで冗長構成が実現された第２の運用環境において、前記第１の運用環境において実行される情報処理を、前記第１の運用環境に代替して実行するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）と、を備える
コンピューティング・モジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、可用性を向上可能な情報処理装置等に関する。
【背景技術】
【０００２】
大規模なシステムやミッションクリティカルな業務のシステムでは、障害による業務の停止を防止すべく、冗長構成を備えた、可用性の高いフォールトトレラントなシステム（例えば、フォールトトレラントサーバ等）が構築される。特許文献１には、複数のプロセッサを有する二重化システムにおいて、あるシステムのプロセッサに障害が発生した際、障害が発生したプロセッサを切り離して、障害が発生していない他のプロセッサに切り替える技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２８４８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
冗長構成（例えば、二重化されたハードウェア構成等）を有するフォールトトレラントサーバは、特許文献１のように、非冗長構成のサーバ１台より多くの構成部材（典型的には、非冗長構成のサーバ２台の構成部材）を用いて構築される。なお、構成部材には、物理的な構成部材に限らず、ソフトウェア・プログラムは、仮想計算機等も含まれ得る。
【０００５】
このようなフォールトトレラントサーバを複数用いてクラスタシステムを構築すると、クラスタシステムに用いられる構成部材の数が増加するという課題がある。これにより、クラスタシステムの構築に要するコストが増大する。本開示に係る技術は、上記のような事情を鑑みて開発されたものである。即ち、本開示の目的の一つは、可用性が高いクラスタシステムの実現に要する構成部材の数を低減可能な技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成すべく、本開示の１態様に係る情報処理装置は、以下のように構成される。即ち、本開示の１態様に係る情報処理装置は、コンピュータとして情報処理を実行可能な処理モジュールである第１処理モジュールと、第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な処理モジュールである第２処理モジュールと、第１処理モジュール及び第２処理モジュールの少なくともいずれかと互換性を有するコンピュータとして、第１処理モジュールが実行する情報処理を、第１処理モジュールに代替して実行可能な処理モジュールである第３処理モジュールと、第２処理モジュールと、第１処理モジュール又は第３処理モジュールの一方とを組み合わせることで、冗長構成が実現された第１の運用環境と、第１の運用環境の実現に用いられない単一の処理モジュールにより構成された第２の運用環境との２つの運用環境を構築する構成管理手段と、を備える。本開示の１態様に係る情報処理装置において、第１処理モジュールと第２処理モジュールとにより冗長構成が実現された第１の運用環境において実行される情報処理に関する障害が発生した場合、第３処理モジュールにより構成された第２の運用環境は、その障害を検知して構成管理手段に通知し、構成管理手段は、第３処理モジュールにより構成された第２の運用環境からの通知に応じて、第１処理モジュールと第２処理モジュールとの組合せを、第３処理モジュールと第２処理モジュールとの組合せに切り替えることで、第３処理モジュールにより構成された第２の運用環境を、第３処理モジュールと第２処理モジュールとにより冗長構成が実現された運用環境として再構築し、第３処理モジュールと第２処理モジュールとにより再構築された第２の運用環境は、第１処理モジュールと第２処理モジュールとにより構成されていた第１の運用環境において実行されていた処理を第１の運用環境に代替して実行するよう構成される。
【０００７】
本開示の他の１態様に係る通信処理方法は、情報処理装置が、コンピュータとして情報処理を実行可能な処理モジュールである第１処理モジュールと、第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な処理モジュールである第２処理モジュールとを組み合わせることで、コンピュータが冗長構成された運用環境である第１の運用環境を構築し、第１処理モジュール及び第２処理モジュールの少なくともいずれかと互換性を有するコンピュータとして、第１処理モジュールが実行する情報処理を、第１処理モジュールに代替して実行可能な処理モジュールである第３処理モジュールのみを用いて構成された運用環境である第２の運用環境を構築し、第１処理モジュールと第２処理モジュールとにより冗長構成が実現された第１の運用環境において実行される情報処理に関する障害が発生した場合、その障害を検知し、第１処理モジュールと第２処理モジュールとの組合せを、第３処理モジュールと第２処理モジュールとの組合せに切り替えることで、冗長構成が実現された運用環境として第２の運用環境を再構築し、第１の運用環境が実行する処理を、第１の運用環境に代替して、再構築された第２の運用環境において実行することを含む。
【０００８】
また、同目的は、上記構成を有する情報処理装置、通信処理方法等をコンピュータによって実現するコンピュータ・プログラム（画像解析プログラム）、及び、そのコンピュータ・プログラムが格納されているコンピュータ読み取り可能な記録媒体等によっても達成される。
【０００９】
即ち、本開示の更に他の１態様に係るコンピュータ・プログラムは、コンピュータとして情報処理を実行可能な処理モジュールである第１処理モジュールと、第１処理モジュールと互換性を有するコンピュータとして情報処理を実行可能な処理モジュールである第２処理モジュールとを組み合わせることで、コンピュータが冗長構成された運用環境である第１の運用環境を構築する処理と、第１処理モジュール及び第２処理モジュールの少なくともいずれかと互換性を有するコンピュータとして、第１処理モジュールが実行する情報処理を、第１処理モジュールに代替して実行可能な処理モジュールである第３処理モジュールのみで構成された運用環境である第２の運用環境を構築する処理と、第１処理モジュールと第２処理モジュールとにより冗長構成が実現された第１の運用環境において実行される情報処理に関する障害が発生した場合、その障害を検知する処理と、第１処理モジュールと第２処理モジュールとの組合せを、第３処理モジュールと第２処理モジュールとの組合せに切り替えることで、冗長構成が実現された運用環境として第２の運用環境を再構築する処理と、第１の運用環境が実行する処理を、第１の運用環境に代替して、再構築された第２の運用環境において実行する処理とを、情報処理装置を構成するコンピュータに実行させる。また、本開示の１態様に係る記録媒体には、上記したコンピュータ・プログラムが記録されてもよい。
【００１０】
本開示の更に他の一態様に係る情報処理システムは、情報処理を実行可能なコンピュータである第１コンピュータと、第１コンピュータと互換性を有するコンピュータである第２コンピュータと、第１コンピュータ及び第２コンピュータの少なくともいずれかと互換性を有するコンピュータとして、第１コンピュータが実行する情報処理を、第１コンピュータに代替して実行可能な第３コンピュータと、第２コンピュータと、第１コンピュータ又は第３コンピュータの一方とを組み合わせることで、冗長構成が実現された第１の運用環境と、第１の運用環境の実現に用いられない単一のコンピュータにより構成された第２の運用環境との２つの運用環境を構築する情報処理装置である構成管理装置と、を備える。本開示の一態様に係る情報処理システムにおいて、第１コンピュータと第２コンピュータとにより冗長構成が実現された第１の運用環境において実行される情報処理に関する障害が発生した場合、第２の運用環境は、その障害を検知して構成管理装置に通知し、構成管理装置は、第２の運用環境からの通知に応じて、第１コンピュータと第２コンピュータとの組合せを、第３コンピュータと第２コンピュータとの組合せに切り替えることで、冗長構成が実現された運用環境として、第２の運用環境を再構築し、第３コンピュータと第２コンピュータとにより再構築された第２の運用環境は、第１の運用環境が実行する処理を、第１の運用環境に代替して実行するよう構成される。
【発明の効果】
【００１１】
本開示によれば、可用性が高いクラスタシステムの実現に要する構成部材の数を低減可能である。
【図面の簡単な説明】
【００１２】
【図１Ａ】図１Ａは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの機能的な構成を例示するブロック図である。
【図１Ｂ】図１Ｂは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバを実現するハードウェア構成の一例を示す説明図である。
【図２】図２は、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバにおいて実行されるソフトウェア・プログラムの構成の一例を示す説明図である。
【図３Ａ】図３Ａは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバにおいて、クラスタフェイルオーバ処理が実行される過程の各状態を例示する説明図（１／２）である。
【図３Ｂ】図３Ｂは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバにおいて、クラスタフェイルオーバ処理が実行される過程の各状態を例示する説明図（２／２）である。
【図４Ａ】図４Ａは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（起動処理）の一例を示すフローチャート（１／３）である。
【図４Ｂ】図４Ｂは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（起動処理）の一例を示すフローチャート（２／３）である。
【図４Ｃ】図４Ｃは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（起動処理）の一例を示すフローチャート（３／３）である。
【図５Ａ】図５Ａは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（ソフトウェア障害からの回復処理）の一例を示すフローチャート（１／３）である。
【図５Ｂ】図５Ｂは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（ソフトウェア障害からの回復処理）の一例を示すフローチャート（２／３）である。
【図５Ｃ】図５Ｃは、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（ソフトウェア障害からの回復処理）の一例を示すフローチャート（３／３）である。
【図６】図６は、本開示に係る技術の第１実施形態におけるフォールトトレラントサーバの動作（ハードウェア障害からの回復処理）の一例を示すフローチャートである。
【図７】図７は、本開示に係る技術の第２実施形態における情報処理装置の機能的な構成を例示するブロック図である。
【図８】図８は、本開示に係る技術の第２実施形態の変形例における情報処理システムの機能的な構成を例示するブロック図である。
【発明を実施するための形態】
【００１３】
＜実施形態の概要＞
各実施形態の詳細な説明に先立って、本開示における技術的な検討事項等について説明する。
【００１４】
ハードウェアが冗長構成されたフォールトトレラントサーバは、一般的に、通常のサーバ（非冗長構成のサーバ）複数台分の構成部材（例えば、プロセッサ、記憶装置、ネットワークインタフェース、電源装置等の部品）を用いて構築されることが多い。
【００１５】
例えば、一般的な（冗長化されていない）サーバ２台分の部品を用いて構成されるフォールトトレラントサーバによりクラスタシステムを構築する場合、一般的なサーバ４台分の部品が用いられることになる。これにより、クラスタシステムに用いられる部品の数が増大する。ここで、クラスタシステムは、例えば、複数のサーバを統合することで、システム全体として可用性を向上可能なシステムである。
【００１６】
また、部品数を削減すべく、例えば、１台のフォールトトレラントサーバと、１台の一般的なサーバ（非冗長化サーバ）とを用いて、クラスタシステムを構築する場合、一般的なサーバ３台分の部品を用いて、クラスタシステムを構築することが考えられる。しかしながら、この構成では、処理を実行する稼働系のサーバとして機能していたフォールトトレラントサーバにおいて障害が発生し、クラスタフェイルオーバを実行した場合、ハードウェアが冗長化されていない一般的なサーバが、稼働系のサーバとして処理を実行する。これにより、稼働系のサーバの信頼性が低下する。フォールトトレラントサーバが、再び稼働系サーバとして機能するには、再度クラスタフェイルオーバ（フェイルバック）を実行することになる。フェイルバック処理の実行中は、クラスタシステムとしての処理能力や応答性が低下する可能性がある。また、フェイルバック処理の実行前に、稼働系のサーバとして機能する一般的なサーバに障害が生じた場合、システムダウンに至る可能性がある。なお、クラスタフェイルオーバは、クラスタシステムの構成するサーバのうち、あるサーバにおいて障害が発生した場合に、他のサーバに切り替えて処理を継続する技術である。本開示に係る技術は、上記のような状況から着想に至った技術であり、本開示に係る技術の一態様であるフォールトトレラントサーバは、例えば、概略以下のように構成されてもよい。
【００１７】
本開示に係る技術の一態様であるフォールトトレラントサーバは、例えば、１つのフォールトトレラントサーバ内に少なくとも３台のＣＰＵ／ＩＯモジュール（以下、単に「モジュール」と記載することがある）含んでよい。また、フォールトトレラントサーバは、例えば、ハードウェアが冗長化された稼働系の環境（稼働系の動作基盤）において動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）と、ハードウェアが冗長化されていない待機系の環境（待機系の動作基盤）において動作するＯＳと、を実行するよう構成されてよい。即ち、フォールトトレラントサーバにおいては、稼働系環境において動作するＯＳ（以下、「稼働系ＯＳ」と記載することがある）と、待機系環境において動作するＯＳ（以下、「待機系ＯＳ」と記載することがある）と、の２つのＯＳが実行されてよい。なお、ハードウェアが冗長化された環境は、例えば、２つのＣＰＵ／ＩＯモジュールを組み合わせた冗長構成が実現された環境であってよい。また、ハードウェアが冗長化されていない環境は、例えば、１つのＣＰＵ／ＩＯモジュールにより実現された環境であってよい。
【００１８】
フォールトトレラントサーバは、例えば、それら２つのＯＳ（及びＯＳが実行される運用環境）を、クラスタソフトウェア等を用いてクラスタ化（クラスタリング）する。フォールトトレラントサーバは、例えば、クラスタ化されたシステムにおいて稼働系ＯＳを切り替える際（例えば、クラスタフェイルオーバや、クラスタフェイルバック等）、ハードウェアが冗長化された環境において稼働系ＯＳが実行されるように、ＣＰＵ／ＩＯモジュールの組合せを切り替えてよい。これにより、本開示に係る技術は、一般的な（非冗長化）サーバ３台分の部品により、クラスタソフトウェアによる可用性と、ハードウェアの冗長性とを併せ持つフォールトトレラントサーバを実現することができる。
【００１９】
以下、本開示に係る技術について、具体的な実施形態を用いて更に詳細に説明する。なお、以下の実施形態（及びその変形例）の構成は一つの具体例であり、本開示に係る技術の範囲は、それらには限定されない。以下に示す各実施形態における構成要素の分割（例えば、機能的な単位による分割）は、その実施形態を実現可能な一例である。各実施形態を実現可能な構成は、以下の例示に限定されず、様々な構成が想定され得る。以下の各実施形態を構成する構成要素は、更に分割されてもよく、また、以下の各実施形態を構成する１以上の構成要素が統合されてもよい。以下に例示する各実施形態が１以上の物理的装置、仮想的装置、及びその組合せを用いて実現される場合、１以上の構成要素が１以上の装置により実現されてもよく、１つの構成要素が複数の装置を用いて実現されてもよい。
【００２０】
なお、本開示に係る技術の一態様である情報処理方法は、以下の各実施形態における情報処理装置の動作として実現されてもよい。また、本開示に係る技術の一態様であるコンピュータ・プログラムは、以下の各実施形態における情報処理装置において、本開示に係る技術の一態様である情報処理方法を実行するプログラムとして実装されてもよい。
【００２１】
＜第１実施形態＞
以下、本開示に係る技術の第１の実施形態について説明する。
【００２２】
［構成］
図１Ａは、本実施形態における情報処理装置（フォールトトレラントサーバ）の機能的な構成を例示するブロック図である。
【００２３】
図１Ａに例示するように、フォールトトレラントサーバ１００は、構成管理部１０１、ＣＰＵ／ＩＯモジュール１０２、ＣＰＵ／ＩＯモジュール１０３、及び、ＣＰＵ／ＩＯモジュール１０４を備える。フォールトトレラントサーバ１００を構成するこれらの構成要素の間は、適切な通信方法（通信バス等）を用いて通信可能に接続されている。以下、ＣＰＵ／ＩＯモジュール１０２を「第１処理モジュール」、ＣＰＵ／ＩＯモジュール１０３を「第２処理モジュール」、ＣＰＵ／ＩＯモジュール１０４を「第３処理モジュール」と記載することがある。また、ＣＰＵ／ＩＯモジュール（１０２，１０３，１０４）を総称して、単に「ＣＰＵ／ＩＯモジュール」と記載することがある。
【００２４】
ＣＰＵ／ＩＯモジュールは、後述するように、各種情報処理を実行可能なコンピュータとして機能する装置である。ＣＰＵ／ＩＯモジュールは、例えば、フォールトトレラントサーバにおいて着脱可能（交換可能）な一式の構成部品（コンピューティング・モジュール）として実現されてもよい。
【００２５】
図１Ａには、３台のＣＰＵ／ＩＯモジュール（１０２から１０４）を含む構成例が示されているが、本実施形態はこれには限定されない。フォールトトレラントサーバ１００は、３台以上の適切な数のＣＰＵ／ＩＯモジュールを含んでよい。
【００２６】
構成管理部１０１は、ＣＰＵ／ＩＯモジュール１０２、ＣＰＵ／ＩＯモジュール１０３、及び、ＣＰＵ／ＩＯモジュール１０４の接続関係を調整することで、２つのＣＰＵ／ＩＯモジュールを用いたハードウェアの冗長構成（二重化）を実現する。
【００２７】
図１Ｂは、図１Ａに例示する構成管理部１０１、ＣＰＵ／ＩＯモジュール１０２、ＣＰＵ／ＩＯモジュール１０３、及び、ＣＰＵ／ＩＯモジュール１０４の具体的な構成例を示すブロック図である。
【００２８】
以下、ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）の構成について説明する。
【００２９】
図１Ｂに例示するように、各ＣＰＵ／ＩＯモジュール（１０２，１０３，１０４）は、それぞれ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）（１０２ｃ、１０３ｃ、１０４ｃ）、メモリ（１０２ｄ、１０３ｄ、１０４ｄ）、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）（１０２ａ、１０３ａ、１０４ａ）、ＩＯコントローラ（１０２ｅ、１０３ｅ、１０４ｅ）、ＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｃｅ）制御部（１０２ｂ、１０３ｂ、１０４ｂ）、内部ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）（１０２ｆ、１０３ｆ、１０４ｆ）を含む。各ＣＰＵ／ＩＯモジュールは、それぞれ、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の外部記憶装置を備えてもよい。また、各ＣＰＵ／ＩＯモジュールは、外部の通信ネットワークと接続される外部ＮＩＣを備えてもよい。また、各ＣＰＵ／ＩＯモジュールは、各種記憶媒体（半導体フラッシュメモリ、光学記憶媒体、磁気記憶媒体等）に対する読み書きを制御可能なドライブデバイスを備えてもよい。
【００３０】
上記のように構成された各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）は、各種情報処理を実行可能なコンピュータとして機能する。各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）は、同じ構成のハードウェアにより実現されてもよい。また、各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）は、同じソフトウェア・プログラム（ＯＳ、ドライバ、各種アプリケーションを含む）を実行可能な、異なる構成のハードウェアにより実現されてもよい。この場合、各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）は、それぞれ互換性を有するハードウェアにより実現されてもよい。
【００３１】
以下、ＣＰＵ／ＩＯモジュール１０２（第１処理モジュール）を代表例として、ＣＰＵ／ＩＯモジュールの構成について説明する。ＣＰＵ／ＩＯモジュール１０３、１０４については、ＣＰＵ／ＩＯモジュールと概略同様の構成としてもよい。
【００３２】
ＣＰＵ１０２ｃは、フォールトトレラントサーバ１００における各種処理を実行する演算装置（プロセッサ）である。なお、ＣＰＵ１０２ｃの種類は特に限定されず、現在では一般的に利用可能なプロセッサを採用可能である。フォールトトレラントサーバの仕様に応じて、適切な処理性能を有するプロセッサが、ＣＰＵ１０２ｃとして適宜選択されてよい。なお、ＣＰＵ１０２ｃ、１０３ｃ、１０４ｃは、同種の命令を実行可能なプロセッサであってよい。これらの各プロセッサは、同一の処理性能（プロセッシングパワー）を有してもよい。
【００３３】
メモリ１０２ｄは、各種データ及びプログラムを記憶可能な記憶デバイスである。メモリ１０２ｄは、例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の、現在では一般的に利用可能な記憶デバイスを用いて実現されてもよい。メモリ１０３ｄ、１０４ｄも、メモリ１０２ｄと同様の記憶デバイスを採用可能である。
【００３４】
ＩＯコントローラ１０２ｅは、各種周辺デバイスに対する入出力を制御する制御装置である。ＩＯコントローラ１０２ｅは、例えば、内部ＮＩＣ１０２ｆ、外部ＮＩＣ、ＨＤＤ、ドライブデバイス等の周辺デバイスと、ＣＰＵ１０２ｃ、メモリ１０２ｄ、及びチップセットの間に介在し、各種データ及び信号の入出力を制御してもよい。ＩＯコントローラ１０３ｅ、１０４ｅも、ＩＯコントローラ１０２ｅと同様に構成されてよい。ＩＯコントローラ１０２ｅは、現在では一般的に入手可能なチップセットにより実現されてもよく、フォールトトレラントサーバ１００の仕様に応じた専用の集積回路により実現されてもよい。
【００３５】
ＢＭＣ１０２ａは、ＣＰＵ／ＩＯモジュール１０２の監視及び制御等を実現する管理コントローラである。ＢＭＣ１０２ａは、例えば、ＣＰＵ／ＩＯモジュール１０２自体の起動（及び再起動）、終了（停止）、構成変更等の処理を実行するよう構成される。また、ＢＭＣ１０２ａは、例えば、ＣＰＵ／ＩＯモジュール１０２に実装されている各ハードウェアを監視し、これらのハードウェアの動作や、発生したイベント等を記録する。ＢＭＣ１０２ａは、例えば、ＩＰＭＩ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）により規定された標準的な管理インタフェースを提供してもよい。ＢＭＣ１０３ａ、ＢＭＣ１０４ａについても、ＢＭＣ１０２ａと同様に構成されてもよい。なお、ＢＭＣ１０２ａ、ＢＭＣ１０３ａ、及び、ＢＭＣ１０４ａは、後述するＢＭＣスイッチ１０１ａ（ＢＭＣ管理部）を介して、相互に通信可能に接続されていてよい。また、各ＢＭＣは、他のＢＭＣの管理インタフェースを介して、他のＣＰＵ／ＩＯモジュールを制御可能に構成されてもよい。
【００３６】
ＦＴ制御部１０２ｂは、他のＣＰＵ／ＩＯモジュール（１０３又は１０４）におけるＦＴ制御部（１０３ｂ又は１０４ｂ）と連携して、ハードウェアの冗長構成を実現するコントローラである。ＦＴ制御部１０２ｂは、例えば、後述するＦＴ制御スイッチ１０１ｂ（ＦＴ制御部）を介して、他のＣＰＵ／ＩＯモジュール（１０３、１０４）におけるＦＴ制御部１０３ｂ、１０４ｂと通信可能に接続される。
【００３７】
ＦＴ制御部１０２ｂは、ＣＰＵ／ＩＯモジュール１０２と組み合わされてハードウェアの冗長構成を実現する他のＣＰＵ／ＩＯモジュール（１０３又は１０４）におけるＦＴ制御部（１０３ｂ又は１０４ｂ）と連携して、ハードウェア同期を実行するよう構成される。このハードウェア同期により、二つのＣＰＵ／ＩＯモジュールが同期され、ハードウェアの二重化が実現される。この場合、２つのＣＰＵ／ＩＯモジュールは、同じクロックで同期して動作してもよい。ＦＴ制御部１０２ｂは、ハードウェア同期処理を実行するように、ＣＰＵ／ＩＯモジュールに実装された各デバイスを制御するコントローラチップ（集積回路）として実現されてもよい。なお、ＦＴ制御部１０３ｂ、１０４ｂは、ＦＴ制御部１０２ｂと同様に構成されてもよい。
【００３８】
内部ＮＩＣ１０２ｆは、フォールトトレラントサーバ１００内に構築された内部通信ネットワークと、後述するネットワークスイッチ１０１ｃとを介して、ＣＰＵ／ＩＯモジュール１０２と、他のＣＰＵ／ＩＯモジュール（１０３、１０４）との間の通信処理を実行する。ＣＰＵ／ＩＯモジュール１０２は、内部ＮＩＣ１０２ｆを介して、他のＣＰＵ／ＩＯモジュール（１０３、１０４）との間で、各種データを相互に転送してもよい。本実施形態における内部通信ネットワークは特に限定されず、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）互換の通信ネットワークであってもよい。また、通信ネットワークは、例えば、メタル配線による実現されてもよく、光配線により実現されてもよい。内部ＮＩＣ１０３ｆ、１０４ｆについても、内部ＮＩＣ１０２ｆと同様に構成されてもよい。
【００３９】
以下、図１Ｂを参照して、構成管理部１０１の具体的な構成について説明する。図１Ｂに例示するように、構成管理部１０１は、ＢＭＣスイッチ１０１ａ、ＦＴ制御スイッチ１０１ｂ、及び、ネットワークスイッチ１０１ｃを含む。
【００４０】
ＢＭＣスイッチ１０１ａ（以下、「ＢＭＣ管理部」と記載することがある）は、各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）に実装されたＢＭＣ（１０２ａ、１０３ａ、１０４ａ）に通信可能に接続される。ＢＭＣスイッチ１０１ａは、各ＢＭＣ（１０２ａ、１０３ａ、１０４ａ）の間で、データ及び信号を相互に転送する通信スイッチの機能を有するデバイスである。ＢＭＣスイッチ１０１ａは、例えば、データ及び信号の転送を制御するマイクロコントローラと、各ＢＭＣ（１０２ａ、１０３ａ、１０４ａ）との間の通信処理を実行する通信チップとを含んでもよい。
【００４１】
ＦＴ制御スイッチ１０１ｂは、各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）に実装されたＦＴ制御部（１０２ｂ、１０３ｂ、１０４ｂ）に通信可能に接続される。ＦＴ制御スイッチ１０１ｂは、各ＦＴ制御部（１０２ｂ、１０３ｂ、１０４ｂ）の接続関係を切り替えることで、少なくとも２つのＣＰＵ／ＩＯモジュールを用いたハードウェアの冗長構成を実現する。例えば、ＦＴ制御スイッチ１０１ｂにより、ＦＴ制御部１０２ｂと、ＦＴ制御部１０３ｂとが接続され、これらの間でハードウェア同期が実行された場合、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とにより、冗長構成（ハードウェアの二重化）が実現される。同様に、ＦＴ制御スイッチ１０１ｂにより、ＦＴ制御部１０３ｂと、ＦＴ制御部１０４ｂとが接続された場合、ＣＰＵ／ＩＯモジュール１０３と、ＣＰＵ／ＩＯモジュール１０４とにより、冗長構成（ハードウェアの二重化）が実現される。
【００４２】
ＦＴ制御スイッチ１０１ｂは、例えば、各ＦＴ制御部（１０２ｂ、１０３ｂ、１０４ｂ）の間の接続関係を制御するマイクロコントローラと、各ＦＴ制御部（１０２ｂ、１０３ｂ、１０４ｂ）との間の通信処理を実行する通信チップとを含んでもよい。
【００４３】
ネットワークスイッチ１０１ｃは、各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）に実装された内部ＮＩＣ（１０２ｆ、１０３ｆ、１０４ｆ）に通信可能に接続され、それらの間におけるデータ及び信号の転送を制御する通信スイッチである。ネットワークスイッチ１０１ｃは、例えば、各内部ＮＩＣ（１０２ｆ、１０３ｆ、１０４ｆ）の間におけるデータの転送を制御するマイクロコントローラと、各内部ＮＩＣ（１０２ｆ、１０３ｆ、１０４ｆ）との間の通信処理を実行する通信チップとを含んでもよい。なお、ネットワークスイッチ１０１ｃは、現在では一般的に利用可能な通信ネットワーク用スイッチと同様の機能を備えてもよい。
【００４４】
［ソフトウェア構成］
以下、上記のように構成されたＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）において実行されるソフトウェア・プログラム（以下、単に「ソフトウェア」と記載することがある）の機能的な構成について、図２に例示するブロック図を参照して説明する。なお、以下において説明する各ソフトウェア・プログラムは、各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）における不揮発性記憶装置（例えばＨＤＤなど）に記憶されてもよく、外部の記録媒体に記録されてもよい。各ＣＰＵ／ＩＯモジュール（１０２、１０３、１０４）においては、例えば、ＣＰＵ（１０２ｃ、１０３ｃ、１０４ｃ）が、不揮発性記憶装置に記憶されたソフトウェア・プログラムをメモリ（１０２ｄ、１０３ｄ、１０４ｄ）に読み込み、それらを実行してもよい。
【００４５】
以下においては、説明の便宜上、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とにより、稼働系のＯＳが実行される動作基盤（ハードウェアが二重化された運用環境）が提供され、ＣＰＵ／ＩＯモジュール１０４により、待機系のＯＳが実行される動作基盤が提供されることを想定する。
【００４６】
また、以下においては、代表例として、ＣＰＵ／ＩＯモジュール１０２及びＣＰＵ／ＩＯモジュール１０３により構成される稼働系の運用環境において実行されるＯＳ及びソフトウェアについて説明する。ＣＰＵ／ＩＯモジュール１０４により実現される待機系の運用環境においても、同様のソフトウェアが実行可能であり、これにより、クラスタリングが実現される。
【００４７】
ＣＰＵ／ＩＯモジュールが起動された際、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）であるＯＳ２０１が起動する。ＯＳ２０１は、現在では一般的に利用可能な各種のＯＳ（例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）等）であってもよい。ＯＳ２０１は、ＣＰＵ／ＩＯモジュール１０２に実装された各種ハードウェアを制御する管理機能を提供すると共に、各種アプリケーション・プログラムを実行する実行環境を提供する。
【００４８】
クラスタソフトウェア２０２は、ハードウェアが冗長化された稼働系の運用環境で実行されるＯＳ２０１と、待機系の運用環境において実行されるＯＳとを連携させることで、それらを用いたクラスタシステムを構成する（クラスタリング環境を実現する）。クラスタソフトウェア２０２は、ＣＰＵ／ＩＯモジュールに含まれるＣＰＵ（１０２ｃ等）において実行可能なコンピュータプログラムであってよい。
【００４９】
本実施形態におけるクラスタソフトウェア２０２は、通知処理部２０２ａと、クラスタ制御部２０２ｂとを有してもよい。
【００５０】
通知処理部２０２ａは、クラスタソフトウェア２０２と、ＦＴ制御ソフトウェア２０３との間の通知処理を実現する。通知処理部２０２ａは、例えば、ＯＳ２０１において提供されるプロセス間通信や、共有メモリ等の方法を用いて、クラスタソフトウェア２０２と、ＦＴ制御ソフトウェア２０３との間の通信を実現してもよい。
【００５１】
クラスタ制御部２０２ｂは、ＦＴ制御ソフトウェア２０３からの指示（通知）に応じて、クラスタシステムを構成するＯＳ２０１に対する各種操作を実行する。具体的には、クラスタ制御部２０２ｂは、ＦＴ制御ソフトウェア２０３からの指示（通知）に応じて、クラスタシステムを構成するＯＳ２０１をシャットダウンする処理を実行してもよい。なお、クラスタ制御部２０２ｂは、クラスタシステムを構成するＯＳ２０１の状態を、ＦＴ制御ソフトウェア２０３に提供（通知）してもよい。
【００５２】
本実施形態におけるクラスタソフトウェア２０２は、上記に限定されず、クラスタリングの実現に関する一般的な機能を備えてよい。クラスタソフトウェア２０２は、例えば、クラスタを構成する他のＯＳにおいて発生した障害を検知する処理を実行可能であってよい。クラスタソフトウェア２０２は、また、例えば、クラスタを構成する他のＯＳにおいて障害が発生した際、クラスタフェイルオーバ処理を実行可能であってよい。クラスタソフトウェア２０２は、また、例えば、クラスタを構成する他のＯＳにおける障害が解消した際、クラスタフェイルバック処理を実行可能であってよい。
【００５３】
ＦＴ制御ソフトウェア２０３は、ＢＭＣ（例えば、ＢＭＣ１０２ａ等）及びＦＴ制御部（例えば、ＦＴ制御部１０２ｂ等）を用いて、ハードウェアの２重化を実現する。ＦＴ制御ソフトウェア２０３は、ＦＴ二重化制御部２０３ａ、通知処理部２０３ｂ、ＦＴ制御スイッチ管理部２０３ｃ、及び、ＢＭＣ制御部２０３ｄを有してもよい。ＦＴ制御ソフトウェア２０３は、ＣＰＵ／ＩＯモジュールに含まれるＣＰＵ（１０２ｃ等）において実行可能なコンピュータ・プログラムであってよい。
【００５４】
ＦＴ二重化制御部２０３ａは、ＦＴ制御部（１０２ｂ、１０３ｂ、１０４ｂ等）やＢＭＣ（１０２ａ、１０３ａ、１０４ａ等）からの通知に応じて、ハードウェアの二重化に関する処理を実行する。ＦＴ二重化制御部２０３ａは、また、クラスタソフトウェア２０２からの通知に応じて、ハードウェアの二重化に関する処理を実行する。ＦＴ二重化制御部２０３ａは、例えば、クラスタソフトウェア２０２から、稼働系のＯＳが実行される動作基盤（運用環境）として、特定のＣＰＵ／ＩＯモジュールが選択されたことを表す通知を受け付けてもよい。ＦＴ二重化制御部２０３ａは、例えば、その通知に応じて、ハードウェアの冗長構成を実現するよう、ＦＴ制御部（例えば、ＦＴ制御部１０２ｂ）を制御してもよい。
【００５５】
通知処理部２０３ｂは、クラスタソフトウェア２０２との間の通知処理を実行する。通知処理部２０２ａは、例えば、ＯＳ２０１において提供されるプロセス間通信や、共有メモリ等の方法を用いて、クラスタソフトウェア２０２と、ＦＴ制御ソフトウェア２０３との間の通信を実現してもよい。
【００５６】
ＦＴ制御スイッチ管理部２０３ｃは、ハードウェアの冗長構成を実現するＣＰＵ／ＩＯモジュールの接続状態を切り替えるよう、ＦＴ制御スイッチ１０１ｂを制御する。ＦＴ制御スイッチ管理部２０３ｃは、例えば、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とを用いてハードウェアの冗長構成を実現するよう、ＦＴ制御スイッチ１０１ｂにおける各ＣＰＵ／ＩＯモジュール間の接続関係を設定してもよい。ＦＴ制御スイッチ管理部２０３ｃは、また、例えば、ＣＰＵ／ＩＯモジュール１０４と、ＣＰＵ／ＩＯモジュール１０３とを用いてハードウェアの冗長構成を実現するよう、ＦＴ制御スイッチ１０１ｂにおける各ＣＰＵ／ＩＯモジュール間の接続関係を設定してもよい
ＢＭＣ制御部２０３ｄは、ＣＰＵ／ＩＯモジュールに関する状態を取得し、ＣＰＵ／ＩＯモジュールを操作する。具体的には、ＢＭＣ制御部２０３ｄは、例えば、ＣＰＵ／ＩＯモジュールの実行状態（起動中、シャットダウン中、稼働中、等）を取得してもよい。また、ＢＭＣ制御部２０３ｄは、例えば、ＣＰＵ／ＩＯモジュールに対して、各種指示（例えば、起動、停止、等）を通知してもよい。ＢＭＣ制御部２０３ｄは、例えば、ＩＰＭＩにより規定された管理インタフェースを用いて、上記処理を実行してもよい。各ＣＰＵ／ＩＯモジュールに実装されたＢＭＣ（例えばＢＭＣ１０２ａ）は、ＢＭＣスイッチ１０１ａを介して、他のＣＰＵ／ＩＯモジュールの情報を取得し、他のＣＰＵ／ＩＯモジュールを操作可能であってよい。
【００５７】
［動作］
上記のように構成されたフォールトトレラントサーバ１００の動作について説明する。
【００５８】
図３Ａ及び図３Ｂは、フォールトトレラントサーバ１００が起動してから、障害が発生し、フェイルオーバ処理により稼働系のＯＳが切り替わるまでの具体例を、模式的に表す説明図である。また、図４Ａから図６は、フォールトトレラントサーバ１００の動作の具体例を示すフローチャートである。
【００５９】
以下においては、初期の稼働状態として、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とによりハードウェアが二重化された稼働系の運用環境（第１の運用環境）が提供され、ＣＰＵ／ＩＯモジュール１０４により待機系の運用環境（第２の運用環境）が提供されることを想定する（図３Ａにおける「初期稼働状態（Ａ）」）。この場合、待機系の運用環境は、単一のＣＰＵ／ＩＯモジュール（この場合はＣＰＵ／ＩＯモジュール１０４）により構成される。
【００６０】
また、以下、初期の稼働系の運用環境において実行されるＯＳ２０１を、ＯＳ１（第１のＯＳ）と記載する。ＯＳ１において実行されるクラスタソフトウェア２０２をクラスタＳＷ１と記載することがある。また、ＯＳ１において実行されるＦＴ制御ソフトウェア２０３をＦＴ制御ＳＷ１と記載することがある。初期の待機系の運用環境において実行されるＯＳ２０１を、ＯＳ２（第２のＯＳ）と記載する。ＯＳ２において実行されるクラスタソフトウェア２０２をクラスタＳＷ２と記載することがある。また、ＯＳ２において実行されるＦＴ制御ソフトウェア２０３をＦＴ制御ＳＷ２と記載することがある。
【００６１】
以下、図３Ａ、及び、図４Ａから図４Ｃを参照して、フォールトトレラントサーバ１００の起動処理について説明する。
【００６２】
フォールトトレラントサーバ１００を起動（例えば、電源をＯＮ）すると、初期設定として、ＣＰＵ／ＩＯモジュール１０２が起動モジュール（稼働系の運用環境として用いられるＣＰＵ／ＩＯモジュール）に設定される。また、ＣＰＵ／ＩＯモジュール１０４が待機モジュール（待機系の運用環境として用いられるＣＰＵ／ＩＯモジュール）に設定される（ステップＳ４０１）。
【００６３】
ＦＴ制御スイッチ１０１ｂは、フォールトトレラントサーバ１００が起動された際、ＦＴ制御部１０２ｂと、ＦＴ制御部１０３ｂとが接続されるように、接続状態を設定する（ステップＳ４０２）。これにより、後述するように、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とを用いて、ハードウェアが冗長化された運用環境（第１の運用環境）が構築されることになる。
【００６４】
フォールトトレラントサーバ１００が起動された際、ＢＭＣ１０２ａは、起動モジュール（ＣＰＵ／ＩＯモジュール１０２）を起動（例えば、ＤＣ（Ｄｉｒｅｃｔ  Ｃｕｒｒｅｎｔ：直流）電源ＯＮ）する（ステップＳ４０３）。
【００６５】
これにより、ＣＰＵ／ＩＯモジュール１０２において、稼働系のＯＳ１が起動され、クラスタＳＷ１とＦＴ制御ＳＷ１が起動される（ステップＳ４０４）。
【００６６】
起動されたＦＴ制御ＳＷ１は、ＢＭＣ１０２ａ、ＢＭＣスイッチ１０１ａ、ＢＭＣ１０３ａを介してＣＰＵ／ＩＯモジュール１０３を起動する（ステップＳ４０５）。ＦＴ制御ＳＷ１は、ＢＭＣ１０２ａ、ＢＭＣスイッチ１０１ａ、及び、ＢＭＣ１０４ａを介して、ＣＰＵ／ＩＯモジュール１０４の起動を要求する（ステップＳ４０６）。ステップＳ４０５及びステップＳ４０６は、並行して実行されてもよい。
【００６７】
図４Ｂを参照して、ステップＳ４０５に続く処理について説明する。
【００６８】
ＢＭＣ１０３ａは、ＦＴ制御ＳＷ１から受け付けた要求に応じて、ＣＰＵ／ＩＯモジュール１０３を起動（例えば、ＤＣ電源ＯＮ）する（ステップＳ４０７）。
【００６９】
ＣＰＵ／ＩＯモジュール１０３におけるＦＴ制御部１０３ｂが、ＣＰＵ／ＩＯモジュール１０３が起動したことを、ＣＰＵ／ＩＯモジュール１０２におけるＦＴ制御部１０２ｂに通知する（ステップＳ４０８）。
【００７０】
ステップＳ４０８における通知に応じて、ＦＴ制御ＳＷ１は、ＦＴ制御部１０２ｂとＦＴ制御部１０３ｂとの間でハードウェア同期処理が実行されるようＦＴ制御部１０２ｂに指示する（ステップＳ４０９）。この際、ＦＴ制御ＳＷ１は、ＦＴ制御部１０２ｂ及びＦＴ制御部１０３ｂに対して、ハードウェア同期を実行するよう指示してもよい。
【００７１】
ＦＴ制御部１０２ｂは、ＦＴ制御スイッチ１０１ｂを介して、ＦＴ制御部１０３ｂとの間でハードウェア同期を実行する（ステップＳ４１０）。
【００７２】
上記処理により、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とによりハードウェアが二重化された、稼働系の運用環境が構築される。
【００７３】
以下、図４Ｃを参照して、ステップＳ４０６に続く処理について説明する。
【００７４】
ＢＭＣ１０４ａは、ＦＴ制御ＳＷ１から受け付けた要求に応じて、ＣＰＵ／ＩＯモジュール１０４を起動（例えば、ＤＣ電源ＯＮ）する（ステップＳ４１１）。
【００７５】
これにより、ＣＰＵ／ＩＯモジュール１０４において、稼働系のＯＳとしてＯＳ２が起動され、クラスタＳＷ２とＦＴ制御ＳＷ２が起動される（ステップＳ４１２）。
【００７６】
クラスタＳＷ２は、ネットワークスイッチ１０１ｃを介して、ＣＰＵ／ＩＯモジュール１０４が起動され、待機系のＯＳとしてＯＳ２が起動したことをクラスタＳＷ１へ通知する（ステップＳ４１３）。
【００７７】
クラスタＳＷ１及びクラスタＳＷ２は、ＯＳ１を稼働系ＯＳとして設定し、ＯＳ２を待機系ＯＳとして設定することでクラスタシステムを構築する（ステップＳ４１４）。クラスタ化を実行する具体的な処理は、例えば、周知の技術を用いて実現されてもよい。
【００７８】
上記の処理により、フォールトトレラントサーバ１００の状態が、図３Ａにおける「初期稼働状態（Ａ）」になる。
【００７９】
以下、図３Ａ、３Ｂ、及び、図５Ａから図５Ｃを参照して、フォールトトレラントサーバ１００において障害が発生した際の動作について説明する。以下においては、具体例として、図３Ａにおける「初期稼働状態（Ａ）」のようにフォールトトレラントサーバ１００が起動した後、稼働系のＯＳ１においてソフトウェア障害が発生し、稼働系のＯＳを、ＯＳ１からＯＳ２に切り替えることを想定する。
【００８０】
ＯＳ１における障害が発生した際、待機系のＯＳであるＯＳ２におけるクラスタＳＷ２がその障害を検出する（ステップＳ５０１）。
【００８１】
クラスタＳＷ２は、クラスタフェイルオーバ処理を実行し、ＯＳ２が稼働系ＯＳに昇格する（ステップＳ５０２）。なお、クラスタフェイルオーバ処理は、例えば、周知技術を用いて実行可能である。これにより、フォールトトレラントサーバ１００の状態が、図３Ａにおける「フェイルオーバ状態（Ｂ）」になる。
【００８２】
クラスタＳＷ２は、ＦＴ制御ＳＷ２に対して、ＯＳ２が稼働系ＯＳに昇格されたことを通知する（ステップＳ５０３）。
【００８３】
その通知を受け付けたＦＴ制御ＳＷ２は、ＯＳ１（待機系に降格されるＯＳ）の動作基盤（運用環境）を構成する他のＣＰＵ／ＩＯモジュール（ＣＰＵ／ＩＯモジュール１０２とＣＰＵ／ＩＯモジュール１０３）の状態を取得する（ステップＳ５０４）。この処理は、例えば、ＢＭＣ制御部２０３ｄにより実行されてもよい。
【００８４】
ＦＴ制御ＳＷ２は、他のＣＰＵ／ＩＯモジュール（ＣＰＵ／ＩＯモジュール１０２とＣＰＵ／ＩＯモジュール１０３）の状態に応じて、それらのＣＰＵ／ＩＯモジュールの停止を指示する（ステップＳ５０５）。
【００８５】
具体的には、他のＣＰＵ／ＩＯモジュール（ＣＰＵ／ＩＯモジュール１０２とＣＰＵ／ＩＯモジュール１０３）の状態がＯＳ稼働中である場合、ＦＴ制御ＳＷ２は、クラスタＳＷ１に対して、ＯＳ１のシャットダウンを要求する。
【００８６】
また、他のＣＰＵ／ＩＯモジュール（ＣＰＵ／ＩＯモジュール１０２とＣＰＵ／ＩＯモジュール１０３）の状態が、起動処理中である場合、一定時間後に再度状態を確認する。再度状態を確認した結果、他のＣＰＵ／ＩＯモジュールの状態がＯＳ稼働中であれば、クラスタＳＷ１に対して、ＯＳ１のシャットダウンを要求する。
【００８７】
ＯＳ１のシャットダウンを要求してからある時間が経過した後、クラスタＳＷ２は、ＯＳ１のシャットダウンにより、他のＣＰＵ／ＩＯモジュールの状態が停止状態（例えば、ＤＣ電源ＯＦＦ）になったか否かを確認する。他のＣＰＵ／ＩＯモジュールの状態が停止状態ではない場合、クラスタＳＷ２は、他のＣＰＵ／ＩＯモジュールがストールしていると判断し、ＦＴ制御ＳＷ２（特には、ＢＭＣ制御部２０３ｄ）に対して、他のＣＰＵ／ＩＯモジュールの停止を要求してもよい。この場合、ＢＭＣ制御部２０３ｄは、例えば、ＢＭＣ１０４ａ、ＢＭＣスイッチ１０１ａを介して、ＢＭＣ１０２ａ及びＢＭＣ１０３ａに対して、ＣＰＵ／ＩＯモジュール１０２及びＣＰＵ／ＩＯモジュール１０３の停止を要求してもよい。
【００８８】
他のＣＰＵ／ＩＯモジュールが停止された際、ＦＴ制御ＳＷ２は、ＦＴ制御スイッチ管理部２０３ｃを用いて、ＦＴ制御スイッチ１０１ｂにおける接続状態を、稼働系のＯＳ２が動作しているＣＰＵ／ＩＯモジュール１０４と、ＣＰＵ／ＩＯモジュール１０３とが接続された状態に切り替える（ステップＳ５０６）。これにより、ＣＰＵ／ＩＯモジュール１０４と、ＣＰＵ／ＩＯモジュール１０３とを用いて、ハードウェアが冗長化された運用環境が構築されるよう、ＦＴ制御スイッチ１０１ｂが設定される。
【００８９】
ＦＴ制御スイッチ１０１ｂの接続状態が変更された後、ＦＴ制御ＳＷ２は、ＢＭＣ制御部２０３ｄを使用して、他のＣＰＵ／ＩＯモジュール（ＣＰＵ／ＩＯモジュール１０２及びＣＰＵ／ＩＯモジュール１０３）を起動する。この際、ＢＭＣ制御部２０３ｄは、例えば、ＢＭＣ１０４ａ、ＢＭＣスイッチ１０１ａを介して、ＢＭＣ１０２ａ、ＢＭＣ１０３ａに対して、それぞれＣＰＵ／ＩＯモジュール１０２及びＣＰＵ／ＩＯモジュール１０３の起動を要求してもよい。なお、この際、ＦＴ制御ＳＷ２は、ＣＰＵ／ＩＯモジュール１０２を待機モジュールに設定し、ＣＰＵ／ＩＯモジュール１０４を起動モジュールに設定してよい。
【００９０】
ＯＳ２におけるＦＴ制御ＳＷ２が、停止しているＣＰＵ／ＩＯモジュール１０２及びＣＰＵ／ＩＯモジュール１０３の起動を要求する（ステップＳ５０７）。この際、ＦＴ制御ＳＷ２は、ＢＭＣ制御部２０３ｄを用いて、ＣＰＵ／ＩＯモジュール１０２及びＣＰＵ／ＩＯモジュール１０３の起動を要求してもよい。なお、ステップＳ５０７以降の処理（ステップＳ５０８からステップＳ５１０と、ステップＳ５１１からステップＳ５１４）は、並行して実行されてもよい。上記の処理により、フォールトトレラントサーバ１００の状態が、図３Ｂにおける「復旧状態（Ｃ）」になる。
【００９１】
以下、図５Ｂを参照して、ステップＳ５０７に続く処理について説明する。
【００９２】
ＣＰＵ／ＩＯモジュール１０３におけるＦＴ制御部１０３ｂは、ＣＰＵ／ＩＯモジュール１０３が起動したことをＣＰＵ／ＩＯモジュール１０４におけるＦＴ制御部１０４ｂに通知する（ステップＳ５０８）。
【００９３】
ＯＳ２におけるＦＴ制御ＳＷ２は、ＦＴ制御部１０４ｂとＦＴ制御部１０３ｂとの間でハードウェア同期処理が実行されるようＦＴ制御部１０４ｂに指示する（ステップＳ５０９）。この際、ＦＴ制御ＳＷ２は、ＦＴ制御部１０４ｂ及びＦＴ制御部１０３ｂに対して、ハードウェア同期を実行するよう指示してもよい。
【００９４】
ＦＴ制御部１０４ｂは、ＦＴ制御スイッチ１０１ｂを介して、ＦＴ制御部１０３ｂとの間でハードウェア同期を実行する（ステップＳ５１０）。
【００９５】
上記処理により、ＣＰＵ／ＩＯモジュール１０４と、ＣＰＵ／ＩＯモジュール１０３とによりハードウェアが二重化された、稼働系の運用環境（第２の運用環境）が構築される。
【００９６】
以下、図５Ｃを参照して、ステップＳ５０７に続く処理について説明する。
【００９７】
ステップＳ５０７における要求を受け付けたＣＰＵ／ＩＯモジュール１０２におけるＢＭＣ１０２ａは、ＣＰＵ／ＩＯモジュール１０２を起動（例えば、ＤＣ電源ＯＮ）する（ステップＳ５１１）。
【００９８】
これにより、ＣＰＵ／ＩＯモジュール１０２において、待機系のＯＳとしてＯＳ１が起動され、クラスタＳＷ１とＦＴ制御ＳＷ１が起動される（ステップＳ５１２）。
【００９９】
クラスタＳＷ１は、ネットワークスイッチ１０１ｃを介して、ＣＰＵ／ＩＯモジュール１０２が起動され、待機系のＯＳとしてＯＳ１が起動したことを、ＣＰＵ／ＩＯモジュール１０４におけるクラスタＳＷ２へ通知する（ステップＳ５１３）。
【０１００】
クラスタＳＷ２及びクラスタＳＷ１は、ＣＰＵ／ＩＯモジュール１０４と、ＣＰＵ／ＩＯモジュール１０３とにより構築された運用環境において実行されるＯＳ２を稼働系ＯＳとして設定し、ＯＳ１を待機系ＯＳとして設定することでクラスタを構築する（ステップＳ５１４）。クラスタ化を実行する具体的な処理は、例えば、周知の技術を用いて実現されてもよい。
【０１０１】
上記の処理により、フォールトトレラントサーバ１００の状態が、図３Ａにおける「稼働状態（Ｄ）」になる。
【０１０２】
上記説明した一連の処理により、フォールトトレラントサーバ１００は、２つのＣＰＵ／ＩＯモジュール（１０２、１０３）によりハードウェアが冗長化された運用環境において、稼働系のＯＳ（例えば、ＯＳ１）を実行することができる。また、１つＣＰＵ／ＩＯモジュール１０４により構築された運用環境において、待機系のＯＳ（例えば、ＯＳ２）を実行することができる。
【０１０３】
フォールトトレラントサーバ１００は、また、稼働系のＯＳ（ＯＳ１）において障害が発生した場合、障害が発生してしない待機系のＯＳ２にフェイルオーバ処理を実行してＯＳ２を稼働系のＯＳとして昇格する。フォールトトレラントサーバ１００は、ＯＳ２の昇格にともない、ハードウェアが冗長化された運用環境を構築するＣＰＵ／ＩＯモジュールの組合せを切り替える。これにより、稼働系に昇格したＯＳ２は、２つのＣＰＵ／ＩＯモジュール（１０３、１０４）によりハードウェアが冗長化された運用環境において実行される。即ち、フォールトトレラントサーバ１００は、３台分のＣＰＵ／ＩＯモジュールを用いて、ハードウェアが冗長化された稼働系の運用環境と、待機系の運用環境とを含むクラスタシステムを実現することができる。
【０１０４】
以下、図６を参照して、フォールトトレラントサーバ１００においてハードウェア障害が発生した際の動作を説明する。以下、においては、初期の稼働状態として、ＣＰＵ／ＩＯモジュール１０２と、ＣＰＵ／ＩＯモジュール１０３とによりハードウェアが二重化された稼働系の運用環境が提供され、ＣＰＵ／ＩＯモジュール１０４により待機系の運用環境が提供されることを想定する（図３Ａにおける「初期稼働状態（Ａ）」）。また、ハードウェアが二重化された稼働系の運用環境において、ハードウェア障害が発生したことを想定する。
【０１０５】
まず、ＣＰＵ／ＩＯモジュール１０２において発生した何らかのハードウェアの故障が検知される（ステップＳ６０１）。具体的には、ＣＰＵ／ＩＯモジュール１０２において実行されるＯＳ１に組み込まれたドライバ等が、ハードウェア故障を検知してもよい。
【０１０６】
ＦＴ制御ＳＷ１（又はＦＴ制御部１０２ｂ）は、ハードウェアが冗長構成された運用環境から、ＣＰＵ／ＩＯモジュール１０２を切り離す（ステップＳ６０２）。これにより、ＯＳ１は、ＣＰＵ／ＩＯモジュール１０３のみで動作を継続する。即ち、一時的に、ＣＰＵ／ＩＯモジュール１０３により、ＯＳ１の運用が継続される。
【０１０７】
故障しているＣＰＵ／ＩＯモジュール１０２が切り離された後、例えば、フォールトトレラントサーバ１００のユーザ等により、障害復旧処理が実行される（ステップＳ６０３）。例えば、ユーザは、ＣＰＵ／ＩＯモジュール１０２を交換してもよい。
【０１０８】
ＣＰＵ／ＩＯモジュール１０２が障害から回復した場合（ステップＳ６０４においてＹＥＳ）、新たなＣＰＵ／ＩＯモジュールが起動（例えば、ＤＣ電源ＯＮ）され、ＣＰＵ／ＩＯモジュール１０３とハードウェア同期が実行される。これにより、ＣＰＵ／ＩＯモジュール１０２が復帰して、ハードウェアが冗長構成された運用環境が回復される。この場合、例えば、ＦＴ制御ＳＷ１が、ＣＰＵ／ＩＯモジュール１０２を起動し、ＣＰＵ／ＩＯモジュール１０３とＣＰＵ／ＩＯモジュール１０２とのハードウェア同期処理を実行してよい。
【０１０９】
上記処理により、フォールトトレラントサーバ１００は、稼働系の運用環境においてハードウェア障害が発生した場合であっても、処理を継続することが可能であり、また、処理を継続したまま、障害から復旧することが可能である。
【０１１０】
以上のように構成されたフォールトトレラントサーバ１００は、可用性が高いクラスタシステムを実現するフォールトトレラントサーバの構成部材の数を低減することができる。その理由は、フォールトトレラントサーバ１００は、２台のＣＰＵ／ＩＯモジュールを用いてハードウェアが冗長化された稼働系の運用環境を提供すると共に、１台のＣＰＵ／ＩＯモジュールを用いて待機系の運用環境を提供することで、クラスタシステムを構築することができるからである。これにより、例えば、稼働系の運用環境で動作するＯＳ（稼働系のＯＳ）にソフトウェア障害が発生した場合、フォールトトレラントサーバ１００は、クラスタフェイルオーバ処理により、待機系のＯＳを稼働系のＯＳとして昇格することで、処理を中断することなく継続することができる。これにより、フォールトトレラントサーバ１００は、ソフトウェア障害に対して、比較的高い可用性を実現可能である。
【０１１１】
また、この際、フォールトトレラントサーバ１００は、稼働系の運用環境を提供するＣＰＵ／ＩＯモジュールの組合せを切り替えることで、ハードウェアが冗長化された稼働系の運用環境において、昇格したＯＳを実行可能である。即ち、クラスタフェイルオーバ処理が実行された後も、稼働系のＯＳは、ハードウェアが冗長化された運用環境において実行されることから、ハードウェア障害に対して、比較的高い可用性を実現可能である。
【０１１２】
一般的に、ハードウェアが二重化されたフォールトトレラントサーバには、非冗長化サーバ２台分の部材が用いられる。また、ハードウェアが二重化されたフォールトトレラントサーバを最低２台用いてクラスタシステムを構築する場合、非冗長化サーバ４台分の部材が用いられることになる。これに対して、本実施形態におけるフォールトトレラントサーバ１００は、非冗長化サーバ３台分の部材により、ハードウェアが二重化された運用環境を備える、クラスタシステムを構築可能である。
【０１１３】
［変形例］
上記説明した具体例の場合、ソフトウェア障害が発生してクラスタフェイルオーバ処理が実行された際、ＣＰＵ／ＩＯモジュール１０２は、待機系の運用環境として動作する。これに対して、フォールトトレラントサーバ１００は、例えば、ＣＰＵ／ＩＯモジュール１０２が、稼働系の運用環境として動作するように、クラスタフェイルバック処理を自律的に実行してもよい。この場合、フォールトトレラントサーバ１００は、例えば、一旦ＣＰＵ／ＩＯモジュール１０２を待機系として起動し、その後、ＣＰＵ／ＩＯモジュール１０２において実行されるＯＳ１を稼働系ＯＳに昇格（ＯＳ２を待機系ＯＳに降格）してもよい。その際、フォールトトレラントサーバ１００は、再度、ＣＰＵ／ＩＯモジュール１０２とＣＰＵ／ＩＯモジュール１０３とを用いて、ハードウェアの冗長構成を実現してもよい。
【０１１４】
また、上記説明した具体例の場合、ソフトウェア障害、ハードウェア障害が発生した際に、自動的に復旧処理が実行されるが、フォールトトレラントサーバ１００は、障害が発生した際の動作について、自動復旧と、手動復旧とを切り替え可能な機能を備えてもよい。
【０１１５】
＜第２実施形態＞
以下、本開示に係る技術の基本的な実施形態である第２実施形態について説明する。図７は、本実施形態における情報処理装置７００の機能的な構成を例示するブロック図である。
【０１１６】
図７に例示するように、情報処理装置７００は、第１処理モジュール７０２と、第２処理モジュール７０３と、第３処理モジュール７０４と、含む。情報処理装置７００は、また、構成管理部７０１（構成管理手段）を含む。情報処理装置７００を構成するこれらの構成要素の間は、適切な通信方法により通信可能に接続されていてよい。
【０１１７】
第１処理モジュール７０２、第２処理モジュール７０３、及び、第３処理モジュール７０４は、それぞれ、ＣＰＵ、メモリ、不揮発性記憶装置（ＨＤＤ等）、通信インタフェース、及びＢＭＣ等を備えるコンピュータを含んでよい。
【０１１８】
第１処理モジュール７０２、第２処理モジュール７０３、及び、第３処理モジュール７０４は、同じ構成のハードウェアにより実現されてもよい。また、第１処理モジュール７０２、第２処理モジュール７０３、及び、第３処理モジュール７０４は、例えば、同じソフトウェア・プログラム（ＯＳ、ドライバ、各種アプリケーションを含む）を実行可能な、異なる構成のハードウェアにより実現されてもよい。なお、第１処理モジュール７０２は、例えば、第１実施形態におけるＣＰＵ／ＩＯモジュール１０２と同様に構成されてもよく、第２処理モジュール７０３は、例えば、第１実施形態におけるＣＰＵ／ＩＯモジュール１０３と同様に構成されてもよく、第３処理モジュール７０４は、例えば、第１実施形態におけるＣＰＵ／ＩＯモジュール１０４と同様に構成されてもよい。
【０１１９】
第１処理モジュール７０２は、例えば、ＯＳ及び各種アプリケーション等を用いて、何らかの情報処理を実行するよう構成される。第２処理モジュール７０３は、第１処理モジュール７０２及び第３処理モジュール７０４と同様の処理を実行可能な互換性を有する。第３処理モジュール７０４は、第１処理モジュール７０２が実行する情報処理を、第１処理モジュール７０２に代替して実行可能である。
【０１２０】
構成管理部７０１は、第１処理モジュール７０２と、第２処理モジュール７０３と、第３処理モジュール７０４と、を組み合わせることで、情報処理を実行可能なコンピュータが冗長構成された運用環境を構築する。より具体的には、構成管理部７０１は、例えば、第１処理モジュール７０２と、第２処理モジュール７０３と、を組み合わせることで、コンピュータが冗長構成された運用環境を実現することが可能である。構成管理部７０１は、また、例えば、第３処理モジュール７０４と、第２処理モジュール７０３と、を組み合わせることで、コンピュータが冗長構成された運用環境を実現することが可能である。なお、構成管理部７０１は、例えば、上記第１実施形態における構成管理部１０１と同様に構成されてもよい。
【０１２１】
上記ように構成された情報処理装置７００において、第１処理モジュール７０２と、第２処理モジュール７０３とにより、コンピュータが冗長構成された運用環境（第１の運用環境）を実現されることを想定する。また、単体の第３処理モジュール７０４により、コンピュータが冗長構成されていない運用環境（第２の運用環境）が実現されることを想定する。なお、係る運用環境には、例えば、ハードウェアとしての各処理モジュール（第１処理モジュール７０２と、第２処理モジュール７０３、第３処理モジュール７０４）と、それらにおいて実行される各種ソフトウェア（ＯＳ、ドライバ、アプリケーション等）が含まれてよい。第１処理モジュール７０２及び第２処理モジュール７０３により構築された第１の運用環境において実行される情報処理に障害が発生した場合、第３処理モジュール７０４により構築された第２の運用環境は、その障害を検知し、構成管理部７０１にその障害を通知する。
【０１２２】
構成管理部７０１は、第２の運用環境（第３処理モジュール７０４）からの通知に応じて、第１処理モジュール７０２と、第２処理モジュール７０３との組合せを、第３処理モジュール７０４と、第２処理モジュール７０３との組合せに切り替える。この際、構成管理部７０１は、例えば、第１処理モジュール７０２と、第２処理モジュール７０３とにより構成された運用環境から、第２処理モジュール７０３を切り離してよい。構成管理部７０１は、第２処理モジュール７０３と、第３処理モジュール７０４とを組み合わせることで、冗長構成が実現された運用環境として、第２の運用環境を再構築する。これにより、情報処理装置７００は、ハードウェアが冗長化された運用環境を構築することが可能である。
【０１２３】
再構築された第２の運用環境において、第１の運用環境（第１処理モジュール７０２と第２処理モジュール７０３との組合せ）において実行されていた情報処理が、第１の運用環境に代替して実行される。これにより、第２の運用環境は、障害が発生した第１の運用環境に代替して、第１の運用環境において実行されていた処理を、ハードウェアが冗長化された第２の運用環境において継続することが可能である。
【０１２４】
以上のように構成されたフォールトトレラントサーバ７００は、可用性が高いクラスタシステムを実現するフォールトトレラントサーバの構成部材の数を低減することができる。その理由は、フォールトトレラントサーバ７００は、２台の処理モジュール（例えば、第１処理モジュールと第２処理モジュール、又は、第３処理モジュールと第２処理モジュール）を用いてハードウェアが冗長化された稼働系の運用環境を提供すると共に、１台の処理モジュール（例えば、第３処理モジュール）を用いて待機系の運用環境を提供することで、クラスタシステムを構築することができるからである。
【０１２５】
［変形例］
上記説明した第２実施形態においては、本開示に係る技術の一態様として、情報処理装置（フォールトトレラントサーバ）内に、コンピュータとして機能する複数の処理モジュールを含む構成について説明した。本開示に係る技術はこれには限定されず、例えば、図８に例示するような、情報処理システム（フォールトトレラントシステム）として実現されてもよい。
【０１２６】
この場合、構成管理装置８０１は、例えば、構成管理部７０１と同様に構成され、同様の処理を実行可能な情報処理装置であってよい。第１コンピュータ８０２は、第１処理モジュール７０２と同様に構成され、同様の処理を実行可能なコンピュータであってよい。第２コンピュータ８０３は、第２処理モジュール７０３と同様に構成され、同様の処理を実行可能なコンピュータであってよい。第３コンピュータ８０４は、第３処理モジュール７０４と同様に構成され、同様の処理を実行可能なコンピュータであってよい。構成管理装置８０１、第１コンピュータ８０２、第２コンピュータ８０３、第３コンピュータ８０４は、適切な通信ネットワークを用いて、相互に通信可能に接続されていてよい。
【０１２７】
上記のように構成されたフォールトトレラントシステム８００も、フォールトトレラントサーバ７００と同様、可用性が高いクラスタシステムを実現するための構成部材の数を低減することができる。
【０１２８】
以上、本開示に係る技術を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本開示に係る技術の範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、上記したような実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、変更又は改良を加えた新たな実施形態も、本開示に係る技術の範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本開示に係る技術の範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【符号の説明】
【０１２９】
１００    フォールトトレラントサーバ
１０１    構成管理部
１０２    ＣＰＵ／ＩＯモジュール
１０３    ＣＰＵ／ＩＯモジュール
１０４    ＣＰＵ／ＩＯモジュール
１０２ａ、１０３ａ、１０４ａ    ＢＭＣ
１０２ｂ、１０３ｂ、１０４ｂ    ＦＴ制御部
１０２ｃ、１０３ｃ、１０４ｃ    ＣＰＵ
１０２ｄ、１０３ｄ、１０４ｄ    メモリ
１０２ｅ、１０３ｅ、１０４ｅ    ＩＯコントローラ
１０２ｆ、１０３ｆ、１０４ｆ    内部ＮＩＣ
２０１    ＯＳ
２０２    クラスタソフトウェア
２０３    ＦＴ制御ソフトウェア
７００    情報処理装置
７０１    構成管理部
７０２    第１処理モジュール
７０３    第２処理モジュール
７０４    第３処理モジュール
８００    フォールトトレラントシステム
８０１    構成管理装置
８０２    第１コンピュータ
８０３    第２コンピュータ
８０４    第３コンピュータ
【図１Ａ】
2019067014.tif 000003
【図１Ｂ】
2019067014.tif 000004
【図２】
2019067014.tif 000005
【図３Ａ】
2019067014.tif 000006
【図３Ｂ】
2019067014.tif 000007
【図４Ａ】
2019067014.tif 000008
【図４Ｂ】
2019067014.tif 000009
【図４Ｃ】
2019067014.tif 000010
【図５Ａ】
2019067014.tif 000011
【図５Ｂ】
2019067014.tif 000012
【図５Ｃ】
2019067014.tif 000013
【図６】
2019067014.tif 000014
【図７】
2019067014.tif 000015
【図８】
2019067014.tif 000016