本発明の実施の形態について、図面を参照しながら詳細に、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
各実施の形態に係る計算装置システムは、ネットワークを介して接続された複数の計算装置が分散配置された計算装置システムであって、ネットワークに関する故障箇所を検出する機能を有する。
本実施の形態では、ソフトウェアは、プログラムまたはデータを含む。また、計算装置は、物理計算機と、仮想計算機を含む。本実施の形態では、物理計算機を、計算装置ともいう。すなわち、計算装置は、CPU(Central Processing Unit)およびソフトウェアを格納するためのメモリデバイス(ROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスク等)、クロック出力のための発振器等の各種ハードウェアから構成された計算機である。また、計算装置のメモリデバイスにはOS(Operating System)と、各種プログラムが格納される。CPUは、OSを実行し、OSの制御のもとで各種プログラムを起動して実行する。当該計算装置の構成は周知であるので、詳細な説明は繰り返さない。
仮想計算機は、計算装置のOS制御のもとで実行される各種プログラムおよびデータを含んで構成される。仮想計算機の各種プログラムには、仮想計算機のためのOSも含まれて、仮想計算機の各種プログラムは、当該仮想計算機のOSのもとで起動および実行が制御される。計算装置が当該各種プログラムを実行することにより、計算装置において仮想計算機が実現される。
また、後述する故障部位判定部によって自端故障または他端故障が判定される。自端故障とは、当該故障部位判定部を備えた計算装置(自計算装置ともいう)のLAN(Local Area Network)との接続にかかる通信インターフェイス(自計算装置の物理NIC(後述する)の状態が異常であることを示す。また、他端故障とは、自計算装置の通信相手となる相手計算装置側のLANとの接続にかかる通信インターフェイス(相手計算装置の物理NIC)の状態が異常である、またはLANに異常があることを示す。
[実施の形態1]
実施の形態1に係る例えば電力系統監視システムに適用される計算機システム1は、計算装置A100、計算装置B110、および計算装置A100と計算装置B110とを接続するためのネットワークを備える。ネットワークは、LAN−A101とLAN−B102(以下、LAN−A101とLAN−B102をLANと総称する場合がある)とによって2重化されている。なお、LANは有線または無線のいずれであってもよく、また、ネットワークの種類はLANに限定されない。なお、LANに接続される装置としては、計算装置に限定されず、LANを介して通信可能な装置全般を適用することができる。実施の形態1では、説明を簡単にするために、LANには計算装置のみが接続されていると想定する。
図1では、電力系統で測定される各種データ(電流、電圧等)はLAN−A101およびLAN−B102を介して伝送されて計算装置A100または物理計算機B110によりデータ処理されるが、ここでは、その詳細な説明は繰り返さない。
計算装置A100は、仮想計算機A200および仮想計算機B300、ならびに仮想計算機間または仮想計算機とLAN間の通信を切替えるためのソフトウェアスイッチである仮想SW(switchの略)−A203および仮想SW(switchの略)−B303を備える。計算装置A100は、さらに、LANと通信するための通信インターフェイスに相当するハードウェアである物理NIC(Network Interface Card)−A103および物理NIC−B104、および後述する計算機判定定義を取得する計算機判定定義取得部502を備える。
仮想計算機A200は、仮想計算機A200内のプログラムの起動および実行を制御するCU(Control Unit)−A210、後述する計算機判定定義500、故障状態検出部400、故障部位判定部401、同一計算装置内の他の仮想計算機B200との通信を制御するための仮想NIC−A201および仮想NIC−B202、ならびに応答処理を実施する応答部604を備える。故障状態検出部400は、後述する疎通確認要求を送信する要求送信部400a、および疎通確認要求に対する応答に基づき通信インターフェイスの異常の有無を判定する状態判定部400bを含む。
同様に、仮想計算機B300は、仮想計算機B300内のプログラムの起動および実行を制御するCU(Control Unit)−B310、後述する計算機判定定義501、故障状態検出部402、故障部位判定部403、同一計算装置内の他の仮想計算機A200との間の通信を制御するための仮想NIC−A301,仮想NIC−B302、および応答処理を実施する応答部605を備える。故障状態検出部402は、後述する疎通確認要求を送信する要求送信部402a、および疎通確認要求に対する応答に基づき通信インターフェイスの異常の有無を判定する状態判定部402bを含む。仮想計算機A200とB300の各部は、計算装置A100の予め定められた記憶領域(図2で後述する)に格納されたプログラムにより実現される。
また、計算装置B110は、LANと通信するためのハードウェアである通信インターフェイスに相当する物理NIC−A105,物理NIC−B106を備えるとともに、予め定められた記憶領域(図2で後述する)に格納された各種プログラムを備える。各種プログラムには、計算装置B110内のプログラムの起動および実行を制御するCU(Control Unit)410、故障状態検出部404、故障部位判定部405、後述する計算機判定定義503を取得するための計算機判定定義取得部504、および応答処理を実施する応答部606の各機能を実現するためのプログラムが含まれる。故障状態検出部404は、後述する疎通確認要求を送信する要求送信部404a、および疎通確認要求に対する応答に基づき通信インターフェイスの異常の有無を判定する状態判定部404bを含む。なお、計算装置B110は、仮想計算機を備えない構成としたが、1つ以上の仮想計算機を備えるとしてもよい。
ここでは、故障状態検出部400、故障部位判定部401および計算機判定定義500は、計算装置A100の通信を制御するための通信制御装置10Aを構成する。同様に、故障状態検出部402、故障部位判定部403および計算機判定定義501も、計算装置A100の通信を制御するための通信制御装置10Bを構成する。同様に、故障状態検出部404、故障部位判定部405および計算機判定定義503は、計算装置B110の通信を制御するための通信制御装置10Cを構成する。
計算装置A100と計算装置B110は、以下の実施の形態1では、計算装置Aと計算装置Bとそれぞれ称する場合がある。また、仮想計算機A200と仮想計算機B300は、仮想計算機AとBとそれぞれ称する場合がある。また、CU−A210およびCU−B310は、CUと総称する場合がある。
図1では、電力系統のフェールセーフの観点からLAN、計算装置および仮想計算機は2重化されているが、これに限定されず3重化以上に多重化されてもよい。
図1では、計算装置Aおよび計算装置Bは電源ONされると起動する。計算装置が起動すると、計算装置Aにおいて仮想計算機A,Bも起動する。計算装置Aと計算装置Bとは、通信インターフェイスに相当する物理NIC−A103,物理NIC−A105によってLAN−A101を介して通信することができ、また、通信インターフェイスに相当する物理NIC−B104,物理NIC−B106によってLAN−B102を介して通信することができる。また、仮想計算機Aと仮想計算機Bとは、ソフトウェアである通信部(仮想SW−A203および仮想SW−B303、ならび仮想NIC−A201、仮想NIC−B202、仮想NIC−A301および仮想NIC−B302)を介して相互に通信することができる。
図1では、仮想計算機Aが計算装置Bと通信をする場合、LAN−A101を経由する際には仮想SW−A203を介して行う。具体的には、仮想計算機Aからのデータは、仮想NIC−A201→仮想SW−A203→物理NIC−A103→LAN−A101→物理NIC−A105の経路を経て送信される。計算装置Bからのデータは、この経路を逆に流れて送信される。LAN−B102を経由する際には仮想SW−B303を介して行う。具体的には、仮想計算機Aからのデータは、仮想NIC−B202→仮想SW−B303→物理NIC−B104→LAN−B102→物理NIC−B106の経路を経て送信される。計算装置Bからのデータは、この経路を逆に流れて送信される。
実施の形態に係る計算装置は、図2に示すハードウェア構成を有する。具体的には、ハードウェアのCPU90、ハードディスク25、ROM、RAM等の揮発性または不揮発性の記憶媒体であるメモリ30、物理NIC−AまたはBに相当する通信I/F(Interface)40、操作者の指示等の各種入力を受けるキーボードおよびマウス等からなる操作部50、および各種情報を表示するためのディスプレイ等の表示部60を含む。計算装置は、さらに、タイマ70、着脱可能に装着されるCD−ROM(compact disk read only memory)等からなる記録媒体81をアクセスしてデータの読み書きを行うメモリI/F(Interface)80を含む。各ハードウェアは、相互にデータバスによって接続されている。ハードディスク25、メモリ30および記録媒体81等は、仮想計算機のプログラムおよびデータを含むソフトウェアを格納するための記憶領域に相当し、また計算装置のプログラムおよびデータを含むソフトウェアを格納するための記憶領域に相当する。
計算装置Aは図2のハードウェア資源を有し、仮想計算機Aと仮想計算機Bと上述の通信部のプログラムは、このハードウェア資源を共用しながら実行される。なお、計算装置Aは、実現する各仮想計算機について個別にハードウェア資源を備えてもよい。
このように、計算装置AのCPU90、ハードディスク25およびメモリ30等のハードウェア資源は、仮想計算機AとBおよび仮想計算機AとBの間を通信可能に接続する上述した通信部を実現するための手段に相当する。
図3は、実施の形態1に係る計算機判定定義500、501および503を示す。これらは、計算装置Aが実現する仮想計算機A200およびB300に割当られた識別情報を記憶する情報記憶部に相当する。この情報記憶部は、図2のメモリ30等の記憶領域に設けられる。
本実施の形態では、これら計算機判定定義は同様の構成を有するので、図3では、代表して計算機判定定義500を説明する。計算機判定定義500は、計算機システム1内の各計算装置に対応して、当該計算装置および仮想計算機を、計算機システム1において一意に識別するために各計算機に割当られた識別情報を示す。つまり、計算機判定定義500は、計算装置Aについては仮想計算機Aに対応した識別情報であるホスト情報(計算機名称と、LAN−A101を介して通信するための定義データA-DAと、LAN−B102を介して通信するための定義データA−DBとを含む)と、仮想計算機Bに対応した識別情報であるホスト情報(計算機名称と、LAN−A101を介して通信するための定義データB-DAと、LAN−B102を介して通信するための定義データB−DBとを含む)とを有する。
定義データA−DAは、仮想計算機AがLAN−A101を介して通信する際に参照するデータであって、仮想計算機AのLAN−A101におけるIP(Internet Protocol)アドレス、およびNIC構成情報を含む。IPアドレスは、仮想計算機Aを実現する計算装置AのIPアドレスと仮想計算機AのIPアドレスとを含む。NIC構成情報は、当該仮想計算機AがLAN−A101を介して通信するための物理NICの識別子(ポート番号、アドレス等)を示す。
定義データA−DBは、対応する仮想計算機AがLAN−B102を介して通信する際に参照するデータであって、定義データA−DAと同様に、仮想計算機のLAN−B102におけるIPアドレス、およびNIC構成情報を含む。
計算機判定定義500は、また、仮想計算機Bに対応しての識別情報であるホスト情報(計算機名称と、LAN−A101を介して通信するための定義データB-DAと、LAN−B102を介して通信するための定義データB−DBとを含む)を有する。このホスト情報も仮想計算機Aのホスト情報と同様である。つまり、定義データB−DAおよび定義データB−DBそれぞれのIPアドレスは、仮想計算機Bを実現する計算装置AのIPアドレスと仮想計算機BのIPアドレスとを含む。
計算機判定定義500は、さらに、計算装置Bに対応してホスト情報(計算機名称と、LAN−A101を介して通信するための定義データBAと、LAN−B102を介して通信するための定義データBBを含む)を有する。定義データBAは、当該計算装置BのLAN−A101におけるIPアドレス、およびNIC構成情報を含み、同様に、定義データBBは、計算装置BのLAN−B102におけるIPアドレス、およびNIC構成情報を含む。計算装置Bでは、仮想計算機が実現されないために、これらIPアドレスは、計算装置Bに割当られたIPアドレスを示す。
図4には、実施の形態に係る計算機判定定義取得部による処理のフローチャートが示される。このフローチャートに従うプログラムは、予め計算装置の記憶領域に格納されており、計算装置が電源ONされて起動されると、CPU90は図4のプログラムを実行し計算機判定定義を生成する。ここでは、計算装置Aの計算機判定定義取得部502による計算機判定定義500と501の生成を例示する。
図4を参照して、計算装置Aの起動時に、CPU90の計算機判定定義取得部502は、メモリ30に予め登録された計算機情報に基づき、計算装置Aにより仮想計算機が実現されるか否かを判定する(ステップS21)。
計算機判定定義取得部502は、仮想計算機が実現されると判定したときは(ステップS21で“仮想計算機あり”)、システムコマンドを用いて全仮想計算機のホスト情報を取得する(ステップS22)。なお、ホスト情報は、計算装置Aの予め定められた記憶領域に格納されている。
計算機判定定義取得部502は、取得したホスト情報を計算機判定定義500と501に設定して(ステップS23)、処理を終了する。これにより、図3の計算機判定定義500と501が取得される。
計算装置Aでは仮想計算機が実現されるため、ステップS24以降の処理は実施されないが、計算装置Bでは仮想計算機が実現されないために、ステップS24以降の処理が実施される。具体的には、計算装置Bの起動時に、CPU90の計算機判定定義取得部504は、メモリ30に予め登録された計算機情報に基づき、計算装置B上に仮想計算機が実現されるか否かを判定する(ステップS21)。
計算機判定定義取得部504は、仮想計算機が実現されないと判定し(ステップS21で“仮想計算機なし”)、システムコマンドを用いて計算装置Bのホスト情報を取得する(ステップS24)。なお、ホスト情報は、計算装置Bの予め定められた記憶領域に格納されている。
計算機判定定義取得部504は、取得したホスト情報を計算機判定定義503に設定し(ステップS25)、処理を終了する。これにより、図3の計算機判定定義503が取得される。
実施の形態1では、上記の計算機情報およびホスト情報は、計算機システム1の計算装置または仮想計算機の構成が変更(追加、削除等)されるごとに、当該変更後の構成を示すように書換えられる。また、計算機が稼働中は図4の処理は定期的に繰返し実行されて、計算機判定義を、最新情報を示すように変更することができる。
図5には、実施の形態1に係る通信のパケット例が示される。図5では、ICMP(Internet Control Message Protocol)のプロトコルに従うパケットを示し、パケットは、当該パケットに格納されたデータの種類を示すデータタイプTY、当該通信パケットのあて先情報および送信元情報を格納するヘッダ部HE、および送受信するべきデータを格納するためのデータ部DBを含む。ヘッダ部HEには、パケットが経由する仮想NICおよび物理NICの識別子(ポート番号、アドレス等)も含まれる。仮想SW−A203または仮想SW−B303は、受信パケットのヘッダ部HEのデータから、当該パケットの送出先を決定して振り分けることができる。
図5では、エコー要求パケットP10(以下、要求パケットP10ともいう)とエコー応答パケットP20(以下、応答パケットP20ともいう)が示される。要求パケットP10のデータタイプTYは通信の疎通確認要求、すなわち通信可否(疎通)を問い合わせるエコー要求を示し、応答パケットP20のデータタイプTYはエコー要求に対するエコー応答を示す。応答パケットP20は、要求パケットP10を受信した場合に生成されて、受信した要求パケットP10のデータ部DBの内容はそのままデータ部にコピーされ、データタイプTYには“エコー応答”がセットされることで応答パケットP20が生成される。応答パケットP20のヘッダ部のあて先情報および送信元情報には、受信した要求パケットP10の送信元情報およびあて先情報がそれぞれセットされる。これらパケットは、本実施の形態では、送信側と受信側とで同期をとらずに(非同期に)伝送される。
次に、ネットワーク障害が発生した場合における故障部位の判定処理について説明する。図6は、実施の形態1に係る故障部位判定のフローチャート図である。このフローチャートに従うプログラムは、予め各計算機の記憶領域に格納されている。図6を参照して、本実施の形態に係る仮想計算機Aにおいて故障部位判定部401のプログラムが実行されることにより故障部位判定が実施される場合を説明する。
まず、仮想計算機Aでは、仮想NIC−A201または仮想NIC−B202の受信信号から、予め定められた期間にわたりLANから信号受信できていない等の問題が発生しているか否かを判定する。このLAN判定処理を説明する。
まず、本実施の形態では、各計算装置の物理NIC−AはLAN−A101に接続され、また物理NIC−BはLAN−B102に接続されている。各物理NICは、自己を一意に識別するための異なるNICアドレス(MACアドレス等)が割り当てられており、LANから受信したデータ(パケットを含む)に自己のNICアドレスを付加して計算機内部に送信する。したがって、計算装置のCPU90または仮想計算機のCUは、受信データを解析し、付加されたNICアドレスを取得し、取得したNICアドレスから、いずれのLANからデータを受信したかを検出することができる。例えば、計算装置または仮想計算機は予め定められた記憶領域に、NICアドレスと接続LANの種類(LAN−A、LAN−B)とを対応付けた対応付け情報を予め記憶する。そして、上述の解析により取得したNICアドレスに基づき対応付け情報を検索することにより、受信データを伝送したLANを識別することができる。したがって、この識別結果から、予め定められた期間にわたりデータを受信できていない等の問題が発生しているLANを判定することができる。
上述のLAN判定処理により、問題が発生しているLANを検出すると、図6の故障部位判定処理が開始される。
まず、故障状態検出部400の要求送信部400aは、問題発生のLANがLAN−A101かLAN−B102かを判別する。そして、この判別したLANをチェック対象LANとして設定されたエコー要求の要求パケットP10を生成して送信する。この要求パケットP10の送信元情報は、仮想計算機A200のIPアドレスを示し、あて先情報はブロードキャスト情報を示す。生成された要求パケットP10は各計算機へ送信される(ステップS31)。なお、各計算機のIPアドレスは、記憶領域(ハードディスク25、メモリ30および記録媒体81等)に予め格納されている。
例えば、LAN−A101に問題発生を検出したとすると、要求送信部400aからの要求パケットP10は、チェック対象であるLAN−A101に送出されるように、仮想NIC−A201→仮想SW−A203→物理NIC−A103を経由してLAN−A101に送出される。また、計算装置A内の他の仮想計算機Bにも送信されるように、仮想NIC−B202→仮想SW−B303→仮想NIC−B302を経由して仮想計算機Bに送信される。
送信された要求パケットP10は、ネットワーク障害が発生していない計算機によって受信される。要求パケットP10を受信した計算機では、応答部が要求パケットP10からエコー応答の応答パケットP20を生成する。この応答パケットP20の送信元情報には、送信元となる計算機のIPアドレスがセットされる。
生成された応答パケットP20は仮想計算機A宛てに送信される。具体的には、計算装置Bからの応答パケットP20は、物理NIC−A105→LAN−A101→物理NIC−A103→仮想SW−A203→仮想NIC−A201を経由して仮想計算機Aに送信される。また、仮想計算機Bからの応答パケットP20は、仮想NIC−A301→仮想SW−A203→仮想NIC−A201を経由して仮想計算機Aに送信される。
エコー要求送信元である仮想計算機Aにおいては、故障部位判定部401の状態判定部400bは、受信した応答パケットP20の内容に基づき、通信インターフェイスである物理NICの状態(故障の有無(異常、正常)等)を検出する。具体的には、状態判定部400bは、他の計算装置(計算装置B)または他の仮想計算機(仮想計算機B)から受信した応答パケットP20の内容に基づき、物理NICの状態(故障の有無(異常、正常)等)を判定する。この状態判定部400bによる判定処理を説明する。
まず、状態判定部400bは、応答パケットP20を受信できるか監視する(ステップS31)。監視結果に基づき、応答パケットP20を受信したか否かを判定する(ステップS32)。状態判定部400bは、応答パケットP20を受信していないと判定すると(ステップS32で“エコー要求に対してエコー応答がない”)、故障部位判定部401は自端故障、すなわち自己の計算装置Aに接続されたLAN−A101および通信インターフェイスの物理NIC−A103が故障していると判定し、判定結果を出力する(ステップS33)。例えば、表示部60に「LAN−A101および物理NIC−A103等のネットワークインターフェイス部分が故障」の旨を出力する。
状態判定部400bは、応答パケットP20を受信したと判定すると(ステップS32で“エコー要求に対してエコー応答があり”)、受信応答パケットP20のうちから、計算装置A上の仮想計算機からの応答パケットP20を除外する(ステップS34)。これは仮想計算機Bからのエコー応答を除外するために実施される。つまり、計算装置Aの物理NIC−A103が故障していても、仮想SW−A203は健全に動作する。よって仮想計算機Bからのエコー応答が仮想NIC−A301→仮想SW−A203経由で受信された場合には、LAN−A101を経由して応答パケットP20を受信したと誤判定されてしまうためである。
そこで、状態判定部400bは、計算機判定定義500を参照して、計算装置Aにおける仮想計算機からの応答を除外する。具体的には、状態判定部400bは、計算機判定定義500を検索し、計算機判定定義500から計算装置A上の各仮想計算機のIPアドレスを読出す。そして、受信した各応答パケットP20の送信元情報が示すIPアドレスと、読出された仮想計算機グループのIPアドレスとを比較する。状態判定部400bは、比較の結果、読出された仮想計算機グループのIPアドレスと一致したIPアドレスを有した応答パケットP20を破棄(受信応答パケットP20のうちから、IPアドレスが一致した応答パケットP20を除外)する。
ステップS34では、受信した応答パケットP20のうちから、計算装置Aにおける各仮想計算機からの応答パケットP20が全て除外されたことにより、仮想計算機AおよびBのIPアドレスとは異なるIPアドレスを、送信元情報として有した応答パケットP20のみを残すことができる。
状態判定部400bは、残った応答パケットP20の内容に基づき他計算装置からのエコー応答のあり、なしを判定する(ステップS35)。
具体的には、状態判定部400bは、残った各応答パケットP20の送信元情報が示すIPアドレスと、計算機判定定義500から読出した他の各計算装置のIPアドレス(計算装置上の仮想計算機のIPアドレスは除いたもの)を比較する。状態判定部400bは、比較の結果に基づき、計算機判定定義500に格納された他の全ての計算装置それぞれのIPアドレスについて、当該IPアドレスを送信元情報として有した応答パケットP20を全て揃って受信できているか否かを判定する。全て受信できていると判定される場合は(ステップS35で“他の計算装置全てから応答あり”)、状態判定部400bは、故障部位なしと判定する。判定の結果は表示部60に出力される(ステップS40)。例えば、「LAN−A101および物理NIC−A103等のネットワークインターフェイス部分は正常」の旨が出力される。
一方、状態判定部400bは、他計算装置からのエコー応答を全て揃って受信できていないと判定すると(ステップS35で“応答がない計算装置があり”)、他計算装置から受信したエコー応答の応答パケットP20の件数をカウントして(ステップS36)、カウント数をチェックする(ステップS37)。その結果に基づき、状態判定部400bは“1件以上のエコー応答あり”と判定すると、すなわちLAN−A101に接続された他の計算装置側の故障である他端故障と判定する。判定の結果は表示部60に出力される(ステップS39)。例えば、「LAN−A101に接続された他の計算装置のネットワークインターフェイス部分の故障あり」の旨が出力される。
一方、状態判定部400bは、1件もエコー応答の応答パケットP20を受信していないと判定すると(ステップS37で“1件もエコー応答なし”)、自端故障と判定する。その判定の結果は表示部60に出力される(ステップS38)。この出力情報は、例えばステップS33と同様である。
図6の処理は、仮想計算機Aを例示して説明したが、仮想計算機B、または計算装置Bにおいても、LAN判定処理により、問題が発生しているLANの種類を検出した場合には、仮想計算機Bの故障部位判定部403または計算装置Bの故障部位判定部405による、図6の処理が開始される。
処理では、上述したように、エコー要求の要求パケットP10またはエコー応答の応答パケットP20の転送が非同期に実施されることで、送信側と受信側のタイミングの一致(同期)をとる必要はない。それにより、計算装置、仮想計算機および通信回線(LAN)にかかる負荷上昇を抑制しつつ、故障部位を特定し、その特定した情報を出力することができる。
なお、実施の形態1では、仮想計算機が、通信制御装置10Aおよび10Cを備える構成を説明したが、これに限定されない。つまり、通信制御装置10Aおよび10Cは、計算装置A内に備えられる構成であれば、仮想計算機外に備えられる構成であってもよい。
[実施の形態2]
次に、各計算装置が、LANに接続された通信装置と通信できるか否かにより、故障を検出する場合を説明する。
図7を参照して、実施の形態2に係る電力系統監視システムに適用される計算機システム1Aは、計算装置C100A(以下、計算装置100Aと称する)、ならびに計算装置100Aと通信するルータA111およびルータB122を備える。これらはLANを介して通信する。本実施の形態2でも、実施の形態1と同様に、通信回線(LAN)は、LAN−A101とLAN−B102とによって2重化されて構成される。ここでは、計算装置100AとLANを介して通信する通信装置として、通信中継装置であるルータA111およびルータB112の2台を例示したが、通信装置の種類はルータに限定されず、また台数も2台に限定されない。図7において、図1と同一要素には同一符号を付し重複する説明は繰返えさない。
また、図7の計算機システム1Aは、LAN−A101にルータA111が接続されて、LAN−B102にルータB122が接続される。計算装置100Aは、実施の形態1の計算装置Aとは異なり、前述した仮想計算機A200および仮想計算機B300に追加して、仮想計算機C600および仮想計算機D700を備える。また、仮想SW−A203および仮想SW−B303に代替して仮想SW−A2031および仮想SW−B3031をそれぞれ備える。さらに、仮想NIC制御部−A800および仮想NIC制御部−B900を備える。仮想NIC制御部−A800および仮想NIC制御部−B900は、後述するように、疎通確認要求をLANを介してルータA111,B122宛に送信する要求送信部800aおよび900aをそれぞれ備える。
仮想NIC制御部−A800および仮想NIC制御部−B900は、計算装置100Aの通信を制御する通信制御装置に相当する。
仮想計算機C600は、CU(Control Unit)−C610、仮想NIC−A601、仮想NIC−B602、および故障部位判定部603を備える。仮想計算機D700は、CU(Control Unit)−C710、仮想NIC−A701、仮想NIC−B702、および故障部位判定部703を備える。仮想計算機C600および仮想計算機D700の各部は、仮想計算機A200または仮想計算機B300の対応する部分と同様の機能を有し、ここでは説明を繰返さない。
図7では、計算装置100Aは、仮想計算機A200、B300、C600およびD700の間を通信可能に接続するとともに、これら仮想計算機と通信インターフェイス(物理NIC−A103および物理NIC−B104)とを通信可能に接続する通信部(仮想SW−A2031および仮想SW−2032、ならびに仮想NIC−A201、仮想NIC−B202、仮想NIC−A301、仮想NIC−B302、仮想NIC−A601、仮想NIC−B602、仮想NIC−A701および仮想NIC−B702)を備える。通信部は、ソフトウェアに相当する。
各仮想計算機がLAN−A101を介して通信する場合、各仮想計算機からのデータは、自己の仮想NIC−A(または仮想NIC−B)→仮想SW−A2031→物理NIC−A103の経路を経てLAN−A101に送信される。LAN−A101からのデータは、この経路を逆に流れて各仮想計算機に送信される。同様に、LAN−B102を介して通信する場合、各仮想計算機からのデータは、自己の仮想NIC−A(仮想NIC−B)→仮想SW−B3031→物理NIC−B104の経路を経てLAN−B102に送信される。LAN−B102からのデータは、この経路を逆に流れて各仮想計算機に送信される。
本実施の形態の計算装置100Aは、図2と同様のハードウェア資源を有する。図7の仮想計算機A200、B300、C600およびD700、ならびに上述の通信部のプログラムは、計算装置100Aのハードウェア資源を共用しながら実行される。なお、計算装置100Aは、実現する各仮想計算機について個別にハードウェア資源を備えてもよい。
このように、計算装置100AのCPU90、ハードディスク25およびメモリ30等(図2参照)のハードウェア資源は、仮想計算機A200、B300、C600およびD700、ならびに各仮想計算機の間を通信可能に接続する上述した通信部を実現するための手段に相当する。
仮想NIC制御部−A800は、物理NIC−A103と通信することにより物理NIC−A103の動作を監視するとともに、各仮想計算機の仮想NIC−A201、301、601および701を制御(すなわち、プログラム実行を制御)する。一方、仮想NIC制御部−B900は、物理NIC−B104と通信することにより物理NIC−B104の動作を監視するとともに、各仮想計算機の仮想NIC−B202、302、602および702を制御(すなわち、プログラム実行を制御)する。
次に、図8のフローチャートに従い、図9の模式図を参照して動作について説明する。このフローチャートに従うプログラムは、予め計算装置100Aの記憶領域に格納されている。まず、計算装置100Aが起動すると、仮想NIC制御部−A800および仮想NIC制御部−B900が起動して図8のプログラムを実行開始する。
まず、仮想NIC制御部−A800および仮想NIC制御部−B900は、物理NIC―A103および物理NIC−B104をそれぞれ監視対象として状態監視を開始する。監視では、仮想NIC制御部A800および仮想NIC制御部B900の要求送信部800aおよび900aそれぞれは、疎通確認要求であるpingリクエストを生成する。そして、要求送信部800aおよび900aは、この疎通確認要求をLAN−A101およびLAN−B102に接続されたルータA111とルータB122宛に、物理NIC−A103および物理NIC−B104それぞれを介して送信する(ステップS51)。その後、仮想NIC制御部A800およびB900は、pingリクエスト応答を監視する。pingリクエストは、通信回線の疎通を確認するための要求パケットに相当し、図5のパケットと同様の構成を有する。なお、pingリクエストのあて先情報および送信元情報となるルータA111とルータB122のアドレス、および計算装置100Aのアドレスは、予め計算装置100Aの記憶領域に格納されている。
仮想NIC制御部A800およびB900は、物理NIC−A103および物理NIC−B104をそれぞれ監視することにより、物理NIC−A103または物理NIC−B104が、pingリクエストを送信されてから予め定められた時間内にpingリクエスト応答を受信する否かを判定する(ステップS52)。すなわち、仮想NIC制御部A800は、物理NIC−A103が、ルータA111のアドレスを示す送信元情報を有したパケットを受信するか否かを判定する。また、仮想NIC制御部B900は、物理NIC−B104が、ルータB112のアドレスを示す送信元情報を有したパケットを受信するか否かを判定する。
ここで、物理NIC−A103が故障した場合(図9の“故障”を参照)は、仮想NIC制御部A800は、LAN−A101に接続されたルータA111からのpingリクエスト応答を受信しないと判定する(ステップS52でNO)。この時、計算装置100A内の仮想計算機同士は、物理NIC−A103が故障したとしても、仮想SW−A2031および仮想SW−B3031を含む通信部を介して相互に通信をすることが可能である。
そこで、仮想NIC制御部A800は監視対象の物理NIC−A103の故障を検出した場合(すなわち、ステップS52でNO)は、各仮想計算機の仮想NIC−A201、301、601および701をシステムコールによりダウン(動作状態→非動作状態に切替える)させて(図9の“連動させる”を参照)、これにより、物理NICと仮想NICの状態を連動させる。そして、故障およびダウン状態に関する情報が表示部60に表示される(ステップS53)。表示情報としては、例えば“LAN−A101の通信インターフェイスは故障し、関連する仮想NIC−Aを停止した”とのメッセージを含む。ここでは、動作状態とは、仮想NIC−A201、301、601および701を含む通信部のプログラムが実行状態または実行可能状態であることを示す。非動作状態とは、当該プログラムが、実行停止状態にあることを示す。
なお、その後も、図8の処理が実行されて、要求送信部800aはpingリクエストを送信する。仮想NIC制御部A800は、LAN−A101に接続されたルータA111からのpingリクエスト応答が、物理NIC−A103によって受信されるか否かを判定する。受信したと判定されたときに(ステップS52でYES)、上述の非動作状態に設定されている場合には、システムコールにより、非動作状態の仮想NIC−A201、301、601および701を元の動作状態に切替え(復帰させ)て、物理NICと仮想NICの動作を連動させる(ステップS54)。
上述は、仮想NIC制御部A800が物理NIC−A103の故障を検出した場合の物理NICと仮想NICの連動処理である。この図8の処理は、仮想NIC制御部B900が物理NIC−B104の故障を検出した場合に、物理NIC−B104と仮想NIC−B202、302、602および702を連動させる場合も、同様に実施することができる。
実施の形態2によれば、計算装置100Aにおいて、物理NICを介してLANとの通信が不可能な場合には、仮想NIC制御部A800,B900は、仮想計算機間の通信も不可能となるように、仮想NICをダウンさせる。このとき、各仮想計算機の故障部位判定部は仮想NICのダウンによって計算装置100A内の仮想計算機間との通信異常(通信不可)を判定し、この判定の結果に基づき、自端故障を判定することができる。
(変形例)
上述の各実施の形態では、計算装置に備えられる計算機として、ソフトウェアにより実現される複数の仮想計算機を示したが、これに代替して、ハードウェアによる複数のプロセッサ(マルチコア(Multiple Core))を実装するとしてもよい。このようなマルチコア構成であっても、実施の形態1と2で説明したネットワーク障害検知および判定の方法を適用することができる。
また、多重化された計算機の1つを待機系とし、他の1つを運用系として、運用系の計算機において自端故障が検出されたときは、待機系を運用系として起動させる。このように運用系に切替えられた計算機によって電力系統の監視を継続させることができる。
上述の実施の形態では、CPU90を備える情報処理装置である図2のコンピュータに、各実施の形態のフローチャートを用いて説明したネットワーク障害検知および判定のための処理方法をプロセッサに、実行させるためのプログラムが示される。
具体的には、情報処理装置は、通信回線に接続される通信インターフェイスと、当該情報処理装置により実現される複数の仮想計算機と、複数の仮想計算機の間を通信可能に接続する通信部とを備える。上述の処理方法は、通信回線を介して、他の装置との通信を制御するステップを備える。通信を制御するステップは、通信インターフェイスおよび通信部を介して、疎通確認要求をブロードキャスト送信するステップと、通信インターフェイスまたは通信部を介して受信される、疎通確認要求に対する応答の内容に基づいて、通信インターフェイスの異常の有無を判定するステップとを含む。
判定するステップでは、受信された応答の送信元の識別情報に、複数の仮想計算機の各々の識別情報とは異なる識別情報が全て含まれるか否かに基づき、通信インターフェイスの異常の有無が判定される。
また、本実施の形態では、このプログラムは非一時的に記録した機械読取可能な記録媒体に格納したプログラム製品として提供される。記録媒体としては、記録媒体81のCD−ROM、メモリカードなどのコンピュータ読取り可能な記録媒体を含む。プログラムは、図3のハードディスク25等に記録させて提供することもできる。また、LAN等のネットワークを介したダウンロードによって、プログラムを提供することもできる。
提供されるプログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
[実施の形態の効果]
実施の形態の効果を、計算装置のみが配置されて且つ2重化されたLANを備えた図10の計算機システムを用いて、図11の通信シーケンス図を参照して説明する。
図10の計算機システム2Aは、計算装置A1000、計算装置B1100、および計算装置C1200を、2重化されたLAN(LAN−A1010およびLAN−B1020)を介して接続する。計算装置A1000は、CU(Control Unit)−A4100、故障状態検出部4000、故障部位判定部4010、LAN−A1010に接続された物理NIC−A1030、およびLAN−B1020に接続された物理NIC−B1040を備える。同様に、計算装置B1100は、CU(Control Unit)−B4300、故障状態検出部4020、故障部位判定部4030、LAN−A1010に接続された物理NIC−A1050、およびLAN−B1020に接続された物理NIC−B1060を備える。同様に、計算装置C1200は、CU(Control Unit)−C4200、故障状態検出部4040、故障部位判定部4050、LAN−A1010に接続された物理NIC−A1070、およびLAN−B1020に接続された物理NIC−B1080を備える。
図10では、ネットワークの健全性(各部が正常に動作していること)を確認するための信号であるハートビートを用いる。具体的には、故障状態検出部4000、4020および4040からt1秒周期で全計算装置に対して、送信元に自己のアドレスを有したハートビートをブロードキャスト送信する(図11のステップS71参照)。また、計算装置A1000、計算装置B1100、および計算装置C1200は、他計算装置からのハートビートを受信した際に、最後にハートビートを受信した時点から、t2秒間ハートビートを受信しなかった場合は、当該通信ルート(LANまたは物理NIC)を異常と判定する(図11のステップS72)。
各計算装置がハートビートの受信タイムアウトによってLANまたは物理NICの異常を検出すると、故障部位判定部4010、4030および4050は自端故障であるか、他端故障であるかを判定する。判定処理としては他計算装置からのハートビートを全く受信していない場合は自端故障と判定する。また他計算装置からのハートビートを1つでも受信している場合は他端故障と判定する。
各計算装置は非同期にハートビートを送信するため、多重化されたLAN1010,1020を介してハートビートが受信タイムアウトとなった時点では、他計算装置との通信がタイムアウトとなるか(自端故障か)否かは判断することができない。この点を図12の通信シーケンスを参照して説明する。
図12を参照して、計算装置A1000、計算装置B1100、および計算装置C1200の3台のうち、計算装置A1000の自端故障(ステップS81)が発生したとする。この場合に、計算装置A1000と計算装置B1100との通信において受信タイムアウトが検出(ステップS82)されたときには、故障部位が誤って判定されてしまう。つまり、計算装置C1200が受信タイムアウト前なので、計算装置B1100の他端故障と誤判定されてしまう(ステップS83)。
したがって、計算装置A1000の自端故障(ステップS84)が発生した場合に誤判定を回避するには、つまり、ある計算装置との通信において受信タイムアウトが判定されてから、他の計算装置との通信においてタイムアウトが生じるか否かを判定するには受信タイムアウト時間(t2)+ハートビート送信周期1回分の時間(t1)が必要となる(ステップS85)。
図9〜図12の障害検知・判定方法を、仮想計算機を備える環境(図1のように仮想計算機Aおよび仮想計算機Bと計算装置Bが存在)に適用した場合を、図13の計算機システム3Aを参照して説明する。計算機システム3Aは、図1の計算装置A100に代替して計算装置A3100を備える点で、図1の計算機システム1とは相違する。他の構成は、図1と同様である。
計算装置A3100は、図1の仮想計算機A200と仮想計算機B300に代替して、仮想計算機A3200と仮想計算機B3300を含むが、他の構成は計算装置A100と同様である。仮想計算機A3200は、図1の仮想計算機A200の故障状態検出部400および故障部位判定部401に代替して、ハートビートを用いた故障状態検出部2400および故障部位判定部2401を含むが、他の構成は図1と同様である。また、仮想計算機B3300は、図1の仮想計算機B300の故障状態検出部402および故障部位判定部403に代替して、ハートビートを用いた故障状態検出部3402および故障部位判定部3403を含むが、他の構成は図1と同様である。図13では、図1と同様の部分は説明を繰返さない。
図13を参照して、計算装置A3100の自端故障(物理NIC−A103の故障)が発生したとする。この時、仮想計算機A3200と計算装置B3300の間では物理NIC−A103が故障している為、ハートビートのやり取りができなくなる(ステップS91)。ここで、物理NIC−A103が故障していても、仮想計算機A3200と仮想計算機B3300との間は、仮想SW−A203を介して通信が可能な状態である(ステップS92)。したがって、仮想計算機A3200は故障状態検出部2400から送出したハートビートに対して、仮想計算機B3300からの応答を、仮想SW−A203を経由して受信することができる。このように、計算装置A3100は自端故障(物理NIC−A103が故障)が発生しているにもかかわらず、他計算装置からのハートビートを受信している状態となる。そのため、図9〜図12で説明した判定基準では、故障部位判定部2401は、他端故障と誤判定してしまう問題がある。
これに対して、上述の実施の形態1では、複数台の計算装置および仮想計算機が混在して配置されたシステムにおいて、システムの構成に合わせて計算機判定定義500,501,503が生成される。そして、エコー要求の要求パケットP10を送信した場合に受信するエコー応答の応答パケットP20と、計算機判定定義500,501,503の情報とを用いた図6の処理により、LANに異常が発生したことを検出し、部位(自端故障または他端故障)を判定することができる。したがって、図9〜図12に示すような、受信タイムアウト時間またはハートビート周期等とは独立して(依存せずに)故障部位を判定することができる。
また、故障判定する際には、受信応答パケットP20のうちから、同一の計算装置に備えられた仮想計算機からの応答パケットP20が、計算機判定定義を用いて除外される。その結果、残った応答パケットP20の内容から、どの部位に問題が発生しているか(自端故障か他端故障)を判定することができる。
実施の形態2の計算機システム1Aでは、LANに異常が発生した場合および異常から復帰した場合に、当該LANに接続された物理NICと、当該物理NICに関連付けられた仮想NICは、連動してダウン(動作状態→非動作状態に切替え)およびアップ(非動作状態→動作状態(復帰))させられる。これにより、計算装置は、ダウンさせられた仮想NICの情報から、どの部位(LAN−A101またはLANーB102のいずれ側)の故障かを判定することが可能となる。
このように本発明の実施の形態によれば、仮想計算機を実現する計算装置(例えば、計算装置A100)と仮想計算機を実現しない計算装置(例えば、計算装置B110)とを備えるシステム、または、計算装置として仮想計算機を実現する複数の計算装置のみを備えるシステム(すなわち、仮想計算機を実現しない計算装置を備えないシステム)のいずれであっても、故障箇所を誤判定することなく特定することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求意味および範囲内でのすべての変更が含まれることが意図される。