(57)【特許請求の範囲】
【請求項１】
複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択するノード選択部と、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させるダンプ処理指示部とを有する、ダンプ管理装置。
【請求項２】
前記ノード選択部は、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが位置する領域が小さい候補を大きい候補より優先する第２の優先順位を、前記第１の優先順位の次の優先順位にして、前記ダンプ処理対象ノードを選択する、請求項１に記載のダンプ管理装置。
【請求項３】
前記ノード選択部は、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが位置する領域と前記故障ノードとの距離が短い候補を長い候補より優先する第３の優先順位を、前記第２の優先順位の次の優先順位にして、前記ダンプ処理対象ノードを選択する、請求項２に記載のダンプ管理装置。
【請求項４】
前記ノード選択部は、前記ダンプ処理対象ノードの候補のうち、前記故障ノードから前記ダンプ処理対象ノードにダンプデータを転送する時間が短い候補を長い候補よりも優先する第４の優先順位を、前記第３の優先順位の次の優先順位にして、前記ダンプ処理対象ノードを選択する、請求項３に記載のダンプ管理装置。
【請求項５】
前記ノード選択部は、前記故障ノードによる前記ダンプファイルの転送の後、前記第１の時間以上経過するたびに、新たに新ダンプ処理対象ノードを選択し、
前記ダンプ処理指示部は、前記新ダンプ処理対象ノードに、新たに選択される前の旧ダンプ処理対象ノードのメモリ内のダンプファイルを、前記新ダンプ処理対象ノードのメモリに転送させる、請求項１に記載のダンプ管理装置。
【請求項６】
さらに、補助記憶装置を有し、
前記ノード選択部は、前記故障ノードの故障から前記第１の時間より長い第２の時間経過後に、前記ダンプ処理対象ノードのメモリ内のダンプファイルを前記補助記憶装置に転送させる、請求項１または５に記載のダンプ管理装置。
【請求項７】
さらに、前記ダンプ処理対象ノードのメモリを記憶媒体とするダンプ処理用のファイルシステムを実装するファイルシステム実装部を有する、請求項１に記載のダンプ管理装置。
【請求項８】
複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択することと、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させること、
を有する処理をコンピュータに実行させるダンプ管理プログラム。
【請求項９】
複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択することと、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させること、
を有するダンプ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法に関する。
【背景技術】
【０００２】
並列計算機は、ネットワーク網で互いに接続された複数の計算機ノード（以下単にノードと称する。）を有する。各ノードは、演算処理部（またはCPU）と、メモリ（またはメインメモリ）と、ネットワーク網で接続された他のノードとの通信やノード間のパケットのルーティングを制御するインターコネクト（IC: Inter-Connect）を有する。
【０００３】
並列計算機のノードに障害または故障が発生すると、故障ノードのメモリ内のデータ（またはダンプファイル）をＨＤＤなどの記憶装置に転送するダンプ処理を行い、ダンプ処理されたデータを解析して故障を分析することが行われる。故障ノードのダンプ処理については、以下の特許文献１に記載されている。
【０００４】
通常、故障ノードのメモリ内のデータのダンプ処理（以下単にダンプ処理）は、単一のファイルサーバに対して行われる。例えば、ノードに故障が発生すると、OS（Operating System）内のダンプ用カーネルが起動し、単一のファイルサーバにメモリ内のデータを転送するダンプ処理を実行し、その後故障ノードをシャットダウンする。その後、故障ノードが再起動されて正常ノードにされ、新たなジョブ割当の対象になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１７６３４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、複数のノードに故障が発生した場合、各故障ノードのメモリ内のデータを単一のファイルサーバにダンプ処理を行うと、ファイルサーバへのダンプ処理がボトルネックになり、ダンプ処理が長時間を要する。特に、近年において、ノードのメモリが大容量化したことによりデータ転送時間が長くなる傾向にある。さらに、多くのノードに故障が発生すると、１つの故障ノードのダンプ処理の間、他の故障ノードのダンプ処理が待たされ、それに伴いダンプ処理終了までの時間が長くなる。その結果、故障ノードをシャットダウンまたは再起動して、再びジョブを割り当てることができる状態にするまでに要する時間が長くなり、ノードの稼働率を低下させる。
【０００７】
故障ノードのダンプ処理を、他の故障が発生していないノードのメモリに行う場合、他のノードにジョブを割り当てることができなくなり、同様にノードの稼働率を低下させる。
【０００８】
そこで，実施の形態の第１の側面の目的は，ノードの稼働率の低下を抑制しつつ故障ノードのダンプ処理を高速化するダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法を提供することにある。
【課題を解決するための手段】
【０００９】
開示された実施の形態の第１の側面は，複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択するノード選択部と、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させるダンプ処理指示部とを有する、ダンプ管理装置である。
【発明の効果】
【００１０】
第１の側面によれば，ノードの稼働率の低下を抑制しつつ故障ノードのダンプ処理を高速化する。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態における並列計算機の構成例を示す図である。
【図２】各ノードの構成とネットワーク網NW_Mを示す図である。
【図３】本実施の形態におけるダンプ管理サーバによる故障ノードのダンプ処理を示すフローチャート図である。
【図４】ダンプ処理対象ノードを選択する処理Ｓ８を示すフローチャート図である。
【図５】ダンプ処理対象ノードの選択とダンプ処理（ダンプファイル転送処理）の一例を示す図である。
【図６】ダンプ処理対象ノードの選択とダンプ処理（ダンプファイル転送処理）の一例を示す図である。
【図７】故障ノードのダンプ処理用カーネルによるダンプ処理を示すフローチャート図である。
【図８】ダンプ処理対象ノードを選択する処理のうち条件Ｃ４のできるだけ隣接する複数ノードを選択する処理S84のフローチャート図である。
【図９】図８の処理の説明で参照する一例を示す図である。
【図１０】ダンプ処理対象ノードを選択する際の各優先順位による選択例を示す図である。
【図１１】ダンプ処理対象ノードを選択する際の各優先順位による選択例を示す図である。
【図１２】ダンプ処理対象ノードを選択する際の各優先順位による選択例を示す図である。
【図１３】ダンプ処理対象ノードを選択する際の各優先順位による選択例を示す図である。
【図１４】ダンプ処理対象ノードを選択する際の各優先順位による選択例を示す図である。
【図１５】アドレス情報テーブルの例を示す図である。
【図１６】ダンプ管理サーバによるダンプ処理指示S10の処理例を示すフローチャート図である。
【図１７】図１６の処理を説明する図である。
【図１８】ダンプ処理指示S10Rの処理例を示すフローチャート図である。
【図１９】図１８のダンプ処理での旧ダンプ処理対象ノードと旧メモリファイルシステム及び新ダンプ処理対象ノードと新メモリファイルシステムを示す図である。
【図２０】旧転送元／転送先アドレス情報テーブル410_old, 411_oldと新転送元／転送先アドレス情報テーブル410_new, 411_newを示す図である。
【発明を実施するための形態】
【００１２】
図１は、本実施の形態における並列計算機の構成例を示す図である。並列計算機は、複数のノードNODEとそれらを接続するＮ次元のネットワーク網NW_Mとを有するマルチノード部１００と、マルチノード部１００内の各ノードとネットワークNWを介して通信可能なシステム管理サーバ２００と、ジョブ管理サーバ３００と、ダンプ管理サーバ４００とを有する。複数のノードNODEを接続し互いに通信可能とするＮ次元のネットワーク網NW_Mは、図１には２次元メッシュが示されているが、３次元メッシュまたはそれより大きいＮ次元のメッシュでもよい。また、各ノードNODEは情報処理装置（コンピュータ）である。
【００１３】
システム管理サーバ２００は、各ノードの座標やIPアドレスなどのノードの構成情報と、各ノードの故障の発生や生死状態を含む稼働状況と、ノードのメインメモリの空き状況などを含むノード情報を管理する。ジョブ管理サーバ３００は、ジョブのノードへの割当を含むジョブスケジュール情報を管理する。
【００１４】
そして、ダンプ管理サーバ４００は、システム管理サーバやジョブ管理サーバの情報に基づいて、故障ノードのメモリ内のデータ（ダンプファイル）のダンプ処理を管理する。たとえば、ダンプ管理サーバは、ノードが故障した場合、故障ノードのメモリ内のデータを転送するダンプ処理の転送先の複数のノードをダンプ処理対象ノードとして選択し、故障ノードに、故障ノードのメモリ内のデータをダンプ処理対象ノードのメモリに転送するダンプ処理を指示する。図１には、ダンプ管理サーバ４００に対してのみHDD等の補助記憶装置が示されている。
【００１５】
図２は、各ノードの構成とネットワーク網NW_Mを示す図である。図２には、複数のノードの一部である４つのノードNode_N,N〜Node_N+1,N+1が示されている。たとえば、ノードNode_N,Nは、演算処理部（CPU）１０と、メインメモリ（RAM）１２と、HDD等の補助記憶装置１４と、インターコネクトICとを有する。CPU１０は、補助記憶装置１４内のオペレーティングシステム（OS）等の基本プログラムやアプリケーションプログラムをメインメモリ１２にロードし、メインメモリ内のプログラムを実行する。
【００１６】
インターコネクトICは、たとえば、ネットワーク網NW_Mを伝播するパケットをルーティングするネットワークルータと、ネットワーク網に対してパケットの送受信を行うネットワークインターフェースと、周辺デバイス（I/Oデバイス）を接続する入出力スイッチなどを有する。補助記憶装置は、この入出力スイッチに接続されてもよい。
【００１７】
［第１の実施の形態におけるダンプ処理の概略］
第１の実施の形態において、ダンプ管理サーバ４００は、故障ノードのメモリ内のデータ（ダンプファイル）のダンプ処理先として、ジョブが割り当てられていない複数の空きノードを選択し、故障ノードのメモリ内のダンプファイルを、選択した複数の空きノード（ダンプ処理対象ノード）のメモリに転送（ダンプ処理）するよう制御する。故障ノードのメモリ（RAM）１２内のダンプファイルを複数の空きノードのメモリ（RAM）１２に書き込む処理は、単一のダンプ管理サーバの補助記憶装置に書き込むよりも短時間で完了する。
【００１８】
その理由は次の通りである。第１に、HDD等の補助記憶装置への書き込み速度より、メインメモリへの書き込み速度のほうが高速であるので、複数のノードのメモリに並列に書き込み可能であるから単一のダンプ管理サーバの補助記憶装置に書き込むよりも高速である。さらに、複数のノードに故障が発生した場合、それぞれの故障ノードに対してダンプ対象ノードを選択することで、他の故障ノードのダンプ処理中、自分の故障ノードのダンプ処理を待たされることがない。
【００１９】
その結果、故障ノードのダンプ処理とその後の再起動を有する復帰処理の時間が短縮され、ジョブ割当可能な空きノード数が増える。
【００２０】
さらに、ダンプ対象ノードのメモリに書き込んだダンプファイルを読み出してダンプファイルの解析を行うため、補助記憶装置内のダンプファイルを読み出すよりも高速に読み出すことができ、ユーザによるダンプ解析が効率的に行われる。
【００２１】
ただし、第１に、ダンプ管理サーバは、故障ノードの復帰までの時間を短縮するために、ダンプ対象の複数ノードの選択処理を短時間で行うことが望ましい。
【００２２】
第２に、マルチノード部１００内のノードは、本来、ジョブを割り当てられそのジョブを処理することが要求される。したがって、選択された空きノードを利用してダンプ処理することが、故障発生後における空きノードへのジョブの割当に支障が生じないようにすることが望ましい。
【００２３】
上記第１の要求を満たすために、ダンプ管理サーバは、たとえば、故障ノードの近傍の空きノードからダンプ処理対象ノードを選択する。選択対象ノードを絞ることで、ダンプ管理サーバは、ダンプ処理対象ノードの選択処理を短時間で完了する。また、故障ノードの近傍の空きノードからしか選択しないので、故障ノードから離れた他の故障ノードに対するダンプ処理対象ノードの選択への影響を少なくできる場合がある。
【００２４】
さらに、第２の要求を満たすために、ダンプ管理サーバは、たとえば、ダンプ処理対象ノードの候補のうち、複数ノードが隣接している候補を、複数ノードが分散している候補より優先して選択する。ダンプ処理対象ノードができるだけ隣接して固まった領域に位置していれば、ジョブ管理サーバは、ダンプ処理対象ノード以外の空きノードから、ある固まった領域内に隣接する複数ノードに、容易にジョブを割り当てることができる。これにより、ダンプ処理対象ノードをダンプ処理に利用することによるジョブ割当への支障、影響が抑えられる。
【００２５】
そして、ノードのメモリはHDD等の補助記憶装置と比較すると高価なメモリ資源であるので、ダンプ処理対象ノードのメモリ内のダンプファイルは、結局は、ダンプ管理サーバを含むファイルサーバのHDD等の補助記憶装置に退避することが望ましい。したがって、ダンプファイルをダンプ処理対象ノードのメモリ内に滞留させる時間をある程度以下にすることが望ましい。よって、ダンプ管理サーバは、空きノードに余裕がある間は、空きノードの一部をダンプ処理対象ノードに利用するが、空きノードに余裕がない場合や一定時間が経過すると、ダンプ処理対象ノード内のダンプファイルをファイルサーバの補助記憶装置に退避させる。
【００２６】
［ダンプ管理サーバによるダンプ処理］
ダンプ管理サーバは、図２のノードの構成と同様の構成を有する。そして、ダンプ管理サーバの補助記憶装置１４には、OSなどの基本プログラムに加えて、故障ノードのダンプ処理の制御を行うダンプ処理プログラムと、ユーザによるダンプファイルの閲覧と必要な解析を可能にするダンプファイル閲覧プログラムとが格納される。ダンプ管理サーバのＣＰＵ１０は、ダンプ処理プログラムを実行して故障ノードのダンプ処理を行い、ダンプファイル閲覧プログラムを実行してダンプファイルの閲覧処理を行う。
【００２７】
図３は、本実施の形態におけるダンプ管理サーバによる故障ノードのダンプ処理を示すフローチャート図である。図３には、ダンプ管理サーバ４００、システム管理サーバ２００、ジョブ管理サーバ３００、マルチノード部１００内の故障ノードNp、空きノード群N1-Nnにおける各処理が示される。
【００２８】
あるノードNpに故障が発生すると（S1）、その故障ノードNpのＯＳの通常カーネルがダンプ用カーネルを起動してシステム管理サーバ２００に故障の発生を通知する。または、システム管理サーバ２００は定期的に実行するノード状態の監視処理によりノードNpの故障を検出する。それに応答して、システム管理サーバ２００は、故障の発生をダンプ管理サーバ４００に通知する（S2,S3）。
【００２９】
ダンプ管理サーバ４００は、故障発生通知の受信（S3）に応答して、システム管理サーバ２００にノード情報取得依頼を送信する（S4）。依頼するノード情報は、たとえば、空きノードN1-Nnの識別情報（IDや座標）とメモリの空き容量などであり、故障ノードのメモリ内のダンプファイルを転送するダンプ処理対象ノードの選択に必要な情報である。
【００３０】
ノード情報取得依頼に応答して、システム管理サーバは、空きノード群にアクセスしてノード情報を取得する（S5）。たとえば、各ノードのインターコネクトICは、ノードの情報を要求するパケットの受信に応答してノード情報を返信するハードウエア機能を有する。ノードの情報には、メモリの空き領域などの情報が含まれる。この機能を利用することで、システム管理サーバ２００は、簡単に且つ高速に空きノードの情報を収集する（S5）。
【００３１】
ダンプ管理サーバ４００は、前述のとおり、故障ノードNpの近傍の空きノードからダンプ処理対象ノードを選択する。したがって、ダンプ管理サーバは、故障ノードNpの近傍のある基準範囲内の空きノードに限定してノード情報取得依頼を行う。これにより、システム管理サーバ２００によるノード情報取得処理は短時間で完了する。
【００３２】
次に、ダンプ管理サーバ４００は、ジョブ管理サーバ３００にジョブスケジュール取得依頼を送信する（S6）。この取得依頼に応答して、ジョブ管理サーバは、依頼されたジョブスケジュールの情報をダンプ管理サーバに返信する。この取得範囲も故障ノードの近傍の基準範囲内のノードのスケジュールに限定してもよい。さらに、ダンプ管理サーバは、ダンプ処理対象ノードを、現時点から少なくともダンプ処理に要する第１の時間内にジョブの割当予定がない空きノードから選択する。したがって、ジョブスケジュールの情報として、第１の時間内にジョブの割当が予定されていない空きノードの情報でもよい。第１の時間は、例えば、少なくともダンプ処理に要する時間以上であり、ダンプ処理に要する時間に故障解析のためのある程度の時間を加えた時間でもよい。
【００３３】
そして、ダンプ管理サーバは、取得したノード情報とジョブスケジュール情報に基づいて、空きノードN1-Nnからダンプ処理対象ノードを選択する（S8）。詳細な選択アルゴリズムを後で説明する。
【００３４】
空きノードN1-Nnからダンプ処理対象ノードを選択可能な場合（S9のYES）、ダンプ管理サーバは、故障ノードにメモリ内のデータのダンプ処理を依頼する（S10）。この依頼に応答して、故障ノードのダンプ用カーネルは、故障ノードのメモリ内のデータをダンプ処理対象ノードのメモリに並列に転送するダンプ処理を実行する（S11）。ダンプ処理は、メモリ内のダンプファイルをダンプ先に転送する処理と、故障ノードのシャットダウンまたは再起動などを含む。
【００３５】
一方、ダンプ処理対象ノードを選択できない場合（S9のNO）、ダンプ管理サーバは、故障ノードに、ダンプ管理サーバの補助記憶装置にダンプ処理するよう指示する（S13）。この依頼に応答して、故障ノードのダンプ用カーネルは、故障ノードのメモリ内のデータをダンプ管理サーバの補助記憶装置に転送するダンプ処理を実行する（S14）。ダンプ処理に、メモリ内のダンプファイルをダンプ先に転送する処理と、故障ノードのシャットダウンまたは再起動などが含まれることは、上記と同様である。
【００３６】
ダンプ管理サーバは、ダンプ処理後、ダンプ処理対象ノードのメモリにアクセス可能にされる（図示せず）。その結果、ユーザは、ダンプ管理サーバを介して、ダンプファイルを読み出して故障解析を行う。ダンプ処理対象ノードのメモリにアクセス可能にする方法は、たとえば、ダンプ処理対象ノードのメモリを記憶媒体とするファイルシステムをダンプ管理サーバ内に実装することが望ましい。このファイルシステムについては、後で詳述する。
【００３７】
同様に、故障ノードがメモリ内のダンプファイルをダンプ処理対象ノードのメモリに転送し書き込む方法は、上記のファイルシステムを故障ノード内に実装することが望ましい。それにより、故障ノードのダンプ用カーネルは、故障ノード内のファイルシステムにメモリ内のデータを転送する処理を実行すればよい。
【００３８】
ダンプ処理後第１の時間Ｔｊが経過すると、再度、ダンプ管理サーバ４００は、ノード情報取得依頼(S4)、ジョブスケジュール取得依頼（S6）、ダンプ処理対象ノードの選択（S8）を実行する。そして、ダンプ管理サーバは、新たなダンプ処理対象ノードを選択できた場合（S9のYES）、旧ダンプ処理対象ノードのメモリ内のダンプファイルを、新ダンプ処理対象ノードのメモリに転送する処理を、新たなダンプ処理対象ノードに依頼する（S10R）。また、選択できない場合（S9のNO）、ダンプ管理サーバは、旧ダンプ処理対象ノードにメモリ内のダンプファイルをダンプ管理サーバの補助記憶装置にダンプ処理するよう指示する（S13）。この依頼に応答して、旧ダンプ処理対象ノードは、メモリ内のデータをダンプ管理サーバの補助記憶装置に転送してダンプ処理を実行する（S14）。または、ダンプ管理サーバが、実装したファイルシステムを利用して、ダンプ処理対象ノードのメモリ内のダンプファイルを、ダンプ管理サーバのHDD等の補助記憶装置に書き込むようにしてもよい。
【００３９】
このように、ダンプ処理対象ノードは、第１の時間Ｔｊの間だけそのメモリ内にダンプファイルを格納し、第１の時間Ｔｊ経過すると、その時点から第１の時間Ｔｊの間ジョブ割当が予定されていない空きノードから選択される新たなダンプ処理対象ノードに、ダンプファイルを転送する。これにより、ノードへのジョブ割当に与える影響または支障をできるだけ少なくする。
【００４０】
［ダンプ処理対象ノードの選択］
図４は、ダンプ処理対象ノードを選択する処理Ｓ８を示すフローチャート図である。ダンプ管理サーバが選択するダンプ処理対象の複数ノードの条件は、図４に示した条件C1-C4である。さらに、管理サーバがダンプ処理対象の複数ノードを選択する時間的な条件はC5である。
【００４１】
図５、図６は、ダンプ処理対象ノードの選択とダンプ処理（ダンプファイル転送処理）の一例を示す図である。図４の説明において、図５、図６を適宜参照する。
【００４２】
図４において、ダンプ処理対象の複数ノードを選択する条件C1は、故障ノードNpの近傍の基準範囲内に複数ノード（空きノード）があるか否かである（S81）。図５の時刻Ｔ１には、故障ノードNpの近傍の基準範囲Znの一例が示されている。この例では、基準範囲Znは、故障ノードNpからパケットの転送ホップ数が最長で４の矩形範囲である。つまり、基準範囲Znは、故障ノードNpを中心に左右方向にそれぞれ２つのノード、上下方向にそれぞれ２つのノードを含む矩形範囲である。
【００４３】
ダンプ管理サーバは、ダンプ対象の複数の空きノードを、この基準範囲Zn内の空きノードから選択する。図５の時刻Ｔ１では、基準範囲Zn内から４つの空きノード群（Ｎｉ，Ｎｊ，Ｎｋ，Ｎｌ）が選択されている。ダンプ処理対象ノードを探索する範囲を故障ノードNpの近傍の限られた範囲Znに制限することで、探索処理が簡略化し短時間で終了する。これにより、ダンプ処理が短時間になる。また、故障ノードNpから遠いノードをダンプ処理対象ノードに選択すると、ダンプ処理のダンプファイルの転送時間が長くなり、また、故障ノードNpから離れた別の故障ノードに対するダンプ処理対象ノードが、逆に故障ノードNpの近傍になる場合があり好ましくない。
【００４４】
図４において、ダンプ処理対象の複数ノードを選択する条件C2は、現時点から第１の時間Tjまでジョブの割当がスケジュールされていない複数ノード（空きノード）があるか否かである（S82）。第１の時間Tjは、少なくともダンプ処理のダンプファイルを転送するために必要な時間以上であり、転送に必要な時間に故障解析の時間を加えても良い。選択されたダンプ処理対象ノードのメモリには第１の時間Tjの間ダンプファイルが滞留する予定である。したがって、現時点で判明しているジョブスケジュールでジョブ割当が予定されていない複数ノードを選択するのが望ましい。第１の時間Tj内にジョブ割当が予定されている空きノードを選択すると、必ず第１の時間Tjの間ダンプファイルを滞留させることができなくなる。
【００４５】
図４において、ダンプ処理対象の複数ノードを選択する条件C3は、故障ノードNpのメモリ内のダンプファイルの容量を記憶可能なメモリ容量を有する複数ノード（空きノード）があるか否かである（S83）。つまり、複数ノードのメモリの空き容量の合計が、ダンプファイルの容量より多いか否かである。
【００４６】
そして、図４において、ダンプ処理対象の複数ノードを選択する条件C4は、できるだけ隣接する複数ノード（空きノード）があるか否かである（S84）。この条件C4は、必ずしも隣接する複数ノード、例えば矩形領域内に隣接する複数ノード、であることを要求するものではなく、できるだけ狭い領域内に位置する複数ノードを選択するという条件である。例えば、隣接する複数ノードと分散する複数ノードとが候補の場合は、隣接する複数ノードを優先的に選択する。より詳細な優先度については後述する。図５の時刻Ｔ１では、互いに隣接する４つの空きノード（Ｎｉ、Ｎｊ，Ｎｋ，Ｎｌ）が選択されている。しかも、図５の時刻Ｔ１の例では、４つの空きノード（Ｎｉ、Ｎｊ，Ｎｋ，Ｎｌ）は正四角形の矩形領域内にある。
【００４７】
ジョブ管理サーバは、ジョブの割当を、ダンプ管理サーバによるダンプ処理とは独立して行う。したがって、現時点ではジョブが割り当てられていない空きノードであっても、第１の時間Ｔｊの間ジョブを割り当てる必要がないことを保証するものではなく、Ｔｊ内にジョブを割り当てる必要があるかもしれない。したがって、ダンプ管理サーバは、ダンプ処理対象ノードの領域をできるだけ隣接した狭い範囲に限定することで、将来の空きノードへのジョブ割当への影響または支障を小さくする。
【００４８】
また、ダンプ処理対象ノードを狭い範囲内に隣接する複数ノードにできるだけ限定することで、故障ノードＮｐからダンプ処理対象ノードへのダンプファイルの転送時間を短くすることが期待される。
【００４９】
図４において、ダンプ処理対象の複数ノードを選択する条件C5は、故障発生から第２の時間Ｔｐ（＞Ｔｊ）が経過していないか否かである(S85)。第１の実施の形態では、故障発生から第２の時間Ｔｐが経過したら、ノード群１００内の空きノードをダンプ処理対象ノードとして利用することを終了して、ダンプ管理サーバなどの補助記憶装置（ＨＤＤ等）にダンプファイルを転送し、ダンプ処理対象ノードを解放してジョブ割当対象ノードに加える。比較的高価なノードのメモリにダンプファイルを記憶させるのは好ましくないからである。
【００５０】
上記の条件Ｃ１〜Ｃ５が全て満たされる場合は、ダンプ処理対象ノードの選択が可能であることを意味する。その場合、ダンプ管理サーバは、故障ノードに、故障ノードのメモリ内のダンプファイルをダンプ処理対象ノードのメモリに転送することを指示する(S10)。または、故障発生から第１の時間Ｔｊが経過した後は、ダンプ管理サーバは、旧ダンプ処理対象ノードのメモリのダンプファイルを新ダンプ処理対象ノードのメモリに転送するよう制御する（S10R）。
【００５１】
一方、条件Ｃ１〜Ｃ５のいずれかが満たされない場合、ダンプ管理サーバは、故障ノードに、故障ノードのメモリ内のダンプファイルを、ファイルサーバやダンプ管理サーバの補助記憶装置（ＨＤＤなど）に転送するよう指示する(S13)。または、故障発生から第１の時間Ｔｊが経過した後は、ダンプ管理サーバは、旧ダンプ処理対象ノードのメモリのダンプファイルを補助記憶装置に転送するよう制御する（S13）。
【００５２】
図５，図６に示したダンプ処理対象ノードの選択とダンプ処理またはダンプファイル転送処理の一例を説明する。図５の時刻Ｔ１では、ノードNpに故障が発生している。この場合、ダンプ管理サーバは、故障ノードNpの近傍の基準範囲Zn内のジョブの割当が予定されていない空きノードから、太枠の４つの空きノード（Ｎｉ，Ｎｊ，Ｎｋ，Ｎｌ）をダンプ処理対象ノードに選択する。選択方法は、図４のとおりである。そして、ダンプ管理サーバは、故障ノードNpに、故障ノードNpのメモリ内のダンプファイルをダンプ処理対象ノード（Ｎｉ，Ｎｊ，Ｎｋ，Ｎｌ）のメモリに転送させる。具体的な転送方法例については後述する。そして、故障ノードＮｐはシャットダウンまたは再起動し、その後ジョブ割当対象ノードになる。
【００５３】
第１の時間Ｔｊが経過した時刻Ｔ２では、ダンプ管理サーバは、基準範囲Zn内から新たに太枠の４つの空きノード（Ｎｉ’，Ｎｊ’，Ｎｋ’，Ｎｌ’）を新ダンプ処理対象ノードに選択し、旧ダンプ処理対象ノード（Ｎｉ，Ｎｊ，Ｎｋ，Ｎｌ）のメモリ内のダンプファイルを新ダンプ処理対象ノードのメモリに転送するよう制御する。具体的な転送方法例については後述する。
【００５４】
時刻Ｔ２の時点では、故障ノードＮｐが再起動して新たにジョブJob-Dを割り当てられている。さらに、時刻Ｔ２の後、旧ダンプ処理対象ノードの一部のノードＮｋ，Ｎｌにも新たにジョブJob-Cが割り当てられている。
【００５５】
図６において、時刻Ｔ２から第１の時間Ｔｊが経過後の時刻Ｔ３において、ジョブ管理サーバは、基準範囲Zn内から３つの空きノード（Ｎｉ”，Ｎｊ”，Ｎｋ”）を新たなダンプ処理対象ノードに選択し、旧ダンプ処理対象ノード（Ｎｉ’，Ｎｊ’，Ｎｋ’，Ｎｌ’）のメモリ内のダンプファイルを新ダンプ処理対象ノードのメモリに転送するよう制御する。新ダンプ処理対象ノード（Ｎｉ”，Ｎｊ”，Ｎｋ”）には、時刻Ｔ１の時点では故障していたが、メモリの転送後シャットダウンまたは再起動し、その後ジョブ割り当て対象となったノードＮｐが含まれている。
【００５６】
そして、時刻Ｔ３から第１の時間Ｔｊが何回か経過し、故障発生から第２の時間Ｔｐが経過した時刻ＴＸにおいて、ダンプ管理サーバは、旧ダンプ処理対象ノード（Ｎｉ’’’，Ｎｊ’’’，Ｎｋ’’’，Ｎｌ’’’）のメモリ内のダンプファイルを、ダンプ管理サーバ内のダンプファイル格納用の補助記憶装置（ＨＤＤ）に転送するよう制御する。
【００５７】
上記のとおり、故障ノードのメモリ内のダンプファイルは、故障時に第１の時間Ｔｊの間ジョブの割当が予定されていない空きノードから選択したダンプ処理対象ノードのメモリに転送される。そして、第１の時間経過後は、その時点で第１の時間Ｔｊの間ジョブの割当が予定されていない空きノードから新たなダンプ処理対象ノードが選択され、旧ダンプ処理対象ノードのメモリ内のダンプファイルが新ダンプ処理対象ノードのメモリに転送される。
【００５８】
このように、それぞれの時点でジョブの割当が予定されていない空きノードのメモリにダンプファイルを転送し、第１の時間が経過するまでの間はダンプファイルの故障解析を可能にし、但し、同じダンプ処理対象ノードにダンプファイルが第１の時間を超えて滞留することをなくす。これにより、ジョブ割当への影響または支障を抑制する。また、将来のジョブ割当への影響または支障を抑制するために、ダンプ処理対象ノードは隣接する複数ノードを優先して選択する。
【００５９】
図７は、故障ノードのダンプ処理用カーネルによるダンプ処理を示すフローチャート図である。図７には、ノードに故障が発生した場合のカーネルによる処理全般も含まれる。
【００６０】
各ノードのＯＳは、ジョブ管理や記憶管理などの通常の制御を行うファーストカーネルと、故障が発生したときの制御を行うセカンドカーネル（ダンプ処理用カーネル）とを有する。そして、各ノードにおいて、ファーストカーネルは、あらかじめセカンドカーネルが動作するメモリ領域を予約し、メモリ領域にセカンドカーネルをロードしておく(S110)。そして、ファーストカーネルが、自身の処理において論理の異常などを検出し、処理の続行が不可能と判断すると、障害（異常）が発生する（S111）。それに伴い、ファーストカーネルは、セカンドカーネルを起動する（S112）。
【００６１】
ここで、故障ノードのセカンドカーネルは、ダンプ管理サーバによるダンプ処理用複数ノードの選択が完了するまで待機する（S113）。そして、ダンプ管理サーバからダンプ処理の指示を受信すると、セカンドカーネルは、ダンプ処理対象ノードのメモリを記憶媒体とするファイルシステムをマウント（実装）する（S114）。このファイルシステムについては、後に詳述するが、ダンプ処理対象ノードのメモリを記憶媒体とする仮想のファイルシステムが、故障ノードに実装される。
【００６２】
セカンドカーネルは、その仮想のファイルシステムに、ファーストカーネルのメモリ領域内のデータ（ダンプファイル）を書き込む（S115）。その結果、故障ノードのメモリ内のダンプファイルは仮想のファイルシステムの記憶媒体であるダンプ処理対象の複数ノードのメモリに転送される。最後に、セカンドカーネルは、自身の故障ノードをシャットダウン、または再起動する（S115）。
【００６３】
一般的なセカンドカーネルによるダンプ処理は、メモリ内のダンプファイルを自身のファイルシステムの補助記憶装置内に書き込み、自身をシャットダウンまたは再起動する処理である。それに対して、本実施の形態では、セカンドカーネルは、メモリ内のダンプファイルをダンプ処理対象ノードのメモリを記憶媒体とする仮想のファイルシステムに書き込むことで、ダンプファイルのダンプ処理対象ノードのメモリに転送する。
【００６４】
図８は、ダンプ処理対象ノードを選択する処理のうち条件Ｃ４のできるだけ隣接する複数ノードを選択する処理S84のフローチャート図である。
【００６５】
また、図９は、図８の処理の説明で参照する一例を示す図である。
【００６６】
ダンプ管理サーバ４００は、図４に示したダンプ処理対象ノードの選択処理を実行し、故障ノードＮｐの近傍の基準範囲Ｚｎ内にある、少なくとも第１の時間Ｔｊの間ジョブ割当が予定されていない空きノードであって、ダンプファイルを格納可能なメモリ容量を有する複数の空きノードを選択候補に選ぶ(S81,S82,S83)。
【００６７】
そして、ダンプ管理サーバは、図４の工程S84の詳細を示す図８のフローチャートに従って、できるだけ隣接する複数のノードをダンプ処理対象ノード（空きノード群）として選択する。具体的には、図４の条件Ｃ１，Ｃ２，Ｃ３を満たすダンプ処理対象ノードの候補をそれぞれ評価して、ある優先度に基づいてダンプ処理対象ノードを選択する。
【００６８】
第１に、図９に示すとおり、左側の故障ノードＮｐの近傍の基準範囲Ｚｎの領域を、右側に示すように故障ノードＮｐを原点とするＸ軸の正（Ｘ＋）と負（Ｘ−）、Ｙ軸の正（Ｙ＋）と負（Ｙ−）を組み合わせた４つの領域に分ける。すなわち、Ｘ＋Ｙ＋領域、Ｘ−Ｙ＋領域、Ｘ−Ｙ−領域、Ｘ＋Ｙ−領域の４つの領域である。このように分割することで、最適なダンプ処理対象ノードの探索範囲に一定の制約を設け、探索処理を簡略化する。
【００６９】
第２に、ダンプ管理サーバは、ダンプ処理対象ノードを、隣接する複数ノードの候補を分散する複数ノードの候補より優先する第１の優先順位に基づいて、選択する。複数のノードが隣接する候補をダンプ処理対象ノードに選択したほうが、隣接するノードを優先してタスクの割当が行われるタスク割当処理への影響が少ない。
【００７０】
図９の例で説明すると、左側のジョブ未割当の空きノード（白抜きのノード）が、右側の４分割した領域において、Ｘ−Ｙ＋領域内の候補領域ａ、Ｘ＋Ｙ＋領域内の候補領域ｂ、Ｘ＋Ｙ−領域内の候補領域ｃとして選択されている。この場合、候補領域ａが８つのノードが全て隣接する矩形領域を形成し、候補領域ｂは９つのノードが隣接する矩形領域（一部歪んでいるが）を形成し、候補領域ｃは３つのノードが分散している。したがって、ダンプ管理サーバは、第１の優先順位により、３つの候補のうち隣接ノード群を有する候補領域ａ、ｂをダンプ処理対象ノードとして選択する。
【００７１】
第３に、ダンプ管理サーバは、隣接するノード群を含む矩形領域、分散するノード群を含む領域それぞれにおいて、複数ノードが位置する領域の面積が小さい候補を、面積が大きい候補より優先する第２の優先順位にして選択する。面積が小さいほうが、複数ノードができるだけ固まっているので、ジョブ割当への影響が少なくなる。第２の優先順位は第１の優先順位より優先順位は低い。
【００７２】
図９の例で説明すると、候補領域ａの面積は２×４＝８であり、候補領域ｂの面積は４×４＝１６であるので、ダンプ管理サーバは、第２の優先順位により、候補領域ａを選択する。なお、面積Ｓは以下の計算式による。この計算式では、複数ノードのＸ，Ｙ座標のうち最大、最小のＸ，Ｙ座標に基づいて面積が計算されるので、結局、複数ノードを収容する最小矩形の面積になる。
面積Ｓ＝（最大Ｘ座標−最小Ｘ座標＋１）×（最大Ｙ座標−最小Ｙ座標＋１）
【００７３】
第４に、ダンプ管理サーバは、隣接するノード群を含む矩形領域、分散するノード群を含む領域それぞれにおいて、故障ノードＮｐから候補領域までの距離が短い候補を、距離が長い候補より優先する第３の優先順位にして選択する。距離Ｌは、故障ノードＮｐから候補領域内の複数のノードまでの距離（ホップ数）の総和であり、以下のとおりである。第３の優先順位は第２の優先順位より優先順位は低い。具体例は後述する。
距離Ｌ＝Σ｜Ｎｐ−Ｎｉ｜（ｉ＝１，２．．．ｋ）
｜Ｎｐ−Ｎｉ｜は、故障ノードＮｐから候補領域内のノードＮｉまでのホップ数。
【００７４】
第５に、ダンプ管理サーバは、隣接するノード群を含む矩形領域、分散するノード群を含む領域それぞれにおいて、故障ノードＮｐからダンプファイルを転送に要する転送時間が短い候補を、長い候補より優先する第４の優先順にして選択する。第４の優先順位は少なくとも第２の優先順位より優先順位は低い。第４の優先順位は第３の優先順位より優先順位が低くても良い。具体例は後述する。なお、転送時間は以下の計算式による。
転送時間Ｔｍ＝Ｔ１ｍ／ｋ
Ｔ１ｍは全ダンプファイルを単一の空きノードに転送するに要する時間で、ｋはダンプ処理対象ノードのノード数である。ノード間の転送時間よりもダンプファイルの容量に応じて転送時間が長くなる傾向にあるので、Ｔ１ｍをノード数ｋで除算して転送時間Ｔｍが計算される。したがって、転送時間Ｔｍは、候補のノード数ｋが多いほど短くなる。
【００７５】
上記のような優先順位でダンプ処理対象ノードを探索するということは、ダンプ管理サーバにおいて最良の複数ノードを厳密に検出するよりも、短時間である程度適した複数ノードを検出できるということを意味する。
【００７６】
図８のフローチャートは、上記の優先順位に基づく。すなわち、ダンプ管理サーバは、故障ノードＮｐの近傍の基準範囲Ｚｎを４分割した４領域のいずれかに条件Ｃ１，Ｃ２，Ｃ３を満たす隣接する空きノード群を検出する(S21)。隣接する空きノード群を検出できる場合（S21のYES）、ダンプ管理サーバは、隣接空きノード群の数が１つであれば（S22のYES）、その隣接空きノード群をダンプ処理対象ノードに選択する。
【００７７】
ダンプ管理サーバは、隣接空きノード群の数が１つではなく複数あれば（S22のNO）、隣接空きノード群を含む矩形領域の面積Ｓが最小の矩形領域があれば(S23のYES)、その隣接空きノード群をダンプ処理対象ノードに選択する。
【００７８】
ダンプ管理サーバは、隣接空きノード群の矩形領域の面積Ｓが最小で同じものが複数あれば（S23のNO）、故障ノードNpから隣接空きノード群までの距離Ｌが最小の隣接空きノード群があれば(S24のYES)、その隣接空きノード群をダンプ処理対象ノードに選択する。
【００７９】
ダンプ管理サーバは、距離Ｌが最短で同じものが複数あれば（S24のNO）、転送時間Ｔｍが最小の隣接空きノード群があれば(S25のYES)、その隣接空きノード群をダンプ処理対象ノードに選択する。そして、転送時間Ｔｍが最短で同じものが複数あれば(S25のNO)、いずれかの矩形領域を選択する。
【００８０】
ダンプ管理サーバは、分割した４領域のいずれにも条件Ｃ１，Ｃ２，Ｃ３を満たす隣接空きノード群を検出できない場合(S21のNO)、４領域のいずれかに条件Ｃ１，Ｃ２，Ｃ３を満たす分散する空きノード群の領域を検出する(S26)。検出できる場合（S26のYES）、ダンプ管理サーバは、分散空きノード群の領域の数が１つか否か（S27）、面積Ｓが最小の分散空きノード群の領域があるか否か(S28)、距離Ｌが最小の分散空きノード群の領域があるか否か(S29)、そして、転送時間Ｔｍが最小の分散空きノード群の領域があるか否か(S30)を順番に判定する。いずれかの判定がYESの場合、その分散空きノード群をダンプ処理対象ノードに選択する。前述のS22-S25と同様の処理である。
【００８１】
そして、ダンプ管理サーバは、４領域内に条件Ｃ１，Ｃ２，Ｃ３を満たす空きノード群を検出できない場合(S21のNO、S26のNO)、基準領域内の条件Ｃ１，Ｃ２，Ｃ３を満たす空きノード群を選択する（S31）。
【００８２】
図１０、図１１、図１２、図１３は、ダンプ処理対象ノードを選択する際の各優先順位による選択例を示す図である。図１０の（１）隣接ノード群の数が１つの例では、Ｘ＋Ｙ＋領域内に領域ａが１つのみ検出されている。この場合、図８の工程Ｓ２２の判断はYesになる。図１０の（２）隣接ノード群が複数／面積が異なる例では、面積Ｓが４×２＝６の領域ａと、４×３＝１２の領域ｂが検出されている。この場合、図８の工程Ｓ２３で領域ａが最小面積の隣接ノード群の矩形領域として選択される。
【００８３】
図１１の（３）隣接ノード群が複数／面積同じ／距離が異なる例では、領域ａ、ｂが検出されている。領域ａ、ｂは、面積はいずれもＳ＝２×２＝４、距離は領域ａがＬ＝２、領域ｂがＬ＝５であるので、図８の工程Ｓ２４で最短距離の領域ａが選択される。
【００８４】
図１１の（４）隣接ノード群が複数／面積・距離同じ／転送速度が異なる例では、領域ａ、ｂが検出されている。領域ａ、ｂは、面積はいずれもＳ＝２×２＝４、距離はいずれもＬ＝２、転送速度を決めるノード数は領域ａが４つ、領域ｂが３つであるので、図８の工程Ｓ２５で最短転送時間の領域ａが選択される。
【００８５】
図１２の（１）分散ノード群の領域の数が１つの例では、Ｘ＋Ｙ＋領域内に領域ａが１つのみ検出されている。この場合、図８の工程Ｓ２７の判断はYesになる。
【００８６】
図１２の（２）分散ノード群の領域が複数／面積が異なる例では、面積Ｓが２×２＝４の領域ａと、２×３＝６の領域ｂが検出されている。この場合、図８の工程Ｓ２８で領域ａが最小面積の分散ノード群の領域として選択される。
【００８７】
図１３の（３）分散ノード群の領域が複数／面積同じ／距離が異なる例では、領域ａ、ｂが検出されている。領域ａ、ｂは、面積はいずれもＳ＝２×２＝４、距離は領域ａがＬ＝４、領域ｂがＬ＝５であるので、図８の工程Ｓ２９で最短距離の領域ａが選択される。
【００８８】
図１３の（４）分散ノード群の領域が複数／面積・距離同じ／転送時間が異なる例では、領域ａ、ｂが検出されている。領域ａ、ｂは、面積はいずれもＳ＝２×２＝４、距離はいずれもＬ＝２、転送時間を決めるノード数は領域ａが３つ、領域ｂが２つであるので、図８の工程Ｓ２５で最小転送時間の領域ａが選択される。
【００８９】
［ダンプ処理対象ノードのメモリを記憶媒体とするファイルシステム］
本実施の形態では、故障ノードのメモリ内のダンプファイルを故障ノードに対応して選択したダンプ処理対象ノードのメモリに書き込むことで、ダンプ処理を短時間で完了する。そして、ダンプ管理サーバは、ダンプ処理対象ノードのメモリ内のダンプファイルにアクセスしてダンプファイルの分析及び故障解析を可能にする。
【００９０】
ダンプファイルの転送とダンプファイルへのアクセスを可能にするために、本実施の形態では、例えば、ダンプ処理対象ノードのメモリを記憶媒体とする仮想ディスクを利用するファイルシステムを利用する。このファイルシステムを、本実施の形態では、メモリファイルシステムと称する。
【００９１】
複数ノードのメモリを記憶媒体とするファイルシステムは、たとえば、データベースにおいてインメモリデータグリッドやインメモリデータストレージなどで知られている。
【００９２】
本実施の形態では、各ノードは、メモリファイルシステムを構築するメモリファイルシステム構築プログラムと、メモリファイルシステムをマウント（実装）するメモリファイルシステムマウントプログラムとを実行する。また、ダンプ管理サーバは、メモリファイルシステムマウントプログラムを実行する。
【００９３】
一般にファイルシステムは、ＯＳが有する一つの機能である。ファイルシステムでは、たとえば、ディスク名、セクタサイズ、セクタ数などにより定義されたＨＤＤなどのディスク装置に対して、ＯＳ内のディスク装置のドライバに、ディスク装置内のファイルへのアクセスを実行させる。ファイルへのアクセスは、ファイルが記憶されているセクタ位置を記憶するファイルアロケーションテーブル（ＦＡＴ）に基づいて実行される。
【００９４】
これに対して、メモリファイルシステムでは、たとえば、仮想のディスク装置が定義され、仮想ディスク装置のアクセス先情報を、複数ノードのメモリへのアクセス情報（ノードのＩＰアドレスとメモリ内のアドレスなど）に変換してアクセスが実行される。したがって、たとえば、メモリファイルシステム構築プログラムは、ダンプ処理対象ノード内のメモリの構造や容量に基づいて、仮想ディスクのディスク名、セクタサイズ、セクタ数、ＦＡＴを有するディレクトリなどを定義するメモリファイルシステムの構造体（データ）を生成する。また、メモリファイルシステムマウントプログラムは、マウントするノードまたはサーバに応じて、アクセス情報の変換を可能にする。
【００９５】
上記の説明は、ひとつのメモリファイルシステムの構築とマウント方法の一例を示すものであり、上記以外のファイルシステムの構築方法、マウント方法であってもよい。
【００９６】
図１４は、ダンプ管理サーバの機能を説明する図である。ダンプ管理サーバ４００は、ダンプ処理対象ノード決定部４０１と、メモリファイルシステム制御部４０２と、メモリファイルシステムマウント部４０３を有する。ダンプ管理サーバ４００は、補助記憶装置１４からメインメモリ１２にロードしたダンプ対象ノード決定プログラムと、メモリファイルシステム制御プログラムと、メモリファイルシステムマウントプログラムを実行して、上記のダンプ処理対象ノード決定部４０１と、メモリファイルシステム制御部４０２と、メモリファイルシステムマウント部４０３を実現する。
【００９７】
ダンプ処理対象ノード決定部４０１は、システム管理サーバ２００からノード情報を、ジョブ管理サーバ３００からジョブ情報をそれぞれ取得し、図４、８に示したフローチャートにしたがってダンプ処理対象ノードを選択する。
【００９８】
さらに、ダンプ処理対象ノード決定部４０１は、メモリファイルシステムを構築及び参照するために必要なアドレス情報テーブル４１０，４１１を生成する。アドレス情報テーブルは、ダンプファイルの転送元メモリファイルシステム用のアドレス情報テーブル４１０と、転送先メモリファイルシステム用のアドレス情報テーブル４１１とを有する。
【００９９】
前述のとおり、メモリファイルシステムでは、仮想ディスク装置のアクセス情報（アドレス）を、ダンプ処理対象ノードのメモリへのアクセス情報（IPアドレスとメモリのアドレス）に変換することが行われる。上記のアドレス情報テーブル４１０，４１１は、このアクセス情報の変換に必要なテーブルである。
【０１００】
図１５は、アドレス情報テーブルの例を示す図である。アドレス情報テーブルは、ダンプ処理対象ノードを構成する複数ノードそれぞれを特定する情報（ホスト名やIPアドレス）と、ノード内のメモリの空き領域のアドレス（開始アドレスaddr-s〜終了アドレスaddr-e）と、メモリファイルシステムの仮想ディスクのアドレス（開始アドレス〜終了アドレス）と、メモリファイルシステムをマウント（実装）するための情報（パス名等）（図示せず）とを含む。図中、addr-diffは、開始アドレスaddr-sと終了アドレスaddr-eの差分である。
【０１０１】
ダンプ処理対象ノード決定部４０１は、転送元アドレス情報テーブル４１０と転送先アドレス情報テーブル４１１を生成する。但し、故障ノードのメモリ内のダンプファイルをダンプ処理対象ノードのメモリに転送する場合、ダンプファイル転送元のメモリファイルシステムは構築されない。したがって、転送元アドレス情報テーブル４１０内のアドレス情報は空（φ）である。一方、ダンプファイル転送先のメモリファイルシステムは構築される。したがって、転送元アドレス情報テーブル４１１には、前述の情報が含まれている。
【０１０２】
図１４に戻り、メモリファイルシステム制御部４０２は、次の機能を有する。
（１）アドレス情報テーブルをダンプ処理対象ノードNdに配布する機能。
（２）ダンプ処理対象ノードNdのメモリファイルシステム構築プログラムに、アドレス情報テーブルに基づいて転送先のメモリファイルシステムの構築と構築解除の指示をする機能。
（３）故障ノードNpやダンプ処理対象ノードNdのメモリファイルシステムマウントプログラムに、構築されたメモリファイルシステムをマウント／アンマウントする指示をする機能。
（４）故障ノードNpにダンプコマンドの実行指示を行い、故障ノードのメモリのイメージファイルをダンプファイルとして、転送先メモリファイルシステムに書き込ませる機能。
（５）新ダンプ処理対象ノードに対して、転送元メモリファイルシステムから転送先メモリファイルシステムにダンプファイルを転送することを指示する機能。
【０１０３】
メモリファイルシステム制御部４０２による故障ノードからダンプ処理対象ノードへのダンプファイルの転送制御と、旧ダンプ処理対象ノードから新ダンプ処理対象ノードへのダンプファイルの転送制御については、後述する。
【０１０４】
ダンプ管理サーバ４００のメモリファイルシステムマウント部４０３は、ダンプファイルが転送されたメモリファイルシステムをマウント（実装）し、ダンプファイルにアクセス可能にする。このマウント処理は、たとえば、メモリファイルシステムの仮想ディスク装置の仮想ドライバをインストールする処理である。これにより、ダンプ管理サーバ４００は、物理的なＨＤＤによるファイルシステムに加えて、仮想的なＶＨＤＤによるメモリファイルシステムにアクセス可能になる。すなわち、ダンプ管理サーバ４００は、ユーザによるメモリファイルシステムへのアクセス要求に応答して、アドレス情報テーブルに基づいて、アクセス先である仮想ディスク装置のアドレス情報を、ダンプ処理対象ノード内のメモリのアドレス情報に変換し、ダンプ処理対象ノード内のメモリにアクセスする。これによりダンプ管理サーバ４００は、ダンプファイルにアクセスする。
【０１０５】
図１６は、ダンプ管理サーバによるダンプ処理指示S10の処理例を示すフローチャート図である。このダンプ処理は、故障ノードからダンプ処理対象ノードへのダンプファイルの転送時の処理例である。図１６は、ダンプ管理サーバによるダンプ処理指示S10の処理に加えて、それに対応する故障ノードによるダンプ処理S11の処理を示す。故障ノードによるダンプ処理S11の処理S114,S115,S116は、図７の処理S114,S115,S116に対応する。
【０１０６】
図１７は、図１６の処理を説明する図である。図１７には、故障ノードNpとダンプ処理対象ノードの複数のノードNd1, Nd2...Ndnと、メモリファイルシステムMF1とが示されている。
【０１０７】
図１４で説明したとおり、ダンプ管理サーバ４００のメモリファイルシステム制御部４０２は、転送元／転送先アドレス情報テーブル４１０，４１１をダンプ処理対象ノードNd1-Ndnに送信する（S101）。テーブル例は、図１５に示したとおりである。
【０１０８】
次に、メモリファイルシステム制御部４０２は、ダンプ処理対象ノードNd1-NdnにメモリファイルシステムMF1の構築を指示する（S102）。これに応答して、ダンプ処理対象ノードNd1-Ndnのメモリファイルシステム構築プログラム（PG）は、たとえば、メモリファイルシステムMF1を定義する構造体を生成する。これにより、ダンプ処理対象ノードNd1-Ndn内のメモリの空き領域E1-Enを記憶媒体とするメモリファイルシステムMF1が構築される。
【０１０９】
次に、メモリファイルシステム制御部４０２は、故障ノードNpにメモリファイルシステムMF1のマウントを指示する（S103）。この指示に応答して、故障ノードNpのメモリファイルシステムマウントプログラム（PG）は、メモリファイルシステムMF1を実装する（S114）。具体的には、たとえば、メモリファイルシステムMF1の仮想ディスク装置を構築し、その仮想ディスク装置のドライバをインストールする。これにより、故障ノードNpのダンプ処理用セカンドカーネルは、メモリファイルシステムMF1へのデータの書き込み、読み出しなどを行うことができる。
【０１１０】
そして、メモリファイルシステム制御部４０２は、故障ノードNdに、故障ノード内のメモリ内のダンプファイルをメモリファイルシステムMF1に書き込むよう指示する（S104）。これに応答して、故障ノードNdのセカンドカーネルは、メモリ内のダンプファイルをメモリファイルシステムMF1に書き込む(S115)。このメモリファイルシステムMF1への書き込み処理は、転送先アドレス情報テーブルに基づくアドレス変換と、ダンプ処理対象ノードのメモリへの書き込み処理により実行される。これにより、故障ノードのメモリ内のダンプファイルは、ダンプ処理対象ノードのメモリの空き領域内に転送される。
【０１１１】
最後に、ダンプ管理サーバのメモリファイルシステムマウント部４０３は、メモリファイルシステムMF1をマウントする（S105）。これにより、ダンプ管理サーバは、マウントしたメモリファイルシステムの仮想ディスクにアクセスし、ダンプファイルを読み出す。したがって、ユーザは、ダンプ管理サーバ４００にアクセスしてダンプファイルを読み出し、ダンプファイルを解析することができる。
【０１１２】
以上の通り、あるノードが故障した場合、故障ノードNdのセカンドカーネルが、メモリ内のダンプファイルをダンプ処理対象ノードのノード群のメモリに転送する。複数のノードが故障した場合は、それぞれの故障ノードに対応して選択されたダンプ処理対象ノードのメモリに、それぞれのダンプファイルが転送される。よって、本実施の形態によれば、単一のファイルサーバや単一のノードにダンプファイルを転送する場合より短時間になる。
【０１１３】
図１８は、ダンプ処理指示S10Rの処理例を示すフローチャート図である。このダンプ処理は、旧ダンプ処理対象ノードのメモリから新たに選択された新ダンプ処理対象ノードのメモリへダンプファイルを転送する時の処理例である。図１８のダンプ処理指示S10Rの前に、図１４で説明したとおり、ダンプ処理対象ノード決定部４０１が、新たなダンプ処理対象ノードを選択するとともに、新たな転送先アドレス情報テーブル４１１を生成している。また、新たな転送元アドレス情報テーブル４１０は、旧転送先アドレス情報テーブル４１１がそのまま利用される。
【０１１４】
図１９は、図１８のダンプ処理での旧ダンプ処理対象ノードと旧メモリファイルシステム及び新ダンプ処理対象ノードと新メモリファイルシステムを示す図である。図２０は、旧転送元／転送先アドレス情報テーブル410_old, 411_oldと新転送元／転送先アドレス情報テーブル410_new, 411_newを示す図である。
【０１１５】
図１８にしたがってダンプ処理指示S10Rに関する処理を説明する。まず、ダンプ管理サーバ４００のメモリファイルシステム制御部４０２は、旧ダンプ処理対象ノードに対応する新転送元アドレス情報テーブル４１０と、新たに選択したダンプ処理対象ノードに対応する新転送先アドレス情報テーブル４１１とを、新ダンプ処理対象ノードに送信する（S101R）。図１９に示されるとおり、新転送元アドレス情報テーブル410_newとして、旧転送先アドレス情報テーブル411_oldがそのまま利用される。
【０１１６】
次に、メモリファイルシステム制御部４０２は、新ダンプ処理対象ノードに新メモリファイルシステムMF2の構築を指示する（S102R）。そして、メモリファイルシステム制御部４０２は、新ダンプ処理対象ノードNd_newに、旧メモリファイルシステムMF1と新メモリファイルシステムMF2をマウントするよう指示する（S103R）。これに応答して、新ダンプ処理対象ノードNd_newは両メモリファイルシステムMF1,MF2をマウントする（S114R）。
【０１１７】
図１９に示されるとおり、旧メモリファイルシステムMF1は、旧ダンプ処理対象ノードNd_oldのメモリを記憶媒体とするファイルシステムであり、既にダンプファイルが格納されている。また、新メモリファイルシステムMF2は、新ダンプ処理対象ノードNd_newのメモリを記憶媒体とするファイルシステムであり、まだダンプファイルは格納されていない。
【０１１８】
次に、メモリファイルシステム制御部４０２は、新ダンプ処理対象ノードNd_newに、旧メモリファイルシステムMF1内のダンプファイルを、新メモリファイルシステムMF2に書き込むよう指示する（S104R）。これに応答して、新ダンプ処理対象ノードNd_newは、旧メモリファイルシステムMF1内のダンプファイルを読み出し、新メモリファイルシステムMF2に書き込む（S115R）。これにより、ダンプファイルは旧ダンプ処理対象ノードのメモリから新ダンプ処理対象ノードのメモリに転送される。
【０１１９】
そして、メモリファイルシステム制御部４０２は、旧ダンプ処理対象ノードNd_oldに旧メモリファイルシステムMF1のマウントの解除と再起動を指示する（S105R）。これに応答して、旧ダンプ処理対象ノードNd_oldは、旧メモリファイルシステムMF1のマウントを解除し、再起動する（S116R）。これにより、旧ダンプ処理対象ノードは、新たにジョブ割り当て対象に加えられる。
【０１２０】
最後に、ダンプ管理サーバ４００のメモリファイルシステムマウント部４０３は、新メモリファイルシステムMF2をマウントする（S106R）。これにより、ダンプ管理サーバは、ダンプファイルの読み出しが可能になる。
【０１２１】
上記のとおり、旧ダンプ処理対象ノードから新ダンプ処理対象ノードへのダンプファイルの転送は、新たに選択した新ダンプ処理対象ノードが、旧メモリファイルシステムMF1からダンプファイルを読み出す処理と、新メモリファイルシステムMF2に書き込む処理とで、行われる。したがって、ダンプファイルの転送が一つのファイルサーバやダンプ管理サーバなどに集中しない。
【０１２２】
そして、故障発生から第２の時間Ｔｐが経過すると、ダンプ管理サーバは、マウント済みのメモリファイルシステム内のダンプファイルを読み出し、ダンプ管理サーバに接続されている実ＨＤＤ装置によるファイルシステムに書き込む。このダンプファイルの転送処理は、図１８の工程S115Rに対応する。ダンプ管理サーバは、ダンプファイルへのアクセスのために既にメモリファイルシステムをマウント済みであるので、そのメモリファイルシステムからダンプファイルを読み出し、実装済みの実ＨＤＤ装置によるファイルシステムにそのダンプファイルを書き込むことでダンプファイルのダンプ管理サーバの補助記憶装置への転送を行うことができる。
【０１２３】
そして、ダンプ管理サーバは、ダンプ処理対象ノードにメモリファイルシステムをアンマウントするよう指示する。それに応答して、ダンプ処理対象ノードはメモリファイルシステムをアンマウントし、再起動する。この処理は、図１８の工程S116Rに対応する。
【０１２４】
以上のとおり、本実施の形態によれば、故障ノードがメモリ内のダンプファイルを複数の空きノードを有するダンプ処理対象ノードのメモリに転送するので、ダンプ処理を短時間で完了できる。また、ダンプ管理サーバがダンプ処理対象ノードのメモリ内のダンプファイルにアクセスできるので、ダンプファイルへのアクセス及び解析と故障の解析を効率的に行うことができる。
【０１２５】
本実施の形態によれば、ダンプファイルを転送するダンプ処理対象ノードを、故障ノードの近傍に位置するできるだけ隣接するノード群を優先して選択する。それにより、ダンプ処理と独立して行われる空きノードへのジョブの割当処理への影響をできるだけ抑制できる。また、故障ノードの近傍に限定してダンプ処理対象ノードを選択するので、選択処理が短時間で完了する。
【０１２６】
本実施の形態によれば、ダンプ処理対象ノードが、第１の時間の間だけダンプファイルを保持し、第１の時間が経過後に新たなダンプ処理対象ノードにダンプファイルが転送されるので、空きノードへのジョブ割当処理への影響を抑制できる。
【０１２７】
また、本実施の形態によれば、故障発生から第２の時間経過後に、ダンプ処理対象ノード内のダンプファイルがダンプ管理サーバの補助記憶装置に転送されるので、空きノードへのジョブ割当処理への影響を抑制できる。
【０１２８】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１２９】
（付記１）
複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択するノード選択部と、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させるダンプ処理指示部とを有する、ダンプ管理装置。
【０１３０】
（付記２）
前記ノード選択部は、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが位置する領域が小さい候補を大きい候補より優先する第２の優先順位を、前記第１の優先順位の次の優先順位にして、前記ダンプ処理対象ノードを選択する、付記１に記載のダンプ管理装置。
【０１３１】
（付記３）
前記ノード選択部は、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが位置する領域と前記故障ノードとの距離が短い候補を長い候補より優先する第３の優先順位を、前記第２の優先順位の次の優先順位にして、前記ダンプ処理対象ノードを選択する、付記２に記載のダンプ管理装置。
【０１３２】
（付記４）
前記ノード選択部は、前記ダンプ処理対象ノードの候補のうち、前記故障ノードから前記ダンプ処理対象ノードにダンプデータを転送する時間が短い候補を長い候補よりも優先する第４の優先順位を、前記第３の優先順位の次の優先順位にして、前記ダンプ処理対象ノードを選択する、付記３に記載のダンプ管理装置。
【０１３３】
（付記５）
前記ノード選択部は、前記故障ノードによる前記ダンプファイルの転送の後、前記第１の時間以上経過するたびに、新たに新ダンプ処理対象ノードを選択し、
前記ダンプ処理指示部は、前記新ダンプ処理対象ノードに、新たに選択される前の旧ダンプ処理対象ノードのメモリ内のダンプファイルを、前記新ダンプ処理対象ノードのメモリに転送させる、付記１に記載のダンプ管理装置。
【０１３４】
（付記６）
さらに、補助記憶装置を有し、
前記ノード選択部は、前記故障ノードの故障から前記第１の時間より長い第２の時間経過後に、前記ダンプ処理対象ノードのメモリ内のダンプファイルを前記補助記憶装置に転送させる、付記１または５に記載のダンプ管理装置。
【０１３５】
（付記７）
さらに、前記ダンプ処理対象ノードのメモリを記憶媒体とするダンプ処理用のファイルシステムを実装するファイルシステム実装部を有する、付記１に記載のダンプ管理装置。
【０１３６】
（付記８）
複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択することと、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させること、
を有する処理をコンピュータに実行させるダンプ管理プログラム。
【０１３７】
（付記９）
前記処理は、さらに、
前記故障ノードによる前記ダンプファイルの転送の後、前記第１の時間以上経過するたびに、新たに新ダンプ処理対象ノードを選択し、
前記新ダンプ処理対象ノードに、新たに選択される前の旧ダンプ処理対象ノードのメモリ内のダンプファイルを、前記新ダンプ処理対象ノードのメモリに転送させる、付記８に記載のダンプ管理プログラム。
【０１３８】
（付記１０）
前記処理は、さらに、
前記故障ノードの故障から前記第１の時間より長い第２の時間経過後に、前記ダンプ処理対象ノードのメモリ内のデータを前記補助記憶装置に転送させる、付記８または９に記載のダンプ管理プログラム。
【０１３９】
（付記１１）
複数のノードを有する並列計算機の故障ノードから故障発生の通知を受信したことに応答して、前記故障ノードの近傍の基準範囲内の複数のノードのうち、少なくとも前記故障ノードのメモリのダンプ処理に要する第１の時間内にジョブを実行する予定がなく、前記ダンプ処理に必要なメモリ容量を有する複数ノードをダンプ処理対象ノードとして選択し、更に、前記ダンプ処理対象ノードの候補のうち、前記ダンプ処理対象ノードに含まれる複数ノードが隣接する候補を、前記複数のノードが分散する候補より優先する第１の優先順位にしたがって前記ダンプ処理対象ノードを選択することと、
前記故障ノードに、当該故障ノードのメモリ内のダンプファイルを、前記ダンプ処理対象ノードのメモリに転送させること、
を有するダンプ管理方法。
【符号の説明】
【０１４０】
１００：ノード群
２００：システム管理サーバ
３００：ジョブ管理サーバ
４００：ダンプ管理サーバ
Ｎｐ：故障ノード
Ｎ１−Ｎｎ：空きノード群
４０１：ダンプ処理対象ノード決定部
４０２：メモリファイルシステム制御部
４０３：メモリファイルシステムマウント部
【図１】
0006477266.tif 000002
【図２】
0006477266.tif 000003
【図３】
0006477266.tif 000004
【図４】
0006477266.tif 000005
【図５】
0006477266.tif 000006
【図６】
0006477266.tif 000007
【図７】
0006477266.tif 000008
【図８】
0006477266.tif 000009
【図９】
0006477266.tif 000010
【図１０】
0006477266.tif 000011
【図１１】
0006477266.tif 000012
【図１２】
0006477266.tif 000013
【図１３】
0006477266.tif 000014
【図１４】
0006477266.tif 000015
【図１５】
0006477266.tif 000016
【図１６】
0006477266.tif 000017
【図１７】
0006477266.tif 000018
【図１８】
0006477266.tif 000019
【図１９】
0006477266.tif 000020
【図２０】
0006477266.tif 000021