(57)【要約】【課題】情報処理装置のソフトウェアの更新を容易に行なう。【解決手段】情報処理システムがそなえる複数の情報処理装置２のうちのいずれかの情報処理装置２であって、前記複数の情報処理装置２の各々に適用されたソフトウェアの更新を制御する制御部２８をそなえ、前記複数の情報処理装置２は、所定数の情報処理装置２ごとに装置グループを構成し、前記制御部２８は、所定の選択条件に基づき複数の前記装置グループの各々から１つずつ情報処理装置２を選択し、選択した複数の情報処理装置２を第１更新グループに割り当てる割当部２４と、前記第１更新グループに属する前記複数の情報処理装置２の各々に対して、当該情報処理装置２に適用されたソフトウェアの更新指示を送信する送信部２５と、をそなえる。【選択図】図５
2018181194.tif 000002
【特許請求の範囲】
【請求項１】
情報処理システムがそなえる複数の情報処理装置のうちのいずれかの情報処理装置であって、
前記複数の情報処理装置の各々に適用されたソフトウェアの更新を制御する制御部をそなえ、
前記複数の情報処理装置は、所定数の情報処理装置ごとに装置グループを構成し、
前記制御部は、
所定の選択条件に基づき複数の前記装置グループの各々から１つずつ情報処理装置を選択し、選択した複数の情報処理装置を第１更新グループに割り当てる割当部と、
前記第１更新グループに属する前記複数の情報処理装置の各々に対して、当該情報処理装置に適用されたソフトウェアの更新指示を送信する送信部と、をそなえる
ことを特徴とする、情報処理装置。
【請求項２】
前記割当部は、前記複数の装置グループの各々において選択されなかった情報処理装置を第２更新グループに割り当て、
前記第１更新グループに属する前記複数の情報処理装置の各々に適用されたソフトウェアの更新の完了後に、前記第１更新グループに属する前記複数の情報処理装置のうちのいずれかの情報処理装置からの更新指示によって、前記第２更新グループに属する複数の情報処理装置の各々に適用されたソフトウェアの更新が行なわれる、
ことを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個の情報処理装置のうちの、２以上且つｎ−２以下の情報処理装置が前記第１更新グループに含まれるように、前記複数の装置グループの各々から情報処理装置を選択することを含む、
ことを特徴とする、請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個の情報処理装置のうちの、１以上且つｎ−１以下の情報処理装置が前記第１更新グループに含まれるように、前記複数の装置グループの各々から情報処理装置を選択することを含む、
ことを特徴とする、請求項１又は請求項２に記載の情報処理装置。
【請求項５】
前記情報処理システムに関する制御を行なう役割を割り当てられたことを特徴とする、請求項３又は請求項４に記載の情報処理装置。
【請求項６】
前記複数の情報処理装置のうちの、前記所定の選択条件に基づき選定したｎ−１個の情報処理装置に対して、前記情報処理システムに関する制御を行なう役割を割り当てる装置管理部をそなえる、
ことを特徴とする、請求項５に記載の情報処理装置。
【請求項７】
複数の情報処理装置をそなえ、
前記複数の情報処理装置は、所定数の情報処理装置ごとに装置グループを構成し、
前記複数の情報処理装置のうちの第１の情報処理装置は、
前記複数の情報処理装置の各々に適用されたソフトウェアの更新を制御する制御部をそなえ、
前記制御部は、
所定の選択条件に基づき複数の前記装置グループの各々から１つずつ情報処理装置を選択し、選択した複数の情報処理装置を第１更新グループに割り当てる割当部と、
前記第１更新グループに属する前記複数の情報処理装置の各々に対して、当該情報処理装置に適用されたソフトウェアの更新指示を送信する送信部と、をそなえる
ことを特徴とする、情報処理システム。
【請求項８】
情報処理システムがそなえる複数のコンピュータのうちのいずれかのコンピュータに、
前記複数のコンピュータの各々に適用されたソフトウェアの更新を制御する、
処理を実行させ、
前記複数のコンピュータは、所定数のコンピュータごとに装置グループを構成し、
前記制御は、
所定の選択条件に基づき複数の前記装置グループの各々から１つずつコンピュータを選択し、選択した複数のコンピュータを第１更新グループに割り当て、
前記第１更新グループに属する前記複数のコンピュータの各々に対して、当該コンピュータに適用されたソフトウェアの更新指示を送信する
ことを特徴とする、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及び制御プログラムに関する。
【背景技術】
【０００２】
複数の情報処理装置をそなえる情報処理システムでは、複数の情報処理装置の各々にインストールされたプログラムのアップデート（更新）が行なわれることがある。
【０００３】
なお、情報処理装置としては、例えば、サーバ等のコンピュータが挙げられる。サーバには、例えば、ストレージ装置の制御装置が含まれてよい。プログラムとしては、例えば、ＯＳ（Operating System）、ＦＷ（Firmware；ファームウェア）、ドライバ、ＭＷ（Middleware；ミドルウェア）、或いは、アプリケーションプログラム等の種々のソフトウェアが挙げられる。
【０００４】
複数の情報処理装置のプログラムのアップデートは、例えば、保守作業者により、情報処理装置に対して、更新版のプログラムの保存、更新版のプログラムのインストール、情報処理装置の再起動、の手順により実施されてよい。なお、保守作業者は、１台ずつ順番に（シーケンシャルに）、このようなアップデートの操作を行なうことになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２３０１７１号公報
【特許文献２】特開２００６−１１３７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、複数の情報処理装置のプログラムのアップデートでは、情報処理装置の再起動が行なわれる。再起動では、情報処理装置の構成等によるが、２０分程度の時間がかかることがある。情報処理システムでは、このような情報処理装置の再起動が１台ずつ順に情報処理装置の台数分繰り返されるため、情報処理システムの規模が大きいほど、アップデートにかかる保守時間が増大する。
【０００７】
また、保守作業者によるファームアップ操作が情報処理装置の台数分繰り返し実施されるため、情報処理システムの規模が大きいほど、保守手番が多くなり、保守作業者の拘束時間が長くなる。
【０００８】
なお、情報処理装置がストレージ装置の制御装置である場合、複数台（例えば２台）の情報処理装置が１つの冗長グループとして構成され、情報処理システムが複数の冗長グループにより構成される場合がある。このような場合においても、保守作業者は、冗長グループを構成する複数台の情報処理装置の内の少なくとも１台が運用を継続できるように、１台ずつ順にプログラムのアップデートを行なう。従って、情報処理装置がストレージ装置の制御装置である場合にも、上述した不都合が生じ得る。
【０００９】
１つの側面では、本発明は、情報処理装置のソフトウェアの更新を容易に行なうことを目的の１つとする。
【課題を解決するための手段】
【００１０】
１つの側面では、情報処理装置は、情報処理システムがそなえる複数の情報処理装置のうちのいずれかの情報処理装置であって、前記複数の情報処理装置の各々に適用されたソフトウェアの更新を制御する制御部をそなえてよい。前記複数の情報処理装置は、所定数の情報処理装置ごとに装置グループを構成してよい。前記制御部は、割当部と、送信部と、をそなえてよい。前記割当部は、所定の選択条件に基づき複数の前記装置グループの各々から１つずつ情報処理装置を選択し、選択した複数の情報処理装置を第１更新グループに割り当ててよい。前記送信部は、前記第１更新グループに属する前記複数の情報処理装置の各々に対して、当該情報処理装置に適用されたソフトウェアの更新指示を送信してよい。
【発明の効果】
【００１１】
１つの側面では、情報処理装置のソフトウェアの更新を容易に行なうことができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係る情報処理装置の構成例を示すブロック図である。
【図２】マスタノード及びマスタ候補ノードの配置例を示す図である。
【図３】ノードの稼働領域及び待機領域を説明する図である。
【図４】一実施形態に係るノードの選択例を示す図である。
【図５】一実施形態に係るノードの機能構成例を示すブロック図である。
【図６】構成情報の一例を示す図である。
【図７】グループリストの一例を示す図である。
【図８】版数情報の一例を示す図である。
【図９】一実施形態に係るストレージシステムにおける複数のノードのプログラム更新処理の動作シーケンスの一例を示す図である。
【図１０】図９に示すノード選択処理の動作フローの一例を示す図である。
【図１１】変形例に係る前半グループに含めるノードの選択例を示す図である。
【図１２】図９に示すノード選択処理の動作フローの変形例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１４】
〔１〕一実施形態
〔１−１〕構成例
図１に示すように、一実施形態に係るストレージシステム１０は、情報処理システムの一例であり、例示的に、複数のノードブロック（以下、「ＮＢ」（Node Block）と表記する場合がある）１、及び、１以上のホスト装置４をそなえてよい。ストレージシステム１０は、ＮＢ１を増設可能なスケールアウト型のストレージシステムであってよい。
【００１５】
ＮＢ１は、複数台（図１では２台）のノード２、及び、ストレージ（記憶装置）３をそなえてよい。なお、ＮＢ１は、ストレージシステム１０におけるストレージ装置と位置付けられてもよい。なお、以下の説明では、図１に例示するように、いずれかのＮＢ１を特定する場合には、“ＮＢ＃０”、“ＮＢ＃１”、・・・と表記する場合がある。
【００１６】
ノード２は、ホスト装置４からストレージ３に対するアクセスを制御する情報処理装置の一例である。ノード２は、ストレージ装置の制御装置と位置付けられてもよい。
【００１７】
図１に例示するように、ノード２は、ＮＢ１内の他のノード２との間で冗長化（例えば二重化）され、冗長グループを構成してよい。換言すれば、ストレージシステム１０がそなえる複数のノード２は、所定数のノード２ごとに装置グループを構成するといえる。
【００１８】
各ＮＢ１内の２台のノード２は、ストレージ３上の同一データを共有してよい。いずれかのＮＢ１内の両ノード２がダウンした場合、ストレージシステム１０全体としても動作継続が不可となる。
【００１９】
ノード２は、ＮＢ１内の他のノード２との間のノード間通信、他のＮＢ１内のノード２との間の筐体間（ＮＢ間）通信、ホスト装置４との間のホスト間通信、ストレージ３との間のストレージ間通信、をそれぞれ行なってよい。
【００２０】
ここで、ストレージシステム１０における複数のノード２には、マスタノード２が含まれてよい。マスタノード２は、ストレージシステム１０全体の管理／制御を行なうノード２である。例えば、工場出荷時やストレージシステム１０の起動時等の所定のタイミングで、全ノード２の中から１つのマスタノード２が決定されてよい。
【００２１】
また、ストレージシステム１０におけるマスタノード２以外の複数のノード２には、マスタノード２の障害発生時にマスタノード２の代替となり得る（フェイルオーバ先となり得る）１以上のマスタ候補ノード２が含まれてよい。マスタ候補ノード２は、例えば、ストレージシステム１０の起動時等の所定のタイミングで、全ノード２の中からマスタノード２により決定されてよい。
【００２２】
このように、マスタノード２及びマスタ候補ノード２は、ストレージシステム１０に関する制御を行なう役割を割り当てられたノード２であるといえる。
【００２３】
図２にマスタノード２及びマスタ候補ノード２の配置例を示す。なお、図２の例では、マスタノード２を太枠及び網掛けで示し、マスタ候補ノード２を網掛けで示し、マスタノード２及びマスタ候補ノード２のいずれにも該当しないノード（以下、「非マスタノード」と表記する）２を白背景で示す。また、以下の説明では、図２に例示するように、いずれかのノード２を特定する場合には、“ノード＃０”〜“ノード＃９”と表記する場合がある。
【００２４】
図２に例示するように、ストレージシステム１０が２台のノード２を有する場合、ノード＃０がマスタノード２となり、ノード＃１がマスタ候補ノード２となり、非マスタノード２は存在しない。また、ストレージシステム１０が６台のノード２を有する場合、ノード＃２がマスタノード２となり、ノード＃０、＃１、＃４がマスタ候補ノード２となり、ノード＃３、＃５が非マスタノード２となる。さらに、ストレージシステム１０が１０台のノード２を有する場合、ノード＃２がマスタノード２となり、ノード＃０、＃４、＃６がマスタ候補ノード２となり、ノード＃１、＃３、＃５、＃７、＃８、＃９が非マスタノード２となる。
【００２５】
ストレージ３は、ＮＢ１内の複数台のノード２の各々からアクセス可能な記憶領域である。例えば、ストレージ３は、ＮＢ１内の複数台のノード２がそれぞれそなえる記憶装置により構成され、当該複数台のノード２により共有される共有ファイルサーバであってよい。
【００２６】
例えば、ノード２は、ノード２の各種機能の全部若しくは一部を実現するプログラムや、種々のデータをストレージ３に格納してもよい。当該プログラムには、例示的に、ＯＳ、ＦＷ、ドライバ、ＭＷ、或いは、アプリケーションプログラム等の種々のソフトウェアが含まれてよい。
【００２７】
記憶装置としては、例えば、ＨＤＤ（Hard Disk Drive）等の磁気ディスク装置、ＳＳＤ（Solid State Drive）等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、ＳＣＭ（Storage Class Memory）等が挙げられる。
【００２８】
ストレージ３では、ノード２による制御の下、ノード２がそなえる記憶装置を用いて１以上のストレージグループが構築されてもよい。ストレージグループとしては、例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）グループが挙げられる。
【００２９】
なお、ストレージ３は、ストレージシステム１０がホスト装置４に提供する記憶領域を有してもよい。この場合、ノード２は、ホスト装置４からの要求に応じてストレージ３に対するデータ等の書き込み又は読み出し等の種々のアクセスを行なってもよい。
【００３０】
なお、ストレージシステム１０には、ノード２の記憶装置により実現されるストレージ３に加えて又は代えて、１以上の記憶装置を含む記憶筐体がそなえられてもよい。この場合、ストレージシステム１０は、当該記憶筐体の記憶領域をホスト装置４に提供してもよい。
【００３１】
ホスト装置４は、ストレージシステム１０に対して、Ｒｅａｄ／Ｗｒｉｔｅ等のＩ／Ｏ（Input / Output）を行なう上位装置の一例である。ホスト装置４としては、サーバ、ＰＣ（Personal Computer）、タブレット、又は、ＰＤＡ（Personal Digital Assistant）等のコンピュータが挙げられる。
【００３２】
ホスト装置４は、少なくとも１つのノード２の各々と図示しないネットワークを介して接続されてもよい。ネットワークには、ＳＡＮ（Storage Area Network）が含まれてもよく、また、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）等のイントラネット或いはインターネット等が含まれてもよい。図１の例では、ストレージシステム１０には１つのホスト装置４が存在するが、ストレージシステム１０には、複数のホスト装置４が存在してもよい。
【００３３】
なお、図１の例では、冗長化のために１台の筐体（ＮＢ１）内に２台のノード２がそなえられるものとしたが、これに限定されるものではない。また、ノード２間、ノード２−ストレージ３間、及び、ノード２−ホスト装置４間の各結線（伝送路）の本数は、図１に例示する構成に限定されるものではない。
【００３４】
次に、図１を参照して、ノード２のハードウェア構成例について説明する。図１に示すように、ノード２は、例示的に、ＣＰＵ（Central Processing Unit）２ａ、メモリ２ｂ、ノード間ＩＦ（Interface）２ｃ、筐体間ＩＦ２ｄ、ホストＩＦ２ｅ、及び、デバイスＩＦ２ｆをそなえてよい。
【００３５】
ＣＰＵ２ａは、種々の制御や演算を行なう演算処理装置の一例である。ＣＰＵ２ａは、各ブロック２ｂ〜２ｆとバス２ｇで相互に通信可能に接続されてよい。ＣＰＵ２ａに代えて、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤ（例えばＦＰＧＡ）等の集積回路（ＩＣ）が用いられてもよい。なお、ＭＰＵはMicro Processing Unitの略称であり、ＤＳＰはDigital Signal Processorの略称である。また、ＡＳＩＣはApplication Specific Integrated Circuitの略称であり、ＰＬＤはProgrammable Logic Deviceの略称であり、ＦＰＧＡはField Programmable Gate Arrayの略称である。
【００３６】
メモリ２ｂは、種々のデータやプログラムを格納するハードウェアの一例である。メモリ２ｂとしては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリが挙げられる。
【００３７】
ノード間ＩＦ２ｃ、筐体間ＩＦ２ｄ、ホストＩＦ２ｅ、及び、デバイスＩＦ２ｆは、それぞれ、ＮＢ１内の他のノード２、他のＮＢ１内のノード２、ホスト装置４、及び、ストレージ３との間の接続及び通信の制御等を行なう通信インタフェースの一例である。なお、ノード２は、保守作業者の保守端末との間の接続及び通信の制御等を行なう通信インタフェースをそなえてもよい。例えば、ノード２は、当該通信インタフェースを用いて、図示しないネットワークからノード２の各種機能の全部若しくは一部を実現するプログラムをダウンロードしてもよい。
【００３８】
なお、ノード間ＩＦ２ｃは、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）に準拠した１以上のアダプタをそなえ、ＮＢ１内の他のノード２とＰＣＩｅに対応したバスやケーブル等によって接続されてよい。また、筐体間ＩＦ２ｄは、例えば、スケールアウト用カードであってよく、ＲｏＣＥ（Remote Direct Memory Management(RDMA) over Converged Ethernet）に準拠した１以上のアダプタをそなえ、他のＮＢ１内のノード２とＲｏＣＥに対応したケーブル等によって接続されてよい。さらに、ホストＩＦ２ｅは、例えば、ホスト装置４接続用のカードであってよく、ＦＣ（Fibre Channel）に準拠した１以上のアダプタをそなえ、ホスト装置４とＦＣに対応したケーブル等によって接続されてよい。また、デバイスＩＦ２ｆは、例えば、ＰＣＩｅに準拠した１以上のアダプタをそなえ、ストレージ３とＰＣＩｅに対応したバスやケーブル等によって接続されてよい。なお、デバイスＩＦ２ｆのアダプタとしては、例えば、ＰＣＩｅスイッチが挙げられる。
【００３９】
上述したノード２のハードウェア構成は例示である。従って、ノード２内でのハードウェアの増減（例えば任意のブロックの追加や削除）、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
【００４０】
例えば、ノード２は、上述したストレージ３を構成する記憶装置をそなえてもよい。
【００４１】
また、ノード２では、ＣＰＵ２ａ、メモリ２ｂ、ノード間ＩＦ２ｃ、筐体間ＩＦ２ｄ、ホストＩＦ２ｅ、及び、デバイスＩＦ２ｆの少なくとも１つが冗長化されてもよい。一例として、ノード２は、複数のＣＰＵ２ａをそなえてよく、いずれか１以上のＣＰＵ２ａが稼働系として動作し、他のＣＰＵ２ａは待機系として処理を行なわないようにしてもよい。
【００４２】
さらに、ノード２は、入出力部、読取部等をそなえてもよい。入出力部は、例えば、マウス、キーボード、タッチパネル、操作ボタン等の入力装置、並びに、ディスプレイやプリンタ等の出力装置の少なくとも一方を含んでよい。
【００４３】
読取部は、記録媒体に記録されたデータやプログラムを読み出しＣＰＵ２ａに出力するリーダの一例である。読取部は、記録媒体を接続又は挿入可能な接続端子又は装置を含んでもよい。読取部としては、例えばＵＳＢ（Universal Serial Bus）等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体にはノード２の各種機能の全部若しくは一部を実現するプログラムが格納されてもよい。
【００４４】
記録媒体としては、例示的に、磁気／光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気／光ディスクとしては、例示的に、フレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク、ＨＶＤ（Holographic Versatile Disc）等が挙げられる。フラッシュメモリとしては、例示的に、ＵＳＢメモリやＳＤカード等の半導体メモリが挙げられる。なお、ＣＤとしては、例示的に、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等が挙げられる。また、ＤＶＤとしては、例示的に、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等が挙げられる。
【００４５】
〔１−２〕各ノードにおけるプログラムのアップデート手順の一例
次に、図１に示すノード２にインストールされたプログラムのアップデート手順の一例について説明する。
【００４６】
図３に例示するように、各ノード２は、領域２０ａ及び２０ｂを有してよい。領域２０ａ及び２０ｂは、それぞれ、ノード２のプログラム、例えば、ＯＳがインストールされた記憶領域である。領域２０ａ及び２０ｂは、それぞれ、「パーティション」と称されてもよい。なお、領域２０ａ及び２０ｂは、ノード２が有する記憶装置の記憶領域であってもよいし、ストレージ３上の記憶領域であってもよい。
【００４７】
ノード２は、領域２０ａ及び２０ｂのいずれか一方をブート領域としてブートする。ブート領域は、ノード２におけるブート設定により指定されてよい。以下、ブート領域として稼働した領域２０ａ又は２０ｂを稼働領域と称し、ブート領域ではない領域２０ａ又は２０ｂを待機領域と称する。図３の例では、便宜上、領域２０ａが稼働領域、領域２０ｂが待機領域であるものとする。
【００４８】
領域２０ａ及び２０ｂには、互いに異なるバージョンのＯＳ等のプログラムがインストールされてよい。このように、プログラムがインストールされる領域を複数（図３の例では２つ）設けることにより、ノード２では、複数のバージョンを管理することができる。
【００４９】
以下、図３に例示するストレージシステム１０において、複数のノード２にインストールされたプログラムをアップデートする場合の手順の一例を説明する。
【００５０】
（ｉ）ソフトウェア登録処理
【００５１】
保守作業者は、全てのノード２の待機領域（図３の例では領域２０ｂ）に対して、更新版のソフトウェアをインストールする。
【００５２】
（ii）ソフトウェア適用処理
【００５３】
（ii−１）保守作業者は、各ノード２に対して、ブート領域を現在の稼働領域（図３の例では領域２０ａ）から待機領域（図３の例では領域２０ｂ）に切り替える設定を行なう。これにより、次回ブート時に、ノード２は現在の待機領域（図３の例では領域２０ｂ）でブートする。
【００５４】
（ii−２）保守作業者は、各ノード２に対して、ノード２の設定ファイルを現在の稼働領域（図３の例では領域２０ａ）から待機領域（図３の例では領域２０ｂ）にコピーする。なお、設定ファイルは、例えば、ノード２自身のＩＰ（Internet Protocol）アドレス等の、装置構成に関する種々の設定情報である。
【００５５】
（ii−３）保守作業者は、各ノード２に対して、再起動を行なう。なお、再起動後は、各ノード２において、領域２０ｂが稼働領域となり、領域２０ａが待機領域となる。
【００５６】
例えば、図３に対して上述した従来の手法によるアップデートを適用した場合、上記（ｉ）の処理は、事前作業として保守作業者により保守端末を介して実施され、上記（ii）の処理は、当日作業として保守作業者により１つのノード２ずつ順に実施される。
【００５７】
これに対し、一実施形態に係るストレージシステム１０では、１つのノードずつ順にプログラムのアップデートを行なうのではなく、複数のノード２について、まとめて（例えば並行して）プログラムのアップデートを行なう。
【００５８】
なお、上述のように、各ＮＢ１では、少なくとも１つのノード２が運用系として動作できるように、ノード２を冗長化することで耐障害性を向上させている。このような装置構成の関係上、同一ＮＢ１内の全てのノード２をまとめてプログラムのアップデート対象とした場合、当該ＮＢ１内のノード２の再起動が同時又は略同時に行なわれるため、ＮＢ１の運用が停止してしまう。
【００５９】
そこで、一実施形態においては、各ＮＢ１内の複数のノード２のうちの一部（例えば、ノード２が２台の場合は１台）について先にプログラムのアップデートを行ない、その後に残りのノード２についてプログラムのアップデートを行なう。
【００６０】
すなわち、一実施形態では、全てのノード２を複数（例えば２つ）のアップデートグループ（以下、単に「グループ」と表記する場合がある）に分け、グループごとに、上記（ii）の処理を実施する。以下、便宜上、先に上記（ii）の処理が実施されるグループを「前半グループ」或いは「第１更新グループ」、後に上記（ii）の処理が実施されるグループを「後半グループ」或いは「第２更新グループ」と表記する。
【００６１】
また、或るグループ内の全ノード２のプログラムのアップデート後に、これらのノード２の再起動が発生する。例えば、他のグループに含まれるマスタノード２又はマスタ候補ノード２が２つ未満の場合、当該或るグループでアップデート及び再起動が完了するまでの間は、一時的に、当該他のグループにおいてマスタノード２のフェイルオーバ先が存在しなくなる。
【００６２】
そこで、一実施形態においては、複数のグループのうちのいずれのグループにも、マスタノード２及びマスタ候補ノード２の合計が“２以上”となるように、各グループに振り分けるノード２を選択する。
【００６３】
なお、ストレージシステム１０に含まれるノード２の数÷グループ数が“２”よりも小さい場合には、マスタノード２及びマスタ候補ノード２の合計が“１”となるように、各グループに含まれるノード２が選択されてよい。
【００６４】
〔１−３〕ノード選択手法の一例
以下、ノード選択手法の一例について説明する。なお、以下の説明では、ストレージシステム１０が１０台のノード２をそなえ、ストレージシステム１０におけるマスタノード２及びマスタ候補ノード２の合計が“４”以上であり、全ノード２を２つのグループに分けるものとする。
【００６５】
ストレージシステム１０におけるマスタノード２は、上述のように、ストレージシステム１０の起動時等の所定のタイミングで、マスタ候補ノード２を決定する。
【００６６】
一実施形態では、マスタノード２がマスタ候補ノード２を決定する点に着目し、マスタノード２が、事前に決まっているグループの選択論理によりマスタ候補ノード２が各グループに均等に分散されるように、複数のノード２からマスタ候補ノード２を決定する。
【００６７】
例えば、マスタノード２及びマスタ候補ノード２がｎ個（ｎは４以上の整数）存在する場合（マスタ候補ノード２はｎ−１個）、ｎ個のノード２のうちの２以上且つｎ−２以下のノード２が前半グループ（第１の更新グループ）に含まれることになる。なお、ｎが３以下の整数である場合は、ｎ個のノード２のうちの１以上且つｎ−１以下のノード２が前半グループ（第１の更新グループ）に含まれればよい。
【００６８】
一例として、グループ選択論理（選択条件）が、ノード番号が偶数のノード２を前半グループに決定し、ノード番号が奇数のノード２を後半グループに決定する条件である場合について説明する。なお、グループ選択論理は、現在のマスタノード２が前半グループに含まれないような条件を含んでもよい。現在のマスタノード２が前半グループに対するアップデートの指示等を行なうためである。
【００６９】
例えば、マスタノード２は、図４の符号（ａ）に示すように、ＮＢ１間でマスタ候補ノード２のノード番号が偶数又は奇数から始まり、偶数及び奇数が交互に変化するようにマスタ候補ノード２を決定してよい。図４の符号（ａ）の例では、マスタノード２であるノード＃０（偶数）が、ノード＃３（奇数）、＃４（偶数）、＃７（奇数）をマスタ候補ノード２に決定している。
【００７０】
この場合、図４の符号（ｂ）に示すように、前半グループとして、ノード＃０（マスタノード２）、ノード＃４（マスタ候補ノード２）、ノード＃２、＃６、＃８（非マスタノード２）が選択される。また、図４の符号（ｃ）に示すように、後半グループとして、ノード＃３、＃７（マスタ候補ノード２）、ノード＃１、＃５、＃９（非マスタノード２）が選択される。図４の符号（ｂ）及び（ｃ）に示すように、前半グループ及び後半グループのいずれも、マスタノード２及びマスタ候補ノード２の合計は、“２”であり、マスタノード２の障害時のフェイルオーバ先の候補を確保することができる。
【００７１】
なお、上述したノード選択処理は、ストレージシステム１０の起動時や、保守端末等からのアップデート要求時等の所定のタイミングで、実施されてよい。マスタノード２により決定されたマスタ候補ノード２は、ストレージシステム１０の運用においてマスタノード２のフェイルオーバ先となり得る。
【００７２】
或いは、上述したノード選択処理で選択されるマスタ候補ノード２は、ノード２のアップデート処理の間において有効な、時限的なマスタ候補ノード２であってもよい。この場合、ストレージシステム１０の運用においてマスタノード２のフェイルオーバ先となり得る正規のマスタ候補ノード２は、ノード選択処理で選択されるマスタ候補ノード２とは別に（例えば、起動時等の所定のタイミングで）決定されてよい。なお、この場合、ノード選択処理は、アップデートの開始前に実施されてもよい。
【００７３】
換言すれば、ノード２のアップデート及び再起動の完了後には、ノード選択処理で決定されたマスタ候補ノード２は無効となり、正規のマスタ候補ノード２が有効となってもよい。
【００７４】
なお、ここまで、ノード選択処理をマスタノード２が行なうものとしたが、これに限定されるものではなく、ストレージシステム１０における複数のノード２のうちのいずれのノード２がノード選択処理を行なってもよい。
【００７５】
以上のように、各ＮＢ１内のノード２について片側ずつ並列にアップデートを行なうことで、２回分のアップデート時間でアップデート作業を完了でき、保守時間の増大を解消できる。
【００７６】
また、並列にアップデートを行なうことにより、マスタノード２のフェイルオーバ先がなくなるというリスクが生じるが、グループの選択論理に基づいてマスタ候補ノード２が決定されることで、各アップデートグループ内での冗長性を維持できる。
【００７７】
従って、従来の手法のように１台ずつ順にアップデートを行なう場合と比較して、ノード２のアップデートを容易に行なうことができる。
【００７８】
〔１−４〕ノードの機能構成例
次に、ノード２の機能構成例について説明する。図５は、ノード２の機能構成例の一例を示す図である。図５に示すように、ノード２は、例示的に、メモリ部２１、ＡＰＩ（Application Programming Interface）提供部２２、マスタ候補ノード選択部２３、グループ決定部２４、ノード通信部２５、更新処理部２６、及び、デバイス制御部２７をそなえてよい。
【００７９】
なお、ＡＰＩ提供部２２〜デバイス制御部２７の各機能は、例えば、図１に示すＣＰＵ２ａが図示しない記憶装置又はストレージ３に格納されたプログラムをメモリ２ｂに展開して実行することにより実現されてよい。なお、メモリ部２１及びマスタ候補ノード選択部２３〜更新処理部２６は、複数のノード２の各々に適用されたソフトウェアの更新を制御する制御部２８と位置付けられもてよい。
【００８０】
メモリ部２１は、ノード２の処理に係る種々の情報を記憶してよい。メモリ部２１は、例えば、図１に示すメモリ２ｂの記憶領域により実現されてよい。
【００８１】
図５に示すように、メモリ部２１は、例示的に、構成情報２１１、グループリスト２１２、及び、版数情報２１３の情報を記憶してよい。なお、以下の説明では、メモリ部２１が記憶する各種の情報を説明に適した形式で例示するが、これらの情報は例示する形式に限定されるものではなく、例えば配列、ＤＢ（Database）、ビットマップ等の種々の形式又は態様で管理されてよい。なお、メモリ部２１が記憶するこれらの情報２１１〜２１３については後述する。
【００８２】
ＡＰＩ提供部２２は、ホスト装置４や保守端末等に対して、ＡＰＩ等のユーザインタフェースを提供する。換言すれば、ＡＰＩ提供部２２は、ホスト装置４や保守端末からのアクセスを受け付ける受付部の一例である。
【００８３】
マスタ候補ノード選択部２３は、ストレージシステム１０（ノード２）の起動時や保守端末からの要求受付時等の所定のタイミングで、マスタ候補ノード２を選択する。マスタ候補ノード２を選択する手法は既述のため、詳細な説明は省略する。
【００８４】
なお、マスタ候補ノード選択部２３は、例えば、図６に示す構成情報２１１によって示されるＮＢ１とノード２との関係や、グループ選択論理に基づきマスタ候補ノード２を選択してよい。なお、選択されたマスタ候補ノード２の情報は、例えば、構成情報２１１に設定されてもよい。
【００８５】
このように、マスタ候補ノード選択部２３は、複数のノード２のうちの、グループ選択論理に基づき選定したｎ−１個のノード２に対して、ストレージシステム１０に関する制御を行なう役割を割り当てる装置管理部の一例である。
【００８６】
グループ決定部２４は、事前に定められたグループ選択論理に従って、ストレージシステム１０における各ノード２の振り分け先のグループを決定する。一実施形態においては、グループ決定部２４は、ノード番号が偶数のノード２を前半グループに決定し、ノード番号が奇数のノード２を後半グループに決定してよい。なお、決定されたアップデートグループの情報は、例えば、図７に示すグループリスト２１２としてメモリ部２１に格納されてもよい。
【００８７】
このように、グループ決定部２４は、グループ選択論理に基づき複数の冗長グループの各々から１つずつノード２を選択し、選択した複数のノード２を前半グループに割り当てる割当部の一例である。
【００８８】
なお、割当部の一例としてのグループ決定部２４は、複数の冗長グループの各々において選択されなかったノード２を後半グループに割り当ててよい。
【００８９】
ノード通信部２５は、ＮＢ１内の他のノード２や、他のＮＢ１内のノード２との間で通信を行なう。例えば、ノード通信部２５は、アップデート対象のグループに含まれる複数のノード２の各々に対して、アップデートの実行指示（ソフトウェア適用処理依頼）を送信してよい。また、ノード通信部２５は、アップデート対象のグループに含まれる複数のノード２の各々からアップデートの完了を通知されると、各ノード２の版数情報２１３を更新してよい。
【００９０】
図８は、版数情報２１３の一例を示す図である。なお、図８に示す版数情報２１３は、ストレージシステム１０全体の各ノード２のＦＷ版数情報であり、例えば、マスタノード２が管理する情報であってよい。一方、マスタ候補ノード２や非マスタノード２は、自身のＦＷ版数情報を版数情報２１３として管理してよい。
【００９１】
このように、ノード通信部２５は、前半グループに属する複数のノード２の各々に対して、当該ノード２に適用されたソフトウェアの更新指示を送信する送信部の一例である。
【００９２】
なお、上述したマスタ候補ノード選択部２３、グループ決定部２４、及び、ノード通信部２５の処理は、ノード選択処理を行なうノード２、一例として、マスタノード２が実行する処理であってよい。
【００９３】
更新処理部２６は、ノード通信部２５を介して受信したアップデートの実行指示に基づいて、自身のノード２にインストールされたプログラムのアップデート処理を実行する。なお、更新処理部２６によるアップデート処理の前に、例えば、保守端末は、ＡＰＩ提供部２２を介して、各ノード２の待機領域２０ｂ（図３参照）に更新版のプログラムをインストールしているものとする。
【００９４】
例えば、更新処理部２６は、アップデート処理において、ノード２の設定ファイルを稼働領域２０ａから待機領域２０ｂにコピーし（図３参照）、ブート領域を稼働領域２０ａから待機領域２０ｂに切り替えてから、ノード２の再起動を行なってよい。
【００９５】
これにより、領域２０ｂに事前にインストールされていた更新版のプログラムによってノード２がブートする。なお、更新処理部２６は、ノード２の更新版のプログラムによるブートが完了すると、自身のノード２に関する版数情報２１３を更新し、ノード通信部２５を介して、アップデートの実行指示を送信してきたノード２に完了応答を返してよい。
【００９６】
なお、前半グループの全てのノード２から完了応答を受信したノード２、例えばマスタノード２は、前半グループのアップデートの完了後に、前半グループのいずれかのマスタ候補ノード２に自身のマスタノード２としての機能（権限）を委譲してよい。
【００９７】
権限を委譲された前半グループのマスタノード２（旧マスタ候補ノード２）は、旧マスタノード２を含む後半グループに属するノード２の各々に対して、当該ノード２に適用されたソフトウェアの更新指示を送信してよい。
【００９８】
なお、デバイス制御部２７は、ストレージ３（或いは他の記憶装置）に対する種々の制御を行なう。一例として、デバイス制御部２７は、ＡＰＩ提供部２２を介してホスト装置４から受信した、ストレージ３（或いは他の記憶装置）に対するアクセス要求に応じて、種々のアクセス制御を行なってよい。デバイス制御部２７による処理は、既知の種々の手法により行なうことが可能であり、その詳細な説明は省略する。
【００９９】
〔１−５〕動作例
次に、図９及び図１０を参照して、一実施形態に係るストレージシステム１０における複数のノード２のプログラム更新処理の動作例を説明する。なお、前提として、各ノード２の待機領域２０ｂには、保守端末により、ＡＰＩ提供部２２を介して、更新版のプログラムがインストールされているものとする。また、以下の説明では、マスタノード２がノード選択処理を行なうものとする。
【０１００】
図９に例示するように、ホスト装置４からマスタノード２のＡＰＩ提供部２２に対して、ソフトウェア適用要求が送信されると（処理Ｐ１）、マスタノード２は、アップデートグループごとのノード選択処理を行なう（処理Ｐ２）。なお、処理Ｐ２において、マスタノード２自身は後半グループのノード２として選択されるものとする。
【０１０１】
マスタノード２は、処理Ｐ２で前半グループとして選択された各ノード２に対して、ノード通信部２５を介してソフトウェア適用処理依頼を送信する（処理Ｐ３）。
【０１０２】
前半グループとして選択されたマスタ候補ノード２及び非マスタノード２の各々は、更新処理部２６により、設定ファイルを稼働領域２０ａから待機領域２０ｂへコピーし（処理Ｐ４）、ブート領域を稼働領域２０ａから待機領域２０ｂに切り替える（処理Ｐ５）。
【０１０３】
そして、マスタ候補ノード２及び非マスタノード２の各々の更新処理部２６は、自ノード２の再起動を行ない（処理Ｐ６）、データベースの版数情報２１３を更新し（処理Ｐ７）、ノード通信部２５を介して、マスタノード２に完了を応答する。
【０１０４】
マスタノード２は、前半グループの各ノード２の処理の完了を待ち合わせ（処理Ｐ８）、前半グループの全ノード２の処理が完了すると、マスタノード２を前半グループのいずれかのマスタ候補ノード２に切り替える（処理Ｐ９）。
【０１０５】
マスタノード２に昇格したノード２は、処理Ｐ２で後半グループとして選択された各ノード２に対して、ノード通信部２５を介してソフトウェア適用処理依頼を送信する（処理Ｐ１０）。
【０１０６】
後半グループとして選択されたマスタ候補ノード２及び非マスタノード２の各々の更新処理部２６は、設定ファイルを稼働領域２０ａから待機領域２０ｂへコピーし（処理Ｐ１１）、ブート領域を稼働領域２０ａから待機領域２０ｂに切り替える（処理Ｐ１２）。
【０１０７】
そして、マスタ候補ノード２及び非マスタノード２の各々は、更新処理部２６により、自ノード２の再起動を行ない（処理Ｐ１３）、データベースの版数情報２１３を更新し（処理Ｐ１４）、ノード通信部２５を介して、マスタノード２に完了を応答する。
【０１０８】
マスタノード２は、後半グループの各ノード２の処理の完了を待ち合わせ（処理Ｐ１５）、後半グループの全ノード２の処理が完了すると、データベースの装置全体の版数情報２１３を更新し（処理Ｐ１６）、ホスト装置４に完了を応答する。
【０１０９】
次に、図１０を参照して、図９の処理Ｐ２におけるノード選択処理の動作例を説明する。
【０１１０】
図１０に例示するように、ノード２、例えば、マスタノード２のマスタ候補ノード選択部２３は、構成情報２１１を参照して１つのＮＢ１をチェックし、当該ＮＢ１内でノード番号が小さいノード２をマスタ候補ノード２として選択する（処理Ａ１）。
【０１１１】
マスタ候補ノード選択部２３は、マスタ候補ノード２の数が所定数に達したか否かを判定する（処理Ａ２）。マスタ候補ノード２の数が所定数に達している場合（処理Ａ２でＹｅｓ）、処理が処理Ａ１４に移行する。
【０１１２】
一方、マスタ候補ノード２の数が所定数に達していない場合（処理Ａ２でＮｏ）、マスタ候補ノード選択部２３は、直前にチェックしたＮＢ１のノード番号に“１”を加えたＮＢ１が存在するか否かを判定する（処理Ａ３）。
【０１１３】
ＮＢ番号＋１のＮＢ１が存在する場合（処理Ａ３でＹｅｓ）、マスタ候補ノード選択部２３は、直前にチェックしたＮＢ１でノード番号が小さいノード２を選択したか否かを判定する（処理Ａ４）。
【０１１４】
ノード番号が小さいノード２を選択した場合（処理Ａ４でＹｅｓ）、処理が処理Ａ５に移行する。処理Ａ５では、マスタ候補ノード選択部２３は、直前にチェックしたＮＢ１のＮＢ番号＋１のＮＢ１内でノード番号が大きいノード２をマスタ候補ノード２として選択し、処理が処理Ａ２に移行する。
【０１１５】
ノード番号が小さいノード２を選択していない場合（処理Ａ４でＮｏ）、処理が処理Ａ６に移行する。処理Ａ６では、マスタ候補ノード選択部２３は、直前にチェックしたＮＢ１のＮＢ番号＋１のＮＢ１内でノード番号が小さいノード２をマスタ候補ノード２として選択し、処理が処理Ａ２に移行する。
【０１１６】
一方、処理Ａ３でＮＢ番号＋１のＮＢ１が存在しない場合（処理Ａ３でＮｏ）、マスタ候補ノード選択部２３は、構成情報２１１を参照してＮＢ＃０をチェックしたか否かを判定する（処理Ａ７）。
【０１１７】
ＮＢ＃０をチェックしていない場合（処理Ａ７でＮｏ）、マスタ候補ノード選択部２３は、直前にチェックしたＮＢ１でノード番号が小さいノード２を選択したか否かを判定する（処理Ａ８）。
【０１１８】
ノード番号が小さいノード２を選択した場合（処理Ａ８でＹｅｓ）、処理が処理Ａ９に移行する。処理Ａ９では、マスタ候補ノード選択部２３は、ＮＢ＃０内でノード番号が大きいノード２をマスタ候補ノード２として選択し、処理が処理Ａ１２に移行する。
【０１１９】
ノード番号が小さいノード２を選択していない場合（処理Ａ８でＮｏ）、処理が処理Ａ１０に移行する。処理Ａ１０では、マスタ候補ノード選択部２３は、ＮＢ＃０内でノード番号が小さいノード２をマスタ候補ノード２として選択し、処理が処理Ａ１２に移行する。
【０１２０】
処理Ａ７でＮＢ＃０をチェックしたと判定した場合（処理Ａ７でＹｅｓ）、マスタ候補ノード選択部２３は、当該ＮＢ１内で選択済でないノード２をマスタ候補ノード２として選択する（処理Ａ１１）。
【０１２１】
そして、マスタ候補ノード選択部２３は、マスタ候補ノード２の数が所定数に達したか否かを判定する（処理Ａ１２）。マスタ候補ノード２の数が所定数に達していない場合（処理Ａ１２でＮｏ）、処理が処理Ａ１３に移行する。処理Ａ１３では、マスタ候補ノード選択部２３は、直前にチェックしたＮＢ１のＮＢ番号に“１”を加えたＮＢ１内で選択済でないノード２をマスタ候補ノード２として選択し、処理が処理Ａ１２に移行する。
【０１２２】
一方、マスタ候補ノード２の数が所定数に達している場合（処理Ａ１２でＹｅｓ）、処理が処理Ａ１４に移行する。
【０１２３】
処理Ａ１４では、グループ決定部２４は、ノード番号が偶数のノード２を前半グループのノード２に選択し、ノード番号が奇数のノード２を後半グループのノード２に選択し、処理が終了する。
【０１２４】
〔１−６〕変形例
一実施形態に係るノード選択処理は、以下のように変形して実施されてもよい。
【０１２５】
変形例において、マスタ候補ノード選択部２３は、ノード選択処理のためのマスタ候補ノード２の選択を行なわなくてよい。なお、マスタ候補ノード選択部２３は、例えば、ノード２の起動時等における正規のマスタ候補ノード２の選択は行なってもよい。
【０１２６】
グループ決定部２４は、以下のグループ選択論理に従って、例えば構成情報２１１に基づき、ストレージシステム１０における各ノード２の振り分け先のグループを決定する。
【０１２７】
グループ選択論理は、ＮＢ１ごとの以下の判定を含んでよい。なお、以下の例では、前半グループに振り分けるノード２を選択する場合を示す。後半グループに振り分けるノード２は、前半グループとして選択されなかったノード２が選択されればよい。
【０１２８】
（Ｉ）マスタノード２を含むＮＢ１については、マスタノード２ではないノード２を選択する。
【０１２９】
（II）マスタノード２を含むＮＢ１以外のＮＢ１の場合、以下の条件に従い、ＮＢ１内のいずれかのノード２を選択する。このとき、マスタ候補ノード２を選択した場合は、マスタ候補選択済カウンタ（以下、単に「カウンタ」と表記する）を“１”増加させる。
【０１３０】
（II−１）マスタ候補ノード２が存在し、カウンタが閾値に達していない場合は、マスタ候補ノード２を選択する。このとき、ＮＢ１内に複数のマスタ候補ノード２が存在する場合は、若番の（ノード番号が小さい）マスタ候補ノード２を選択する。なお、閾値は、例えば、ストレージシステム１０におけるマスタ候補ノード２の総数をグループ数で割ることで得られてよい。
【０１３１】
（II−２）マスタ候補ノード２が存在し、カウンタが閾値に達している場合、マスタ候補ノード２の選択が完了したため、マスタ候補ノード２ではないノード２（非マスタノード２）を選択する。
【０１３２】
（II−３）マスタ候補ノード２が存在しない場合、ＮＢ１内の若番の（ノード番号が小さい）非マスタノード２を選択する。
【０１３３】
図１１は変形例に係る前半グループに含めるノード２の選択例を示す図である。図１１の例では、ストレージシステム１０がＮＢ＃０〜＃４の５台のＮＢ１をそなえ、各ＮＢ１には２台のノード２が存在するものとする。また、ＮＢ＃１のノード＃２がマスタノード２であり、マスタノード２及びマスタ候補ノード２の合計が４台であるものとする。なお、カウンタの閾値は、マスタ候補ノード２の総数“４”÷グループ数“２”により、“２”となる。
【０１３４】
図１１の符号（Ａ）に示すように、グループ決定部２４は、例えば、ＮＢ＃１をチェックする。ＮＢ＃１にはマスタノード＃２が存在するため、グループ決定部２４は、グループ選択論理の（Ｉ）に従い、マスタノード＃２ではないノード＃３を選択する（図１１中の楕円を付したノード２参照）。なお、このとき、カウンタは“０”である。
【０１３５】
図１１の符号（Ｂ）に示すように、グループ決定部２４は、例えば、ＮＢ＃１の次のＮＢ１であるＮＢ＃２をチェックする。ＮＢ＃２にはマスタ候補ノード＃４が存在し、カウンタは“０”＜閾値“２”のため、グループ決定部２４は、グループ選択論理の（II−１）に従いマスタ候補ノード＃４を選択し、カウンタに“１”を加算して“１”にする。
【０１３６】
図１１の符号（Ｃ）に示すように、グループ決定部２４は、例えば、ＮＢ＃２の次のＮＢ１であるＮＢ＃３をチェックする。ＮＢ＃３にはマスタ候補ノード＃６が存在し、カウンタは“１”＜閾値“２”のため、グループ決定部２４は、グループ選択論理の（II−１）に従い、マスタ候補ノード＃６を選択し、カウンタに“１”を加算して“２”にする。
【０１３７】
図１１の符号（Ｄ）に示すように、グループ決定部２４は、例えば、ＮＢ＃３の次のＮＢ１であるＮＢ＃４をチェックする。ＮＢ＃４にはマスタ候補ノード２が存在しないため、グループ決定部２４は、グループ選択論理の（II−３）に従い、ＮＢ＃４内の若番のノード＃８を選択する。
【０１３８】
図１１の符号（Ｅ）に示すように、グループ決定部２４は、ＮＢ＃４の次のＮＢ１が存在しないため、例えば、ＮＢ＃０をチェックする。ＮＢ＃０にはマスタ候補ノード＃０が存在し、カウンタは“２”＝閾値“２”のため、グループ決定部２４は、グループ選択論理の（II−２）に従い、マスタ候補ノード＃０ではないノード＃１を選択する。
【０１３９】
以上により、全てのＮＢ１についてチェックが終わったため、グループ決定部２４による前半グループに含めるノード２の選択が終了する。これにより、グループ決定部２４は、２つのマスタ候補ノード２（ノード＃４、＃６）を含むノード＃１、＃３、＃４、＃６、＃８を前半グループとして選択する（図１１の符号（Ｅ）参照）。
【０１４０】
また、グループ決定部２４は、前半グループに含めなかった残りのノード＃０、＃２、＃５、＃７、＃９を後半グループとして選択する。後半グループには、２つのマスタノード２及びマスタ候補ノード２（ノード＃０、＃２）が含まれる。
【０１４１】
以上のように、一実施形態に係る変形例によっても、一実施形態と同様の効果を奏することができる。
【０１４２】
また、変形例によれば、ストレージシステム１０におけるマスタノード２及びマスタ候補ノード２の配置によらずに、各アップデートグループに振り分けるノード２の選択を柔軟に行なうことができる。
【０１４３】
次に、図１２を参照して、変形例に係るノード選択処理の動作例を説明する。なお、図１２に例示する処理は、図９に例示する処理Ｐ２において実施されてよく、図１０に例示する一実施形態に係るノード選択処理に替えて実施されてよい。
【０１４４】
図１２に例示するように、ノード２、例えば、マスタノード２のグループ決定部２４は、カウンタを初期化（例えば“０”を設定）し（処理Ｂ１）、ストレージシステム１０における未選択のＮＢ１を１つ選択する（処理Ｂ２）。
【０１４５】
次いで、グループ決定部２４は、選択したＮＢ１がマスタノード２を含むか否かを判定する（処理Ｂ３）。選択したＮＢ１がマスタノード２を含む場合（処理Ｂ３でＹｅｓ）、グループ決定部２４は、選択したＮＢ１内のマスタノード２ではないノード２を前半グループのノード２として選択する（処理Ｂ４）。
【０１４６】
グループ決定部２４は、選択したノード２がマスタ候補ノード２か否かを判定する（処理Ｂ５）。マスタ候補ノード２ではない場合（処理Ｂ５でＮｏ）、処理が処理Ｂ７に移行する。一方、選択したノード２がマスタ候補ノード２である場合（処理Ｂ５でＹｅｓ）、グループ決定部２４は、カウンタをインクリメントし（処理Ｂ６）、全てのＮＢ１を選択したか否かを判定する（処理Ｂ７）。
【０１４７】
全てのＮＢ１を選択していない場合（処理Ｂ７でＮｏ）、処理が処理Ｂ２に移行する。一方、全てのＮＢ１を選択した場合（処理Ｂ７でＹｅｓ）、グループ決定部２４は、未選択の全ノード２を後半グループのノード２として選択し（処理Ｂ８）、処理が終了する。
【０１４８】
処理Ｂ３において、選択したＮＢ１がマスタノード２を含まない場合（処理Ｂ３でＮｏ）、グループ決定部２４は、選択したＮＢ１がマスタ候補ノード２を含むか否かを判定する（処理Ｂ９）。
【０１４９】
選択したＮＢ１がマスタ候補ノード２を含む場合（処理Ｂ９でＹｅｓ）、グループ決定部２４は、カウンタが閾値に達したか否かを判定する（処理Ｂ１０）。カウンタが閾値に達していない場合（処理Ｂ１０でＮｏ）、グループ決定部２４は、選択したＮＢ１内のマスタ候補ノード２を前半グループのノード２として選択し（処理Ｂ１１）、カウンタをインクリメントし（処理Ｂ１２）、処理が処理Ｂ７に移行する。
【０１５０】
処理Ｂ１０において、カウンタが閾値に達した場合（処理Ｂ１０でＹｅｓ）、グループ決定部２４は、選択したＮＢ１内のマスタ候補ノード２ではないノード２を前半グループのノード２に選択し（処理Ｂ１３）、処理が処理Ｂ７に移行する。
【０１５１】
また、処理Ｂ９において、選択したＮＢ１がマスタ候補ノード２を含まない場合（処理Ｂ９でＮｏ）、グループ決定部２４は、選択したＮＢ１内の若番のノード２を前半グループのノード２として選択し（処理Ｂ１４）、処理が処理Ｂ７に移行する。
【０１５２】
〔２〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０１５３】
例えば、ノード２において、ＡＰＩ提供部２２〜デバイス制御部２７の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【０１５４】
〔３〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１５５】
（付記１）
情報処理システムがそなえる複数の情報処理装置のうちのいずれかの情報処理装置であって、
前記複数の情報処理装置の各々に適用されたソフトウェアの更新を制御する制御部をそなえ、
前記複数の情報処理装置は、所定数の情報処理装置ごとに装置グループを構成し、
前記制御部は、
所定の選択条件に基づき複数の前記装置グループの各々から１つずつ情報処理装置を選択し、選択した複数の情報処理装置を第１更新グループに割り当てる割当部と、
前記第１更新グループに属する前記複数の情報処理装置の各々に対して、当該情報処理装置に適用されたソフトウェアの更新指示を送信する送信部と、をそなえる
ことを特徴とする、情報処理装置。
【０１５６】
（付記２）
前記割当部は、前記複数の装置グループの各々において選択されなかった情報処理装置を第２更新グループに割り当て、
前記第１更新グループに属する前記複数の情報処理装置の各々に適用されたソフトウェアの更新の完了後に、前記第１更新グループに属する前記複数の情報処理装置のうちのいずれかの情報処理装置からの更新指示によって、前記第２更新グループに属する複数の情報処理装置の各々に適用されたソフトウェアの更新が行なわれる、
ことを特徴とする、付記１に記載の情報処理装置。
【０１５７】
（付記３）
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個（ｎは４以上の整数）の情報処理装置のうちの、２以上且つｎ−２以下の情報処理装置が前記第１更新グループに含まれるように、前記複数の装置グループの各々から情報処理装置を選択することを含む、
ことを特徴とする、付記１又は付記２に記載の情報処理装置。
【０１５８】
（付記４）
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個（ｎは１以上且つ３以下の整数）の情報処理装置のうちの、１以上且つｎ−１以下の情報処理装置が前記第１更新グループに含まれるように、前記複数の装置グループの各々から情報処理装置を選択することを含む、
ことを特徴とする、付記１又は付記２に記載の情報処理装置。
【０１５９】
（付記５）
前記情報処理システムに関する制御を行なう役割を割り当てられたことを特徴とする、付記３又は付記４に記載の情報処理装置。
【０１６０】
（付記６）
前記複数の情報処理装置のうちの、前記所定の選択条件に基づき選定したｎ−１個の情報処理装置に対して、前記情報処理システムに関する制御を行なう役割を割り当てる装置管理部をそなえる、
ことを特徴とする、付記５に記載の情報処理装置。
【０１６１】
（付記７）
複数の情報処理装置をそなえ、
前記複数の情報処理装置は、所定数の情報処理装置ごとに装置グループを構成し、
前記複数の情報処理装置のうちの第１の情報処理装置は、
前記複数の情報処理装置の各々に適用されたソフトウェアの更新を制御する制御部をそなえ、
前記制御部は、
所定の選択条件に基づき複数の前記装置グループの各々から１つずつ情報処理装置を選択し、選択した複数の情報処理装置を第１更新グループに割り当てる割当部と、
前記第１更新グループに属する前記複数の情報処理装置の各々に対して、当該情報処理装置に適用されたソフトウェアの更新指示を送信する送信部と、をそなえる
ことを特徴とする、情報処理システム。
【０１６２】
（付記８）
前記割当部は、前記複数の装置グループの各々において選択されなかった情報処理装置を第２更新グループに割り当て、
前記第１更新グループに属する前記複数の情報処理装置の各々に適用されたソフトウェアの更新の完了後に、前記第１更新グループに属する前記複数の情報処理装置のうちの第２の情報処理装置からの更新指示によって、前記第２更新グループに属する複数の情報処理装置の各々に適用されたソフトウェアの更新が行なわれる、
ことを特徴とする、付記７に記載の情報処理システム。
【０１６３】
（付記９）
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個（ｎは４以上の整数）の情報処理装置のうちの、２以上且つｎ−２以下の情報処理装置が前記第１更新グループに含まれるように、前記複数の装置グループの各々から情報処理装置を選択することを含む、
ことを特徴とする、付記７又は付記８に記載の情報処理システム。
【０１６４】
（付記１０）
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個（ｎは１以上且つ３以下の整数）の情報処理装置のうちの、１以上且つｎ−１以下の情報処理装置が前記第１更新グループに含まれるように、前記複数の装置グループの各々から情報処理装置を選択することを含む、
ことを特徴とする、付記７又は付記８に記載の情報処理システム。
【０１６５】
（付記１１）
前記第１の情報処理装置は、前記情報処理システムに関する制御を行なう役割を割り当てられたことを特徴とする、付記９又は付記１０に記載の情報処理システム。
【０１６６】
（付記１２）
前記第１の情報処理装置は、
前記複数の情報処理装置のうちの、前記所定の選択条件に基づき選定したｎ−１個の情報処理装置に対して、前記情報処理システムに関する制御を行なう役割を割り当てる装置管理部をそなえる、
ことを特徴とする、付記１１に記載の情報処理システム。
【０１６７】
（付記１３）
情報処理システムがそなえる複数のコンピュータのうちのいずれかのコンピュータに、
前記複数のコンピュータの各々に適用されたソフトウェアの更新を制御する、
処理を実行させ、
前記複数のコンピュータは、所定数のコンピュータごとに装置グループを構成し、
前記制御は、
所定の選択条件に基づき複数の前記装置グループの各々から１つずつコンピュータを選択し、選択した複数のコンピュータを第１更新グループに割り当て、
前記第１更新グループに属する前記複数のコンピュータの各々に対して、当該コンピュータに適用されたソフトウェアの更新指示を送信する
ことを特徴とする、制御プログラム。
【０１６８】
（付記１４）
前記割当は、前記複数の装置グループの各々において選択されなかったコンピュータを第２更新グループに割り当て、
前記第１更新グループに属する前記複数のコンピュータの各々に適用されたソフトウェアの更新の完了後に、前記第１更新グループに属する前記複数のコンピュータのうちのいずれかのコンピュータからの更新指示によって、前記第２更新グループに属する複数のコンピュータの各々に適用されたソフトウェアの更新が行なわれる、
ことを特徴とする、付記１３に記載の制御プログラム。
【０１６９】
（付記１５）
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個（ｎは４以上の整数）のコンピュータのうちの、２以上且つｎ−２以下のコンピュータが前記第１更新グループに含まれるように、前記複数の装置グループの各々からコンピュータを選択することを含む、
ことを特徴とする、付記１３又は付記１４に記載の制御プログラム。
【０１７０】
（付記１６）
前記所定の選択条件は、前記情報処理システムに関する制御を行なう役割を割り当てられたｎ個（ｎは１以上且つ３以下の整数）のコンピュータのうちの、１以上且つｎ−１以下のコンピュータが前記第１更新グループに含まれるように、前記複数の装置グループの各々からコンピュータを選択することを含む、
ことを特徴とする、付記１３又は付記１４に記載の制御プログラム。
【０１７１】
（付記１７）
前記コンピュータに、前記情報処理システムに関する制御を行なう役割を割り当てられたことを特徴とする、付記１５又は付記１６に記載の制御プログラム。
【０１７２】
（付記１８）
前記コンピュータに、
前記複数のコンピュータのうちの、前記所定の選択条件に基づき選定したｎ−１個のコンピュータに対して、前記情報処理システムに関する制御を行なう役割を割り当てる
処理を実行させることを特徴とする、付記１７に記載の制御プログラム。
【符号の説明】
【０１７３】
１    ストレージシステム
２    ノード
２１    メモリ部
２１１    構成情報
２１２    グループリスト
２１３    版数情報
２２    ＡＰＩ提供部
２３    マスタ候補ノード選択部
２４    グループ決定部
２５    ノード通信部
２６    更新処理部
２７    デバイス制御部
３    ストレージ
４    ホスト装置
【図１】
2018181194.tif 000003
【図２】
2018181194.tif 000004
【図３】
2018181194.tif 000005
【図４】
2018181194.tif 000006
【図５】
2018181194.tif 000007
【図６】
2018181194.tif 000008
【図７】
2018181194.tif 000009
【図８】
2018181194.tif 000010
【図９】
2018181194.tif 000011
【図１０】
2018181194.tif 000012
【図１１】
2018181194.tif 000013
【図１２】
2018181194.tif 000014