(57)【要約】【課題】モジュール電源の投入前においても、ＢＭＣ内部時計が示す時刻を複数のモジュール間で一致させる。【解決手段】フォールトトレラントサーバにおいて、ＢＭＣが、時刻コピー部を備える。各モジュールにスタンバイ電源が投入された場合、セカンダリＢＭＣのコピー部は、プライマリＢＭＣのＢＭＣ内部時計が示す時刻を、セカンダリＢＭＣのＢＭＣ内部時計にコピーする。各モジュールにモジュール電源が投入された場合、コピー部は、ＢＭＣ内部時計が示す時刻を、第２内部時計にコピーする。【選択図】図１
2013196272.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを具備し、
前記複数のモジュールの各々は、
ＢＭＣ内部時計を有し、前記各モジュールの動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に前記ＢＭＣ内部時計が示す時刻情報を付し、ログとして格納する、ＢＭＣ（Ｂａｓｅ  ｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）と、
モジュール電源が投入された場合に起動するシステム時計を有する、同期制御ＬＳＩと、
前記システム時計が生成する時刻情報を利用してＯＳを実行する、ＣＰＵとを備え、
前記ＢＭＣは、コピー部と備え、
前記複数のモジュールに含まれる前記複数のＢＭＣのうちのセカンダリＢＭＣの前記コピー部は、前記各モジュールにスタンバイ電源が投入された場合に、前記複数のＢＭＣのうちのプライマリＢＭＣの前記ＢＭＣ内部時計が示す時刻を、前記セカンダリＢＭＣの前記ＢＭＣ内部時計にコピーし、
前記各モジュールにモジュール電源が投入された場合、前記コピー部は、前記ＢＭＣ内部時計が示す時刻を、前記システム時計にコピーする
フォールトトレラントサーバ。
【請求項２】
請求項１に記載されたフォールトトレラントサーバであって、
前記ＢＭＣは、更に、前記複数のモジュールの何れかに含まれるＢＭＣをプライマリＢＭＣとして決定し、前記複数のモジュールのうちの他のモジュールに含まれるＢＭＣをセカンダリＢＭＣとして決定する、プライマリＢＭＣ管理部を備える
フォールトトレラントサーバ。
【請求項３】
請求項１又は２に記載されたフォールトトレラントサーバであって、
前記各モジュールは、更に、電源の投入の有無に関わりなく動作する、リアルタイムクロックを備え、
前記各モジュールにスタンバイ電源が投入された場合、前記プライマリＢＭＣの前記コピー部は、前記リアルタイムクロックが示す時刻を前記ＢＭＣ内部時計にコピーし、前記セカンダリＢＭＣの前記コピー部は、前記プライマリＢＭＣの前記ＢＭＣ内部時計が示すコピー後の時刻を、前記セカンダリＢＭＣの前記ＢＭＣ内部時計にコピーし、コピー後の前記ＢＭＣ内部時計が示す時刻を、前記リアルタイムクロックにコピーする
フォールトトレラントサーバ。
【請求項４】
請求項１又は２に記載されたフォールトトレラントサーバであって、
前記ＢＭＣは、ＬＡＮを介してＳＮＴＰサーバに接続されており、
前記各モジュールは、更に、電源の投入の有無に関わりなく動作する、リアルタイムクロックを備え、
前記各モジュールにスタンバイ電源が投入された場合、前記プライマリＢＭＣの前記コピー部は、前記ＳＮＴＰサーバが示す時刻情報に前記ＢＭＣ内部時計を同期させることを試み、同期できない場合に、記リアルタイムクロックが示す時刻を前記ＢＭＣ内部時計にコピーし、前記セカンダリＢＭＣの前記コピー部は、前記プライマリＢＭＣの前記ＢＭＣ内部時計が示すコピー後の時刻を、前記セカンダリＢＭＣの前記ＢＭＣ内部時計にコピーする
フォールトトレラントサーバ。
【請求項５】
請求項１乃至４のいずれかに記載されたフォールトトレラントサーバであって、
前記複数のモジュールのそれぞれの前記システムがＯＳによって更新された場合、前記同期制御ＬＳＩは、設定時刻が変更された旨を示す割り込み信号を前記ＢＭＣに通知し、
前記ＢＭＣは、前記割り込み信号を取得した場合に、前記システム時計が示す時刻を前記ＢＭＣ内部時計にコピーする
フォールトトレラントサーバ。
【請求項６】
請求項１乃至５のいずれかに記載されたフォールトトレラントサーバであって、
前記複数のモジュール間において、前記ＢＭＣ同士は、Ｉ２Ｃを介して接続されている
フォールトトレラントサーバ。
【請求項７】
複数のモジュールを具備し、
前記複数のモジュールの各々は、
ＢＭＣ内部時計を有し、前記各モジュールの動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に前記ＢＭＣ内部時計が示す時刻情報を付し、ログとして格納する、ＢＭＣと、
システム時計を有する同期制御ＬＳＩと、
前記システム時計が生成する時刻情報を利用してＯＳを実行する、ＣＰＵとを備える
フォールトトレラントサーバの動作方法であって、
前記各モジュールにスタンバイ電源が投入された場合に、前記複数のモジュールに含まれる前記複数のＢＭＣのうちのプライマリＢＭＣの前記ＢＭＣ内部時計が示す時刻を、前記複数のＢＭＣのうちのセカンダリＢＭＣの前記ＢＭＣ内部時計にコピーするステップと、
前記各モジュールにモジュール電源が投入された場合に、前記各モジュールが、前記ＢＭＣ内部時計が示す時刻を、前記システム時計にコピーするステップと、
を具備する
フォールトトレラントサーバの動作方法。
【請求項８】
複数のモジュールの各々に設けられ、前記各モジュールの動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に時刻情報を付し、ログとして格納する、ＢＭＣ（Ｂａｓｅ  ｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）であって、
前記各モジュールは、更に、
モジュール電源が投入された場合に起動するシステム時計を有する、同期制御ＬＳＩと、
前記システム時計が生成する時刻情報を利用してＯＳを実行する、ＣＰＵとを備え、
前記ＢＭＣは、
前記イベントの内容に付される時刻情報を示す、ＢＭＣ内部時計と、
コピー部とを備え、
前記複数のモジュールに含まれる複数のＢＭＣのうちのセカンダリＢＭＣの前記コピー部は、自モジュールにスタンバイ電源が投入された場合に、前記複数のＢＭＣのうちのプライマリＢＭＣの前記ＢＭＣ内部時計が示す時刻を、自己のＢＭＣの前記ＢＭＣ内部時計にコピーし、
前記各モジュールにおいて、モジュール電源が投入された場合、前記コピー部は、前記ＢＭＣ内部時計が示す時刻を、前記システム時計にコピーする
ＢＭＣ。
【請求項９】
複数のモジュールの各々に設けられ、前記各モジュールの動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に時刻情報を付し、ログとして格納する、ＢＭＣ（Ｂａｓｅ  ｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）の動作方法であって、
前記各モジュールは、更に、
モジュール電源が投入された場合に起動するシステム時計を有する、同期制御ＬＳＩと、
前記システム時計が生成する時刻情報を利用してＯＳを実行する、ＣＰＵとを備え、
前記ＢＭＣの動作方法は、
ＢＭＣ内部時計が、前記イベントの内容に付される時刻情報を生成するステップと、
自己がセカンダリＢＭＣであり、自モジュールにスタンバイ電源が投入された場合に、前記複数のＢＭＣのうちのプライマリＢＭＣの前記ＢＭＣ内部時計が示す時刻を、自己の前記ＢＭＣ内部時計にコピーするステップと、
前記各モジュールにおいて、モジュール電源が投入された場合に、前記ＢＭＣ内部時計が示す時刻を、前記システム時計にコピーするステップと、
を具備する
ＢＭＣの動作方法。
【請求項１０】
請求項９に記載されたＢＭＣの動作方法を、コンピュータにより実現するための、ＢＭＣの動作プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントサーバ及びフォールトトレラントサーバの動作方法に関する。
【背景技術】
【０００２】
コンピュータには、時刻情報を得るために、システム時計、及びＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）などが設けられる。システム時計は、ＯＳによって管理される時計であり、電源が投入されていない場合には動作しない。一方、ＲＴＣは、バックアップ電池などにより、電源が投入されていなくても動作する。電源が投入されると、ＢＩＯＳなどの制御ソフトウェアが起動し、ＲＴＣから時刻情報を読み出し、システム時計に設定する。また、コンピュータには、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）が設けられている場合がある。そのような場合には、ＢＭＣにも内部時計（以下、ＢＭＣ内部時計）が設けられる。ＢＭＣは、コンピュータに搭載された各部品の監視を行う。イベントが発生した場合、ＢＭＣは、イベントの内容にＢＭＣ内部時計が示す時刻情報をタイムスタンプとして付し、ログとして格納する。このＢＭＣ内部時計は、ＢＭＣの設定を行なうＩＰＭＩドライバにより、システム時計に基づいて設定される。すなわち、電源の投入後に、システム時計が設定され、ＩＰＭＩドライバが、ＫＣＳ  Ｉ／Ｆ（Ｋｅｙｂｏａｒｄ  Ｃｏｎｔｒｏｌｅｒ  Ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）などを介して、ＢＭＣにＩＰＭＩコマンドを送り、システム時計が示す時刻を示すように、ＢＭＣ内部時計を更新する。
【０００３】
コンピュータシステムとして、フォールトトレラントサーバが用いられる場合がある。フォールトトレラントサーバでは、多重化された複数のモジュールが用いられる。複数のモジュールの各々は、ＣＰＵ、及びＢＭＣなどを備えている。複数のモジュールにおいては、ロックステップ動作が行われ、各部品が同期して動作する。このとき、複数のモジュールにおいて、システム時計及びＢＭＣ内部時計も、同期している必要がある。すなわち、複数のモジュールにおいて、システム時計及びＢＭＣ内部時計が示す時刻は一致している必要がある。そのため、フォールトトレラントサーバにおいては、あるモジュールの電源が投入されると、同期制御ソフトウェアが起動し、電源が投入されたモジュールのシステム時計の時刻が、基準となるモジュールのシステム時計の時刻に同期させられる。その後、各モジュールにおいて、ＢＭＣ内部時計の時刻が、システム時計の時刻に合わせられる。
【０００４】
上記に関連して、特許文献１（特開２００５−１３５０６３号公報）には、情報処理装置が開示されている。この情報処理装置は、計算機システムとしての所定の機能を提供するメインシステムと、そのメインシステムとは独立して動作して、そのメインシステムの障害を検出及び監視する機能を提供する保守管理システムと、時刻を計時する共有計算機用時計と、共有計算機用時計に接続され、メインシステム及び保守管理システムに対する共有計算機用時計の共有アクセス制御を行なう時計共有制御手段とを備える。メインシステム及び保守管理システムは、それぞれ障害発生時に採取する障害情報に、共有計算機用時計を基に計時された時刻を記録する。
【０００５】
他の関連技術として、特許文献２（特開２００９−１６８７６４号公報）には、時計機構の同期化方式が開示されている。この時計機構の同期方式は、無停電化された電源で動作する時計機構を持たない周辺装置において、無停電化された電源で動作する時計機構を持つ本体装置に接続し、周辺装置の電源投入時に本体装置に対して時計情報要求を発行して時計情報を入手し、周辺装置の時計を本体装置に同期化させることを特徴とする。
【０００６】
更に他の関連技術として、特許文献３（特開平１１−２０３２５１号公報）には、時刻同期方式が開示されている。この時刻同期方式では、複数のプロセッサからアクセス可能な共有メモリを有するマルチプロセッサシステムにおいて、共有メモリ上に基準時刻を示す共有時計を備える。各プロセッサは、自プロセッサ固有の時刻を示す内部時計と、外部ハードウェアの障害発生を検出する外部ハードウェア状態監視手段と、共有時計の時刻を自プロセッサの時刻に同期化する内部時計同期手段と、他のプロセッサに時刻同期開始指示を送信するプロセッサ間通信手段と、外部ハードウェア状態監視手段により障害が発生していないと判断された各プロセッサの時刻同期開始優先度を定期的に比較して自プロセッサの優先度が最も高いときに共有時計の時刻を自プロセッサの内部時計の時刻に同期化し他のプロセッサに時刻同期開始指示を送信する時刻同期開始手段とを有する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−１３５０６３号公報
【特許文献２】特開２００９−１６８７６４号公報
【特許文献３】特開平１１−２０３２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
フォールトトレラントサーバの各モジュールにおいて、モジュールの電源がＯＦＦであっても、スタンバイ電源が投入されていれば、ＢＭＣ内部時計は計時し続ける。しかしながら、ＢＭＣ内部時計が基準となる時刻に同期させられるのは、各モジュールに電源が投入された後である。すなわち、各モジュールの電源が投入された後に、制御ソフトウェアによりシステム時計の同期処理が行われ、ＢＭＣ内部時計の時刻がシステム時計の時刻に合わせられる。従って、ＢＭＣ内部時計が示す時刻は、最初にモジュールの電源がＯＮにされるまでの間、初期状態のままになる。そのため、最初の電源ＯＮまでに発生したイベントのログにおいて、タイムスタンプがシステム上の表示時刻と一致しないことがある、という問題点があった。
【０００９】
これに対して、ＳＮＴＰサーバを用いることにより、ＢＭＣ内部時計の時刻を同期させることが考えられる。しかし、この場合には、ＢＭＣが、ＬＡＮインターフェースを介してＳＮＴＰサーバに接続される必要がある。ＢＭＣにＬＡＮコントローラチップを追加する必要があり、コストが増大してしまう、等の問題点があった。
【００１０】
また、複数のモジュールの各々は、故障などにより交換されることがある。基準となるモジュールが交換された場合には、システム時計及びＢＭＣ内部時計の同期を行うことができなくなってしまう、という問題点があった。
【００１１】
既述の特許文献１乃至３のいずれにおいても、これらの問題点については触れられておらず、これら問題点を解決する為の手段は開示されていない。
【課題を解決するための手段】
【００１２】
本発明に係るフォールトトレラントサーバは、複数のモジュールを備える。複数のモジュールの各々は、ＢＭＣ内部時計を有し、前記各モジュールの動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に前記ＢＭＣ内部時計が示す時刻情報を付し、ログとして格納する、ＢＭＣ（ｂａｓｅ  ｂｏａｒｄ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌｌｅｒ）と、モジュール電源が投入された場合に起動するシステム時計を有する、同期制御ＬＳＩと、前記システム時計が生成する時刻情報を利用してＯＳを実行する、ＣＰＵとを備える。前記ＢＭＣは、時刻コピー部を備える。前記各モジュールにスタンバイ電源が投入された場合、プライマリＢＭＣの前記コピー部は、前記ＢＭＣ内部時計が示す時刻を、セカンダリＢＭＣの前記ＢＭＣ内部時計にコピーする。前記各モジュールにモジュール電源が投入された場合、前記コピー部は、前記ＢＭＣ内部時計が示す時刻を、前記システム時計にコピーする。
【００１３】
本発明に係るフォールトトレラントサーバの動作方法は、複数のモジュールを具備し、前記複数のモジュールの各々は、ＢＭＣ内部時計を有し、前記各モジュールの動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に前記ＢＭＣ内部時計が示す時刻情報を付し、ログとして格納する、ＢＭＣ（ｂａｓｅ  ｂｏａｒｄ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌｌｅｒ）と、システム時計を有する同期制御ＬＳＩと、前記システム時計が生成する時刻情報を利用してＯＳを実行する、ＣＰＵとを備えるフォールトトレラントサーバの動作方法である。この動作方法は、前記ＢＭＣが、前記各モジュールにスタンバイ電源が投入された場合に、プライマリＢＭＣの前記ＢＭＣ内部時計が示す時刻をセカンダリＢＭＣの前記ＢＭＣ内部時計にコピーするステップと、前記各モジュールにモジュール電源が投入された場合に、前記各モジュールが、前記ＢＭＣ内部時計が示す時刻を、前記システム時計にコピーするステップとを具備する。
【発明の効果】
【００１４】
本発明によれば、電源が投入される前においてもＢＭＣ内部時計の時刻を同期させることができ、ＬＡＮコントローラチップを追加する必要がなく、基準となるモジュールを動的に切り替えることができる、フォールトトレラントサーバ及びその動作方法が提供される。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態に係るフォールトトレラントサーバを示すブロック図である。
【図２】第１の実施形態に係るフォールトトレラントサーバをの動作方法を示すフローチャートである。
【図３】第２の実施形態に係るフォールトトレラントサーバを示すブロック図である。
【図４】各モジュールにスタンバイ電源が投入された場合の動作方法を示すフローチャートである。
【図５】各モジュールに電源が投入された場合の動作方法を示すフローチャートである。
【図６】ユーザが同期制御ＬＳＩ内部時計の時刻を変更する場合の動作を示すフローチャートである。
【図７】セカンダリＢＭＣの動作方法を示すフローチャートである。
【図８】第３の実施形態に係るフォールトトレラントサーバ１を示す構成図である。
【図９】各モジュールにスタンバイ電源が投入された場合の動作を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【００１７】
（第１の実施形態）
図１は、第１の実施形態に係るフォールトトレラントサーバ１を示すブロック図である。フォールトトレラントサーバ１は、複数のモジュール（２−１、２−２）を備えている。
【００１８】
各モジュール２は、ＣＰＵ３（３−１、３−２）、同期制御ＬＳＩ４（４−１、４−２）、及びＢＭＣ５（５−１、５−２）を備えている。複数のモジュール２間で、これらの部品はロックステップ動作を行う。
【００１９】
同期制御ＬＳＩは、モジュール電源が投入された場合に起動するシステム時計７を有している。
【００２０】
ＣＰＵ３は、システム時計７が生成する時刻情報を利用してＯＳを実行する機能を有している。
【００２１】
ＢＭＣ５は、各モジュール２の動作状態を監視し、イベントが生じた場合に、生じたイベントの内容に時刻情報を付し、ログとして格納する機能を有している。ＢＭＣは、ＢＭＣ内部時計８、及び時刻コピー部１０を備えている。これらは、例えば、予めＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等に格納されたＢＭＣの動作プログラムが実行されることにより、実現される。
【００２２】
ここで、複数のモジュールに含まれる複数のＢＭＣのいずれかは、プライマリＢＭＣとして動作する。一方、プライマリＢＭＣ以外のＢＭＣは、セカンダリＢＭＣとして動作する。以下の説明においては、ＢＭＣ５−１がプライマリＢＭＣであり、ＢＭＣ５−２がセカンダリＢＭＣであるものとする。
【００２３】
セカンダリＢＭＣ５−２では、モジュール２−２にスタンバイ電源が投入された場合に、時刻コピー部１０−２が、プライマリＢＭＣ５−１のＢＭＣ内部時計８ー１が示す時刻を、自己のＢＭＣ内部時計８ー２にコピーする。
【００２４】
また、時刻コピー部１０は、自モジュール２にモジュール電源が投入された場合に、ＢＭＣ内部時計８が示す時刻を、システム時計７にコピーする機能を有している。
【００２５】
続いて、本実施形態に係るフォールトトレラントサーバの動作方法について説明する。図２は、本実施形態に係るフォールトトレラントサーバの動作方法を示すフローチャートである。
【００２６】
セカンダリＢＭＣ５−２を含むモジュール２−２にスタンバイ電源が投入されると（ステップＳ５１）、時刻コピー部１０−２が、プライマリＢＭＣ５−１のＢＭＣ内部時計８−１が示す時刻を、自己のＢＭＣ内部時計８−２に、コピーする（ステップＳ５２）。次いで、モジュール２−２にモジュール電源が投入されると（ステップＳ５３）、モジュール２−２において、時刻コピー部１０−２が、ＢＭＣ内部時計８−２が示す時刻情報を、システム時計７−２にコピーする（ステップＳ５４）。
【００２７】
本実施形態によれば、スタンバイ電源の投入時に、プライマリＢＭＣのＢＭＣ内部時計８−１の時刻が、セカンダリＢＭＣの内部時計８−２にコピーされる。従って、モジュール電源（システム電源）が投入される前の段階であっても、ＢＭＣ内部時計が示す時刻を、複数のモジュール間で一致させることができる。
【００２８】
（第２の実施形態）
図３は、本実施形態に係るフォールトトレラントサーバ１を示すブロック図である。図３に示されるように、このフォールトトレラントサーバ１は、複数（２つ）のモジュール２（２−１、２−２）を備えている。モジュール２−１とモジュール２−２とは、全く同じ構成を有しており、それぞれが１つの計算機システムとして動作することが可能である。
【００２９】
各モジュール２は、ＣＰＵ３、同期制御ＬＳＩ４、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）５、及びＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）６を備えている。
【００３０】
ＣＰＵ３は、図示しないメモリに格納されたＯＳを実行する。後述するように、複数のモジュール２において、ＣＰＵ３は同期して動作し、同一のＯＳにより同一の処理を実行する。
【００３１】
同期制御ＬＳＩ４は、複数のモジュール２間において、ＣＰＵ３をロックステップにより動作させる為に設けられている。同期制御ＬＳＩ４は、同期制御ソフトウェアを実行することにより、複数のモジュール２に含まれる複数のＣＰＵ３（３−１、３−２）を、同一のクロック信号に基づいて同一の処理が行われるように、制御する。これにより、フォールトトレラントサーバ１において、高可用性が実現される。同期制御ＬＳＩ４は、フォールトトレラントサーバ１に固有のＬＳＩであり、例えば、ＦＰＧＡ等により実現される。
【００３２】
また、同期制御ＬＳＩ４は、システム時計として、同期制御ＬＳＩ内部時計７−１を備えている。同期制御ＬＳＩ内部時計７−１は、ＯＳにより管理される。ＯＳは、この同期制御ＬＳＩ内部時計７−１を利用して、時刻情報を得る。同期制御ＬＳＩ内部時計７−１は、ＣＰＵ３と同様に、複数のモジュール２間でロックステップ動作している。これにより、複数のモジュール２において、ＣＰＵ３が同一の時刻情報を取得することが可能になっている。この同期制御ＬＳＩ内部時計７−１には、電池などによる電源バックアップはない。従って、同期制御ＬＳＩ内部時計７−１は、各モジュールに電源（モジュール電源）が投入されている場合においてのみ、起動する。
【００３３】
ＲＴＣ６は、バックアップ用の電池などを備えた時計機能を有しており、電池によりスタンバイ電源のない状態でも計時し続けることができる。
【００３４】
ＢＭＣ５は、各モジュール２に設けられた部品（ＣＰＵ３、同期制御ＬＳＩ４など）を監視する機能を有している。ＢＭＣ５は、インターフェース１１を介して同期制御ＬＳＩ４と接続され、Ｉ２Ｃバスインターフェース１３を介して同期制御ＬＳＩ内部時計７と接続され、インターフェース１２を介してＲＴＣ６に接続さている。更に、複数のモジュール間２において、ＢＭＣ５同士は、ＢＭＣ間通信用インターフェース１４を介して接続されている。各ＢＭＣ５は、ＢＭＣ間通信インターフェース１４を介して、他のＢＭＣ５との間で、各モジュール２の稼働状態（各モジュールの電源状態）、モジュールの位置（スロット番号）、及び他のＢＭＣへの指示などの情報を、送受信する。ＢＭＣ間通信用インターフェース１４としては、例えば、Ｉ２Ｃなどの汎用インターフェースが用いられる。このＢＭＣ５は、スタンバイ電源が投入されていれば、モジュール電源（システム電源）が投入されていなくても、動作する。
【００３５】
また、ＢＭＣ５は、内部時計（ＢＭＣ内部時計８）、時刻コピー部１０−１、及びプライマリＢＭＣ管理部９を有している。
【００３６】
ＢＭＣ内部時計８は、各モジュール２で生じたイベントをログとして格納する際に用いられるタイムスタンプ情報を与える機能を有している。すなわち、ＢＭＣ５は、各モジュール２においてイベントが起こると、そのイベントの内容にＢＭＣ内部時計８が示す時刻情報をタイムスタンプとして付し、ログとして格納する。ＢＭＣ内部時計８には、ファイルサーバのように高精度な時刻同期は求められていない。
【００３７】
時刻コピー部１０は、各モジュール２に含まれる時計（同期制御ＬＳＩ内部時計７、ＢＭＣ内部時計８、ＲＴＣ６）の時刻をコピーする機能を有している。具体的には、時刻コピー部１０は、以下の（ａ）乃至（ｅ）の機能を有している。
（ａ）ＲＴＣ６が示す時刻をインターフェース１２を介して自身のＢＭＣ内部時計８にコピーする機能。
（ｂ）ＢＭＣ内部時計８の時刻を、インターフェース１３を介して、同期制御ＬＳＩ４の同期制御ＬＳＩ内部時計７にコピーする機能。
（ｃ）同期制御ＬＳＩ４の同期制御ＬＳＩ内部時計７の時刻をインターフェース１３を介して、自身のＢＭＣ内部時計８にコピーする機能。
（ｄ）ＢＭＣ内部時計８の時刻をインターフェース１２を介してＲＴＣ６にコピーする機能。
（ｅ）他のモジュール２に含まれるＢＭＣ内部時計８の時刻を、ＢＭＣ間通信インターフェース１４を介して、自己のＢＭＣ内部時計８にコピーする機能。
【００３８】
プライマリＢＭＣ管理部９は、複数のモジュール２において共通に動作し、複数のモジュール２のうちの何れかに含まれるＢＭＣを、プライマリＢＭＣとして決定する機能を有している。また、プライマリＢＭＣ管理部９は、プライマリＢＭＣ以外の全てのＢＭＣを、セカンダリＢＭＣとして決定する。具体的には、プライマリＢＭＣ管理部９は、ＢＭＣ間通信インターフェース１４を介して、各モジュール２における稼動状態を示す情報等を取得し、稼動しているモジュール２に含まれるＢＭＣをプライマリＢＭＣとして決定する。
【００３９】
続いて、本実施形態に係るフォールトトレラントサーバ１の動作方法を説明する。
【００４０】
まず、プライマリＢＭＣの決定方法について説明する。各モジュール２において、プライマリＢＭＣ管理部９は、ＢＭＣ間通信インターフェース１４を介して、各モジュールの稼働状態（各モジュールの電源状態）、及びモジュールの位置（スロット番号）などを示す情報を共有する。プライマリＢＭＣ管理部９は、これら情報に優先順位を付け、優先順位に基づいて、稼動しているモジュールのうちの一つに含まれるＢＭＣをプライマリＢＭＣとして決定する。ここで、プライマリＢＭＣ管理部９は、以下の場合に、プライマリＢＭＣを決定する。
【００４１】
（１）ＢＭＣ５に対する初期化処理が行われた場合
複数のモジュール２のうちのいずれかにスタンバイ電源が投入された場合、電源が投入されたモジュール２において、ＢＭＣ５が初期化される。この場合、プライマリＢＭＣ管理部９は、プライマリＢＭＣを決定する。
（２）プライマリＢＭＣを含むモジュールの稼動が停止させられた場合
プライマリＢＭＣ管理部９は、各モジュール２の稼動状態を監視する。プライマリＢＭＣを含むモジュールの稼動が停止した場合、プライマリＢＭＣ管理部９は、継続して稼動している他のモジュールに含まれるＢＭＣにプライマリＢＭＣを切り替える。
（３）制御ソフトウェアから切替指示が発行された場合
ＢＩＯＳなどの制御ソフトウェアは、プライマリＢＭＣを変更する場合に、新たにプライマリＢＭＣとなるＢＭＣ５に対して、ＩＰＭＩコマンドを発行する。ＩＰＭＩコマンドを取得したＢＭＣ５は、自モジュールをプライマリＢＭＣとして動作させるとともに、変更前のプライマリＢＭＣに対して変更指示を送信する。これにより、プライマリＢＭＣが切替えられる。
【００４２】
続いて、フォールトトレラントサーバ１における時刻の同期方法について説明する。本実施形態では、以下に示される（Ａ）乃至（Ｃ）の場合に、各モジュール２においてＲＴＣ６、ＢＭＣ内部時計８及び同期制御ＬＳＩ内部時計７の時刻が設定され、複数のモジュール２の間で時刻が同期させられる。
【００４３】
（Ａ）各モジュール２にスタンバイ電源が投入された場合。
（Ｂ）各モジュール２の電源がＯＮにされ、同期制御ＬＳＩ４が動作を開始する場合。
（Ｃ）各モジュールの電源がＯＮされており、ユーザによる指示などにより同期制御ＬＳＩ内部時計７−１が示す時刻が変更された場合。
【００４４】
以下に、上記（Ａ）乃至（Ｃ）のそれぞれにおけるフォールトトレラントサーバ２の動作方法を説明する。
【００４５】
（Ａ）各モジュール２にスタンバイ電源が投入された場合
図４は、各モジュールにスタンバイ電源が投入された場合の動作方法を示すフローチャートである。各モジュール２にスタンバイ電源が投入されると、各モジュール２において、ＢＭＣ５の初期化処理が開始される。初期化処理が行われている間に、プライマリＢＭＣ管理部９が、複数のモジュール２の内の何れかに含まれるＢＭＣをプライマリＢＭＣに決定し、他のＢＭＣをセカンダリＢＭＣに決定する（ステップＳ１）。次いで、各モジュール２では、ＢＭＣ５が、自身がプライマリＢＭＣであるか否かを判別する（ステップＳ２）。プライマリＢＭＣであった場合、ＢＭＣ５の時刻コピー部１０が、ＲＴＣ６が示す時刻を、ＢＭＣ内部時計８にコピーする（ステップＳ３）。その後、ＢＭＣ５の初期化処理が終了される。一方、ステップＳ２において、プライマリＢＭＣではなかった場合（セカンダリモジュールであった場合）、セカンダリＢＭＣにおける時刻コピー部１０は、プライマリＢＭＣのＢＭＣ内部時計８が示すコピー後の時刻を、自身のＢＭＣ内部時計８にコピーし、セカンダリＢＭＣのＢＭＣ内部時計８を更新する（ステップＳ４）。更に、セカンダリＢＭＣにおいては、時刻コピー部１０が、ＢＭＣ内部時計８が示すコピー後の時刻を、ＲＴＣ６にコピーする（ステップＳ５）。その後、ＢＭＣの初期化処理が終了される。
【００４６】
（Ｂ）：各モジュール２の電源がＯＮにされ、同期制御ＬＳＩ４が動作を開始する場合
図５は、各モジュール２に電源が投入された場合の動作方法を示すフローチャートである。各モジュール２に電源が投入された場合、電源が投入されたモジュール２において、時刻コピー部１０が、ＢＭＣ内部時計８が示す時刻を、同期制御ＬＳＩ内部時計７−１（同期制御ＬＳＩ内部時計）にコピーする（ステップＳ１１）。
【００４７】
（Ｃ）：各モジュール２の電源がＯＮされた後、ユーザによる指示などにより同期制御ＬＳＩ内部時計７−１が示す時刻が変更される場合
図６は、ユーザが同期制御ＬＳＩ内部時計７−１の時刻を変更する場合の動作を示すフローチャートである。ユーザによる時刻変更指示が与えられると、ＯＳにより、同期制御ＬＳＩ内部時計７が示す時刻が更新される。ＣＰＵ３がロックステップ動作中である場合には、全てのモジュールにおいて、同期制御ＬＳＩ内部時計７が同時に同一の時刻設定になるように更新される。一方、ＣＰＵ３がロックステップ動作中でない場合には、稼働中のモジュール２においてのみ、同期制御ＬＳＩ内部時計７が更新される（ステップＳ２１）。
【００４８】
同期制御ＬＳＩ内部時計７が更新されたモジュール２においては、同期制御ＬＳＩ４が割り込み信号を生成し、ＢＭＣ５に通知する（ステップＳ２２）。割り込み信号を取得したＢＭＣ５では、時刻コピー部１０が、同期制御ＬＳＩ内部時計７が示す時刻をＢＭＣ内部時計８にコピーする（ステップＳ２３）。更に、時刻コピー部１０は、ＢＭＣ内部時計８が示すコピー後の時刻を、ＲＴＣ６にコピーする。更に、ＢＭＣ５は、自身がプライマリＢＭＣであるか否かを判別し（ステップＳ２５）、プライマリＢＭＣである場合には、ＢＭＣ間通信用インターフェース１４を介して、他のＢＭＣ５（セカンダリモジュールのＢＭＣ）に時刻設定の変更を通知する（ステップＳ２６）。
【００４９】
稼働中でないモジュール２においては、以下の方法で時計が示す時刻が同期させられる。図７は、セカンダリＢＭＣの動作方法を示すフローチャートである。セカンダリＢＭＣは、プライマリＢＭＣから時刻設定の変更通知を取得すると、自モジュールが稼働中であるか否かを判別する（ステップＳ３１）。稼働中ではない場合（システム電源がＯＦＦである場合）、時刻コピー部１０は、プライマリＢＭＣのＢＭＣ内部時計８が示す時刻を、自身のＢＭＣ内部時計８にコピーする（ステップＳ３２）。更に、時刻コピー部１０は、ＢＭＣ内部時計８が示すコピー後の時刻を、ＲＴＣ６にコピーする（ステップＳ３３）。一方、ステップＳ３１において、自身のモジュールのシステム電源がＯＮである場合には、自身のＢＭＣ内部時計８及びとＲＴＣ６は、既に更新されている。従って、特に処理を行うことなく、動作を終了する。
【００５０】
以上説明したように、本実施形態によれば、ＢＭＣ５が、ＢＭＣ内部時計８、同期制御ＬＳＩ内部時計７、及びＲＴＣ６を同期させるので、システム電源が投入される前においても、全ての時計を同期させることができる。また、ＯＳ側に同期すべき時計の存在を意識させることなく、各時計を自動的に同期させることが可能となる。また、システム電源投入前においてもＢＭＣ内部時計８の時刻を有効な時刻に設定することができるので、システム電源が投入される前に生じたイベントのログにおいても、解析を容易にすることができる。
【００５１】
また、本実施形態によれば、複数のモジュール２間において、時計の時刻が、ＢＭＣ間通信インターフェース１４（Ｉ２Ｃインターフェース）を介して、同期させられる。従って、ＬＡＮコントローラチップの追加やＳＮＴＰサーバ環境の構築が必要ない。
【００５２】
また、本実施形態によれば、プライマリＢＭＣ管理部９により、複数のモジュール２の中からプライマリＢＭＣ２が決定される。基準となる時刻を持つモジュール２を動的に切り替えることができるので、モジュールが交換された場合であっても、プライマリＢＭＣを切り替えることにより、時刻同期を行うことができる。
【００５３】
尚、本実施形態では、プライマリＢＭＣ管理部９が設けられている場合について説明した。但し、プライマリＢＭＣが予め決定されていれば、プライマリＢＭＣ管理部９を省略することも可能である。
【００５４】
（第３の実施形態）
続いて、第３の実施形態について説明する。図８は、本実施形態に係るフォールトトレラントサーバ１を示す構成図である。図８に示されるように、本実施形態においては、各モジュール２に、ＬＡＮコントローラ１６が設けられている。また、ＢＭＣ１５には、ＳＮＴＰクライアント１５が実装されている。その他の点については、第２の実施形態と同様の構成が採用される。
【００５５】
ＬＡＮコントローラ１６は、ＬＡＮ１７を介して、ＳＮＴＰサーバ１８に接続されている。ＳＮＴＰクライアント１５は、ＬＡＮ１６コントローラを介してＳＮＴＰサーバ１８にアクセスし、ＳＮＴＰサーバ１８が保有する時刻情報をＢＭＣ内部時計８にコピーする機能を有している。
【００５６】
続いて、本実施形態におけるフォールトトレラントサーバ１の動作方法を説明する。本実施形態では、スタンバイ電源が投入された場合の動作が第１の実施形態とは異なっている。その他の点については、第１の実施形態と同様とすることができるので、詳細な説明は省略する。
【００５７】
図９は、各モジュール２にスタンバイ電源が投入された場合の動作を示すフローチャートである。複数のモジュール２のいずれかにスタンバイ電源が投入されると、そのモジュール２では、ＢＭＣ５の初期化処理が開始される。そして、プライマリＢＭＣ管理部９が、プライマリＢＭＣを決定する（ステップＳ４１）。各モジュール２において、ＢＭＣ５が、他のＢＭＣ５のＩＰアドレスを取得する（ステップＳ４２）。次いで、各モジュール２において、ＢＭＣ５が、自身がプライマリＢＭＣであるか否かを判別する（ステップＳ４３）。プライマリＢＭＣである場合、ＢＭＣ５は、ＳＮＴＰクライアント１５を起動し（ステップＳ４５）、ＳＮＴＰサーバが生成する時刻情報との同期を試みる（ステップＳ４６）。同期が成功した場合には、時刻コピー部１０が、ＳＮＴＰが生成する時刻情報をＢＭＣ内部時計８にコピーし、コピー後のＢＭＣ内部時計８の時刻を、ＲＴＣ６にコピーする（ステップＳ４７）。一方、ＳＮＴＰサーバ不在やＬＡＮ未接続などにより時刻同期に失敗した場合には、時刻コピー部１０が、ＲＴＣ６が示す時刻をＢＭＣ内部時計８にコピーする（ステップＳ４９）。ステップＳ４７又はＳ４９の処理の後、プライマリＢＭＣは、他のＢＭＣ（セカンダリＢＭＣ）に、時刻更新通知を送信する。これにより、ＢＭＣの初期化処理が終了する。尚、ステップＳ４３において、プライマリＢＭＣではなかった場合（セカンダリＢＭＣであった場合）、セカンダリＢＭＣ５は、プライマリＢＭＣからの時刻更新通知を待つ。時刻更新通知を受け取ると、図５に示したフローと同様の処理を行い、自己のＢＭＣ内部時計８及びＲＴＣ６を更新する。
【００５８】
本実施形態によれば、既述の実施形態と同様の作用効果を奏することができる。加えて、本実施形態では、プライマリＢＭＣのＢＭＣ内部時計が、ＲＴＣが示す時刻だけでなく、外部のＳＮＴＰサーバ１８が示す時刻とも同期することができる。従って、複数のサーバ上の時刻との同期が可能であるという効果が得られる。
【符号の説明】
【００５９】
１  フォールトトレラントサーバ
２（２−１、２−２）  モジュール
３（３−１、３−２）  ＣＰＵ
４（４−１、４−２）  同期制御ＬＳＩ
５（５−１、５−２）  ＢＭＣ
６（６−１、６−２）  ＲＴＣ
７（７−１、７−２）  同期制御ＬＳＩ内部時計
８（８−１、８−２）  ＢＭＣ内部時計
９  プライマリＢＭＣ管理部
１０（１０−１、１０−２）  時刻コピー部
１１（１１−１、１１−２）  インターフェース
１２（１２−１、１２−２）  インターフェース
１３（１３−１、１３−２）  インターフェース
１４  ＢＭＣ間通信インターフェース
１５（１５−１、１５−２）  ＳＮＴＰクライアント
１６（１６−１、１６−２）  ＬＡＮコントローラ
１７  ＬＡＮ
１８  ＳＮＴＰサーバ
【図１】
2013196272.tif 000003
【図２】
2013196272.tif 000004
【図３】
2013196272.tif 000005
【図４】
2013196272.tif 000006
【図５】
2013196272.tif 000007
【図６】
2013196272.tif 000008
【図７】
2013196272.tif 000009
【図８】
2013196272.tif 000010
【図９】
2013196272.tif 000011