以下、本発明の一実施形態を添付図面に基づいて説明する。
本実施形態では、計算機システムの構成(構成要素の接続関係や構成要素の配置)を算出する方法として組み合わせ最適化アルゴリズムの一種である遺伝的アルゴリズムを用いた例を以下に示すが、他の組み合わせ最適化アルゴリズムや動的計画法を用いても良い。組み合わせ最適化アルゴリズムや動的計画法を使わずに解くことも可能だが、組み合わせ最適化アルゴリズムや動的計画法を用いることで、計算量を大幅に減らすことが出来る。
図1は、本発明の実施形態を示し、仮想計算機システムを運用するデータセンタの一例を示すブロック図である。
第1実施形態の計算機システムは、クライアント101がデータセンタ103内のコントローラ(仮想化管理サーバ)201を介して仮想計算機システムを構築および管理する際に、仮想計算機システムの構成を算出する計算サーバ(管理計算機または構成パターンの算出装置)102を利用することで、仮想計算機システムの管理者のニーズに応じた仮想計算機システムを算出および構築するものである。ここで、計算サーバ102の構成は特に限定しない。例えば、クライアント101と計算サーバ102は、両方の機能を併せ持った1台で実現しても良く、コントローラ201と計算サーバ102は、両方の機能を併せ持った1台で実現しても良い。
ここで、計算サーバ102が算出する構成の一例として、物理サーバ202とネットワーク機器の接続関係や、物理サーバ202上で稼動させる仮想サーバ403の配置等を含む計算機システムの構成要素の構成パターンの例を示す。
クライアント101、計算サーバ102およびデータセンタ103のルータ203はネットワーク104を介して接続している。データセンタ103はコントローラ201、物理サーバ202、ルータ203およびスイッチ204にて構成され、コントローラ201はルータ203及びスイッチ204で構成される内部LANを介して全ての物理サーバ202と接続している。コントローラ201は、後述するように、物理サーバ202で稼動する仮想サーバの実行、停止あるいは移動を管理する仮想化管理サーバとして機能する。
図2はデータセンタ103の構成を示すブロック図である。コントローラ201はデータセンタ103内のルータ203に接続されている。また、物理サーバ202はスイッチ204を介してデータセンタ103内のルータ203に接続されている。データセンタ103内のルータ203はネットワーク104と接続されており、間接的にコントローラ201および物理サーバ202はネットワーク104と接続している。
コントローラ201は、演算処理を行うプロセッサ210と、データやプログラムを格納するメモリ304と、ネットワークI/F301を備え、ネットワークI/F301を介してルータ203に接続している。また、コントローラ201は、図示しないストレージ装置にプログラムやデータを記憶する。
メモリ304には、構成/負荷情報取得部303と、構成変更指示部302がロードされてプロセッサ210により実行される。構成/負荷情報取得部303は、複数の物理サーバ202から構成情報701と負荷情報702を取得する。
メモリ304には、複数の物理サーバ202上に構成されている仮想サーバ304の構成情報と、各物理サーバ202の構成情報および仮想サーバ403の種別や物理サーバ202の種別等の仮想計算機システムの定義情報が構成情報701として格納される。また、構成/負荷情報取得部303によって得られた各仮想サーバ403および各物理サーバ202の負荷の情報が負荷情報702としてメモリ304に格納される。
物理サーバ202は、演算処理を行うプロセッサ220と、データやプログラムを格納するメモリ314と、ネットワークI/F401とを備え、ネットワークI/F401からスイッチ204を介してルータ203に接続される。
メモリ314には、ハイパーバイザ402がロードされてプロセッサ220によって実行される。ハイパーバイザ402は、物理サーバ202の計算機資源を1以上の仮想サーバ403に割り当てる。
コントローラ201は、計算サーバ102からネットワーク104を介して構成/負荷情報取得要求がネットワークI/F301に受信された場合、構成/負荷情報取得部303がネットワークI/F301を介して全物理サーバ202のハイパーバイザ402へ、各仮想サーバ403および各物理サーバ202の負荷情報を送信するよう命令を送信する。各ハイパーバイザ402は検出した負荷情報をコントローラ201へ送信し、コントローラ201はメモリ304へ負荷情報702として格納する。
さらに、各ハイパーバイザ402は検出した構成情報をコントローラ201へ送信し、コントローラ201はメモリ304へ構成情報701として格納する。
そして、コントローラ201はメモリ304に格納された各仮想サーバ403および各物理サーバ202の負荷情報702に加え、メモリ304上の構成情報701をネットワークI/F301を介して、計算サーバ102へ送信する。
また、計算サーバ102からネットワーク104を介して構成変更要求がネットワークI/F301で受信された場合、コントローラ201の構成変更指示部302はネットワークI/F301を介して構成変更が必要な物理サーバ202のハイパーバイザ402へ、構成変更命令を送信する。そして変更が反映されるだけの十分な時間が経った後、構成変更指示部302はネットワークI/F301を介して構成変更を行った物理サーバ202のハイパーバイザ402へ、構成変更が正しく行われているかを検出する。要求通りに構成変更が行われていた場合、構成変更指示部302はネットワークI/F301およびルータ203を介し、ネットワーク104を介して、計算サーバ102へ構成変更の完了を通知する。一方、構成変更が正常に行われていなかった場合には、構成変更指示部302は要求が反映されるまで、再度構成変更の手順を行う。もしくは、構成変更のエラー通知を計算サーバ102に送信する。
なお、物理サーバ202は図示しないホストバスアダプタなどを備えて、図示しないストレージ装置にアクセスするものとする。
図3は計算サーバ102の構成図である。計算サーバ102は、演算処理を行うプロセッサ230と、データやプログラムを格納するメモリ504と、ストレージ装置231及びネットワークI/F501とを備え、ネットワークI/F501を介してネットワーク104に接続される。メモリ504には、要求取得部502、構成/負荷情報取得部503、構成算出部505、構成提示部506及び、構成変更指示部507がストレージ装置231からロードされてプロセッサ230によって実行される。ストレージ装置231は、要求取得部502、構成/負荷情報取得部503、構成算出部505、構成提示部506及び、構成変更指示部507の記憶媒体としても機能する。
メモリ504には、構成/負荷情報取得部503がコントローラ201から取得した構成情報801と、負荷情報802が格納される。構成情報801は、データセンタ103の仮想サーバ403の構成情報と、各物理サーバ202の構成情報および仮想サーバの種別や物理サーバの種別等の情報から構成される。また、各仮想サーバ403および各物理サーバ202の負荷情報が負荷情報802として構成される。
また、要求取得部502は、クライアント101等から受信した要求や制約条件、または算出する構成に関する情報を要求情報803としてメモリ504に格納する。また、計算サーバ102では仮想計算機システムの構成算出にあたって必要となる情報をシステム定義情報804としてメモリ504に格納しておく。
ここで、システム定義情報804は、サーバ情報1001、要求/制約反映テーブル1002、致死フィルタ1003からなる。サーバ情報1001には物理サーバ202の性能に関する情報が格納される。要求/制約反映テーブル1002には、仮想計算機システムの構成を算出する際に要求情報803をどのように反映させるかに関する情報が格納される。致死フィルタ1003には、仮想計算機システムの構成を算出するにあたって使用する遺伝的アルゴリズムの動作に関する情報が格納される。システム定義情報804は、仮想計算機システムの構成を算出する前に入力されている必要があり、入力装置232からの入力や、クライアント101からの遠隔入力でもよい。
クライアント101からネットワーク104を介して、要求または制約条件および構成変更要求がネットワークI/F501で受信された場合、要求取得部502は受信した要求または制約条件を要求情報803としてメモリ504に格納し、構成/負荷情報取得部503に構成/負荷情報取得要求を送る。
構成/負荷情報取得要求を受け取った構成/負荷情報取得部503は、ネットワークI/F501およびネットワーク104を介して、データセンタ103内のコントローラ201へ構成/負荷情報取得要求を送信する。
データセンタ103内のコントローラ201からネットワーク104を介して、仮想計算機システムにおける仮想サーバの構成情報と、物理サーバの構成情報および各仮想サーバ及び物理サーバの負荷情報が計算サーバ102のネットワークI/F501で受信される。構成/負荷情報取得部503はメモリ504に上記受信した情報を構成情報801及び負荷情報802として格納し、構成算出部505に構成算出要求を送信する。
構成算出要求を受け取った構成算出部505は、メモリ504内の構成情報801、負荷情報802、要求情報803、システム定義情報804と物理クラスタテーブル851及び論理クラスタテーブル852を元に仮想計算機システムの構成を算出する。構成算出部505は、構成を算出する際には、処理トラフィック900、基本負荷910、算出する構成に関する情報920、仮想サーバ想定負荷930、物理サーバ想定負荷940、負荷の判定結果950をメモリ504上に保持する。なお、物理クラスタテーブル851及び論理クラスタテーブル852は構成を算出する際に生成することができる。
そして、構成算出部505は、物理サーバ202の構成を変更する必要がある場合には、その結果を構成提示部506へ送信する。構成提示部506はネットワークI/F501およびネットワーク104を介して、クライアント101へと構成変更内容を送信する。また、物理サーバ202の構成を変更する必要がある場合には、構成提示部506は仮想計算機システムの構成の算出結果を構成変更指示部507へ送信し、構成変更指示部507はネットワークI/F501およびネットワーク104を介して、データセンタ103内のコントローラ201へ構成変更要求を送信する。
その後、データセンタ103内のコントローラ201から構成変更完了の通知をネットワークI/F501で受信すると、構成提示部506がネットワークI/F501およびネットワーク104を介して、クライアント101へと構成変更内容を送信する。もしくは、構成変更のエラー通知がデータセンタ103内のコントローラ201から送られてきた場合、構成提示部506がネットワークI/F501およびネットワーク104を介して、クライアント101へ算出した構成および変更エラー内容を送信する。
図4はクライアント101の構成を示すブロック図である。クライアント101は、演算処理を行うプロセッサ240と、データやプログラムを格納するメモリ607と、I/O606及びネットワークI/F601とを備え、ネットワークI/F601を介してネットワーク104に接続される。I/O606には、入力装置611と出力装置612が接続される。入力装置611は、キーボードやマウスなどで構成される。出力装置612は、ディスプレイ等で構成される。
メモリ607には、構成取得部602、構成表示部603、要求取得部604、要求送信部605が格納され、プロセッサ240によって実行される。ここで、メモリ607には構成取得部602が受信する仮想計算機システムの構成内容が構成情報901として格納される。また、メモリ607には要求取得部604が取得する要求/制約条件が要求情報802として格納される。仮想計算機システムの構成の算出または変更に関するユーザ(または管理者)の要求および制約条件は、入力装置611からI/O606を介して要求取得部604で受け付ける。
ユーザの要求および制約条件を受け取った要求取得部604は、受け取った情報を要求情報902としてメモリ607へと格納し、要求送信部605へ要求/制約条件の格納完了を通知する。要求/制約条件の格納完了通知を受け取った要求送信部605は、ネットワークI/F601およびネットワーク104を介して、計算サーバ102へメモリ607内に格納された要求情報902を送信する。計算サーバ102からネットワーク104を介して、構成変更内容がネットワークI/F601に受信された場合、構成取得部602は受信した構成変更内容を構成情報901としてメモリ607へ格納し、構成表示部603へ構成変更内容の格納完了を通知する。構成変更内容の格納完了通知を受け取った構成表示部603は、I/O606を介して、構成情報901の内容を出力装置612に出力する。
また、仮想計算機システムの構成およびエラー内容がネットワークI/F601に受信された場合、構成取得部602は受信した構成を構成情報901としてメモリ607へ格納し、構成表示部603へ構成情報の格納完了を通知する。構成情報の格納完了通知を受け取った構成表示部603は、I/O606を介して、構成情報901の内容およびエラー内容を出力装置612に出力する。
図5A、図5B、図6A、図6B、図7Aおよび図7Bはデータセンタ103内の構成情報701、計算サーバ102内の構成情報801およびクライアント101内の構成情報901上の内容を示す。なお、構成情報701、801、901は同一の情報である。また、構成情報701は、図5Bの構成情報701A、図6Bの構成情報701B、図7Bの構成情報701Cから構成される。構成情報801、901も同様であり、構成情報801A〜801Cと901A〜901Cからそれぞれ構成される。これらの構成情報の総称を構成情報701、801,901とする。
図5B、図6B、図7Bの構成情報701、801、901は、図7Aで示すように、3台の物理サーバ(Machine0、1、2)202上で仮想サーバ(NODE0、NODE1、NODE2)が稼動し、物理サーバ(Machine0、Machine1)がスイッチ(SW0)に接続され、物理サーバ(Machine2)がスイッチ(SW1)に接続され、2つのスイッチ(SW0、SW1)204がルータ(Router0)203に接続された例を示す。
図5Aは仮想サーバや仮想スイッチなどの仮想的な計算機資源の接続関係を示しており、例えば、2つの仮想サーバNODE0とNODE1が物理サーバ(Machine0)のハイパーバイザ402内の仮想スイッチ(Virtual SW0)に接続され、1つの仮想サーバNODE2が物理サーバ(Machine1)のハイパーバイザ402内の仮想スイッチ(Virtual SW1)に接続された例を示す。そして、2つの仮想スイッチ(Virtual SW0とVirtual SW1)がハイパーバイザ402で稼動するソフトウェアルータで構成される仮想ルータ(Virtual Router0)に接続される。このような構成の場合、仮想サーバの接続先を示す構成情報701A(801A、901A)は、図5Bのように表現される。図5Bでは、仮想的な計算機資源の名称711と、接続先の名称712からひとつのエントリが構成される。なお、ひとつの物理計算機内の仮想的な計算機資源には、少なくとも、ノードと仮想スイッチが含まれればよい。
また、図6Aは物理サーバ202と物理的なネットワーク接続の関係を示し、2つの物理サーバ(Machine0、1)がスイッチ(SW1)204に接続され、1つの物理サーバ(Machine2)がスイッチ(SW1)に接続され、2つのスイッチ(SW0、1)がルータ(Router0)203に接続された例を示す。そして、物理サーバ(Machine0、1)の種別が「A」であることを示し、物理サーバ(Machine2)の種別が「B」であることを示す。
図6Bは物理的な計算機資源の接続関係を示す構成情報701B(801B、901B)を示す。図6Bでは、物理的な計算機資源の名称721と、接続先の名称722と、計算機資源の種別723からひとつのエントリが構成される。なお、物理サーバ202の種別が同じ場合には、各サーバ同士は同じスペックであることを示している。このサーバ種別の詳細な情報は、後に述べるが図19のような形で表現される。
図7Aはどの仮想サーバがどの物理サーバに配置されているのかを示す物理的計算機資源と仮想的計算機資源の対応関係を示す図である。図のように物理サーバMachine0に仮想サーバNODE0とNODE1が、物理サーバMachine2に仮想サーバNODE2が配置されている。図示の例では、物理サーバ(Machine2)には仮想サーバが生成されていない例を示す。
図7Bは仮想サーバ403が何れの物理サーバ202に配置されているのかを示す物理的計算機資源と仮想的計算機資源の対応関係を示す構成情報701C(801C、901C)である。図7Bでは、仮想的な計算機資源の名称731と、当該仮想的な計算機資源を提供する物理的計算機資源の名称732からひとつのエントリが構成される。
図8および図9は、データセンタ103内の負荷情報702および計算サーバ102内の負荷情報802の内容を示す。負荷情報702と負荷情報802は同一である。負荷情報702、802は、図8に示す仮想的な計算機資源の負荷情報702A、802Aと、図9に示す物理的な計算機資源の負荷情報702B、802Bから構成される。
図8は各仮想サーバ403とそれぞれのCPU、メモリ、I/O、トラフィック負荷を示す仮想的な計算機資源の負荷情報702A、802Aである。負荷情報702A、802Aは、仮想サーバ403の名称を格納する仮想サーバ名741と、当該仮想サーバに割り当てたプロセッサ220の使用率を格納するCPU負荷742と、当該仮想サーバに割り当てたメモリ314の使用率を格納するメモリ負荷743と、当該仮想サーバがアクセスするストレージ装置(図示省略)の帯域使用率を格納するI/O負荷744と、当該仮想サーバがアクセスするネットワーク負荷を格納するトラフィック負荷745からひとつのエントリが構成される。なお、I/O負荷744及びトラフィック負荷745は、ハイパーバイザ402が各仮想サーバ403に割り当てた仮想デバイス(仮想ネットワークI/F等)の使用率を用いるものとする。なお、使用率は、所定時間内の平均値や最大値などから適宜用いることができる。
図9は各物理サーバ202とそれぞれのCPU、メモリ、I/O、トラフィック負荷を示す物理的な計算機資源の負荷情報702B、802Bである。
負荷情報702B、802Bは、物理サーバ202の名称を格納する物理サーバ名751と、当該物理サーバのプロセッサ220の使用率を格納するCPU負荷752と、当該物理サーバのメモリ314の使用率を格納するメモリ負荷753と、当該物理サーバがアクセスするストレージ装置(図示省略)の帯域使用率を格納するI/O負荷754と、当該物理サーバがアクセスするネットワークI/F401の使用率を格納するトラフィック負荷755からひとつのエントリが構成される。なお、各使用率は、所定時間内の平均値や最大値などから適宜用いることができる。また、トラフィック負荷755は、ハイパーバイザ402が取り扱う総トラフィック量も情報として保持してもよい。
図10は計算サーバ102内の要求情報803およびクライアント101内の要求情報902上の内容を示す。なお、要求情報803と要求情報902は同一である。
要求情報803(902)は、図示のように、緊急度、上限工数、物理サーバ数上限情報、物理構成の変更可否、構成に関する要求といった項目811に対するそれぞれの要求内容812によって構成される。ここで、緊急度とは顧客が構成の算出にどれだけ時間をかけてよいかを表わす指標であり、構成の算出に時間をかけて良い場合には緊急度は低く、すぐに構成算出結果が必要な場合には緊急度は高く設定する。
緊急度は、例えば、0から1までの値をとり、1に近づくほど緊急度は高くなる。後に述べるが、緊急度は遺伝的アルゴリズム内の「適応度」と呼ばれる項目と関係している。また、緊急度は算出する構成の精度とのトレードオフとなり、緊急度を高く、つまり構成算出に時間をかけない場合は、算出する構成の妥当性が若干下がる。
上限工数(図中工数の上限)は、クライアント101が仮想計算機システムの構成変更に際して、許容する工数(変更数)である。ここで、仮想サーバ403の変更における1工数は仮想サーバ403の移動(マイグレーション)、仮想サーバ403の接続先の変更、仮想サーバ403の終了、仮想サーバ403の追加が該当する。また、物理サーバ202における1工数は物理サーバ202の接続先の変更、物理サーバ202の追加が該当する。
物理サーバ数上限は、物理サーバ202を種別(A〜C)ごとに何台まで利用可能かを設定する。仮想サーバ数は物理サーバ数に依存するため、上限数の入力を求めない。また、物理構成の変更可否は、物理構成の変更を加味した上で仮想計算機システムの構成の算出を行うか否かを示す入力である。論理構成の変更や、仮想サーバ403の配置に関する変更は、データセンタ103内のコントローラ201によって変更することが可能である。しかしながら、物理構成を変更する場合にはユーザ(データセンタ103の管理者など)が直接変更を加える必要が出てくる。そのため、クライアント101は物理構成の変更を認めるか否かを設定することが出来る。
また、構成に関する要求は、物理構成の算出時に評価の指標として反映させることが出来ればどのような要求でも良いが、例えばマシンコストを重要視する、変更工数を出来る限り少なくしたい、といった項目を計算サーバであらかじめ用意すれば、クライアント101は管理者などの希望に応じて選択することが出来る。
図11は、仮想計算機システムの構成要求時の手順の一例を示すシーケンス図である。構成要求は、クライアント101が仮想計算機システムの構成を計算サーバ102に演算させる指令である。
まず、クライアント101では、要求取得部604がシステム構成を取得するユーザ(または管理者)の要求(構成要求)および制約条件をI/O606を介して入力装置611から受け付け、メモリ607に要求情報902として格納する(S1)。
次にクライアント101の要求送信部605がメモリ607から要求情報902を読み出し、構成要求と制約条件を含む構成算出要求を、ネットワークI/F601およびネットワーク104を介して計算サーバ102に送信する(S2)。
構成要求と制約条件を含む構成算出要求は計算サーバ102内のネットワークI/F501を介して要求取得部502で受信する。要求取得部502は受信した構成要求/制約条件を要求情報803としてメモリ504に格納し(S3)、構成/負荷情報取得部503に構成及び負荷情報取得要求を送る。構成及び負荷情報取得要求を受け取った構成/負荷情報取得部503は、ネットワークI/F501およびネットワーク104を介して、データセンタ103内のコントローラ201へ構成/負荷情報取得要求を送信する(S4)。
コントローラ201内の構成/負荷情報取得部303が構成/負荷情報取得要求を受け取ると、構成/負荷情報取得部303はネットワークI/F301を介して全ての物理サーバ202のハイパーバイザ402へ、各仮想サーバ403および各物理サーバ202の構成情報と負荷情報の送信命令を出力する(S5)。
各ハイパーバイザ402は、構成情報と負荷情報の送信命令を受信すると、各仮想サーバ403及び物理サーバ202の構成情報と、負荷の測定結果(負荷情報)とを取得してコントローラ201へ応答する(S6)。
コントローラ201は、ハイパーバイザ402から受信した構成情報及び負荷測定結果を構成情報701、負荷情報702としてメモリ304へ格納する。メモリ304に格納された負荷情報702に加え、メモリ304上に存在する、構成情報701をネットワークI/F301を介して、計算サーバ102へ送信する(S7)。
仮想計算機システムにおける仮想サーバ403の構成情報と、物理サーバ202の構成情報と、仮想計算機システムの定義情報および各仮想サーバ403と各物理サーバ202の負荷情報がネットワークI/F501で受信されると、構成/負荷情報取得部503はメモリ504に受信した情報を構成情報801および負荷情報802として格納し、構成算出部505に構成算出要求を送信する。そして構成算出要求を受け取った構成算出部505は、メモリ504内の構成情報801、負荷情報802および要求情報803を元に後述するように構成を算出する。そして、計算サーバ102は、算出した構成情報をクライアント101に出力する(S8)。
なお、ステップS8以降の処理は、物理構成の変更の有無に応じて図28または図29のシーケンス図となり、物理構成の変更がある場合には図28のシーケンス図で処理が行われ、物理構成の変更が無い場合には、図29のシーケンス図で論理構成の変更が行われる。
図12は構成算出部505で行われる遺伝的アルゴリズムを用いた構成算出処理の一例を示すフローチャートである。
遺伝的アルゴリズムは生物の遺伝メカニズムを模倣した学習アルゴリズムであり、選択、交叉、突然変異という遺伝子操作によって解を導く。遺伝的アルゴリズムを用いた仮想計算機システムの構成情報の算出方法として、まず解候補となる初期集団を複数生成し、それぞれの個体(構成)が要求情報803を満たすものであるかを評価する。
次に、初期集団を評価した結果、要求情報803を満たす個体が存在した場合には、遺伝的アルゴリズムを終了する。一方、初期集団を評価した結果、要求情報803を満たす個体が存在しなかった場合には、選択、交叉、突然変異という遺伝子操作を行い、再びそれぞれの個体を評価する。構成算出部505では、上記サイクルを、物理的な構成パターンと論理的な構成のパターンについてそれぞれ実施して、要求情報803を満たす個体(構成のパターン)が現れるまで繰り返す。
遺伝的アルゴリズムでは、各個体を遺伝子という形で表わす。遺伝子の表現方法は、遺伝子操作に必要な情報を表現できる形であれば特に制限はないが、仮想計算機システムの物理構成を表わす遺伝子として、例えば図14に表わしたような数列で表現できる。
図14は、仮想計算機システムの物理的な構成パターンを示す遺伝子を作成する手順の一例を示す図である。
計算機システムの物理構成を表わす遺伝子配列の作成方法として、まず、仮想計算機システムの物理構成を入力し(S31)、それぞれの装置(物理的計算機資源)の接続関係を表の形にし、繋がっている場合には自身の種別(サーバ種別)番号を設定し、繋がっていない場合には0を設定する(S32)。
図14の例では、物理サーバSv1はスイッチS1に接続され、物理サーバSv2はスイッチS2に接続される。そして、スイッチS1、S2はそれぞれルータRに接続され、ルータRには入力=Iが接続される。
ステップS32では、物理サーバSv1、Sv2、スイッチS1、S2、ルータR、入力=Iの順でそれぞれ行方向、列方向に配置した表を形成する。そして、種別番号は、物理サーバ=「1」、スイッチ=「2」、ルータ=3とする。まず、物理サーバSv1の行では、物理サーバSv1はスイッチS1に接続されているので、スイッチS1の列に当該物理サーバの種別番号=「1」を設定し、他の列には「0」を設定する。これにより、物理サーバSv1の行は、「001000」となる。同様に、物理サーバSv2はスイッチS2に接続されているので、スイッチS2の列に当該物理サーバの種別番号=「1」を設定し、他の列には「0」を設定する。これにより、物理サーバSv2の行は、「000100」となる。同様に、スイッチS1は、物理サーバSv1とルータRに接続されているので、物理サーバSv1の列には物理サーバの種別番号=「1」を設定し、ルータRの列にはスイッチの種別番号=「2」を設定する。これにより、スイッチS1の行は、「100020」となる。スイッチS2、ルータR、入力Iも同様に設定する。これにより、計算機システムの構成パターンは、構成要素の組み合わせを示す数列で表現され、この数列を構成パターンに対応する遺伝子のパターンとして扱うことができる。
次に、ステップS33では、表の行と列の内容は、それぞれの要素が対称の形になるため、構成を表現するために必要な情報は表の半分(右上もしくは左下)となる。図示の例では、右上の半分の情報を用いて、他を削除する。
さらに、装置自身が繋がるという表現は必要ないため、表の半分からさらにもう一列情報を省くことが出来る(S34)。つまり、行と列の装置が同一のカラムを削除する。
次に、「1.物理サーバ同士は接続されない、2.スイッチ同士は接続されない、3.物理サーバはスイッチを介して物理ルータに接続される(物理サーバは直接ルータに接続されない)、4、Inputに接続するのはルータのみ」という制約を付け加えると、表の中で表現する必要のない部分をさらに削ることが出来る(S35)。
ステップS35の表から、これら必要な情報だけ取り出し、左上のカラムから右下のカラムへ向かって順次並べた値が遺伝子配列となる(S36)。図示の例では、「1001223」となる。
以上の手順によって、遺伝子配列は0以上の値を取り、0の値は該当装置と繋がっていないということを示し、1以上の値は該当装置と繋がっているということを表す。また、値が1以上の数字の大きさで、装置の種別を知ることが出来る。ここで、上述のステップS35で適用した制約は対象とする仮想システムに依存するため、自由度の高いシステムに適用する場合には制約による表現の削減を行わずに、ステップS34の表を遺伝子表現とすればよい。
しかしながら、対象とする仮想計算機システムにとって表現する必要のない情報が存在するならば、遺伝子の長さを短くするべきである。これは計算サーバ102における計算量の削減にもつながる。
また、論理構成を表わす遺伝子として、例えば図15に表わしたような数列で表現できる。図15は、仮想計算機システムの物理構成を示す遺伝子を作成する手順の一例を示す図である。
計算機システムの論地構成を表わす遺伝子配列の作成方法として、まず、仮想計算機システムの論理構成を入力し(S41)、それぞれの装置(論理的計算機資源)の接続関係を表の形にし、繋がっている場合には自身の装置種別に応じた装置番号を設定し、繋がっていない場合には0を設定する(S42)。
図15の例では、Machine1の仮想サーバNODE1(N1)、NODE2(N2)が、Machine3の仮想スイッチS1に接続され、Machine2の仮想サーバNODE3(N3)、NODE4(N4)はMachine3の仮想スイッチS2に接続される。そして、仮想スイッチS1、S2はそれぞれMachine4の仮想ルータRに接続され、仮想ルータRには入力Iが接続される。
ステップS42では、仮想サーバNODE1〜4、仮想スイッチS1、S2、仮想ルータR、入力Iの順でそれぞれ行方向、列方向に配置した表を形成する。そして、装置番号は、Machine1=「1」、Machine2=「2」、Machine3=3、Machine4=4とする。まず、仮想サーバN1の行では、仮想サーバN1は仮想スイッチS1に接続されているので、スイッチS1の列に当該仮想サーバの装置番号=「1」を設定し、他の列には「0」を設定する。これにより、仮想サーバN1の行は、「00001000」となる。同様に、仮想サーバN3は仮想スイッチS2に接続されているので、仮想スイッチS2の列に当該仮想サーバN3の装置番号=「2」を設定し、他の列には「0」を設定する。これにより、仮想サーバN3の行は、「00000200」となる。同様に、仮想スイッチS1は、仮想サーバN1と仮想ルータRに接続されているので、仮想サーバN1の列には仮想サーバN1の装置番号=「1」を設定し、仮想ルータRの列には仮想スイッチの装置番号=「3」を設定する。これにより、仮想スイッチS1の行は、「11000030」となる。仮想スイッチS2、仮想ルータR、入力Iも同様に設定する。これにより、仮想計算機システムの論理的な構成パターンは、仮想的な構成要素の組み合わせを示す数列で表現され、この数列を構成パターンに対応する遺伝子のパターンとして扱うことができる。
次に、ステップS43では、表の行と列の内容は、それぞれの要素が対称の形になるため、構成を表現するために必要な情報は表の半分(右上もしくは左下)となる。図示の例では、右上の半分の情報を用いて、他を削除する。
さらに、装置自身が繋がるという表現は必要ないため、表の半分からさらにもう一列情報を省くことが出来る(S44)。つまり、行と列の要素が同一のカラムを削除する。
次に、「1.仮想サーバ同士は接続されない、2.仮想スイッチ同士は接続されない、3.仮想サーバは仮想スイッチを介して仮想ルータに接続される(仮想サーバは直接仮想ルータに接続されない)、4、Inputに接続するのは仮想ルータのみ」という制約を付け加えると、表の中で表現する必要のない部分をさらに削ることが出来る(S45)。
ステップS45の表から、これら必要な情報だけ取り出し、左上のカラムから右下のカラムへ向かって順次並べた値が遺伝子配列となる(S46)。図示の例では、「101010202334」となる。
以上の手順によって、論理構成についても遺伝子配列は0以上の値を取り、0の値は該当要素と繋がっていないということを示し、1以上の値は該当要素と繋がっているということを表す。また、値が1以上の数字の大きさで、装置の種別を知ることが出来る。ここで、上述のステップS35で適用した制約は対象とする仮想システムに依存するため、自由度の高いシステムに適用する場合には制約による表現の削減を行わずに、ステップS44の表を遺伝子表現とすればよい。
しかしながら、対象とする仮想計算機システムにとって表現する必要のない情報が存在するならば、遺伝子の長さを短くするべきである。これは計算サーバ102における計算量の削減にもつながる。
物理構成と論理構成を同時に表現する遺伝子一つに情報をまとめても良いが、要求情報803によっては、物理構成の変更を禁止する場合が存在する。その場合、物理構成と論理構成で遺伝子を分けておくことによって、論理構成を表わした遺伝子を操作するだけでよくなるため、計算量を減らすことが可能となる。また、遺伝子の複雑化も防ぐことが出来る。
ここで、上記図14および図15の遺伝子表現では、サーバ種別や装置種別ごとの台数を表わすことが出来ないほか、サーバ台数によって遺伝子の長さが変化するため、遺伝子操作が困難である。そこで、本発明ではサーバ種別または装置種別ごとの台数が同一となる遺伝子をクラスタというまとまりで表現し、クラスタ単位で遺伝子操作を行う。つまり、クラスタは遺伝子を示す数列の長さが等しい構成パターンの集合となる。
図16、図17は、物理構成を表わす遺伝子、および論理構成を表わす遺伝子のクラスタを表現したものである。なお、図16は、物理構成を表わす遺伝子のクラスタテーブルを示す。図17は、論理構成を表わす遺伝子のクラスタテーブルを示す。
各クラスタテーブルは、入力された構成(物理構成と論理構成)を基準に構成算出部505によって生成され、各クラスタのサーバ種別または装置種別ごとの台数は図16中の追加マシン種別、図17中の追加VM種別を元に算出することができ、また各クラスタが保持している遺伝子の数および遺伝子情報を持つ。クラスタは、図16および図17のような形でメモリ504上に格納され、遺伝的アルゴリズム適用中、必要に応じて随時書き換えられる。クラスタ内は遺伝子長が全て同一のため、遺伝子操作を自由に行うことが可能となる。
図16において、物理クラスタテーブル851は、クラスタの識別子を格納するクラスタ番号8511と、追加する物理装置の種別を格納する追加マシン種別8512と、テーブル内の遺伝子の数を格納する遺伝子の数8513と、物理構成を示す遺伝子を格納する遺伝子8514からひとつのエントリが構成される。
図示の例では、クラスタ番号8511=0が4台の物理サーバ202の構成例を示す遺伝子8514を格納している。また、クラスタ番号8511=1は種別がAの物理サーバ202を追加する場合の遺伝子8514を格納している。クラスタ番号8511=2は種別がAの物理サーバ202を追加する場合の遺伝子8514を格納している。
図17において、論理クラスタテーブル852は、クラスタの識別子を格納するクラスタ番号8521と、追加する要素の種別を格納する追加VM種別8522と、テーブル内の遺伝子の数を格納する遺伝子の数8523と、物理構成を示す遺伝子を格納する遺伝子8524からひとつのエントリが構成される。
図示の例では、クラスタ番号8521=0が6台の仮想サーバ403の構成例を示す遺伝子を格納している。また、クラスタ番号8511=1は仮想サーバ403を1つ追加する場合の遺伝子8524を格納している。クラスタ番号8521=2は2つの仮想サーバを追加する場合の遺伝子8524を格納している。
<処理の概要>
図12は仮想計算機システムの物理構成と、論理構成及び仮想サーバの配置を考慮して計算サーバ102で行われる構成の算出処理の一例を示すフローチャートである。
ネットワークI/F501を介して要求取得部502と構成/負荷情報取得部503により収集された要求情報および構成/負荷情報はメモリ504を介して構成算出部505に送られ、構成算出部505はクライアント101から構成を算出する指令を受信すると図12のフローチャートに従って処理を行う。本フローチャートは物理的な構成パターンを算出するループ(S12、S13、S21〜S25)と、論理的な構成パターン及び仮想サーバの配置を算出するループ部分(S14〜S20)とから構成される。
遺伝的アルゴリズムを適用する処理の例としては、物理的な構成を算出する際の遺伝的アルゴリズムに、論理構成及びサーバ配置を算出する遺伝的アルゴリズムを入れ子にした一例を示す。
計算サーバ102は、構成の算出処理を実行するにあたり、構成算出部505は要求情報803を参照し、システム定義情報804内の要求/制約反映テーブル1002へ反映する。要求/制約反映テーブル1002については後述する。また、計算サーバ102の構成算出部505は、構成の算出処理を開始する以前に、クライアント101から要求情報803に加えて算出する構成に関する情報920を受信しておく。構成算出部505は受信した要求/制約反映テーブル1002の緊急度aを取得し、図18で示すように適応度の閾値を求めておく。なお、緊急度aは演算精度の高低(演算時間の長短)を決定するパラメータで0〜1の値で表現される。
次に、構成算出部505は図12のステップS11で、各仮想サーバ403の負荷を推定する。この負荷の推定は、後述する図20Cで示すように、単位トラフィック当たりの仮想サーバ202の負荷を基本負荷910として求める。そして、構成算出部505は取得されたトラフィック量923を処理する際の仮想サーバ403の想定負荷930と、各仮想サーバ403を提供する物理サーバ202の想定負荷940とを演算する。そして、構成算出部505は、想定負荷と所定の既定値を比較して仮想サーバ403と物理サーバ202のそれぞれについて、負荷の判定結果950を演算する。なお、処理トラフィック量923は負荷情報を取得した際に測定したトラフィック量である。
次に、ステップS12で、構成算出部505は、物理構成の初期パターンをクラスタ毎の遺伝子のパターンで生成する。物理パターンを生成する方法としては、例えば乱数の発生によってクラスタ毎の物理構成のパターンを生成することができる。そして、発生した物理構成のパターンを上述した処理によって遺伝子に変換する。
次に、ステップS13(修正部)で、構成算出部505は、ステップS12で生成された物理構成の遺伝子がシステム定義情報804の制約条件に反していた場合には、物理構成の遺伝子が制約条件を満たすように修正する。この修正は、システム定義情報804の致死フィルタ1003を制約条件として用いる例を示す。致死フィルタ1003には、後述するように、予め設定した計算機システムの定義に反する遺伝子を判定するための条件と、計算機システムの定義に反した遺伝子を修正する内容が格納される。構成算出部505は、生成した物理構成の遺伝子のそれぞれについて、定義に合致しているか否かを判定し、定義に反している物理構成の遺伝子があれば修正内容に従って遺伝子を修正する。
次に、ステップS14で、構成算出部505は、論理構成の初期パターンをクラスタ毎の遺伝子のパターンで生成する。論理構成を生成する方法としては、例えば乱数の発生によって各クラスタ毎の論理構成のパターンを生成することができる。そして、発生した論理構成のパターンを上述した処理によって遺伝子に変換する。
次に、ステップS15(修正部)で、構成算出部505は、ステップS14で生成された論理構成の遺伝子がシステム定義情報804の制約条件に反していた場合には、遺伝子が制約条件を満たすように修正する。この修正は、物理構成と同様に、システム定義情報804の致死フィルタ1003を制約条件として用いる例を示す。構成算出部505は、生成した論理構成の遺伝子のそれぞれについて、定義に合致しているか否かを判定し、定義に反している遺伝子があれば修正内容に従って遺伝子を修正する。
ステップS16(適応度演算部)では、構成算出部505が、各クラスタのそれぞれの論理構成に対して適応度を後述する(1)式から算出する。そして、構成算出部505は各論理構成の適応度と所定の閾値を比較して、閾値を超える適応度の論理構成があるか否かを判定する。何れかのクラスタに閾値を越える適応度を有する論理構成が存在する場合には、当該論理構成を解としてステップS21(適応度演算部)へ進む。一方、閾値を越える適応度が無い場合にはステップS17に進む。
予め設定した閾値以上の適応度が存在しなかった場合には、構成算出部505がステップS17〜S19(構成変更部)で各論理構成の遺伝子を操作する。ここで、適応度を判定する閾値は、図18の要求/制約反映テーブル1002に設定された適応度の閾値を用いる。
まず、図12のステップS17では、構成算出部505が論理構成の遺伝子に対して選択と呼ばれる遺伝子操作を実行する。構成算出部505が実行する選択処理は、適応度が所定値未満の論理構成の遺伝子を消去し、適応度が高い(所定値以上)の個体(構成)を次の世代へ多く残すための操作である。選択処理の一例としては、ルーレット選択、ランキング選択、トーナメント選択、エリート選択等の公知または周知の手法を用いることができる。ここで、遺伝子としては、図14、図15のような表現を用いた場合で、かつ図16、図17に表わしたようにクラスタとして遺伝子を群として扱う。
ステップS18では、構成算出部505はこれら複数のクラスタの論理構成の遺伝子群について調整をそれぞれ行う。構成算出部505が実行する各クラスタの調整については図24で後述する。
ステップS19では、構成算出部505は選択を行った複数のクラスタの論理構成の遺伝子群について交叉を実行する。交叉は、上記選択によって選出された遺伝子の中から2つの遺伝子を取り出し、遺伝子同士を掛け合わせる工程になっている。交叉の手法としては、一点交叉、二点交叉、多点交叉、一様交叉等の周知または公知の手法を用いることができる。
ただし、図8、図9に表わされた遺伝子表現を用いる場合、仮想サーバ数および物理サーバ数が異なる遺伝子同士は遺伝子長が異なる。このため、交叉時にはクラスタ内の遺伝子同士で交叉を行い、サーバ種別の等しい遺伝子同士を交叉することを可能とする。
ステップS20では、構成算出部505は交叉を行った複数のクラスタの遺伝子群について遺伝子操作の最後の工程となる突然変異を行う。突然変異の遺伝子操作は、交叉まで遺伝子操作が済んだ個体(遺伝子)に対して、予め設定された低い確率で、遺伝子表現のビット列の一部の情報を変更する操作になっている。これにより、算出する個体(遺伝子)が局所的最適解に陥ることを防ぐことが出来る。
上記ステップS17〜S20で遺伝子操作の工程をすべて終えた後、構成算出部505はステップS15の処理に戻る。ステップS15では、構成算出部505は、交叉、突然変異によって変更された論理構成の遺伝子表現が要求情報803内の制約条件に反していた場合には、遺伝子表現が制約条件を満たすものになるよう致死フィルタ1003によって修正を加える。これらの過程を経た後、再び各構成の適応度の判定が行われる(図12ステップS16)。
次に、上記ステップS16の判定で適応度が閾値を超える論理構成が存在する場合には、ステップS21に進んで構成算出部505が複数のクラスタの物理構成のそれぞれについて適応度を算出する。物理構成の適応度の算出については後述する。構成算出部505は複数のクラスタの物理構成の適応度を所定の閾値と比較して、閾値を超える適応度を持つ物理構成があるか否かを判定する。ここで、適応度を判定する閾値は、上記ステップS16の判定と同様に、図18の要求/制約反映テーブル1002に設定された適応度の閾値を用いる。
何れかのクラスタに閾値を越える適応度を有する物理構成が存在する場合には、構成算出部505が当該物理構成を解としてステップS26へ進む。一方、閾値を越える適応度が無い場合にはステップS22に進む。ステップS22では、構成算出部505が閾値をこえる適応度の論理構成と物理構成を出力して処理を終了する。
予め設定した閾値以上の適応度が存在しなかった場合には、構成算出部505がステップS22〜S25(構成変更部)で各論理構成の遺伝子を操作する。
まず、ステップS22では、構成算出部505が物理構成の遺伝子に対して選択と呼ばれる遺伝子操作を実行する。構成算出部505が実行する選択処理は、適応度が所定値未満の物理構成の遺伝子を消去し、適応度が高い(所定値以上)の個体(構成)を次の世代へ多く残すための操作である。選択処理の一例としては、ルーレット選択、ランキング選択、トーナメント選択、エリート選択等の公知または周知の手法を用いることができる。ここで、遺伝子としては、上記論理構成と同様であり、図14、図15のような表現を用いた場合で、かつ図16、図17に表わしたようにクラスタとして遺伝子を群として扱う。
ステップS23では、構成算出部505はこれら複数のクラスタの物理構成の遺伝子群について調整をそれぞれ行う。構成算出部505が実行する各クラスタの調整については図24で後述する。
ステップS24では、構成算出部505は選択を行った複数のクラスタの物理構成の遺伝子群について交叉を実行する。交叉は、上記選択によって選出された遺伝子の中から2つの遺伝子を取り出し、遺伝子同士を掛け合わせる工程になっている。交叉の手法としては、一点交叉、二点交叉、多点交叉、一様交叉等の周知または公知の手法を用いることができる。
ただし、図8、図9に表わされた遺伝子表現を用いる場合、仮想サーバ数および物理サーバ数が異なる遺伝子同士は遺伝子長が異なる。このため、交叉時にはクラスタ内の遺伝子同士で交叉を行い、サーバ種別の等しい遺伝子同士を交叉することを可能とする。
ステップS25では、構成算出部505は交叉を行った複数のクラスタの物理構成の遺伝子群について遺伝子操作の最後の工程となる突然変異を行う。突然変異の遺伝子操作は、交叉まで遺伝子操作が済んだ個体(遺伝子)に対して、予め設定された低い確率で、遺伝子表現のビット列の一部の情報を変更する操作になっている。これにより、算出する個体(遺伝子)が局所的最適解に陥ることを防ぐことが出来る。
上記ステップS22〜S25で遺伝子操作の工程をすべて終えた後、構成算出部505はステップS13の処理に戻る。ステップS13では、構成算出部505は、交叉、突然変異によって変更された物理構成の遺伝子表現が要求情報803内の制約条件に反していた場合には、遺伝子表現が制約条件を満たすものになるよう致死フィルタ1003によって修正を加える。これらの過程を経た後、再びステップS14〜S16を経て、ステップS21以降の処理が繰り返される。
以上の処理によって、構成算出部505は適応度が閾値を超える、論理構成と物理構成の組み合わせを出力する。
なお、上記の例では閾値を要求/制約反映テーブル1002の適応度の閾値(1−a4/2)として、緊急度a(ただし0≦a≦1)が高くなれば遺伝子操作の量が増大して演算時間が長くなり、緊急度aが低ければ遺伝子操作の量が減少して演算時間は短くなる。なお、適応度の閾値は、緊急度aから独立した閾値を別途設定するようにしてもよい。
以上のように、各構成の適応度の算出を行った結果、適応度の閾値を超える構成が存在した場合には、その構成を解として出力し(図12ステップS26)、終了する。
閾値を超える適応度となる構成が存在しなかった場合、論理構成/サーバ配置算出時の遺伝子操作と同様に、物理構成の個体に対して選択、交叉、突然変異といった処理を行った後(図12ステップS22−25)、再び論理構成/サーバ配置算出処理に移る。ただし、論理構成の遺伝子操作時と違い、物理構成の遺伝子操作時にはクラスタの操作時に全遺伝子内の混み合っている物理サーバの総数が一定数を超えているものの割合を求める。その結果、物理サーバの混雑に応じたサーバ台数を探索することが可能となる。
<要求/制約反映テーブル>
図18は要求/制約反映テーブル1002の内容の一例を示す。要求/制約反映テーブル1002は上記図12の処理で使用される情報を格納する。
要求/制約反映テーブル1002は、要求情報803(902)に設定された緊急度、上限工数、物理サーバ数上限情報、物理構成の変更可否、構成に関する要求といった要求/制約項目10021と、これらの要求/制約項目に対するそれぞれの要求内容10022と、各要求内容10022のうち遺伝的アルゴリズム(図中GA:Genetic Algorithm)に反映する情報10023が格納される。GAに反映する情報10023は、クライアント101から予め設定したものとする。GAに反映する情報10023としては、適応度の閾値や重み付けの係数などが設定される。
要求/制約反映テーブル1002は、要求情報803によって表現されている要求内容を構成算出時の変数や手順等に反映するその方法を示している。要求/制約反映テーブル1002の通りに構成算出手順を変化させることで、クライアント101を操作するユーザからの要求を構成算出に活かすことが出来る。
<負荷の測定>
図12の処理において、まず、計算サーバ102の構成算出部505は、各仮想サーバ403毎に単位トラフィック(1000トラフィック)を処理する際の負荷を推定する(図12ステップS11)。構成算出部505は、図8、図9に示す負荷情報を読み込んで、単位トラフィック(1000トラフィック)を処理する際に各仮想サーバ403にかかる負荷を演算する。
仮想サーバ403の負荷は、構成算出部505が、図8から仮想サーバ403の負荷情報を取得し、図5Bの構成情報701Aを取得して、図20Aに示す仮想サーバの負荷情報を生成する。図20Aの仮想サーバの負荷情報は、図8に示した負荷情報802Aの仮想サーバ741〜トラフィック負荷745に、図5Bの構成情報801Aの接続先712と、図7Bの物理サーバ732を配置先とし、さらに、処理トラフィック量900を結合したものである。ここで、処理トラフィック量は、各仮想サーバ703毎に処理したトラフィック量を仮想サーバ403から計算サーバ102が取得した値である。なお、図20Aの仮想サーバの負荷情報は、計算サーバ102のメモリ504上に保持しても良い。
また、物理サーバ202の負荷は、図9から物理サーバ202の負荷情報を取得し、図6Bの構成情報701Bを取得して、図20Bに示す物理サーバの負荷情報を生成する。
図20Bは、図9に示した負荷情報802Bの物理サーバ751〜トラフィック負荷755に、図6Bの構成情報801Bの接続先722とを結合したものである。なお、図20Bの物理サーバの負荷情報は、計算サーバ102のメモリ504上に保持しても良い。
そして、構成算出部505は、図19に示すサーバ情報と図20Aに示す仮想サーバの負荷情報と図20Bに示す物理サーバの負荷情報から図20Cに示す単位トラフィック(1000)当たりの負荷の推定値を演算して基本負荷910のテーブルに格納する。基本負荷910は、仮想サーバ403の名称を格納する仮想サーバ911と、単位トラフィックを処理するために当該仮想サーバに割り当てたプロセッサ220の使用率を格納するCPU負荷912と、単位トラフィックを処理するために当該仮想サーバに割り当てたメモリ314の使用率を格納するメモリ負荷913と、単位トラフィックを処理するために当該仮想サーバがアクセスするストレージ装置(図示省略)の帯域使用率を格納するI/O負荷914と、単位トラフィックを処理するために当該仮想サーバがアクセスするネットワーク負荷を格納するトラフィック負荷915からひとつのエントリが構成される。
単位トラフィック(1000)当たりの負荷推定値は、現在得られている各負荷912―915を、現在の処理トラフィック量で割ることで求める方法が、一般的に知られている。
なお、上記負荷の推定に関して、システム定義情報804内のサーバ情報1001を用いても良い。
図19にサーバ情報1001の内容を示す。サーバ情報1001は、サーバの種別を格納する物理サーバ10011と、遺伝子情報に設定する番号を格納する遺伝子番号10012と、プロセッサの性能に関する情報を格納するCPU性能10013と、メモリの性能に関する情報を格納するメモリ性能10014と、ストレージ装置などへのI/Oアクセスの性能に関する情報を格納するI/O性能10015と、ネットワークなどへのアクセスの性能に関する情報を格納するトラフィック性能10016と、実行可能な仮想サーバの最大値を格納する仮想サーバ上限10017と、物理サーバ202のコストに関する値を格納する10018とからひとつのエントリが構成される。
ここで、性能に関する情報10013〜10016とコストに関する情報10018は、予め設定した基準となる物理サーバとの相対的な値が予め設定されたものである。その他の値も管理者などが予め設定した値である。
サーバ情報1001は基準とする物理サーバに対する性能の優劣を示す数値(比率)や、実行可能な仮想サーバの数、基準とする物理サーバに対するコストの比率、遺伝子表現で用いる番号等が予め設定されたテーブルである。
性能やコストの優劣を比較する基準のサーバについては管理者などが適宜設定すればよく、基準のサーバから各サーバの性能やコストが相対的に表現出来てさえいればよい。基本負荷910の推定については公知または周知の手法を適宜採用することができる。
ただし、図20A〜図20Cで示すように計算サーバ102内のメモリ504に格納されている構成情報801と負荷情報802とシステム定義情報804内のサーバ情報1001などの情報を入力として推定を行い、出力として各仮想サーバの基準のサーバ(各性能1.0扱い)で起動した際の単位トラフィック(1000トラフィック)あたりの負荷量を出力するものであることが求められる。
<致死フィルタ>
図21は致死フィルタ1003の例を示す。
致死フィルタ1003は、システムの定義に反する遺伝子を判定するための条件を格納する判定個所10031と、システムの定義に反する遺伝子を修正する内容を格納する修正方法10032の組から成る。ここでは判定個所とその修正手順を記述しているのみだが、フィルタとしてプログラムで記述しても良い。致死フィルタ1003として外に定義することで、システム定義が変わった場合にもこのフィルタ部分を操作するだけで、致死とする遺伝子の種類を変えることができる。
<論理構成の適応度の演算>
図12のステップS16で行われる論理構成の適応度の算出は、例えば、次式によって行われる。
ここで、上記(1)式の「good_chemistry_virtual_machine」は、物理サーバ202と相性の良い仮想サーバ403の台数を表わす。また、「bad_chemistry_virtual_machine」は物理サーバ202と相性の悪い仮想サーバ403の台数を表わす。
ここで、本実施形態では物理サーバ202と仮想サーバ403の相性とは、仮想サーバ403の処理によって最も負荷がかかっている部分(例えばCPU、メモリ、IO、NW等)と物理サーバ202の得意な処理とが同一である仮想サーバ403の配置になっている場合に、相性が良いと定義する。物理サーバ202と仮想サーバ403の相性は、上述の単位トラフィックあたりの仮想サーバ403の基本負荷情報と、システム定義情報804内のサーバ情報1001を参照することで得られる。
例えば、図20Cでは、Node0の負荷が一番大きい項目はトラフィック負荷である。ここでサーバ情報1001のトラフィック性能10016を参照するとトラフィック負荷に強いサーバは物理サーバBであることが分かる。そのため、図20Cに示された負荷状況では、Node0は物理サーバBに配置された場合、相性が良いと判断される。
次に、上記(1)式の「congestion_virtual_machine」は負荷の高い仮想サーバ403の台数を表わし、「free_virtual_machine」は負荷の低い仮想サーバ403の台数を表わす。仮想サーバの負荷の高さは、単位トラフィックあたりの基本負荷と、算出した構成の仮想サーバの配置と、処理トラフィック量900の概算およびサーバ情報1001から求めることが出来る。
図22は仮想サーバ403の負荷の高さを求める手順を示している。まず、構成算出部505は、基準のサーバ(各性能(比)を1.0とする)で起動した際の単位トラフィックあたりの基本負荷910(図22では1000トラフィック単位)を演算し、算出する構成情報920を用いた場合の仮想サーバ403が処理するトラフィック量923に換算した場合の負荷を求める。なお、算出する構成情報920は、クライアント101等から予め設定された情報である。算出する構成情報920は、仮想サーバ403の名称を格納する仮想サーバ921と、当該仮想サーバを提供する物理サーバの識別子を格納する配置サーバ番号922と、処理トラフィック量923からひとつのエントリが構成される。
図22ではNode0のCPU負荷を例に挙げる。まず、構成算出部505は、図20Cの単位トラフィック当たりの基本負荷から、Node0のCPU負荷を参照して「12%」を取得する。次に、構成算出部505は、図22の算出する構成に関する情報920を参照してNode0で処理するトラフィック量=10000を取得する。構成算出部505は、Node0が1000トラフィックあたり12%のCPU負荷を持つため、10000トラフィックを処理する場合には120%のCPU負荷となることを算出する。
次に、構成算出部505は図22の算出する構成に関する情報920からNode0を実行する物理サーバ202の識別子を示す配置サーバ番号から「1」を取得する。構成算出部505は配置サーバ番号=「1」に対応する物理サーバ=「A」のCPU性能10013を参照してCPU性能=「2.0」を取得する。
構成算出部505は、CPU性能1.0の場合では10000トラフィックを処理するための計算上のCPU負荷が120%となるNode0の想定負荷は、CPU性能が2.0の物理サーバAにNode0を配置した場合ではCPU負荷の想定値が60%になることを演算する。そして、演算結果を図22中段の仮想サーバ想定負荷に格納する。構成算出部505は、物理サーバ202の想定負荷を、物理サーバ202内に配置された仮想サーバ403の想定負荷の平均値から演算することができる。構成算出部505は、CPU負荷と同様に、メモリ負荷、I/O負荷、トラフィック負荷を演算し、図22の仮想サーバ想定負荷930と物理サーバ想定負荷940を生成する。
なお、仮想サーバ想定負荷930は、仮想サーバ403の名称を格納する仮想サーバ名931と、当該仮想サーバに割り当てたプロセッサ220の使用率の想定値を格納するCPU負荷932と、当該仮想サーバに割り当てたメモリ314の使用率の想定値を格納するメモリ負荷933と、当該仮想サーバがアクセスするストレージ装置(図示省略)の帯域使用率の想定値を格納するI/O負荷934と、当該仮想サーバがアクセスするネットワーク負荷の想定値を格納するトラフィック負荷935からひとつのエントリが構成される。
また、物理サーバ想定負荷940は、物理サーバ202の名称を格納する物理サーバ名941と、当該物理サーバのプロセッサ220の使用率の想定値を格納するCPU負荷942と、当該物理サーバのメモリ314の使用率の想定値を格納するメモリ負荷943と、当該物理サーバがアクセスするストレージ装置(図示省略)の帯域使用率の想定値を格納するI/O負荷944と、当該物理サーバがアクセスするネットワークI/F401の使用率の想定値を格納するトラフィック負荷945からひとつのエントリが構成される。
そして、構成算出部505は、仮想サーバ想定負荷930と物理サーバ想定負荷940が予め設定された既定値(例えば、90%)を超えていた場合には、該当の仮想サーバ及び物理サーバの負荷の判定結果950をCongestionに設定し、予め設定された規定値を大きく下回っていた場合(例えば、20%)にはfreeと判定し、それ以外の場合にはNormalと判定して、congestion_virtual_machine、free_virtual_machineの数を算出する。なお、図22において負荷の判定結果950は、仮想サーバ403と物理サーバ202のそれぞれについて判定結果を格納する。
さらに、上記(1)式のall_virtual_machineは総仮想サーバ台数を表わし、man_hourは変更工数を表わす。変更工数は遺伝子同士を比較することで算出できる。
図23は構成算出部505が変更工数man_hourを求める手順を示す。図23では、Node1がVirtual SW0に接続している場合の遺伝子「101002233」と、Node1がVirtual SW1に接続している場合の遺伝子「100102233」を比較しており、Node1を示す情報である遺伝子の2番目と3番目の部分が異なっているため、変更工数を1とする。
また、上記(1)式では、重みづけ変数として、Aを仮想サーバの負荷に関するマイナス係数、Bを工数に対するマイナス係数、aを負荷の大きな仮想サーバに対するマイナス係数、bを負荷の少ない仮想サーバに対するマイナス係数、さらに、positionを配置問題係数、logicalを論理構成係数とし、これらの係数はすべて0から1の間の値となるように「101002233」設定する。
ここで、重みづけ係数A、B、a、bは収集された要求情報803および要求/制約反映テーブル1002に基づき決定される。例えば、工数を出来る限り少なくしたい、といった要求があった場合には、要求/制約反映テーブル1002の記述により、構成に対するマイナス係数であるBは大きく設定される。変更工数が多くなる構成ほど、(1)式の関数の出力値が低くなり、解として算出されない。これにより、ユーザの要求を満たす構成を算出することが可能となる。
また、要求情報803を満たすことができない個体(遺伝子)が算出された場合、該当遺伝子の適応度は報酬関数(1)を用いず、例えば適応度を−1するなどの対策を用いることで、要求を満たす個体算出が行いやすくなる。
ここで、適応度の閾値は、図18に示したように入力の一部である緊急度aの値から計算される。例えば、図18のように適応度の閾値の計算を行う場合、緊急度aは0≦a≦1であるので、高ければ高いほど、つまり構成算出時間を短くしたい場合には適応度の閾値の値が下がり、構成算出部505が算出した構成に対して、要求がある程度満たされていればそれを解として出力することとなる。このため、構成算出部505は、計算時間を短縮することが可能となり、結果的に迅速に構成の算出結果を得ることが可能となる。
一方、緊急度aが低ければ、適応度の閾値の値が上がるため、構成算出部505が算出した構成に対する要求が厳しいものとなり、構成の算出に要する時間が長くなるが、適応度の閾値が高い要求を満たす構成が解として算出される。適応度の算出には図18のような変換式を用いなくても良いが、緊急度が高ければ構成算出時間を短くできるようにする必要がある。
<クラスタの調整>
図12のステップS18,S23で行われるクラスタの調整は、具体的には、図24に示されているようなフローチャートを構成算出部505が実行する。
図24では、構成算出部505は、まず、ステップS51で、図12のステップS13、S15と同様に致死フィルタ1003を用いて制約条件を満たさない構成を修正する。そして、図12のステップS16と同様にクラスタ毎の適応度が閾値を超えている構成があるか否かを判定する(S52)。適応度が閾値を超えている構成があればクラスタの調整を終了する。一方、適応度が閾値を超えている構成がなければ、ステップS53に進む。
ステップS53で、構成算出部505はクラスタ毎に適応度の平均値を求め、その平均値が適応度の閾値を超えていないクラスタの中で、適応度の平均値が最も低いクラスタを特定する。適応度の平均値が閾値以下のクラスタが存在すればステップS555へ進み、そうでない場合にはステップS54へ進む。
ステップS55では、適応度の平均値が最も低いクラスタは、サーバ種別ごとの台数がユーザの要求を満たさない可能性が最も高いクラスタであるため、構成算出部505は、当該クラスタ内の全遺伝子に対して混み合っている仮想サーバの総数が一定数を超えているものの割合を、Node、Virtual SW、Virtual Routerについてそれぞれ求める(図24ステップS5)。
これは、図22で示した構成の評価時にcongestion_virtual_machineを求めた時と同様の手順(図22)を行うことで演算することが出来る。
ここで、混み合っている仮想サーバの総数の値が一定値を超える遺伝子の割合が多い場合は、構成算出部505は物理サーバ202の台数が不足していると判定する。
不足していたサーバ種別を1つ増やしたときには、新しいクラスタを作成する(S56)。適応度の平均値が最低となったクラスタは新しいクラスタに自身の遺伝子数の半分を与え、自身の遺伝子数を半減させる。ここで、構成算出部505は半減させる遺伝子は適応度の低いものから順に選択する。また、半減した自身の遺伝子数が規定未満となる場合には、新しいクラスタに全ての遺伝子数を与え、元となったクラスタは消滅する。
クラスタ内の遺伝子数下限は自由に設定して良いものとするが、交叉を行う関係上、最低2つ以上の遺伝子を有する必要がある。また、適応度平均が最低となったクラスタが作った新しいクラスタのサーバ種別ごとの台数が同一となるものが存在した場合、該当クラスタの遺伝子数に自身の遺伝子数の半分、もしくは全てを追加する。新しく生成されたクラスタ、もしくは遺伝子数が追加されたクラスタは、追加された遺伝子分、新しい遺伝子を生成する。また、操作が行われなかったクラスタは、通常通りの選択作業を行う(S57)。
また、ステップS53の平均適応度の判定時に、全てのクラスタが規定の適応度を満たしていた場合には、クラスタ操作は行わず、ステップS54に進んで通常通りの選択操作を行う。
そして、ステップS58で交叉を実行してから、ステップS59で突然変異を実行し、ステップS51の処理へ戻り、ステップS52で適応度が閾値を超えるまで繰り返される。この操作によって、ユーザの要求を満たす最良のサーバ種別ごとの台数が探索可能となる。クラスタ操作の具体的な様子は、後述の図25、図26によって示される。
図25は新しくクラスタを作成する場合のクラスタ操作の様子を表わす。クラスタAはNodeが4台、SWが2台、Routerが1台で構成された遺伝子を100個保有している。ここで、クラスタAの平均適応度が低く、さらにNodeが混雑していることを示す遺伝子が多い場合、つまりNodeの数が不足していると思われる場合、Nodeが5台、SWが2台、Routerが1台で構成された遺伝子を保有するクラスタBを作成し、クラスタAの遺伝子数の半分となる50個の遺伝子を新しく作成し、保持する。そしてクラスタAの遺伝子のうち半分の50個を適応度の低いものから削除する。
図26は既存クラスタに遺伝子数を増やす場合のクラスタ操作の様子を表わす。クラスタAはNodeが4台、SWが2台、Routerが1台で構成された遺伝子を100個保有している。そしてクラスタBはNodeが5台、SWが2台、Routerが1台で構成された遺伝子を50個保有している。ここで、クラスタAの平均適応度が低く、さらにNodeが混雑していることを示す遺伝子が多い場合、つまりNodeの数が不足していると思われる場合、Nodeが5台、SWが2台、Routerが1台で構成された遺伝子を保有しているクラスタBにクラスタAの遺伝子数の半分となる50個の遺伝子を追加する。遺伝子を追加され遺伝子数を100に伸ばしたクラスタBは追加された50個分の遺伝子を新たに作成し、保持する。そしてクラスタAの遺伝子のうち半分の50個を適応度の低いものから削除する。
<物理構成の適応度>
図12のステップS21で行われる物理構成の適応度の算出は、例えば、次式によって行われる。
全ての物理構成に対して、適応度が一定以上の論理構成が算出された場合、各物理構成の適応度の算出が行われる(図12のステップS21)。適応度の算出方法は、例えば、
によって表わすことができる。
ここで、good_chemistry_virtual_machine、bad_chemistry_virtual_machine、congestion_virtual_machine、free_virtual_machine、all_virtual_machine、man_hourは全て前述の(1)式と同様の手順で求める。また、congestion_machineは負荷の高い物理サーバ台数を表わし、free_machineは負荷の低い物理サーバ台数を表わし、これらの変数も前述の手順と同様に求めることが出来る(図22参照)。さらに、上記(2)式のall_physical_machineは総物理サーバ数を表わし、machine_num_iは物理サーバ種別ごとの台数(i番目)を表わし、machine_cost_iは物理サーバ種別ごとのコスト(i番目)を表わす。
図27は、物理サーバの種別ごとのコストを求める手順を表わしている。物理サーバ202の種別ごとのコストは、遺伝子内の情報とシステム定義情報804内のサーバ情報1001を照らし合わせることで得られる。
図27に示した例では、遺伝子表現を参照するとMachine0とMachine1が遺伝子「10」で表現されているためサーバ種別A、Machine2が遺伝子「02」で表現されているためサーバ種別Bであることがわかるので、Machine0とMachine1のマシンコストは1.5、Machine2のマシンコストは1.0であることがわかる。
また、重みづけ係数として、Aを仮想サーバの負荷に関するマイナス係数、Bを工数に対するマイナス係数、Cを物理サーバの負荷に関するマイナス係数、Dを物理サーバのコストに関するマイナス係数、aを負荷の大きな仮想サーバに対するマイナス係数、bを負荷の少ない仮想サーバに対するマイナス係数、cを負荷の大きなサーバに対するマイナス係数、dを負荷の少ないサーバに対するマイナス係数、さらに、positionを配置問題係数、logicalを論理構成係数、physicalを物理構成係数とし、これらの係数はすべて0から1の間の値となるように設定する。ここで、前述の関数と同じく、重みづけ係数は収集された要求情報803および要求/制約反映テーブル1002に基づき決定される。例えば、物理サーバのコストを出来る限り少なくしたい、といった要求があった場合には、要求/制約反映テーブル1002の記述により、物理サーバ202のコストに関するマイナス係数であるDは大きく設定される。この設定により、物理サーバのコストが多くなる構成ほど、上記(1)式または(2)式の出力値が低くなり、解として算出されない。これにより、ユーザの要求を満たす構成を算出することが可能となる。
また、前述と同様、解として許されない条件を満たす個体が存在した場合、報酬関数に関係なく報酬値をマイナスするように設定することで、要求を満たす個体算出が行いやすくなる。
図13は、本発明の変形例を示す。図13は物理構成を考慮しない場合の計算サーバ102で行われる構成算出処理のフローチャートを示す。本フローチャートは図12と異なり論理構成及びサーバ配置の算出部分のみで構成され、図12の物理構成の処理を削除したものである。このため、ステップS16の判定を満たす論理構成を出力する。この処理は、図18の要求/制約反映テーブル1002のフローチャートBに相当し、図12の処理は要求/制約反映テーブル1002のフローチャートAに相当する。
図28は、物理構成の変更を含んだ構成変更時のシーケンス図を示す。本シーケンス図は、図11のシーケンス図のS8から続くものである。
まず、計算サーバ102内の構成算出部505によって算出された構成(S61)を構成提示部506が受信する(S62)。構成提示部506はネットワークI/F501およびネットワーク104を介して、クライアント101へと構成変更内容を送信する。そして、クライアント101内のネットワークI/F601が送信された構成変更内容を受信し、構成取得部602は受信した構成変更内容を構成情報901としてメモリ607へ格納し、構成表示部603へ構成変更内容の格納完了を通知する(S63)。構成変更内容の格納完了通知を受け取った構成表示部603は、I/O606を介して、メモリ607内の構成情報901を出力装置612に出力し、管理者(ユーザ)に物理構成の変更を提示する(S64)。管理者は物理構成の提示に従って、物理サーバ202等の構成を変更する。
図29は、物理構成の変更を含まない構成変更時のシーケンス図を示す。まず、計算サーバ102内の構成算出部505によって算出された構成(S71)を構成変更指示部507が受信する(S72)。構成変更指示部507はネットワークI/F501およびネットワーク104を介して、データセンタ103内のコントローラ201へ構成算出結果と共に構成変更要求を送信する。構成変更要求がネットワークI/F303に受信されると、構成変更指示部302はネットワークI/F301を介して構成変更が必要な物理サーバ202のハイパーバイザ402へ、要求に沿った構成変更命令を出す(S73)。そして変更が反映されるだけの十分な時間が経った後、構成変更指示部302はネットワークI/F301を介して構成変更を行った物理サーバ202のハイパーバイザ402へ、構成変更ができているのか確認を行う(S75、S76)。要求通りに構成変更(S74)が行われていた場合、構成変更指示部302はネットワークI/F301およびルータ203を介し、ネットワーク104を通じて、計算サーバ102へ構成変更完了を通知する(S77)。構成変更完了の通知が計算サーバ102内ネットワークI/F501に受信されると、構成提示部506がネットワークI/F501およびネットワーク104を介して、クライアント101へと構成変更内容を送信する(S78)。そして、クライアント101内のネットワークI/F601が送信された構成変更内容を受信し(S79)、構成取得部602は受信した構成変更内容を構成情報901としてメモリ607へ格納し、構成表示部603へ構成変更内容の格納完了を通知する。構成変更内容の格納完了通知を受け取った構成表示部603は、I/O606を介して、メモリ607内の構成情報901をユーザに提示する(S80)。
以上の処理によって、物理構成の変更が無い場合には、ハイパーバイザ402によって仮想サーバ403の構成が変更される。
以上のように本発明では、物理サーバ202同士の接続関係と、仮想計算機システム内の仮想サーバ403の接続関係と、仮想サーバ403と物理サーバ202の配置関係とを考慮することにより、従来技術では実現できなかった自由度の高い構成を迅速に算出することが可能となる。また、クライアント101のユーザはニーズ(要求情報)を入力するだけで、仮想計算機システム全体の構成を算出することができることから、ユーザが多大な労力を割いて構成を考える必要がなくなり、結果として管理コストを低減することが可能となる。
なお、上記実施形態では、データセンタ103を構成する仮想計算機システムの構成要素の構成パターンを求める例を示したが、仮想サーバの配置のみや、物理サーバ202とスイッチの接続関係の構成パターンのみを算出するようにしてもよい。