(57)【要約】【課題】マスターが故障した場合に、スレーブが再実行不可の制御コマンドを再実行することを防ぎ、サーバ運用の停止を防ぐこと。【解決手段】マスターのＳＣＩドライバ２ｃが、スレーブが正常か否かを判定し、スレーブが正常な場合には、マスターのＳＣＩボード制御部２ｅが制御コマンドをスレーブに転送する。そして、スレーブのＳＣＩボード制御部２ｅが制御コマンドを受信し、ＳＣＩシャーシ制御部２ｄが本体４に制御コマンドを転送する。【選択図】図４
2019149053.tif 000002
【特許請求の範囲】
【請求項１】
情報処理を行う本体装置と該本体装置を制御する複数の制御装置を備えた情報処理装置において、
前記本体装置を制御するマスターとして動作する第１の制御装置は、
前記第１の制御装置に異常が発生するとマスターの機能を引き継ぐスレーブとして動作する第２の制御装置が正常であるか否かを判定する判定部と、
前記判定部が前記第２の制御装置を正常であると判定した場合、前記第２の制御装置に前記本体装置の制御に用いられる制御コマンドを転送する第１の転送部とを有し、
前記第２の制御装置は、
前記第１の転送部が転送した制御コマンドを受信する受信部と、
前記受信部が受信した制御コマンドを前記本体装置に転送する第２の転送部と
を有することを特徴とする情報処理装置。
【請求項２】
前記第１の制御装置は、
前記判定部が前記第２の制御装置を正常でないと判定した場合、前記制御コマンドを前記本体装置に転送する第３の転送部を
さらに有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記本体装置は、制御コマンドにより制御され、
前記第２の転送部は、前記第１の制御装置に異常が発生すると、前記本体装置に転送した制御コマンド以後の制御コマンドを前記本体装置に転送することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記第１の制御装置は、
前記本体装置との接続を、前記第１の制御装置と前記第２の制御装置との間で切り替える切替部と、
前記切替部による切り替えに対応して前記第３の転送部又は前記第１の転送部により制御コマンドを転送する選択転送部と
をさらに有することを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記第１の転送部は、専用の通信経路を介して前記第２の制御装置に制御コマンドを転送することを特徴とする請求項１〜４のいずれか１つ記載の情報処理装置。
【請求項６】
情報処理を行う本体装置と該本体装置を制御する複数の制御装置とを備えた情報処理装置の制御方法おいて、
前記本体装置を制御するマスターとして動作する第１の制御装置は、
前記第１の制御装置に異常が発生するとマスターの機能を引き継ぐスレーブとして動作する第２の制御装置が正常であるか否かを判定し、
前記第２の制御装置を正常であると判定した場合、前記第２の制御装置に前記本体装置の制御に用いられる制御コマンドを転送し、
前記第２の制御装置は、
前記第１の制御装置が転送した制御コマンドを受信し、
受信した制御コマンドを前記本体装置に転送する
ことを特徴とする情報処理装置の制御方法。
【請求項７】
情報処理を行う本体装置を制御する複数の制御装置のそれぞれで実行される情報処理装置の制御プログラムおいて、
前記本体装置を制御するマスターとして動作する第１の制御装置が有するコンピュータに、
前記第１の制御装置に異常が発生するとマスターの機能を引き継ぐスレーブとして動作する第２の制御装置が正常であるか否かを判定し、
前記第２の制御装置を正常であると判定した場合、前記第２の制御装置に前記本体装置の制御に用いられる制御コマンドを転送する処理を実行させ、
前記第２の制御装置が有するコンピュータに、
前記第１の制御装置が転送した制御コマンドを受信し、
受信した制御コマンドを前記本体装置に転送する処理を実行させることを特徴とする情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
情報処理を行うサーバ（情報処理装置）は、情報処理を行う本体の他に本体の初期化等の制御を行うＳＶＰ（Service  Processor）を有する。図１５は、サーバのハードウェア構成を示す図である。図１５に示すように、サーバ９１は、ＳＶＰ−０及びＳＶＰ−１で表されるＳＶＰ９２と、本体４と、スイッチ５とを有する。
【０００３】
ＳＶＰ９２は冗長化されており、例えばＳＶＰ−０がマスター（Master）として通常運用時に動作し、ＳＶＰ−１がスレーブ（Slave）としてマスターが故障した場合に動作する。ＳＶＰ９２は、メモリ２１と、ＣＰＵ（Central  Processing  Unit）２２と、デュアルＮＩＣ（Dual  Network  Interface  Card）２３と、ＰＣＩｅ（Peripheral  Component  Interconnect  Express）９３とを有する。
【０００４】
メモリ２１は、本体４を制御する制御プログラムを記憶した不揮発性記憶装置である。ＣＰＵ２２は、メモリ２１から制御プログラムを読み出して実行する中央処理装置である。デュアルＮＩＣ２３は、他のＳＶＰ９２との二重化通信に用いられる通信装置である。ＰＣＩｅ９３は、ＳＶＰ９２と本体４を接続する接続装置である。
【０００５】
マスターからスレーブへの切り替えのために、マスターとスレーブはデュアルＮＩＣ２３を用いて常時生存監視を行うとともに、マスターはスレーブに本体４の制御情報を転送し、処理の同期を行う。
【０００６】
本体４は、ＳＣＩ（System  Control  Interface）４１と、ＭＥＭ４２と、ＣＰＵ４３と、ＩＯＰ（Input  Output  Processor）４４と、スキャンＩＦ４５とを有する。ＳＣＩ４１は、ＳＶＰ９２から制御コマンドを受信して本体４を制御するコントローラである。ＭＥＭ４２は、本体４で実行されるプログラムや実行途中結果等を記憶するＲＡＭ（Random  Access  Memory）である。ＣＰＵ４３は、ＭＥＭ４２からプログラムを読み出して実行する中央処理装置である。
【０００７】
ＩＯＰ（Input  Output  Processor）４４は、本体４の入出力制御を行うプロセッサである。スキャンＩＦ４５は、ＳＣＩ４１が受信した制御コマンドを実行する装置である。スキャンＩＦ４５は、例えばＩ２Ｃ、ＪＴＡＧ（Joint  Test  Action  Groupの規格に基づく装置）である。
【０００８】
スイッチ５は、本体４に接続するＳＶＰ９２をＳＶＰ−０とＳＶＰ−１の間で切り替える。図１５は、ＳＶＰ−０が本体４に接続されている場合を示す。
【０００９】
図１６は、制御プログラムの機能構成を示す図である。図１６に示すように、制御プログラム９４には、アプリ９ａと、ＳＣＩサービス９ｂと、ＳＣＩドライバ９ｃとが含まれる。アプリ９ａは、本体４を制御するアプリケーションである。ＳＣＩサービス９ｂは、ＳＣＩ４１と通信するためのＳＣＩ制御を管理するアプリケーションである。ＳＣＩドライバ９ｃは、ＳＣＩ制御を行うドライバである。なお、アプリ９ａとＳＣＩサービス９ｂはアプリケーション層で動作し、ＳＣＩドライバ９ｃは、カーネル層で動作する。
【００１０】
ＳＣＩサービス９ｂは、デュアルＮＩＣ２３を用いて他のＳＶＰ９２と通信することで相互に監視を行う。マスターが故障した場合には、スレーブの制御プログラム９４は、マスターの制御プログラム９４との通信が切れることで生存監視により故障を検出し、マスターの制御プログラム９４に代わって本体４の制御を行う。また、マスターのＳＣＩサービス９ｂは、スレーブのＳＣＩサービス９ｂに本体４の制御情報を転送することで処理の同期を行う。
【００１１】
制御プログラム９４は、制御コマンドを制御シーケンス単位でまとめたハードウェアマクロを実行することで本体４を制御する。図１７は、ハードウェアマクロ実行までの流れを示す図である。図１７に示すように、ハードウェアマクロ６にはマクロ番号が与えられ、アプリ９ａはマクロ番号でハードウェアマクロ６の実行を指示する。
【００１２】
ＳＣＩサービス９ｂは、ハードウェアマクロ６に含まれる制御コマンドを指定してＳＣＩドライバ９ｃに実行を指示する。図１７において、例えばアプリ９ａによりマクロ番号ａのマクロの実行が指示されると、ＳＣＩサービス９ｂは、制御コマンド＃１〜＃ｉの実行を制御コマンド単位でＳＣＩドライバ９ｃに指示する。ＳＣＩドライバ９ｃは、制御コマンドをＰＣＩパケットに変換し、ＰＣＩｅ９３を介してＳＣＩ４１に転送する。
【００１３】
図１８は、マクロ番号による同期を説明するための図である。図１８に示すように、マスターのＳＣＩサービス９ｂは、故障時に備え、実行するハードウェアマクロ６のマクロ番号を、デュアルＮＩＣ２３を用いてスレーブのＳＣＩサービス９ｂに転送する。スレーブのＳＣＩサービス９ｂはマクロ番号を受信すると、実行中のハードウェアマクロ６のマクロ番号としてキャッシュする。マスターの故障が検出されると、スレーブのＳＣＩサービス９ｂは、キャッシュしたマクロ番号を用いて本体４の制御を引き継ぐ。
【００１４】
なお、ドメイン動的再構成処理を行う稼動系のサービスプロセッサがドメイン動的再構成処理を実行中に故障したときに、待機系のサービスプロセッサが稼動系に切り替わって、該実行中のドメイン動的再構成処理を引き継いで実行する技術がある。ここで、ドメイン動的再構成とは、複数のシステムボードからなるドメインを動的に再構成することである。
【００１５】
また、情報処理装置の処理の実行を管理する管理装置が別の管理装置に変更された場合に、情報処理装置の処理を続行させる技術がある。この技術では、情報処理装置は、複数の処理ステップを含む処理シーケンスを実行する。管理装置は、情報処理装置に処理ステップを所定の順で実行させることで、処理シーケンスの実行を管理する。管理装置が処理シーケンスの実行管理を別の管理装置から引き継いだとき、管理装置の情報取得手段は、処理シーケンスの進行状態を示す状態情報を情報処理装置から取得する。管理装置の制御手段は、情報取得手段によって取得された状態情報に基づいて、処理シーケンスの未実行の処理ステップの実行を情報処理装置に継続させる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】国際公開第２００８／１１１１３７号
【特許文献２】国際公開第２０１２／０２３２００号
【発明の概要】
【発明が解決しようとする課題】
【００１７】
図１９は、マクロ番号による同期で発生する問題を説明するための図である。制御コマンドの中には、ハードウェアをリセットするコマンドが存在し、再実行することで不具合が発生するコマンドが含まれる。ハードウェアマクロ６の中で再実行不可の制御コマンドを実行した後でハードウェアマクロ６に含まれる残りの制御コマンドを実行中にマスターが故障したとする。すると、スレーブはキャッシュしたマクロ番号を用いてハードウェアマクロ６の先頭の制御コマンドから実行するため、再実行不可の制御コマンドが再度実行され、サーバ９１の運用を継続することができないという問題がある。
【００１８】
図１９では、制御コマンド＃２が再実行不可の制御コマンドであるとし、制御コマンド＃２の実行後にマスターが故障すると、制御コマンド＃２はスレーブによって再実行される。
【００１９】
本発明は、１つの側面では、ＳＶＰ切り替え時に、再実行不可の制御コマンドが再実行されることを防ぎ、サーバ運用の停止を防ぐことを目的とする。
【課題を解決するための手段】
【００２０】
１つの態様では、情報処理装置は、情報処理を行う本体装置と該本体装置を制御する複数の制御装置とを備える。前記本体装置を制御するマスターとして動作する第１の制御装置は、判定部と第１の転送部とを有する。前記判定部は、前記第１の制御装置に異常が発生するとマスターの機能を引き継ぐスレーブとして動作する第２の制御装置が正常であるか否かを判定する。前記第１の転送部は、前記判定部が前記第２の制御装置を正常であると判定した場合、前記第２の制御装置に前記本体装置の制御に用いられる制御コマンドを転送する。前記第２の制御装置は、前記第１の転送部が転送した制御コマンドを受信する受信部と、前記受信部が受信した制御コマンドを前記本体装置に転送する第２の転送部とを有する。
【発明の効果】
【００２１】
１つの側面では、本発明は、ＳＶＰ切り替え時に、再実行不可の制御コマンドが再実行されることを防ぎ、サーバ運用の停止を防ぐことができる。
【図面の簡単な説明】
【００２２】
【図１】図１は、実施例に係るサーバのハードウェア構成を示す図である。
【図２】図２は、制御プログラムの機能構成を示す図である。
【図３】図３は、制御コマンドの実行の流れを説明するための図である。
【図４】図４は、カーネル層の特徴を説明するための図である。
【図５】図５は、通常運用時の制御コマンドの流れを示す図である。
【図６】図６は、通常運用時の制御コマンドの実行の流れを示すシーケンス図である。
【図７】図７は、マクロ番号の転送に用いられるパケットのデータ構造の一例を示す図である。
【図８】図８は、ＤＭＡ転送される制御コマンドパケットのデータ構造の一例を示す図である。
【図９】図９は、ＣＰＵへの割り込みの要因を示す図である。
【図１０】図１０は、マスター故障時の制御コマンドの流れを示す図である。
【図１１】図１１は、マスター故障時の制御コマンドの実行の流れを示すシーケンス図である。
【図１２】図１２は、スレーブ故障時の制御コマンドの流れを示す図である。
【図１３】図１３は、スレーブ故障時の制御コマンドの実行の流れを示すシーケンス図である。
【図１４】図１４は、ＣＰＬＤが有するレジスタを示す図である。
【図１５】図１５は、サーバのハードウェア構成を示す図である。
【図１６】図１６は、制御プログラムの機能構成を示す図である。
【図１７】図１７は、ハードウェアマクロ実行までの流れを示す図である。
【図１８】図１８は、マクロ番号による同期を説明するための図である。
【図１９】図１９は、マクロ番号による同期で発生する問題を説明するための図である。
【発明を実施するための形態】
【００２３】
以下に、本願の開示する情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００２４】
まず、実施例に係るサーバのハードウェア構成について説明する。図１は、実施例に係るサーバのハードウェア構成を示す図である。図１に示すように、サーバ１は、２台のＳＶＰ２と、ＰＣＩｅスイッチ３と、本体４と、スイッチ５とを有する。
【００２５】
２台のＳＶＰ２のうち１台はマスターとして通常運用時に動作し、他の１台はスレーブとしてマスターが故障した場合に動作する。ＳＶＰ２は、メモリ２１と、ＣＰＵ２２と、デュアルＮＩＣ２３と、シャーシＰＣＩｅ２４と、ボードＰＣＩｅ２５と、ＣＰＬＤ（Complex  Programmable  Logic  Device）２６とを有する。
【００２６】
メモリ２１は、本体４を制御する制御プログラムを記憶した不揮発性記憶装置である。ＣＰＵ２２は、メモリ２１から制御プログラムを読み出して実行する中央処理装置である。なお、制御プログラムは、ＨＤＤ（Hard  Disc  Drive）からＲＡＭに読み出され、ＲＡＭから読み出されて実行されてもよい。また、制御プログラムは、例えばＤＶＤに記憶され、ＤＶＤから読み出されてＳＶＰ２にインストールされてもよい。あるいは、制御プログラムは、ネットワークで接続された他のサーバのＨＤＤから読み出されてＳＶＰ２にインストールされてもよい。
【００２７】
デュアルＮＩＣ２３は、他のＳＶＰ２との二重化通信に用いられる通信装置である。シャーシＰＣＩｅ２４は、ＳＶＰ２と本体４をＰＣＩｅ接続する。ボードＰＣＩｅ２５は、他のＳＶＰ２のボードＰＣＩｅ２５とＰＣＩｅスイッチ３を介してＰＣＩｅ接続する。ＣＰＬＤ２６は、スイッチ５を操作して本体４をいずれかのＳＶＰ２に接続する。
【００２８】
ＰＣＩｅスイッチ３は、２つのボードＰＣＩｅ２５を接続するスイッチである。ＰＣＩｅスイッチ３は、２つのＮＴ（Non  Transparent）ポート３１を有する。一方のＮＴポート３１は一方のボードＰＣＩｅ２５と接続し、他方のＮＴポート３１は他方のボードＰＣＩｅ２５と接続する。ＰＣＩｅスイッチ３を介した通信は、デュアルＮＩＣ２３を介した通信よりも高速である。
【００２９】
本体４は、ＳＣＩ４１と、ＭＥＭ４２と、ＣＰＵ４３と、ＩＯＰ４４と、スキャンＩＦ４５とを有する。ＳＣＩ４１は、ＳＶＰ２から制御コマンドを受信して本体４を制御するコントローラである。ＭＥＭ４２は、本体４で実行されるプログラムや実行途中結果等を記憶するＲＡＭである。ＣＰＵ４３は、ＭＥＭ４２からプログラムを読み出して実行する中央処理装置である。
【００３０】
ＩＯＰ４４は、本体４の入出力制御を行うプロセッサである。スキャンＩＦ４５は、ＳＣＩ４１が受信した制御コマンドを実行する装置である。スキャンＩＦ４５は、例えばＩ２Ｃ、ＪＴＡＧである。
【００３１】
なお、ここでは、説明の便宜上ＭＥＭ４２、ＣＰＵ４３及びＩＯＰ４４を１つだけ示したが、本体４は、複数のＭＥＭ４２、ＣＰＵ４３及びＩＯＰ４４を有してよい。
【００３２】
スイッチ５は、本体４に接続するＳＶＰ２を２つのＳＶＰ２の間で切り替える。図１は、左のＳＶＰ２が本体４に接続されている場合を示す。
【００３３】
次に、ＳＶＰ２で実行される制御プログラムの機能構成について説明する。図２は、制御プログラムの機能構成を示す図である。図２に示すように、制御プログラム７に含まれるモジュールのうちアプリケーション層で実行されるモジュールには、制御プロセス２ａとＳＣＩサービス２ｂがあり、カーネル層で実行されるモジュールには、ＳＣＩドライバ２ｃとＳＣＩシャーシ制御部２ｄとＳＣＩボード制御部２ｅとがある。
【００３４】
制御プロセス２ａは、本体４を制御するアプリ９ａのプロセスである。ＳＣＩサービス２ｂは、ＳＣＩ４１と通信するためのＳＣＩ制御を管理するアプリケーションである。ＳＣＩサービス２ｂは、ハードマクロ部３ａと、制御コマンド部３ｂと、デュアル同期部３ｃとを有する。
【００３５】
ハードマクロ部３ａは、制御プロセス２ａにより指定されたハードウェアマクロ６を実行する。制御コマンド部３ｂは、ハードウェアマクロ６に含まれる制御コマンドをＳＣＩドライバ２ｃに渡す。デュアル同期部３ｃは、デュアルＮＩＣ２３を用いて他のＳＶＰ２と通信する。
【００３６】
ＳＣＩサービス２ｂは、マスターで動作する場合、故障時に備え、実行するハードウェアマクロ６のマクロ番号をデュアルＮＩＣ２３を用いてスレーブのＳＣＩサービス２ｂに転送する。スレーブのＳＣＩサービス２ｂは、マクロ番号を受信すると、実行中のハードウェアマクロ６のマクロ番号としてキャッシュする。また、スレーブのＳＣＩサービス２ｂは、ハードウェアマクロ６を実行中のマスターが故障すると、キャッシュしたマクロ番号に基づいて、スレーブのＳＣＩドライバ２ｃが本体４に転送した制御コマンドの次の制御コマンドから最後の制御コマンドまで順にＳＣＩドライバ２ｃに渡す。
【００３７】
ＳＣＩドライバ２ｃは、ＳＣＩ制御を行うドライバである。ＳＣＩドライバ２ｃは、マスターで動作する場合、スレーブが故障していないときは、スレーブに制御コマンドを転送する。ＳＣＩドライバ２ｃは、スレーブに制御コマンドを転送する場合には、ＳＣＩボード制御部２ｅを用いる。ＳＣＩボード制御部２ｅは、制御コマンドを、ボードＰＣＩｅ２５を用いてスレーブに転送する。
【００３８】
ＳＣＩドライバ２ｃは、マスターで動作する場合、スレーブが故障しているときは、本体４に制御コマンドを転送する。ＳＣＩドライバ２ｃは、本体４に制御コマンドを転送する場合には、ＳＣＩシャーシ制御部２ｄを用いる。ＳＣＩシャーシ制御部２ｄは、制御コマンドをシャーシＰＣＩｅ２４を用いてＳＣＩ４１に転送する。
【００３９】
ＳＣＩドライバ２ｃは、スレーブで動作する場合、マスターが故障していないときは、ＳＣＩボード制御部２ｅを介してマスターから制御コマンドを受け取り、ＳＣＩシャーシ制御部２ｄを介して本体４に制御コマンドを転送する。ＳＣＩボード制御部２ｅは、マスターが転送した制御コマンドをボードＰＣＩｅ２５から受信する。ＳＣＩシャーシ制御部２ｄは、マスターから転送された制御コマンドをＳＣＩドライバ２ｃを介してＳＣＩボード制御部２ｅから受け取り、シャーシＰＣＩｅ２４を用いてＳＣＩ４１に転送する。
【００４０】
ＳＣＩドライバ２ｃは、スレーブで動作する場合、ハードウェアマクロ６を実行中のマスターが故障したときは、マスターへ遷移し、自装置のＳＣＩサービス２ｂから制御コマンドを受け取り、ＳＣＩシャーシ制御部２ｄを介して本体４に制御コマンドを転送する。
【００４１】
図３は、制御コマンドの実行の流れを説明するための図である。マスター及びスレーブが正常である通常運用時は、実線で示すように、マスターのＳＣＩドライバ２ｃが、マスターのＳＣＩサービス２ｂから制御コマンドコードを受信し（ｔ１）、ＳＣＩボード制御部２ｅでスレーブへ制御コマンドを転送する（ｔ２）。ここで、制御コマンドコードは制御コマンドを識別する番号である。そして、スレーブは、マスターから制御コマンドコードを受信し（ｔ３）、スレーブのＳＣＩドライバ２ｃが、ＳＣＩシャーシ制御部２ｄでＳＣＩ４１へ制御コマンドを転送する（ｔ４）。
【００４２】
また、マスターが故障した場合には、破線で示すように、マスターはスレーブに遷移すし（ｔ５）、スレーブはマスターへ遷移する（ｔ６）。また、スレーブで異常が発生した場合には、一点鎖線で示すように、スレーブはマスターへ異常を通知し（ｔ７）、マスターのＳＣＩドライバ２ｃはＳＣＩシャーシ制御部２ｄでＳＣＩ４１へ制御コマンドを転送する（ｔ８）。なお、スレーブに続いてマスターでも異常が発生すると、マスターのＳＣＩドライバ２ｃはＳＣＩ制御を中止する（ｔ９）。
【００４３】
図４は、カーネル層の特徴を説明するための図である。図４に示すように、マスターでは、ＳＣＩドライバ２ｃは、制御コマンドの実行を検出すると（ステップＳ２１）、スレーブが故障であるか否かを判定する（ステップＳ２２）。そして、スレーブが故障していない場合には、ＳＣＩボード制御部２ｅが、ボードＰＣＩｅ２５へ制御コマンドをＤＭＡ（Direct  Memory  Access）転送する（ステップＳ２３）。一方、スレーブが故障している場合には、ＳＣＩシャーシ制御部２ｄが、シャーシＰＣＩｅ２４へ制御コマンドをＤＭＡ転送する（ステップＳ２４）。
【００４４】
また、スレーブでは、ＳＣＩドライバ２ｃは、制御コマンドの実行を検出すると（ステップＳ３１）、マスターが故障であるか否かを判定する（ステップＳ３２）。そして、マスターが故障していない場合には、ＳＣＩドライバ２ｃは、コマンド待ちをし（ステップＳ３３）、ステップＳ３１へ戻る。一方、マスターが故障している場合には、ＳＣＩシャーシ制御部２ｄが、シャーシＰＣＩｅ２４へ制御コマンドをＤＭＡ転送する（ステップＳ３５）。また、ＳＣＩボード制御部２ｅは、ボードＰＣＩｅ２５からＤＭＡ転送を受信する（ステップＳ３４）と、ＳＣＩドライバ２ｃを介してＳＣＩシャーシ制御部２ｄへ制御コマンドを渡す。そして、ＳＣＩシャーシ制御部２ｄは、シャーシＰＣＩｅ２４へ制御コマンドをＤＭＡ転送する（ステップＳ３５）。
【００４５】
次に、通常運用時の制御コマンドの流れについて説明する。図５は、通常運用時の制御コマンドの流れを示す図である。制御コマンドの流れは太い矢印で示される。図５に示すように、マスターのＳＣＩドライバ２ｃは、制御コマンドをボードＰＣＩｅ２５へ渡す。ボードＰＣＩｅ２５は、ＰＣＩｅスイッチ３へ制御コマンドを転送する。ＰＣＩｅスイッチ３は、スレーブのボードＰＣＩｅ２５へ制御コマンドを転送する。スレーブのボードＰＣＩｅ２５は、ＳＣＩボード制御部２ｅへ制御コマンドを渡す。ＳＣＩボード制御部２ｅは、ＳＣＩドライバ２ｃへ制御コマンドを渡す。ＳＣＩドライバ２ｃは、シャーシＰＣＩｅ２４へ制御コマンドを渡す。シャーシＰＣＩｅ２４は、ＳＣＩ４１４１へ制御コマンドを転送する。
【００４６】
図６は、通常運用時の制御コマンドの実行の流れを示すシーケンス図である。図６に示すように、マスターの制御プロセス２ａは、ハードウェアマクロ６を実行する（ステップＳ４１）。そして、マスターのＳＣＩサービス２ｂは、ハードウェアマクロ６のマクロ番号をデュアルＮＩＣ２３を用いてスレーブに転送する（ステップＳ４２）。スレーブのＳＣＩサービス２ｂは、ハードウェアマクロ６のマクロ番号をキャッシュする（ステップＳ４３）。
【００４７】
そして、マスターのＳＣＩサービス２ｂは、ハードウェアマクロ６に定義された順に制御コマンドをＳＣＩドライバ２ｃをコールすることで実行する（ステップＳ４４）。マスターのＳＣＩドライバ２ｃは、制御コマンドを含む制御コマンドパケットをボードＰＣＩｅ２５からスレーブへ転送する（ステップＳ４５）。
【００４８】
スレーブのＳＣＩボード制御部２ｅは、ＳＣＩ割り込みにより割り込みを検出し（ステップＳ４６）、制御コマンドパケットから制御コマンドを抽出する（ステップＳ４７）。そして、スレーブのＳＣＩボード制御部２ｅは、制御コマンドをキャッシュし（ステップＳ４８）、制御コマンドをＳＣＩドライバコールで本体４へ転送する（ステップＳ４９）。スレーブのＳＣＩドライバ２ｃは、シャーシＰＣＩｅ２４から本体４へ制御コマンドを転送する（ステップＳ５０）。
【００４９】
このように、通常運用時に、マスターのＳＣＩドライバ２ｃは、スレーブに制御コマンドを転送し、スレーブのＳＣＩドライバ２ｃが本体４へ制御コマンドを転送する。したがって、マスターが故障した場合に、スレーブは、次に本体４へ転送する制御コマンドを特定することができ、再実行不可の制御コマンドの再実行を防ぐことができる。
【００５０】
図７は、マクロ番号の転送に用いられるパケットのデータ構造の一例を示す図である。図７に示すように、パケットには、ＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）ヘッダと、実行制御プロセス番号と、実行マクロ情報とが含まれる。実行制御プロセス番号は、ハードウェアマクロ６を実行する制御プロセス２ａの番号である。複数の制御プロセス２ａが同時に実行されている場合があり、スレーブは、実行制御プロセス番号を用いて制御プロセス２ａを特定する。実行マクロ情報は、ハードウェアマクロ６のマクロ番号及びマクロパラメータ情報である。
【００５１】
図８は、ＤＭＡ転送される制御コマンドパケットのデータ構造の一例を示す図である。図８に示すように、ＤＭＡ転送される制御コマンドパケットには、ＤＭＡヘッダと、対象ユニットと、コマンド種と、コマンドデータとが含まれる。対象ユニットは、制御コマンドの実行対象のユニットを識別するコードである。コマンド種は、制御コマンドを識別するコード、及び、制御コマンドがＩ２ＣのコマンドであるかＪＴＡＧのコマンドであるかを識別するコードである。コマンドデータは、制御コマンドのデータである。
【００５２】
図９は、ＣＰＵ２２への割り込みの要因を示す図である。図９に示すように、割り込み要因には、ＳＣＩ割り込みとシステム割込みがある。ＳＣＩ割り込みは、ＤＭＡ関連の完了を示す割り込みである。システム割り込みは、ＳＣＩ異常及びＳＶＰ異常を示す割り込みである。
【００５３】
次に、マスター故障時の制御コマンドの流れについて説明する。図１０は、マスター故障時の制御コマンドの流れを示す図である。図１０に示すように、スレーブの制御プロセス２ａは、ＳＣＩサービス２ｂにハードウェアマクロ６の実行を指示する。ＳＣＩサービス２ｂは、指示されたハードウェアマクロ６に含まれる制御コマンドを先頭から順にＳＣＩドライバ２ｃに渡す。ＳＣＩドライバ２ｃは、シャーシＰＣＩｅ２４に制御コマンドを渡す。シャーシＰＣＩｅ２４は、ＳＣＩ４１に制御コマンドを転送する。
【００５４】
図１１は、マスター故障時の制御コマンドの実行の流れを示すシーケンス図である。なお、図１１では、マスターがハードウェアマクロ実行中に故障した場合を示す。図１１に示すように、マスターの制御プロセス２ａは、ハードウェアマクロ６を実行する（ステップＳ６１）。そして、マスターのＳＣＩサービス２ｂは、ハードウェアマクロ６のマクロ番号をデュアルＮＩＣ２３を用いてスレーブに転送する（ステップＳ６２）。スレーブのＳＣＩサービス２ｂは、ハードウェアマクロ６のマクロ番号をキャッシュする（ステップＳ６３）。
【００５５】
そして、マスターのＳＣＩサービス２ｂは、ハードウェアマクロ６に定義された順に制御コマンドをＳＣＩドライバ２ｃをコールすることで実行する（ステップＳ６４）。マスターのＳＣＩドライバ２ｃは、制御コマンドを含む制御コマンドパケットをボードＰＣＩｅ２５からスレーブへ転送する（ステップＳ６５）。そして、ステップ６４とステップ６５を繰り返すうちに、マスターが故障する。
【００５６】
すると、スレーブがマスターの故障を検出する。なお、スレーブは、デュアルＮＩＣ２３を用いた生存監視によりマスターの故障を検出する。あるいは、スレーブは、次の制御コマンドが転送されない、制御コマンドの実行完了通知に対する応答がない等によりマスターの故障を検出する。
【００５７】
マスターの故障が検出されると、スレーブのＳＣＩサービス２ｂは、キャッシュしたマクロ番号から実行中のハードウェアマクロ６を特定する（ステップＳ６６）。そして、スレーブのＳＣＩサービス２ｂは、ＳＣＩシャーシ制御部２ｄが転送した制御コマンドをキャッシュから取得し（ステップＳ６７）、取得した制御コマンドの次の制御コマンドを本体４へ転送するためにＳＣＩドライバ２ｃをコールする（ステップＳ６８）。コールされたＳＣＩドライバ２ｃは、シャーシＰＣＩｅ２４から本体４へ制御コマンドを転送する（ステップＳ６９）。
【００５８】
このように、マスターが故障すると、スレーブのＳＣＩサービス２ｂは、ＳＣＩボード制御部２ｅから受け取った制御コマンドをキャッシュから取得し、取得した制御コマンドの次の制御コマンドから本体４へ転送する。したがって、スレーブは、再実行不可の制御コマンドの再実行を防ぐことができる。
【００５９】
次に、スレーブ故障時の制御コマンドの流れについて説明する。図１２は、スレーブ故障時の制御コマンドの流れを示す図である。図１２に示すように、マスターのＳＣＩドライバ２ｃは、シャーシＰＣＩｅ２４に制御コマンドを渡す。シャーシＰＣＩｅ２４は、ＳＣＩ４１に制御コマンドを転送する。
【００６０】
図１３は、スレーブ故障時の制御コマンドの実行の流れを示すシーケンス図である。なお、図１３では、マスターがハードウェアマクロ実行中にスレーブが故障した場合を示す。図１３に示すように、マスターの制御プロセス２ａは、ハードウェアマクロ６を実行する（ステップＳ７１）。そして、マスターのＳＣＩサービス２ｂは、ハードウェアマクロ６のマクロ番号をデュアルＮＩＣ２３を用いてスレーブに転送する（ステップＳ７２）。スレーブのＳＣＩサービス２ｂは、ハードウェアマクロ６のマクロ番号をキャッシュする（ステップＳ７３）。
【００６１】
そして、マスターのＳＣＩサービス２ｂは、ハードウェアマクロ６に定義された順に制御コマンドをＳＣＩドライバ２ｃをコールすることで実行する（ステップＳ７４）。マスターのＳＣＩドライバ２ｃは、制御コマンドを含む制御コマンドパケットをボードＰＣＩｅ２５からスレーブへ転送する（ステップＳ７５）。そして、ステップ７４とステップ７５を繰り返すうちに、スレーブが故障する。
【００６２】
すると、マスターがスレーブの故障を検出する。なお、マスターは、デュアルＮＩＣ２３を用いた生存監視によりスレーブの故障を検出する。あるいは、マスターは、制御コマンドの実行完了通知がない等によりスレーブの故障を検出する。
【００６３】
スレーブの故障が検出されると、マスターのＳＣＩサービス２ｂは、制御コマンドを本体４へ転送するために切り替えを実行する（ステップＳ７６）。すると、マスターのＳＣＩドライバ２ｃは、ＣＰＬＤ２６でスレーブからマスターへシャーシＰＣＩｅ２４を切り替える（ステップＳ７７）。そして、マスターのＳＣＩドライバ２ｃは、ボードＰＣＩｅ２５からシャーシＰＣＩｅ２４へ切り替える（ステップＳ７８）。
【００６４】
そして、マスターのＳＣＩサービス２ｂは、制御コマンドを本体４へ転送するためＳＣＩドライバ２ｃをコールする（ステップＳ７９）。すると、マスターのＳＣＩドライバ２ｃは、シャーシＰＣＩｅ２４から本体４へ制御コマンドを転送する（ステップＳ８０）。
【００６５】
このように、スレーブが故障すると、マスターのＳＣＩドライバ２ｃがシャーシＰＣＩｅ２４から本体４へ制御コマンドを転送するので、サーバ１は、運用を継続することできる。
【００６６】
図１４は、ＣＰＬＤ２６が有するレジスタを示す図である。図１４に示すように、ＣＰＬＤ２６は、ＰＣＩセレクトレジスタとステータスレジスタを有する。ＰＣＩセレクトレジスタは、スイッチ５の接続を切り替えるために用いられる。ＰＣＩセレクトレジスタが０に設定されると、シャーシＰＣＩｅ２４が選択され、マスターから制御コマンドが本体４へ転送され、ＰＣＩセレクトレジスタが１に設定されると、ボードＰＣＩｅ２５が選択され、スレーブから制御コマンドが本体４へ転送される。ステータスレジスタは、ＳＶＰ２が正常か否かを示す。
【００６７】
上述してきたように、実施例では、マスターのＳＣＩドライバ２ｃがスレーブが正常か否かを判定し、スレーブが正常な場合には、マスターのＳＣＩボード制御部２ｅが制御コマンドをスレーブに転送する。そして、スレーブのＳＣＩボード制御部２ｅが制御コマンドを受信し、ＳＣＩシャーシ制御部２ｄが本体４に制御コマンドを転送する。したがって、マスターが故障した場合に、スレーブは、次に本体４に転送する制御コマンドを特定することができ、再実行不可の制御コマンドが再実行されることを防ぐことができる。このため、サーバ１は、運用を継続することできる。
【００６８】
また、実施例では、スレーブが正常でない場合には、マスターのＳＣＩシャーシ制御部２ｄが制御コマンドを本体４に転送するので、スレーブが故障した場合にも本体４を制御することができる。
【００６９】
また、実施例では、マスターが故障すると、スレーブのＳＣＩシャーシ制御部２ｄは、本体４に転送済みの次の制御コマンドから本体４に制御コマンドを転送するので、再実行不可の制御コマンドが再実行されることを防ぐことができる。
【００７０】
また、実施例では、ＣＰＬＤ２６が本体４に接続されるＳＶＰ２をマスターとスレーブとの間で切り替え、本体４に接続されるＳＶＰ２に対応してＳＣＩドライバ２ｃがＳＣＩボード制御部２ｅ又はＳＣＩシャーシ制御部２ｄを用いて制御コマンドを転送する。したがって、本体４は確実に制御コマンドを受信することができる。
【００７１】
また、実施例では、ＳＣＩボード制御部２ｅは、ＰＣＩｅスイッチ３を介してスレーブへ制御コマンドを転送するので、高速に制御コマンドを転送することができる。
【００７２】
なお、実施例では、本体４と２つのＳＶＰ２の一方との接続をＣＰＬＤ２６を用いて切り替える場合について説明したが、他のデバイスを用いて当該接続を切り替えてもよい。また、実施例では、ＰＣＩｅを用いてマスターとスレーブの間の通信を行う場合について説明したが、他の通信デバイスを用いてマスターとスレーブの間の通信を行ってもよい。また、実施例では、本体４の制御にＳＣＩ４１を用いる場合について説明したが、他のコントローラを用いて本体４を制御してもよい。
【符号の説明】
【００７３】
１，９１    サーバ
２，９２    ＳＶＰ
２ａ    制御プロセス
２ｂ，９ｂ    ＳＣＩサービス
２ｃ，９ｃ    ＳＣＩドライバ
２ｄ    ＳＣＩシャーシ制御部
２ｅ    ＳＣＩボード制御部
３    ＰＣＩｅスイッチ
３ａ    ハードマクロ部
３ｂ    制御コマンド部
３ｃ    デュアル同期部
４    本体
５    スイッチ
６    ハードウェアマクロ
７，９４    制御プログラム
９ａ    アプリ
２１    メモリ
２２    ＣＰＵ
２３    デュアルＮＩＣ
２４    シャーシＰＣＩｅ
２５    ボードＰＣＩｅ
２６    ＣＰＬＤ
３１    ＮＴポート
４１    ＳＣＩ
４２    ＭＥＭ
４３    ＣＰＵ
４４    ＩＯＰ
４５    スキャンＩＦ
９３    ＰＣＩｅ
【図１】
2019149053.tif 000003
【図２】
2019149053.tif 000004
【図３】
2019149053.tif 000005
【図４】
2019149053.tif 000006
【図５】
2019149053.tif 000007
【図６】
2019149053.tif 000008
【図７】
2019149053.tif 000009
【図８】
2019149053.tif 000010
【図９】
2019149053.tif 000011
【図１０】
2019149053.tif 000012
【図１１】
2019149053.tif 000013
【図１２】
2019149053.tif 000014
【図１３】
2019149053.tif 000015
【図１４】
2019149053.tif 000016
【図１５】
2019149053.tif 000017
【図１６】
2019149053.tif 000018
【図１７】
2019149053.tif 000019
【図１８】
2019149053.tif 000020
【図１９】
2019149053.tif 000021