(57)【特許請求の範囲】
【請求項１】
クラスタに追加する複数のサーバの遠隔電源オンの指示を行い、前記サーバを動作させるためのソフトウェアイメージを、イメージリポジトリ装置に配信させるリモートブート装置が、
前記サーバそれぞれに遠隔電源オンの指示を送信するステップと、
前記ソフトウェアイメージを分割した断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成するステップと、
前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶するステップと、
前記サーバから自身の電源状態を電源オンに更新する指示を受信したとき、前記チェイン電源情報中の当該サーバの電源状態を電源オンに更新するステップと、を実行し、
前記イメージリポジトリ装置が、
前記ソフトウェアイメージを分割して断片を生成するステップと、
前記ソフトウェアイメージの断片に、その断片の識別情報を付加して、繰り返し送信するステップと、を実行し、
前記サーバが、
前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置に記憶されている前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得するステップと、
前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信するステップと、
前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するステップと、
受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送するステップと、
前記断片の識別情報がすべて記憶された際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信するステップと、
前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送するステップと、
前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させるステップと、
を実行することを特徴とするソフトウェアイメージ配信方法。
【請求項２】
前記サーバが、
前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバが無い場合、
前記イメージリポジトリ装置に、配信先を自身に指示する前記第１の配信先指示情報を送信するステップと、
前記第１の配信先指示情報を送信した前記イメージリポジトリ装置から前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するステップと、
前記ソフトウェアイメージの断片およびその断片の識別情報がすべて記憶された際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきている前記イメージリポジトリ装置に対して、自身が転送先としているサーバに転送先を変更するための前記第２の配信先指示情報を送信するステップと、
を実行することを特徴とする請求項１に記載のソフトウェアイメージ配信方法。
【請求項３】
前記サーバが、
前記更新後のチェイン電源情報を参照して、自身のサーバの順序が前記チェインの終端の場合、または、自身より前記チェインの後尾側で電源オンとなっているサーバが無い場合、
前記ソフトウェアイメージの断片およびその断片の識別情報の転送を止めるステップを実行することを特徴とする請求項１または請求項２に記載のソフトウェアイメージ配信方法。
【請求項４】
クラスタに追加する複数のサーバと、前記サーバを動作させるためのソフトウェアイメージを配信するイメージリポジトリ装置と、前記サーバの遠隔電源オンの指示を行い、前記ソフトウェアイメージをイメージリポジトリ装置に配信させるリモートブート装置とを備えるソフトウェアイメージ配信システムであって、
前記リモートブート装置が、
前記サーバそれぞれに遠隔電源オンの指示を送信する遠隔電源管理部と、
前記ソフトウェアイメージを分割した断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成する処理と、前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶する処理と、前記サーバから自身の電源状態を電源オンに更新する指示を受信したとき、前記チェイン電源情報中の当該サーバの電源状態を電源オンに更新する処理とを実行するチェイン生成管理部と、を備え、
前記イメージリポジトリ装置が、
前記ソフトウェアイメージを分割して断片を生成するチャンク分割部と、
前記ソフトウェアイメージの断片に、その断片の識別情報を付加して、繰り返し送信するチャンク送信部と、を備え、
前記サーバが、
前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置に記憶されている前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得する処理と、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信する処理と、前記ソフトウェアイメージの断片およびその断片の識別情報をすべて受信して記憶した際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する処理と、を実行する配信先変更部と、
前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するチャンク受信部と、
受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送する処理と、前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送する処理と、を実行するチャンク転送部と、
前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させる選択的ブート部と、
を備えることを特徴とするソフトウェアイメージ配信システム。
【請求項５】
クラスタに追加する複数のサーバと、前記サーバを動作させるためのソフトウェアイメージを分割した断片にして繰り返し配信するイメージリポジトリ装置と、前記サーバの遠隔電源オンの指示を行い、前記ソフトウェアイメージをイメージリポジトリ装置に配信させるリモートブート装置とを備えるソフトウェアイメージ配信システムにおける前記サーバであって、
前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置によって実行される、前記ソフトウェアイメージの断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成し、前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶する処理によって生成される前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得する処理と、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信する処理と、前記ソフトウェアイメージの断片およびその断片の識別情報をすべて受信して記憶した際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する処理と、を実行する配信先変更部と、
前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するチャンク受信部と、
受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送する処理と、前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送する処理と、を実行するチャンク転送部と、
前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させる選択的ブート部と、
を備えることを特徴とするサーバ。
【請求項６】
前記配信先変更部は、
前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバが無い場合、
前記イメージリポジトリ装置に、配信先を自身に指示する前記第１の配信先指示情報を送信する処理と、前記ソフトウェアイメージの断片およびその断片の識別情報がすべて記憶された際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきている前記イメージリポジトリ装置に対して、自身が転送先としているサーバに転送先を変更するための前記第２の配信先指示情報を送信する処理とを実行し、
前記チャンク受信部は、前記第１の配信先指示情報を送信した前記イメージリポジトリ装置から前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶する
ことを特徴とする請求項５に記載のサーバ。
【請求項７】
前記配信先変更部が、前記更新後のチェイン電源情報を参照して、自身のサーバの順序が前記チェインの終端の場合、または、自身より前記チェインの後尾側で電源オンとなっているサーバが無い場合、
前記チャンク転送部は、前記ソフトウェアイメージの断片およびその断片の識別情報の転送を止めることを特徴とする請求項５または請求項６に記載のサーバ。
【請求項８】
クラスタに追加する複数のサーバと、前記サーバを動作させるためのソフトウェアイメージを分割した断片にして繰り返し配信するイメージリポジトリ装置と、前記サーバの遠隔電源オンの指示を行い、前記ソフトウェアイメージをイメージリポジトリ装置に配信させるリモートブート装置とを備えるソフトウェアイメージ配信システムにおける前記サーバを動作させるためのプログラムであって、
コンピュータに、
前記サーバが前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置によって実行される、前記ソフトウェアイメージの断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成し、前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶する処理によって生成される前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得するステップと、
前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信するステップと、
前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するステップと、
受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送するステップと、
前記ソフトウェアイメージの断片およびその断片の識別情報をすべて受信して記憶した際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信するステップと、
前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送するステップと、
前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させるステップと、
を前記サーバの機能として実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステムの各サーバへソフトウェアイメージを配信する技術に関する。
【背景技術】
【０００２】
近年では、クラスタ化されたサーバ群をあたかも１台のサーバとして扱い、クラスタに対してサーバを動的に追加または削除することにより、柔軟に資源の割り当てを行うことが可能なクラスタシステムの技術が、通信サービスの分野に導入されてきている（非特許文献１参照）。このクラスタシステムの技術の導入により、通信ネットワーク設備の低コスト化や高可用化が期待されている。
【０００３】
クラスタシステムでは、サービスの需要増時や、そのサービスを提供しているサーバが障害によって離脱した場合に速やかに補充できるようにするために、ある程度の余剰資源となるサーバをサーバプールに集約している。そして、需要増時や、障害（災害）等によって失われた資源の補充時に、サーバプールから、必要な資源分の台数のサーバをクラスタに追加することによって、全体の設備利用効率を向上させる技術が検討されている（非特許文献２参照）。
【０００４】
余剰資源が集約された共用のサーバプールから、サーバをクラスタに追加する場合、サーバプール内に保持されているサーバが、どのようなサービスに割り当てられるかが事前に分からない。そのため、サーバプール内に保持されているサーバは、ソフトウェアを何も有していない状態になっている。クラスタに追加することが決定した際には、組み入れ先のサービス提供に必要なソフトウェア構成を含むソフトウェアイメージ（オペレーションシステム、ミドルウェア、アプリケーション等）を、リポジトリから、追加対象のサーバに送信する。そして、追加対象のサーバは、受信したソフトウェアイメージをローカル記憶部（例えば、ローカルディスク）に保存（記憶）して再起動し、ローカル記憶部に保存（記憶）したソフトウェア構成を有効にして、クラスタシステムとして動作する。
【０００５】
ソフトウェアイメージは、一般的に大容量であるため、リポジトリから追加対象のサーバへ送信するために、ある程度の時間を要する。ここで、急な需要増や障害復旧時にもサービスの可用性低下を防ぐためには、複数のサーバがサーバ資源として同時に要求されたとしても、高速にソフトウェアイメージを配信して起動する必要がある。
【０００６】
そのため、非特許文献２（特に、図７参照）では、各サーバには、事前にソフトウェアイメージ受信用プログラムを有する小型ＯＳ（オペレーションシステム）が備えてあり、サーバの動的追加時には、まず、リモートブートサーバからの遠隔起動指示に従って、その小型ＯＳによって起動する。そして、小型ＯＳによってすべてのサーバが起動した後、小型ＯＳによって起動したサーバは、予め決められた順番（配信順序）で、伝言ゲームのように順送りで、必要なソフトウェアイメージを、前の順番のサーバから受信して記憶し、次の順番のサーバに転送していく。このようにして、ソフトウェアイメージを受信し記憶したサーバは、記憶したソフトウェアイメージに含まれるオペレーションシステムによって再起動し、サービス提供を開始する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Mobicents、[online]、[平成23年6月7日検索]、インターネット、<URL:http://www.mobicents.org/>
【非特許文献２】西村豪生他、「高可用ネットワークサーバの資源運用柔軟化に向けた高速リモートブート機構」、信学技報、NS2010-148、p.37-42、Jan、2011
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、非特許文献２に記載の技術は、予め決められた順番で、伝言ゲームのように順送りで、必要なソフトウェアイメージを転送していくため、サーバの小型ＯＳの起動タイミングがばらついた場合に、最も遅く立ち上がったサーバに依存して、転送開始が遅くなり、ソフトウェアイメージの転送に時間がかかってしまうという問題がある。
【０００９】
そこで、本発明は、複数のサーバをクラスタに組み込むときにサーバの起動時間がばらつく場合であっても、迅速に組み込める手段を提供することを課題とする。
【課題を解決するための手段】
【００１０】
本発明のソフトウェアイメージ配信方法は、クラスタに追加する複数のサーバの遠隔電源オンの指示を行い、前記サーバを動作させるためのソフトウェアイメージを、イメージリポジトリ装置に配信させるリモートブート装置が、前記サーバそれぞれに遠隔電源オンの指示を送信するステップと、前記ソフトウェアイメージを分割した断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成するステップと、前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶するステップと、前記サーバから自身の電源状態を電源オンに更新する指示を受信したとき、前記チェイン電源情報中の当該サーバの電源状態を電源オンに更新するステップと、を実行し、前記イメージリポジトリ装置が、前記ソフトウェアイメージを分割して断片を生成するステップと、前記ソフトウェアイメージの断片に、その断片の識別情報を付加して、繰り返し送信するステップと、を実行し、前記サーバが、前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置に記憶されている前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得するステップと、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信するステップと、前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するステップと、受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送するステップと、前記断片の識別情報がすべて記憶された際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信するステップと、前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送するステップと、前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させるステップと、を実行することを特徴とする。
また、本発明のソフトウェアイメージ配信システムは、前記ステップを処理する機能を備えている。
【００１１】
このような構成によれば、チェインに配列された各サーバは、チェイン電源情報を参照することによって、チェインの中で、自身の前後において何れのサーバが既に電源オンとなっているかを把握する。そして、サーバは、自身よりチェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信し、ソフトウェアイメージの断片の転送に加わることができる。また、サーバは、ソフトウェアイメージの断片の識別情報をすべて受信して記憶した場合、チェインから離脱するために、ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する。そして、サーバは、記憶したソフトウェアイメージに基づいて再起動する。すなわち、サーバは、起動すると他のサーバの起動を待つことなく、ソフトウェアイメージの断片を転送するチェインに加わって、その断片を受信し記憶し転送し、すべての断片を記憶した場合、チェインから離脱して再起動することができる。したがって、複数のサーバをクラスタに組み込むときにサーバの起動時間がばらつく場合であっても、サーバを迅速にクラスタに組み込むことができる。
【００１２】
また、本発明は、前記ソフトウェアイメージ配信方法において、前記サーバが、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバが無い場合、前記イメージリポジトリ装置に、配信先を自身に指示する前記第１の配信先指示情報を送信するステップと、前記第１の配信先指示情報を送信した前記イメージリポジトリ装置から前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するステップと、前記ソフトウェアイメージの断片およびその断片の識別情報がすべて記憶された際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきている前記イメージリポジトリ装置に対して、自身が転送先としているサーバに転送先を変更するための前記第２の配信先指示情報を送信するステップと、を実行することを特徴とする。
【００１３】
このような構成によれば、サーバは、自身よりチェインの先頭側で電源オンとなっているサーバが無い場合、イメージリポジトリ装置に、配信先を自身に指示する第１の配信先指示情報を送信し、ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶する。そして、サーバは、ソフトウェアイメージの断片およびその断片の識別情報がすべて記憶された際に、イメージリポジトリ装置に対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する。このようにして、サーバは、自身よりチェインの先頭側で電源オンとなっているサーバが無い場合には、他のサーバの起動を待つことなく、直接イメージリポジトリ装置からソフトウェアイメージの断片およびその断片の識別情報を受信することができる。したがって、複数のサーバをクラスタに組み込むときにサーバの起動時間がばらつく場合であっても、サーバを迅速にクラスタに組み込むことができる。
【００１４】
また、本発明は、前記ソフトウェアイメージ配信方法において、前記サーバが、前記更新後のチェイン電源情報を参照して、自身のサーバの順序が前記チェインの終端の場合、または、自身より前記チェインの後尾側で電源オンとなっているサーバが無い場合、前記ソフトウェアイメージの断片およびその断片の識別情報の転送を止めるステップを実行することを特徴とする。
【００１５】
このような構成によれば、サーバは、ソフトウェアイメージの断片およびその断片の識別情報の転送を、必要が無い場合には止めることができる。つまり、当該サーバは、自身よりチェインの後尾側のサーバの起動時間にしばられることがない。したがって、複数のサーバをクラスタに組み込むときにサーバの起動時間がばらつく場合であっても、サーバを迅速にクラスタに組み込むことができる。
【００１６】
また、本発明のサーバは、クラスタに追加する複数のサーバと、前記サーバを動作させるためのソフトウェアイメージを分割した断片にして繰り返し配信するイメージリポジトリ装置と、前記サーバの遠隔電源オンの指示を行い、前記ソフトウェアイメージをイメージリポジトリ装置に配信させるリモートブート装置とを備えるソフトウェアイメージ配信システムにおける前記サーバであって、前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置によって実行される、前記ソフトウェアイメージの断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成し、前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶する処理によって生成される前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得する処理と、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信する処理と、前記ソフトウェアイメージの断片およびその断片の識別情報をすべて受信して記憶した際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する処理と、を実行する配信先変更部と、前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するチャンク受信部と、受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送する処理と、前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送する処理と、を実行するチャンク転送部と、前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させる選択的ブート部と、を備えることを特徴とする。
【００１７】
また、本発明は、前記サーバにおいて、前記配信先変更部が、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバが無い場合、前記イメージリポジトリ装置に、配信先を自身に指示する前記第１の配信先指示情報を送信する処理と、前記ソフトウェアイメージの断片およびその断片の識別情報がすべて記憶された際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきている前記イメージリポジトリ装置に対して、自身が転送先としているサーバに転送先を変更するための前記第２の配信先指示情報を送信する処理とを実行し、前記チャンク受信部は、前記第１の配信先指示情報を送信した前記イメージリポジトリ装置から前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶することを特徴とする。
【００１８】
また、本発明は、前記サーバにおいて、前記配信先変更部が、前記更新後のチェイン電源情報を参照して、自身のサーバの順序が前記チェインの終端の場合、または、自身より前記チェインの後尾側で電源オンとなっているサーバが無い場合、前記チャンク転送部が、前記ソフトウェアイメージの断片およびその断片の識別情報の転送を止めることを特徴とする。
【００１９】
このような構成によれば、チェインに配列された各サーバは、チェイン電源情報を参照することによって、チェインの中で、自身の前後において何れのサーバが既に電源オンとなっているかを把握する。そして、サーバは、自身よりチェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信し、ソフトウェアイメージの断片の転送に加わることができる。また、サーバは、ソフトウェアイメージの断片の識別情報をすべて受信して記憶した場合、チェインから離脱するために、ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する。そして、サーバは、記憶したソフトウェアイメージに基づいて再起動する。すなわち、サーバは、起動すると他のサーバの起動を待つことなく、ソフトウェアイメージの断片を転送するチェインに加わって、その断片を受信し記憶し転送し、すべての断片を記憶した場合、チェインから離脱して再起動することができる。
また、サーバは、自身よりチェインの先頭側で電源オンとなっているサーバが無い場合、イメージリポジトリ装置に、配信先を自身に指示する第１の配信先指示情報を送信し、ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶する。そして、サーバは、ソフトウェアイメージの断片およびその断片の識別情報がすべて記憶された際に、イメージリポジトリ装置に対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信する。このようにして、サーバは、自身よりチェインの先頭側で電源オンとなっているサーバが無い場合には、他のサーバの起動を待つことなく、直接イメージリポジトリ装置からソフトウェアイメージの断片およびその断片の識別情報を受信することができる。
また、サーバは、ソフトウェアイメージの断片およびその断片の識別情報の転送を、必要が無い場合には止めることができる。つまり、当該サーバは、自身よりチェインの後尾側のサーバの起動時間にしばられることがない。
したがって、複数のサーバをクラスタに組み込むときにサーバの起動時間がばらつく場合であっても、サーバを迅速にクラスタに組み込むことができる。
【００２０】
また、本発明のプログラムは、クラスタに追加する複数のサーバと、前記サーバを動作させるためのソフトウェアイメージを分割した断片にして繰り返し配信するイメージリポジトリ装置と、前記サーバの遠隔電源オンの指示を行い、前記ソフトウェアイメージをイメージリポジトリ装置に配信させるリモートブート装置とを備えるソフトウェアイメージ配信システムにおける前記サーバを動作させるためのプログラムであって、コンピュータに、前記サーバが前記遠隔電源オンの指示に基づいて、起動した場合、前記リモートブート装置によって実行される、前記ソフトウェアイメージの断片を前記サーバ間で転送するときの前記サーバの順序を生成し、その順序の先頭に前記イメージリポジトリ装置を配列したチェインを生成し、前記チェインに配列された前記サーバと、前記サーバの電源状態とを関連付けたチェイン電源情報を生成し記憶する処理によって生成される前記チェイン電源情報中の自身の電源状態を電源オンに更新する指示を送信するとともに、更新後のチェイン電源情報を取得するステップと、前記更新後のチェイン電源情報を参照して、自身より前記チェインの先頭側で電源オンとなっているサーバ中で順序の最も近いサーバに、配信先を自身に指示する第１の配信先指示情報を送信するステップと、前記第１の配信先指示情報を送信したサーバから前記ソフトウェアイメージの断片およびその断片の識別情報を受信し、自身の記憶部に記憶するステップと、受信した前記ソフトウェアイメージの断片およびその断片の識別情報を、自身より前記チェインの後尾側で電源オンとなっているサーバ中で順序の最も近いサーバに転送するステップと、前記ソフトウェアイメージの断片およびその断片の識別情報をすべて受信して記憶した際に、前記ソフトウェアイメージの断片およびその断片の識別情報を直接送信してきているサーバに対して、自身が転送先としているサーバに転送先を変更するための第２の配信先指示情報を送信するステップと、前記第２の配信先指示情報を受信した場合には、前記第２の配信先指示情報に基づいて配信先を変更して、前記ソフトウェアイメージの断片およびその断片の識別情報を転送するステップと、前記自身の記憶部に記憶されたソフトウェアイメージに基づいて自身のサーバを再起動させるステップと、を前記サーバの機能として実行させることを特徴とする。
【００２１】
このようなプログラムによれば、一般的なコンピュータを、本発明のサーバとして機能させることができる。
【発明の効果】
【００２２】
本発明によれば、複数のサーバをクラスタに組み込むときにサーバの起動時間がばらつく場合であっても、迅速に組み込むことができる。
【図面の簡単な説明】
【００２３】
【図１】ソフトウェアイメージ配信システムの構成例を示す図である。
【図２Ａ】本実施形態のソフトウェアイメージ配信システムにおけるチャンクの転送処理を概念的に示す図である。
【図２Ｂ】本実施形態のソフトウェアイメージ配信システムにおけるチャンクの転送処理を概念的（つづき）に示す図である。
【図３】図２のリモートブート装置、イメージリポジトリ装置およびサーバの構成例を示す図である。
【図４】図３のサーバ情報の例を示す図である。
【図５】図３のイメージ情報の例を示す図である。
【図６Ａ】ソフトウェアイメージ配信システムのシーケンス例を示す図である。
【図６Ｂ】ソフトウェアイメージ配信システムのシーケンス例（つづき）を示す図である。
【図７】図３のチェイン電源情報の推移を例示した図であり、（ａ）は初期状態を表し、（ｂ）は第１ステップの状態を表し、（ｃ）は第２ステップの状態を表し、（ｄ）は第３ステップの状態を表す。
【図８】図３のチェイン更新情報の推移を例示した図であり、（ａ）は初期状態を表し、（ｂ）は第４ステップの状態を表し、（ｃ）は第５ステップの状態を表し、（ｄ）は第６ステップの状態を表す。
【図９】比較例におけるチャンクの転送処理を概念的に示す図である。
【図１０】比較例におけるチャンクの転送順の一例を示す図であり、（ａ）は、帯域の利用効率が悪い場合を表し、（ｂ）は、帯域の利用効率が良い場合を表す。
【発明を実施するための形態】
【００２４】
本発明を実施するための形態（以降、「本実施形態」と称す。）について、適宜図面を参照しながら詳細に説明する。
【００２５】
本実施形態におけるソフトウェアイメージ配信システムの構成例について、図１を用いて説明する。
【００２６】
ソフトウェアイメージ配信システム１は、サービスを提供するための資源である複数のサーバ３００と、サーバ３００を遠隔起動するリモートブート装置１００と、ソフトウェアイメージの配信元となるイメージリポジトリ装置２００とを備える。リモートブート装置１００、イメージリポジトリ装置２００、サーバ３００は、管理ネットワーク４００で通信可能に接続される。遠隔起動指示やソフトウェアイメージの配信は、この管理ネットワーク４００を介して行われる。また、端末６００は、サービスネットワーク５００を介してサーバ３００と通信可能に接続され、各サーバ３００が提供するサービスを受けることができる。なお、図１では、サーバ３００が５台記載されているが、５台に限らなくてもよい。
【００２７】
リモートブート装置１００は、保守者の端末装置（不図示）からサーバ３００のリモートブート（遠隔起動）要求を受け付けると、必要台数のサーバ３００を遠隔起動するとともに、ソフトウェアイメージをサーバへ配信する順序（配信順序）を決定する。そして、リモートブート装置１００は、イメージリポジトリ装置２００に対し、配信順序に基づいて、起動したサーバ３００へのソフトウェアイメージの配信を指示する。なお、リモートブート装置１００、イメージリポジトリ装置２００、サーバ３００の構成および動作の詳細については、後記する。
【００２８】
（比較例）
ここで、比較例として、ソフトウェアイメージの配信例について、図９を用いて説明する。
リモートブート装置１００は、図９に示すように、イメージリポジトリ装置２００を先頭にして、起動対象のサーバ３００を論理的に一列（チェイン状）に並べる。イメージリポジトリ装置２００は、この並べた起動対象のサーバ３００（サービスを提供するサーバ群であるクラスタへの追加対象サーバ）に対して、ソフトウェアイメージを配信する。その際、ソフトウェアイメージをいくつかの断片（チャンク）に分割し、チャンク単位で配信順序（チェイン）に沿って、各サーバ３００へ配信する。つまり、各サーバ３００は、チャンクを受信すると、自身のローカル記憶部（例えば、ローカルディスク）に保存（記憶）するとともに、順次、この受信したチャンクをチェインの次のサーバ３００へバケツリレー式に転送する。このようにして、各サーバ３００は、受信したチャンクを自身に保存（記憶）していくことで、ソフトウェアイメージ全体を受信することができる。
【００２９】
なお、チェインは、ネットワークトポロジを考慮して決められる。例えば、図１０（ａ）（ｂ）には、１台のイメージリポジトリ装置２００と４台のサーバ３００（３００Ａ，３００Ｂ，３００Ｃ，３００Ｄ）と３台のスイッチ７００（７００Ａ，７００Ｂ，７００Ｃ）とで構成されるネットワークが表されている。
図１０（ａ）は、チェインを、（０）→（１）→（２）→（３）→（４）の順として、各チャンクを順次配信していく場合を実線矢印で表している。この場合には、スイッチ７００をまたいだ通信が多く発生し、１つのリンク上で複数の通信が同時に行われるため、ネットワークの通信帯域の利用効率が悪くなる可能性がある。
【００３０】
それに対して、図１０（ｂ）は、チェインを、（０）→（１）→（２）→（３）→（４）の順として、各チャンクを順次配信していく場合を実線矢印で表している。この場合には、経由するスイッチ数（スイッチまたぎの数）が、図１０（ａ）の場合に比べて少なくなる。つまり、１つのリンク上で複数の通信が同時に行われる可能性が低くなるため、ネットワークの通信帯域の利用効率を、図１０（ａ）の場合よりも良くすることができる。
しかしながら、図１０（ｂ）のチェインにおいて、例えば、サーバ３００Ａの起動時間が著しく遅かった場合、サーバ３００Ｂ，３００Ｃ，３００Ｄが配信を開始する時間が遅くなるため、ソフトウェアイメージの配信に時間が掛かるという虞が想定される。そこで、以下に、サーバ３００の起動時間がばらつく場合であっても、迅速に複数のサーバ３００をクラスタに組み込むことができるようにする、本実施形態におけるソフトウェアイメージ配信システム１について説明する。
【００３１】
（概要）
まず、本実施形態におけるソフトウェアイメージ配信システム１の概要について、図２Ａ、図２Ｂを用いて、以下に説明する。
図２Ａ、図２Ｂでは、１台のイメージリポジトリ装置２００と３台のサーバ３００（３００ａ，３００ｂ，３００ｃ）とで、イメージリポジトリ装置２００を先頭とするチェインを論理的に構成した場合が例示されている。そして、イメージリポジトリ装置２００が配信するチャンクは、チャンクの識別情報（チャンクＩＤ）１〜１００が付されたものとする。なお、サーバ３００の台数は、３台に限られなくてもよい。
【００３２】
図２Ａに示すように、第１ステップでは、サーバＣ（３００ｃ）が最初に起動した場合に、イメージリポジトリ装置２００は、未起動のサーバＡ（３００ａ）、サーバＢ（３００ｂ）を飛ばして、チャンクの配信を開始する。そして、イメージリポジトリ装置２００によってチャンクＩＤが１〜１０のチャンク（以降、チャンク１〜１０のように記載する。）が配信されていれば、サーバＣ（３００ｃ）は、チャンク１〜１０を受信し、自身のローカル記憶部に記憶することになる。
【００３３】
次に、第２ステップでは、サーバＡ（３００ａ）が起動した場合に、イメージリポジトリ装置２００は、サーバＡ（３００ａ）にチャンク１１以降の配信を開始する。また、サーバＡ（３００ａ）は、未起動のサーバＢ（３００ｂ）を飛ばして、サーバＣ（３００ｃ）に受信したチャンクを転送する。そして、イメージリポジトリ装置２００がチャンク１１〜２０を配信していれば、サーバＡ（３００ａ）はチャンク１１〜２０を受信して自身のローカル記憶部に記憶し、サーバＣ（３００ｃ）はチャンク１１〜２０を受信して自身のローカル記憶部にチャンク１〜２０を記憶することになる。
【００３４】
第３ステップでは、サーバＢ（３００ｂ）が起動し、すべてのサーバ３００が起動状態となる。この場合には、イメージリポジトリ装置２００が配信するチャンク２１〜１００は、サーバＡ（３００ａ）、サーバＢ（３００ｂ）、サーバＣ（３００ｃ）の順で、バケツリレー式に受信、保存（記憶）、転送が実行される。そして、サーバＡ（３００ａ）はチャンク１１〜１００をローカル記憶部に記憶し、サーバＢ（３００ｂ）はチャンク２１〜１００をローカル記憶部に記憶し、サーバＣ（３００ｃ）はチャンク１〜１００をローカル記憶部に記憶することになる。
【００３５】
次に、図２Ｂに示すように、第４ステップでは、イメージリポジトリ装置２００は、先頭のチャンク（チャンク１）から再配信を開始する。また、サーバＣ（３００ｃ）は、すべてのチャンクを記憶したので、チェインから離脱し、受信したソフトウェアイメージに含まれるソフトウェア構成を有効にするために再起動する。
イメージリポジトリ装置２００がチャンク１〜１０を再配信していれば、サーバＡ（３００ａ）はチャンク１〜１０を受信して自身のローカル記憶部に記憶することにより、すべてのチャンクを記憶したことになる。また、サーバＢ（３００ｂ）は、チャンク１〜１０を受信して、自身のローカル記憶部にチャンク１〜１０、２１〜１００を記憶したことになる。
【００３６】
第５ステップでは、サーバＡ（３００ａ）は、すべてのチャンクを受信したので、チェインから離脱し、受信したソフトウェアイメージに含まれるソフトウェア構成を有効にするために再起動する。そのため、イメージリポジトリ装置２００は、サーバＢ（３００ｂ）にチャンク１１以降を再配信する。
イメージリポジトリ装置２００がチャンク１１以降を再配信しているので、サーバＢ（３００ｂ）はチャンク１１〜２０を受信して自身のローカル記憶部に記憶することになり、すべてのチャンクを受信したことになる。
【００３７】
第６ステップでは、サーバＢ（３００ｂ）は、すべてのチャンクを受信したので、チェインから離脱し、受信したソフトウェアイメージに含まれるソフトウェア構成を有効にするために再起動する。そして、イメージリポジトリ装置２００は、配信対象が無くなったため、チャンクの配信を終了する。
【００３８】
以上説明したように、本実施形態におけるソフトウェアイメージ配信システム１は、複数のサーバ３００をクラスタに組み込むときに、サーバ３００の起動時間がばらつく場合であっても、起動したサーバ３００を用いてバケツリレー式にチャンクを転送する。そして、起動が遅れたサーバ３００は、イメージリポジトリ装置２００が再度先頭のチャンクから再配信するので、すべてのチャンクを記憶することができる。また、すべてのチャンクを記憶したサーバ３００は、チェインから離脱し、再起動して、クラスタに迅速に組み込むことができる。
次に、リモートブート装置１００、イメージリポジトリ装置２００、サーバ３００の構成例の詳細について、以下に説明する。
【００３９】
（リモートブート装置）
まず、リモートブート装置１００の構成例について、図３を用いて説明する。
リモートブート装置１００は、図３に示すように、ブート要求受付部１１０、遠隔電源管理部１２０、サーバ情報管理部１３０、チェイン生成管理部１４０、チェイン送信部１５０、および記憶部１６０を備えている。
ブート要求受付部１１０、遠隔電源管理部１２０、サーバ情報管理部１３０、チェイン生成管理部１４０、およびチェイン送信部１５０は、図示しないＣＰＵ（Central Processing Unit）およびメインメモリによって構成される処理部（不図示）が記憶部１６０に記憶されているアプリケーションプログラムをメインメモリに展開して具現化される。また、記憶部１６０は、サーバ情報１３１と、チェイン電源情報１４１とを記憶している。
【００４０】
ブート要求受付部１１０は、保守者の端末装置等から起動対象のサーバ３００の追加台数および追加対象のサーバ３００へ配信するソフトウェアイメージの識別情報（イメージＩＤ）を含むリモートブート要求を受け付ける機能を有する。リモートブート要求は、保守者の端末装置等の外部端末からネットワーク経由で受け付けてもよいし、リモートブート装置１００に直接接続された入力装置経由で受け付けてもよい。
【００４１】
遠隔電源管理部１２０は、起動対象のサーバ３００を選択し、このサーバ３００を遠隔電源ＯＮ（遠隔起動）する。遠隔電源ＯＮは、例えば、ＩＰＭＩ（Intelligent Platform Management Interface）やＷｏＬ（Wake on LAN）等を用いて行われる。
【００４２】
サーバ情報管理部１３０は、サーバ情報１３１の読み出しおよび書き込みを行う機能を有する。このサーバ情報１３１は、図４に例示するように、サーバ３００の識別情報であるサーバＩＤごとに、このサーバ３００の遠隔操作用アドレス、転送用アドレス、およびサーバ３００の状態を示すサーバ状態を関連付けて記憶している。
遠隔操作用アドレスは、遠隔電源管理部１２０によって、サーバ３００の電源をＯＮする際に用いるアドレスである。図４の例では、サーバ３００が遠隔電源ＯＮにＩＰＭＩを用いることを想定しており、ＩＰ（Internet Protocol）アドレスが値として格納されている。転送用アドレスは、当該サーバ３００にソフトウェアイメージを転送する際に用いるネットワークアドレスである。また、サーバ状態は、そのサーバ３００が資源として利用可能であるか否か（クラスタに追加可能であるか否か）を示す情報である。図４の例では、サーバ状態を、「利用可能」、「利用中」、「利用不可」のいずれかとしている。「利用可能」は、資源として利用可能な（待機中の）サーバ３００を表す。「利用中」は、現在何らかのサービスを提供しており、クラスタに追加できないサーバ３００を表す。「利用不可」は、故障等の理由で利用不可となっているサーバ３００を表す。
【００４３】
図３に戻り、チェイン生成管理部１４０は、チェインを生成するとともに、チェイン電源情報１４１の読み出しおよび書き込み（記憶）を行う機能を有する。チェインとは、イメージリポジトリ装置２００および起動対象の各サーバ３００間でソフトウェアイメージの断片（チャンク）を転送するときの順序のことである。また、チェインは、図１０（ｂ）に示すようなネットワークトポロジに係る情報を用いて生成される。また、チェイン電源情報１４１は、その詳細については後記するが、図７に示すように、チェインに配列されたサーバ３００ごとに、そのサーバ３００の電源状態がＯＮ（起動）かＯＦＦ（未起動）かを記憶している。
また、チェイン生成管理部１４０は、チェインを生成する際に用いる、ネットワークトポロジに係る情報の読み出しおよび書き込みを行う機能を有する。
【００４４】
チェイン送信部１５０は、ブート要求受付部１１０によって取得されたリモートブート要求に基づいて、ソフトウェアイメージのイメージＩＤおよびチェイン生成管理部１４０によって生成されたチェインをイメージリポジトリ装置２００に送信する機能を有し、ソフトウェアイメージの配信開始を指示する。
【００４５】
（イメージリポジトリ装置）
次に、イメージリポジトリ装置２００の構成例について、図３を用いて説明する。
イメージリポジトリ装置２００は、図３に示すように、配信要求受付部２１０、チェイン情報管理部２２０、イメージ配信部２３０、および記憶部２４０を備えている。
配信要求受付部２１０、チェイン情報管理部２２０、およびイメージ配信部２３０は、図示しないＣＰＵおよびメインメモリによって構成される処理部（不図示）が記憶部２４０に記憶されているアプリケーションプログラムをメインメモリに展開して具現化される。また、記憶部２４０は、チェイン更新情報２２１と、イメージ情報２３４と、図示しないソフトウェアイメージとを記憶している。
【００４６】
配信要求受付部２１０は、管理ネットワーク４００経由で、リモートブート装置１００から、イメージＩＤおよびチェインに関する情報（チェイン情報）の送信を受け付ける機能を有する。
【００４７】
チェイン情報管理部２２０は、チェイン更新情報２２１の更新を行う機能を有する。このチェイン更新情報２２１は、その詳細については後記するが、図８に示すように、チェインに配列されたサーバ３００がチェインから離脱するたびに、その離脱したサーバ３００を削除することによって、チェインに残っているサーバ３００を表している。つまり、イメージリポジトリ装置２００は、チェイン更新情報２２１を参照しつつ、チェイン更新情報２２１からチェインに配列されたサーバ３００すべてが削除されたとき、チャンクの配信を終了する。ただし、チャンクの１巡目の配信が終了しても、サーバ３００のいずれかが未起動（電源ＯＦＦ）のケースでは、このチェイン更新情報２２１が必要となるが、チャンクの１巡目の配信が終了する前に、サーバ３００すべてが起動（電源ＯＮ）されるケースでは、無くても構わない。
【００４８】
図３に戻り、イメージ配信部２３０は、配信先受付部２３１、チャンク分割部２３２、およびチャンク送信部２３３を備える。
配信先受付部２３１は、電源ＯＮになったサーバ３００からチャンクの配信先を自身に指示する配信先指示情報（第１の配信先指示情報）を受け付ける機能を有する。
チャンク分割部２３２は、イメージ情報２３４（図５参照）を参照して、イメージＩＤに対応する配信対象のソフトウェアイメージを読み出し、読み出したソフトウェアイメージをチャンクに分割する機能を有する。チャンクのサイズは、保守者やコンフィグによって予め所定値に定められていてもよく、また配信中に回線の混み具合に応じて動的に可変としてもよい。なお、イメージ情報２３４は、図５に示すように、イメージＩＤごとに、そのイメージＩＤのソフトウェアイメージにアクセスするためのパスを示した情報を関連付けている。
チャンク送信部２３３は、第１の配信先指示情報を送信してきたサーバ３００を配信先としてチャンクを送信する機能を有する。また、チャンク送信部２３３は、チェイン更新情報２２１を参照しつつ、チャンクの配信終了時まで再送を繰り返す。
【００４９】
（サーバ）
次に、サーバ３００の構成例について、図３を用いて説明する。
サーバ３００は、図３に示すように、ブート部３１０、イメージ配信部３２０、および記憶部３３０を備えている。
ブート部３１０およびイメージ配信部３２０は、図示しないＣＰＵおよびメインメモリによって構成される処理部（不図示）が記憶部３３０に記憶されているアプリケーションプログラムをメインメモリに展開して具現化される。また、記憶部３３０は、チャンク情報３２４を記憶している。
【００５０】
ブート部３１０は、遠隔管理受付部３１１と、選択的ブート部３１２とを備える。
遠隔管理受付部３１１は、ＩＰＭＩ等により、リモートブート装置１００から遠隔電源ＯＮ（遠隔起動）を受け付ける機能を有する。
選択的ブート部３１２は、ソフトウェアイメージに含まれるブート対象のソフトウェアを選択して、自身を起動する機能を有する。この選択的ブート部３１２は、例えば、ＧＲＵＢ（GRand Unified Bootloader）等のブートローダである。そして、サーバ３００は、チャンクのすべてを受信して、記憶部３３０に記憶し、選択的ブート部３１２によって再起動する。
【００５１】
イメージ配信部３２０は、配信先変更部３２１、チャンク受信部３２２、およびチャンク転送部３２３を備える。
配信先変更部３２１は、自身のサーバ３００が起動したとき、リモートブート装置１００から取得したチェイン電源情報１４１に基づいて、自身のサーバ３００よりチェインの先頭側にある電源ＯＮとなっているサーバ３００の中で順序の最も近いサーバ３００、または電源ＯＮのサーバ３００が無い場合にはイメージリポジトリ装置２００に対して、チャンクの配信先を自身のサーバ３００に変更する指示を示す配信先指示情報（第１の配信先指示情報）を送信する。また、配信先変更部３２１は、チェインから離脱する場合、それまでチャンクを送信してきていたサーバ３００に対して、チャンクの転送先を、自身のサーバ３００が転送先としていたサーバ３００に変更する指示を示す配信先指示情報（第２の配信先指示情報）を送信する。
【００５２】
チャンク受信部３２２は、他のサーバ３００またはイメージリポジトリ装置２００からチャンクを受信する。そして、チャンク受信部３２２は、受信したチャンクを記憶部３３０に記憶するとともに、受信したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。
チャンク転送部３２３は、受信したチャンクを、チェインの後尾側で電源ＯＮとなっているサーバ３００の中で順序の最も近いサーバ３００に転送する、または、チャンクの転送先として配信先指示情報（第２の配信先指示情報）によって指示されたサーバ３００に転送する。ただし、チャンク転送部３２３は、チェイン中で終端（自身よりチェインの後尾側で電源ＯＮとなっているサーバ３００が無い場合も含む。）のサーバ３００であった場合には、チャンクの転送は実行しない。
【００５３】
このように、サーバ３００は、イメージ配信部３２０がチャンクの受信、送信および保存（記憶）をそれぞれ並行して実行することにより、高速なバケツリレー的配信を実現する。また、サーバ３００は、イメージ配信部３２０によってチャンクすべての受信、送信および保存（記憶）が完了すると、選択的ブート部３１２によって再起動する。これにより、サーバ３００は、図１の端末６００に対し、サービスを提供可能な状態になる。
【００５４】
（シーケンス例）
次に、ソフトウェアイメージ配信システム１におけるシーケンス例について、図６Ａ、図６Ｂを用いて説明する。図６Ａは、図２Ａで説明した第１ステップから第３ステップにおける処理をシーケンスとして表している。また、図６Ｂは、図２Ｂで説明した第４ステップから第６ステップにおける処理をシーケンスとして表している。具体的には、第１ステップ〜第６ステップは、それぞれ、ステップＳ７〜Ｓ１０、ステップＳ１１〜Ｓ１５、ステップＳ１６〜Ｓ２１、ステップＳ２２〜Ｓ２７、ステップＳ２８〜Ｓ３２、ステップＳ３３〜Ｓ３７に対応している。
【００５５】
まず、図６Ａに示すシーケンスについて、以下に説明する（適宜、図３参照）。
ステップＳ１では、リモートブート装置１００のブート要求受付部１１０は、保守者の端末装置等から、起動対象のサーバ３００の追加台数と、このサーバ３００へ配信するソフトウェアイメージの識別情報であるイメージＩＤとを含むリモートブート要求を受け付ける。
ステップＳ２では、ブート要求受付部１１０は、リモートブート要求を受け付けると、イメージＩＤをイメージリポジトリ装置２００に通知する。また、イメージリポジトリ装置２００の配信要求受付部２１０は、イメージＩＤを受信する。
【００５６】
ステップＳ３では、イメージリポジトリ装置２００のイメージ配信部２３０のチャンク分割部２３２は、イメージＩＤを用いて、イメージ情報２３４を参照して、そのイメージＩＤのソフトウェアイメージを読み出し、読み出したソフトウェアイメージをチャンクに分割する。
ステップＳ４では、遠隔電源管理部１２０は、指定された台数のサーバ３００を、ＩＰＭＩ等の手段を用いて遠隔起動する。具体的には、まず、サーバ情報管理部１３０が、サーバ情報１３１（図４参照）のサーバ状態が「利用可能」となっているサーバの中から、指定された台数のサーバ３００を選択する。そして、遠隔電源管理部１２０は、選択されたサーバ３００に対して、ＩＰＭＩ等の手段を用いて遠隔起動を行う。また、各サーバＡ，Ｂ，Ｃの遠隔管理受付部３１１がリモートブート装置１００から遠隔起動を受信して、小型ＯＳの起動を開始する。
【００５７】
ステップＳ５では、チェイン生成管理部１４０がチャンクの配信順序であるチェインを生成して記憶する。ここでは、チェインは、図７（ａ）のチェイン電源情報１４１の左側の欄に示すように、イメージリポジトリ装置２００をチェインの先頭として、サーバＡ（３００）、サーバＢ（３００）、サーバＣ（３００）の順に決められたものとする。
ステップＳ６では、チェイン送信部１５０は、チェイン生成管理部１４０によって生成されたチェインをチェイン情報としてイメージリポジトリ装置２００に送信する。
【００５８】
ステップＳ７では、サーバＣ（３００）の遠隔管理受付部３１１がリモートブート装置１００から遠隔起動を受信して、最初に起動したものとする。
ステップＳ８では、サーバＣ（３００）の配信先変更部３２１は、リモートブート装置１００の記憶部１６０に記憶されているチェイン電源情報１４１（図７参照）を取得する。
【００５９】
ここで、チェイン電源情報１４１の役割について、図７を用いて説明する。このチェイン電源情報１４１は、起動していないサーバ３００を飛ばして、チャンクを配信するために参照される。したがって、図７（ａ）のチェイン電源情報１４１の左側の欄には、イメージリポジトリ装置２００をチェインの先頭として、チェイン生成管理部１４０によって生成されたチェインの順に従って、サーバＡ（３００）、サーバＢ（３００）、サーバＣ（３００）が順に並べられる。チェイン生成管理部１４０は、起動状態となったサーバ３００から、チェイン電源情報１４１の更新の指示を含む取得要求を送信されたときに、取得要求を送信してきたサーバ３００の電源状態をＯＮに更新する。
【００６０】
図７は、チェイン電源情報１４１の遷移を表している。まず、図７（ａ）は初期状態（チェイン生成時の状態）を表しており、各サーバＡ，Ｂ，Ｃ（３００）の電源状態はＯＦＦとなっている。次に、図７（ｂ）は、第１ステップとして、サーバＣ（３００）が起動して、電源状態がＯＮに変更された場合を表している。図７（ｃ）は、第２ステップとして、サーバＡ（３００）が起動して、電源状態がＯＮに変更された場合を表している。図７（ｄ）は、第３ステップとして、サーバＢ（３００）が起動して、電源状態がＯＮに変更された場合を表している。
【００６１】
図６Ａに戻って、ステップＳ８では、サーバＣ（３００）の配信先変更部３２１は、図７（ｂ）のチェイン電源情報１４１を、リモートブート装置１００から取得する。このとき、サーバＡ，Ｃ（３００）の電源状態は、ＯＦＦである。
ステップＳ９では、サーバＣ（３００）の配信先変更部３２１は、図７（ｂ）のチェイン電源情報１４１を参照して、自身のサーバＣ（３００）よりチェインの先頭側に電源ＯＮのサーバ３００が無いため、イメージリポジトリ装置２００に、チャンクの配信先をサーバＣ（３００）自身に指示する配信先指示情報（第１の配信先指示情報）を送信する。
【００６２】
ステップＳ１０では、イメージリポジトリ装置２００のチャンク送信部２３３は、当該配信先指示情報（第１の配信先指示情報）を送信してきたサーバＣ（３００）を配信先としてチャンク（チャンクＩＤを付加したもの）を配信する。ただし、配信したチャンクのチャンクＩＤは、１〜１０であるものとする。そして、サーバＣ（３００）のチャンク受信部３２２は、チャンクＩＤが１〜１０のチャンクを記憶部３３０に記憶（保存）するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。なお、サーバＣ（３００）は、チェインの終端（最後尾）であるため、チャンク転送部３２３は、チャンクの転送を行わない。
ステップＳ１１では、サーバＡ（３００）が起動する。
ステップＳ１２では、サーバＡ（３００）の配信先変更部３２１は、図７（ｃ）のチェイン電源情報１４１を、リモートブート装置１００から取得する。このとき、サーバＡ，Ｃ（３００）の電源状態がＯＮとなっている。
【００６３】
ステップＳ１３では、サーバＡ（３００）の配信先変更部３２１は、図７（ｃ）のチェイン電源情報１４１を参照して、自身のサーバＡ（３００）よりチェインの先頭側がイメージリポジトリ装置２００であるため、チャンクの配信先をサーバ３００Ａ自身に指示する配信先指示情報（第１の配信先指示情報）をイメージリポジトリ装置２００に送信する。
ステップＳ１４では、イメージリポジトリ装置２００のチャンク送信部２３３は、当該配信先指示情報（第１の配信先指示情報）を送信してきたサーバＡ（３００）を配信先としてチャンクを配信する。ただし、配信したチャンクのチャンクＩＤが、１１〜２０であるものとする。サーバＡ（３００）のチャンク受信部３２２は、チャンクＩＤが１１〜２０のチャンクを記憶部３３０に記憶（保存）する。
【００６４】
ステップＳ１５では、サーバＡ（３００）のチャンク転送部３２３は、図７（ｃ）のチェイン電源情報１４１を参照して、自身のサーバＡ（３００）よりチェインの後尾側で電源ＯＮとなっているサーバ３００中で順序の最も近いサーバＣ（３００）に、チャンクを配信する。そして、サーバＣ（３００）のチャンク受信部３２２は、チャンクＩＤが１１〜２０のチャンクを記憶部３３０に記憶するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。つまり、サーバＣ（３００）は、チャンクＩＤが１〜２０のチャンクを記憶部３３０に記憶（保存）したことになる。
【００６５】
ステップＳ１６では、サーバＢ（３００）が起動する。
ステップＳ１７では、サーバＢ（３００）の配信先変更部３２１は、図７（ｄ）のチェイン電源情報１４１を、リモートブート装置１００から取得する。このとき、サーバＡ，Ｂ，Ｃ（３００）の電源状態がＯＮとなっている。
【００６６】
ステップＳ１８では、サーバＢ（３００）の配信先変更部３２１は、図７（ｄ）のチェイン電源情報１４１を参照して、自身のサーバＢ（３００）よりチェインの先頭側で電源ＯＮとなっているサーバ３００中で順序の最も近いサーバＡ（３００）に、チャンクの配信先をサーバＢ（３００）自身に指示する配信先指示情報（第１の配信先指示情報）を送信する。
ステップＳ１９では、イメージリポジトリ装置２００のチャンク送信部２３３は、チャンクをサーバＡ（３００）に配信する。ただし、配信したチャンクのチャンクＩＤが、２１〜１００であるものとする。サーバＡ（３００）のチャンク受信部３２２は、チャンクＩＤが２１〜１００のチャンクを受信して、記憶部３３０に記憶するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。つまり、サーバＡ（３００）は、チャンクＩＤが１１〜１００のチャンクを記憶部３３０に記憶（保存）したことになる。
【００６７】
ステップＳ２０では、サーバＡ（３００）のチャンク転送部３２３は、サーバＢ（３００）から配信先指示情報（第１の配信先指示情報）を受信しているので、サーバＢ（３００）に、チャンクを転送する。サーバＢ（３００）のチャンク受信部３２２は、受信したチャンクＩＤが２１〜１００のチャンクを記憶部３３０に記憶（保存）するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。
ステップＳ２１では、サーバＢ（３００）のチャンク転送部３２３は、図７（ｄ）のチェイン電源情報１４１を参照して、自身のサーバＢ（３００）よりチェインの後尾側で電源ＯＮとなっているサーバ３００中で順序の最も近いサーバＣ（３００）に、チャンクを転送する。サーバＣ（３００）のチャンク受信部３２２は、チャンクＩＤが２１〜１００のチャンクを受信して、記憶部３３０に記憶するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。つまり、サーバＣ（３００）は、チャンクＩＤが１〜１００のチャンクを記憶部３３０に記憶したことになる。
【００６８】
図６Ｂに移り、ステップＳ２２では、サーバＣ（３００）の配信先変更部３２１は、チャンクＩＤすべてのチャンクを受信したことにより、配信が完了したと判断する。
ステップＳ２３では、サーバＣ（３００）の配信先変更部３２１は、チェインから離脱するために、チャンクを転送してきているサーバＢ（３００）に、自身がチェインから離脱することおよび自身がチェインの終端であることを示す配信先指示情報（第２の配信先指示情報）を送信する。
ステップＳ２４では、サーバＣ（３００）の配信先変更部３２１は、イメージリポジトリ装置２００にチェイン更新情報変更指示を送信する。そして、イメージリポジトリ装置２００のチェイン情報管理部２２０は、チェイン更新情報２２１（図８（ａ）参照）からサーバＣ（３００）を削除して、図８（ｂ）のようにチェイン更新情報２２１を更新する。
【００６９】
ここで、チェイン更新情報２２１の役割について、図８を用いて説明する（適宜、図３参照）。このチェイン更新情報２２１は、イメージリポジトリ装置２００が、チャンクの再送をいつまで行えばよいかを判断するために参照される。
チェイン情報管理部２２０は、各サーバ３００がチェインから離脱する際に送信してきたチェイン更新情報変更指示に基づいて、チェイン更新情報２２１から、当該チェイン更新情報変更指示を送信してきたサーバ３００を削除して、チェイン更新情報２２１を更新する。
【００７０】
図８は、チェイン更新情報２２１の遷移を表している。まず、図８（ａ）はチェインの初期状態を表しており、各サーバＡ，Ｂ，Ｃ（３００）が登録されている。次に、図８（ｂ）は、第４ステップとして、サーバＣ（３００）がチェインから離脱して、登録を削除された場合を表している。図８（ｃ）は、第５ステップとして、サーバＡ（３００）がチェインから離脱して、登録を削除された場合を表している。図８（ｄ）は、第６ステップとして、サーバＢ（３００）がチェインから離脱して、登録を削除された場合を表している。この図８（ｄ）に示すように、チェイン更新情報２２１に、イメージリポジトリ装置２００しか登録されていない状態となったときに、イメージリポジトリ装置２００は、チャンクの再送を終了する。
【００７１】
図６Ｂに戻り、ステップＳ２５では、サーバＣ（３００）の選択的ブート部３１２は、自らの記憶部３３０に記憶されたブート対象のソフトウェアを選択して、再起動する。
ステップＳ２６では、イメージリポジトリ装置２００のチャンク送信部２３３は、チャンクをサーバＡ（３００）に配信する。ただし、配信したチャンクのチャンクＩＤが、１〜１０であるものとする。サーバＡ（３００）のチャンク受信部３２２は、チャンクＩＤが１〜１０のチャンクを受信して、記憶部３３０に記憶するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。つまり、サーバＡ（３００）は、チャンクＩＤが１〜１００のチャンクを記憶部３３０に記憶（保存）したことになる。
ステップＳ２７では、サーバＡ（３００）のチャンク転送部３２３は、サーバＢ（３００）にチャンクＩＤが１〜１０のチャンクを転送する。サーバＢ（３００）のチャンク受信部３２２は、チャンクＩＤが１〜１０のチャンクを受信して、記憶部３３０に記憶するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。つまり、サーバＢ（３００）は、チャンクＩＤが１〜１０、２１〜１００のチャンクを記憶部３３０に記憶したことになる。
【００７２】
ステップＳ２８では、サーバＡ（３００）の配信先変更部３２１は、チャンクＩＤすべてのチャンクを受信したことにより、配信が完了したと判断する。
ステップＳ２９では、サーバＡ（３００）の配信先変更部３２１は、チェインから離脱するために、チャンクを転送してきていたイメージリポジトリ装置２００に、自身がチェインから離脱することおよびサーバＢ（３００）が配信先であることを示す配信先指示情報（第２の配信先指示情報）を送信する。
ステップＳ３０では、サーバＡ（３００）の配信先変更部３２１は、イメージリポジトリ装置２００にチェイン更新情報変更指示を送信する。そして、イメージリポジトリ装置２００のチェイン情報管理部２２０は、チェイン更新情報２２１（図８（ｂ）参照）からサーバＡ（３００）の登録を削除して、図８（ｃ）のようにチェイン更新情報２２１を更新する。
ステップＳ３１では、サーバＡ（３００）の選択的ブート部３１２は、ブート対象のソフトウェアを選択して、再起動する。
【００７３】
ステップＳ３２では、イメージリポジトリ装置２００のチャンク送信部２３３は、チャンクをサーバＢ（３００）に配信する。ただし、配信したチャンクのチャンクＩＤが、１１〜２０であるものとする。サーバＢ（３００）のチャンク受信部３２２は、チャンクＩＤが１１〜２０のチャンクを受信して、記憶部３３０に記憶するとともに、記憶したチャンクのチャンクＩＤをチャンク情報３２４に記憶する。つまり、サーバＢ（３００）は、チャンクＩＤが１〜１００のチャンクを記憶部３３０に記憶したことになる。
ステップＳ３３では、サーバＢ（３００）の配信先変更部３２１は、チャンクＩＤすべてのチャンクを受信したことにより、配信が完了したと判断する。
ステップＳ３４では、サーバＢ（３００）の配信先変更部３２１は、チェインから離脱するために、チャンクを転送してきていたイメージリポジトリ装置２００に、チェインから離脱することおよびサーバＢ（３００）が終端であることを示す配信先指示情報（第２の配信先指示情報）を送信する。
【００７４】
ステップＳ３５では、サーバＢ（３００）の配信先変更部３２１は、イメージリポジトリ装置２００にチェイン更新情報変更指示を送信する。そして、イメージリポジトリ装置２００のチェイン情報管理部２２０は、チェイン更新情報２２１（図８（ｃ）参照）からサーバＢ（３００）の登録を削除して、図８（ｄ）のようにチェイン更新情報２２１を更新する。
ステップＳ３６では、サーバＢ（３００）の選択的ブート部３１２は、ブート対象のソフトウェアを選択して、再起動する。
ステップＳ３７では、イメージリポジトリ装置２００のチャンク送信部２３３は、図８（ｄ）のチェイン更新情報２１１を参照し、配信するサーバ３００が無いと判定し、チャンクの配信を終了する。
【００７５】
以上、本実施形態で説明したソフトウェアイメージ配信システム１は、イメージリポジトリ装置２００から配信したソフトウェアイメージのチャンクを、チェインに従って起動対象のサーバ３００間でバケツリレー式に転送する際に、未起動のサーバ３００を飛ばして、起動したサーバ３００からチェインに加わって、チャンクを転送するので、ソフトウェアイメージを迅速に送信できる。そして、チャンクすべてを受信したサーバ３００からチェインを離脱して再起動するため、複数のサーバをクラスタに組み込むときにサーバ３００の起動時間がばらつく場合であっても、迅速に組み込むことができる。
【符号の説明】
【００７６】
１    ソフトウェアイメージ配信システム
１００  リモートブート装置
１１０  ブート要求受付部
１２０  遠隔電源管理部
１３０  サーバ情報管理部
１３１  サーバ情報
１４０  チェイン生成管理部
１４１  チェイン電源情報
１５０  チェイン送信部
１６０  記憶部
２００  イメージリポジトリ装置
２１０  配信要求受付部
２２０  チェイン情報管理部
２２１  チェイン更新情報
２３０  イメージ配信部
２３１  配信先受付部
２３２  チャンク分割部
２３３  チャンク送信部
２３４  イメージ情報
２４０  記憶部
３００  サーバ
３１０  ブート部
３１１  遠隔管理受付部
３１２  選択的ブート部
３２０  イメージ配信部
３２１  配信先変更部
３２２  チャンク受信部
３２３  チャンク転送部
３２４  チャンク情報
３３０  記憶部
４００  管理ネットワーク
５００  サービスネットワーク
６００  端末
【図１】
0005498447.tif 000002
【図２Ａ】
0005498447.tif 000003
【図２Ｂ】
0005498447.tif 000004
【図３】
0005498447.tif 000005
【図４】
0005498447.tif 000006
【図５】
0005498447.tif 000007
【図６Ａ】
0005498447.tif 000008
【図６Ｂ】
0005498447.tif 000009
【図７】
0005498447.tif 000010
【図８】
0005498447.tif 000011
【図９】
0005498447.tif 000012
【図１０】
0005498447.tif 000013