(57)【要約】【課題】エージェントノードがダウンした場合に迅速に対処する。【解決手段】複数のサーバノード１０のうち一のサーバノード１０から、この一のサーバノード１０とペアを構成するサーバノード１０のダウンを通知するペアノードダウン通知を受信する受信部と、ペアノードダウン通知を受信するとノードダウン対応処理を実行するノードダウン処理部１０７とを備える【選択図】図３
2020008999.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバノードと、前記複数のサーバノードを管理するマネージャノードとを備える情報処理システムにおいて、
前記複数のサーバノードのうち一のサーバノードに、
当該一のサーバノードとペアを構成するサーバノードを監視し、前記ペアを構成するサーバノードのダウンを検知すると前記マネージャノードにペアノードダウン通知を発行するペアノード監視部を備え、
前記マネージャノードに、
前記ペアノードダウン通知を受信すると、ノードダウン対応処理を実行するノードダウン処理部を備える
ことを特徴とする、情報処理システム。
【請求項２】
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理に関連する、その他の実行に成功した処理を、実行前の状態に戻す処理の実行指示を行なう
ことを特徴とする、請求項１記載の情報処理システム。
【請求項３】
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理を、前記複数のサーバノードのうち、他のサーバノードに実行させる実行指示を行なう
ことを特徴とする、請求項１または２記載の情報処理システム。
【請求項４】
前記複数のサーバノードもしくは前記マネージャノードの起動時において、前記処理の実行に伴って生成される不揮発情報の格納位置を示す管理情報を参照して、前記不揮発情報を削除する不揮発情報削除部を備える
ことを特徴とする、請求項１〜３のいずれか１項に記載の情報処理システム。
【請求項５】
複数のサーバノードを管理する情報処理装置であって、
前記複数のサーバノードのうち一のサーバノードから、当該一のサーバノードとペアを構成するサーバノードのダウンを通知するペアノードダウン通知を受信する受信部と、
前記ペアノードダウン通知を受信するとノードダウン対応処理を実行するノードダウン処理部とを備える
ことを特徴とする、情報処理装置。
【請求項６】
複数のサーバノードを管理する情報処理装置のプロセッサに、
前記複数のサーバノードのうち一のサーバノードから、当該一のサーバノードとペアを構成するサーバノードのダウンを通知するペアノードダウン通知を受信するとノードダウン対応処理を実行する
処理を実行させることを特徴とする、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム，情報処理装置および制御プログラムに関する。
【背景技術】
【０００２】
近年、複数のコンピュータノード（以下、単にノードという）を備えたＳＤＳ（Software Defined Storage）システムが知られている。
【０００３】
図１３は従来のＳＤＳシステム５００の構成を模式的に示す図である。
【０００４】
ＳＤＳシステム５００においては、複数（図１３に示す例では３つ）のノード５０１−１〜５０１−３がネットワーク５０３を介して相互に接続されている。また、ノード５０１−１〜５０−３にはそれぞれ物理デバイスである記憶装置５０２が接続されている。
【０００５】
複数のノード５０１−１〜５０１−３のうち、ノード５０１−１が他のノード５０１−２，５０１−３を管理するマネージャノードとして機能する。また、ノード５０１−２，５０１−３がマネージャノード５０１−１の制御に従って処理を行なうエージェントノードとして機能する。以下、マネージャノード５０１−１をMgr #1と表す場合がある。また、エージェントノード５０１−２をAgt #2と表し、エージェントノード５０１−３をAgt #3と表す場合がある。
【０００６】
また、以下、エージェントノードを示す符号としては、複数のエージェントノードのうち１つを特定する必要があるときには符号５０１−２，５０１−３を用いるが、任意のエージェントノードを指すときには符号５０１を用いる。
【０００７】
ユーザからの要求がマネージャノード５０１−１に入力され、マネージャノード５０１−１は、このユーザの要求を実現するためにエージェントノード５０１−２，５０１−３に実行させる複数の処理（コマンド）を作成する。
【０００８】
図１４は従来のＳＤＳシステム５００においてユーザからの要求に対する処理方法を例示する図である。
【０００９】
この図１４に示す例においては、ユーザからミラーリングされたボリュームの作成が要求された場合の処理を示す。
【００１０】
ユーザは、ミラーリングされたボリュームの作成の要求をマネージャノード５０１−１に入力する（符号Ｓ１参照）。マネージャノード５０１−１は、この要求に応じて、複数（図１４に示す例では５つ）のコマンド（create Dev #2_1，create Dev #2_2，create Dev #3_1，create Dev #3_2およびcreate MirrorDev）を作成する（符号Ｓ２参照）。
【００１１】
ＳＤＳシステム５００においては、これらの複数のコマンドが、ミラーリングされたボリュームの作成にかかる一連のコマンドとしてエージェントノード５０１−２，５０１−３において実行される。
【００１２】
マネージャノード５０１−１は、エージェントノード５０１−２，５０１−３に対して、作成したコマンドの処理を依頼する（符号Ｓ３参照）。
【００１３】
図１４に示す例においては、Agt #2にコマンド“create Dev #2_1”および“create Dev #2_2”の処理が依頼される（符号Ｓ４参照）、また、Agt #3にコマンド“create Dev #3_1”，“create Dev #3_2”および“create MirrorDev” の処理が依頼される（符号Ｓ５参照）。
【００１４】
依頼を受けた各エージェントノード５０１−２，５０１−３は、それぞれ依頼されたコマンド（処理）を実行して（符号Ｓ６，Ｓ７参照）、コマンドの完了をマネージャノード５０１−１に応答する。マネージャノード５０１−１は各エージェントノード５０１−２，５０１−３から送信された応答を確認する（符号Ｓ８参照）。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平９−３１９６３３号公報
【特許文献２】特開２０１６−１４３２４８号公報
【特許文献３】特開２０１６−１３３９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
このような従来のＳＤＳシステムにおいて、複数のエージェントノード５０１が処理を実行中に、そのうちの１つのエージェントノード５０１がダウンする場合がある。
【００１７】
例えば、図１４に示す例において、エージェントノード５０１−３がコマンド“create MirrorDev” の実行中にダウンした場合について考える。
【００１８】
マネージャノード５０１−１は、ダウンしたエージェントノード５０１−３に対してコマンド“create MirrorDev” の実行を繰り返し依頼し続け、所定時間が経過するまで応答がない場合に、タイムアウトエラーを検知する。
【００１９】
マネージャノード５０１−１においては、タイムアウトを検知するまでの間は、ユーザから他の要求が行なわれても応答することができず、ユーザを待たせてしまうことになる。
【００２０】
また、マネージャノード５０１−１においては、エージェントノード５０１−３との間にコネクションを確立できるまで、結果的に無駄なリトライ（コマンド“create MirrorDev” の実行要求）を続けることになる。
【００２１】
なお、クラスタシステムにおいて、ノードのダウンを検知する機能を備えたクラスタソフトを用いることが知られているが、クラスタソフトは管理情報にアクセスできるまでノードダウンを知ることができず、上記のタイムアウトが終了するまで管理情報にアクセスできない場合がある。
１つの側面では、本発明は、エージェントノードがダウンした場合に迅速に対処できることを目的とする。
【課題を解決するための手段】
【００２２】
このため、この情報処理システムは、複数のサーバノードと、前記複数のサーバノードを管理するマネージャノードとを備える。前記複数のサーバノードのうち一のサーバノードに、当該一のサーバノードとペアを構成するサーバノードを監視し、前記ペアを構成するサーバノードのダウンを検知すると前記マネージャノードにペアノードダウン通知を発行するペアノード監視部を備える。また、前記マネージャノードに、前記ペアノードダウン通知を受信すると、ノードダウン対応処理を実行するノードダウン処理部を備える。
【発明の効果】
【００２３】
一実施形態によれば、エージェントノードがダウンした場合に迅速に対処できる。
【図面の簡単な説明】
【００２４】
【図１】実施形態の一例としてのストレージシステムのハードウェア構成を模式的に示す図である。
【図２】実施形態の一例としてのストレージシステムに形成された論理デバイスを例示する図である。
【図３】実施形態の一例としてのストレージシステムの機能構成を示す図である。
【図４】実施形態の一例としてのストレージシステムにおけるジョブ管理情報を例示する図である。
【図５】（ａ），（ｂ）は実施形態の一例としてのストレージシステムにおけるタスクを例示する図である。
【図６】実施形態の一例としてのストレージシステムにおけるタスク管理情報を例示する図である。
【図７】実施形態の一例としてのストレージシステムにおけるタスク進捗状況情報の遷移を説明するための図である。
【図８】従来のＳＤＳシステムのエージェントノードにおいて一時ファイルが作成される過程を例示する図である。
【図９】実施形態の一例としてのストレージシステムにおける不揮発情報管理情報を例示する図である。
【図１０】実施形態の一例としてのストレージシステムにおける各ノードの起動時における不揮発情報削除部の処理を説明するためのフローチャートである。
【図１１】実施形態の一例としてのストレージシステムにおけるマネージャノードの処理を説明するためのフローチャートである。
【図１２】実施形態の一例としてのストレージシステムにおけるノードダウン発生時の処理を説明するためのフローチャートである。
【図１３】従来のＳＤＳシステムの構成を模式的に示す図である。
【図１４】従来のＳＤＳシステムにおいてユーザからの要求に対する処理方法を例示する図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照して本情報処理システム，情報処理装置および制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２６】
（Ａ）構成
図１は実施形態の一例としてのストレージシステム１のハードウェア構成を模式的に示す図である。
【００２７】
ストレージシステム１は、ストレージを制御する複数（図１に示す例では６つ）のストレージ制御ノード（制御ノード１０：以下、単にノードという）１０−１〜１０−６を備えたＳＤＳシステムである。
【００２８】
ノード１０−１〜１０−６はネットワーク３０を介して相互に通信可能に接続されている。
【００２９】
ネットワーク３０は、例えば、ＬＡＮ（Local Area Network）であり、図１に示す例においてはネットワークスイッチ３１を備える。各ノード１０−１〜１０−６は通信ケーブルを介してネットワークスイッチ３１に接続されることで、相互に通信可能に接続されている。
【００３０】
なお、以下、ノードを示す符号としては、複数のノードのうち１つを特定する必要があるときには符号１０−１〜１０−６を用いるが、任意のノードを指すときには符号１０を用いる。
【００３１】
本ストレージシステム１においては、複数のノード１０のうち、一のノード１０がマネージャノードとして機能する一方で、他のノード１０がエージェントノードとして機能する。マネージャノードは、複数のノード１０を備えた多ノード構成のストレージシステム１において、他のノード（エージェントノード）１０を管理し、これらの他のノード１０に指示を発行する指示ノードである。エージェントノードは、指示ノードから発行された指示に従って処理を行なう。
【００３２】
以下においては、ノード１０−１がマネージャノードであり、ノード１０−２〜１０−６がエージェントノードである例について示す。
【００３３】
以下、ノード１０−１をマネージャノード１０−１という場合があり、また、このノード１０−１をMgr #1と表す場合がある。また、ノード１０−２〜１０−６をエージェントノード１０−２〜１０−６という場合があり、これらのノード１０−２〜１０−６をAgt #2〜#6と表す場合がある。
【００３４】
なお、マネージャノード１０−１の故障時には、いずれかのエージェントノード１０がマネージャノード１０の動作を引き継ぎ、新たなマネージャノード１０として機能する。
【００３５】
また、ノード１０−１とノード１０−２とにはＪＢＯＤ（Just a Bunch Of Disks：物理デバイス）２０−１が接続され、これらは１ノードブロック（ストレージ筐体）として管理される。同様に、ノード１０−３とノード１０−４とにはＪＢＯＤ２０−２が、ノード１０−５とノード１０−６とにはＪＢＯＤ２０−３が、それぞれ接続されている。
【００３６】
なお、以下、ＪＢＯＤを示す符号としては、複数のＪＢＯＤのうち１つを特定する必要があるときには符号２０−１〜２０−３を用いるが、任意のＪＢＯＤを指すときには符号２０を用いる。
【００３７】
ＪＢＯＤ２０は、物理デバイスである複数の記憶装置を論理的に連結した記憶装置群であり、各記憶装置の容量の合計をまとめて論理的な大容量ストレージ（論理デバイス）として利用できるよう構成されている。
【００３８】
ＪＢＯＤ２０を構成する記憶装置としては、例えば、ハードディスクドライブ（Hard Disk Drive：ＨＤＤ）、ＳＳＤ（Solid State Drive），ストレージクラスメモリ（Storage Class Memory：ＳＣＭ）が用いられる。なお、ＪＢＯＤは公知の手法により実現されるものであり、その詳細な説明は省略する。
【００３９】
本ストレージシステム１においては、一のノード１０からネットワークスイッチ３１を介して他のノード１０にアクセスすることで、他のノード１０に接続されたＪＢＯＤ２０に任意にアクセス可能に構成されている。
【００４０】
各ＪＢＯＤ２０には、それぞれ２つのノード１０が接続されているので、これにより各ＪＢＯＤ２０への経路は冗長化されている。
【００４１】
各ノード１０においては、ＪＢＯＤ２０の記憶領域を用いた論理デバイスが形成されてもよい。
【００４２】
各ノード１０は、ネットワーク３０を介して他ノード１０の論理デバイスにアクセス可能である。また、各ノード１０は、ネットワーク３０を介して他ノード１０の論理デバイスの管理情報にもアクセスすることができる。さらに、各ノード１０は、ネットワーク３０を介して他ノード１０の不揮発情報（ストア２０ａ；後述）にもアクセスすることができる。
【００４３】
図２は実施形態の一例としてのストレージシステム１に形成された論理デバイスを例示する図である。
【００４４】
図２に示す例においては、エージェントノード１０−２（Agt #2）に論理デバイス#2_1，#2_2が接続され、エージェントノード１０−３（Agt #3）に論理デバイス#3_1，#3_2が接続されている。
【００４５】
マネージャノード１０−１（Mgr #1）は、ネットワーク３０を介して、エージェントノード１０−２の論理デバイス#2_1，#2_2およびエージェントノード１０−３の論理デバイス#3_1，#3_2にアクセスすることができる。これにより、マネージャノード１０−１は、エージェントノード１０−２の論理デバイス#2_1，#2_2およびエージェントノード１０−３の論理デバイス#3_1，#3_2を参照することができ、また、変更することができる。
【００４６】
同様に、エージェントノード１０−２は、ネットワーク３０を介してマネージャノード１０−１（Mgr ＃1）やエージェントノード１０−３の論理デバイス#3_1，#3_2にアクセスすることができる。また、エージェントノード１０−３は、ネットワーク３０を介してマネージャノード１０−１（Mgr ＃1）やエージェントノード１０−２の論理デバイス#2_1，#2_2にアクセスすることができる。
【００４７】
各ノード１０の論理デバイスのスタック構成は、複数の異なるコマンドで構築・操作される。
【００４８】
また、本ストレージシステム１に備えられた複数のＪＢＯＤ２０のうち、マネージャノード１０−１に接続されたＪＢＯＤ２０の記憶領域の一部は、ストア２０ａとして用いられる。
【００４９】
ストア２０ａは、不揮発性の記憶領域（不揮発性記憶装置，記憶部）であり、後述するジョブ管理情報２０１，タスク管理情報２０２および不揮発情報管理情報２０３を記憶して永続化する永続化ディスクである。このストア２０ａは、マネージャノード１０−１からの他、複数他のエージェントノード１０からもアクセス可能な外部記憶装置である。ストア２０ａに記憶される情報は、永続化を実現するための情報、すなわち、永続化情報である。データをこのストア２０ａに記憶させることで当該データが永続化される。
【００５０】
各ノード１０は、例えば、サーバ機能を有するコンピュータであり、ＣＰＵ１１，メモリ１２，ディスクインタフェース（Inter Face：Ｉ／Ｆ）１３およびネットワークインタフェース１４を構成要素として有する。これらの構成要素１１〜１４は、図示しないバスを介して相互に通信可能に構成される。
【００５１】
また、本ストレージシステム１において、各エージェントノード１０は、他の一つのエージェントノード１０とＨＡ（High Availability）ペアを構成する。
【００５２】
ＨＡペアにおいては、例えば、一方（パートナー）のエージェントノード１０が停止した場合に、ＨＡペアを構成するもう一方のエージェントノード１０がパートナーの機能をテイクオーバーして引き続きデータを提供することができる。
【００５３】
以下、ＨＡペアを構成するノード１０をＨＡペアノード１０もしくは単にペアノード１０という場合がある。また、各ノード１０は、ＪＢＯＤ２０の記憶領域をストレージ資源として提供する。
【００５４】
ネットワークＩ／Ｆ１４は、ネットワークスイッチ３１を介して他のノード１０と通信可能に接続する通信インタフェースであり、例えば、ＬＡＮ（Local Area Network）インタフェースやＦＣ（Fibre Channel）インタフェースである。
【００５５】
メモリ１２はＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory）を含む記憶メモリである。メモリ１２のＲＯＭには、ＯＳやストレージシステムとしての制御にかかるソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ１２上のソフトウェアプログラムは、ＣＰＵ１１に適宜読み込まれて実行される。また、メモリ１２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。なお、本ストレージシステム１において、複数のノード１０間でメモリ１２は共有されない。
【００５６】
また、特に、マネージャノード１０−１のメモリ１２のＲＡＭの所定の領域には、後述するジョブ管理情報２０１，タスク管理情報２０２および不揮発情報管理情報２０３が格納されてもよい。
【００５７】
例えば、各ノード１０に接続されたＪＢＯＤ２０には、ノード１０をマネージャノード１０−１として機能させるためのマネージャノード用制御プログラム（制御プログラム）が格納される。このマネージャノード用制御プログラムが、例えばＪＢＯＤ２０から読み出され、メモリ１２のＲＡＭに格納（展開）される。
【００５８】
また、ノード１０は、キーボードやマウス等の入力装置（図示省略）や、ディスプレイやプリンタ等の出力装置（図示省略）を備えてもよい。
【００５９】
なお、個々のノード１０に記憶装置を備え、これらの記憶装置にマネージャノード用制御プログラムやエージェントノード用制御プログラムを格納してもよい。
【００６０】
ＣＰＵ１１は、制御ユニット（制御回路）や演算ユニット（演算回路），キャッシュメモリ（レジスタ群）等を内蔵する処理装置（プロセッサ）であり、種々の制御や演算を行なう。ＣＰＵ１１は、メモリ１２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。
【００６１】
そして、ノード１０において、ＣＰＵ１１がマネージャノード用制御プログラムを実行することで、そのノード１０がマネージャノード１０として機能する。
【００６２】
また、マネージャノード１０は、ネットワーク３０を介して、本ストレージシステム１に備えられる他のノード１０（エージェントノード１０）に対して、エージェントノード用制御プログラムの実行モジュールを送信する。すなわち、マネージャノード１０は、各エージェントノード１０に対して、エージェントノード用制御プログラムを送信する。
【００６３】
エージェントノード用制御プログラムは、エージェントノード１０のＣＰＵ１１にタスク処理部１２１，応答部１２２，巻き戻し処理部１２３，ペアノード監視部１２４および不揮発情報削除部１０６（図３参照）としての機能を実現させるためのプログラムである。
【００６４】
具体的には、後述するマネージャノード１０のタスク依頼部１０２が、他のノード１０にタスク実行依頼を送信する際に、このタスク実行依頼に、エージェントノード用制御プログラム）の実行モジュールが付加される。これにより、エージェントノード用制御プログラムを各エージェントノード１０にインストール等させる必要がなく、管理・運用に要するコストを低減することができる。
【００６５】
エージェントノード１０において、ＣＰＵ１１がエージェントノード用制御プログラムを実行することで、そのノード１０がエージェントノード１０として機能する。
【００６６】
なお、上述したマネージャノード用制御プログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００６７】
図３は実施形態の一例としてのストレージシステム１の機能構成を示す図である。
【００６８】
［マネージャノード］
マネージャノード１０−１において、ＣＰＵ１１がマネージャノード用制御プログラムを実行することで、図３に示すように、タスク作成部１０１，タスク依頼部１０２，巻き戻し指示部１０３，永続化処理部１０４，タスク処理状況管理部１０５，ノードダウン処理部１０７および不揮発情報削除部１０６としての機能を実現する。
【００６９】
本ストレージシステム１においては、ユーザからマネージャノード１０−１に対して論理デバイスに対する要求が入力される。
【００７０】
タスク作成部１０１は、ユーザから入力された論理デバイスに対する要求に基づき、複数のタスク（task）を有するジョブ（job）を作成する。
【００７１】
本ストレージシステム１においては、ユーザから入力される要求毎にジョブが作成される。すなわち、マネージャノード１０−１は、ジョブ単位で処理を受け取る。
【００７２】
また、本ストレージシステム１においては、１つのジョブに対して複数のタスクが実行されるものとする。
【００７３】
タスクはノード１０に実行させる一連の複数の処理（コマンド）を備える。コマンドは論理デバイスへの操作の最小単位である。タスクはノード１０毎に作成され、一のタスクに含まれるコマンドは同一のノード１０によって処理される。すなわち、タスクは、１つのジョブを処理するための複数のコマンドを、処理主体のノード１０毎に分けて構成される。
【００７４】
本ストレージシステム１においてはタスク単位でアトミシティを保証するものとする。すなわち、１つのタスク内において、コマンドの実行順序は決められており、先のコマンドの処理が完了しないと次のコマンドの処理は開始されないものとする。
【００７５】
タスク作成部１０１は、ジョブに関するジョブ管理情報２０１を作成する。
【００７６】
図４は実施形態の一例としてのストレージシステム１におけるジョブ管理情報２０１を例示する図である。
【００７７】
この図４に例示するジョブ管理情報２０１は、ジョブを識別するためのジョブ識別子（Job ID）と、ジョブを構成するタスクを識別するタスク識別子とを備える。
【００７８】
図４に例示するジョブ管理情報２０１は、ジョブ識別子（Job ID）が“job #1”であるジョブについて示すものであり、このjob #1は２つのタスク（task #1，task #2）を備える。
【００７９】
また、タスク作成部１０１は、作成するタスク毎にタスク管理情報２０２（図６を用いて後述）を作成する。
【００８０】
図５（ａ），（ｂ）は実施形態の一例としてのストレージシステム１におけるタスクを例示する図であり、図５（ａ）はtask #1を、図５（ｂ）はtask #2をそれぞれ例示する。
【００８１】
図５（ａ），（ｂ）に示すように、タスクは、複数のコマンド（Commands）を備える。
【００８２】
例えば、図５（ａ）に例示するtask #1は、コマンド“create Dev #2_1”および“create Dev #2_2”を備える。すなわち、task #1は、Dev #2_1およびDev #2_2を構築する。
【００８３】
また、図５（ｂ）に例示するtask #2は、３つのコマンド“create Dev #3_1”，“create Dev #3_2”および“create MirrorDev”を備える。すなわち、task #2は、Dev #3_1およびDev #3_2を構築するとともに、MirrorDevを構築する。
【００８４】
また、task #1において、上記のコマンドは、“create Dev #2_1”，“create Dev #2_2”の順で実行され、task #2においては、上記のコマンドは、“create Dev #3_1”，“create Dev #3_2”，“create MirrorDev”の順で実行される。そして、ジョブにおいては、タスク単位でアトミシティが保証される。
【００８５】
また、図５（ａ），（ｂ）においては、タスクを一意に特定するタスク識別子（task ID）と、タスクに含まれるコマンドの実行主体であるノード１０を識別するノード識別情報（Node）と、当該タスクの進捗状況を示すタスク進捗状況情報（Status）とを示している。さらに、図５（ａ），（ｂ）においては、成否を示す成否情報（error）も示している。
【００８６】
これらの情報は、タスク管理情報２０２に記録され、管理される。
【００８７】
図６は実施形態の一例としてのストレージシステム１におけるタスク管理情報２０２を例示する図である。
【００８８】
この図６に例示するタスク管理情報２０２は、図５（ａ），（ｂ）に示すtask #1，task #2に対応する。
【００８９】
タスク管理情報２０２はタスクに関する情報であり、図６に例示するタスク管理情報２０２は、タスクＩＤに対して、コマンド，完了状態および成否（error）を関連付けて構成されている。
【００９０】
タスクＩＤはタスクを一意に特定するタスク識別子（task ID）である。図６に示す例
において、タスクＩＤ“001”は図５（ａ）に示したtask #1を示し、タスクＩＤ“002”
は図５（ｂ）に示したtask #2を示す。
【００９１】
コマンドには、そのタスクに含まれるコマンドが列挙されている。この図６に示すタスク管理情報２０２においては、コマンド本体だけが示されており、引数やオプションは省略されている。
【００９２】
また、後述する巻き戻し処理部１２３（ノードダウン処理部１０７）により、タスクの実行に失敗したエージェントノード１０に対して巻き戻し処理の実行指示が発行された場合には、当該タスクに対応するコマンドの欄に、巻き戻し処理が指示された旨を示す“Rollback”が設定される。
【００９３】
完了状態は、当該タスクの進捗状況を示すタスク進捗状況情報（Status）である。タスク進捗状況情報としては、例えば、未実行の状態であることを示す“To Do”と処理を完了した状態であることを示す“Done”とのいずれかが設定される。
【００９４】
例えば、エージェントノード１０からタスクの完了通知や巻き戻し処理の完了通知（後述）を受信した場合には、後述するタスク処理状況管理部１０５により、タスク管理情報２０２のタスク進捗状況情報は、“To Do”から“Done”に書き換えられる。
【００９５】
また、例えば、後述する巻き戻し指示部１０３からエージェントノード１０に対して巻き戻し指示が送信された場合には、タスク管理情報２０２のタスク進捗状況情報は、タスク処理状況管理部１０５により、“Done”から“To Do”に書き換えられる。
【００９６】
また、以下、タスク管理情報２０２における完了状態（タスク進捗状況情報）をステータスという場合がある。
【００９７】
図６に例示するタスク管理情報２０２において、タスクＩＤ“001”のtask #1は、２つのコマンド“create”を備える。また、完了状態（タスク進捗状況情報）は“Done”であるので、このtask #1は既に実行が完了した状態であることがわかる。
【００９８】
一方、図６に例示するタスク管理情報２０２において、タスクＩＤ“002”のtask #2は、２つのコマンド“create”を実行した後に“create MirrorDev”を実行する。また、タスク進捗状況情報は“To Do”であるので、このtask #2は、エージェントノード１０−３による実行がされていない（未実行）の状態であることがわかる。
【００９９】
成否（error）は、そのタスクに含まれるコマンドの実行中に失敗が生じたかを示す情報である。例えば、そのタスクに含まれるコマンドのいずれかにおいてコマンド実行の失敗が生じた場合には、後述するタスク処理状況管理部１０５により、この成否（error）に、失敗が生じた旨を意味する“True”が設定される。また、そのタスクに含まれるコマンドのいずれにおいてもコマンド実行の失敗が生じていない場合に、この成否（error）に、失敗が生じていない旨を意味する“False”が設定される。
【０１００】
タスク作成部１０１は、本ストレージシステム１に備えられた複数のエージェントノード１０のうち、タスクを実行させる複数のエージェントノード１０を特定して、これらの特定した複数のエージェントノード１０に対して、それぞれタスクを作成してもよい。なお、タスクを実行させるエージェントノード１０は、例えば、複数のエージェントノード１０のうち負荷の低いエージェントノード１０を優先して選択する等、種々の手法を用いて特定することができる。
【０１０１】
タスク作成部１０１によって作成されたタスク管理情報２０２は、メモリ１２の所定の領域に格納される。また、このメモリ１２に格納されたタスク管理情報２０２は、後述する永続化処理部１０４によってストア２０ａに格納されることで永続化される。
【０１０２】
また、タスク管理情報２０２には、そのタスクに含まれるコマンドを実行するノード１０を識別するノード識別情報（Node）が含まれてもよい。
【０１０３】
タスク依頼部１０２は、タスク作成部１０１によって作成されたタスクを、当該タスクの処理主体のエージェンノード１０に送信して、その実行を依頼する。
【０１０４】
例えば、タスク依頼部１０２は、タスク管理情報２０２を参照して、タスク進捗状況が“To Do”となっているタスクを抽出し、そのタスク管理情報２０２のノード識別情報によって特定されるエージェント１０にタスク実行依頼を送信することで、当該タスクの実行を依頼する。
【０１０５】
また、タスク依頼部１０２が各エージェントノード１０に送信するタスク実行依頼には、エージェントノード１０のＣＰＵ１１にタスク処理部１２１，応答部１２２，巻き戻し処理部１２３，ペアノード監視部１２４および不揮発情報削除部１０６としての機能を実現させるためのプログラム（エージェントノード用制御プログラム）の実行モジュールが付加されている。すなわち、タスク依頼部１０２が、各エージェントノード１０に対して、エージェントノード用制御プログラムを送信する。
【０１０６】
また、タスク依頼部１０２は、タスクを依頼していたエージェントノード１０がダウンした場合に、ノードダウン処理部１０７によって選択された他のエージェントノード１０に、ダウンしたノード１０に実行させていたタスクの実行（再実行）を依頼する。
【０１０７】
巻き戻し指示部１０３は、例えば、エージェントノード１０からタスクの実行を失敗した旨の通知（失敗通知）を受信した場合に、そのタスクと同一のジョブに含まれる他のタスクを実行するエージェントノード１０に対して、タスクの実行前の状態に戻す処理（巻き戻し処理，ロールバック処理）を実行させる。
【０１０８】
例えば、図５（ａ），（ｂ）に例示するtask #1，task #2に関して、Agt #3からtask #2の失敗が通知された場合には、巻き戻し指示部１０３は、task #2と同一のjob #1に含まれるtask #1の実行主体であるAgt #2に対して、task #1を実行する前の状態に戻す巻き戻し処理の実行を指示する。
【０１０９】
巻き戻し指示部１０３は、エージェントノード１０に対して、巻き戻し処理の実行を指示する通知（巻き戻し指示，ロールバック指示）を送信する。
【０１１０】
ここで、巻き戻し処理とは、タスクを実行したエージェントノード１０において、当該タスクの実行前の状態に戻すことをいう。
【０１１１】
従って、巻き戻し処理を実現するためには、複数のコマンドを備えるタスクにおいて、各コマンドが可逆性のあるコマンドであることが望ましい。
【０１１２】
例えば、ボリュームを作成するコマンドのように、何らかのものを生成するコマンド（生成系のコマンド）においては、このコマンドを実行することにより生成される生成物（例えば、ボリューム）を削除することで、当該コマンドを実行する前の状態に戻すことができる。このように、コマンドの実行により得られる生成物を単に削除するだけでシステムをコマンドの実行前に戻すことができるコマンドを可逆性のあるコマンドという。
【０１１３】
また、例えば、名前や属性情報等の情報を変更するコマンド（情報変更系のコマンド）についても、変更前の情報に設定し直す（書き換える）ことで、コマンドの実行前の状態に戻すことができる。従って、情報変更系のコマンドも可逆性のあるコマンドに相当する。
【０１１４】
可逆性のあるコマンドにおいては、そのコマンドの実行により得られる生成物を無かったものとする処理（例えば、削除や書き換え）を行なうことで、当該コマンドの実行前の状態に戻すことができる。
【０１１５】
本ストレージシステム１においては、巻き戻し処理部１２３は、このような可逆性のあるコマンドについて、生成物を削除したり情報を設定し直すことで当該コマンドを実行前の状態に戻す巻き戻しを実現する。
【０１１６】
一方、これらの可逆性のあるコマンドに対し、例えば、ボリューム等を削除するコマンド（削除系のコマンド）は、当該コマンドを実行しても生成されるものがなく、また、メモリ１２等のデータが喪失した場合には元の状態に戻せる確証がないことから、コマンドの実行前の状態に戻すことが困難である。このような削除系のコマンドのように、コマンド実行前の状態に戻すことが困難なコマンドを不可逆なコマンドという。
【０１１７】
不可逆なコマンドは、その実行後に、そのコマンドを実行することにより得られる生成物を無かったものとする処理（例えば、削除や書き換え）を行なうことでは、当該コマンドの実行前の状態に戻すことができない。
【０１１８】
巻き戻し指示部１０３は、可逆性のあるコマンドによって構成されているタスクを実行したエージェントノード１０に対して、巻き戻し処理の実行を指示する。
【０１１９】
また、巻き戻し指示部１０３は、いずれかのエージェントノード１０において機能停止（ノードダウン）が発生した場合に、このノードダウンしたエージェントノード１０において実行していたタスクと同一のジョブに含まれる他のタスクを実行するエージェントノード１０に対して、巻き戻し処理を実行させる。なお、以下、ノードダウンしたエージェントノード１０をダウンノード１０という場合がある。
【０１２０】
巻き戻し指示部１０３は、このようなノードダウンの発生による巻き戻し処理の実行をノードダウン処理部１０７からの指示をきっかけに行なう。
【０１２１】
永続化処理部１０４は、タスクに関する情報をストア２０ａに記憶させる処理を行なう。例えば、永続化処理部１０４は、マネージャノード１０−１がユーザからジョブを受け付けると、当該ジョブに関するジョブ管理情報２０１およびタスク管理情報２０２をメモリ１２から読み出し、ストア２０ａに記憶する。また、永続化処理部１０４は不揮発情報管理情報２０３をストア２０ａに記憶する制御を行なってもよい。
【０１２２】
永続化処理部１０４は、タスクに関するエージェントノード１０との処理のやり取りの状態（例えば、成功か失敗か）をストア２０ａに記憶する。これにより、マネージャノード１０がクラッシュした際に、新たなマネージャノード１０がストア２０ａを参照することにより、処理を引き継ぐことができる。
【０１２３】
例えば、永続化処理部１０４は、エージェントノード１０から送信される、タスクの実行結果を報告する応答（成功／失敗）を、当該タスクのタスク識別子に対応付けてストア２０ａに記憶する。
【０１２４】
また、永続化処理部１０４は、エージェントノード１０へ送信した巻き戻し指示に関する情報を、その巻き戻し指示によって処理が取り消されるタスクのタスク識別子に対応付けてストア２０ａに記憶する。
【０１２５】
さらに、永続化処理部１０４は、エージェントノード１０から送信される、巻き戻し指示に対する応答の内容（例えば、タスクの実行が成功したか失敗したか）を示す情報を、当該タスクのタスク識別子に対応付けてストア２０ａに記憶する。
【０１２６】
なお、永続化処理部１０４は、エージェントノード１０において、ジョブを構成する全てのタスクの実行が終了すると、ストア２０ａから、当該ジョブに関連するジョブ管理情報２０１およびタスク管理情報２０２を削除することが望ましい。
【０１２７】
タスク処理状況管理部１０５は、各エージェントノード１０におけるタスクの処理状況を管理する。タスク処理状況管理部１０５は、エージェントノード１０から送信されるタスクの処理完了通知に基づき、タスク管理情報２０２のタスク進捗状況情報を更新する。
【０１２８】
なお、タスク管理情報２０２を構成する情報は、マネージャノード１０−１のメモリ１２に展開（記憶）され、タスク処理状況管理部１０５は、このメモリ１２上において、タスク管理情報２０２の更新等を行なう。
【０１２９】
また、タスク処理状況管理部１０５は、いずれかのエージェントノード１０からペアノードダウン通知が行なわれると、そのダウンノード１０に依頼したタスクをＮＧとして取り扱い、その進捗状況情報をＮＧに更新する。
【０１３０】
さらに、タスク処理状況管理部１０５は、巻き戻し指示部１０３がエージェントノード１０に対して巻き戻し指示を行なった場合に、この指示に応じて、タスク管理情報２０２のタスク進捗状況情報を完了状態（Done ）から、未完了の状態（To Do）に更新する。
【０１３１】
そして、メモリ１２上のタスク管理情報２０２の構成データは、永続化処理部１０４によりストア２０ａに格納され、永続化される。
【０１３２】
図７は実施形態の一例としてのストレージシステム１におけるタスク進捗状況情報の遷移を説明するための図である。
【０１３３】
例えば、エージェントノード１０からタスクの完了通知や巻き戻し処理の完了通知（後述）を受信した場合には、タスク処理状況管理部１０５は、タスク管理情報２０２のタスク進捗状況情報を“To Do”から“Done”に書き換える（図７の符号Ｐ１参照）。
【０１３４】
また、例えば、巻き戻し指示部１０３からエージェントノード１０に対して巻き戻し指示が送信された場合には、タスク処理状況管理部１０５は、タスク管理情報２０２のタスク進捗状況情報を“Done”から“To Do”に書き換える（図７の符号Ｐ２参照）。
【０１３５】
ノードダウン処理部１０７は、いずれかのエージェントノード１０がノードダウンの状態となった場合に、このノードダウンに対する所定の処理を行なう。
【０１３６】
例えば、ノードダウン処理部１０７は、巻き戻し指示部１０３に対して、ダウンノード１０において実行していたタスクと同一のジョブに含まれる他のタスクを実行するエージェントノード１０に対して、巻き戻し処理を実行させる。
【０１３７】
ノードダウン処理部１０７は、いずれかのエージェントノード１０からＨＡペアノード１０がダウンしたことを通知する例外処理（ペアノードダウン通知）を検出（受信）する。
【０１３８】
ノードダウン処理部１０７は、ペアノードダウン通知を検出すると、このダウンノード１０において実行中のタスクが失敗であると判断する。そして、ノードダウン処理部１０７は、ダウンノード１０とは別のエージェントノード１０を選択し、この選択したエージェントノード１０に、タスク依頼部１０２を介して、ダウンノード１０に実行させていたタスクを実行（再実行）させる。
【０１３９】
マネージャノード１０−１において、ペアノードダウン通知は、ネットワーク３０を介してネットワークインタフェース１４により受信される。従って、ネットワークインタフェース１４は、ペアノードダウン通知を受信する受信部に相当する。
【０１４０】
不揮発情報削除部１０６は、本ストレージシステム１の起動時において、自身が機能するノード１０（以下、自ノード１０という場合がある）に記憶されている不要な一時ファイル等の不揮発情報を削除する。
【０１４１】
一般に、ストレージシステムのノードにおいては、内部的に構成管理等の目的で一時ファイルを作成して用いる場合がある。
【０１４２】
図８は従来のストレージシステム（ＳＤＳシステム）５００のエージェントノード５０１において一時ファイルが作成される過程を例示する図である。
【０１４３】
ユーザがマネージャノード５０１−１に対して論理デバイスに対する要求（ジョブ）を入力する（符号Ｓ１参照）。
【０１４４】
この図８に示す例においては、ユーザからミラーリングされたボリュームの作成が要求された場合の処理を示す。
【０１４５】
マネージャノード５０１−１は、この要求に応じて、複数（図８に示す例では７つ）のコマンド（create Dev #2_1，create Dev #2_2，create Dev #3_1，create Dev #3_2，create File #1，create MirrorDevおよびremove File #1を作成する（符号Ｓ２参照）。ここで、create File #1は、一時ファイル“File #1”を作成するコマンドであり、remove create File #1は、一時ファイル“File #1”を削除するコマンドである。
【０１４６】
このような一時ファイルは、例えば、デバイスのサイズ計算のために、補助的に別のコマンドの実行結果（例えば、アドレス情報やデータサイズ、ファイル名等の情報）が必要であり、且つ、その結果を他の処理で使い回したい場合等に用いられる。
【０１４７】
マネージャノード５０１−１は、エージェントノード５０１−２，５０１−３に対して、作成したコマンドの処理を依頼する（符号Ｓ３参照）。
【０１４８】
図８に示す例においては、Agt #2にコマンド“create Dev #2_1”および“create Dev #2_2”の処理が依頼される（符号Ｓ４参照）、また、Agt #3にコマンド“create Dev #3_1”，“create Dev #3_2”，create File #1，“create MirrorDev”および“remove File #1”の処理が依頼される（符号Ｓ５参照）。
【０１４９】
依頼を受けた各エージェントノード５０１−２，５０１−３は、それぞれ依頼されたコマンド（処理）を実行する（符号Ｓ６，Ｓ７参照）。
【０１５０】
ここで、エージェントノード５０１−３が、コマンドcreate MirrorDevの実行途中、すなわちMirrorDevの構築中にダウンした場合には（符号Ｓ８参照）、コマンドremove File #1が実行されないので、エージェントノード５０１−３に作成された一時ファイルFile #1が残存したままとなる。
【０１５１】
ダウンしたエージェントノード５０１−３は、その後、再起動されるが、一時ファイルFile #1を作成していたという情報やMirrorDevの構築中であったことを示す情報は残っていないので、一時ファイルFile #1が削除されない。このような不要な一時ファイル（不揮発ファイル，不揮発情報，不要ファイル）が残り続けることは、記憶装置の領域枯渇等の原因となるおそれがある。
【０１５２】
そこで、本ストレージシステム１においては、不揮発情報削除部１０６は、不揮発情報管理情報２０３を参照して、このような一時ファイルの削除を行なう。
【０１５３】
図９は実施形態の一例としてのストレージシステム１における不揮発情報管理情報２０３を例示する図である。
【０１５４】
この図９に例示する不揮発情報管理情報２０３は、ノード１０を特定する識別情報であるノードIDに対して、不揮発情報の格納位置を示すファイルパスを関係付けている。
【０１５５】
各ノード１０において、後述するタスク処理部１２１は、一時ファイルの作成を行なう場合に、その一時ファイルの格納位置（ファイルパス）を不揮発情報管理情報２０３に、自ノード１０のノードIDに対応付けて記録する。
【０１５６】
この不揮発情報管理情報２０３はマネージャノード１０−１のストア２０ａに格納され、各ノードの不揮発情報削除部１０６はこの不揮発情報管理情報２０３を参照することで、自ノード１０における不揮発情報の格納位置を取得することができる。
【０１５７】
不揮発情報管理情報２０３においては、一つのノードIDに対して複数の不揮発ファイルの格納位置を関係付けてもよい。
【０１５８】
不揮発情報削除部１０６は、自ノード１０の起動時において、ストア２０ａの不揮発情報管理情報２０３にアクセスして、自ノード１０の不揮発情報の格納位置を取得し、この不揮発情報（不要ファイル）を削除する。
【０１５９】
［エージェントノード］
エージェントノード１０−２〜１０−６において、ＣＰＵ１１がエージェントノード用制御プログラム（実行モジュール）を実行することで、図３に示すように、タスク処理部１２１，応答部１２２，巻き戻し処理部１２３，ペアノード監視部１２４および不揮発情報削除部１０６としての機能を実現する。
【０１６０】
タスク処理部１２１は、マネージャノード１０−１のタスク依頼部１０２から実行を依頼されたタスクを実行する。すなわち、タスク依頼部１０２は、実行を依頼されたタスクに含まれる複数のコマンドを、その処理順序に従って実行する。
【０１６１】
また、タスク処理部１２１は、一時ファイルの作成を行なう場合に、その一時ファイルの格納位置（ファイルパス）を不揮発情報管理情報２０３に、自ノード１０のノードIDに対応付けて記録する。
【０１６２】
巻き戻し処理部１２３は、自ノード１０の状態を、タスク処理部１２１がタスクを実行する前の状態に戻す巻き戻し処理を行なう。
【０１６３】
巻き戻し処理部１２３は、例えば、マネージャノード１０−１の巻き戻し指示部１０３から巻き戻し処理の実行を指示する巻き戻し指示を受信した場合に、巻き戻し処理を行なう。
【０１６４】
巻き戻し処理部１２３は、可逆性のあるコマンドによって実行された処理（実行結果）を、実行前の状態戻す巻き戻し処理を行なう。
【０１６５】
すなわち、ボリューム作成等の生成系のコマンドについては、このコマンドを実行することにより生成される生成物（例えば、ボリューム）を削除することで、当該コマンドを実行する前の状態に戻す。また、名前や属性情報等の情報を変更する情報変更系のコマン
ドについては、変更前の情報に設定し直すことで、コマンドの実行前の状態に戻す。
【０１６６】
また、巻き戻し処理部１２３は、タスク処理部１２１によるタスクの実行に際して、タスク処理部１２１がタスクに含まれるいずれかのコマンドの実行に失敗した場合に、巻き戻し処理を行なってもよい。
【０１６７】
例えば、巻き戻し処理部１２３は、タスクに含まれる複数のコマンドのうち、いずれかのコマンドの実行に失敗した場合には、当該タスクにおいて、その実行に失敗したコマンドよりも前に実行した全てのコマンドの処理を取り消す。例えば、実行に失敗したコマンドよりも前に実行したコマンドが、デバイスの作成である場合には、巻き戻し処理部１２３は、作成したデバイスを削除することで、コマンド実行前の状態に戻す。
【０１６８】
なお、生成系や情報変更系以外のコマンドであっても、例えば、アンドゥやキャンセル等の特定のコマンドを実行することでコマンド実行前の状態に容易に戻すことができる場合には、このようなコマンドに巻き戻し処理を行なってもよく、種々変形して実施することができる。
【０１６９】
例えば、図５（ｂ）に例示するタスク（task #2）は、エージェントノード１０−３（Agt #3）により実行されるべきものであり、３つのコマンド“create Dev #3_1”，“create Dev #3_2”および“create MirrorDev”をこの順で実行する。
【０１７０】
エージェントノード１０−３（Agt #3）において、タスク処理部１２１がこのタスク（task #2）を実行する過程において、例えば、コマンド“create Dev #3_2”の実行に失敗した例について考える。このような場合には、エージェントノード１０−３（Agt #3）において、巻き戻し処理部１２３は、このコマンド“create Dev #3_2”よりも前に実行した全てのコマンド“create Dev #3_1”の処理を取り消す。これにより、エージェントノード１０−３（Agt #3）を、タスク（task #2）を実行する前の状態に戻すことができる。
【０１７１】
また、巻き戻し処理部１２３は、不可逆なコマンドによって実行された処理については、マネージャノード１０−１の巻き戻し指示部１０３から巻き戻し指示を受けても、当該巻き戻し処理は行なわずに無視する。
【０１７２】
応答部１２２は、タスク処理部１２１によってタスクの処理が完了された場合に、マネージャノード１０−１に対してタスクの処理完了を通知する。
【０１７３】
応答部１２２は、タスクに含まれる全てのコマンドの処理がタスク処理部１２１によって実行され、タスク単位の処理が完了したタイミングで完了通知を送信する。すなわち、応答部１２２は、コマンド単位での処理の完了通知を送信するのではなく、タスク単位での処理の完了通知を送信する。
【０１７４】
また、応答部１２２は、タスク処理部１２１によるタスクの実行に際して、タスク処理部１２１がタスクに含まれるいずれかのコマンドの実行に失敗した場合には、マネージャノード１０−１に対して、タスクの実行の失敗を通知する。この際、応答部１２２は、巻き戻し処理部１２３よる巻き戻し処理が実行された後に、マネージャノード１０−１にタスクの実行の失敗を通知することが望ましい。
【０１７５】
従って、応答部１２２は、タスクに含まれる一連の複数の処理（コマンド）についての実行が全て正常完了したことを示す第１の通知を応答する第１応答部として機能する。
【０１７６】
また、応答部１２２は、タスク処理部１２１が不可逆なコマンドの実行を失敗した場合に、マネージャノード１０−１に対して、コマンド失敗の通知を抑止する。これにより、マネージャノード１０−１へはコマンドの実行失敗の通知が行なわれず、結果として、マネージャノード１０−１においてコマンドの実行が成功したものとして取り扱われる。
【０１７７】
すなわち、不可逆なコマンドの実行を失敗した場合に、応答部１２２は、マネージャノード１０−１に対して、コマンド実行が成功したように擬制する。不可逆なコマンドとは、前述の如く、例えばボリュームの削除である。
【０１７８】
エージェントノード１０は、不可逆なコマンドについては、処理が失敗しても、失敗の通知をマネージャノード１０に通知することなく、そのままにして次の処理を実行する。応答部１２２部は、処理が全て成功した旨をマネージャに応答する。また、当該コマンドを含むタスクについて、マネージャノード１０から巻き戻し処理の指示を受けても、当該指示を無視して、巻き戻し処理の実行を抑止する。
【０１７９】
一度エージェントノード１０が開始した処理は、マネージャノード１０が関与することなく、異常な状態になったとしても、成功もしくは失敗のどちらかの状態で完了できる。
【０１８０】
これにより、マネージャノード１０においては、エラー処理による待ち合わせが不要となり、マネージャノード１０の負荷を軽減することができる。また、マネージャノード１０は、エラー処理による待ち合わせ等が不要となるので、他の処理を実行することができ、効率的な処理を実現することができる。
【０１８１】
以下、エージェントノード１０においてコマンド処理が失敗しても、応答部１２２が失敗の通知をマネージャノード１０に通知することを抑止し、あたかも当該コマンド実行が成功したように擬制することを、矯正コミットという場合がある。
【０１８２】
なお、エージェントノード１０においてコマンド処理が失敗したことは、別途システムログ等に記録として残る。従って、エージェントノード１０の応答部１２２が失敗の通知をマネージャノード１０に通知しないことによる問題は生じない。
【０１８３】
また、本ストレージシステム１において、エージェントノード１０が処理を実行中にマネージャノード１０がダウンした場合には、以下の処理が行なわれる。
【０１８４】
すなわち、マネージャノード１０−１がクラッシュした際は、いずれかのエージェントノード１０が、新たなマネージャノード１０（新マネージャノード１０）となる。
【０１８５】
ここで、マネージャノード１０においては、上述の如く、永続化処理部１０４が、タスクに関するエージェントノード１０との処理のやり取りの状態をストア２０ａに記憶する。
【０１８６】
新マネージャノード１０は、ストア２０ａを参照することにより、ダウンしたマネージャノード１０の処理を引き継ぐことができる。
【０１８７】
また、応答部１２２は、巻き戻し指示部１０３による巻き戻し処理が完了した場合にも、マネージャノード１０−１に対して、完了通知を応答する。
【０１８８】
従って、応答部１２２は、巻き戻し処理の実行が正常完了したら第２の通知を応答する第２応答部として機能する。
【０１８９】
ペアノード監視部１２４は、自ノード１０に対するペアノード１０を監視する。ペアノード監視部１２４は、ペアノード１０のノードダウンを検知すると、マネージャノード１０にペアノードダウン通知を行なう。このペアノードダウン通知は例外処理として行なうことが望ましい。ペアノードダウン通知には、例えば、ノードダウンしたノード１０のノードIDと、ノードダウンの発生を示す関数を含んでもよい。以下、例外処理として行なうペアノードダウン通知をノードダウン例外という場合がある。
【０１９０】
なお、ペアノードのノードダウンの検知は、既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。
【０１９１】
不揮発情報削除部１０６は、本ストレージシステム１の起動時において、自身が機能するノード１０（以下、自ノード１０という場合がある）に記憶されている不要な一時ファイル等の不揮発情報を削除する。
【０１９２】
なお、エージェントノード１０における不揮発情報削除部１０６としての機能は、マネージャノード１０における不揮発情報削除部１０６と同様であるので、その詳細な説明は省略する。
【０１９３】
（Ｂ）動作
【０１９４】
［起動時の各ノードの処理］
先ず、上述の如く構成された実施形態の一例としてのストレージシステム１における各ノード１０の起動時における不揮発情報削除部１０６の処理を、図１０に示すフローチャート（ステップＡ１〜Ａ５）に従って説明する。以下の処理は、マネージャノード１０およびエージェントノード１０のそれぞれにおいて行なわれる。
【０１９５】
例えば、ノード１０に電源投入を行なうと、ステップＡ１において、不揮発情報削除部１０６が、ストア２０ａに格納されている不揮発情報管理情報２０３を確認する。
【０１９６】
ステップＡ２において、不揮発情報管理情報２０３における自ノード１０のノードIDに対応付けられた全ての不揮発ファイルに対して、ステップＡ５までの制御を繰り返し実施するループ処理を開始する。
【０１９７】
ステップＡ３において、不揮発情報削除部１０６は、不揮発情報管理情報２０３において自ノード１０のノードIDに対応付けられたファイルパスによって示される不要ファイルを削除する。
【０１９８】
ステップＡ４において、不揮発情報削除部１０６は、タスク管理情報２０２から完了していないタスクを削除する。
【０１９９】
その後、制御がステップＡ５に進む。ステップＡ５では、ステップＡ２に対応するループ端処理が実施される。ここで、自ノード１０のノードIDに対応付けられた全ての不揮発ファイルについての処理が完了すると、本フローが終了する。
【０２００】
ノード１０の起動時に不揮発情報削除部１０６が不要ファイルの削除を行なうことで、不揮発情報管理情報２０３によって格納位置が示される不揮発ファイルは未使用状態であることが担保される。すなわち、使用中のファイルを誤削除してしまうことを抑止し、安全に不揮発ファイルを削除することができる。
【０２０１】
［マネージャノードの処理］
次に、実施形態の一例としてのストレージシステム１におけるマネージャノード１０−１の処理を、図１１に示すフローチャート（ステップＢ１〜Ｂ１５）に従って説明する。
【０２０２】
ステップＢ１において、マネージャノード１０−１において、タスク作成部１０１は、ユーザから入力された要求に基づいてジョブおよび当該ジョブに含まれる複数のタスクを作成する。タスク処理部１２１は、作成したジョブに関する情報をジョブ管理情報２０１に登録（ジョブ登録）する。また、タスク作成部１０１は、作成したタスクに関する情報をタスク管理情報２０２に登録する。
【０２０３】
ステップＢ２において、タスク依頼部１０２は、作成した複数のタスクについて、それぞれエージェントノード１０に処理を依頼する。タスク依頼部１０２は、例えば、タスクとともに処理を依頼するメッセージをエージェントノード１０に送信することで処理依頼を行なう。
【０２０４】
ステップＢ３において、ノードダウン処理部１０７は、いずれかのエージェントノード１０からペアノードダウン通知の例外処理を検知（捕捉）したかを確認する。
【０２０５】
ノードダウンの例外処理を捕捉していない場合には（ステップＢ３のＮＯルート参照）、ステップＢ４に移行する。
【０２０６】
ステップＢ４において、タスク処理状況管理部１０５は、タスクの実行を依頼したエージェントノード１０から実行を依頼したタスクに関する応答通知メッセージ（メッセージ）を受信する。エージェントノード１０からの応答通知メッセージには、タスクの処理が完了した旨（ＯＫ）の通知、もしくは、タスクの処理に失敗した旨（ＮＧ）の通知が含まれる。
【０２０７】
ステップＢ５において、タスク処理状況管理部１０５は、受信したメッセージに基づき、タスク管理情報２０２の成否の情報（タスク進捗状況情報）を更新する。更新されたタスク管理情報２０２は、永続化処理部１０４によりストア２０ａに格納され、永続化されることが望ましい。
【０２０８】
ステップＢ６において、タスク処理状況管理部１０５は、エージェントノード１０から受信した応答通知メッセージがタスクの処理を完了した旨（ＯＫ）の通知であるかを確認する。
【０２０９】
確認の結果、受信した応答通知メッセージが処理完了（ＯＫ）を通知するものではない場合には（ステップＢ６のＮＯルート参照）、ステップＢ７に移行する。
【０２１０】
ステップＢ７において、タスク処理状況管理部１０５はタスク管理情報２０２を更新する。例えば、タスク処理状況管理部１０５は、タスク管理情報２０２の成否の情報（タスク進捗状況情報）に失敗を示す値（False）を登録する。
【０２１１】
また、タスク処理状況管理部１０５は、タスク管理情報２０２に、巻き戻し処理を指示した旨の情報を書き込む。更新されたタスク管理情報２０２は、永続化処理部１０４によりストア２０ａに格納され、永続化されることが望ましい。
【０２１２】
ステップＢ８において、巻き戻し指示部１０３が、エージェントノード１０に対して巻き戻し指示を通知する。
【０２１３】
なお、これらのステップＢ７，Ｂ８の順序はこれに限定されるものではない。例えば、ステップＢ７の処理とステップＢ８の処理との順序を入れ替えてもよく、また、これらのステップＢ７の処理とステップＢ８の処理とを並行して実行してもよい。その後、ステップＢ１０に移行する。
【０２１４】
また、ステップＢ６における確認の結果、受信した応答通知メッセージが処理完了（ＯＫ）を通知するものである場合には（ステップＢ６のＹＥＳルート参照）、ステップＢ９に移行する。
【０２１５】
ステップＢ９においては、タスク処理状況管理部１０５は、ステップＢ２においてタスクの実行を依頼した全てのエージェントノード１０から応答完了メッセージを受信したかを確認する。
【０２１６】
確認の結果、応答完了メッセージを受信していないエージェントノード１０がある場合には（ステップＢ９のＮＯルート参照）、ステップＢ３に戻る。一方、全てのエージェントノード１０から応答完了メッセージを受信した場合には（ステップＢ９のＹＥＳルート参照）、ステップＢ１０に移行する。
【０２１７】
ステップＢ１０において、永続化処理部１０４は、ストア２０ａから処理を完了したjob#1に関するジョブ管理情報２０１およびタスク管理情報２０２を削除する。その後、処理を終了する。
【０２１８】
また、ステップＢ３における確認の結果、ノードダウンの例外処理を捕捉した場合には（ステップＢ３のＹＥＳルート参照）、ステップＢ１１に移行する。
【０２１９】
ステップＢ１１において、タスク処理状況管理部１０５は、ダウンノード１０に依頼したタスクをＮＧとし、ステップＢ１２において、タスク管理情報２０２に当該タスクの進捗状況情報をＮＧに更新する書き込みを行なう。
【０２２０】
また、タスク処理状況管理部１０５は、ステップＢ１３において、ダウンノード１０に依頼したタスクに関連するタスクであって、完了（処理が成功）しているタスクについて、タスク管理情報２０２に当該タスクの進捗状況情報を巻き戻し指示を示す状態に更新する書き込みを行なう。
【０２２１】
例えば、タスク処理状況管理部１０５は、タスク管理情報２０２における当該タスクに対して、完了状態（進捗状況情報）を“To Do”に変更するとともに、コマンド“Rollback”の発行状態に変更する。
【０２２２】
その後、ステップＢ１４において、巻き戻し指示部１０３が、ダウンノード１０に依頼したタスクに関連するタスクを実行したエージェントノード１０に対して巻き戻し指示を発行する。
【０２２３】
また、ステップＢ１５において、タスク依頼部１０２は、ダウンしていない他のエージェントノード１０を選択し、この選択したエージェントノード１０を指定して、ダウンノード１０に依頼していたタスクを実行（再実行）させる。その後、処理がステップＢ２に戻る。
【０２２４】
［ノードダウン発生時の各ノードの処理］
次に、実施形態の一例としてのストレージシステム１におけるノードダウン発生時の処理を図１２に示すフローチャート（ステップＣ１〜Ｃ２０）に従って説明する。
【０２２５】
図１２においても、ユーザからの要求に応じてミラーリングされたボリュームを作成する例について示し、エージェントノード１０−３（Agt #3）がタスク（task #2）の実行途中でダウンした場合について示す。また、エージェントノード１０−４（Agt #4）とエージェントノード１０−３（Agt #3）とがＨＡペアを構成しているものとする。すなわち、エージェントノード１０−４（Agt #4）がエージェントノード１０−３（Agt #3）のＨＡペアノード１０である。
【０２２６】
タスク管理情報２０２の初期状態においては、各タスクの完了状態として“To Do”が設定されており、また、成否（error）として“False”が設定されている。
【０２２７】
マネージャノード１０−１（Mgr #1）において、ミラーリングされたボリュームの作成処理が開始される。
【０２２８】
ステップＣ１において、マネージャノード１０−１において、タスク作成部１０１が、task #1，task #2を含むジョブ（job #1）を作成する（符号Ｑ１，Ｑ２参照）。永続化処理部１０４が、この作成されたジョブおよびタスクの情報をストア２０ａに格納して永続化する。
【０２２９】
ステップＣ２において、マネージャノード１０−１のタスク依頼部１０２が、エージェントノード１０−２（Agt #2）にtask #1の実行を依頼する。
【０２３０】
この依頼に応じて、エージェントノード１０−２（Agt #2）において、タスク処理部１２１が、task #1の処理を開始する。すなわち、エージェントノード１０−２（Agt #2）において、task #1に含まれる複数のコマンドが順次実行される。
【０２３１】
タスク処理部１２１は、task #1として、Dev #2_1およびDev #2_2を構築して（ステップＣ９，Ｃ１０）、処理を終了する。タスク処理部１２１によるtask #1の処理が完了すると、応答部１２２が、マネージャノード１０−１に対して、task #1の処理の完了通知を送信する。
【０２３２】
ステップＣ３において、エージェントノード１０−２（Agt #2）の応答部１２２からtask #1の処理完了通知を受信したマネージャノード１０−１のタスク処理状況管理部１０５は、タスク管理情報２０２におけるtask #1の完了状態（ステータス）に“Done”を設定する。
【０２３３】
また、マネージャノード１０−１のタスク処理状況管理部１０５は、タスク管理情報２０２におけるtask #2の完了状態に“To Do”を設定する。そして、ステップＣ４において、マネージャノード１０−１のタスク依頼部１０２が、エージェントノード１０−３（Agt #3）にtask #2の実行を依頼する。
【０２３４】
この依頼に応じて、エージェントノード１０−３（Agt #3）において、タスク処理部１２１が、task #2の処理を開始する。すなわち、エージェントノード１０−３（Agt #3）において、task #2に含まれる複数のコマンドが順次実行される。
【０２３５】
タスク処理部１２１は、task #2 として、Dev #3_1を構築した後（ステップＣ１１）、Dev #3_2を構築する（ステップＣ１２）。また、タスク処理部１２１は、File #1を作成する（ステップＣ１３）。
【０２３６】
その後、タスク処理部１２１は、MirrorDevの構築を開始するが、その途中でエージェントノード１０−３（Agt #3）がダウンする（符号Ｐ３参照）。
【０２３７】
ステップＣ１４において、エージェントノード１０−３（Agt #3）のＨＡペアノード１０であるエージェントノード１０−４（Agt #4）において、ペアノード監視部１２４がエージェントノード１０−３（Agt #3）のダウンを検知する。
【０２３８】
ステップＣ１５において、エージェントノード１０−４のペアノード監視部１２４は、マネージャノード１０−１に対して、エージェントノード１０−３（Agt #3）のダウンを通知する。その後、エージェントノード１０−４における処理を終了する。
【０２３９】
ステップＣ５において、マネージャノード１０−１は、エージェントノード１０−４（Agt #4）からのノードダウン例外を捕捉する。このように、マネージャノード１０−１は、エージェントノード１０−３に対するタイムアウトエラーを検出する前に、エージェントノード１０−４からのノードダウン例外を捕捉することで、タスク実行の失敗を判断することができる。
【０２４０】
ステップＣ６において、マネージャノード１０−１のタスク処理状況管理部１０５は、タスク管理情報２０２におけるtask #2の成否（error）に“True”を設定することで、task #2をエラー状態に設定する。
【０２４１】
マネージャノード１０−１においては、巻き戻し指示部１０３が、ノードダウンの発生により失敗と判断したタスク以外のタスクの巻き戻しを行なう。巻き戻し指示部１０３は、ダウンノード１０であるエージェントノード１０−３（Agt #3）に依頼していたtask #2と同じジョブに基づいて作成されたtask #1を特定する。巻き戻し指示部１０３は、タスク管理情報２０２におけるtask #1のステータスをTo Doにするとともに、コマンドをRollbackにする。
【０２４２】
ステップＣ７において、マネージャノード１０−１の巻き戻し指示部１０３は、task #1を実行したエージェントノード１０−２に対して、task #1の巻き戻し処理を指示する。これにより、エージェントノード１０−２において巻き戻し処理が開始される。
【０２４３】
ステップＣ１６において、エージェントノード１０−２の巻き戻し処理部１２３は、Dev #2_2を削除し、その後、ステップＣ１７において、Dev #2_1を削除する。このように、巻き戻し処理部１２３は、タスクの巻き戻し処理を行なう際には、タスクに含まれる複数のコマンドによる実行結果を、実行順序とは逆の順番で削除することが望ましい。その後、エージェントノード１０−２における処理を終了する。
【０２４４】
一方、マネージャノード１０−１においては、ステップＣ８において、タスク処理状況管理部１０５が、タスク管理情報２０２において、task #1のステータスをDoneに書き換える。
【０２４５】
このように、エージェントノード１０−３がタスクの実行中にダウンすることで、依頼されたジョブは失敗となる。
【０２４６】
なお、その後、マネージャノード１０−１のノードダウン処理部１０７は、ダウンノード１０とは別のエージェントノード１０を選択し、この選択したエージェントノード１０に、タスク依頼部１０２を介して、ダウンノード１０に実行させていたタスクを実行（再実行，リトライ）させる。
【０２４７】
なお、ダウンノード１０に実行させていたタスクのリトライが完了すると、タスク処理状況管理部１０５は、タスク管理情報２０２からjob #1に関するタスクを削除する。また、マネージャノード１０−１において、永続化処理部１０４が、ストア２０ａからjob #1に関する情報を削除する。マネージャノード１０−１は、ユーザに対してミラーボリュームの作成の完了を通知して、処理を終了する。
【０２４８】
また、ダウンしていたエージェントノード１０−３の再起動が行なわれる。ステップＣ１８において、不揮発情報削除部１０６が、ストア２０ａの不揮発情報管理情報２０３を参照することで、自ノード１０に不揮発ファイルが存在することを把握し、その格納位置を取得する。
【０２４９】
ステップＣ１９において、不揮発情報削除部１０６は、自ノード１０における不揮発ファイルを削除する。
【０２５０】
エージェントノード１０−３においては、ストア２０ａからtask #2を削除し（ステップＣ２０）、その後、装置起動のための各種処理を行なう。
【０２５１】
（Ｃ）効果
このように、実施形態の一例としてのストレージシステム１においては、エージェントノード１０において、ペアノード監視部１２４がＨＡペアノード１０がダウンしたことを検知すると、マネージャノード１０に対して、ペアノードダウン通知の例外処理を行なう。
【０２５２】
マネージャノード１０のノードダウン処理部１０７においては、エージェントノード１０からペアノードダウン通知を例外通知としてタスク実行中に受け取ることで、その場でタスクの失敗を判断することができる。すなわち、マネージャノード１０において、タイムアウトエラーの検出を待つことなくタスクの失敗を検出することができる。これにより、ノードダウンに対する応答時間を短縮することができ、また、不要なリトライを行なうためのコストを削減することができる。また、ノードダウン中の無駄な通信処理のコストが無くなり、実行中の処理の切り替え処理を高速化できる。すなわち、エージェントノード１０がダウンした場合に迅速に対処でき、エージェントノード１０のダウン時の応答時間・処理コストを削減することができる。
【０２５３】
また、ノードダウンが発生したノード１０において、その起動時に不揮発情報削除部１０６が不揮発情報管理情報２０３を参照して、不揮発ファイルの格納位置を把握して削除する。これにより、ノード１０において不要な一時ファイルを削除することができる。これにより、ディスク枯渇やデータ不整合の発生を防止することができ、信頼性を向上させることができる。
【０２５４】
また、ノード１０の起動時に不揮発情報削除部１０６が不要ファイルの削除を行なうことで、不揮発情報管理情報２０３によって格納位置が示される不揮発ファイルは未使用状態であることが担保される。すなわち、使用中のファイルを誤削除してしまうことを抑止し、安全に不揮発ファイルを削除することができる。
【０２５５】
不揮発情報管理情報２０３をストア２０ａに記憶することで、各ノード１０において不揮発情報削除部１０６が不揮発情報管理情報２０３を参照して、自ノード１０における不揮発ファイルを容易に確認することができる。
【０２５６】
（Ｄ）その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０２５７】
例えば、本ストレージシステム１に備えられるノード１０の数は６つに限定されるものではなく、５つ以下もしくは７つ以上のノード１０を備えてもよい。
【０２５８】
上述した実施形態においては、マネージャノード１０−１（タスク依頼部１０２）が、エージェントノード１０−２〜１０−６に対して、タスク実行依頼ともにエージェントノード用制御プログラムの実行モジュールを送信しているが、これに限定されるものではない。
【０２５９】
すなわち、ＪＢＯＤ２０等の記憶装置に、ノード１０をエージェントノード１０として機能させるためのエージェントノード用制御プログラムを記憶し、ノード１０がこのエージェントノード用プログラムをＪＢＯＤ２０から読み出して実行することで、エージェントノード１０としての各機能を実現させてもよい。
【０２６０】
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０２６１】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０２６２】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０２６３】
（付記１）
複数のサーバノードと、前記複数のサーバノードを管理するマネージャノードとを備える情報処理システムにおいて、
前記複数のサーバノードのうち一のサーバノードに、
当該一のサーバノードとペアを構成するサーバノードを監視し、前記ペアを構成するサーバノードのダウンを検知すると前記マネージャノードにペアノードダウン通知を発行するペアノード監視部を備え、
前記マネージャノードに、
前記ペアノードダウン通知を受信すると、ノードダウン対応処理を実行するノードダウン処理部を備える
ことを特徴とする、情報処理システム。
【０２６４】
（付記２）
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理に関連する、その他の実行に成功した処理を、実行前の状態に戻す処理の実行指示を行なう
ことを特徴とする、付記１記載の情報処理システム。
【０２６５】
（付記３）
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理を、前記複数のサーバノードのうち、他のサーバノードに実行させる実行指示を行なう
ことを特徴とする、付記１または２記載の情報処理システム。
【０２６６】
（付記４）
前記複数のサーバノードもしくは前記マネージャノードの起動時において、前記処理の実行に伴って生成される不揮発情報の格納位置を示す管理情報を参照して、前記不揮発情報を削除する不揮発情報削除部を備える
ことを特徴とする、付記１〜３のいずれか１項に記載の情報処理システム。
【０２６７】
（付記５）
複数のサーバノードを管理する情報処理装置であって、
前記複数のサーバノードのうち一のサーバノードから、当該一のサーバノードとペアを構成するサーバノードのダウンを通知するペアノードダウン通知を受信する受信部と、
前記ペアノードダウン通知を受信するとノードダウン対応処理を実行するノードダウン処理部とを備える
ことを特徴とする、情報処理装置。
【０２６８】
（付記６）
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理に関連する、その他の実行に成功した処理を、実行前の状態に戻す処理の実行指示を行なう
ことを特徴とする、付記５記載の情報処理装置。
【０２６９】
（付記７）
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理を、前記複数のサーバノードのうち、他のサーバノードに実行させる実行指示を行なう
ことを特徴とする、付記５または６記載の情報処理装置。
【０２７０】
（付記８）
当該マネージャノードの起動時において、前記処理の実行に伴って生成される不揮発情報の格納位置を示す管理情報を参照して、前記不揮発情報を削除する不揮発情報削除部を備える
ことを特徴とする、付記５〜７のいずれか１項に記載の情報処理装置。
【０２７１】
（付記９）
複数のサーバノードを管理する情報処理装置のプロセッサに、
前記複数のサーバノードのうち一のサーバノードから、当該一のサーバノードとペアを構成するサーバノードのダウンを通知するペアノードダウン通知を受信するとノードダウン対応処理を実行する
処理を実行させることを特徴とする、制御プログラム。
【０２７２】
（付記１０）
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理に関連する、その他の実行に成功した処理を、実行前の状態に戻す処理の実行指示を行なう
処理を、前記プロセッサに実行させることを特徴とする、付記９記載の制御プログラム。
【０２７３】
（付記１１）
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理を、前記複数のサーバノードのうち、他のサーバノードに実行させる実行指示を行なう
処理を前記プロセッサに実行させることを特徴とする、付記９または１０記載の制御プログラム。
【０２７４】
（付記１２）
当該マネージャノードの起動時において、前記処理の実行に伴って生成される不揮発情報の格納位置を示す管理情報を参照して、前記不揮発情報を削除する
処理を前記プロセッサに実行させることを特徴とする、付記９〜１１のいずれか１項に記載の制御プログラム。
【符号の説明】
【０２７５】
１    ストレージシステム
１０−１〜１０−６，１０    コンピュータノード，ノード
１１    ＣＰＵ
１２    メモリ
１３    ディスクインタフェース
１４    ネットワークインタフェース
２０    ＪＢＯＤ
２０ａ    ストア
３０    ネットワーク
３１    ネットワークスイッチ
１０１    タスク作成部
１０２    タスク依頼部
１０３    巻き戻し指示部
１０４    永続化処理部
１０５    タスク処理状況管理部
１０６    不揮発情報削除部
１０７    ノードダウン処理部
１２１    タスク処理部
１２２    応答部
１２３    巻き戻し処理部
１２４    ペアノード監視部
２０１    ジョブ管理情報
２０２    タスク管理情報
２０３    不揮発情報管理情報
【図１】
2020008999.tif 000003
【図２】
2020008999.tif 000004
【図３】
2020008999.tif 000005
【図４】
2020008999.tif 000006
【図５】
2020008999.tif 000007
【図６】
2020008999.tif 000008
【図７】
2020008999.tif 000009
【図８】
2020008999.tif 000010
【図９】
2020008999.tif 000011
【図１０】
2020008999.tif 000012
【図１１】
2020008999.tif 000013
【図１２】
2020008999.tif 000014
【図１３】
2020008999.tif 000015
【図１４】
2020008999.tif 000016
【手続補正書】
【提出日】令和1年8月13日(2019.8.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のサーバノードと、前記複数のサーバノードを管理するマネージャノードとを備える情報処理システムにおいて、
前記複数のサーバノードのうち一のサーバノードに、
当該一のサーバノードとペアを構成するサーバノードを監視し、前記ペアを構成するサーバノードのダウンを検知すると前記マネージャノードにペアノードダウン通知を発行するペアノード監視部と、
可逆性のあるコマンドについて、前記コマンドにより生成された生成物を削除する、または、前記コマンドにより変更された情報を変更前の情報に設定し直すことで、前記コマンドを実行前の状態に戻す巻き戻し処理を実現する巻き戻し処理部とを備え、
前記マネージャノードに、
前記ペアノードダウン通知を受信すると、ノードダウン対応処理を実行するノードダウン処理部を備え、
前記ノードダウン処理部が、
前記ノードダウン対応処理として、前記コマンドを実行したサーバノードに対して、前記巻き戻し処理の実行を指示する
ことを特徴とする、情報処理システム。
【請求項２】
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理に関連する、その他の実行に成功した処理を、実行前の状態に戻す処理の実行指示を行なう
ことを特徴とする、請求項１記載の情報処理システム。
【請求項３】
前記ノードダウン処理部が、
前記ノードダウン対応処理として、ダウンしたサーバノードが実行していた処理を、前記複数のサーバノードのうち、他のサーバノードに実行させる実行指示を行なう
ことを特徴とする、請求項１または２記載の情報処理システム。
【請求項４】
前記複数のサーバノードもしくは前記マネージャノードの起動時において、ダウンしたサーバノードが実行していた前記処理の実行に伴って生成される不揮発情報の格納位置を示す管理情報を参照して、前記不揮発情報を削除する不揮発情報削除部を備える
ことを特徴とする、請求項２または３のいずれか１項に記載の情報処理システム。
【請求項５】
複数のサーバノードを管理する情報処理装置であって、
前記複数のサーバノードのうち一のサーバノードから、当該一のサーバノードとペアを構成するサーバノードのダウンを通知するペアノードダウン通知を受信する受信部と、
前記ペアノードダウン通知を受信するとノードダウン対応処理を実行するノードダウン処理部とを備え、
前記ノードダウン処理部が、
前記ノードダウン対応処理として、可逆性のあるコマンドを実行したサーバノードに対して、前記コマンドにより生成された生成物を削除する、または、前記コマンドにより変更された情報を変更前の情報に設定し直すことで、前記コマンドを実行前の状態に戻す巻き戻し処理の実行を指示する
ことを特徴とする、情報処理装置。
【請求項６】
複数のサーバノードを管理する情報処理装置のプロセッサに、
前記複数のサーバノードのうち一のサーバノードから、当該一のサーバノードとペアを構成するサーバノードのダウンを通知するペアノードダウン通知を受信すると、
可逆性のあるコマンドを実行したサーバノードに対して、前記コマンドにより生成された生成物を削除する、または、前記コマンドにより変更された情報を変更前の情報に設定し直すことで、前記コマンドを実行前の状態に戻す巻き戻し処理の実行を指示するノードダウン対応処理を実行させることを特徴とする、制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
このため、この情報処理システムは、複数のサーバノードと、前記複数のサーバノードを管理するマネージャノードとを備える。前記複数のサーバノードのうち一のサーバノードに、当該一のサーバノードとペアを構成するサーバノードを監視し、前記ペアを構成するサーバノードのダウンを検知すると前記マネージャノードにペアノードダウン通知を発行するペアノード監視部と、可逆性のあるコマンドについて、前記コマンドにより生成された生成物を削除する、または、前記コマンドにより変更された情報を変更前の情報に設定し直すことで、前記コマンドを実行前の状態に戻す巻き戻し処理を実現する巻き戻し処理部とを備える。また、前記マネージャノードに、前記ペアノードダウン通知を受信すると、ノードダウン対応処理を実行するノードダウン処理部を備え、前記ノードダウン処理部が、前記ノードダウン対応処理として、前記コマンドを実行したサーバノードに対して、前記巻き戻し処理の実行を指示する。