(57)【要約】【課題】現用中サーバのリソースが、ソフトウェアイメージの転送のため長時間占有されないようにする。【解決手段】リポジトリ装置２１００が既存クラスタへサーバ２３１０を追加するとき、まず、追加対象サーバそれぞれに対し、既にソフトウェアイメージを保持している現用中サーバからソフトウェアイメージをＮ個に分割した断片を取得するよう指示する。そして、断片を取得した追加対象サーバは、他の追加対象サーバから、自身が保持していない断片を取得し、また、他の追加対象サーバに対し、自身の保持する断片を送信する。このような断片交換処理を、ソフトウェアイメージを構成するすべての断片を取得するまで繰り返す。【選択図】図４
2012155689.tif 000002
【特許請求の範囲】
【請求項１】
クラスタに追加するサーバへ、管理ネットワーク経由で、当該サーバを動作させるためのソフトウェアイメージを配信するリポジトリ装置が、
前記クラスタへのサーバの追加台数および前記サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付けるステップと、
前記入力された追加指示に基づき、前記サーバそれぞれのアドレスごとに、当該サーバが前記クラスタに追加可能な状態か否かおよび当該サーバの保持するソフトウェアイメージの種別を示したサーバ状態情報を読み出し、前記クラスタへの追加対象サーバとして、前記読み出したサーバ状態情報に示されるサーバのうち、追加可能な状態のサーバを、前記追加指示に示される台数選択するステップと、
前記サーバ状態情報を参照して、前記追加指示に示されるソフトウェアイメージを保持するサーバを特定するステップと、
前記追加対象サーバそれぞれに転送ＩＤを割り当てるステップと、
前記追加対象サーバが前記ソフトウェアイメージの断片の取得先とすべき断片取得先サーバのアドレスとして、前記ソフトウェアイメージを保持するサーバのアドレスを設定するステップと、
前記追加対象サーバごとに、当該追加対象サーバの転送ＩＤおよび前記断片取得先サーバのアドレスを示した取得交換指示情報を作成するステップと、
前記作成した取得交換指示情報を、前記追加対象サーバそれぞれへ配信するステップとを実行し、
前記サーバの追加台数が２のべき乗数であるとき、
前記追加対象サーバそれぞれが、
前記配信された取得交換指示情報と、自身のサーバのアドレスとを参照して、前記ソフトウェアイメージの分割数Ｎとして、前記取得交換指示情報に示される前記追加対象サーバの台数を設定し、前記ソフトウェアイメージの断片の断片番号として、前記自身のサーバの転送ＩＤとを設定した断片取得要求を、前記自身のサーバの前記ソフトウェアイメージの断片取得先サーバへ送信するステップと、
前記断片取得要求の応答として、前記断片取得先サーバから、前記ソフトウェアイメージを、前記追加台数に分割した断片のうち、前記断片番号に対応する断片を受信するステップとを実行し、
前記受信した断片を、他の前記追加対象サーバと交換する交換ステップを、前記ソフトウェアイメージを構成するすべての断片を受信するまで繰り返すことを特徴とするソフトウェアイメージ配信方法。
【請求項２】
前記追加対象サーバそれぞれが、
前記交換ステップにおいて、
交換ステップ数を示す変数ｐの初期値として、０を設定し、
以下の式（１）を計算するステップと、
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
前記自身のサーバの断片取得先サーバの転送ＩＤであるｉｄを、
ｓが偶数のとき、以下の式（２）により計算するステップと、
ｉｄ＝自身のサーバの転送ＩＤ＋２ｐ…式（２）
ｓが奇数のとき、以下の式（３）により計算するステップと、
ｉｄ＝自身のサーバの転送ＩＤ−２ｐ…式（３）
前記交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）に計算するステップと、
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
前記交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）に計算するステップと、
ｅ＝ｂ＋２ｐ−１…式（５）
前記転送ＩＤが、前記ｉｄであるサーバから、前記ソフトウェアイメージを前記Ｎ個に分割した断片のうち、前記断片番号ｂ〜前記断片番号ｅの断片を受信するステップとを実行し、
まだ、前記ソフトウェアイメージを構成するいずれかの断片を受信していないとき、
前記変数ｐの値をインクリメントして、再度、前記式（１）を計算する処理を、前記ソフトウェアイメージを構成するすべての断片を受信するまで実行することを特徴とする請求項１に記載のソフトウェアイメージ配信方法。
但し、式（１）および式（４）における、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値とする。
【請求項３】
前記サーバの追加台数が２のべき乗数でないとき、
前記追加対象サーバそれぞれが、
前記断片取得要求を、前記自身のサーバの前記ソフトウェアイメージの断片取得先サーバへ送信するステップに代えて、
前記配信された取得交換指示情報と、自身のサーバのアドレスとを参照して、前記ソフトウェアイメージの分割数Ｎとして、前記取得交換指示情報に示される前記追加対象サーバの台数より大きい最小の２のべき乗数を設定し、前記ソフトウェアイメージの断片の断片番号として、前記自身のサーバの転送ＩＤとを設定した断片取得要求を、前記自身のサーバの前記ソフトウェアイメージの断片取得先サーバへ送信するステップを実行し、
前記交換ステップに代えて、
交換ステップ数を示す変数ｐの初期値として、０を設定し、
以下の式（１）を計算するステップと、
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
前記自身のサーバの断片取得先サーバの転送ＩＤであるｉｄを、
ｓが偶数のとき、以下の式（２）により計算するステップと、
ｉｄ＝自身のサーバの転送ＩＤ＋２ｐ…式（２）
ｓが奇数のとき、以下の式（３）により計算するステップと、
ｉｄ＝自身のサーバの転送ＩＤ−２ｐ…式（３）
前記交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）に計算するステップと、
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
前記交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）に計算するステップと、
ｅ＝ｂ＋２ｐ−１…式（５）
前記計算したｉｄが、前記サーバの追加台数の値未満であるとき、
前記転送ＩＤが、前記ｉｄであるサーバから、前記ソフトウェアイメージをＮ個に分割した断片のうち、前記断片番号ｂ〜前記断片番号ｅの断片を受信するステップと、
前記計算したｉｄが、前記サーバの追加台数以上の値であるとき、
前記取得交換指示情報を参照して特定した前記断片取得先サーバから、前記ソフトウェアイメージをＮ個に分割した断片のうち、前記断片番号ｂ〜前記断片番号ｅの断片を受信するステップとを実行し、
まだ、前記ソフトウェアイメージを構成するいずれかの断片を受信していないとき、
前記変数ｐの値をインクリメントして、再度、前記式（１）を計算する処理を、前記ソフトウェアイメージを構成するすべての断片を受信するまで実行することを特徴とする請求項１に記載のソフトウェアイメージ配信方法。
但し、式（１）および式（４）における、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値とする。
【請求項４】
前記リポジトリ装置が、
新規クラスタの構築のため、
前記新規クラスタを構成するサーバの台数および前記サーバへ配信するソフトウェアイメージの種別を含む構築指示の入力を受け付けるステップと、
前記読み出したサーバ状態情報に示されるサーバのうち、前記追加可能な状態のサーバを前記構築指示に示される台数選択するステップと、
前記構築指示に示される種別のソフトウェアイメージを、記憶部から読み出し、前記選択したサーバへ配信するステップとをさらに実行することを特徴とする請求項１ないし請求項３のいずれか１項に記載のソフトウェアイメージ配信方法。
【請求項５】
クラスタに追加するサーバへ、管理ネットワーク経由で、当該サーバを動作させるためのソフトウェアイメージを配信するリポジトリ装置を備えるシステムであって、
前記リポジトリ装置は、
前記クラスタへのサーバの追加台数および前記サーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付ける管理インタフェース部と、
前記サーバそれぞれのアドレスごとに、当該サーバが前記クラスタに追加可能な状態か否かおよび当該サーバの保持するソフトウェアイメージの種別を示したサーバ状態情報を記憶する記憶部と、
前記入力された追加指示に基づき、前記サーバ状態情報を読み出し、前記クラスタへの追加対象サーバとして、前記読み出したサーバ状態情報に示されるサーバのうち、追加可能な状態のサーバを、前記追加指示に示される台数選択し、前記サーバ状態情報を参照して、前記追加指示に示されるソフトウェアイメージを保持するサーバを特定し、前記追加対象サーバそれぞれに転送ＩＤを割り当て、前記追加対象サーバが前記ソフトウェアイメージの断片の取得先とすべき断片取得先サーバのアドレスとして、前記ソフトウェアイメージを保持するサーバのアドレスを設定し、前記追加対象サーバごとに、当該追加対象サーバの転送ＩＤおよび前記断片取得先サーバのアドレスを示した取得交換指示情報を作成し、前記作成した取得交換指示情報を、前記追加対象サーバそれぞれへ配信する追加配信部とを備え、
前記サーバそれぞれは、
前記サーバの追加台数が２のべき乗数であるとき、前記配信された取得交換指示情報と、自身のサーバのアドレスとを参照して、前記ソフトウェアイメージの分割数Ｎとして、前記取得交換指示情報に示される前記追加対象サーバの台数を設定し、前記ソフトウェアイメージの断片の断片番号として、前記自身のサーバの転送ＩＤとを設定した断片取得要求を、前記自身のサーバの前記ソフトウェアイメージの断片取得先サーバへ送信するステップを実行し、前記断片取得要求の応答として、前記断片取得先サーバから、前記ソフトウェアイメージを前記Ｎ個に分割した断片のうち、前記断片番号に対応する断片を受信し、前記受信した断片を、他の前記追加対象サーバと交換する交換ステップを、前記ソフトウェアイメージを構成するすべての断片を受信するまで繰り返すイメージ転送部と、
前記ソフトウェアイメージの断片を保存するソフトウェアイメージ保管部と、
前記ソフトウェアイメージ保管部に前記ソフトウェアイメージを構成するすべての断片が保存されたとき、前記ソフトウェアイメージを読み込み、前記自身のサーバを起動するブート部とを備えることを特徴とするシステム。
【請求項６】
前記サーバそれぞれが、
前記交換ステップにおいて、
交換ステップ数を示す変数ｐの初期値として、０を設定し、
以下の式（１）を計算するステップと、
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
前記自身のサーバの断片取得先サーバの転送ＩＤであるｉｄを、
ｓが偶数のとき、以下の式（２）により計算し、
ｉｄ＝自身のサーバの転送ＩＤ＋２ｐ…式（２）
ｓが奇数のとき、以下の式（３）により計算し、
ｉｄ＝自身のサーバの転送ＩＤ−２ｐ…式（３）
前記交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）に計算し、
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
前記交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）に計算し、
ｅ＝ｂ＋２ｐ−１…式（５）
前記転送ＩＤが、前記ｉｄであるサーバから、前記ソフトウェアイメージをＮ個に分割した断片のうち、前記断片番号ｂ〜前記断片番号ｅの断片を受信し、
まだ、前記ソフトウェアイメージを構成するいずれかの断片を受信していないとき、
前記ｐをインクリメントして、再度、前記式（１）を計算する処理を、前記ソフトウェアイメージを構成するすべての断片を受信するまで実行することを特徴とする請求項５に記載のシステム。
但し、式（１）および式（４）における、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値とする。
【請求項７】
前記サーバの追加台数が２のべき乗数でないとき、前記サーバそれぞれが、
前記断片取得要求を、前記自身のサーバの前記ソフトウェアイメージの断片取得先サーバへ送信するステップに代えて、前記配信された取得交換指示情報と、自身のサーバのアドレスとを参照して、前記ソフトウェアイメージの分割数Ｎとして、前記取得交換指示情報に示される前記追加対象サーバの台数より大きい最小の２のべき乗数を設定し、前記ソフトウェアイメージの断片の断片番号として、前記自身のサーバの転送ＩＤとを設定した断片取得要求を、前記自身のサーバの前記ソフトウェアイメージの断片取得先サーバへ送信するステップを実行し、
前記交換ステップに代えて、
交換ステップ数を示す変数ｐの初期値として、０を設定し、
以下の式（１）を計算し、
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
前記自身のサーバの断片取得先サーバの転送ＩＤであるｉｄを、
ｓが偶数のとき、以下の式（２）により計算し、
ｉｄ＝前記自身のサーバの転送ＩＤ＋２ｐ…式（２）
ｓが奇数のとき、以下の式（３）により計算し、
ｉｄ＝前記自身のサーバの転送ＩＤ−２ｐ…式（３）
前記交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）に計算し、
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
前記交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）に計算し、
ｅ＝ｂ＋２ｐ−１…式（５）
前記計算したｉｄが、前記サーバの追加台数の値未満であるとき、
前記転送ＩＤが、前記ｉｄであるサーバから、前記ソフトウェアイメージをＮ個に分割した断片のうち、前記断片番号ｂ〜前記断片番号ｅの断片を受信し、
前記計算したｉｄが、前記サーバの追加台数以上の値であるとき、
前記取得交換指示情報を参照して特定した前記断片取得先サーバから、前記ソフトウェアイメージをＮ個に分割した断片のうち、前記断片番号ｂ〜前記断片番号ｅの断片を受信し、
まだ、前記ソフトウェアイメージを構成するいずれかの断片を受信していないとき、
前記ｐをインクリメントして、再度、前記式（１）を計算する処理を、前記ソフトウェアイメージを構成するすべての断片を受信するまで実行することを特徴とする請求項５に記載のシステム。
但し、式（１）および式（４）における、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値とする。
【請求項８】
前記リポジトリ装置の管理インタフェース部は、新規クラスタの構築のため、前記新規クラスタを構成するサーバの台数および前記サーバへ配信するソフトウェアイメージの種別を含む構築指示の入力を受け付け、
前記リポジトリ装置は、
前記サーバ状態情報に示されるサーバのうち、前記追加可能な状態のサーバを前記構築指示に示される台数選択し、前記構築指示に示される種別のソフトウェアイメージを、記憶部から読み出し、前記選択したサーバへ配信する初期配信部をさらに備えることを特徴とする請求項５ないし請求項７のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステムの各サーバへのソフトウェアイメージの配信技術に関する。
【背景技術】
【０００２】
近年、Webサーバホスティング等の分野では、データセンタのようなサーバ管理事業者が一括してサーバを管理し、サービス提供事業者をホスティングするＩａａＳ（Infrastructure as a Service）等と呼ばれる形態が一般化している（非特許文献１参照）。ここで、サービスの需要増時や、そのサービスを提供しているサーバが障害によって離脱した場合に速やかに要求に対応するためには、ある程度の待機余剰資源を含めたサーバを用意しておく必要がある。また、近年では無停止でサーバ資源の動的追加および削除が可能なネットワークサーバクラスタのアーキテクチャが登場しており、通信網を構成する設備のさらなる運用柔軟化や低コスト化が期待されている（非特許文献２参照）。
【０００３】
そのような要求に対して、各ネットワークサーバクラスタの余剰資源をリソースプールとして集約しておき、需要増時や、障害や災害によって失われた資源の補充時に、リソースプールから必要なサーバを各クラスタに追加することにより、全体の設備利用効率を向上させる技術が検討されている。
【０００４】
このように余剰資源が集約された共用のリソースプールから、サーバをクラスタに追加する場合、リソースプール内に保持されているサーバが、どのようなソフトウェア構成を取るかが事前に分からない。このため、リソースプールのサーバはソフトウェアを何も有していない状態であることが一般的である。よって、資源追加時には、リポジトリから、個々のサービスに対応したソフトウェア構成が含まれたソフトウェアイメージを、追加対象のサーバに転送し、このサーバに必要な設定を行った後にクラスタに組み込む必要がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Amazon Elastic Compute Cloud （Amazon EC2）、[online]、[平成22年12月3日検索]、インターネット、<URL:http://aws.amazon.com/ec2/>
【非特許文献２】Mobicents、[online]、[平成22年12月3日検索]、インターネット、<URL: http://www.mobicents.org/>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前記したとおり、リソースプールのサーバは、ソフトウェアを何も有していない状態であることが一般的である。よって、リポジトリは、追加対象のサーバが決まると、その追加対象のサーバへ、個々のサービスに対応したソフトウェア構成が含まれたソフトウェアイメージを転送し、必要な設定を行った後にクラスタに組み込む必要がある。このソフトウェアイメージはオペレーティングシステムや各種ミドルウェア、データ等を含んでいるため数〜数十ＧＢに及ぶ大容量であり、転送にはある程度の時間を要する。
【０００７】
ここで、激甚災害や大規模障害等が発生した場合、各サービスを提供するクラスタを構成する多数のサーバ資源が同時に失われ、複数のクラスタが一斉に失われた分の資源を補充するための資源要求を行うことが考えられる。その際には、ソフトウェアイメージを管理しているリポジトリに対して、多数のサーバからのアクセスが発生してデータ転送に輻輳が発生することが考えられる。このため、ソフトウェアイメージの転送時間が長大化し、復旧時間が遅くなり、インフラとして公共性の高い通信サービスに求められる無停止性や即応性を満たすことができないおそれがある。
【０００８】
このような環境下で、リポジトリの負荷集中を防ぐため、リポジトリからソフトウェアイメージを転送するのではなく、同じクラスタに属する現用中（サービス提供中）サーバからソフトウェアイメージを転送する方法も考えられる。しかし、このような方法において、複数のサーバを同時に追加する場合、追加対象の全サーバにソフトウェアイメージが転送されるまで、現用中サーバにおける転送処理が長時間継続し、現用中サーバにおいてサービス提供に必要なリソースが不足するおそれがある。
【０００９】
そこで、本発明は、前記した問題を解決し、クラスタに複数のサーバを追加する場合であっても、現用中サーバのリソースがソフトウェアイメージの転送のために占有される時間を低減することを目的とする。
【課題を解決するための手段】
【００１０】
前記した課題を解決するため、本発明は、クラスタに追加するサーバへ、管理ネットワーク経由で、当該サーバを動作させるためのソフトウェアイメージを配信するリポジトリ装置が、クラスタへのサーバの追加台数およびサーバへ配信するソフトウェアイメージの種別を含む追加指示の入力を受け付ける。そして、リポジトリ装置は、この入力された追加指示に基づき、サーバそれぞれのアドレスごとに、当該サーバがクラスタに追加可能な状態か否かおよび当該サーバの保持するソフトウェアイメージの種別を示したサーバ状態情報を読み出す。そして、クラスタへの追加対象サーバとして、読み出したサーバ状態情報に示されるサーバのうち、追加可能な状態のサーバを、追加指示に示される台数選択する。そして、サーバ状態情報を参照して、追加指示に示されるソフトウェアイメージを保持するサーバを特定し、また、追加対象サーバそれぞれに転送ＩＤを割り当てる。次に、リポジトリ装置は、追加対象サーバがソフトウェアイメージの断片の取得先とすべき断片取得先サーバのアドレスとして、ソフトウェアイメージを保持するサーバのアドレスを設定する。そして、リポジトリ装置は、追加対象サーバごとに、当該追加対象サーバの転送ＩＤおよび断片取得先サーバのアドレスを示した取得交換指示情報を作成し、この作成した取得交換指示情報を、追加対象サーバそれぞれへ配信する。ここで、クラスタへのサーバの追加台数が２のべき乗数であるとき、追加対象サーバそれぞれが、リポジトリ装置から配信された取得交換指示情報と、自身のサーバのアドレスとを参照して、ソフトウェアイメージの分割数Ｎとして、取得交換指示情報に示される追加対象サーバの台数を設定し、ソフトウェアイメージの断片番号として、自身のサーバの転送ＩＤとを設定した断片取得要求を、自身のサーバのソフトウェアイメージの断片取得先サーバへ送信する。そして、追加対象サーバそれぞれは、この断片取得要求の応答として、断片取得先サーバから、ソフトウェアイメージを、追加台数に分割した断片のうち、断片番号に対応する断片を受信する。そして、受信した断片を、他の追加対象サーバと交換する交換ステップを、ソフトウェアイメージを構成するすべての断片を受信するまで繰り返す。
【００１１】
このように追加対象サーバは、まず、既にソフトウェアイメージを保持しているサーバ（現用中サーバ）からソフトウェアイメージの断片を取得する。そして、その後、断片を受信した追加対象サーバ同士で断片を交換しあうことで、ソフトウェアイメージを構成するすべての断片を取得する。よって、現用中サーバのリソースがソフトウェアイメージの転送のために占有される時間を低減できる。
【００１２】
また、本発明は、クラスタへの追加対象サーバそれぞれが、交換ステップにおいて、交換ステップ数を示す変数ｐの初期値として、０を設定し、以下の式（１）を計算する。
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
そして、追加対象サーバそれぞれは、自身のサーバの断片取得先サーバの転送ＩＤであるｉｄを、ｓが偶数のとき、以下の式（２）により計算し、
ｉｄ＝自身のサーバの転送ＩＤ＋２ｐ…式（２）
ｓが奇数のとき、以下の式（３）により計算する。
ｉｄ＝自身のサーバの転送ＩＤ−２ｐ…式（３）
次に、追加対象サーバそれぞれは、交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）に計算し、
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）に計算する。
ｅ＝ｂ＋２ｐ−１…式（５）
そして、追加対象サーバそれぞれは、転送ＩＤが、ｉｄであるサーバから、ソフトウェアイメージをＮ個に分割した断片のうち、断片番号ｂ〜断片番号ｅの断片を受信する。ここで、まだ、ソフトウェアイメージを構成するいずれかの断片を受信していなければ、変数ｐの値をインクリメントして、再度、式（１）を計算する。このような処理を、ソフトウェアイメージを構成するすべての断片を受信するまで実行する。
但し、式（１）および式（４）における、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値とする。
【００１３】
このようにすることで、追加対象サーバは、ソフトウェアイメージの断片を漏れなく、効率よく取得できる。
【００１４】
また、本発明は、クラスタへのサーバの追加台数が２のべき乗数でないとき、追加対象サーバそれぞれが、断片取得要求を、自身のサーバのソフトウェアイメージの断片取得先サーバへ送信する代わりに以下の処理を行う。すなわち、追加対象サーバは、配信された取得交換指示情報と、自身のサーバのアドレスとを参照して、断片取得要求に、ソフトウェアイメージの分割数Ｎとして、取得交換指示情報に示される追加対象サーバの台数より大きい最小の２のべき乗数を設定する。また、この断片取得要求に、ソフトウェアイメージの断片番号として、自身のサーバの転送ＩＤとを設定し、自身のサーバのソフトウェアイメージの断片取得先サーバへ送信する。また、追加対象サーバそれぞれは、交換ステップにおいて、交換ステップ数を示す変数ｐの初期値として、０を設定し、以下の式（１）を計算する。
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
そして、追加対象サーバそれぞれは、自身のサーバの断片取得先サーバの転送ＩＤであるｉｄを、ｓが偶数のとき、以下の式（２）により計算し、
ｉｄ＝自身のサーバの転送ＩＤ＋２ｐ…式（２）
ｓが奇数のとき、以下の式（３）により計算する。
ｉｄ＝自身のサーバの転送ＩＤ−２ｐ…式（３）
次に、追加対象サーバそれぞれは、交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）に計算し、
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）に計算する。
ｅ＝ｂ＋２ｐ−１…式（５）
ここで、計算したｉｄが、サーバの追加台数の値未満であるとき、追加対象サーバは、転送ＩＤが、ｉｄであるサーバから、ソフトウェアイメージをＮ個に分割した断片のうち、断片番号ｂ〜断片番号ｅの断片を受信する。一方、計算したｉｄが、サーバの追加台数以上の値であるとき、追加対象サーバは、取得交換指示情報を参照して特定した断片取得先サーバから、ソフトウェアイメージをＮ個に分割した断片のうち、断片番号ｂ〜断片番号ｅの断片を受信する。ここで、ソフトウェアイメージを構成するいずれかの断片を受信していなければ、変数ｐの値をインクリメントして、再度、前記式（１）を計算する。このような処理を、ソフトウェアイメージを構成するすべての断片を受信するまで実行する。但し、式（１）および式（４）における、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値とする。
【００１５】
このようにすることで、追加対象サーバの台数が２のべき乗数でなかった場合でも、すべての追加対象サーバがソフトウェアイメージの断片を取得できる。また、追加対象サーバは、できるだけ、他の追加対象サーバとの間でソフトウェアイメージの断片を交換するようにし、他の追加対象サーバと断片を交換できない場合に、現用中サーバから断片を取得する。これにより、現用中サーバのリソースがソフトウェアイメージの転送のために占有される時間を低減できる。
【００１６】
また、本発明は、リポジトリ装置が、新規クラスタの構築のため、前記新規クラスタを構成するサーバの台数および前記サーバへ配信するソフトウェアイメージの種別を含む構築指示の入力を受け付ける。そして、リポジトリ装置は、サーバ状態情報に示されるサーバのうち、追加可能な状態のサーバを前記構築指示に示される台数選択する。次に、リポジトリ装置は、構築指示に示される種別のソフトウェアイメージを、記憶部から読み出し、選択したサーバへ配信する。
【００１７】
このようにすることで、リポジトリ装置は、新規クラスタを構築することができる。
【発明の効果】
【００１８】
本発明によれば、クラスタに複数のサーバを追加する場合であっても、現用中サーバのリソースがソフトウェアイメージの転送のために占有される時間を低減できる。
【図面の簡単な説明】
【００１９】
【図１】本実施の形態のシステムの構成例を示した図である。
【図２】図１のクラスタシステムの構成例を示した図である。
【図３】図２のシステムの処理概要を示した図である。
【図４】図２のシステムの処理概要を示した図である。
【図５】図１のソフトウェアイメージＤＢ内のソフトウェアイメージ情報を例示した図である。
【図６】図１のサーバＤＢ内のサーバ状態情報を例示した図である。
【図７】図１のリポジトリ装置が配信する取得交換指示情報を例示した図である。
【図８】図１のサーバＤＢ内のサーバ状態情報を例示した図である。
【図９】図１のサーバＤＢ内のサーバ状態情報を例示した図である。
【図１０】図２のシステムの追加対象サーバ数が、２のべき乗数ではないときの処理概要を示した図である。
【図１１】図２のシステムの追加対象サーバ数が、２のべき乗数ではないときの処理概要を示した図である。
【図１２】図１のサーバの処理手順を示したフローチャートである。
【発明を実施するための形態】
【００２０】
＜全体構成＞
以下、本発明を実施するための最良の形態（以下、実施の形態という）について説明する。まず、図１を用いて、本実施の形態のリポジトリ装置およびサーバを含むシステムの全体構成を説明する。
【００２１】
システムは、保守者端末１０００と、クラスタシステム２０００と、利用者端末３０００とを含んで構成される。クラスタシステム２０００は、保守ネットワーク４０００（ＬＡＮ（Local Area Network）またはＩＰ（Internet Protocol）網）によって保守者端末１０００と接続し、サービスネットワーク５０００によって利用者端末３０００と接続する。サービス提供者は、クラスタシステム２０００に対する保守コマンド（後記）を保守者端末１０００により入力する。ユーザは、利用者端末３０００を用い、クラスタシステム２０００上で提供されるサービスをサービスネットワーク５０００（ＬＡＮまたはＩＰ網）越しに利用する。
【００２２】
クラスタシステム２０００は、計算資源である複数のサーバ２３１０が集約されているリソースプール２３００と、リポジトリ装置２１００とを備え、両者は管理ネットワーク２２００によって接続される。
【００２３】
リポジトリ装置２１００は、保守者端末１０００から入力された保守コマンドに基づき、リソースプール２３００のサーバ２３１０を起動させ、このサーバ２３１０へソフトウェアイメージを配信する。ここで、このリポジトリ装置２１００が行う処理は大きく２つある。１つは、新規クラスタの構築であり、もう１つは既存クラスタへの資源の追加である。つまり、リポジトリ装置２１００は、保守コマンドとして、新規クラスタの構築または既存クラスタへの資源の追加に関するコマンド（クラスタへのサーバ２３１０の追加指示）の入力を受け付けると、この保守コマンドに基づき、新規クラスタの構築または既存クラスタへの資源の追加を行う。この保守コマンドは、新規クラスタの構築であれば、新規クラスタのサーバ２３１０の台数と、配信するソフトウェアイメージのイメージＩＤ（種別）とを含む。一方、既存クラスタへの資源の追加であれば、追加するサーバ２３１０の台数と、配信するソフトウェアイメージのイメージＩＤ（種別）とを含む。
【００２４】
＜処理の概要＞
次に、図１を適宜参照しつつ、図３，４を用いて、システムの処理の概要を説明する。ここでは、リソースプール２３００内に、図２に示すように、サーバ２３１０Ａ〜２３１０Ｈが存在する場合を例に説明する。リポジトリ装置２１００は、図１の保守ネットワーク４０００経由で、新規クラスタの構築指示を受け付けると、新規クラスタを構成するサーバ２３１０（例えば、サーバ２３１０Ｅ，２３１０Ｆ，２３１０Ｇ，２３１０Ｈ）を選択する。そして、選択したサーバ２３１０へ、ソフトウェアイメージを配信する。ソフトウェアイメージを受信したサーバ２３１０は、ソフトウェアイメージを読み込み、自身のサーバ２３１０を起動し、現用中サーバとなる。その後、リポジトリ装置２１００は、保守ネットワーク４０００経由で、既存クラスタへの資源の追加指示を受け付けると、追加対象サーバを選択する。ここでは、追加対象サーバとして、サーバ２３１０Ａ，２３１０Ｂ，２３１０Ｃ，２３１０Ｄを選択した場合を考える。この場合、リポジトリ装置２１００は、追加対象サーバの台数（この場合、４台）に応じて、追加対象サーバそれぞれに転送ＩＤを割り当て、また、追加対象サーバがソフトウェアイメージの断片を取得するときの取得先（断片取得先）サーバの割り当ても行う。そして、各追加対象サーバに割り当てた転送ＩＤおよび断片取得先サーバを、追加対象サーバそれぞれへ通知する。この通知を受けた追加対象サーバはそれぞれ、自身のサーバ２３１０の断片取得先サーバに対し、ソフトウェアイメージの断片の取得要求（断片取得要求）を送信する。この取得要求は、追加対象サーバ数（追加対象サーバの数）と断片番号（自身の転送ＩＤ）とを含む。
【００２５】
現用中サーバはそれぞれ、追加対象サーバからの断片取得要求を受信すると、自身の保持するソフトウェアイメージを、（ソフトウェアイメージのサイズ／分割数Ｎ（ここでは追加対象サーバ数））のサイズの断片に分割する。そして、そのソフトウェアイメージの断片の先頭から数えて、断片番号で指定された順番の断片を、断片取得要求の送信元のサーバ２３１０へ送信する。これにより、追加対象サーバはそれぞれ、ソフトウェアイメージを構成する断片のうち、自身のサーバ２３１０の転送ＩＤに対応する断片を取得することになる。つまり、図３のサーバ２３１０Ａ（転送ＩＤ：０）は、断片番号「０」の断片を取得し、サーバ２３１０Ｂ（転送ＩＤ：１）は、断片番号「１」の断片を取得し、サーバ２３１０Ｃ（転送ＩＤ：２）は、断片番号「２」の断片を取得し、サーバ２３１０Ｄ（転送ＩＤ：３）は、断片番号「３」の断片を取得する。
【００２６】
その後、追加対象サーバはそれぞれ、自身のサーバ２３１０の保持する断片を交換しあう（コピーして他の追加対象サーバへ転送する）。このような交換を、ソフトウェアイメージを構成するすべての断片が揃うまで繰り返す。例えば、図３に示した処理の後、追加対象サーバはそれぞれ、図４に示すように、転送ＩＤが隣接するサーバ２３１０同士がペアとなって、自身の取得した断片を交換する（Ｓ１）。これにより、サーバ２３１０Ａ（転送ＩＤ：０）およびサーバ２３１０Ｂ（転送ＩＤ：１）は、断片番号「０，１」の断片を取得し、サーバ２３１０Ｃ（転送ＩＤ：２）およびサーバ２３１０Ｄ（転送ＩＤ：３）は、断片番号「２，３」の断片を取得する。その後、サーバ２３１０Ａ（転送ＩＤ：０）は、サーバ２３１０Ｃ（転送ＩＤ：２）との間で、断片番号「０，１」の断片と、断片番号「２，３」の断片とを交換する。また、サーバ２３１０Ｂ（転送ＩＤ：１）は、サーバ２３１０Ｄ（転送ＩＤ：３）との間で、断片番号「０，１」の断片と、断片番号「２，３」の断片とを交換する（Ｓ２）。これにより、サーバ２３１０Ａ〜２３１０Ｄはそれぞれ、ソフトウェアイメージを構成するすべての断片（断片番号「０〜３」の断片）を取得することができる。
【００２７】
以上のような処理を行うことで、現用中サーバは、追加対象サーバそれぞれへ全ソフトウェアイメージを送信する必要がなくなるので、ソフトウェアイメージ転送のために長時間リソースが占有されることがなくなる。また、追加対象サーバも、転送ＩＤが隣接するサーバ２３１０同士でソフトウェアイメージの断片を交換する等、断片を効率よく交換するので、少ない処理負荷でソフトウェアイメージのすべての断片を取得することができる。
【００２８】
なお、ここでは、クラスタへの追加サーバの台数が２のべき乗数である場合について説明したが、追加サーバの台数が２のべき乗数ではない場合でも、ソフトウェアイメージの断片の交換は可能である。この場合の処理手順については後記する。
【００２９】
＜構成＞
図１のリポジトリ装置２１００およびサーバ２３１０の構成を詳細に説明する。
【００３０】
＜リポジトリ装置＞
リポジトリ装置２１００は、管理インタフェース部２１１０と、ソフトウェアイメージＤＢ（データベース）２１２０と、サーバＤＢ２１３０と、初期配信部２１４０と、追加配信部２１５０とを備える。このリポジトリ装置２１００は、入出力インタフェース、通信インタフェース、ＣＰＵ（Central Processing Unit）、メモリ等を備えるコンピュータにより実現される。
【００３１】
管理インタフェース部２１１０は、保守者端末１０００とのインタフェースとなり、前記した保守コマンドを受け付ける。この管理インタフェース部２１１０は、通信インタフェースや入出力インタフェース、および、ＣＰＵによるプログラム実行処理により実現される。
【００３２】
ソフトウェアイメージＤＢ２１２０は、ソフトウェアイメージ情報（図５参照）を備える。このソフトウェアイメージ情報は、各サーバ２３１０がサービス実行に必要なソフトウェアイメージの種別（イメージＩＤ）ごとに、ソフトウェアイメージの格納場所を示した情報である。ソフトウェアイメージは、サービスの提供に必要なソフトウェア構成を含んだファイルであり、サーバ２３１０に配信されるファイルである。ソフトウェアイメージＤＢ２１２０は、管理インタフェース部２１１０等から主キーであるイメージＩＤの入力を受け付けると、そのソフトウェアイメージの格納場所を示すパスを返す。パスは、リポジトリ装置２１００がアクセス可能な場所であれば、リポジトリ装置２１００のローカルディスク上でもよいし、リモートストレージ上でもよい。
【００３３】
サーバＤＢ２１３０は、サーバ状態情報（図６参照）を備える。このサーバＤＢ２１３０は、初期配信部２１４０や追加配信部２１５０から、追加資源として利用可能な状態のサーバ２３１０の問い合わせを受けたとき、このサーバＤＢ２１３０は、サーバ状態情報において、状態が「待機中」となっているサーバ２３１０を所定台数選択し、そのサーバ２３１０のサーバＩＤと、アドレスとを返す。サーバ状態情報は、主キーであるサーバＩＤごとに、そのサーバＩＤのサーバ２３１０のアドレス、状態、所持ソフトウェアイメージを示した情報である。アドレスとは、ソフトウェアイメージの転送等、外部との通信に用いられるアドレスである。図６の例はIPv4（Internet Protocol Version 4）アドレスを記載している。状態は、そのサーバの稼動状態を示し、そのサーバが追加資源として利用可能（何もサービスを提供していない）か、それとも現用中（サービス提供中）であるかを判別できればよい。図６の例では追加資源として利用可能な状態を「待機中」、別のサービスを提供している状態を「現用中」とし、さらにどのサービスも提供していないが、追加資源としても利用可能でない状態を「故障中」としている。所持ソフトウェアイメージは、そのサーバが所持しているソフトウェアイメージのイメージＩＤである。なお、ソフトウェアイメージを既に有している現用中サーバは、自身と同じクラスタに新規追加されるサーバ２３１０に、自身が持つソフトウェアイメージを転送することができる。
【００３４】
なお、このサーバＤＢ２１３０およびソフトウェアイメージＤＢ２１２０は、ＣＰＵによるプログラム実行処理と、サーバ状態情報やソフトウェアイメージ管理情報を記憶する記憶手段（ＲＡＭ（Random Access Memory）やＨＤＤ（Hard Disk Drive）、フラッシュメモリ等）とにより実現される。
【００３５】
初期配信部２１４０は、新規クラスタ構築時に、起動対象のサーバ２３１０に対して、ソフトウェアイメージを配信する。リポジトリ装置２１００から起動対象のサーバ２３１０へのソフトウェアイメージ配信は、初回のクラスタ構築時（すなわち、必要なソフトウェアイメージを有する現用中サーバが存在しない場合）に行われる。具体的には、管理インタフェース部２１１０経由で入力された新規クラスタ構築コマンドに対し、初期配信部２１４０は、ソフトウェアイメージＤＢ２１２０に、このコマンドに示される種別（イメージＩＤ）のソフトウェアイメージの問い合わせを行う。そして、このソフトウェアイメージＤＢ２１２０から、問い合わせの応答を受け取ると、この応答に示されるソフトウェアイメージを起動対象のサーバ２３１０に転送する。なお、この起動対象のサーバ２３１０は、初期配信部２１４０が、サーバＤＢ２１３０に対し、問い合わせを行い、その応答に示されるサーバ２３１０とする。
【００３６】
追加配信部２１５０は、既存クラスタへの資源追加コマンドに対して、サーバＤＢ２１３０のサーバ状態情報を参照して、追加対象サーバそれぞれに対して、どの現用中サーバから断片を取得し、どのような順序でその断片を交換しあうかを指示する。
【００３７】
つまり、追加配信部２１５０は、サーバＤＢ２１３０から、資源追加コマンドに示されるソフトウェアイメージを保持するサーバ２３１０の情報を得る。また、追加配信部２１５０は、追加対象サーバそれぞれにユニークな転送ＩＤを割り当てる。そして、追加配信部２１５０は、追加対象サーバが、ソフトウェアイメージの断片の取得先とすべき断片取得先サーバのアドレスとして、資源追加コマンドに示されるソフトウェアイメージを保持するサーバ２３１０のアドレスを設定する。その後、追加配信部２１５０は、追加対象サーバごとに、転送ＩＤおよび断片取得先サーバのアドレスを示した取得交換指示情報（図７参照）を作成する。そして、追加配信部２１５０は、この取得交換指示情報を、各サーバ２３１０へ配信する。各サーバ２３１０は、この取得交換指示情報を参照することで、ソフトウェアイメージの断片をどの現用中サーバ、または追加対象サーバから取得すればよいかを判断することができる。
【００３８】
取得交換指示情報を、図７に例示する。図７に示すように、取得交換指示情報は、追加対象サーバ(アドレスが主キー)について、その追加対象サーバの転送ＩＤと、その追加対象サーバの断片取得先（断片取得先サーバ）とを示した情報である。転送ＩＤは、例えば、「０」から「追加するサーバ台数−１」までの数字であり、各サーバ２３１０に対して異なる数字が割り振られればその順序は問わない。図７の例では、追加対象サーバのアドレスの昇順に転送ＩＤを割り振っている。断片取得先は、サーバＤＢ２１３０から、追加配信部２１５０が得た、追加対象サーバが取得すべきソフトウェアイメージ「IMG_A」（図６参照）を所持する現用中サーバである。サーバＤＢ２１３０が、現用中サーバを選択する方法は、サーバＩＤ（サーバ２３１０のアドレス）の昇順または降順で選ぶ方法や、最もＣＰＵ使用率が小さいもの、最も性能がよいものを選ぶ方法等、予め定められたアルゴリズムを用いる。そして、選択した現用中サーバのアドレスが断片取得先として取得交換指示情報に登録される。図７の取得交換指示情報は、図９のサーバ状態情報において現用中サーバとなっている、「Ｓｖｒ０５，Ｓｖｒ０６，Ｓｖｒ０７，Ｓｖｒ０８」のサーバ２３１０が登録された状態を示している。この登録順序は、サーバＩＤ（サーバ２３１０のアドレス）の昇順または降順で選ぶ等、予め定められたアルゴリズムによる。
【００３９】
＜サーバ＞
図１のサーバ２３１０を説明する。サーバ２３１０は、自身のサーバ２３１０が新規クラスタに組み込まれる場合、リポジトリ装置２１００から取得したソフトウェアイメージにより、サーバ２３１０を起動させる（新規クラスタ構築処理）。一方、自身のサーバ２３１０が既存クラスタに組み込まれる場合、まず、リポジトリ装置２１００からソフトウェアイメージの断片を取得し、その後、他の追加対象サーバとの間で取得した断片を互いに交換する。そして、サーバ２３１０は、ソフトウェアイメージを構成するすべての断片を取得すると、このソフトウェアイメージにより、サーバ２３１０を起動させる（既存クラスタへの資源追加処理）。
【００４０】
このようなサーバ２３１０は、イメージ転送部２３１１と、ブート部２３１２と、ソフトウェアイメージ保管部２３１３とを備える。
【００４１】
イメージ転送部２３１１は、自身のサーバ２３１０が新規クラスタに組み込まれる場合、リポジトリ装置２１００からソフトウェアイメージを受信し、ソフトウェアイメージ保管部２３１３に保存する。一方、自身のサーバ２３１０が既存クラスタに組み込まれる場合、まず、リポジトリ装置２１００から断片取得先指示情報（図７参照）を受信する。そして、自身のサーバ２３１０のサーバＩＤ（アドレス）と、断片取得先情報とを参照して、自身のサーバ２３１０の断片取得先サーバを選択する。そして、その選択した断片取得先サーバから、ソフトウェアイメージの断片を取得する。その後、イメージ転送部２３１１は、断片取得先情報と、自身のサーバ２３１０に割り当てられた転送ＩＤとを参照して、ソフトウェアイメージの断片を交換すべき他のサーバ２３１０を特定し、この特定したサーバ２３１０との間で断片の交換処理を行う。この交換処理は、イメージ転送部２３１１が、ソフトウェアイメージ全体を取得するまで繰り返す。
【００４２】
ブート部２３１２は、ソフトウェアイメージ保管部２３１３に保存されたソフトウェアイメージを読み込み、このソフトウェアイメージのＯＳ（Operating System）を起動させる。これにより、サーバ２３１０は、サービスネットワーク５０００経由でサービスを提供可能な状態になる。
【００４３】
ソフトウェアイメージ保管部２３１３は、リポジトリ装置２１００から受信したソフトウェアイメージや、他のサーバ２３１０から受信したソフトウェアイメージの断片を保存する。このソフトウェアイメージ保管部２３１３は、サーバ２３１０の記憶手段（図示省略）により実現される。
【００４４】
このサーバ２３１０も、入出力インタフェース、通信インタフェース、ＣＰＵ、記憶手段等を備えるコンピュータにより実現される。
【００４５】
＜新規クラスタ構築処理＞
次に、新規クラスタ構築の処理手順について述べる。ここでは、図２に示すように、８台のサーバ２３１０Ａ（Ｓｖｒ０１）〜２３１０Ｈ（Ｓｖｒ０８）から構成されるクラスタシステム２０００において、リポジトリ装置２１００が新規クラスタ構築コマンドにより４台のサーバ２３１０のクラスタを構築する手順について述べる。
【００４６】
図８は、リポジトリ装置２１００が、新規クラスタ構築コマンドを実行する前のサーバＤＢ２１３０のサーバ状態情報を例示した図である。各サーバ２３１０は待機中であり、いずれのサーバ２３１０もソフトウェアイメージは所持していない。本状態に対して、新規クラスタ構築コマンド（構築するクラスタのサーバ台数：４、配信するソフトウェアイメージのイメージID「IMG_A」）を投入する場合について考える。
【００４７】
リポジトリ装置２１００は、管理インタフェース部２１１０経由で新規クラスタ構築コマンドを受けると、初期配信部２１４０は、サーバＤＢ２１３０に問い合わせを行い、４台の待機中のサーバ２３１０を選択する。サーバＤＢ２１３０からの待機中サーバの選択は、サーバＩＤの昇順または降順で選ぶ方法や、最も待機中の時間が長いもの、最も性能がよいものなど、予め定められたアルゴリズムによる。この例では、図２のサーバ２３１０Ｅ（Ｓｖｒ０５）〜サーバ２３１０Ｈ（Ｓｖｒ０８）が選択されたとする。その後、リポジトリ装置２１００の初期配信部２１４０は、ソフトウェアイメージＤＢ２１２０を参照して「ＩＭＧ＿Ａ」のソフトウェアイメージを読み出し、読み出したソフトウェアイメージを、サーバ２３１０Ｅ（Ｓｖｒ０５）、サーバ２３１０Ｆ（Ｓｖｒ０６）、サーバ２３１０Ｇ（Ｓｖｒ０７）およびサーバ２３１０Ｈ（Ｓｖｒ０８）に対して配信する（図３参照）。なお、ここでの配信は、リポジトリ装置２１００の初期配信部２１４０が、各サーバ２３１０へユニキャスト通信を４回行う単純なもので構わない。各サーバ２３１０のイメージ転送部２３１１は、「ＩＭＧ＿Ａ」のソフトウェアイメージをリポジトリ装置２１００から受信するとソフトウェアイメージ保管部２３１３に保存する。保存が完了すると、サーバ２３１０のブート部２３１２は、そのソフトウェアイメージによってサーバ２３１０をブートする。
【００４８】
サーバ２３１０Ｅ（Ｓｖｒ０５）〜サーバ２３１０Ｈ（Ｓｖｒ０８）がソフトウェアイメージ「IMG_A」によって起動すると、初期配信部２１４０は、サーバＤＢ２１３０のサーバ状態情報の内容を図９のように書き換える。
【００４９】
＜既存クラスタへの資源追加処理＞
以上のようにして、新規クラスタが構築された後、リポジトリ装置２１００が、既存クラスタへの資源追加コマンドによって、ソフトウェアイメージ「IMG_A」によって、さらに４台のサーバ２３１０を起動する手順について述べる。
【００５０】
リポジトリ装置２１００は、管理インタフェース部２１１０経由で既存クラスタへの資源追加コマンドを受けると、追加配信部２１５０が、サーバＤＢ２１３０のサーバ状態情報を参照して、４台の待機中のサーバ２３１０を選択する。ここでは、サーバ２３１０Ａ（Ｓｖｒ０１）〜サーバ２３１０Ｃ（Ｓｖｒ０４）が選択されたとする。その後、リポジトリ装置２１００の追加配信部２１５０は、（自身で各サーバ２３１０にソフトウェアイメージを転送するのではなく）各サーバ２３１０に対して、「ソフトウェアイメージの断片を現用中サーバから取得し、それを互いに交換する」ように指示する。つまり、追加配信部２１５０は、追加対象サーバそれぞれの断片取得先サーバを示した取得交換指示情報（図７参照）を作成し、この取得交換情報を各サーバ２３１０へ配信する。
【００５１】
サーバ２３１０が取得交換指示情報を受信すると、イメージ転送部２３１１は、自身のアドレスと、取得交換指示情報とを参照し、自身のサーバ２３１０の断片取得先サーバを選択する。例えば、サーバ２３１０Ａ（「１９２．１６８．９．１」、Ｓｖｒ０１）は、図７の取得交換指示情報を参照して、断片取得先サーバとして、サーバ２３１０Ｅ（「１９２．１６８．９．５」、Ｓｖｒ０５）を選択し、サーバ２３１０Ｂ（「１９２．１６８．９．２」、Ｓｖｒ０２）は、サーバ２３１０Ｆ（「１９２．１６８．９．６」、Ｓｖｒ０６）を選択する。また、サーバ２３１０Ｃ（「１９２．１６８．９．３」、Ｓｖｒ０３）は、断片取得先サーバとして、サーバ２３１０Ｇ（「１９２．１６８．９．７」、Ｓｖｒ０７）を選択し、サーバ２３１０Ｄ（「１９２．１６８．９．４」、Ｓｖｒ０４）は、サーバ２３１０Ｈ（「１９２．１６８．９．８」、Ｓｖｒ０８）を選択することを示す。
【００５２】
そして、サーバ２３１０は、選択した断片取得先サーバに対し、断片取得要求を送信し、指定のソフトウェアイメージの断片を取得する。この断片取得要求は、追加対象サーバの台数である追加対象サーバ数と、取得したいソフトウェアイメージの断片の断片番号とを含む。追加対象サーバ数は、取得交換指示情報における、サーバ２３１０のエントリ数である。断片番号は、初回取得時（現用中サーバから断片を取得するとき）は、自身のサーバ２３１０の転送ＩＤとなる。断片取得要求を受信した現用中サーバは、ソフトウェアイメージを、（ソフトウェアイメージのサイズ）／Ｎのサイズの断片に先頭から均等分割した際に、先頭(０起点)から数えて「断片番号」として指定された順番の断片を、断片取得要求の要求元のサーバ２３１０に転送する(図３参照)。なお、このＮは、ソフトウェアイメージの分割数であり、追加対象サーバ数より大きい最小の２のべき乗数とする。また、現用中サーバにアクセスするのは、最初の断片の取得時であり、その後は追加対象サーバ（ここでは、サーバ２３１０Ａ（Ｓｖｒ０１）〜サーバ２３１０Ｄ（Ｓｖｒ０４））同士が断片を交換することにより、既存クラスタへの追加対象サーバすべてにソフトウェアイメージ全体が行き渡るようにする。
【００５３】
例えば、図４に示すように、初期状態では各サーバ２３１０（サーバ２３１０Ａ〜２３１０Ｄ）がソフトウェアイメージの断片１つしか所持していないが、１つの交換処理Ｓｔｅｐで、ペアとなるサーバ２３１０が互いに自身が持っていないソフトウェアイメージの断片を交換する。このような交換処理Ｓｔｅｐを繰り返すことにより、最終的に全追加対象サーバにソフトウェアイメージが行き渡る。そして、ソフトウェアイメージを取得した各追加対象サーバは、ブート部２３１２により、このソフトウェアイメージを読み込み、サーバ２３１０を起動する。
【００５４】
このように、既存クラスタへの資源追加時において、追加対象サーバそれぞれが、現用中サーバからソフトウェアイメージの断片を取得した後、その断片を他の追加対象サーバと交換することにより、ソフトウェアイメージ全体を取得する。これにより、現用中サーバのリソースがソフトウェアイメージの転送のために長時間占有されることがなくなる。また、追加対象サーバ同士がソフトウェアイメージを取得する際、互いに自身が持っていないソフトウェアイメージの断片を交換するので、各追加対象サーバは効率よくソフトウェアイメージを取得できる。
【００５５】
なお、前記した例は、既存クラスタへの資源追加処理において追加対象サーバの台数が２のべき乗数の場合であった。追加対象サーバの台数が２のべき乗数ではない場合、特定の交換Ｓｔｅｐにおいて断片の交換相手となるサーバ２３１０が存在しないときがある。本実施の形態のサーバ２３１０は、断片の交換相手となるサーバ２３１０が存在しないときは、断片取得指示情報に示される自身のサーバ２３１０の断片取得先サーバ（現用中サーバ）から断片を取得する。
【００５６】
具体例を挙げて説明する。ここでは、追加対象サーバの台数が３台（サーバ２３１０Ａ（Ｓｖｒ０１）、サーバ２３１０Ｂ（Ｓｖｒ０２）、サーバ２３１０Ｃ（Ｓｖｒ０３））である場合を考える。この場合、図１０に示すように、ソフトウェアイメージを、追加対象サーバの台数より大きい最小の２のべき乗数（この場合、分割数「４」）で断片分割し、各追加対象サーバは、断片取得先サーバ（現用中サーバ）から、転送ＩＤ番目の断片を取得する。なお、現用中サーバへの断片取得要求は、図３で説明した手順と同様の手順で行われる。その後、追加対象サーバ間での断片交換処理を行うが、図１１に示すように、断片の交換先が存在しないサーバ２３１０（初期状態のサーバ２３１０Ｃや、Ｓ１１後のサーバ２３１０Ｄ）は、取得交換指示情報（図７参照）に示される、自身のサーバ２３１０の断片取得先である現用中サーバから指定の断片を取得する。
【００５７】
例えば、図１１のサーバ２３１０Ｃ（Ｓｖｒ０３）は、Ｓ１１において、断片番号「３」の断片の交換先（断片の取得先となる追加対象サーバ）が無いので、自身のサーバ２３１０Ｃの断片取得先サーバであるサーバ２３１０Ｇ（Ｓｖｒ０７）に対し、追加対象サーバ数（分割数）「４」、断片番号「３」を設定した断片取得要求を送信し、断片番号「３」の断片を取得する。また、Ｓ１２において、サーバ２３１０Ｂ（Ｓｖｒ０２）は、断片番号「２，３」の断片の交換先が無いので、自身のサーバ２３１０の断片取得先サーバであるサーバ２３１０Ｆ（Ｓｖｒ０６）に対し、追加対象サーバ数（分割数）「４」、断片番号「２，３」を設定した断片取得要求を送信し、断片番号「２，３」の断片を取得する。なお、このように現用中サーバから複数の断片を同時に取得する必要がある場合、断片取得要求の「断片番号」は、「２，３」等のように複数の断片を指定する。このような断片取得要求を受信した現用中サーバは、複数の断片を、図３で説明した手順と同様に、断片要求元のサーバ２３１０に転送する。
【００５８】
＜処理手順＞
図１の各サーバ２３１０において、ソフトウェアイメージの断片の交換処理の詳細を図１２に示す。なお、本処理は、追加対象サーバ数が２のべき乗数であるか否かは問わない。
【００５９】
まず、サーバ２３１０のイメージ転送部２３１１は、初期値としてｐ（交換ステップ数を示す変数）＝０、Ｎ＝１を設定し（Ｓ２１）、Ｎが追加対象サーバの台数より大きい最小の２のべき乗数か否かを判断する（Ｓ２２）。ここで、Ｎが追加対象サーバの台数より大きい最小の２のべき乗数であれば（Ｓ２２のＹｅｓ）、以下の式（１）を計算する（Ｓ２４）。そして、Ｓ２５へ進む。
ｓ＝ＲＤ（自身のサーバの転送ＩＤ／２ｐ）…式（１）
なお、ＲＤ（）は、()内の数値の小数点以下を切り捨てた値である。
【００６０】
一方、ここで、Ｎが追加対象サーバの台数より大きい最小の２のべき乗数でなければ（Ｓ２２のＮｏ）、イメージ転送部２３１１は、Ｎの値を２倍して（Ｓ２３）、再度、Ｓ２２の処理を行う。
【００６１】
Ｓ２４の後、イメージ転送部２３１１は、式（１）で計算したｓが偶数のとき（Ｓ２５のＹｅｓ）、以下の式（２）により自身のサーバ２３１０の断片取得先サーバの転送ＩＤであるｉｄを計算する（Ｓ２６）。そして、Ｓ２８へ進む。
ｉｄ＝自身のサーバの転送ＩＤ＋２ｐ…式（２）
【００６２】
一方、Ｓ２５でｓが奇数のとき（Ｓ２５のＮｏ）、以下の式（３）により、ｉｄを計算する（Ｓ２７）。そして、Ｓ２８へ進む。
ｉｄ＝自身のサーバの転送ＩＤ−２ｐ…式（３）
【００６３】
次に、イメージ転送部２３１１は、交換するソフトウェアイメージの断片の先頭の断片番号ｂを、以下の式（４）により計算する（Ｓ２８）。
ｂ＝ＲＤ（ｉｄ／２ｐ）×２ｐ…式（４）
【００６４】
また、イメージ転送部２３１１は、交換するソフトウェアイメージの断片の終端の断片番号ｅを、以下の式（５）により計算する（Ｓ２９）。そして、Ｓ３０へ進む。
ｅ＝ｂ＋２ｐ−１…式（５）
【００６５】
Ｓ３０において、Ｓ２６またはＳ２７で計算したｉｄが、追加対象サーバ数（サーバ台数）の値未満であるとき（Ｓ３０のＮｏ）、サーバ２３１０のイメージ転送部２３１１は、取得交換指示情報（図７参照）を参照して、転送ＩＤがｉｄであるサーバ２３１０から、ソフトウェアイメージをＮ個に分割した断片のうち、断片番号ｂ〜ｅの断片を取得する（Ｓ３２）。つまり、サーバ２３１０は、転送ＩＤがｉｄである追加対象サーバに対し、追加対象サーバ数：Ｎ、断片番号：ｂ〜ｅを設定した断片取得要求を送信する。そして、この断片取得要求の送信先の追加対象サーバから、ソフトウェアイメージをＮ個に分割した断片のうち、断片番号ｂ〜ｅの断片を取得する。そして、Ｓ３３へ進む。
【００６６】
一方、Ｓ３０において、Ｓ２６またはＳ２７で計算したｉｄが、追加対象サーバ数の値以上であるとき（Ｓ３０のＹｅｓ）、取得交換指示情報に示される、自身のサーバ２３１０の断片取得先サーバから、ソフトウェアイメージを構成するＮ個の断片うち、断片番号ｂ〜ｅの断片を取得する（Ｓ３１）。つまり、サーバ２３１０は、断片を交換相手となる追加対象サーバがないので、取得交換指示情報に示される、自身のサーバ２３１０の断片取得先サーバ（現用中サーバ）に対し、追加対象サーバ数：Ｎ、断片番号：ｂ〜ｅを設定した断片取得要求を送信する。そして、サーバ２３１０は、この断片取得先サーバから、ソフトウェアイメージをＮ個に分割した断片のうち、断片番号ｂ〜ｅの断片を取得する。そして、Ｓ３３へ進む。
【００６７】
Ｓ３１またはＳ３２の後、サーバ２３１０のイメージ転送部２３１１は、ソフトウェアイメージを構成するすべての（Ｎ個の）断片を取得したか否かを確認し（Ｓ３３：全断片取得済？）、まだ取得していない断片があれば（Ｓ３３のＮｏ）、ｐの値をインクリメントして（Ｓ３４）、Ｓ２４へ戻る。一方、イメージ転送部２３１１は、ソフトウェアイメージを構成するすべての断片を取得していれば（Ｓ３３のＹｅｓ）、転送処理を完了させ（Ｓ３５）、追加対象サーバのブート部２３１２はソフトウェアイメージ保管部２３１３に保存されたソフトウェアイメージによってサーバ２３１０を起動する。
【００６８】
以上説明したとおり、既存クラスタへの資源追加時において、追加対象サーバそれぞれが、現用中サーバからソフトウェアイメージの断片を取得した後、その断片を他の追加対象サーバと交換することにより、ソフトウェアイメージ全体を取得する。このとき、断片の交換相手となる追加対象サーバがない場合、適宜、断片取得先サーバから断片を取得する。これにより、各追加対象サーバは、ソフトウェアイメージの全断片を取得することができ、かつ、現用中サーバのリソースがソフトウェアイメージの転送のために占有される時間を低減できる。
【符号の説明】
【００６９】
１０００  保守者端末
２０００  クラスタシステム
２１００  リポジトリ装置
２１１０  管理インタフェース部
２１２０  ソフトウェアイメージＤＢ
２１３０  サーバＤＢ
２１４０  初期配信部
２１５０  追加配信部
２２００  管理ネットワーク
２３００  リソースプール
２３１０  サーバ
２３１１  イメージ転送部
２３１２  ブート部
２３１３  ソフトウェアイメージ保管部
３０００  利用者端末
４０００  保守ネットワーク
５０００  サービスネットワーク
【図１】
2012155689.tif 000003
【図２】
2012155689.tif 000004
【図３】
2012155689.tif 000005
【図４】
2012155689.tif 000006
【図５】
2012155689.tif 000007
【図６】
2012155689.tif 000008
【図７】
2012155689.tif 000009
【図８】
2012155689.tif 000010
【図９】
2012155689.tif 000011
【図１０】
2012155689.tif 000012
【図１１】
2012155689.tif 000013
【図１２】
2012155689.tif 000014