(57)【要約】【課題】障害の発生したノードの状態に影響されることなく、メモリダンプ処理を実行可能なマルチノードシステム、ノード、メモリダンプ処理方法、及びプログラムを提供する。【解決手段】相互に通信可能な複数のノード（１００及び１０１）を有するマルチノードシステム１０４であって、いずれかのノードに障害が発生した場合に、障害の発生していないノードは、障害の発生したノードのメモリ１２０から、それに記憶されている情報を取得する。各ノードは、当該ノード以外のノードのメモリ１２０に記憶されている情報を取得可能なリモートメモリアクセス機構を備えることができる。【選択図】図１
2010176345.tif 000002
【特許請求の範囲】
【請求項１】
相互に通信可能な複数のノードを有するマルチノードシステムであって、
前記複数のノードのいずれかに障害が発生した場合に、前記障害の発生していないノードは、前記障害の発生したノードのメモリから、それに記憶されている情報を取得する、ことを特徴とするマルチノードシステム。
【請求項２】
前記複数のノードそれぞれが、当該ノード以外のノードのメモリに記憶されている情報を取得可能なリモートメモリアクセス機構を備えている、請求項１に記載のマルチノードシステム。
【請求項３】
前記複数のノードそれぞれのメモリが、前記複数のノードによって共有されている、請求項１に記載のマルチノードシステム。
【請求項４】
前記複数のノードに接続され、且つ、前記複数のノードそれぞれによって共有される記憶装置を更に備え、
前記障害の発生していないノードは、前記障害の発生したノードのメモリから、それに記憶されている情報を取得すると、取得した前記情報を前記記憶装置に格納させる、請求項１または２に記載のマルチノードシステム。
【請求項５】
前記複数のノードのいずれかに障害が発生した場合に、前記障害の発生したノードが、前記障害の発生したノードのメモリに記憶されている情報の取得を、前記障害の発生していないノードに要求し、
前記要求を受け、且つ、前記障害の発生していないノードが、前記障害の発生したノードの前記メモリに記憶されている情報を取得する、請求項１〜４のいずれに記載のマルチノードシステム。
【請求項６】
前記情報を取得したノードが、前記情報の取得の終了後に、前記障害の発生したノードに、前記情報の取得の終了を通知する、請求項５に記載のマルチノードシステム。
【請求項７】
前記障害の発生したノードが、前記障害の発生したノードのメモリに記憶されている情報の取得を要求した後に、当該ノードにおける処理を中止し、そして、前記情報を取得したノードからの前記情報の取得の終了の通知を受けた後に、前記処理を再開する、請求項６に記載のマルチノードシステム。
【請求項８】
マルチノードシステムを構成する複数のノードの一つとして機能するノードであって、
メモリと、
当該ノード以外の別のノードのメモリに記憶されている情報を取得可能なリモートメモリアクセス機構と、
当該ノードに障害が発生した場合に、当該ノード以外の別のノードに、当該ノードのメモリに記憶されている情報の取得を依頼する情報取得依頼部と、
当該ノード以外の別のノードから、そのメモリに記憶されている情報の取得の依頼を受けた場合に、前記リモートメモリアクセス機構によって、前記別のノードのメモリに記憶されている情報を取得する情報取得部とを、備えていることを特徴とするノード。
【請求項９】
相互に通信可能な複数のノードを有するマルチノードシステムを用いてメモリダンプを行うための方法であって、
（ａ）前記複数のノードのいずれかに障害が発生した場合に、前記障害の発生したノードによって、前記障害の発生していないノードに、前記障害の発生したノードのメモリに記憶されている情報の取得を要求するステップと、（ｂ）前記（ａ）のステップによる要求を受け、且つ、前記障害の発生していないノードによって、前記障害の発生したノードの前記メモリに記憶されている情報を取得するステップとを有する、
ことを特徴とするメモリダンプ処理方法。
【請求項１０】
（ｃ）前記（ｂ）のステップの終了後に、前記情報を取得したノードによって、前記障害の発生したノードに、前記情報の取得の終了を通知するステップを更に有する請求項９に記載のメモリダンプ処理方法。
【請求項１１】
（ｄ）前記（ａ）のステップの終了後に、前記障害の発生したノードにおける処理を中止させるステップと、
（ｅ）前記（ｃ）のステップの終了後に、前記（ｄ）のステップで中止されていた処理を再開させるステップとを、更に有する、請求項１０に記載のメモリダンプ処理方法。
【請求項１２】
相互に通信可能な複数のコンピュータを有するマルチノードシステムにおけるメモリダンプを前記コンピュータによって行うためのプログラムであって、
前記コンピュータに、
前記コンピュータに障害が発生した場合は、（ａ）前記コンピュータのメモリに記憶されている情報の取得を、前記障害の発生していないコンピュータに要求する、ステップを実行させ、
前記コンピュータに障害が発生していない場合は、（ｂ）前記障害が発生したコンピュータの前記メモリに記憶されている情報を取得する、ステップを実行させる、ことを特徴とするプログラム。
【請求項１３】
前記（ｂ）のステップが実行された場合に、
（ｃ）前記（ｂ）のステップの終了後に、前記障害が発生したコンピュータに前記情報の取得の終了を通知する、ステップを、前記コンピュータに更に実行させる、請求項１２に記載のプログラム。
【請求項１４】
前記（ａ）のステップが実行された場合に、
前記（ａ）のステップの終了後に、前記コンピュータにおける処理を中止させ、前記コンピュータ以外のコンピュータによる前記（ｃ）のステップの実行によって、前記情報の取得の終了が通知されると、中止していた処理を再開させる、ステップを、前記コンピュータに更に実行させる、請求項１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノードに障害が発生した時にメモリダンプを実行するマルチノードシステム、これに用いられるノード、これらを用いたメモリダンプ処理方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
一般に、コンピュータシステムのＯＳ（Operating System）は、ハードウェア又はソフトウェアの異常により、正常な処理を続けられなくなった場合、カーネルパニック処理を実行する。カーネルパニック処理としては、コンピュータシステムにおける処理の単なる停止や、障害発生時のメインメモリの内容を内蔵ディスク等に保存するメモリダンプ処理、コンピュータシステムの再起動などが挙げられる。このうち、障害の原因究明の点からは、メモリダンプを採取するメモリダンプ処理（例えば、特許文献１〜３参照）が有効である。
【０００３】
例えば、特許文献１は、分散メモリ型計算機におけるメモリダンプ処理を開示している。特許文献１に開示されているメモリダンプ処理では、障害にあったプロセッサ（ノード）からシステム管理プロセッサ（ノード）にメモリ内容の採取が依頼され、採取されたメモリ内容はシステム管理プロセッサ（ノード）に保存される。
【０００４】
また、特許文献２も、特許文献１と同様に、分散メモリ型計算機におけるメモリダンプ処理を開示している。但し、特許文献２に開示された処理では、特許文献１に開示された処理と異なり、障害が発生したノードは、それと記憶装置とのアクセス経路の確保を実行する。このため、特許文献２によれば、メモリダンプの確実性が図られる。
【０００５】
特許文献３は、クライアント・サーバシステムにおけるメモリダンプ処理を開示している。特許文献３に開示された処理では、ホストコンピュータ（オペレータ用端末）から、障害の起きた端末に対して、メモリダンプが実行される。具体的には、ホストコンピュータは、メモリ内容を採取するメモリダンププログラムを、障害の発生した端末に転送し、このプログラムの実行によりメモリダンプを行わせる。そして、ホストコンピュータは、障害の発生した端末を再起動させ、その後、障害の発生した端末に、それが採取したメモリ内容の転送を行わせる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−３０６０５１号公報
【特許文献２】特開２００７−３３４６６８号公報
【特許文献３】特開平７−１４６８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、特許文献１または特許文献２に開示されたメモリダンプ処理では、障害の発生したノードがメモリ転送処理を実行する。このため、メモリ転送処理に必要なデータが障害により破壊されていた場合、カーネルのダブルパニックが発生する可能性がある。また、ノードに固有の機能によってメモリ内容の採取が行われるため、ノード自体が障害で使用できない間は、メモリダンプができず、メモリダンプに失敗する可能性もある。
【０００８】
また、特許文献３に開示されたメモリダンプ処理は、障害の発生した端末において、プログラム実行等の通常のカーネル処理が正常に行える状態でなければ行うことができず、カーネルパニック処理の様なクリティカルな場面には適用できないという問題がある。
【０００９】
更に、特許文献３に開示されたメモリダンプ処理では、上述したように、障害が発生した端末を再起動する必要がある。このため、障害が発生した端末が再起動に時間が掛かるコンピュータである場合や、障害の発生したハードウェアを交換する必要がある場合等において、メモリダンプの解析をすぐに行えないという問題もある。更に、このメモリダンプの解析を直ぐに行えないという問題は、再現性の低い障害や障害解析に急を要する場合に、ダンプされたメモリの内容の消失を招く可能性を有している。
【００１０】
本発明の目的は、上記問題を解消し、障害の発生したノードの状態に影響されることなく、メモリダンプ処理を実行可能なマルチノードシステム、ノード、メモリダンプ処理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明におけるマルチノードシステムは、相互に通信可能な複数のノードを有するマルチノードシステムであって、
前記複数のノードのいずれかに障害が発生した場合に、前記障害の発生していないノードは、前記障害の発生したノードのメモリから、それに記憶されている情報を取得する、ことを特徴とする。
【００１２】
また、上記目的を達成するため、本発明におけるノードは、マルチノードシステムを構成する複数のノードの一つとして機能するノードであって、
メモリと、
当該ノード以外の別のノードのメモリに記憶されている情報を取得可能なリモートメモリアクセス機構と、
当該ノードに障害が発生した場合に、当該ノード以外の別のノードに、当該ノードのメモリに記憶されている情報の取得を依頼する情報取得依頼部と、
当該ノード以外の別のノードから、そのメモリに記憶されている情報の取得の依頼を受けた場合に、前記リモートメモリアクセス機構によって、前記別のノードのメモリに記憶されている情報を取得する情報取得部とを、備えていることを特徴とする。
【００１３】
また、上記目的を達成するため、本発明におけるメモリダンプ処理方法は、相互に通信可能な複数のノードを有するマルチノードシステムを用いてメモリダンプを行うための方法であって、
（ａ）前記複数のノードのいずれかに障害が発生した場合に、前記障害の発生したノードによって、前記障害の発生していないノードに、前記障害の発生したノードのメモリに記憶されている情報の取得を要求するステップと、
（ｂ）前記（ａ）のステップによる要求を受け、且つ、前記障害の発生していないノードによって、前記障害の発生したノードの前記メモリに記憶されている情報を取得するステップとを有する、ことを特徴とする。
【００１４】
更に、上記目的を達成するため、本発明におけるプログラムは、相互に通信可能な複数のコンピュータを有するマルチノードシステムにおけるメモリダンプを前記コンピュータによって行うためのプログラムであって、
前記コンピュータに、
前記コンピュータに障害が発生した場合は、（ａ）前記コンピュータのメモリに記憶されている情報の取得を、前記障害の発生していないコンピュータに要求する、ステップを実行させ、
前記コンピュータに障害が発生していない場合は、（ｂ）前記障害が発生したコンピュータの前記メモリに記憶されている情報を取得する、ステップを実行させる、ことを特徴とする。
【発明の効果】
【００１５】
以上の特徴により、本発明におけるマルチノードシステム、ノード、メモリダンプ処理方法、及びプログラムによれば、障害の発生したノードの状態に影響されることなく、メモリダンプ処理を実行することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の実施の形態１におけるマルチノードシステムの概略構成を示すブロック図である。
【図２】図２は、実施の形態１において、障害が発生したノードにおける一連の動作を示すフロー図である。
【図３】図３は、実施の形態１において、障害が発生していないノードにおける一連の動作を示すフロー図である。
【図４】図４は、本発明の実施の形態２におけるマルチノードシステムの概略構成を示すブロック図である。
【図５】図５は、本発明の実施の形態２において、障害が発生したノードにおける一連の動作を示すフロー図である。
【発明を実施するための形態】
【００１７】
（実施の形態１）
以下、本発明の実施の形態１におけるマルチノードシステム、ノード、これらを用いたメモリダンプ処理方法、及びこれらを実現するためのプログラムについて、図１〜図３を参照しながら説明する。最初に、本実施の形態１におけるマルチノードシステムの構成について図１を用いて説明する。図１は、本発明の実施の形態１におけるマルチノードシステムの概略構成を示すブロック図である。
【００１８】
図１に示すように、本実施の形態１におけるマルチノードシステム１０４は、相互に通信可能なノード１００及び１０１を有している。図１には、ノード１００及びノード１０１のみが示されているが、実際は、マルチノードシステム１０４は、更に多くのノードを有していても良い。
【００１９】
また、マルチノードシステム１０４において、ノード１００及びノード１０１のいずれかに障害が発生した場合は、障害の発生していないノードは、障害の発生したノードのメモリから、それに記憶されている情報を取得する、つまり、メモリダンプ処理を実行する。ここで、ノード１００及び１０１の構成について以下に説明する。
【００２０】
図１に示すように、本実施の形態１において、ノード１００及び１０１は、同一の構成を有するコンピュータであり、両者は、リモートメモリアクセス機構１１０と、メモリ１２０と、二次記憶装置１３０と、ＣＰＵ（central processing unit）１５０とを備えている。
【００２１】
リモートメモリアクセス機構１１０は、それを備えるノード（自ノード）以外の別のノードのメモリに記憶されている情報を取得可能に構成されている。本実施の形態１では、リモートメモリアクセス機構１１０は、ＤＭＡ（Direct Memory Access）を備え、自ノードのＣＰＵ１５０を介することなく、自ノードのメモリの入出力（Ｉ／Ｏ）を実行できる。
【００２２】
また、リモートメモリアクセス機構１１０は、自ノード以外の別のノードのリモートメモリアクセス機構１１０に対して、その別のノードのメモリに記憶されている情報の転送を要求できる。このノード間でやりとりされる、メモリのＩ／Ｏを行う命令は、以下、「ノード間主記憶転送命令」とする。そして、ノード間主記憶転送命令を受け取ったリモートメモリアクセス機構１１０は、メモリ１２０に情報を出力させ、出力された情報を、ノード間主記憶転送命令の出力元のリモートメモリアクセス機構１１０に送信する。
【００２３】
各ノードにおいて、メモリ１２０は、ＯＳ１４０のカーネルデータ１２１を格納し、リモートメモリアクセス機構１１０と二次記憶装置１３０とに接続されている。ＯＳ１４０は、ＣＰＵ１５０を含むハードウェア資源によって実行されるプログラムであり、情報取得依頼部１４１と、情報取得部１４２と、情報出力部１４３とを有している。また、メモリ１２０に格納されているカーネルデータ１２１が、本実施の形態１においてメモリダンプ処理（情報取得処理）の対象となる。
【００２４】
このうち、情報取得依頼部１４１は、自ノードに障害が発生した場合に、自ノード以外の別のノードに、自ノードのメモリ１２０に記憶されている情報（カーネルデータ１２１）の取得、即ち、メモリダンプデータの取得を依頼する。
【００２５】
本実施の形態１では、ノードに障害が発生すると、先ず、障害が発生したノードのＯＳ１４０は、カーネルパニック処理を実行する。次いで、メモリ１２０内のカーネルデータ１２１を取得（メモリダンプを実行）するため、情報取得依頼部１４１は、任意の別のノードに情報の取得を依頼する。また、障害が発生したノードのＯＳ１４０は、情報の取得を依頼した後、カーネルパニック処理を一時停止する。そして、別のノードでの情報の取得が終了すると、ＯＳ１４０は、カーネルパニック処理を再開する。
【００２６】
また、情報取得部１４２は、自ノード以外の別のノードから、そのメモリに記憶されている情報の取得の依頼を受けた場合に、リモートメモリアクセス機構１１０によって、別のノードのメモリに記憶されている情報（カーネルデータ１２１）を取得する。具体的には、情報取得部１４２は、自ノードのリモートメモリアクセス機構１１０から、別のノードのリモートメモリアクセス機構１１０に対して、ノード間主記憶転送命令を送信し、メモリダンプを実行する。そして、情報取得部１４２は、取得したメモリダンプデータ（カーネルデータ１２１）を、自ノードのメモリ１２０に格納する。
【００２７】
情報出力部１４３は、自ノードのメモリ１２０に格納されている情報を、自ノード内に備えられた二次記憶装置１３０や、ノード１００及び１０１に接続された共有ディスク装置１０３に出力し、それらに格納させることができる。即ち、情報出力部１４３は、他のノードから取得し、自ノードのメモリ１２０に格納したメモリダンプデータを、二次記憶装置１３０又は共有ディスク装置１０３に出力する。
【００２８】
また、本実施の形態１では、情報出力部１４３は、ノード間での情報の転送処理とは非同期に、メモリダンプデータを、二次記憶装置１３０又は共有ディスク装置１０３に出力することもできる。共有ディスク装置１０３は、本実施の形態１においては、ノード１００及び１０１によって共有されており、例えば、ＮＦＳ（Network File System）等の分散ファイルシステムを構成している。
【００２９】
また、情報出力部１４３による出力が行われるノードは、障害が発生していない正常に動作しているノードである。よって、二次記憶装置１３０は、各ノードに内蔵された装置に限定されず、二次記憶装置１３０としても、複数のノード間で共有され、且つ、ＮＦＳなどの分散ファイルシステムを構成する装置を用いることができる。
【００３０】
本実施の形態１では、ノード１００とノード１０１とは、ノード間を接続するノード間接続装置１０２を介して接続され、これにより、相互に通信可能となっている。具体的には、ノード間接続装置１０２はルーター等であり、専用線によってノード１００及び１０１に接続されている。ノード間接続装置１０２は、ノード間主記憶転送命令で指定されるノードのリモートメモリアクセス機構１１０に、ノード間主記憶転送命令を送信する。また、ノード間接続装置１０２は、情報の転送が要求されたノードのリモートメモリアクセス機構１１０が出力した情報を、要求元のノードに転送する。
【００３１】
また、本実施の形態１においては、マルチノードシステム１０４は、複数のノードそれぞれのメモリが、複数のノードによって共有されている態様であっても良い。具体的には、マルチノードシステム１０４は、例えば、ｃｃＮＵＭＡ（cache coherency Non-Uniform Memory Access）と呼ばれるシステムを備えることができる。このシステムでは、ローカルに配置されているメモリへのＩ／Ｏと同様にして、リモートに配置されている他のノードのメモリのＩ／Ｏが可能となる。この場合、ノード１００及び１０１は、リモートメモリアクセス機構１１０を備えていなくても良い。
【００３２】
次に、図１に示したマルチノードシステム１０４における動作について、一つのノードに着目し、それに障害が発生している場合と、障害が発生していない場合とに分けて、図２及び図３を用いて説明する。図２は、実施の形態１において、障害が発生したノードにおける一連の動作を示すフロー図である。図３は、実施の形態１において、障害が発生していないノードにおける一連の動作を示すフロー図である。
【００３３】
なお、本実施の形態１におけるメモリダンプ処理方法は、図１に示した本実施の形態１におけるマルチノードシステムを動作させることによって実施される。このため、本実施の形態１におけるメモリダンプ処理方法の説明は、以下のマルチノードシステム１０４の動作の説明に代える。
【００３４】
また、以下の説明では、適宜、図１を参照する。更に、ノード１００に障害が発生し、ノード１０１には障害が発生していないとする。そして、ノード１００を「障害ノード１００」、ノード１０１を「ダンプ取得ノード１０１」とする。また、障害ノード１００とダンプ取得ノード１０１とのノード間主記憶転送は、高速な専用線で接続されたノード間接続装置１０２を介して行われる。
【００３５】
先ず、図２を用いて、障害ノード１００に着目して説明を行う。また、図２においては、一般的な場合と同様に、ノード１００に、動作継続が出来ないような致命的な障害が起きた場合は、ノード１００のＯＳ１０４によりカーネルパニック処理が実行されるとする。
【００３６】
図２に示すように、最初に、障害ノード１００の情報取得依頼部１４１は、相互に通信可能な他のノードの中から、任意のノードをダンプ取得ノードとして選択する（ステップＡ２０１）。本実施の形態では、ノード１０１がダンプ取得ノードとなる。
【００３７】
次に、障害ノード１００の情報取得依頼部１４１は、ダンプ取得ノード１０１に対し、障害ノード１００のメモリ１２０に記憶されている情報の取得依頼（ダンプ取得依頼）を送信する（ステップＡ２０２）。そして、ステップＡ２０２の終了後、ＯＳ１０４は、カーネルパニック処理を一時停止する（ステップＡ２０３）。
【００３８】
そして、ステップＡ２０３による処理の停止が継続している間、後述するダンプ取得ノード１０１からノード間主記憶転送命令が送信され、障害ノード１００のメモリ１２０のＩ／Ｏは、障害ノード１００のリモートメモリアクセス機構１１０が行う。このため、障害ノード１００のＣＰＵ１５０が処理を行うことはない。
【００３９】
次に、障害ノード１００の情報取得依頼部１４１は、ダンプ取得ノード１０１から、情報の取得が終了したことの通知（ダンプ取得終了通知）を受信する（ステップＡ２０４）。そして、障害ノード１００のＯＳ１０４は、ステップＡ２０４を契機に、ステップＡ２０３で停止していたカーネルパニック処理を再開する（Ａ２０５）。
【００４０】
次に、図３を用いて、ダンプ取得ノード１０１に着目して説明を行う。図３に示す処理は、障害ノード１００がカーネルパニック処理を開始してから終了するまでの間に実行される。
【００４１】
図３に示すように、先ず、ダンプ取得ノード１０１の情報取得部１４２は、ダンプ取得依頼の受信を契機にして、リモートメモリアクセス機構１１０によって、障害ノード１００のメモリ１２０に記憶されている情報を取得する（ステップＡ３０１）。このとき取得される情報は、障害ノード１００のメモリに記憶されているカーネルデータ１２１（メモリダンプデータ）である。また、障害ノード（１００）にノード間主記憶転送を要求する際に必要なアドレスは、常に一定となる。
【００４２】
次に、ダンプ取得ノード１０１の情報取得部１４２は、取得済みのメモリダンプデータのアドレスと、取得の対象となっているデータのアドレスとを比較し、取得すべきメモリダンプデータが未だ存在しているかどうかを判定する（ステップＡ３０２）。
【００４３】
ステップＡ３０２の判定の結果、取得すべきメモリダンプデータが未だ存在している場合は、情報取得部１４２は、ノード間主記憶転送命令を送信する（ステップＡ３０３）。ステップＡ３０３では、ノード間主記憶転送命令の宛先は、障害ノード１００に設定される。また、転送開始アドレスは、次のステップＡ３０１で受信予定のメモリダンプデータのメモリアドレスに設定される。
【００４４】
一方、ステップＡ３０２の判定の結果、取得すべきメモリダンプデータが存在していない場合は、即ち、取得すべきメモリ１２０の情報が全て取得されている場合は、情報取得部１４２は、障害ノード１００に、ダンプ取得終了通知を送信する（ステップＡ３０４）。ステップＡ３０４の終了後、情報出力部１４３は、図３に示したダンプ取得処理とは非同期に、二次記憶装置１３０や、共有ディスク装置１０３に、取得したダンプデータを出力する。そして、ダンプ取得ノード１０１における処理は終了する。
【００４５】
このように、本実施の形態１におけるマルチノードシステム１０４及びメモリダンプ処理方法では、障害の発生していないノードによってメモリダンプ処理が行われる。つまり、本実施の形態１によれば、障害の発生したノードの状態に影響されることなく、メモリダンプ処理の実行が可能となる。
【００４６】
具体的には、本実施の形態１では、正常に動作しているノード（ダンプ取得ノード１０１）が、ノード間主記憶転送命令により、障害ノード１００のメモリ内容（ダンプデータ）を取得し、障害ノード１００においてはＤＭＡにより直接メモリ１２０の内容が転送可能となっている。よって、障害が発生したノード（障害ノード１００）のＯＳ１４０は処理を行う必要が無いため、障害ノード１００のＯＳ１４０が障害によって動作できない状態でも、メモリダンプ処理の実行が可能となる。更に、障害ノード１００において、ＯＳ１４０の再起動が必要な場合であっても、再起動に影響されることなく、ダンプデータの参照が可能となる。
【００４７】
また、本実施の形態１では、障害の発生していない正常なノード（ダンプ取得ノード１０１）がメモリダンプデータの取得を行うため、障害の発生直後に自動的にメモリダンプデータの取得のための処理が開始可能である。また、このため、迅速なダンプ解析が可能となる。特に、ＨＰＣ（High Performance Computing）の分野では、複数のノードを接続して運用するマルチノードシステムが主流であり、複数のノードに障害が発生した場合は、オペレータが複数のノードのメモリダンプを個別に採取する必要がある。多数のノードのメモリダンプ採取作業はオペレータにとって煩雑であり、採取時の誤操作によりメモリダンプを失う可能性もあるが、本実施の形態１によれば、このような問題を解決できる。
【００４８】
更に、本実施の形態１では、メモリダンプデータの保存先が、正常に動作しているノード（ダンプ取得ノード１０１）であるため、メモリダンプ処理の終了後、直ぐにメモリダンプデータの参照が可能となる。また、本実施の形態１においては、メモリダンプデータは、分散ファイルシステム等の共有ディスク装置に保存して一元管理することが可能である。このため、データ管理の容易化と、１つのノードに必要な二次記憶装置１３０の容量の削減化とを図ることができる。
【００４９】
また、従来から、ＵＮＩＸ（登録商標）系ＯＳを用いるマルチノードシステムでは、メモリダンプを取得するため、「ｄｉｓｋｄｕｍｐ」、「ｎｅｔｄｕｍｐ」、「ｋｄｕｍｐ」といったプログラムが利用される。
【００５０】
このうち、「ｄｉｓｋｄｕｍｐ」では、障害が発生したノードの内蔵ディスクにメモリダンプデータが保存され、更に、ダンプ取得に対応したディスクドライバを別途用意する必要がある。また、「ｎｅｔｄｕｍｐ」は、クライアント・サーバ方式でメモリダンプデータを取得するシステムで利用され、サーバの内蔵ディスクに、メモリダンプデータが保存される。よって、「ｎｅｔｄｕｍｐ」では、専用のネットワークドライバが必要となる。
【００５１】
これらに対して、本実施の形態１によれば、特別なディスクドライバや専用のネットワークドライバは必要ない。ＵＮＩＸ系ＯＳを用いるマルチノードシステムにおいて、「ｄｉｓｋｄｕｍｐ」や「ｎｅｔｄｕｍｐ」に代えて、本実施の形態１を用いれば、システムのコストの低減化が可能となる。
【００５２】
また、「ｋｄｕｍｐ」では、メモリダンプデータの取得処理時に起動させるカーネルを予めメインメモリに常駐させておく必要がある。このため、メモリの消費量が大きくなるので、実装メモリを出来るだけユーザに利用させるポリシで運用するＨＰＣ分野等で利用することは困難である。これに対して、本実施の形態１によれば、メモリダンプデータを取得するためのプログラムをメインメモリに常駐させる必要はなく、本実施の形態１は、ＨＰＣ分野にも有用である。
【００５３】
また、本実施の形態１におけるプログラムは、ノードを構成しているコンピュータに、図２に示すステップＡ２０１〜Ａ２０５、及び図３に示すステップＡ３０１〜Ａ３０４を実行させるプログラムであれば良い。本実施の形態１におけるプログラムを実行することによって、本実施の形態１におけるマルチノードシステム及びメモリダンプ処理方法を実現できる。この場合、ノードのＣＰＵは、情報取得依頼部、情報取得部、情報出力部として機能し、処理を行なう。
【００５４】
（実施の形態２）
次に、本発明の実施の形態２におけるマルチノードシステム、ノード、これらを用いたメモリダンプ処理方法、及びこれらを実現するためのプログラムについて、図４及び図５を参照しながら説明する。最初に、本実施の形態２におけるマルチノードシステムの構成について図４を用いて説明する。図４は、本発明の実施の形態２におけるマルチノードシステムの概略構成を示すブロック図である。
【００５５】
図４に示すように、本実施の形態２におけるマルチノードシステム１０８においては、各ノード１０５及び１０６は、図１に示したリモートメモリアクセス機構１１０を備えていない。本実施の形態２においては、各ノードのＣＰＵ１５０が、リモートメモリアクセス機構１１０として機能する。
【００５６】
また、本実施の形態２においては、ノード１０５とノード１０６との間の通信は、実施の形態１と異なり、ＬＡＮ等のネットワーク１０７を介して行われている。更に、図１に示したノード間接続装置１０２は、ネットワーク１０７に組み込まれており、図２においては、ノード間接続装置の図示は省略されている。なお、これらの点以外については、本実施の形態２におけるマルチノードシステム１０８は、図１に示した実施の形態１におけるマルチノードシステム１０４と同様に構成されている。
【００５７】
次に、図４に示したマルチノードシステム１０８における動作について、ノードに障害が発生している場合を例に挙げて説明する。図５は、本発明の実施の形態２において、障害が発生したノードにおける一連の動作を示すフロー図である。
【００５８】
なお、本実施の形態２におけるメモリダンプ処理方法は、図４に示した本実施の形態２におけるマルチノードシステムを動作させることによって実施される。このため、本実施の形態２におけるメモリダンプ処理方法の説明は、以下のマルチノードシステム１０８の動作の説明に代える。
【００５９】
また、以下の説明では、適宜、図４を参照する。更に、ノード１０５に障害が発生し、ノード１０６には障害が発生していないとする。そして、ノード１０５を「障害ノード１０５」、ノード１０６を「ダンプ取得ノード１０６」とする。また、ダンプ取得ノード１０６の動作は、実施の形態１において図３に示した動作と同様である。
【００６０】
図５に示すように、最初に、障害ノード１０５の情報取得依頼部１４５は、相互に通信可能な他のノードの中から、任意のノードをダンプ取得ノードとして選択する（ステップＡ５０１）。本実施の形態では、ノード１０６がダンプ取得ノードとなる。
【００６１】
次に、障害ノード１０５の情報取得依頼部１４５は、ダンプ取得ノード１０６に対し、障害ノード１０５のメモリ１２０に記憶されている情報の取得依頼（ダンプ取得依頼）を送信する（ステップＡ５０２）。そして、ステップＡ５０２の終了後、ＯＳ１０４は、カーネルパニック処理を一時停止する（ステップＡ５０３）。
【００６２】
そして、ステップＡ５０３による処理の停止が継続している間、本実施の形態２では、障害ノード１０５のメモリ１２０のＩ／Ｏは、ＣＰＵ１５０が、リモートメモリアクセス機構として機能することによって行われる。よって、ステップＡ５０３の実行後、ＣＰＵ１５０は、ダンプ取得ノード１０６からの主記憶転送命令のみ受け付けて転送処理を行う「メモリ転送モード」に移行する（Ａ５０４）。
【００６３】
次に、障害ノード１０５の情報取得依頼部１４５は、ダンプ取得ノード１０６から、情報の取得が終了したことの通知（ダンプ取得終了通知）を受信する（ステップＡ５０５）。そして、障害ノード１０５のＣＰＵ１０５は、ステップＡ５０５を契機に、メモリ転送モードになる前の「通常モード」に復帰する（ステップＡ５０６）。その後、ＯＳ１４０は、ステップＡ５０３で停止していたカーネルパニック処理を再開する（Ａ５０７）。
【００６４】
このように、本実施の形態２におけるマルチノードシステム１０８及びメモリダンプ処理方法においても、障害の発生していないノードによってメモリダンプ処理が行われる。よって、本実施の形態２を用いた場合も、実施の形態１の場合と同様に、障害の発生したノードの状態に影響されることなく、メモリダンプ処理の実行が可能となる。本実施の形態２によっても、実施の形態１で述べた効果は全て得ることができる。
【００６５】
なお、本実施の形態２においては、障害ノード１０５とダンプ取得ノード１０６との間の通信は、ＬＡＮ等のネットワーク１０７を介して行われる。よって、情報取得依頼部１４５、情報取得部１４２、及び情報出力部１４３には、ＴＣＰ／ＩＰ等の利用するネットワークに適したプロトコルが実装されているものとする。
【産業上の利用可能性】
【００６６】
本発明は、相互に通信可能な複数のノードが備えられ、且つ、ノード間で主記憶転送が実行されるマルチノードシステムにおいて、障害が発生したノードのメモリダンプデータを採取する用途に有効である。このため、本発明は、産業上の利用可能性を有している。
【符号の説明】
【００６７】
１００  ノード
１０１  ノード
１０２  ノード間接続装置
１０３  共有ディスク装置
１０４  マルチノードシステム
１０５  ノード
１０６  ノード
１０７  ネットワーク
１０８  マルチノードシステム
１１０  リモートメモリ機構
１２０  メモリ
１２１  カーネルデータ
１３０  二次記憶装置
１４０  ＯＳ
１４１、１４５  情報取得依頼部
１４２  情報取得部
１４３  情報出力部
【図１】
2010176345.tif 000003
【図２】
2010176345.tif 000004
【図３】
2010176345.tif 000005
【図４】
2010176345.tif 000006
【図５】
2010176345.tif 000007