(57)【要約】【課題】多数のサーバをクラスタに組み込む場合であっても、迅速に組み込めるようにする。【解決手段】リモートブート装置は、イメージリポジトリ装置２００に、配信対象のソフトウェアイメージの分割を指示する。また、このイメージリポジトリ装置２００を始点として、この分割したソフトウェアイメージの断片（チャンク）を、どのようなサーバ順で転送するかを示したチェインを生成する。このチェインを受信したイメージリポジトリ装置２００および起動対象サーバは、チェインを参照して、イメージリポジトリ装置２００を始点として、起動対象サーバ間でバケツリレーのようにチャンクを順次転送していく。ここでチェインに示される転送順序は、ネットワークトポロジを考慮し、起動対象サーバ間の経由スイッチの数が最小となるような順序とする。【選択図】図２
2012238095.tif 000002
【特許請求の範囲】
【請求項１】
サーバおよび当該サーバ同士を接続するスイッチがツリー構造で接続されるネットワークにおいて、クラスタに追加する前記サーバの遠隔電源オンの指示を行い、前記サーバを動作させるためのソフトウェアイメージを、イメージリポジトリ装置に配信させるリモートブート装置が、
前記クラスタへの追加対象サーバの追加台数および前記追加対象サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付けるステップと、
前記入力されたソフトウェアイメージの種別を、前記イメージリポジトリ装置へ送信するステップと、
前記入力された追加指示に基づき、前記サーバそれぞれのＩＤおよび当該サーバが前記クラスタに追加可能か否かを示したサーバ情報を読み出し、前記読み出したサーバ情報に示されるサーバのうち、追加可能なサーバを前記クラスタへの追加対象サーバとして前記追加指示に示される台数選択し、前記選択した追加対象サーバそれぞれへの遠隔電源オンの指示を、前記管理ネットワークを介して送信するステップと、
前記イメージリポジトリ装置、前記サーバおよび当該サーバを接続するスイッチの接続関係を示したトポロジ情報を参照して、前記ソフトウェアイメージを分割した断片を、前記追加対象サーバ間で転送するときの前記追加対象サーバの順序を含む転送指示情報を生成するステップと、
前記生成した転送指示情報を前記イメージリポジトリ装置へ送信するステップとを実行し、
前記イメージリポジトリ装置が、
前記送信された種別のソフトウェアイメージを分割し、前記分割したソフトウェアイメージの断片と、前記転送指示情報とを、前記転送指示情報に含まれる転送順序の最初の前記起動対象サーバへ送信するステップを実行し、
前記転送指示情報および前記ソフトウェアイメージの断片を受信した追加対象サーバそれぞれが、
前記受信したソフトウェアイメージの断片を、前記転送指示情報において自身のサーバの次に前記断片を転送すべき追加対象サーバへ転送し、前記自身のサーバのイメージ保存部に保存する処理を、前記ソフトウェアイメージを構成するすべての断片を受信し、転送するまで繰り返すステップと、
前記イメージ保存部に保存されたソフトウェアイメージから前記自身のサーバを起動させるステップとを実行し、
前記リモートブート装置が前記転送指示情報を生成するとき、
前記追加対象サーバ間で転送するときの前記追加対象サーバの順序は、前記トポロジ情報を参照して、前記追加対象サーバ間で経由する前記スイッチの数が最小となるような順序とすることを特徴とするソフトウェアイメージ配信方法。
【請求項２】
前記サーバそれぞれは、
前記受信したソフトウェアイメージの断片と、前記断片ごとに、当該断片の受信、送信および前記イメージ保存部への保存それぞれについて実行済みか否かを示すチャンクテーブルとを記憶するメインメモリを備えており、
前記チャンクテーブルを参照して、受信済みとなっている前記断片について、当該断片の送信または前記イメージ保存部への保存を行うステップと、
前記断片の送信または前記イメージ保存部への保存を行ったとき、前記チャンクテーブルにおける当該断片について送信または前記イメージ保存部への保存を実行済みに書き換えるステップと、
前記チャンクテーブルを参照して、前記受信、送信およびイメージ保存部への保存が実行済みである断片を、前記メインメモリ上から削除するステップとを実行することを特徴とする請求項１に記載のソフトウェアイメージ配信方法。
【請求項３】
前記サーバそれぞれは、
前記転送指示情報において、自身のサーバが、前記追加対象サーバ間で転送するときの前記追加対象サーバの順序が最後になっていると判断したとき、
前記自身のサーバが受信した前記断片を前記イメージリポジトリ装置へ通知することを特徴とする請求項１または請求項２に記載のソフトウェアイメージ配信方法。
【請求項４】
サーバおよび当該サーバ同士を接続するスイッチがツリー構造で接続されるネットワークにおいて、前記サーバを動作させるためのソフトウェアイメージを配信するイメージリポジトリ装置と、クラスタに追加する前記サーバの遠隔電源オンの指示を行い、前記イメージリポジトリ装置に、前記ソフトウェアイメージの配信を指示するリモートブート装置とを備えるソフトウェアイメージ配信システムであって、
前記リモートブート装置は、
前記クラスタへの追加対象サーバの追加台数および前記追加対象サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付け、前記入力されたソフトウェアイメージの種別を、前記イメージリポジトリ装置へ送信するブート要求受付部と、
前記入力された追加指示に基づき、前記サーバそれぞれのＩＤおよび当該サーバが前記クラスタに追加可能か否かを示したサーバ情報を読み出し、前記読み出したサーバ情報に示されるサーバのうち、追加可能なサーバを前記クラスタへの追加対象サーバとして前記追加指示に示される台数選択し、前記選択した追加対象サーバそれぞれへの遠隔電源オンの指示を、前記管理ネットワークを介して送信する遠隔電源管理部と、
前記イメージリポジトリ装置、前記サーバおよび当該サーバを接続するスイッチの接続関係を示したトポロジ情報を参照して、前記ソフトウェアイメージを分割した断片を、前記追加対象サーバ間で転送するときの前記追加対象サーバの順序を、前記追加対象サーバ間で経由する前記スイッチの数を最小にするような順序とした転送指示情報を生成するチェイン生成部と、
前記生成した転送指示情報を前記イメージリポジトリ装置へ送信するチェイン送信部とを備え、
前記イメージリポジトリ装置は、
前記送信された種別のソフトウェアイメージを分割し、前記分割したソフトウェアイメージの断片と、前記転送指示情報とを、前記転送指示情報に含まれる転送順序の最初の前記起動対象サーバへ送信するイメージ配信部を備え、
前記サーバは、
前記ソフトウェアイメージの断片を、前記転送指示情報において自身のサーバの次に前記断片を転送すべき追加対象サーバへ転送し、前記自身のサーバのイメージ保存部に保存する処理を、前記ソフトウェアイメージを構成するすべての断片を受信し、転送するまで繰り返すイメージ転送部と、
前記イメージ保存部と、
前記イメージ保存部に保存されたソフトウェアイメージから前記自身のサーバを起動させるブート部とを備えることを特徴とするソフトウェアイメージ配信システム。
【請求項５】
サーバおよび当該サーバ同士を接続するスイッチがツリー構造で接続されるネットワークにおいて、クラスタに追加する前記サーバの遠隔電源オンの指示を行い、イメージリポジトリ装置に、前記サーバを動作させるためのソフトウェアイメージの配信を指示するためのソフトウェアイメージ配信プログラムであって、
コンピュータに、
前記クラスタへの追加対象サーバの追加台数および追加対象サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付けるステップと、
前記入力されたソフトウェアイメージの種別を、前記イメージリポジトリ装置へ送信するステップと、
前記入力された追加指示に基づき、前記サーバそれぞれのＩＤおよび当該サーバが前記クラスタに追加可能か否かを示したサーバ情報を読み出し、前記読み出したサーバ情報に示されるサーバのうち、追加可能なサーバを前記クラスタへの追加対象サーバとして前記追加指示に示される台数選択し、前記選択した追加対象サーバそれぞれへの遠隔電源オンの指示を、前記管理ネットワークを介して送信するステップと、
前記イメージリポジトリ装置、前記サーバおよび当該サーバを接続するスイッチの接続関係を示したトポロジ情報を参照して、前記ソフトウェアイメージを分割した断片を、前記追加対象サーバ間で転送するときの前記追加対象サーバの順序を含む転送指示情報を生成するステップと、
前記生成した転送指示情報を前記イメージリポジトリ装置へ送信するステップとを実行させ、
前記生成する転送指示情報は、
前記イメージリポジトリ装置に対し、前記送信された種別のソフトウェアイメージを分割し、前記分割したソフトウェアイメージの断片と、前記転送指示情報とを、前記転送指示情報に含まれる転送順序の最初の前記起動対象サーバへ送信し、
前記転送指示情報および前記ソフトウェアイメージの断片を受信した追加対象サーバそれぞれに対し、前記受信したソフトウェアイメージの断片を、前記転送指示情報において自身のサーバの次に前記断片を転送すべき追加対象サーバへ転送するよう指示する情報であり、
前記追加対象サーバ間で転送するときの前記追加対象サーバの順序は、前記トポロジ情報を参照して、前記追加対象サーバ間で経由する前記スイッチの数が最小となるような順序であることを特徴とするソフトウェアイメージ配信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステムの各サーバへのソフトウェアイメージの配信技術に関する。
【背景技術】
【０００２】
近年、Webサーバホスティング等の分野では、データセンタのようなサーバ管理事業者が一括してサーバを管理し、サービス提供事業者をホスティングするIaaS（Infrastructure as a Service）等と呼ばれる形態が一般化している（非特許文献１参照）。ここで、サービスの需要増時や、そのサービスを提供しているサーバが障害によって離脱した場合に速やかに要求に対応するためには、ある程度の待機余剰資源を含めたサーバを用意しておく必要がある。また、近年では無停止でサーバ資源の動的追加および削除が可能なネットワークサーバクラスタのアーキテクチャが登場しており、通信網を構成する設備のさらなる運用柔軟化や低コスト化が期待されている（非特許文献２参照）。
【０００３】
そのような要求に対して、各ネットワークサーバクラスタの余剰資源をリソースプールとして集約しておき、需要増時や、障害や災害によって失われた資源の補充時に、リソースプールから必要なサーバを各クラスタに追加することにより、全体の設備利用効率を向上させる技術が検討されている。
【０００４】
このように余剰資源が集約された共用のリソースプールから、サーバをクラスタに追加する場合、リソースプール内に保持されているサーバが、どのようなソフトウェア構成を取るかが事前に分からない。このため、リソースプールのサーバはソフトウェアを何も有していない状態であることが一般的である。よって、資源追加時には、リポジトリから、個々のサービスに対応したソフトウェア構成が含まれたソフトウェアイメージを、追加対象のサーバに転送する。そして、このサーバに必要な設定を行った後にクラスタに組み込む必要がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Amazon Elastic Compute Cloud （Amazon EC2）、[online]、[平成23年3月23日検索]、インターネット、<URL:http://aws.amazon.com/ec2/>
【非特許文献２】Mobicents、[online]、[平成23年3月23日検索]、インターネット、<URL: http://www.mobicents.org/>
【非特許文献３】西村豪生他、高可用ネットワークサーバの資源運用柔軟化に向けた高速リモートブート装置、信学技報、NS2010-148、pp.37-42、Jan、2011.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ソフトウェアイメージは、オペレーティングシステムや各種ミドルウェア、データ等をすべて含んでいるため数〜数十ＧＢに及ぶ大容量であり、転送にはある程度の時間を要する。ここで、クラスタへの急な需要増やサーバの障害復旧時にもサービスの可用性低下を防ぐためには、複数のサーバが同時に要求されたとしても、高速にソフトウェアを配信して起動する必要がある。
【０００７】
非特許文献３に記載の技術は、サーバを木構造にマッピングして配信を行う通信ライブラリによってソフトウェアイメージの配信を行っている。しかし、この方法ではクラスタへの追加対象サーバが増加すると、それに応じてソフトウェアイメージの配信時間が増加してしまうという問題がある。また、一般的な通信ライブラリはすべてのサーバを互いに通信可能な論理的なノードとして抽象化しており、実際のネットワークトポロジを考慮して最適な通信を行っているとは限らない。このため、ソフトウェアイメージの配信時にネットワークの帯域を効率よく利用できず、ソフトウェアイメージの転送に必要以上の時間がかかってしまうことがある。
【０００８】
そこで、本発明は、前記した問題を解決し、多数のサーバをクラスタに組み込む場合であっても、迅速に組み込める手段を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記した課題を解決するため、本発明は、サーバおよび当該サーバ同士を接続するスイッチがツリー構造で接続されるネットワークにおいて、クラスタに追加するサーバの遠隔電源オンの指示を行い、サーバを動作させるためのソフトウェアイメージを、イメージリポジトリ装置に配信させるリモートブート装置が以下の処理を行う。すなわち、リモートブート装置が、クラスタへの追加対象サーバの追加台数および追加対象サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付ける。そして、リモートブート装置は、この入力されたソフトウェアイメージの種別を、イメージリポジトリ装置へ送信する。次に、リモートブート装置は、入力された追加指示に基づき、サーバそれぞれのＩＤおよび当該サーバがクラスタに追加可能か否かを示したサーバ情報を読み出し、読み出したサーバ情報に示されるサーバのうち、追加可能なサーバをクラスタへの追加対象サーバとして追加指示に示される台数選択する。そして、その選択した追加対象サーバそれぞれへの遠隔電源オンの指示を、管理ネットワークを介して送信する。その後、リモートブート装置は、イメージリポジトリ装置、サーバおよび当該サーバを接続するスイッチの接続関係を示したトポロジ情報を参照して、ソフトウェアイメージを分割した断片を、追加対象サーバ間で転送するときの追加対象サーバの順序を含む転送指示情報を生成する。そして、この生成した転送指示情報をイメージリポジトリ装置へ送信する。この転送指示情報を受信したイメージリポジトリ装置は、送信された種別のソフトウェアイメージを分割し、分割したソフトウェアイメージの断片と、転送指示情報とを、転送指示情報に含まれる転送順序の最初の起動対象サーバへ送信する。その後、転送指示情報およびソフトウェアイメージの断片を受信した追加対象サーバそれぞれは、受信したソフトウェアイメージの断片を、転送指示情報において自身のサーバの次に断片を転送すべき追加対象サーバへ転送し、自身のサーバのイメージ保存部に保存する処理を、ソフトウェアイメージを構成するすべての断片を受信し、転送するまで繰り返す。その後、起動対象サーバは、イメージ保存部に保存されたソフトウェアイメージから自身のサーバを起動させる。ここで、リモートブート装置が転送指示情報を生成するとき、追加対象サーバ間で転送するときの追加対象サーバの順序は、トポロジ情報を参照して、追加対象サーバ間で経由するスイッチの数が最小となるような順序とする。
【００１０】
このように、リモートブート装置は、ソフトウェアイメージを断片に分割し、追加対象サーバに、この断片それぞれを、所定の転送順序でバケツリレーのように順次断片を転送させることができる。これにより、イメージリポジトリ装置は、クラスタへの追加対象サーバそれぞれへソフトウェアイメージ全体を送る必要がなくなる。よって、多数のサーバをクラスタに組み込む場合であっても、迅速に組み込むことができる。また、転送指示情報に設定する追加対象サーバ間でのソフトウェアイメージの断片の転送順序は、追加対象サーバ間で経由するスイッチ数ができるだけ少なくなるようにする。これにより、各断片の転送時に経由するリンクの数をできるだけ低減できるので、各断片を順次追加対象サーバ間で転送するとき、ネットワークの帯域の利用効率を向上させることができる。
【００１１】
また、本発明は、サーバそれぞれが、受信したソフトウェアイメージの断片と、断片ごとに、当該断片の受信、送信およびイメージ保存部への保存それぞれについて実行済みか否かを示すチャンクテーブルとを記憶するメインメモリを備えている。そして、サーバそれぞれは、チャンクテーブルを参照して、受信済みとなっている断片について、当該断片の送信またはイメージ保存部への保存を行う。その後、断片の送信またはイメージ保存部への保存を行ったとき、チャンクテーブルにおける当該断片について送信またはイメージ保存部への保存を実行済みに書き換える。そして、サーバそれぞれは、チャンクテーブルを参照して、受信、送信およびイメージ保存部への保存が実行済みである断片を、メインメモリ上から削除する。
【００１２】
このように、追加対象サーバは、順次、受信したソフトウェアイメージの断片の送信、保存を繰り返すが、ソフトウェアイメージの断片の送信およびイメージ保存部への保存が完了すると、この断片をメインメモリ上から削除するので、メインメモリの限られた記憶容量を有効活用できる。
【００１３】
また、本発明は、サーバそれぞれが、転送指示情報において、自身のサーバが、追加対象サーバ間で転送するときの追加対象サーバの順序が最後になっていると判断したとき、自身のサーバが受信した断片をイメージリポジトリ装置へ通知する。
【００１４】
このようにすることで、イメージリポジトリ装置は、追加対象サーバのうち転送順序が最後になっている追加対象サーバが、ソフトウェアイメージのどの断片まで受信したか（配信状況）を確認することができる。
【００１５】
また、本発明は、サーバおよび当該サーバ同士を接続するスイッチがツリー構造で接続されるネットワークにおいて、クラスタに追加するサーバの遠隔電源オンの指示を行い、イメージリポジトリ装置に、サーバを動作させるためのソフトウェアイメージの配信を指示するためのソフトウェアイメージ配信プログラムについて、各ステップを実行させるプログラムとした。すなわち、コンピュータに、クラスタへの追加対象サーバの追加台数および追加対象サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付けるステップと、入力されたソフトウェアイメージの種別を、イメージリポジトリ装置へ送信するステップと、入力された追加指示に基づき、サーバそれぞれのＩＤおよび当該サーバがクラスタに追加可能か否かを示したサーバ情報を読み出し、読み出したサーバ情報に示されるサーバのうち、追加可能なサーバをクラスタへの追加対象サーバとして追加指示に示される台数選択し、選択した追加対象サーバそれぞれへの遠隔電源オンの指示を、管理ネットワークを介して送信するステップと、イメージリポジトリ装置、サーバおよび当該サーバを接続するスイッチの接続関係を示したトポロジ情報を参照して、ソフトウェアイメージを分割した断片を、追加対象サーバ間で転送するときの追加対象サーバの順序を含む転送指示情報を生成するステップと、生成した転送指示情報をイメージリポジトリ装置へ送信するステップとを実行させるプログラムとした。ここで、転送指示情報は、イメージリポジトリ装置に対し、送信された種別のソフトウェアイメージを分割し、分割したソフトウェアイメージの断片と、転送指示情報とを、転送指示情報に含まれる転送順序の最初の起動対象サーバへ送信し、転送指示情報およびソフトウェアイメージの断片を受信した追加対象サーバそれぞれに対し、受信したソフトウェアイメージの断片を、転送指示情報において自身のサーバの次に断片を転送すべき追加対象サーバへ転送するよう指示する情報であり、追加対象サーバ間で転送するときの追加対象サーバの順序は、トポロジ情報を参照して、追加対象サーバ間で経由するスイッチの数が最小となるような順序としている。
【００１６】
このようなプログラムによれば、一般的なコンピュータを、本発明のリモートブート装置として機能させることができる。
【発明の効果】
【００１７】
本発明によれば、多数のサーバをクラスタに組み込む場合であっても、迅速に組み込むことができる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態のシステムの構成例を示した図である。
【図２】図１のシステムにおけるチャンクの転送処理を概念的に説明した図である。
【図３】図１のシステムにおけるチャンクの転送処理を概念的に説明した図である。
【図４】図１のリモートブート装置、イメージリポジトリ装置およびサーバの構成を示した図である。
【図５】図１のサーバ情報を例示した図である。
【図６】図１のサーバを含むネットワークトポロジを例示した図である。
【図７】図１のトポロジ情報を例示した図である。
【図８】図１のイメージ情報を例示した図である。
【図９】図１のチャンクテーブルを例示した図である。
【図１０】図１のリモートブート装置の動作手順を説明するための図である。
【図１１】図１のリモートブート装置によるチェインの生成手順を示す図である。
【図１２】図１のリモートブート装置がチェインを生成するときに用いる処理テーブルおよびチェインの推移を例示した図である。
【図１３】図１のイメージリポジトリ装置の動作手順を説明するための図である。
【図１４】図１のサーバの動作手順を説明するための図である。
【図１５】図１のサーバの動作手順を説明するための図である。
【図１６】図１のチャンクテーブルを例示した図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施するための形態（実施の形態）を説明する。まず、図１を用いて本実施の形態のシステムの全体構成を説明する。本実施の形態のシステムは、サービスを提供するための資源である複数のサーバ３００と、サーバ３００を遠隔起動するリモートブート装置１００と、ソフトウェアイメージの配信元となるイメージリポジトリ装置２００とを備える。リモートブート装置１００と、イメージリポジトリ装置２００と、サーバ３００とは管理ネットワーク４００で接続される。遠隔起動指示やソフトウェアイメージの配信は、この管理ネットワーク４００経由で行われる。また、端末６００は、サービスネットワーク５００経由で各サーバ３００にアクセスし、各サーバ３００が提供するサービスを受ける。
【００２０】
リモートブート装置１００は、保守者の端末装置（図示省略）からサーバ３００のリモートブート（遠隔起動）要求を受け付けると、必要台数のサーバ３００を遠隔起動する。そして、リモートブート装置１００は、イメージリポジトリ装置２００に対し、起動したサーバ３００へのソフトウェアイメージの配信を指示する。
【００２１】
ここで、イメージリポジトリ装置２００は、図２に例示するように、イメージリポジトリ装置２００を先頭にして、起動対象サーバを論理的に一列（チェイン状）に並べる。そして、この並べた起動対象サーバ（サービスを提供するサーバ３００群であるクラスタへの追加対象サーバ）に対してソフトウェアイメージを配信する。その際、ソフトウェアイメージをいくつかの断片（チャンク）に分割し、チャンク単位でチェイン（チャンクの転送順序）に沿って各サーバ３００へ配信する。そして、この起動対象サーバは、バケツリレー式に、チャンクの受信、送信および保存を実行する。つまり、各サーバ３００は、チャンクを受信すると、順次、このチャンクをチェインの次のサーバ３００へ転送する。また、サーバ３００は、受信したチャンクを自身のローカルディスクに保存することでソフトウェアイメージを保存する。
【００２２】
ここで、チェインは、ネットワークトポロジを考慮して構成される。例えば、各サーバ３００（３００Ａ，３００Ｂ，３００Ｃ，３００Ｄ）およびイメージリポジトリ装置２００は、図３（ａ）（ｂ）に例示するように、スイッチ７００（７００Ａ，７００Ｂ，７００Ｃ）経由で接続される。このようなネットワークトポロジにおいて、図３（ａ）の（０）→（１）→（２）→（３）→（４）のような順で各チャンクを順次配信していくと、スイッチ７００をまたいだ通信が多く発生し、１つのリンク上で複数の通信が同時に行われる可能性がある。このため、ネットワークの通信帯域の利用効率が悪くなる可能性がある。
【００２３】
一方、本システムでは、図３（ｂ）の（０）→（１）→（２）→（３）→（４）のような順、つまり、経由するスイッチ数（スイッチまたぎの数）が最小限となるような配信順序で、各チャンクを順次配信していく。このようにすることで、１つのリンク上で複数の通信が同時に行われる可能性を低くできる。
【００２４】
なお、前記したリモートブート装置１００は、管理ネットワーク４００やサービスネットワーク５００経由で通信可能な通信インタフェースと、入出力インタフェースと、ＣＰＵ（Central Processing Unit）と、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、フラッシュメモリ等の記憶部とを備えるコンピュータにより実現される。
【００２５】
＜リモートブート装置＞
次に、図４を用いて、図１のリモートブート装置１００、イメージリポジトリ装置２００およびサーバ３００を詳細に説明する。まず、リモートブート装置１００を説明する。
【００２６】
リモートブート装置１００は、ブート要求受付部１１０と、遠隔電源管理部１２０と、サーバ情報管理部１３０と、チェイン生成部１４０と、トポロジ情報管理部１５０と、チェイン送信部１６０とを備える。また、このリモートブート装置１００は、記憶部（図示省略）の所定領域に、サーバ情報１３１と、トポロジ情報１５１とを記憶する。ブート要求受付部１１０と、遠隔電源管理部１２０と、サーバ情報管理部１３０と、チェイン生成部１４０と、トポロジ情報管理部１５０と、チェイン送信部１６０とは、リモートブート装置１００が備えるＣＰＵによるプログラム実行処理や、専用回路等により実現される。このリモートブート装置１００をプログラム実行処理により実現する場合、記憶部には、このリモートブート装置１００の機能を実現するためのプログラムが格納される。
【００２７】
ブート要求受付部１１０は、保守者の端末装置等から起動対象サーバの追加台数および追加対象サーバへ配信するソフトウェアイメージの種別を含むリモートブート要求を受け付け、一連のリモートブート処理を開始する。リモートブート要求は、保守者の端末装置等の外部端末からネットワーク越しに受け付けてもよいし、リモートブート装置１００に直接接続された入力装置経由で受け付けてもよい。
【００２８】
遠隔電源管理部１２０は、起動対象のサーバ３００を選択し、このサーバ３００を遠隔電源ＯＮする。遠隔電源ＯＮは、例えば、ＩＰＭＩ(Intelligent Platform Management Interface)やＷｏＬ(Wake on LAN)等を用いて行われる。
【００２９】
サーバ情報管理部１３０は、サーバ情報１３１の読み出しおよび書き込みを行う。このサーバ情報１３１は、図５に例示するように、サーバ３００の識別情報であるサーバＩＤごとに、このサーバ３００の遠隔操作用アドレス、転送用アドレスおよびサーバ３００の状態を示した情報である。遠隔操作用アドレスは、遠隔電源管理部１２０によって、サーバ３００を電源ＯＮする際に必要となるエンドポイントのアドレスである。図５の例では、サーバ３００が遠隔電源ＯＮにＩＰＭＩを用いることを想定しており、ＩＰ（Internet Protocol）アドレスが値として格納されている。転送用アドレスは、当該サーバ３００にソフトウェアイメージを転送する際に用いるネットワークアドレスである。また、サーバ３００の状態は、そのサーバ３００が資源として利用可能であるか否か（クラスタに追加可能であるか否か）を示す情報が格納される。図５の例では、サーバ３００の状態を、「利用可能」、「利用中」、「利用不可」のいずれかとしている。「利用可能」は、資源として利用可能な（待機中の）サーバ３００であり、「利用中」は、現在何らかのサービスを提供しており、クラスタに追加できないサーバ３００であり、「利用不可」は、故障等の理由で利用不可であるサーバ３００であることを示している。
【００３０】
図４に戻る。チェイン生成部１４０は、チェイン（転送指示情報）を生成する。チェインとは、イメージリポジトリ装置２００および各起動対象サーバ間でソフトウェアイメージの断片を転送するときの順序を示す情報である。チェインの生成手順の詳細は後記するが、チェイン生成部１４０は、イメージリポジトリ装置２００をスタート地点として、終端の起動対象サーバまで、経由スイッチ数が最も少ない起動対象サーバを順次選択していくことで、チェインを生成する。これにより、起動対象サーバ間でチャンクを転送するときに、経由するスイッチ数をできるだけ少なくできる。
【００３１】
チェイン送信部１６０は、チェイン生成部１４０により作成されたチェインをイメージリポジトリ装置２００に転送して、チャンクの配信開始を指示する。チェイン生成部１４０およびチェイン送信部１６０の詳細は後記する。
【００３２】
トポロジ情報管理部１５０は、トポロジ情報１５１の読み出しおよび書き込みを行う。このトポロジ情報１５１は、ネットワークのサーバ３００、イメージリポジトリ装置２００およびこれらを接続するスイッチ７００の接続関係（トポロジ）を示した情報である。ここでのネットワークトポロジは、一般的な木構成を想定している。図７に、トポロジ情報１５１を例示する。このトポロジ情報１５１は、図６のネットワークトポロジを示すトポロジ情報１５１である。なお、図６および図７における「ＳＷ＊」は、スイッチ７００のスイッチＩＤを示し、「Ｓｖｒ＊」は、サーバ３００のサーバＩＤを示す。トポロジ情報１５１は、図７に例示するようにスイッチ７００の識別情報であるスイッチＩＤごとに、木構造上の親スイッチ、子スイッチおよび収容サーバのＩＤを値として格納している。親スイッチの値はスイッチＩＤとして格納され、その値の数は最大１つである。また、図６におけるＳＷ０のように木構造上の根（ルート）となるスイッチ７００には親スイッチは存在しない。一方、子スイッチは複数個存在しうる。図６および図７の例では、ＳＷ０は、ＳＷ１，ＳＷ２，ＳＷ３を子スイッチとして有する。また、ＳＷ１，ＳＷ４〜ＳＷ６は、子スイッチを有さないため、値も存在しない。収容サーバは、そのスイッチ７００に収容されているサーバ３００のサーバＩＤが値となるため、複数個存在しうる。また、スイッチ７００同士を接続するＳＷ０，ＳＷ２，ＳＷ３等の中継スイッチはサーバ３００を収容していないため、収容サーバの値が存在しない。
【００３３】
＜イメージリポジトリ＞
図４に戻る。イメージリポジトリ装置２００は、配信要求受付部２１０と、イメージ情報管理部２２０と、イメージ配信部２４０とを備える。また、イメージリポジトリ装置２００の記憶部（図示省略）の所定領域にストレージ２３０と、イメージ情報２２１とを記憶する。配信要求受付部２１０と、イメージ情報管理部２２０と、イメージ配信部２４０とは、イメージリポジトリ装置２００の備えるＣＰＵによるプログラム実行処理や、専用回路等により実現される。このイメージリポジトリ装置２００をプログラム実行処理により実現する場合、記憶部には、このイメージリポジトリ装置２００の機能を実現するためのプログラムが格納される。
【００３４】
配信要求受付部２１０は、管理ネットワーク４００経由でリモートブート装置１００からのイメージＩＤおよびチェインの送信を受け付け、ソフトウェアイメージの断片（チャンク）の配信処理を開始する。
【００３５】
イメージ情報管理部２２０は、イメージ情報２２１の読み出しおよび書き込みを行う。このイメージ情報２２１は、図８に例示するように、ソフトウェアイメージの識別情報（イメージＩＤ）ごとに、そのソフトウェアイメージにアクセスするためのパスを示した情報である。このイメージ情報２２１は、イメージ配信部２４０が、ストレージ２３０からソフトウェアイメージを読み出すときに参照される。
【００３６】
図４に戻る。ストレージ２３０は、ソフトウェアイメージ本体を記憶する。
【００３７】
イメージ配信部２４０は、配信対象のソフトウェアイメージを複数のチャンクに分割し、チェインに沿って配信する。このイメージ配信部２４０は、リモートブート装置１００からチェインを受信し、このチェインの先頭のサーバ３００に転送するチェイン転送部（チェイン受信部およびチェイン送信部）２４１と、配信対象のソフトウェアイメージをチャンクに分割するチャンク分割部２４２と、チャンクをチェインに示される先頭のサーバ３００に送信するチャンク送信部２４３とを備える。また、このイメージ配信部２４０は、チェイン終端のサーバ３００から、チャンクの配信状況を受け付ける配信状況受付部２４４をさらに備えてもよい。
【００３８】
＜サーバ＞
サーバ３００は、ブート部３１０と、イメージ転送部３２０とを備える。また、サーバ３００は、ＨＤＤ等の記憶部（図示省略）の所定領域に、イメージ保存部３３０を備える。また、サーバ３００のＲＡＭ等のメインメモリ（図示省略）の所定領域に、チャンクテーブル３４１を記憶する。また、このメインメモリは、他のサーバ３００から受信したチャンクおよびチェインを記憶する。受信したチャンクは、メインメモリ上に記憶された後、イメージ保存部３３０に記憶される。
【００３９】
ブート部３１０は、ＩＰＭＩ等のインタフェースによりリモートブート装置１００から遠隔電源ＯＮを受け付ける遠隔管理受付部３１１と、ブート対象のソフトウェアを選択して自身のサーバ３００を起動する選択的ブート部３１２とを備える。この選択的ブート部３１２は、例えば、ＧＲＵＢ（GRand Unified Bootloader）等のブートローダである。この選択的ブート部３１２は、ＩＰＭＩによる遠隔電源ＯＮを受けると所定のソフトウェアをブートする。待機中のサーバ３００のブート部３１０は、電源ＯＮされると選択的ブート部３１２によって、イメージ転送部３２０の機能を実現するためのソフトウェアをブートする。また、サーバ３００は、配信対象のソフトウェアイメージを構成するチャンクをすべて受信すると、選択的ブート部３１２によって、そのソフトウェアイメージを用いて自身のサーバ３００を再起動させる。
【００４０】
イメージ転送部３２０は、チェイン転送部３２１と、チャンク受信部３２２と、チャンク転送部３２３と、チャンク保存部３２４とを備える。また、イメージ転送部３２０は、転送情報管理部３２５をさらに備えていてもよい。
【００４１】
チェイン転送部３２１は、前のサーバ３００またはイメージリポジトリ装置２００からチェインを受信すると、このチェインを参照して次のサーバ３００へ、チェインを転送する。また、チェイン転送部３２１は、受信したチェインをチャンク転送部３２３に通知し、チャンクテーブル３４１を生成する。チャンクテーブル３４１は、図９に例示するように、チャンクの識別情報であるチャンクＩＤごとに、そのチャンクの受信フラグ、送信フラグ、保存フラグおよびチャンクの内容である実データを示した情報である。各フラグは、それぞれそのチャンクを、受信済みか否か、送信済みか否か、図４のイメージ保存部３３０に保存済みか否かを管理するフラグであり、「０」が未、「１」が済を示す。
【００４２】
図４に戻る。チャンク受信部３２２は、他のサーバ３００またはイメージリポジトリ装置２００からチャンクを受信する。また、チャンク受信後、チャンクテーブル３４１（図９参照）における該当チャンクＩＤの受信フラグを「１」にする。
【００４３】
チャンク転送部３２３は、チャンクテーブル３４１（図９参照）を参照して、受信フラグが「１」となっているチャンクを取得し、チェインを参照して、次のサーバ３００へ送信する。また、チャンク転送部３２３は、チャンクの送信が完了すると、チャンクテーブル３４１（図９参照）における当該チャンクの送信フラグを「１」にする。
【００４４】
チャンク保存部３２４は、受信したチャンクをイメージ保存部３３０に保存する。また、チャンクの保存が完了すると、チャンクテーブル３４１（図９参照）における当該チャンクの保存フラグを「１」にする。なお、このチャンクテーブル３４１の送信フラグおよび保存フラグの双方が「１」となったチャンクの実データは、メインメモリ上のメモリ使用量削減のため、解放してもよい。解放は、所定周期でまとめて行ってもよいし、チャンクテーブル３４１の受信フラグが「１」になった時点で他のチャンクのフラグの値を確認し、各フラグの値がすべて「１」なら逐次解放してもよい。
【００４５】
転送情報管理部３２５は、チェインを参照し、自身がチェインの終端のサーバ３００であるとき、どのチャンクを受信したかや、ソフトウェアイメージ全体の何％を受信したか等を示す配信状況をイメージリポジトリ装置２００に通知する。
【００４６】
イメージ保存部３３０は、受信したソフトウェアイメージのチャンクを保存する。
【００４７】
なお、このイメージ転送部３２０は、前記したチャンクの受信、送信および保存をそれぞれ並行に行うことにより、高速なバケツリレー的配信を実現する。そして、イメージ転送部３２０は、ソフトウェアイメージを構成するすべてのチャンクの受信、送信および保存が完了すると、選択的ブート部３１２の設定を変更し、イメージ保存部３３０のソフトウェアイメージ内のシステムによって起動するようにする。その後、サーバ３００を再起動することにより、選択的ブート部３１２によってソフトウェアイメージ内のシステムが起動する。これにより、サーバ３００は、図１の端末６００に対しサービスを提供可能な状態になる。
【００４８】
＜動作手順＞
＜リモートブート装置＞
次に、図１０を用いて、図１のシステムの動作概要を説明する。ここでは、リモートブート装置１００の動作を中心に説明する。
【００４９】
リモートブート装置１００のブート要求受付部１１０は、保守者の端末装置等から、起動対象のサーバ３００の台数と、このサーバ３００へ配信したいソフトウェアイメージの種別であるイメージＩＤを含むブート要求（リモートブート要求）を受け付ける（Ｓ１１）。
【００５０】
ブート要求受付部１１０は、ブート要求を受け付けるとイメージＩＤをイメージリポジトリ装置２００に通知し（Ｓ１２）、イメージリポジトリ装置２００にそのソフトウェアイメージが存在するか否かを確認する。そのソフトウェアイメージが存在することが確認できると、ブート要求受付部１１０は、サーバ情報管理部１３０経由で、サーバ情報１３１（図５参照）を取得し（Ｓ１３）、指定された台数のサーバ３００を起動対象サーバとして選択する（Ｓ１４：対象サーバ選択）。起動対象サーバの選択は、サーバ情報１３１において、利用可能状態のサーバ３００のうち、上から必要台数を確保する、ランダムに選択する、ハードウェア性能のよいものを選択する等が考えられる。
【００５１】
ブート要求受付部１１０は、起動対象サーバを選択すると、選択した起動対象サーバを、遠隔電源管理部１２０およびチェイン生成部１４０に通知する（Ｓ１５）。そして、遠隔電源管理部１２０は、通知された起動対象サーバに対して、ＩＰＭＩ等の手段を用いて遠隔電源ＯＮを行う（Ｓ１６）。
【００５２】
チェイン生成部１４０は、トポロジ情報管理部１５０経由でトポロジ情報１５１を取得し（Ｓ１７）、チャンクの配信順序であるチェインを生成し（Ｓ１８）、チェイン送信部１６０へ通知する（Ｓ１９）。チェインの生成手順の詳細は、具体例を用いて後記する。そして、チェイン送信部１６０は、通知されたチェインをイメージリポジトリ装置２００へ送信する（Ｓ２０）。
【００５３】
以上のようにして、リモートブート装置１００は、チャンクの配信手順であるチェインを、イメージリポジトリ装置２００へ送信する。イメージリポジトリ装置２００は、送信されたチェインに従い、まず、チェインの先頭の追加対象サーバへチャンクを送信し、後は追加対象サーバ間で、チェインに従ったチャンクの転送処理が行われる。
【００５４】
＜チェイン生成手順＞
ここで、図１１および図１２を用いて、図４のリモートブート装置１００のチェイン生成部１４０のチェイン生成手順（図１０のＳ１８）を詳細に説明する。
【００５５】
ここでは、図６に例示するネットワークトポロジにおいて、Ｓｖｒ３，Ｓｖｒ４，Ｓｖｒ６，Ｓｖｒ７が起動対象サーバとして選択された場合を例に説明する。なお、図４のチェイン生成部１４０は、チェイン生成に際して、チェイン生成状況を示すテーブルである処理テーブル（図１２（ａ）〜（ｌ）参照）を生成する。なお、チェイン生成処理は、トポロジ情報１５１（図７参照）を参照して行われる。また、チェイン生成処理は、スイッチ７００ごとに処理を進めていくため、処理中のスイッチ７００をＳとして説明する。また、図１２（ａ）〜（ｌ）それぞれは、Ｓが推移したときの処理テーブルと、チェインとを示す。
【００５６】
チェイン生成部１４０は、チェインの処理を開始すると、まず、チャンクの配信元となるイメージリポジトリ装置２００（Ｒｅｐ）のアドレスが先頭となるチェインを生成する（Ｓ１）。そして、チェイン生成部１４０は、トポロジ情報１５１を参照して、この起動対象サーバに直接的または間接的に接続されるスイッチ７００群のスイッチＩＤをキーとする処理テーブルを生成し、その値である処理フラグをすべて「０」に初期化する（Ｓ２、図１２の（ａ）参照）。
【００５７】
そして、チェイン生成部１４０は、リポジトリ（イメージリポジトリ装置２００）が収容されているスイッチ７００（図７のＳＷ６）をＳとして処理を開始する（Ｓ３）。
【００５８】
チェイン生成部１４０は、Ｓのスイッチ７００に収容されている１以上の起動対象サーバのアドレスをチェイン末尾（チェインに、直前に追加したサーバ３００の次）に追加する（Ｓ４）。例えば、図６のＳＷ６に収容される起動対象サーバはＳｖｒ７のみなので、チェイン生成部１４０は、Ｓｖｒ７のアドレスのみをチェインに追加する。そして、チェイン生成部１４０は、図１２の（ｂ）に示すように処理テーブル中のＳＷ６の処理フラグを「１」にする（Ｓ５）。
【００５９】
その後、トポロジ上にＳの親スイッチがあれば（Ｓ６のＹｅｓ）、チェイン生成部１４０は、このＳを親スイッチとして（Ｓ７）、Ｓ８へ処理を進める。例えば、図６のＳＷ６には親スイッチ（ＳＷ３）があるので、チェイン生成部１４０は、ＳをＳＷ３に移し、処理をＳ８へ進める。
【００６０】
一方、トポロジ上にＳの親スイッチがなければ（Ｓ６のＮｏ）、チェイン生成部１４０は、チェイン生成処理を終了する（Ｓ１２）。つまり、生成したチェインを、図４のチェイン転送部３２１に出力する。
【００６１】
Ｓ７の後、チェイン生成部１４０は、処理テーブルを参照して、Ｓに処理フラグが「０」の子スイッチがなければ（Ｓ８のＮｏ）、処理テーブル中のＳの処理フラグを「１」にして（Ｓ１１）、Ｓ６へ戻る。例えば、Ｓが、図６のＳＷ３であるとき、図１２（ｃ）に示す処理テーブルには処理フラグが「０」であるＳＷ３の子スイッチ（ＳＷ６）はないので、チェイン生成部１４０は、処理テーブル中のＳＷ３の処理フラグを「１」にして（図１２の（ｃ）参照）、Ｓ６へ戻る。ここで、図６のＳＷ３には親スイッチ（ＳＷ０）があるので（Ｓ６のＹｅｓ）、チェイン生成部１４０は、Ｓを、親スイッチであるＳＷ０にする（Ｓ７）。つまり、チェイン生成部１４０は、Ｓに未処理の子スイッチがなければ、Ｓを、親スイッチに戻す。
【００６２】
一方、チェイン生成部１４０は、処理テーブルを参照し、Ｓに、処理フラグが「０」の子スイッチがあれば（Ｓ８のＹｅｓ）、つまり、未処理の子スイッチがあれば、チェイン生成部１４０は、Ｓを、未処理の子スイッチ、つまり、処理フラグが「０」の子スイッチのいずれかに移す（Ｓ９）。そして、Ｓ１０へ処理を進める。例えば、図１２の（ｄ）の処理テーブルに示すように、ＳＷ０には処理フラグが「０」の子スイッチが２つ（図６のＳＷ１およびＳＷ２）あるため、チェイン生成部１４０は、Ｓを、ＳＷ１またはＳＷ２のいずれか（例えば、ＳＷ１）にする。
【００６３】
Ｓ９の後、チェイン生成部１４０は、Ｓの子スイッチがあれば（Ｓ１０のＹｅｓ）、Ｓ８へ戻る。一方、Ｓの子スイッチがなければ（Ｓ１０のＮｏ）、Ｓ４へ戻る。つまり、処理対象Ｓが、サーバ３００を収容するスイッチ７００となった場合、Ｓ４を実行し、スイッチ７００に収容される起動対象サーバのアドレスをチェインに追加する。例えば、Ｓが、図６のＳＷ１であるとき、このＳＷ１は、起動対象サーバ（Ｓｖｒ３，Ｓｖｒ４，Ｓｖｒ６，Ｓｖｒ７）を収容していないので、チェインの追加は行わず、チェイン生成部１４０は、処理テーブル中のＳＷ１の処理フラグを「１」とする（Ｓ５、図１２の（ｅ）参照）。そして、このＳＷ１には親スイッチ（図６のＳＷ０）があるので（Ｓ６のＹｅｓ）、チェイン生成部１４０は、Ｓを、Ｓ１の親スイッチ（ＳＷ０）に戻す（Ｓ７）。ここで、図１２の（ｆ）の処理テーブルに示すように、ＳＷ０には、処理フラグが「０」の子スイッチ（ＳＷ２）があるので（Ｓ８のＹｅｓ）、Ｓを、ＳＷ２に移す（Ｓ９）。
【００６４】
図６のＳＷ２には子スイッチ（ＳＷ４）があり（Ｓ１０のＹｅｓ）、かつ、図１２の（ｇ）の処理テーブルに示すように、このＳＷ４の処理フラグは「０」なので（Ｓ８のＹｅｓ）、Ｓを、ＳＷ４にする（Ｓ９）。このＳＷ４には、子スイッチがなく（Ｓ１０のＮｏ）、ＳＷ４は、起動対象サーバ（Ｓｖｒ３，Ｓｖｒ４）を収容するので、チェイン生成部１４０は、このＳｖｒ３，Ｓｖｒ４のアドレスをチェインに追加する（Ｓ４、図１２の（ｈ）参照）。また、処理テーブルにおけるＳＷ４の処理フラグを「１」にする（Ｓ５、図１２の（ｈ）参照）。
【００６５】
次に、図６のＳＷ４には親スイッチ（ＳＷ２）があるので（Ｓ６のＹｅｓ）、チェイン生成部１４０は、Ｓを、ＳＷ２に戻す（Ｓ７）。図１２の（ｉ）の処理テーブルに示すように、ＳＷ２には処理フラグが「０」の子スイッチ（図６のＳＷ５）があるので（Ｓ８のＹｅｓ）、Ｓを、ＳＷ５に移す（Ｓ９）。このＳＷ５には、子スイッチがなく（Ｓ１０のＮｏ）、ＳＷ５は、起動対象サーバ（Ｓｖｒ６）を収容しているので、チェイン生成部１４０は、このＳｖｒ６のアドレスをチェインに追加し（Ｓ４）、処理テーブルにおけるＳＷ５の処理フラグを「１」にする（Ｓ５、図１２の（ｊ）参照）。
【００６６】
このＳＷ５には親スイッチ（図６のＳＷ２）があるので（Ｓ６のＹｅｓ）、チェイン生成部１４０は、Ｓを、ＳＷ２に戻す（Ｓ７）。ここで、図１２の（ｋ）の処理テーブルに示すように、ＳＷ２には処理フラグが「０」の子スイッチはないので（Ｓ８のＮｏ）、処理テーブルにおけるＳＷ２の処理フラグを「１」にする（Ｓ５）。
【００６７】
その後、このＳＷ２には親スイッチ（図６のＳＷ０）があるので（Ｓ６のＹｅｓ）、チェイン生成部１４０は、Ｓを、ＳＷ０に戻す（Ｓ７）。図１２の（ｌ）の処理テーブルに示すように、このＳＷ０には処理フラグが「０」の子スイッチはないので（Ｓ８のＮｏ）、処理テーブルにおけるＳＷ０の処理フラグを「１」にする（Ｓ１１）。このＳＷ０には親スイッチがないので（Ｓ６のＮｏ）、チェイン生成部１４０は、チェイン生成処理を終了し（Ｓ１２）、転送順序であるチェイン（図１２の（ｌ）に示すチェイン）をチェイン転送部３２１に出力する。このように、チェイン生成部１４０は、図６に例示するネットワークトポロジにおいて、イメージリポジトリ装置２００をスタート地点として、次の起動対象サーバまでのホップ数（経由するスイッチ７００）が最小となる起動対象サーバを選択し、チェインに追加していく。よって、生成されるチェインは、当該起動対象サーバ間で経由するスイッチ数が最小となるように並べたものとすることができる。
【００６８】
＜イメージリポジトリ装置＞
次に、図１３を用いて、イメージリポジトリ装置２００の動作手順を説明する。イメージリポジトリ装置２００の配信要求受付部２１０は、配信対象のソフトウェアイメージのイメージＩＤをリモートブート装置１００から受け取ると（Ｓ２１）、イメージ情報管理部２２０経由でイメージ情報２２１（図８参照）を取得し（Ｓ２２）、ソフトウェアイメージのイメージパス（パス）をチャンク分割部２４２に通知する（Ｓ２３）。
【００６９】
チャンク分割部２４２は、Ｓ２３で通知されたイメージパスをもとに、配信対象のソフトウェアイメージ（イメージ）をストレージ２３０から取得し（Ｓ２４）、このソフトウェアイメージを、チャンクに分割する（Ｓ２５）。チャンク分割部２４２は、分割したチャンクを、イメージリポジトリ装置２００のメインメモリ上に展開する。
【００７０】
また、イメージリポジトリ装置２００の配信要求受付部２１０は、リモートブート装置１００からチェインを受信すると（Ｓ２６）、受信したチェインをチェイン転送部２４１へ通知する（Ｓ２７）。そして、チェイン転送部２４１は、通知されたチェインを参照し、チェイン先頭のサーバ３００のアドレスに対してチェインを転送する（Ｓ２８）。また、配信要求受付部２１０は、Ｓ２６で受信したチェインを、チャンク送信部２４３に通知する（Ｓ２９）。チャンク送信部２４３は、チャンク分割部２４２によってメインメモリ上に展開されたチャンクを取得し（Ｓ３０）、取得したチャンクをチェインの先頭のサーバ３００に送信する（Ｓ３１）。
【００７１】
また、前記したとおり、イメージリポジトリ装置２００は、配信状況受付部２４４により、チェインの終端のサーバ３００からチャンクの配信状況を受信してもよい（Ｓ３２）。ここでの配信状況は、例えば、終端のサーバ３００が所定時間おきに、受信したチャンク数や、ソフトウェアイメージ全体に対する受信したチャンク割合等を通知するものである。
【００７２】
＜サーバ＞
次に、図１４および図１５を用いて、サーバ３００の動作を説明する。まず、図１４を用いてチェインの終端のサーバ３００以外のサーバ３００の動作を説明する。
【００７３】
図１４に示すように、サーバ３００の遠隔管理受付部３１１は、リモートブート装置１００からＩＰＭＩ等のインタフェースによって遠隔電源ＯＮの指令を受け付けると（Ｓ４１）、選択的ブート部３１２にマシンのブートを指示する（Ｓ４２）。ここで、選択的ブート部３１２はイメージ転送部３２０を起動する。
【００７４】
チェイン転送部３２１は、イメージリポジトリ装置２００または他のサーバ３００からのチェイン（必要であればパラメータ情報）が送信されると（Ｓ４３）、このチェインを、チェインの次のサーバ３００に送信する（Ｓ４４）。また、チェイン転送部３２１は、チャンク転送部３２３にチェインを通知する（Ｓ４５）。また、チェイン転送部３２１は、チャンクテーブル（図９参照）を生成する（Ｓ４６）。
【００７５】
チャンク受信部３２２は、イメージリポジトリ装置２００または他のサーバ３００からチャンクを受信すると（Ｓ４７）、受信したチャンクを、チェイン転送部３２１経由でチャンクテーブル３４１に登録する（Ｓ４８）。つまり、チャンク受信部３２２は、チャンクテーブル３４１における、受信チャンクのチャンクＩＤの受信フラグを「１」にする。
【００７６】
その後、チャンク転送部３２３は、チャンクテーブル３４１を参照して、受信フラグが「１」となっているチャンクを取得し（Ｓ４９）、チェインにおける次のサーバ３００へ送信する（Ｓ５０）。また、チャンク保存部３２４は、受信フラグが「１」となっているチャンクを取得し（Ｓ５１）、イメージ保存部３３０に保存する（Ｓ５２）。このようにして、チャンクの送信、保存が完了すると、チャンク転送部３２３およびチャンク保存部３２４はそれぞれ、チャンクテーブル３４１における当該チャンクの送信フラグ、保存フラグを「１」にする。この後、チャンク転送部３２３は、チャンクテーブル３４１を参照して、受信、送信およびイメージ保存部３３０への保存が実行済みである断片を、メインメモリ上から削除する。
【００７７】
この後、各サーバ３００において、ソフトウェアイメージを構成するすべてのチャンクの受信、送信および保存が完了すると、チェイン転送部３２１は、完了通知を選択的ブート部３１２へ出力する（Ｓ５３）。この完了通知を受けた選択的ブート部３１２は、ブート対象をイメージ保存部３３０のソフトウェアイメージ内のシステムに変更して、サーバ３００を再起動する（Ｓ５４）。これにより、選択的ブート部３１２によってソフトウェアイメージ内のシステムが起動する。
【００７８】
このようにサーバ３００は、チャンクの受信、送信および保存処理（図１４のシーケンス中の破線で囲まれている部分）それぞれを並行に行うので、高速なバケツリレー的配信を実現できる。
【００７９】
最後に、図１５を用いて、チェインの終端のサーバ３００がチャンクの配信状況をイメージリポジトリ装置２００に通知するときの動作を説明する。終端のサーバ３００は、図１４のＳ４１〜Ｓ４３と同様に、リモートブート装置１００からの遠隔電源ＯＮを受け（Ｓ６１）、ブートすると（Ｓ６２）、サーバ３００のチェイン転送部３２１は、イメージリポジトリ装置２００または他のサーバ３００から送信されたチェインを受信する（Ｓ６３）。その後、チェイン転送部３２１は、このチェインを転送情報管理部３２５へ通知し（Ｓ６４）、チャンクテーブル３４１を生成する（Ｓ６５）。ここで、終端のサーバ３００は、次のサーバ３００へのチャンクの送信を行わないので、チャンクテーブル３４１における各チャンクの送信フラグを「１」にしておく（図１６参照）。
【００８０】
チャンク受信部３２２がイメージリポジトリ装置２００または他のサーバ３００からチャンクを受信すると（Ｓ６６）、図１４のＳ４８と同様にチャンクテーブル３４１への登録を行う（Ｓ６７）。そして、チャンクの受信を確認したチャンク保存部３２４は、図１４のＳ５１，５２と同様に、チャンクの取得およびイメージ保存部３３０への保存を行い（Ｓ６８、Ｓ６９）、チャンク保存部３２４は、チャンクテーブル３４１における当該チャンクの保存フラグを「１」にする。転送情報管理部３２５は、チェイン転送部３２１経由で、チャンクテーブル３４１に示される各チャンクの情報（チャンク情報）を取得すると（Ｓ７０）、このチャンク情報を含む配信状況をイメージリポジトリ装置２００へ送信する（Ｓ７１）。これにより、イメージリポジトリ装置２００は、チェインの終端のサーバ３００に、どの程度チャンクが到達しているかを確認することができる。Ｓ７２およびＳ７３は、図１４のＳ５３およびＳ５４と同様なので説明を省略する。
【００８１】
以上説明したシステムによれば、イメージリポジトリ装置２００から配信されたソフトウェアイメージのチャンクを、チェインに従い起動対象サーバ間でバケツリレー式に転送するので、ソフトウェアイメージを迅速に配信できる。また、リモートブート装置１００は、チェインを生成するとき、チャンクの配信順序を、起動対象サーバ間で経由するスイッチ数ができるだけ少なくなるような順序とする。よって、ネットワーク内の通信帯域が無駄に占有されるおそれがなくなる。
【００８２】
なお、前記した実施の形態において、リモートブート装置１００とイメージリポジトリ装置２００とは別個の装置として説明したが、これらは同じ装置で実現するようにしてもよい。
【００８３】
また、ソフトウェアイメージを分割するときのチャンクサイズは、事前に固定的に与えられたサイズでもよいし、リモートブート装置１００からイメージＩＤと共に動的に通知されたサイズであってもよい。
【００８４】
なお、サーバ３００のチャンク送信部２４３は、チャンクを次のサーバ３００に送信するとき、次のサーバ３００と単一のコネクションを確立して送信してもよいし、複数のコネクションを確立してチャンクを並行に送信してもよい。例えば、Ｎ本のコネクションを用いた場合、チャンク送信部２４３は、各コネクションでそれぞれ総チャンク数の１／Ｎのチャンクを送信する。このようにすることで、サーバ３００間でのチャンクの送信を速やかに行うことができる。
【００８５】
また、イメージリポジトリ装置２００の配信状況受付部２４４は、終端のサーバ３００から配信状況を受信する代わりに、終端のサーバ３００からチャンク自体を受信し、その受信したチャンクをもとに配信状況を計算するようにしてもよい。また、この配信状況受付部２４４は外部装置からの要求を受け付けて、現在の配信状況を返してもよい。
【００８６】
さらに、イメージリポジトリ装置２００のチェイン転送部２４１は、追加対象サーバへのチェイン転送時に、これから送信するソフトウェアイメージの容量や、通信に使うポート番号、コネクション数等のパラメータを送信してもよい。このパラメータの値は、チェイン送信時に動的に決定してもよいし、静的な値を予め定めておいてもよい。
【００８７】
また、リモートブート装置１００で生成されたチェインは、イメージリポジトリ装置２００経由で、チェインに記載された各起動対象サーバ間で転送するものとしたが、これに限定されない。例えば、リモートブート装置１００から直接、イメージリポジトリ装置２００および起動対象サーバそれぞれへ配信してもよいし、チェインを受信したイメージリポジトリ装置２００が、起動対象サーバそれぞれへ配信してもよい。
【符号の説明】
【００８８】
１００  リモートブート装置
１１０  ブート要求受付部
１２０  遠隔電源管理部
１３０  サーバ情報管理部
１３１  サーバ情報
１４０  チェイン生成部
１５０  トポロジ情報管理部
１５１  トポロジ情報
１６０  チェイン送信部
２００  イメージリポジトリ装置
２１０  配信要求受付部
２２０  イメージ情報管理部
２２１  イメージ情報
２３０  ストレージ
２４０  イメージ配信部
２４１，３２１  チェイン転送部
２４２  チャンク分割部
２４３  チャンク送信部
２４４  配信状況受付部
３００  サーバ
３１０  ブート部
３１１  遠隔管理受付部
３１２  選択的ブート部
３２０  イメージ転送部
３２２  チャンク受信部
３２３  チャンク転送部
３２４  チャンク保存部
３２５  転送情報管理部
３３０  イメージ保存部
３４１  チャンクテーブル
４００  管理ネットワーク
５００  サービスネットワーク
６００  端末
７００  スイッチ
【図１】
2012238095.tif 000003
【図２】
2012238095.tif 000004
【図３】
2012238095.tif 000005
【図４】
2012238095.tif 000006
【図５】
2012238095.tif 000007
【図６】
2012238095.tif 000008
【図７】
2012238095.tif 000009
【図８】
2012238095.tif 000010
【図９】
2012238095.tif 000011
【図１０】
2012238095.tif 000012
【図１１】
2012238095.tif 000013
【図１２】
2012238095.tif 000014
【図１３】
2012238095.tif 000015
【図１４】
2012238095.tif 000016
【図１５】
2012238095.tif 000017
【図１６】
2012238095.tif 000018