(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた管理計算機が、計算機システムを構成する要素の構成パターンを算出する方法であって、
前記管理計算機が、前記計算機システムを構成する要素の情報を含む構成情報を取得する第１のステップと、
前記管理計算機が、前記計算機システムを構成する要素の負荷を含む負荷情報を取得する第２のステップと、
前記管理計算機が、前記計算機システムの構成パターンに対する制約条件を取得する第３のステップと、
前記管理計算機が、前記計算機システムの構成情報に基づいて複数の構成パターンを生成する第４のステップと、
前記管理計算機が、前記生成した複数の構成パターンのうち、前記制約条件を満たしていない構成パターンを修正する第５のステップと、
前記管理計算機が、前記構成情報と負荷情報を参照して、前記制約条件を満たす構成パターンと前記修正された構成パターンのそれぞれについて所定の適応度を演算する第６のステップと、
前記管理計算機が、前記適応度が所定の閾値を超える構成パターンが存在する場合には、当該構成パターンを出力する第７のステップと、
前記管理計算機が、前記適応度が所定の閾値を超える構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る構成パターンを削除する工程と、ある構成パターンと別のある構成パターンの一部を入れ換える工程と、ある構成パターンの一部を変更する工程とを適用する第８のステップと、
を含み、前記第８のステップの後に前記第５のステップへ復帰し、
前記第１のステップは、
前記計算機システムの物理的な構成要素と、論理的な構成要素の情報とを含む構成情報を取得し、
前記第２のステップは、
前記計算機システムの物理的な構成要素の負荷と、論理的な構成要素の負荷と、を含む負荷情報を取得し、
前記第４のステップは、
前記計算機システムの物理的な構成要素の構成パターンと、論理的な構成要素の構成パターンとをそれぞれ生成し、
前記第５のステップは、
前記生成した複数の物理的な構成パターンのうち、前記制約条件を満たしていない物理的な構成パターンを修正し、前記生成した複数の論理的な構成パターンのうち、前記制約条件を満たしていない論理的な構成パターンを修正し、
前記第６のステップは、
前記物理的な構成情報と物理的な負荷情報を参照して、前記制約条件を満たす物理的な構成パターンと前記修正された物理的な構成パターンのそれぞれについて所定の適応度を演算し、前記論理的な構成情報と論理的な負荷情報を参照して、前記制約条件を満たす論理的な構成パターンと前記修正された論理的な構成パターンのそれぞれについて所定の適応度を演算し、
前記第７のステップは、
前記適応度が所定の閾値を超える物理的な構成パターンが存在し、かつ、前記適応度が所定の閾値を超える論理的な構成パターンが存在する場合には、当該物理的な構成パターンと論理的な構成パターンを出力することを特徴とする計算機システムの構成パターンの算出方法。
【請求項２】
請求項１に記載の計算機システムの構成パターンの算出方法であって、
前記第４のステップは、
前記計算機システムを構成する要素の組み合わせを示す数列に変換した前記構成パターンを生成することを特徴とする計算機システムの構成パターンの算出方法。
【請求項３】
請求項２に記載の計算機システムの構成パターンの算出方法であって、
前記第４のステップは、
前記構成パターンの構成要素の数に応じて数列の長さが異なり、前記数列の長さが同一となるものをひとつのクラスタとして扱うことを特徴とする計算機システムの構成パターンの算出方法。
【請求項４】
請求項３に記載の計算機システムの構成パターンの算出方法であって、
前記第７のステップは、
前記クラスタ内の適応度が所定の閾値を超える構成パターンが存在する場合には、当該構成パターンを出力し、
前記第８のステップは、前記クラスタ内の適応度が所定の閾値を超える構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る構成パターンを削除する工程と、ある構成パターンと別のある構成パターンの一部を入れ換える工程と、ある構成パターンの一部を変更する工程とを適用することを特徴とする計算機システムの構成パターンの算出方法。
【請求項５】
請求項２に記載の計算機システムの構成パターンの算出方法であって、
前記第４のステップは、
前記数列は、種別の異なる要素毎に異なる数値が設定されることを特徴とする計算機システムの構成パターンの算出方法。
【請求項６】
請求項１に記載の計算機システムの構成パターンの算出方法であって、
前記計算機システムを構成する要素の組み合わせを示す数列を遺伝子とし、
前記第４のステップは、
前記構成パターンの構成要素の数に応じて数列の長さが異なり、前記数列の長さが同一となるものをひとつのクラスタとして扱い、
前記物理的な構成要素の構成パターンの初期パターンを前記クラスタ毎の遺伝子のパターンで生成するステップと、
前記生成された前記物理的な構成要素の構成パターンが前記制約条件に反していた場合には、前記物理的な構成要素の構成パターンの遺伝子が制約条件を満たすように修正するステップと、
前記論理的な構成要素の構成パターンの初期パターンを前記クラスタ毎の遺伝子のパターンで生成するステップと、
前記生成された前記論理的な構成要素の構成パターンの遺伝子が前記制約条件に反していた場合には、前記遺伝子が制約条件を満たすように修正するステップと、
を含むことを特徴とする計算機システムの構成パターンの算出方法。
【請求項７】
プロセッサとメモリを備えて計算機システムを構成する要素の構成パターンを算出する構成パターンの算出装置であって、
前記計算機システムを構成する要素の情報を含む構成情報を取得する構成情報取得部と、
前記計算機システムを構成する要素の負荷を含む負荷情報を取得する負荷情報取得部と、
前記計算機システムの構成パターンに対する制約条件を取得する要求取得部と、
前記計算機システムの構成情報に基づいて複数の構成パターンを生成する構成算出部と、を備え、
前記構成算出部は、
前記生成した複数の構成パターンのうち、前記制約条件を満たしていない構成パターンを修正する修正部と、
前記構成情報と負荷情報を参照して、前記制約条件を満たす構成パターンと前記修正された構成パターンのそれぞれについて所定の適応度を演算する適応度演算部と、
前記適応度が所定の閾値を超える構成パターンが存在する場合には、当該構成パターンを出力する構成提示部と、
前記適応度が所定の閾値を超える構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る構成パターンを削除する工程と、ある構成パターンと別のある構成パターンの一部を入れ換える工程と、ある構成パターンの一部を変更する工程とを適用する構成変更部と、を有し、
前記構成変更部で前記構成算出部によって算出され、構成提示部によって出力された構成パターンを前記修正部へ入力し、
前記構成情報取得部は、
前記計算機システムの物理的な構成要素と、論理的な構成要素の情報とを含む構成情報を取得し、
前記負荷情報取得部は、
前記計算機システムの物理的な構成要素の負荷と、論理的な構成要素の負荷と、を含む負荷情報を取得し、
前記構成算出部は、
前記計算機システムの物理的な構成要素の構成パターンと、論理的な構成要素の構成パターンとをそれぞれ生成し、
前記修正部は、
前記生成した複数の物理的な構成パターンのうち、前記制約条件を満たしていない物理的な構成パターンを修正し、前記生成した複数の論理的な構成パターンのうち、前記制約条件を満たしていない論理的な構成パターンを修正し、
前記適応度演算部は、
前記物理的な構成情報と物理的な負荷情報を参照して、前記制約条件を満たす物理的な構成パターンと前記修正された物理的な構成パターンのそれぞれについて所定の適応度を演算し、前記論理的な構成情報と論理的な負荷情報を参照して、前記制約条件を満たす論理的な構成パターンと前記修正された論理的な構成パターンのそれぞれについて所定の適応度を演算し、
前記構成提示部は、
前記適応度が所定の閾値を超える物理的な構成パターンが存在し、かつ、前記適応度が所定の閾値を超える論理的な構成パターンが存在する場合には、当該物理的な構成パターンと論理的な構成パターンを出力することを特徴とする構成パターンの算出装置。
【請求項８】
請求項７に記載の構成パターンの算出装置であって、
前記構成算出部は、
前記計算機システムを構成する要素の組み合わせを示す数列に変換した前記構成パターンを生成することを特徴とする計算機システムの構成パターンの算出装置。
【請求項９】
請求項８に記載の構成パターンの算出装置であって、
前記構成算出部は、
前記構成パターンの構成要素の数に応じて数列の長さが異なり、前記数列の長さが同一となるものをひとつのクラスタとして扱うことを特徴とする構成パターンの算出装置。
【請求項１０】
請求項９に記載の構成パターンの算出装置であって、
前記構成提示部は、
前記クラスタ内の適応度が所定の閾値を超える構成パターンが存在する場合には、当該構成パターンを出力し、
前記構成変更部は、前記クラスタ内の適応度が所定の閾値を超える構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る構成パターンを削除する工程と、ある構成パターンと別のある構成パターンの一部を入れ換える工程と、ある構成パターンの一部を変更する工程とを適用することを特徴とする構成パターンの算出装置。
【請求項１１】
請求項８に記載の構成パターンの算出装置であって、
前記構成算出部は、
前記数列に、種別の異なる要素毎に異なる数値を設定することを特徴とする構成パターンの算出装置。
【請求項１２】
請求項７に記載の構成パターンの算出装置であって、
前記構成算出部は、
前記計算機システムを構成する要素の組み合わせを示す数列を遺伝子とし、
前記構成パターンの構成要素の数に応じて数列の長さが異なり、前記数列の長さが同一となるものをひとつのクラスタとして扱い、
物理的な構成要素の構成パターンの初期パターンを前記クラスタ毎の遺伝子のパターンで生成し、前記生成された前記物理的な構成要素の構成パターンが前記制約条件に反していた場合には、前記物理的な構成要素の構成パターンの遺伝子が制約条件を満たすように修正し、前記論理的な構成要素の構成パターンの初期パターンを前記クラスタ毎の遺伝子のパターンで生成し、前記生成された論理的な構成要素の構成パターンの遺伝子が前記制約条件に反していた場合には、前記遺伝子が制約条件を満たすように修正することを特徴とする構成パターンの算出装置。
【請求項１３】
プロセッサとメモリを備えた管理計算機が、計算機システムを構成する要素の構成パターンを算出する方法であって、
前記管理計算機が、前記計算機システムの物理的な構成要素と、論理的な構成要素の情報とを含む構成情報を取得する第１のステップと、
前記管理計算機が、前記計算機システムの物理的な構成要素の負荷と、論理的な構成要素の負荷と、を含む負荷情報を取得する第２のステップと、
前記管理計算機が、前記計算機システムの構成パターンに対する制約条件を取得する第３のステップと、
前記管理計算機が、前記計算機システムの構成情報に基づいて、前記計算機システムの物理的な構成要素の構成パターンと、論理的な構成要素の構成パターンとをそれぞれ生成する第４のステップと、
前記管理計算機が、前記生成した複数の物理的な構成パターンのうち、前記制約条件を満たしていない物理的な構成パターンを修正し、前記生成した複数の論理的な構成パターンのうち、前記制約条件を満たしていない論理的な構成パターンを修正する第５のステップと、
前記論理的な構成情報と論理的な負荷情報を参照して、前記制約条件を満たす論理的な構成パターンと前記修正された論理的な構成パターンのそれぞれについて所定の適応度を演算し、前記適応度が所定の閾値を超える論理的な構成パターンが存在するか否かを判定する第６のステップと、
前記判定結果が、前記所定の閾値を超える適応度の論理的な構成パターンが存在する場合には、前記物理的な構成情報と物理的な負荷情報を参照して、前記制約条件を満たす物理的な構成パターンと前記修正された物理的な構成パターンのそれぞれについて所定の適応度を演算し、前記適応度が所定の閾値を超える物理的な構成パターンが存在するか否かを判定する第７のステップと、
前記管理計算機が、前記適応度が所定の閾値を超える物理的な構成パターンが存在する場合には、当該物理的な構成パターンと前記論理的な構成パターンを出力する第８のステップと、
前記管理計算機が、前記適応度が所定の閾値を超える物理的な構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る物理的な構成パターンを削除する工程と、ある構成パターンと別のある物理的な構成パターンの一部を入れ換える工程と、ある物理的な構成パターンの一部を変更する工程とを適用する第９のステップと、
を含み、前記第９のステップの後に前記第５のステップへ復帰することを特徴とする計算機システムの構成パターンの算出方法。
【請求項１４】
プロセッサとメモリを備えて計算機システムを構成する要素の構成パターンを算出する構成パターンの算出装置であって、
前記計算機システムを構成する物理的な構成要素と、論理的な構成要素の情報とを含む構成情報を取得する構成情報取得部と、
前記計算機システムを構成する物理的な構成要素の負荷と、論理的な構成要素の負荷と、を含む負荷情報を取得する負荷情報取得部と、
前記計算機システムの構成パターンに対する制約条件を取得する要求取得部と、
前記計算機システムの構成情報に基づいて物理的な構成要素の構成パターンと、論理的な構成要素の構成パターンとをそれぞれ生成する構成算出部と、を備え、
前記構成算出部は、
前記生成した複数の物理的な構成パターンのうち、前記制約条件を満たしていない物理的な構成パターンを修正し、前記生成した複数の論理的な構成パターンのうち、前記制約条件を満たしていない論理的な構成パターンを修正する修正部と、
前記論理的な構成情報と論理的な負荷情報を参照して、前記制約条件を満たす論理的な構成パターンと前記修正された論理的な構成パターンのそれぞれについて所定の適応度を演算し、前記適応度が所定の閾値を超える論理的な構成パターンが存在する場合には、前記物理的な構成情報と物理的な負荷情報を参照して、前記制約条件を満たす物理的な構成パターンと前記修正された物理的な構成パターンのそれぞれについて所定の適応度を演算する適応度演算部と、
前記適応度が所定の閾値を超える物理的な構成パターンが存在する場合には、前記物理的な構成パターンと前記論理的な構成パターンを出力する構成提示部と、
前記適応度が所定の閾値を超える物理的な構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る物理的な構成パターンを削除する工程と、ある物理的な構成パターンと別のある物理的な構成パターンの一部を入れ換える工程と、ある物理的な構成パターンの一部を変更する工程とを適用する構成変更部と、を有し、
前記構成変更部で前記構成算出部によって算出された論理的な構成パターンと、構成提示部によって出力された物理的な構成パターンを前記修正部へ入力することを特徴とする構成パターンの算出装置。
【請求項１５】
請求項１に記載の計算機システムの構成パターンの算出方法であって、
前記適応度は、予め設定されて前記構成パターンの算出精度を決定する緊急度を用いることを特徴とする計算機システムの構成パターンの算出方法。
【請求項１６】
請求項１５に記載の計算機システムの構成パターンの算出方法であって、
前記閾値は、前記緊急度に基づいて算出され、前記緊急度が高い場合には前記閾値の値を低下させて前記構成パターンを出力するまでの算出時間を短縮させ、前記緊急度が低い場合には前記閾値の値を高く設定して前記構成パターンを出力するまでの算出時間を増大させることを特徴とする計算機システムの構成パターンの算出方法。
【請求項１７】
請求項１に記載の計算機システムの構成パターンの算出方法であって、
前記物理的な負荷情報は、前記物理的な構成情報である物理サーバの負荷を取得し、
前記論理的な負荷情報は、前記論理的な構成情報である仮想サーバの負荷を取得することを特徴とする計算機システムの構成パターンの算出方法。
【請求項１８】
請求項７に記載の計算機システムの構成パターンの算出装置であって、
前記適応度は、予め設定されて前記構成パターンの算出精度を決定する緊急度を用いることを特徴とする計算機システムの構成パターンの算出装置。
【請求項１９】
請求項１８に記載の計算機システムの構成パターンの算出装置であって、
前記閾値は、前記緊急度に基づいて算出され、前記緊急度が高い場合には前記閾値の値を低下させて前記構成パターンを出力するまでの算出時間を短縮させ、前記緊急度が低い場合には前記閾値の値を高く設定して前記構成パターンを出力するまでの算出時間を増大させることを特徴とする計算機システムの構成パターンの算出装置。
【請求項２０】
請求項７に記載の計算機システムの構成パターンの算出装置であって、
前記物理的な負荷情報は、前記物理的な構成情報である物理サーバの負荷を取得し、
前記論理的な負荷情報は、前記論理的な構成情報である仮想サーバの負荷を取得することを特徴とする計算機システムの構成パターンの算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理計算機の計算機資源を仮想化して複数の仮想計算機を提供する仮想計算機システムの管理方法の改良に関する。
【背景技術】
【０００２】
物理サーバ内に複数の仮想サーバを立ち上げることで省電力と低コストを実現する仮想化システムは、企業や個人を問わず広く普及している。ここで、仮想化システムを構築する場合、既存のシステムを構成する場合に比べ考慮すべき点が増加する。考慮すべき１点目は、どの物理サーバにどの仮想サーバを配置するかということである。２点目は、仮想サーバ同士がどのように構成されているのか、また仮想サーバの台数が適切であるかということである。ここで構成とは、仮想化システムにおける仮想サーバと、仮想スイッチおよび仮想ルータなどの接続関係のことを指す。そして３点目は、仮想化システムのベースとなる物理サーバ群がどのように構成されているのか、また物理サーバの台数が適切であるかということである。こちらの構成は、仮想化システムのベースとなる物理サーバ、物理スイッチおよび物理ルータなどの接続関係のことを指す。
【０００３】
どの物理サーバにどの仮想サーバを配置するかということは、仮想化システムにおけるパフォーマンスに大きく影響する。例えば、ＣＰＵ性能の高い物理サーバに、ＣＰＵ負荷の高い処理を行う仮想サーバを配置することは有益であり、ＣＰＵ性能の低い物理サーバにＣＰＵ負荷の高い処理を行う仮想サーバを配置することは、有益ではないといえる。また、ある仮想サーバＡとある仮想サーバＢ間の通信頻度が高いのであれば、仮想サーバＡ、Ｂが配置される物理サーバＡ、Ｂも、やはり近くに配置されていることが望ましい。
【０００４】
仮想サーバ同士がどのように構成されて仮想化システムを作り上げているのか、また仮想サーバの台数が適切であるかという点もまた、仮想化システムにおけるパフォーマンスに影響する。例えば、ある仮想サーバへの通信が集中するような構成が取られている場合、その仮想サーバはボトルネックとなり、構成の見直しが必要であると言える。また、仮想サーバの数が足りない場合、システム全体の負荷が過大になってしまい、仮想サーバの数が多すぎる場合には、アイドル状態の仮想サーバが何台か出てきてしまう。さらに、仮想サーバの性能は配置される物理サーバに左右されるため、仮想サーバが何台必要かといった見積もりを正確に行うのは困難である。
【０００５】
仮想化システムのベースとなる、物理サーバの構成および物理サーバ台数もまた重要である。例えば、スイッチへの接続サーバが多すぎる場合には、そのスイッチがボトルネックとなってしまい、接続されている物理サーバは十分に性能を発揮できない。また、物理サーバの数が足りない場合もシステム全体の負荷が高まってしまう。
【０００６】
仮想化システムの構築手法として、特許文献１では、仮想サーバの所定時間毎のパフォーマンスを示す実測データから、各仮想サーバを複数の物理サーバのいずれかで稼働させた場合の各時間における各仮想サーバのパフォーマンス値の合計が最大となる、仮想サーバと物理サーバの組み合わせを算出し、その組み合わせに従って各仮想サーバの再配置を行うことを提案している。これにより、仮想サーバを最も相性の良い物理サーバに配置することが可能となる。
【０００７】
特許文献２では、仮想化システム構築の際に仮想サーバの構成に関する情報を利用し、仮想サーバ群が単一障害点を共有しないよう、それぞれの仮想サーバが物理サーバへ配置することを提案している。これにより、障害点を考慮した仮想化システム構築を行うことが可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１１５６５３号公報
【特許文献２】特開２００９−２１７４３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、上記特許文献１および特許文献２による仮想化システム構築方法では、仮想サーバをどの物理サーバに配置するかという部分でしか考慮していない。仮に特許文献１の方法を実現すると、ベースとなる物理サーバの構成にボトルネックが存在していた場合、もしくは仮想サーバの数が不足していた場合等、仮想サーバを最も効率よく物理サーバに配置したとしても、パフォーマンスの向上は見込めない。
【００１０】
また、仮に特許文献２の方法を実現した場合も同様で、仮想サーバの構成に関する情報を利用はしているものの、その構成を変更するという機能はなく、やはりこちらも物理サーバ間や仮想サーバ間にボトルネックが生じていたとしても、解決することはできない。
【００１１】
特に、データセンターなどで多数の物理サーバ上で複数の仮想サーバが稼働する環境では、計算機（物理サーバ及び仮想サーバ）の負荷やネットワークの負荷を最適にする組み合わせや配置を迅速に設定する必要がある。しかしながら、上記従来例を用いても計算機やネットワークの負荷を最適にする組み合わせや配置を迅速に得ることはできないという問題があった。
【００１２】
そこで本発明は、上記問題点に鑑みてなされたもので、仮想サーバと物理サーバの配置を考慮する際に物理構成および論理構成を考慮して、ユーザのニーズに応じた仮想化システム全体の構成を迅速に算出することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、プロセッサとメモリを備えた管理計算機が、計算機システムを構成する要素の構成パターンを算出する方法であって、前記管理計算機が、前記計算機システムを構成する要素の情報を含む構成情報を取得する第１のステップと、前記管理計算機が、前記計算機システムを構成する要素の負荷を含む負荷情報を取得する第２のステップと、前記管理計算機が、前記計算機システムの構成パターンに対する制約条件を取得する第３のステップと、前記管理計算機が、前記計算機システムの構成情報に基づいて複数の構成パターンを生成する第４のステップと、前記管理計算機が、前記生成した複数の構成パターンのうち、前記制約条件を満たしていない構成パターンを修正する第５のステップと、前記管理計算機が、前記構成情報と負荷情報を参照して、前記制約条件を満たす構成パターンと前記修正された構成パターンのそれぞれについて所定の適応度を演算する第６のステップと、前記管理計算機が、前記適応度が所定の閾値を超える構成パターンが存在する場合には、当該構成パターンを出力する第７のステップと、前記管理計算機が、前記適応度が所定の閾値を超える構成パターンが存在しない場合には、前記適応度が所定の閾値を下回る構成パターンを削除する工程と、ある構成パターンと別のある構成パターンの一部を入れ換える工程と、ある構成パターンの一部を変更する工程とを適用する第８のステップと、を含み、前記第８のステップの後に前記第５のステップへ復帰し、前記第１のステップは、前記計算機システムの物理的な構成要素と、論理的な構成要素の情報とを含む構成情報を取得し、前記第２のステップは、前記計算機システムの物理的な構成要素の負荷と、論理的な構成要素の負荷と、を含む負荷情報を取得し、前記第４のステップは、前記計算機システムの物理的な構成要素の構成パターンと、論理的な構成要素の構成パターンとをそれぞれ生成し、前記第５のステップは、前記生成した複数の物理的な構成パターンのうち、前記制約条件を満たしていない物理的な構成パターンを修正し、前記生成した複数の論理的な構成パターンのうち、前記制約条件を満たしていない論理的な構成パターンを修正し、前記第６のステップは、前記物理的な構成情報と物理的な負荷情報を参照して、前記制約条件を満たす物理的な構成パターンと前記修正された物理的な構成パターンのそれぞれについて所定の適応度を演算し、前記論理的な構成情報と論理的な負荷情報を参照して、前記制約条件を満たす論理的な構成パターンと前記修正された論理的な構成パターンのそれぞれについて所定の適応度を演算し、前記第７のステップは、前記適応度が所定の閾値を超える物理的な構成パターンが存在し、かつ、前記適応度が所定の閾値を超える論理的な構成パターンが存在する場合には、当該物理的な構成パターンと論理的な構成パターンを出力する。
【発明の効果】
【００１４】
したがって、本発明では、構成要素の接続関係及び配置関係を考慮することにより、従来技術では実現できなかった自由度の高い計算機システムの構成パターンを算出することが可能となる。また、ユーザは管理計算機へニーズを入力すれば、計算機システム全体の構成を迅速に算出することができ、ユーザが多大な労力を割いて構成を検討する必要がなくなって、管理コストを低減することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態を示し、仮想計算機システムの構成を示すブロック図である。
【図２】本発明の実施形態を示し、仮想計算機システムを運用するデータセンタの一例を示すブロック図である。
【図３】本発明の実施形態を示し、計算サーバの一例を示すブロック図である。
【図４】本発明の実施形態を示し、クライアンの一例を示すブロック図である。
【図５Ａ】本発明の実施形態を示し、仮想的な計算機資源の接続関係を示すブロック図である。
【図５Ｂ】本発明の実施形態を示し、仮想的な計算機資源の接続関係を示す構成情報の一例を示す図である。
【図６Ａ】本発明の実施形態を示し、物理的な計算機資源の接続関係を示すブロック図である。
【図６Ｂ】本発明の実施形態を示し、物理的な計算機資源の接続関係を示す構成情報の一例を示す図である。
【図７Ａ】本発明の実施形態を示し、仮想的な計算機資源と物理的な計算機資源の対応関係を示すブロック図である。
【図７Ｂ】本発明の実施形態を示し、仮想的な計算機資源と物理的な計算機資源の対応関係を示す構成情報である。
【図８】本発明の実施形態を示し、仮想的な計算機資源の負荷情報の一例を示す図である。
【図９】本発明の実施形態を示し、物理的な計算機資源の負荷情報の一例を示す図である。
【図１０】本発明の実施形態を示し、構成情報を算出する際に計算サーバ物理的な計算機資源の負荷情報の一例を示す図である。
【図１１】本発明の実施形態を示し、構成情報を算出する手順を時系列に示すシーケンス図である。
【図１２】本発明の実施形態を示し、構成情報を算出する処理の一例を示すフローチャートである。
【図１３】本発明の実施形態を示し、構成情報を算出する処理の他の例を示すフローチャートである。
【図１４】本発明の実施形態を示し、仮想計算機システムの物理構成を示す遺伝子を生成する手順の一例を示す図である。
【図１５】本発明の実施形態を示し、仮想計算機システムの論理構成を示す遺伝子を生成する手順の一例を示す図である。
【図１６】本発明の実施形態を示し、仮想計算機システムの物理構成を示す遺伝子のクラスタテーブルである。
【図１７】本発明の実施形態を示し、仮想計算機システムの論理構成を示す遺伝子のクラスタテーブルである。
【図１８】本発明の実施形態を示し、要求／制約反映テーブルの一例を示す図である。
【図１９】本発明の実施形態を示し、サーバ情報の一例を示す図である。
【図２０Ａ】本発明の実施形態を示し、仮想サーバの負荷情報の一例を示す図である。
【図２０Ｂ】本発明の実施形態を示し、物理サーバの負荷情報の一例を示す図である。
【図２０Ｃ】本発明の実施形態を示し、仮想サーバの基本負荷情報の一例を示す図である。
【図２１】本発明の実施形態を示し、致死フィルタの一例を示す図である。
【図２２】本発明の実施形態を示し、仮想サーバ４０３の負荷の高さを求める手順を示す図である。
【図２３】本発明の実施形態を示し、変更工数ｍａｎ＿ｈｏｕｒを求める手順を示す図である。
【図２４】本発明の実施形態を示し、クラスタの調整処理のフローチャートである。
【図２５】本発明の実施形態を示し、新たにクラスタを作成する場合のクラスタ操作の説明図である。
【図２６】本発明の実施形態を示し、既存クラスタに遺伝子数を増やす場合のクラスタ操作の説明図である。
【図２７】本発明の実施形態を示し、物理サーバの種別ごとのコストを求める手順を示す図である。
【図２８】本発明の実施形態を示し、物理構成の変更を含んだ構成変更時のシーケンス図である。
【図２９】本発明の実施形態を示し、物理構成の変更を含まない構成変更時のシーケンス図を示す。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１７】
本実施形態では、計算機システムの構成（構成要素の接続関係や構成要素の配置）を算出する方法として組み合わせ最適化アルゴリズムの一種である遺伝的アルゴリズムを用いた例を以下に示すが、他の組み合わせ最適化アルゴリズムや動的計画法を用いても良い。組み合わせ最適化アルゴリズムや動的計画法を使わずに解くことも可能だが、組み合わせ最適化アルゴリズムや動的計画法を用いることで、計算量を大幅に減らすことが出来る。
【００１８】
図１は、本発明の実施形態を示し、仮想計算機システムを運用するデータセンタの一例を示すブロック図である。
【００１９】
第１実施形態の計算機システムは、クライアント１０１がデータセンタ１０３内のコントローラ（仮想化管理サーバ）２０１を介して仮想計算機システムを構築および管理する際に、仮想計算機システムの構成を算出する計算サーバ（管理計算機または構成パターンの算出装置）１０２を利用することで、仮想計算機システムの管理者のニーズに応じた仮想計算機システムを算出および構築するものである。ここで、計算サーバ１０２の構成は特に限定しない。例えば、クライアント１０１と計算サーバ１０２は、両方の機能を併せ持った１台で実現しても良く、コントローラ２０１と計算サーバ１０２は、両方の機能を併せ持った１台で実現しても良い。
【００２０】
ここで、計算サーバ１０２が算出する構成の一例として、物理サーバ２０２とネットワーク機器の接続関係や、物理サーバ２０２上で稼動させる仮想サーバ４０３の配置等を含む計算機システムの構成要素の構成パターンの例を示す。
【００２１】
クライアント１０１、計算サーバ１０２およびデータセンタ１０３のルータ２０３はネットワーク１０４を介して接続している。データセンタ１０３はコントローラ２０１、物理サーバ２０２、ルータ２０３およびスイッチ２０４にて構成され、コントローラ２０１はルータ２０３及びスイッチ２０４で構成される内部ＬＡＮを介して全ての物理サーバ２０２と接続している。コントローラ２０１は、後述するように、物理サーバ２０２で稼動する仮想サーバの実行、停止あるいは移動を管理する仮想化管理サーバとして機能する。
【００２２】
図２はデータセンタ１０３の構成を示すブロック図である。コントローラ２０１はデータセンタ１０３内のルータ２０３に接続されている。また、物理サーバ２０２はスイッチ２０４を介してデータセンタ１０３内のルータ２０３に接続されている。データセンタ１０３内のルータ２０３はネットワーク１０４と接続されており、間接的にコントローラ２０１および物理サーバ２０２はネットワーク１０４と接続している。
【００２３】
コントローラ２０１は、演算処理を行うプロセッサ２１０と、データやプログラムを格納するメモリ３０４と、ネットワークＩ／Ｆ３０１を備え、ネットワークＩ／Ｆ３０１を介してルータ２０３に接続している。また、コントローラ２０１は、図示しないストレージ装置にプログラムやデータを記憶する。
【００２４】
メモリ３０４には、構成／負荷情報取得部３０３と、構成変更指示部３０２がロードされてプロセッサ２１０により実行される。構成／負荷情報取得部３０３は、複数の物理サーバ２０２から構成情報７０１と負荷情報７０２を取得する。
【００２５】
メモリ３０４には、複数の物理サーバ２０２上に構成されている仮想サーバ３０４の構成情報と、各物理サーバ２０２の構成情報および仮想サーバ４０３の種別や物理サーバ２０２の種別等の仮想計算機システムの定義情報が構成情報７０１として格納される。また、構成／負荷情報取得部３０３によって得られた各仮想サーバ４０３および各物理サーバ２０２の負荷の情報が負荷情報７０２としてメモリ３０４に格納される。
【００２６】
物理サーバ２０２は、演算処理を行うプロセッサ２２０と、データやプログラムを格納するメモリ３１４と、ネットワークＩ／Ｆ４０１とを備え、ネットワークＩ／Ｆ４０１からスイッチ２０４を介してルータ２０３に接続される。
【００２７】
メモリ３１４には、ハイパーバイザ４０２がロードされてプロセッサ２２０によって実行される。ハイパーバイザ４０２は、物理サーバ２０２の計算機資源を１以上の仮想サーバ４０３に割り当てる。
【００２８】
コントローラ２０１は、計算サーバ１０２からネットワーク１０４を介して構成／負荷情報取得要求がネットワークＩ／Ｆ３０１に受信された場合、構成／負荷情報取得部３０３がネットワークＩ／Ｆ３０１を介して全物理サーバ２０２のハイパーバイザ４０２へ、各仮想サーバ４０３および各物理サーバ２０２の負荷情報を送信するよう命令を送信する。各ハイパーバイザ４０２は検出した負荷情報をコントローラ２０１へ送信し、コントローラ２０１はメモリ３０４へ負荷情報７０２として格納する。
【００２９】
さらに、各ハイパーバイザ４０２は検出した構成情報をコントローラ２０１へ送信し、コントローラ２０１はメモリ３０４へ構成情報７０１として格納する。
【００３０】
そして、コントローラ２０１はメモリ３０４に格納された各仮想サーバ４０３および各物理サーバ２０２の負荷情報７０２に加え、メモリ３０４上の構成情報７０１をネットワークＩ／Ｆ３０１を介して、計算サーバ１０２へ送信する。
【００３１】
また、計算サーバ１０２からネットワーク１０４を介して構成変更要求がネットワークＩ／Ｆ３０１で受信された場合、コントローラ２０１の構成変更指示部３０２はネットワークＩ／Ｆ３０１を介して構成変更が必要な物理サーバ２０２のハイパーバイザ４０２へ、構成変更命令を送信する。そして変更が反映されるだけの十分な時間が経った後、構成変更指示部３０２はネットワークＩ／Ｆ３０１を介して構成変更を行った物理サーバ２０２のハイパーバイザ４０２へ、構成変更が正しく行われているかを検出する。要求通りに構成変更が行われていた場合、構成変更指示部３０２はネットワークＩ／Ｆ３０１およびルータ２０３を介し、ネットワーク１０４を介して、計算サーバ１０２へ構成変更の完了を通知する。一方、構成変更が正常に行われていなかった場合には、構成変更指示部３０２は要求が反映されるまで、再度構成変更の手順を行う。もしくは、構成変更のエラー通知を計算サーバ１０２に送信する。
【００３２】
なお、物理サーバ２０２は図示しないホストバスアダプタなどを備えて、図示しないストレージ装置にアクセスするものとする。
【００３３】
図３は計算サーバ１０２の構成図である。計算サーバ１０２は、演算処理を行うプロセッサ２３０と、データやプログラムを格納するメモリ５０４と、ストレージ装置２３１及びネットワークＩ／Ｆ５０１とを備え、ネットワークＩ／Ｆ５０１を介してネットワーク１０４に接続される。メモリ５０４には、要求取得部５０２、構成／負荷情報取得部５０３、構成算出部５０５、構成提示部５０６及び、構成変更指示部５０７がストレージ装置２３１からロードされてプロセッサ２３０によって実行される。ストレージ装置２３１は、要求取得部５０２、構成／負荷情報取得部５０３、構成算出部５０５、構成提示部５０６及び、構成変更指示部５０７の記憶媒体としても機能する。
【００３４】
メモリ５０４には、構成／負荷情報取得部５０３がコントローラ２０１から取得した構成情報８０１と、負荷情報８０２が格納される。構成情報８０１は、データセンタ１０３の仮想サーバ４０３の構成情報と、各物理サーバ２０２の構成情報および仮想サーバの種別や物理サーバの種別等の情報から構成される。また、各仮想サーバ４０３および各物理サーバ２０２の負荷情報が負荷情報８０２として構成される。
【００３５】
また、要求取得部５０２は、クライアント１０１等から受信した要求や制約条件、または算出する構成に関する情報を要求情報８０３としてメモリ５０４に格納する。また、計算サーバ１０２では仮想計算機システムの構成算出にあたって必要となる情報をシステム定義情報８０４としてメモリ５０４に格納しておく。
【００３６】
ここで、システム定義情報８０４は、サーバ情報１００１、要求／制約反映テーブル１００２、致死フィルタ１００３からなる。サーバ情報１００１には物理サーバ２０２の性能に関する情報が格納される。要求／制約反映テーブル１００２には、仮想計算機システムの構成を算出する際に要求情報８０３をどのように反映させるかに関する情報が格納される。致死フィルタ１００３には、仮想計算機システムの構成を算出するにあたって使用する遺伝的アルゴリズムの動作に関する情報が格納される。システム定義情報８０４は、仮想計算機システムの構成を算出する前に入力されている必要があり、入力装置２３２からの入力や、クライアント１０１からの遠隔入力でもよい。
【００３７】
クライアント１０１からネットワーク１０４を介して、要求または制約条件および構成変更要求がネットワークＩ／Ｆ５０１で受信された場合、要求取得部５０２は受信した要求または制約条件を要求情報８０３としてメモリ５０４に格納し、構成／負荷情報取得部５０３に構成／負荷情報取得要求を送る。
【００３８】
構成／負荷情報取得要求を受け取った構成／負荷情報取得部５０３は、ネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、データセンタ１０３内のコントローラ２０１へ構成／負荷情報取得要求を送信する。
【００３９】
データセンタ１０３内のコントローラ２０１からネットワーク１０４を介して、仮想計算機システムにおける仮想サーバの構成情報と、物理サーバの構成情報および各仮想サーバ及び物理サーバの負荷情報が計算サーバ１０２のネットワークＩ／Ｆ５０１で受信される。構成／負荷情報取得部５０３はメモリ５０４に上記受信した情報を構成情報８０１及び負荷情報８０２として格納し、構成算出部５０５に構成算出要求を送信する。
【００４０】
構成算出要求を受け取った構成算出部５０５は、メモリ５０４内の構成情報８０１、負荷情報８０２、要求情報８０３、システム定義情報８０４と物理クラスタテーブル８５１及び論理クラスタテーブル８５２を元に仮想計算機システムの構成を算出する。構成算出部５０５は、構成を算出する際には、処理トラフィック９００、基本負荷９１０、算出する構成に関する情報９２０、仮想サーバ想定負荷９３０、物理サーバ想定負荷９４０、負荷の判定結果９５０をメモリ５０４上に保持する。なお、物理クラスタテーブル８５１及び論理クラスタテーブル８５２は構成を算出する際に生成することができる。
【００４１】
そして、構成算出部５０５は、物理サーバ２０２の構成を変更する必要がある場合には、その結果を構成提示部５０６へ送信する。構成提示部５０６はネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、クライアント１０１へと構成変更内容を送信する。また、物理サーバ２０２の構成を変更する必要がある場合には、構成提示部５０６は仮想計算機システムの構成の算出結果を構成変更指示部５０７へ送信し、構成変更指示部５０７はネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、データセンタ１０３内のコントローラ２０１へ構成変更要求を送信する。
【００４２】
その後、データセンタ１０３内のコントローラ２０１から構成変更完了の通知をネットワークＩ／Ｆ５０１で受信すると、構成提示部５０６がネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、クライアント１０１へと構成変更内容を送信する。もしくは、構成変更のエラー通知がデータセンタ１０３内のコントローラ２０１から送られてきた場合、構成提示部５０６がネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、クライアント１０１へ算出した構成および変更エラー内容を送信する。
【００４３】
図４はクライアント１０１の構成を示すブロック図である。クライアント１０１は、演算処理を行うプロセッサ２４０と、データやプログラムを格納するメモリ６０７と、Ｉ／Ｏ６０６及びネットワークＩ／Ｆ６０１とを備え、ネットワークＩ／Ｆ６０１を介してネットワーク１０４に接続される。Ｉ／Ｏ６０６には、入力装置６１１と出力装置６１２が接続される。入力装置６１１は、キーボードやマウスなどで構成される。出力装置６１２は、ディスプレイ等で構成される。
【００４４】
メモリ６０７には、構成取得部６０２、構成表示部６０３、要求取得部６０４、要求送信部６０５が格納され、プロセッサ２４０によって実行される。ここで、メモリ６０７には構成取得部６０２が受信する仮想計算機システムの構成内容が構成情報９０１として格納される。また、メモリ６０７には要求取得部６０４が取得する要求／制約条件が要求情報８０２として格納される。仮想計算機システムの構成の算出または変更に関するユーザ（または管理者）の要求および制約条件は、入力装置６１１からＩ／Ｏ６０６を介して要求取得部６０４で受け付ける。
【００４５】
ユーザの要求および制約条件を受け取った要求取得部６０４は、受け取った情報を要求情報９０２としてメモリ６０７へと格納し、要求送信部６０５へ要求／制約条件の格納完了を通知する。要求／制約条件の格納完了通知を受け取った要求送信部６０５は、ネットワークＩ／Ｆ６０１およびネットワーク１０４を介して、計算サーバ１０２へメモリ６０７内に格納された要求情報９０２を送信する。計算サーバ１０２からネットワーク１０４を介して、構成変更内容がネットワークＩ／Ｆ６０１に受信された場合、構成取得部６０２は受信した構成変更内容を構成情報９０１としてメモリ６０７へ格納し、構成表示部６０３へ構成変更内容の格納完了を通知する。構成変更内容の格納完了通知を受け取った構成表示部６０３は、Ｉ／Ｏ６０６を介して、構成情報９０１の内容を出力装置６１２に出力する。
【００４６】
また、仮想計算機システムの構成およびエラー内容がネットワークＩ／Ｆ６０１に受信された場合、構成取得部６０２は受信した構成を構成情報９０１としてメモリ６０７へ格納し、構成表示部６０３へ構成情報の格納完了を通知する。構成情報の格納完了通知を受け取った構成表示部６０３は、Ｉ／Ｏ６０６を介して、構成情報９０１の内容およびエラー内容を出力装置６１２に出力する。
【００４７】
図５Ａ、図５Ｂ、図６Ａ、図６Ｂ、図７Ａおよび図７Ｂはデータセンタ１０３内の構成情報７０１、計算サーバ１０２内の構成情報８０１およびクライアント１０１内の構成情報９０１上の内容を示す。なお、構成情報７０１、８０１、９０１は同一の情報である。また、構成情報７０１は、図５Ｂの構成情報７０１Ａ、図６Ｂの構成情報７０１Ｂ、図７Ｂの構成情報７０１Ｃから構成される。構成情報８０１、９０１も同様であり、構成情報８０１Ａ〜８０１Ｃと９０１Ａ〜９０１Ｃからそれぞれ構成される。これらの構成情報の総称を構成情報７０１、８０１，９０１とする。
【００４８】
図５Ｂ、図６Ｂ、図７Ｂの構成情報７０１、８０１、９０１は、図７Ａで示すように、３台の物理サーバ（Machine０、１、２）２０２上で仮想サーバ（ＮＯＤＥ０、ＮＯＤＥ１、ＮＯＤＥ２）が稼動し、物理サーバ（Machine０、Machine１）がスイッチ（ＳＷ０）に接続され、物理サーバ（Machine２）がスイッチ（ＳＷ１）に接続され、２つのスイッチ（ＳＷ０、ＳＷ１）２０４がルータ（Router０）２０３に接続された例を示す。
【００４９】
図５Ａは仮想サーバや仮想スイッチなどの仮想的な計算機資源の接続関係を示しており、例えば、２つの仮想サーバＮＯＤＥ０とＮＯＤＥ１が物理サーバ（Machine０）のハイパーバイザ４０２内の仮想スイッチ（Ｖｉｒｔｕａｌ  ＳＷ０）に接続され、１つの仮想サーバＮＯＤＥ２が物理サーバ（Machine１）のハイパーバイザ４０２内の仮想スイッチ（Ｖｉｒｔｕａｌ  ＳＷ１）に接続された例を示す。そして、２つの仮想スイッチ（Ｖｉｒｔｕａｌ  ＳＷ０とＶｉｒｔｕａｌ  ＳＷ１）がハイパーバイザ４０２で稼動するソフトウェアルータで構成される仮想ルータ（Ｖｉｒｔｕａｌ  Ｒｏｕｔｅｒ０）に接続される。このような構成の場合、仮想サーバの接続先を示す構成情報７０１Ａ（８０１Ａ、９０１Ａ）は、図５Ｂのように表現される。図５Ｂでは、仮想的な計算機資源の名称７１１と、接続先の名称７１２からひとつのエントリが構成される。なお、ひとつの物理計算機内の仮想的な計算機資源には、少なくとも、ノードと仮想スイッチが含まれればよい。
【００５０】
また、図６Ａは物理サーバ２０２と物理的なネットワーク接続の関係を示し、２つの物理サーバ（Machine０、１）がスイッチ（ＳＷ１）２０４に接続され、１つの物理サーバ（Machine２）がスイッチ（ＳＷ１）に接続され、２つのスイッチ（ＳＷ０、１）がルータ（Router０）２０３に接続された例を示す。そして、物理サーバ（Machine０、１）の種別が「Ａ」であることを示し、物理サーバ（Machine２）の種別が「Ｂ」であることを示す。
【００５１】
図６Ｂは物理的な計算機資源の接続関係を示す構成情報７０１Ｂ（８０１Ｂ、９０１Ｂ）を示す。図６Ｂでは、物理的な計算機資源の名称７２１と、接続先の名称７２２と、計算機資源の種別７２３からひとつのエントリが構成される。なお、物理サーバ２０２の種別が同じ場合には、各サーバ同士は同じスペックであることを示している。このサーバ種別の詳細な情報は、後に述べるが図１９のような形で表現される。
【００５２】
図７Ａはどの仮想サーバがどの物理サーバに配置されているのかを示す物理的計算機資源と仮想的計算機資源の対応関係を示す図である。図のように物理サーバＭａｃｈｉｎｅ０に仮想サーバＮＯＤＥ０とＮＯＤＥ１が、物理サーバＭａｃｈｉｎｅ２に仮想サーバＮＯＤＥ２が配置されている。図示の例では、物理サーバ（Machine２）には仮想サーバが生成されていない例を示す。
【００５３】
図７Ｂは仮想サーバ４０３が何れの物理サーバ２０２に配置されているのかを示す物理的計算機資源と仮想的計算機資源の対応関係を示す構成情報７０１Ｃ（８０１Ｃ、９０１Ｃ）である。図７Ｂでは、仮想的な計算機資源の名称７３１と、当該仮想的な計算機資源を提供する物理的計算機資源の名称７３２からひとつのエントリが構成される。
【００５４】
図８および図９は、データセンタ１０３内の負荷情報７０２および計算サーバ１０２内の負荷情報８０２の内容を示す。負荷情報７０２と負荷情報８０２は同一である。負荷情報７０２、８０２は、図８に示す仮想的な計算機資源の負荷情報７０２Ａ、８０２Ａと、図９に示す物理的な計算機資源の負荷情報７０２Ｂ、８０２Ｂから構成される。
【００５５】
図８は各仮想サーバ４０３とそれぞれのＣＰＵ、メモリ、Ｉ／Ｏ、トラフィック負荷を示す仮想的な計算機資源の負荷情報７０２Ａ、８０２Ａである。負荷情報７０２Ａ、８０２Ａは、仮想サーバ４０３の名称を格納する仮想サーバ名７４１と、当該仮想サーバに割り当てたプロセッサ２２０の使用率を格納するＣＰＵ負荷７４２と、当該仮想サーバに割り当てたメモリ３１４の使用率を格納するメモリ負荷７４３と、当該仮想サーバがアクセスするストレージ装置（図示省略）の帯域使用率を格納するＩ／Ｏ負荷７４４と、当該仮想サーバがアクセスするネットワーク負荷を格納するトラフィック負荷７４５からひとつのエントリが構成される。なお、Ｉ／Ｏ負荷７４４及びトラフィック負荷７４５は、ハイパーバイザ４０２が各仮想サーバ４０３に割り当てた仮想デバイス（仮想ネットワークＩ／Ｆ等）の使用率を用いるものとする。なお、使用率は、所定時間内の平均値や最大値などから適宜用いることができる。
【００５６】
図９は各物理サーバ２０２とそれぞれのＣＰＵ、メモリ、Ｉ／Ｏ、トラフィック負荷を示す物理的な計算機資源の負荷情報７０２Ｂ、８０２Ｂである。
【００５７】
負荷情報７０２Ｂ、８０２Ｂは、物理サーバ２０２の名称を格納する物理サーバ名７５１と、当該物理サーバのプロセッサ２２０の使用率を格納するＣＰＵ負荷７５２と、当該物理サーバのメモリ３１４の使用率を格納するメモリ負荷７５３と、当該物理サーバがアクセスするストレージ装置（図示省略）の帯域使用率を格納するＩ／Ｏ負荷７５４と、当該物理サーバがアクセスするネットワークＩ／Ｆ４０１の使用率を格納するトラフィック負荷７５５からひとつのエントリが構成される。なお、各使用率は、所定時間内の平均値や最大値などから適宜用いることができる。また、トラフィック負荷７５５は、ハイパーバイザ４０２が取り扱う総トラフィック量も情報として保持してもよい。
【００５８】
図１０は計算サーバ１０２内の要求情報８０３およびクライアント１０１内の要求情報９０２上の内容を示す。なお、要求情報８０３と要求情報９０２は同一である。
【００５９】
要求情報８０３（９０２）は、図示のように、緊急度、上限工数、物理サーバ数上限情報、物理構成の変更可否、構成に関する要求といった項目８１１に対するそれぞれの要求内容８１２によって構成される。ここで、緊急度とは顧客が構成の算出にどれだけ時間をかけてよいかを表わす指標であり、構成の算出に時間をかけて良い場合には緊急度は低く、すぐに構成算出結果が必要な場合には緊急度は高く設定する。
【００６０】
緊急度は、例えば、０から１までの値をとり、１に近づくほど緊急度は高くなる。後に述べるが、緊急度は遺伝的アルゴリズム内の「適応度」と呼ばれる項目と関係している。また、緊急度は算出する構成の精度とのトレードオフとなり、緊急度を高く、つまり構成算出に時間をかけない場合は、算出する構成の妥当性が若干下がる。
【００６１】
上限工数（図中工数の上限）は、クライアント１０１が仮想計算機システムの構成変更に際して、許容する工数（変更数）である。ここで、仮想サーバ４０３の変更における１工数は仮想サーバ４０３の移動（マイグレーション）、仮想サーバ４０３の接続先の変更、仮想サーバ４０３の終了、仮想サーバ４０３の追加が該当する。また、物理サーバ２０２における１工数は物理サーバ２０２の接続先の変更、物理サーバ２０２の追加が該当する。
【００６２】
物理サーバ数上限は、物理サーバ２０２を種別（Ａ〜Ｃ）ごとに何台まで利用可能かを設定する。仮想サーバ数は物理サーバ数に依存するため、上限数の入力を求めない。また、物理構成の変更可否は、物理構成の変更を加味した上で仮想計算機システムの構成の算出を行うか否かを示す入力である。論理構成の変更や、仮想サーバ４０３の配置に関する変更は、データセンタ１０３内のコントローラ２０１によって変更することが可能である。しかしながら、物理構成を変更する場合にはユーザ（データセンタ１０３の管理者など）が直接変更を加える必要が出てくる。そのため、クライアント１０１は物理構成の変更を認めるか否かを設定することが出来る。
【００６３】
また、構成に関する要求は、物理構成の算出時に評価の指標として反映させることが出来ればどのような要求でも良いが、例えばマシンコストを重要視する、変更工数を出来る限り少なくしたい、といった項目を計算サーバであらかじめ用意すれば、クライアント１０１は管理者などの希望に応じて選択することが出来る。
【００６４】
図１１は、仮想計算機システムの構成要求時の手順の一例を示すシーケンス図である。構成要求は、クライアント１０１が仮想計算機システムの構成を計算サーバ１０２に演算させる指令である。
【００６５】
まず、クライアント１０１では、要求取得部６０４がシステム構成を取得するユーザ（または管理者）の要求（構成要求）および制約条件をＩ／Ｏ６０６を介して入力装置６１１から受け付け、メモリ６０７に要求情報９０２として格納する（Ｓ１）。
【００６６】
次にクライアント１０１の要求送信部６０５がメモリ６０７から要求情報９０２を読み出し、構成要求と制約条件を含む構成算出要求を、ネットワークＩ／Ｆ６０１およびネットワーク１０４を介して計算サーバ１０２に送信する（Ｓ２）。
【００６７】
構成要求と制約条件を含む構成算出要求は計算サーバ１０２内のネットワークＩ／Ｆ５０１を介して要求取得部５０２で受信する。要求取得部５０２は受信した構成要求／制約条件を要求情報８０３としてメモリ５０４に格納し（Ｓ３）、構成／負荷情報取得部５０３に構成及び負荷情報取得要求を送る。構成及び負荷情報取得要求を受け取った構成／負荷情報取得部５０３は、ネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、データセンタ１０３内のコントローラ２０１へ構成／負荷情報取得要求を送信する（Ｓ４）。
【００６８】
コントローラ２０１内の構成／負荷情報取得部３０３が構成／負荷情報取得要求を受け取ると、構成／負荷情報取得部３０３はネットワークＩ／Ｆ３０１を介して全ての物理サーバ２０２のハイパーバイザ４０２へ、各仮想サーバ４０３および各物理サーバ２０２の構成情報と負荷情報の送信命令を出力する（Ｓ５）。
【００６９】
各ハイパーバイザ４０２は、構成情報と負荷情報の送信命令を受信すると、各仮想サーバ４０３及び物理サーバ２０２の構成情報と、負荷の測定結果（負荷情報）とを取得してコントローラ２０１へ応答する（Ｓ６）。
【００７０】
コントローラ２０１は、ハイパーバイザ４０２から受信した構成情報及び負荷測定結果を構成情報７０１、負荷情報７０２としてメモリ３０４へ格納する。メモリ３０４に格納された負荷情報７０２に加え、メモリ３０４上に存在する、構成情報７０１をネットワークＩ／Ｆ３０１を介して、計算サーバ１０２へ送信する（Ｓ７）。
【００７１】
仮想計算機システムにおける仮想サーバ４０３の構成情報と、物理サーバ２０２の構成情報と、仮想計算機システムの定義情報および各仮想サーバ４０３と各物理サーバ２０２の負荷情報がネットワークＩ／Ｆ５０１で受信されると、構成／負荷情報取得部５０３はメモリ５０４に受信した情報を構成情報８０１および負荷情報８０２として格納し、構成算出部５０５に構成算出要求を送信する。そして構成算出要求を受け取った構成算出部５０５は、メモリ５０４内の構成情報８０１、負荷情報８０２および要求情報８０３を元に後述するように構成を算出する。そして、計算サーバ１０２は、算出した構成情報をクライアント１０１に出力する（Ｓ８）。
【００７２】
なお、ステップＳ８以降の処理は、物理構成の変更の有無に応じて図２８または図２９のシーケンス図となり、物理構成の変更がある場合には図２８のシーケンス図で処理が行われ、物理構成の変更が無い場合には、図２９のシーケンス図で論理構成の変更が行われる。
【００７３】
図１２は構成算出部５０５で行われる遺伝的アルゴリズムを用いた構成算出処理の一例を示すフローチャートである。
【００７４】
遺伝的アルゴリズムは生物の遺伝メカニズムを模倣した学習アルゴリズムであり、選択、交叉、突然変異という遺伝子操作によって解を導く。遺伝的アルゴリズムを用いた仮想計算機システムの構成情報の算出方法として、まず解候補となる初期集団を複数生成し、それぞれの個体（構成）が要求情報８０３を満たすものであるかを評価する。
【００７５】
次に、初期集団を評価した結果、要求情報８０３を満たす個体が存在した場合には、遺伝的アルゴリズムを終了する。一方、初期集団を評価した結果、要求情報８０３を満たす個体が存在しなかった場合には、選択、交叉、突然変異という遺伝子操作を行い、再びそれぞれの個体を評価する。構成算出部５０５では、上記サイクルを、物理的な構成パターンと論理的な構成のパターンについてそれぞれ実施して、要求情報８０３を満たす個体（構成のパターン）が現れるまで繰り返す。
【００７６】
遺伝的アルゴリズムでは、各個体を遺伝子という形で表わす。遺伝子の表現方法は、遺伝子操作に必要な情報を表現できる形であれば特に制限はないが、仮想計算機システムの物理構成を表わす遺伝子として、例えば図１４に表わしたような数列で表現できる。
【００７７】
図１４は、仮想計算機システムの物理的な構成パターンを示す遺伝子を作成する手順の一例を示す図である。
【００７８】
計算機システムの物理構成を表わす遺伝子配列の作成方法として、まず、仮想計算機システムの物理構成を入力し（Ｓ３１）、それぞれの装置（物理的計算機資源）の接続関係を表の形にし、繋がっている場合には自身の種別（サーバ種別）番号を設定し、繋がっていない場合には０を設定する（Ｓ３２）。
【００７９】
図１４の例では、物理サーバＳｖ１はスイッチＳ１に接続され、物理サーバＳｖ２はスイッチＳ２に接続される。そして、スイッチＳ１、Ｓ２はそれぞれルータＲに接続され、ルータＲには入力＝Ｉが接続される。
【００８０】
ステップＳ３２では、物理サーバＳｖ１、Ｓｖ２、スイッチＳ１、Ｓ２、ルータＲ、入力＝Ｉの順でそれぞれ行方向、列方向に配置した表を形成する。そして、種別番号は、物理サーバ＝「１」、スイッチ＝「２」、ルータ＝３とする。まず、物理サーバＳｖ１の行では、物理サーバＳｖ１はスイッチＳ１に接続されているので、スイッチＳ１の列に当該物理サーバの種別番号＝「１」を設定し、他の列には「０」を設定する。これにより、物理サーバＳｖ１の行は、「００１０００」となる。同様に、物理サーバＳｖ２はスイッチＳ２に接続されているので、スイッチＳ２の列に当該物理サーバの種別番号＝「１」を設定し、他の列には「０」を設定する。これにより、物理サーバＳｖ２の行は、「０００１００」となる。同様に、スイッチＳ１は、物理サーバＳｖ１とルータＲに接続されているので、物理サーバＳｖ１の列には物理サーバの種別番号＝「１」を設定し、ルータＲの列にはスイッチの種別番号＝「２」を設定する。これにより、スイッチＳ１の行は、「１０００２０」となる。スイッチＳ２、ルータＲ、入力Ｉも同様に設定する。これにより、計算機システムの構成パターンは、構成要素の組み合わせを示す数列で表現され、この数列を構成パターンに対応する遺伝子のパターンとして扱うことができる。
【００８１】
次に、ステップＳ３３では、表の行と列の内容は、それぞれの要素が対称の形になるため、構成を表現するために必要な情報は表の半分（右上もしくは左下）となる。図示の例では、右上の半分の情報を用いて、他を削除する。
【００８２】
さらに、装置自身が繋がるという表現は必要ないため、表の半分からさらにもう一列情報を省くことが出来る（Ｓ３４）。つまり、行と列の装置が同一のカラムを削除する。
【００８３】
次に、「１．物理サーバ同士は接続されない、２．スイッチ同士は接続されない、３．物理サーバはスイッチを介して物理ルータに接続される（物理サーバは直接ルータに接続されない）、４、Ｉｎｐｕｔに接続するのはルータのみ」という制約を付け加えると、表の中で表現する必要のない部分をさらに削ることが出来る（Ｓ３５）。
【００８４】
ステップＳ３５の表から、これら必要な情報だけ取り出し、左上のカラムから右下のカラムへ向かって順次並べた値が遺伝子配列となる（Ｓ３６）。図示の例では、「１００１２２３」となる。
【００８５】
以上の手順によって、遺伝子配列は０以上の値を取り、０の値は該当装置と繋がっていないということを示し、１以上の値は該当装置と繋がっているということを表す。また、値が１以上の数字の大きさで、装置の種別を知ることが出来る。ここで、上述のステップＳ３５で適用した制約は対象とする仮想システムに依存するため、自由度の高いシステムに適用する場合には制約による表現の削減を行わずに、ステップＳ３４の表を遺伝子表現とすればよい。
【００８６】
しかしながら、対象とする仮想計算機システムにとって表現する必要のない情報が存在するならば、遺伝子の長さを短くするべきである。これは計算サーバ１０２における計算量の削減にもつながる。
【００８７】
また、論理構成を表わす遺伝子として、例えば図１５に表わしたような数列で表現できる。図１５は、仮想計算機システムの物理構成を示す遺伝子を作成する手順の一例を示す図である。
【００８８】
計算機システムの論地構成を表わす遺伝子配列の作成方法として、まず、仮想計算機システムの論理構成を入力し（Ｓ４１）、それぞれの装置（論理的計算機資源）の接続関係を表の形にし、繋がっている場合には自身の装置種別に応じた装置番号を設定し、繋がっていない場合には０を設定する（Ｓ４２）。
【００８９】
図１５の例では、Ｍａｃｈｉｎｅ１の仮想サーバＮＯＤＥ１（Ｎ１）、ＮＯＤＥ２（Ｎ２）が、Ｍａｃｈｉｎｅ３の仮想スイッチＳ１に接続され、Ｍａｃｈｉｎｅ２の仮想サーバＮＯＤＥ３（Ｎ３）、ＮＯＤＥ４（Ｎ４）はＭａｃｈｉｎｅ３の仮想スイッチＳ２に接続される。そして、仮想スイッチＳ１、Ｓ２はそれぞれＭａｃｈｉｎｅ４の仮想ルータＲに接続され、仮想ルータＲには入力Ｉが接続される。
【００９０】
ステップＳ４２では、仮想サーバＮＯＤＥ１〜４、仮想スイッチＳ１、Ｓ２、仮想ルータＲ、入力Ｉの順でそれぞれ行方向、列方向に配置した表を形成する。そして、装置番号は、Ｍａｃｈｉｎｅ１＝「１」、Ｍａｃｈｉｎｅ２＝「２」、Ｍａｃｈｉｎｅ３＝３、Ｍａｃｈｉｎｅ４＝４とする。まず、仮想サーバＮ１の行では、仮想サーバＮ１は仮想スイッチＳ１に接続されているので、スイッチＳ１の列に当該仮想サーバの装置番号＝「１」を設定し、他の列には「０」を設定する。これにより、仮想サーバＮ１の行は、「００００１０００」となる。同様に、仮想サーバＮ３は仮想スイッチＳ２に接続されているので、仮想スイッチＳ２の列に当該仮想サーバＮ３の装置番号＝「２」を設定し、他の列には「０」を設定する。これにより、仮想サーバＮ３の行は、「０００００２００」となる。同様に、仮想スイッチＳ１は、仮想サーバＮ１と仮想ルータＲに接続されているので、仮想サーバＮ１の列には仮想サーバＮ１の装置番号＝「１」を設定し、仮想ルータＲの列には仮想スイッチの装置番号＝「３」を設定する。これにより、仮想スイッチＳ１の行は、「１１００００３０」となる。仮想スイッチＳ２、仮想ルータＲ、入力Ｉも同様に設定する。これにより、仮想計算機システムの論理的な構成パターンは、仮想的な構成要素の組み合わせを示す数列で表現され、この数列を構成パターンに対応する遺伝子のパターンとして扱うことができる。
【００９１】
次に、ステップＳ４３では、表の行と列の内容は、それぞれの要素が対称の形になるため、構成を表現するために必要な情報は表の半分（右上もしくは左下）となる。図示の例では、右上の半分の情報を用いて、他を削除する。
【００９２】
さらに、装置自身が繋がるという表現は必要ないため、表の半分からさらにもう一列情報を省くことが出来る（Ｓ４４）。つまり、行と列の要素が同一のカラムを削除する。
【００９３】
次に、「１．仮想サーバ同士は接続されない、２．仮想スイッチ同士は接続されない、３．仮想サーバは仮想スイッチを介して仮想ルータに接続される（仮想サーバは直接仮想ルータに接続されない）、４、Ｉｎｐｕｔに接続するのは仮想ルータのみ」という制約を付け加えると、表の中で表現する必要のない部分をさらに削ることが出来る（Ｓ４５）。
【００９４】
ステップＳ４５の表から、これら必要な情報だけ取り出し、左上のカラムから右下のカラムへ向かって順次並べた値が遺伝子配列となる（Ｓ４６）。図示の例では、「１０１０１０２０２３３４」となる。
【００９５】
以上の手順によって、論理構成についても遺伝子配列は０以上の値を取り、０の値は該当要素と繋がっていないということを示し、１以上の値は該当要素と繋がっているということを表す。また、値が１以上の数字の大きさで、装置の種別を知ることが出来る。ここで、上述のステップＳ３５で適用した制約は対象とする仮想システムに依存するため、自由度の高いシステムに適用する場合には制約による表現の削減を行わずに、ステップＳ４４の表を遺伝子表現とすればよい。
【００９６】
しかしながら、対象とする仮想計算機システムにとって表現する必要のない情報が存在するならば、遺伝子の長さを短くするべきである。これは計算サーバ１０２における計算量の削減にもつながる。
【００９７】
物理構成と論理構成を同時に表現する遺伝子一つに情報をまとめても良いが、要求情報８０３によっては、物理構成の変更を禁止する場合が存在する。その場合、物理構成と論理構成で遺伝子を分けておくことによって、論理構成を表わした遺伝子を操作するだけでよくなるため、計算量を減らすことが可能となる。また、遺伝子の複雑化も防ぐことが出来る。
【００９８】
ここで、上記図１４および図１５の遺伝子表現では、サーバ種別や装置種別ごとの台数を表わすことが出来ないほか、サーバ台数によって遺伝子の長さが変化するため、遺伝子操作が困難である。そこで、本発明ではサーバ種別または装置種別ごとの台数が同一となる遺伝子をクラスタというまとまりで表現し、クラスタ単位で遺伝子操作を行う。つまり、クラスタは遺伝子を示す数列の長さが等しい構成パターンの集合となる。
【００９９】
図１６、図１７は、物理構成を表わす遺伝子、および論理構成を表わす遺伝子のクラスタを表現したものである。なお、図１６は、物理構成を表わす遺伝子のクラスタテーブルを示す。図１７は、論理構成を表わす遺伝子のクラスタテーブルを示す。
【０１００】
各クラスタテーブルは、入力された構成（物理構成と論理構成）を基準に構成算出部５０５によって生成され、各クラスタのサーバ種別または装置種別ごとの台数は図１６中の追加マシン種別、図１７中の追加ＶＭ種別を元に算出することができ、また各クラスタが保持している遺伝子の数および遺伝子情報を持つ。クラスタは、図１６および図１７のような形でメモリ５０４上に格納され、遺伝的アルゴリズム適用中、必要に応じて随時書き換えられる。クラスタ内は遺伝子長が全て同一のため、遺伝子操作を自由に行うことが可能となる。
【０１０１】
図１６において、物理クラスタテーブル８５１は、クラスタの識別子を格納するクラスタ番号８５１１と、追加する物理装置の種別を格納する追加マシン種別８５１２と、テーブル内の遺伝子の数を格納する遺伝子の数８５１３と、物理構成を示す遺伝子を格納する遺伝子８５１４からひとつのエントリが構成される。
【０１０２】
図示の例では、クラスタ番号８５１１＝０が４台の物理サーバ２０２の構成例を示す遺伝子８５１４を格納している。また、クラスタ番号８５１１＝１は種別がＡの物理サーバ２０２を追加する場合の遺伝子８５１４を格納している。クラスタ番号８５１１＝２は種別がＡの物理サーバ２０２を追加する場合の遺伝子８５１４を格納している。
【０１０３】
図１７において、論理クラスタテーブル８５２は、クラスタの識別子を格納するクラスタ番号８５２１と、追加する要素の種別を格納する追加ＶＭ種別８５２２と、テーブル内の遺伝子の数を格納する遺伝子の数８５２３と、物理構成を示す遺伝子を格納する遺伝子８５２４からひとつのエントリが構成される。
【０１０４】
図示の例では、クラスタ番号８５２１＝０が６台の仮想サーバ４０３の構成例を示す遺伝子を格納している。また、クラスタ番号８５１１＝１は仮想サーバ４０３を１つ追加する場合の遺伝子８５２４を格納している。クラスタ番号８５２１＝２は２つの仮想サーバを追加する場合の遺伝子８５２４を格納している。
【０１０５】
＜処理の概要＞
図１２は仮想計算機システムの物理構成と、論理構成及び仮想サーバの配置を考慮して計算サーバ１０２で行われる構成の算出処理の一例を示すフローチャートである。
【０１０６】
ネットワークＩ／Ｆ５０１を介して要求取得部５０２と構成／負荷情報取得部５０３により収集された要求情報および構成／負荷情報はメモリ５０４を介して構成算出部５０５に送られ、構成算出部５０５はクライアント１０１から構成を算出する指令を受信すると図１２のフローチャートに従って処理を行う。本フローチャートは物理的な構成パターンを算出するループ（Ｓ１２、Ｓ１３、Ｓ２１〜Ｓ２５）と、論理的な構成パターン及び仮想サーバの配置を算出するループ部分（Ｓ１４〜Ｓ２０）とから構成される。
【０１０７】
遺伝的アルゴリズムを適用する処理の例としては、物理的な構成を算出する際の遺伝的アルゴリズムに、論理構成及びサーバ配置を算出する遺伝的アルゴリズムを入れ子にした一例を示す。
【０１０８】
計算サーバ１０２は、構成の算出処理を実行するにあたり、構成算出部５０５は要求情報８０３を参照し、システム定義情報８０４内の要求／制約反映テーブル１００２へ反映する。要求／制約反映テーブル１００２については後述する。また、計算サーバ１０２の構成算出部５０５は、構成の算出処理を開始する以前に、クライアント１０１から要求情報８０３に加えて算出する構成に関する情報９２０を受信しておく。構成算出部５０５は受信した要求／制約反映テーブル１００２の緊急度ａを取得し、図１８で示すように適応度の閾値を求めておく。なお、緊急度ａは演算精度の高低（演算時間の長短）を決定するパラメータで０〜１の値で表現される。
【０１０９】
次に、構成算出部５０５は図１２のステップＳ１１で、各仮想サーバ４０３の負荷を推定する。この負荷の推定は、後述する図２０Ｃで示すように、単位トラフィック当たりの仮想サーバ２０２の負荷を基本負荷９１０として求める。そして、構成算出部５０５は取得されたトラフィック量９２３を処理する際の仮想サーバ４０３の想定負荷９３０と、各仮想サーバ４０３を提供する物理サーバ２０２の想定負荷９４０とを演算する。そして、構成算出部５０５は、想定負荷と所定の既定値を比較して仮想サーバ４０３と物理サーバ２０２のそれぞれについて、負荷の判定結果９５０を演算する。なお、処理トラフィック量９２３は負荷情報を取得した際に測定したトラフィック量である。
【０１１０】
次に、ステップＳ１２で、構成算出部５０５は、物理構成の初期パターンをクラスタ毎の遺伝子のパターンで生成する。物理パターンを生成する方法としては、例えば乱数の発生によってクラスタ毎の物理構成のパターンを生成することができる。そして、発生した物理構成のパターンを上述した処理によって遺伝子に変換する。
【０１１１】
次に、ステップＳ１３（修正部）で、構成算出部５０５は、ステップＳ１２で生成された物理構成の遺伝子がシステム定義情報８０４の制約条件に反していた場合には、物理構成の遺伝子が制約条件を満たすように修正する。この修正は、システム定義情報８０４の致死フィルタ１００３を制約条件として用いる例を示す。致死フィルタ１００３には、後述するように、予め設定した計算機システムの定義に反する遺伝子を判定するための条件と、計算機システムの定義に反した遺伝子を修正する内容が格納される。構成算出部５０５は、生成した物理構成の遺伝子のそれぞれについて、定義に合致しているか否かを判定し、定義に反している物理構成の遺伝子があれば修正内容に従って遺伝子を修正する。
【０１１２】
次に、ステップＳ１４で、構成算出部５０５は、論理構成の初期パターンをクラスタ毎の遺伝子のパターンで生成する。論理構成を生成する方法としては、例えば乱数の発生によって各クラスタ毎の論理構成のパターンを生成することができる。そして、発生した論理構成のパターンを上述した処理によって遺伝子に変換する。
【０１１３】
次に、ステップＳ１５（修正部）で、構成算出部５０５は、ステップＳ１４で生成された論理構成の遺伝子がシステム定義情報８０４の制約条件に反していた場合には、遺伝子が制約条件を満たすように修正する。この修正は、物理構成と同様に、システム定義情報８０４の致死フィルタ１００３を制約条件として用いる例を示す。構成算出部５０５は、生成した論理構成の遺伝子のそれぞれについて、定義に合致しているか否かを判定し、定義に反している遺伝子があれば修正内容に従って遺伝子を修正する。
【０１１４】
ステップＳ１６（適応度演算部）では、構成算出部５０５が、各クラスタのそれぞれの論理構成に対して適応度を後述する（１）式から算出する。そして、構成算出部５０５は各論理構成の適応度と所定の閾値を比較して、閾値を超える適応度の論理構成があるか否かを判定する。何れかのクラスタに閾値を越える適応度を有する論理構成が存在する場合には、当該論理構成を解としてステップＳ２１（適応度演算部）へ進む。一方、閾値を越える適応度が無い場合にはステップＳ１７に進む。
【０１１５】
予め設定した閾値以上の適応度が存在しなかった場合には、構成算出部５０５がステップＳ１７〜Ｓ１９（構成変更部）で各論理構成の遺伝子を操作する。ここで、適応度を判定する閾値は、図１８の要求／制約反映テーブル１００２に設定された適応度の閾値を用いる。
【０１１６】
まず、図１２のステップＳ１７では、構成算出部５０５が論理構成の遺伝子に対して選択と呼ばれる遺伝子操作を実行する。構成算出部５０５が実行する選択処理は、適応度が所定値未満の論理構成の遺伝子を消去し、適応度が高い（所定値以上）の個体（構成）を次の世代へ多く残すための操作である。選択処理の一例としては、ルーレット選択、ランキング選択、トーナメント選択、エリート選択等の公知または周知の手法を用いることができる。ここで、遺伝子としては、図１４、図１５のような表現を用いた場合で、かつ図１６、図１７に表わしたようにクラスタとして遺伝子を群として扱う。
【０１１７】
ステップＳ１８では、構成算出部５０５はこれら複数のクラスタの論理構成の遺伝子群について調整をそれぞれ行う。構成算出部５０５が実行する各クラスタの調整については図２４で後述する。
【０１１８】
ステップＳ１９では、構成算出部５０５は選択を行った複数のクラスタの論理構成の遺伝子群について交叉を実行する。交叉は、上記選択によって選出された遺伝子の中から２つの遺伝子を取り出し、遺伝子同士を掛け合わせる工程になっている。交叉の手法としては、一点交叉、二点交叉、多点交叉、一様交叉等の周知または公知の手法を用いることができる。
【０１１９】
ただし、図８、図９に表わされた遺伝子表現を用いる場合、仮想サーバ数および物理サーバ数が異なる遺伝子同士は遺伝子長が異なる。このため、交叉時にはクラスタ内の遺伝子同士で交叉を行い、サーバ種別の等しい遺伝子同士を交叉することを可能とする。
【０１２０】
ステップＳ２０では、構成算出部５０５は交叉を行った複数のクラスタの遺伝子群について遺伝子操作の最後の工程となる突然変異を行う。突然変異の遺伝子操作は、交叉まで遺伝子操作が済んだ個体（遺伝子）に対して、予め設定された低い確率で、遺伝子表現のビット列の一部の情報を変更する操作になっている。これにより、算出する個体（遺伝子）が局所的最適解に陥ることを防ぐことが出来る。
【０１２１】
上記ステップＳ１７〜Ｓ２０で遺伝子操作の工程をすべて終えた後、構成算出部５０５はステップＳ１５の処理に戻る。ステップＳ１５では、構成算出部５０５は、交叉、突然変異によって変更された論理構成の遺伝子表現が要求情報８０３内の制約条件に反していた場合には、遺伝子表現が制約条件を満たすものになるよう致死フィルタ１００３によって修正を加える。これらの過程を経た後、再び各構成の適応度の判定が行われる（図１２ステップＳ１６）。
【０１２２】
次に、上記ステップＳ１６の判定で適応度が閾値を超える論理構成が存在する場合には、ステップＳ２１に進んで構成算出部５０５が複数のクラスタの物理構成のそれぞれについて適応度を算出する。物理構成の適応度の算出については後述する。構成算出部５０５は複数のクラスタの物理構成の適応度を所定の閾値と比較して、閾値を超える適応度を持つ物理構成があるか否かを判定する。ここで、適応度を判定する閾値は、上記ステップＳ１６の判定と同様に、図１８の要求／制約反映テーブル１００２に設定された適応度の閾値を用いる。
【０１２３】
何れかのクラスタに閾値を越える適応度を有する物理構成が存在する場合には、構成算出部５０５が当該物理構成を解としてステップＳ２６へ進む。一方、閾値を越える適応度が無い場合にはステップＳ２２に進む。ステップＳ２６では、構成算出部５０５が閾値をこえる適応度の論理構成と物理構成を出力して処理を終了する。
【０１２４】
予め設定した閾値以上の適応度が存在しなかった場合には、構成算出部５０５がステップＳ２２〜Ｓ２５（構成変更部）で各論理構成の遺伝子を操作する。
【０１２５】
まず、ステップＳ２２では、構成算出部５０５が物理構成の遺伝子に対して選択と呼ばれる遺伝子操作を実行する。構成算出部５０５が実行する選択処理は、適応度が所定値未満の物理構成の遺伝子を消去し、適応度が高い（所定値以上）の個体（構成）を次の世代へ多く残すための操作である。選択処理の一例としては、ルーレット選択、ランキング選択、トーナメント選択、エリート選択等の公知または周知の手法を用いることができる。ここで、遺伝子としては、上記論理構成と同様であり、図１４、図１５のような表現を用いた場合で、かつ図１６、図１７に表わしたようにクラスタとして遺伝子を群として扱う。
【０１２６】
ステップＳ２３では、構成算出部５０５はこれら複数のクラスタの物理構成の遺伝子群について調整をそれぞれ行う。構成算出部５０５が実行する各クラスタの調整については図２４で後述する。
【０１２７】
ステップＳ２４では、構成算出部５０５は選択を行った複数のクラスタの物理構成の遺伝子群について交叉を実行する。交叉は、上記選択によって選出された遺伝子の中から２つの遺伝子を取り出し、遺伝子同士を掛け合わせる工程になっている。交叉の手法としては、一点交叉、二点交叉、多点交叉、一様交叉等の周知または公知の手法を用いることができる。
【０１２８】
ただし、図８、図９に表わされた遺伝子表現を用いる場合、仮想サーバ数および物理サーバ数が異なる遺伝子同士は遺伝子長が異なる。このため、交叉時にはクラスタ内の遺伝子同士で交叉を行い、サーバ種別の等しい遺伝子同士を交叉することを可能とする。
【０１２９】
ステップＳ２５では、構成算出部５０５は交叉を行った複数のクラスタの物理構成の遺伝子群について遺伝子操作の最後の工程となる突然変異を行う。突然変異の遺伝子操作は、交叉まで遺伝子操作が済んだ個体（遺伝子）に対して、予め設定された低い確率で、遺伝子表現のビット列の一部の情報を変更する操作になっている。これにより、算出する個体（遺伝子）が局所的最適解に陥ることを防ぐことが出来る。
【０１３０】
上記ステップＳ２２〜Ｓ２５で遺伝子操作の工程をすべて終えた後、構成算出部５０５はステップＳ１３の処理に戻る。ステップＳ１３では、構成算出部５０５は、交叉、突然変異によって変更された物理構成の遺伝子表現が要求情報８０３内の制約条件に反していた場合には、遺伝子表現が制約条件を満たすものになるよう致死フィルタ１００３によって修正を加える。これらの過程を経た後、再びステップＳ１４〜Ｓ１６を経て、ステップＳ２１以降の処理が繰り返される。
【０１３１】
以上の処理によって、構成算出部５０５は適応度が閾値を超える、論理構成と物理構成の組み合わせを出力する。
【０１３２】
なお、上記の例では閾値を要求／制約反映テーブル１００２の適応度の閾値（１−ａ4／２）として、緊急度ａ（ただし０≦ａ≦１）が高くなれば遺伝子操作の量が増大して演算時間が長くなり、緊急度ａが低ければ遺伝子操作の量が減少して演算時間は短くなる。なお、適応度の閾値は、緊急度ａから独立した閾値を別途設定するようにしてもよい。
【０１３３】
以上のように、各構成の適応度の算出を行った結果、適応度の閾値を超える構成が存在した場合には、その構成を解として出力し（図１２ステップＳ２６）、終了する。
【０１３４】
閾値を超える適応度となる構成が存在しなかった場合、論理構成／サーバ配置算出時の遺伝子操作と同様に、物理構成の個体に対して選択、交叉、突然変異といった処理を行った後（図１２ステップＳ２２−２５）、再び論理構成／サーバ配置算出処理に移る。ただし、論理構成の遺伝子操作時と違い、物理構成の遺伝子操作時にはクラスタの操作時に全遺伝子内の混み合っている物理サーバの総数が一定数を超えているものの割合を求める。その結果、物理サーバの混雑に応じたサーバ台数を探索することが可能となる。
【０１３５】
＜要求／制約反映テーブル＞
図１８は要求／制約反映テーブル１００２の内容の一例を示す。要求／制約反映テーブル１００２は上記図１２の処理で使用される情報を格納する。
【０１３６】
要求／制約反映テーブル１００２は、要求情報８０３（９０２）に設定された緊急度、上限工数、物理サーバ数上限情報、物理構成の変更可否、構成に関する要求といった要求／制約項目１００２１と、これらの要求／制約項目に対するそれぞれの要求内容１００２２と、各要求内容１００２２のうち遺伝的アルゴリズム（図中ＧＡ：Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）に反映する情報１００２３が格納される。ＧＡに反映する情報１００２３は、クライアント１０１から予め設定したものとする。ＧＡに反映する情報１００２３としては、適応度の閾値や重み付けの係数などが設定される。
【０１３７】
要求／制約反映テーブル１００２は、要求情報８０３によって表現されている要求内容を構成算出時の変数や手順等に反映するその方法を示している。要求／制約反映テーブル１００２の通りに構成算出手順を変化させることで、クライアント１０１を操作するユーザからの要求を構成算出に活かすことが出来る。
【０１３８】
＜負荷の測定＞
図１２の処理において、まず、計算サーバ１０２の構成算出部５０５は、各仮想サーバ４０３毎に単位トラフィック（１０００トラフィック）を処理する際の負荷を推定する（図１２ステップＳ１１）。構成算出部５０５は、図８、図９に示す負荷情報を読み込んで、単位トラフィック（１０００トラフィック）を処理する際に各仮想サーバ４０３にかかる負荷を演算する。
【０１３９】
仮想サーバ４０３の負荷は、構成算出部５０５が、図８から仮想サーバ４０３の負荷情報を取得し、図５Ｂの構成情報７０１Ａを取得して、図２０Ａに示す仮想サーバの負荷情報を生成する。図２０Ａの仮想サーバの負荷情報は、図８に示した負荷情報８０２Ａの仮想サーバ７４１〜トラフィック負荷７４５に、図５Ｂの構成情報８０１Ａの接続先７１２と、図７Ｂの物理サーバ７３２を配置先とし、さらに、処理トラフィック量９００を結合したものである。ここで、処理トラフィック量は、各仮想サーバ７０３毎に処理したトラフィック量を仮想サーバ４０３から計算サーバ１０２が取得した値である。なお、図２０Ａの仮想サーバの負荷情報は、計算サーバ１０２のメモリ５０４上に保持しても良い。
【０１４０】
また、物理サーバ２０２の負荷は、図９から物理サーバ２０２の負荷情報を取得し、図６Ｂの構成情報７０１Ｂを取得して、図２０Ｂに示す物理サーバの負荷情報を生成する。
【０１４１】
図２０Ｂは、図９に示した負荷情報８０２Ｂの物理サーバ７５１〜トラフィック負荷７５５に、図６Ｂの構成情報８０１Ｂの接続先７２２とを結合したものである。なお、図２０Ｂの物理サーバの負荷情報は、計算サーバ１０２のメモリ５０４上に保持しても良い。
【０１４２】
そして、構成算出部５０５は、図１９に示すサーバ情報と図２０Ａに示す仮想サーバの負荷情報と図２０Ｂに示す物理サーバの負荷情報から図２０Ｃに示す単位トラフィック（１０００）当たりの負荷の推定値を演算して基本負荷９１０のテーブルに格納する。基本負荷９１０は、仮想サーバ４０３の名称を格納する仮想サーバ９１１と、単位トラフィックを処理するために当該仮想サーバに割り当てたプロセッサ２２０の使用率を格納するＣＰＵ負荷９１２と、単位トラフィックを処理するために当該仮想サーバに割り当てたメモリ３１４の使用率を格納するメモリ負荷９１３と、単位トラフィックを処理するために当該仮想サーバがアクセスするストレージ装置（図示省略）の帯域使用率を格納するＩ／Ｏ負荷９１４と、単位トラフィックを処理するために当該仮想サーバがアクセスするネットワーク負荷を格納するトラフィック負荷９１５からひとつのエントリが構成される。
【０１４３】
単位トラフィック（１０００）当たりの負荷推定値は、現在得られている各負荷９１２―９１５を、現在の処理トラフィック量で割ることで求める方法が、一般的に知られている。
【０１４４】
なお、上記負荷の推定に関して、システム定義情報８０４内のサーバ情報１００１を用いても良い。
【０１４５】
図１９にサーバ情報１００１の内容を示す。サーバ情報１００１は、サーバの種別を格納する物理サーバ１００１１と、遺伝子情報に設定する番号を格納する遺伝子番号１００１２と、プロセッサの性能に関する情報を格納するＣＰＵ性能１００１３と、メモリの性能に関する情報を格納するメモリ性能１００１４と、ストレージ装置などへのＩ／Ｏアクセスの性能に関する情報を格納するＩ／Ｏ性能１００１５と、ネットワークなどへのアクセスの性能に関する情報を格納するトラフィック性能１００１６と、実行可能な仮想サーバの最大値を格納する仮想サーバ上限１００１７と、物理サーバ２０２のコストに関する値を格納する１００１８とからひとつのエントリが構成される。
【０１４６】
ここで、性能に関する情報１００１３〜１００１６とコストに関する情報１００１８は、予め設定した基準となる物理サーバとの相対的な値が予め設定されたものである。その他の値も管理者などが予め設定した値である。
【０１４７】
サーバ情報１００１は基準とする物理サーバに対する性能の優劣を示す数値（比率）や、実行可能な仮想サーバの数、基準とする物理サーバに対するコストの比率、遺伝子表現で用いる番号等が予め設定されたテーブルである。
【０１４８】
性能やコストの優劣を比較する基準のサーバについては管理者などが適宜設定すればよく、基準のサーバから各サーバの性能やコストが相対的に表現出来てさえいればよい。基本負荷９１０の推定については公知または周知の手法を適宜採用することができる。
【０１４９】
ただし、図２０Ａ〜図２０Ｃで示すように計算サーバ１０２内のメモリ５０４に格納されている構成情報８０１と負荷情報８０２とシステム定義情報８０４内のサーバ情報１００１などの情報を入力として推定を行い、出力として各仮想サーバの基準のサーバ（各性能１．０扱い）で起動した際の単位トラフィック（１０００トラフィック）あたりの負荷量を出力するものであることが求められる。
【０１５０】
＜致死フィルタ＞
図２１は致死フィルタ１００３の例を示す。
【０１５１】
致死フィルタ１００３は、システムの定義に反する遺伝子を判定するための条件を格納する判定個所１００３１と、システムの定義に反する遺伝子を修正する内容を格納する修正方法１００３２の組から成る。ここでは判定個所とその修正手順を記述しているのみだが、フィルタとしてプログラムで記述しても良い。致死フィルタ１００３として外に定義することで、システム定義が変わった場合にもこのフィルタ部分を操作するだけで、致死とする遺伝子の種類を変えることができる。
【０１５２】
＜論理構成の適応度の演算＞
図１２のステップＳ１６で行われる論理構成の適応度の算出は、例えば、次式によって行われる。
【０１５３】
【数１】
0005773142.tif 000002
【０１５４】
ここで、上記（１）式の「ｇｏｏｄ＿ｃｈｅｍｉｓｔｒｙ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ」は、物理サーバ２０２と相性の良い仮想サーバ４０３の台数を表わす。また、「ｂａｄ＿ｃｈｅｍｉｓｔｒｙ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ」は物理サーバ２０２と相性の悪い仮想サーバ４０３の台数を表わす。
【０１５５】
ここで、本実施形態では物理サーバ２０２と仮想サーバ４０３の相性とは、仮想サーバ４０３の処理によって最も負荷がかかっている部分（例えばＣＰＵ、メモリ、ＩＯ、ＮＷ等）と物理サーバ２０２の得意な処理とが同一である仮想サーバ４０３の配置になっている場合に、相性が良いと定義する。物理サーバ２０２と仮想サーバ４０３の相性は、上述の単位トラフィックあたりの仮想サーバ４０３の基本負荷情報と、システム定義情報８０４内のサーバ情報１００１を参照することで得られる。
【０１５６】
例えば、図２０Ｃでは、Ｎｏｄｅ０の負荷が一番大きい項目はトラフィック負荷である。ここでサーバ情報１００１のトラフィック性能１００１６を参照するとトラフィック負荷に強いサーバは物理サーバＢであることが分かる。そのため、図２０Ｃに示された負荷状況では、Ｎｏｄｅ０は物理サーバＢに配置された場合、相性が良いと判断される。
【０１５７】
次に、上記（１）式の「ｃｏｎｇｅｓｔｉｏｎ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ」は負荷の高い仮想サーバ４０３の台数を表わし、「ｆｒｅｅ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ」は負荷の低い仮想サーバ４０３の台数を表わす。仮想サーバの負荷の高さは、単位トラフィックあたりの基本負荷と、算出した構成の仮想サーバの配置と、処理トラフィック量９００の概算およびサーバ情報１００１から求めることが出来る。
【０１５８】
図２２は仮想サーバ４０３の負荷の高さを求める手順を示している。まず、構成算出部５０５は、基準のサーバ（各性能（比）を１．０とする）で起動した際の単位トラフィックあたりの基本負荷９１０（図２２では１０００トラフィック単位）を演算し、算出する構成情報９２０を用いた場合の仮想サーバ４０３が処理するトラフィック量９２３に換算した場合の負荷を求める。なお、算出する構成情報９２０は、クライアント１０１等から予め設定された情報である。算出する構成情報９２０は、仮想サーバ４０３の名称を格納する仮想サーバ９２１と、当該仮想サーバを提供する物理サーバの識別子を格納する配置サーバ番号９２２と、処理トラフィック量９２３からひとつのエントリが構成される。
【０１５９】
図２２ではＮｏｄｅ０のＣＰＵ負荷を例に挙げる。まず、構成算出部５０５は、図２０Ｃの単位トラフィック当たりの基本負荷から、Ｎｏｄｅ０のＣＰＵ負荷を参照して「１２％」を取得する。次に、構成算出部５０５は、図２２の算出する構成に関する情報９２０を参照してＮｏｄｅ０で処理するトラフィック量＝１００００を取得する。構成算出部５０５は、Ｎｏｄｅ０が１０００トラフィックあたり１２％のＣＰＵ負荷を持つため、１００００トラフィックを処理する場合には１２０％のＣＰＵ負荷となることを算出する。
【０１６０】
次に、構成算出部５０５は図２２の算出する構成に関する情報９２０からＮｏｄｅ０を実行する物理サーバ２０２の識別子を示す配置サーバ番号から「１」を取得する。構成算出部５０５は配置サーバ番号＝「１」に対応する物理サーバ＝「Ａ」のＣＰＵ性能１００１３を参照してＣＰＵ性能＝「２．０」を取得する。
【０１６１】
構成算出部５０５は、ＣＰＵ性能１．０の場合では１００００トラフィックを処理するための計算上のＣＰＵ負荷が１２０％となるＮｏｄｅ０の想定負荷は、ＣＰＵ性能が２．０の物理サーバＡにＮｏｄｅ０を配置した場合ではＣＰＵ負荷の想定値が６０％になることを演算する。そして、演算結果を図２２中段の仮想サーバ想定負荷に格納する。構成算出部５０５は、物理サーバ２０２の想定負荷を、物理サーバ２０２内に配置された仮想サーバ４０３の想定負荷の平均値から演算することができる。構成算出部５０５は、ＣＰＵ負荷と同様に、メモリ負荷、Ｉ／Ｏ負荷、トラフィック負荷を演算し、図２２の仮想サーバ想定負荷９３０と物理サーバ想定負荷９４０を生成する。
【０１６２】
なお、仮想サーバ想定負荷９３０は、仮想サーバ４０３の名称を格納する仮想サーバ名９３１と、当該仮想サーバに割り当てたプロセッサ２２０の使用率の想定値を格納するＣＰＵ負荷９３２と、当該仮想サーバに割り当てたメモリ３１４の使用率の想定値を格納するメモリ負荷９３３と、当該仮想サーバがアクセスするストレージ装置（図示省略）の帯域使用率の想定値を格納するＩ／Ｏ負荷９３４と、当該仮想サーバがアクセスするネットワーク負荷の想定値を格納するトラフィック負荷９３５からひとつのエントリが構成される。
【０１６３】
また、物理サーバ想定負荷９４０は、物理サーバ２０２の名称を格納する物理サーバ名９４１と、当該物理サーバのプロセッサ２２０の使用率の想定値を格納するＣＰＵ負荷９４２と、当該物理サーバのメモリ３１４の使用率の想定値を格納するメモリ負荷９４３と、当該物理サーバがアクセスするストレージ装置（図示省略）の帯域使用率の想定値を格納するＩ／Ｏ負荷９４４と、当該物理サーバがアクセスするネットワークＩ／Ｆ４０１の使用率の想定値を格納するトラフィック負荷９４５からひとつのエントリが構成される。
【０１６４】
そして、構成算出部５０５は、仮想サーバ想定負荷９３０と物理サーバ想定負荷９４０が予め設定された既定値（例えば、９０％）を超えていた場合には、該当の仮想サーバ及び物理サーバの負荷の判定結果９５０をＣｏｎｇｅｓｔｉｏｎに設定し、予め設定された規定値を大きく下回っていた場合（例えば、２０％）にはｆｒｅｅと判定し、それ以外の場合にはＮｏｒｍａｌと判定して、ｃｏｎｇｅｓｔｉｏｎ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ、ｆｒｅｅ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅの数を算出する。なお、図２２において負荷の判定結果９５０は、仮想サーバ４０３と物理サーバ２０２のそれぞれについて判定結果を格納する。
【０１６５】
さらに、上記（１）式のａｌｌ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅは総仮想サーバ台数を表わし、ｍａｎ＿ｈｏｕｒは変更工数を表わす。変更工数は遺伝子同士を比較することで算出できる。
【０１６６】
図２３は構成算出部５０５が変更工数ｍａｎ＿ｈｏｕｒを求める手順を示す。図２３では、Ｎｏｄｅ１がＶｉｒｔｕａｌ  ＳＷ０に接続している場合の遺伝子「１０１００２２３３」と、Ｎｏｄｅ１がＶｉｒｔｕａｌ  ＳＷ１に接続している場合の遺伝子「１００１０２２３３」を比較しており、Ｎｏｄｅ１を示す情報である遺伝子の２番目と３番目の部分が異なっているため、変更工数を１とする。
【０１６７】
また、上記（１）式では、重みづけ変数として、Ａを仮想サーバの負荷に関するマイナス係数、Ｂを工数に対するマイナス係数、ａを負荷の大きな仮想サーバに対するマイナス係数、ｂを負荷の少ない仮想サーバに対するマイナス係数、さらに、ｐｏｓｉｔｉｏｎを配置問題係数、ｌｏｇｉｃａｌを論理構成係数とし、これらの係数はすべて０から１の間の値となるように「１０１００２２３３」設定する。
【０１６８】
ここで、重みづけ係数Ａ、Ｂ、ａ、ｂは収集された要求情報８０３および要求／制約反映テーブル１００２に基づき決定される。例えば、工数を出来る限り少なくしたい、といった要求があった場合には、要求／制約反映テーブル１００２の記述により、構成に対するマイナス係数であるＢは大きく設定される。変更工数が多くなる構成ほど、（１）式の関数の出力値が低くなり、解として算出されない。これにより、ユーザの要求を満たす構成を算出することが可能となる。
【０１６９】
また、要求情報８０３を満たすことができない個体（遺伝子）が算出された場合、該当遺伝子の適応度は報酬関数（１）を用いず、例えば適応度を−１するなどの対策を用いることで、要求を満たす個体算出が行いやすくなる。
【０１７０】
ここで、適応度の閾値は、図１８に示したように入力の一部である緊急度ａの値から計算される。例えば、図１８のように適応度の閾値の計算を行う場合、緊急度ａは０≦ａ≦１であるので、高ければ高いほど、つまり構成算出時間を短くしたい場合には適応度の閾値の値が下がり、構成算出部５０５が算出した構成に対して、要求がある程度満たされていればそれを解として出力することとなる。このため、構成算出部５０５は、計算時間を短縮することが可能となり、結果的に迅速に構成の算出結果を得ることが可能となる。
【０１７１】
一方、緊急度ａが低ければ、適応度の閾値の値が上がるため、構成算出部５０５が算出した構成に対する要求が厳しいものとなり、構成の算出に要する時間が長くなるが、適応度の閾値が高い要求を満たす構成が解として算出される。適応度の算出には図１８のような変換式を用いなくても良いが、緊急度が高ければ構成算出時間を短くできるようにする必要がある。
【０１７２】
＜クラスタの調整＞
図１２のステップＳ１８，Ｓ２３で行われるクラスタの調整は、具体的には、図２４に示されているようなフローチャートを構成算出部５０５が実行する。
【０１７３】
図２４では、構成算出部５０５は、まず、ステップＳ５１で、図１２のステップＳ１３、Ｓ１５と同様に致死フィルタ１００３を用いて制約条件を満たさない構成を修正する。そして、図１２のステップＳ１６と同様にクラスタ毎の適応度が閾値を超えている構成があるか否かを判定する（Ｓ５２）。適応度が閾値を超えている構成があればクラスタの調整を終了する。一方、適応度が閾値を超えている構成がなければ、ステップＳ５３に進む。
【０１７４】
ステップＳ５３で、構成算出部５０５はクラスタ毎に適応度の平均値を求め、その平均値が適応度の閾値を超えていないクラスタの中で、適応度の平均値が最も低いクラスタを特定する。適応度の平均値が閾値以下のクラスタが存在すればステップＳ５５５へ進み、そうでない場合にはステップＳ５４へ進む。
【０１７５】
ステップＳ５５では、適応度の平均値が最も低いクラスタは、サーバ種別ごとの台数がユーザの要求を満たさない可能性が最も高いクラスタであるため、構成算出部５０５は、当該クラスタ内の全遺伝子に対して混み合っている仮想サーバの総数が一定数を超えているものの割合を、Ｎｏｄｅ、Ｖｉｒｔｕａｌ  ＳＷ、Ｖｉｒｔｕａｌ  Ｒｏｕｔｅｒについてそれぞれ求める（図２４ステップＳ５）。
【０１７６】
これは、図２２で示した構成の評価時にｃｏｎｇｅｓｔｉｏｎ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅを求めた時と同様の手順（図２２）を行うことで演算することが出来る。
【０１７７】
ここで、混み合っている仮想サーバの総数の値が一定値を超える遺伝子の割合が多い場合は、構成算出部５０５は物理サーバ２０２の台数が不足していると判定する。
【０１７８】
不足していたサーバ種別を１つ増やしたときには、新しいクラスタを作成する（Ｓ５６）。適応度の平均値が最低となったクラスタは新しいクラスタに自身の遺伝子数の半分を与え、自身の遺伝子数を半減させる。ここで、構成算出部５０５は半減させる遺伝子は適応度の低いものから順に選択する。また、半減した自身の遺伝子数が規定未満となる場合には、新しいクラスタに全ての遺伝子数を与え、元となったクラスタは消滅する。
【０１７９】
クラスタ内の遺伝子数下限は自由に設定して良いものとするが、交叉を行う関係上、最低２つ以上の遺伝子を有する必要がある。また、適応度平均が最低となったクラスタが作った新しいクラスタのサーバ種別ごとの台数が同一となるものが存在した場合、該当クラスタの遺伝子数に自身の遺伝子数の半分、もしくは全てを追加する。新しく生成されたクラスタ、もしくは遺伝子数が追加されたクラスタは、追加された遺伝子分、新しい遺伝子を生成する。また、操作が行われなかったクラスタは、通常通りの選択作業を行う（Ｓ５７）。
【０１８０】
また、ステップＳ５３の平均適応度の判定時に、全てのクラスタが規定の適応度を満たしていた場合には、クラスタ操作は行わず、ステップＳ５４に進んで通常通りの選択操作を行う。
【０１８１】
そして、ステップＳ５８で交叉を実行してから、ステップＳ５９で突然変異を実行し、ステップＳ５１の処理へ戻り、ステップＳ５２で適応度が閾値を超えるまで繰り返される。この操作によって、ユーザの要求を満たす最良のサーバ種別ごとの台数が探索可能となる。クラスタ操作の具体的な様子は、後述の図２５、図２６によって示される。
【０１８２】
図２５は新しくクラスタを作成する場合のクラスタ操作の様子を表わす。クラスタＡはＮｏｄｅが４台、ＳＷが２台、Ｒｏｕｔｅｒが１台で構成された遺伝子を１００個保有している。ここで、クラスタＡの平均適応度が低く、さらにＮｏｄｅが混雑していることを示す遺伝子が多い場合、つまりＮｏｄｅの数が不足していると思われる場合、Ｎｏｄｅが５台、ＳＷが２台、Ｒｏｕｔｅｒが１台で構成された遺伝子を保有するクラスタＢを作成し、クラスタＡの遺伝子数の半分となる５０個の遺伝子を新しく作成し、保持する。そしてクラスタＡの遺伝子のうち半分の５０個を適応度の低いものから削除する。
【０１８３】
図２６は既存クラスタに遺伝子数を増やす場合のクラスタ操作の様子を表わす。クラスタＡはＮｏｄｅが４台、ＳＷが２台、Ｒｏｕｔｅｒが１台で構成された遺伝子を１００個保有している。そしてクラスタＢはＮｏｄｅが５台、ＳＷが２台、Ｒｏｕｔｅｒが１台で構成された遺伝子を５０個保有している。ここで、クラスタＡの平均適応度が低く、さらにＮｏｄｅが混雑していることを示す遺伝子が多い場合、つまりＮｏｄｅの数が不足していると思われる場合、Ｎｏｄｅが５台、ＳＷが２台、Ｒｏｕｔｅｒが１台で構成された遺伝子を保有しているクラスタＢにクラスタＡの遺伝子数の半分となる５０個の遺伝子を追加する。遺伝子を追加され遺伝子数を１００に伸ばしたクラスタＢは追加された５０個分の遺伝子を新たに作成し、保持する。そしてクラスタＡの遺伝子のうち半分の５０個を適応度の低いものから削除する。
【０１８４】
＜物理構成の適応度＞
図１２のステップＳ２１で行われる物理構成の適応度の算出は、例えば、次式によって行われる。
【０１８５】
全ての物理構成に対して、適応度が一定以上の論理構成が算出された場合、各物理構成の適応度の算出が行われる（図１２のステップＳ２１）。適応度の算出方法は、例えば、
【０１８６】
【数２】
0005773142.tif 000003
【０１８７】
によって表わすことができる。
【０１８８】
ここで、ｇｏｏｄ＿ｃｈｅｍｉｓｔｒｙ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ、ｂａｄ＿ｃｈｅｍｉｓｔｒｙ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ、ｃｏｎｇｅｓｔｉｏｎ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ、ｆｒｅｅ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ、ａｌｌ＿ｖｉｒｔｕａｌ＿ｍａｃｈｉｎｅ、ｍａｎ＿ｈｏｕｒは全て前述の（１）式と同様の手順で求める。また、ｃｏｎｇｅｓｔｉｏｎ＿ｍａｃｈｉｎｅは負荷の高い物理サーバ台数を表わし、ｆｒｅｅ＿ｍａｃｈｉｎｅは負荷の低い物理サーバ台数を表わし、これらの変数も前述の手順と同様に求めることが出来る（図２２参照）。さらに、上記（２）式のａｌｌ＿ｐｈｙｓｉｃａｌ＿ｍａｃｈｉｎｅは総物理サーバ数を表わし、ｍａｃｈｉｎｅ＿ｎｕｍ＿ｉは物理サーバ種別ごとの台数（ｉ番目）を表わし、ｍａｃｈｉｎｅ＿ｃｏｓｔ＿ｉは物理サーバ種別ごとのコスト（ｉ番目）を表わす。
【０１８９】
図２７は、物理サーバの種別ごとのコストを求める手順を表わしている。物理サーバ２０２の種別ごとのコストは、遺伝子内の情報とシステム定義情報８０４内のサーバ情報１００１を照らし合わせることで得られる。
【０１９０】
図２７に示した例では、遺伝子表現を参照するとＭａｃｈｉｎｅ０とＭａｃｈｉｎｅ１が遺伝子「１０」で表現されているためサーバ種別Ａ、Ｍａｃｈｉｎｅ２が遺伝子「０２」で表現されているためサーバ種別Ｂであることがわかるので、Ｍａｃｈｉｎｅ０とＭａｃｈｉｎｅ１のマシンコストは１．５、Ｍａｃｈｉｎｅ２のマシンコストは１．０であることがわかる。
【０１９１】
また、重みづけ係数として、Ａを仮想サーバの負荷に関するマイナス係数、Ｂを工数に対するマイナス係数、Ｃを物理サーバの負荷に関するマイナス係数、Ｄを物理サーバのコストに関するマイナス係数、ａを負荷の大きな仮想サーバに対するマイナス係数、ｂを負荷の少ない仮想サーバに対するマイナス係数、ｃを負荷の大きなサーバに対するマイナス係数、ｄを負荷の少ないサーバに対するマイナス係数、さらに、ｐｏｓｉｔｉｏｎを配置問題係数、ｌｏｇｉｃａｌを論理構成係数、ｐｈｙｓｉｃａｌを物理構成係数とし、これらの係数はすべて０から１の間の値となるように設定する。ここで、前述の関数と同じく、重みづけ係数は収集された要求情報８０３および要求／制約反映テーブル１００２に基づき決定される。例えば、物理サーバのコストを出来る限り少なくしたい、といった要求があった場合には、要求／制約反映テーブル１００２の記述により、物理サーバ２０２のコストに関するマイナス係数であるＤは大きく設定される。この設定により、物理サーバのコストが多くなる構成ほど、上記（１）式または（２）式の出力値が低くなり、解として算出されない。これにより、ユーザの要求を満たす構成を算出することが可能となる。
【０１９２】
また、前述と同様、解として許されない条件を満たす個体が存在した場合、報酬関数に関係なく報酬値をマイナスするように設定することで、要求を満たす個体算出が行いやすくなる。
【０１９３】
図１３は、本発明の変形例を示す。図１３は物理構成を考慮しない場合の計算サーバ１０２で行われる構成算出処理のフローチャートを示す。本フローチャートは図１２と異なり論理構成及びサーバ配置の算出部分のみで構成され、図１２の物理構成の処理を削除したものである。このため、ステップＳ１６の判定を満たす論理構成を出力する。この処理は、図１８の要求／制約反映テーブル１００２のフローチャートＢに相当し、図１２の処理は要求／制約反映テーブル１００２のフローチャートＡに相当する。
【０１９４】
図２８は、物理構成の変更を含んだ構成変更時のシーケンス図を示す。本シーケンス図は、図１１のシーケンス図のＳ８から続くものである。
【０１９５】
まず、計算サーバ１０２内の構成算出部５０５によって算出された構成（Ｓ６１）を構成提示部５０６が受信する（Ｓ６２）。構成提示部５０６はネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、クライアント１０１へと構成変更内容を送信する。そして、クライアント１０１内のネットワークＩ／Ｆ６０１が送信された構成変更内容を受信し、構成取得部６０２は受信した構成変更内容を構成情報９０１としてメモリ６０７へ格納し、構成表示部６０３へ構成変更内容の格納完了を通知する（Ｓ６３）。構成変更内容の格納完了通知を受け取った構成表示部６０３は、Ｉ／Ｏ６０６を介して、メモリ６０７内の構成情報９０１を出力装置６１２に出力し、管理者（ユーザ）に物理構成の変更を提示する（Ｓ６４）。管理者は物理構成の提示に従って、物理サーバ２０２等の構成を変更する。
【０１９６】
図２９は、物理構成の変更を含まない構成変更時のシーケンス図を示す。まず、計算サーバ１０２内の構成算出部５０５によって算出された構成（Ｓ７１）を構成変更指示部５０７が受信する（Ｓ７２）。構成変更指示部５０７はネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、データセンタ１０３内のコントローラ２０１へ構成算出結果と共に構成変更要求を送信する。構成変更要求がネットワークＩ／Ｆ３０３に受信されると、構成変更指示部３０２はネットワークＩ／Ｆ３０１を介して構成変更が必要な物理サーバ２０２のハイパーバイザ４０２へ、要求に沿った構成変更命令を出す（Ｓ７３）。そして変更が反映されるだけの十分な時間が経った後、構成変更指示部３０２はネットワークＩ／Ｆ３０１を介して構成変更を行った物理サーバ２０２のハイパーバイザ４０２へ、構成変更ができているのか確認を行う（Ｓ７５、Ｓ７６）。要求通りに構成変更（Ｓ７４）が行われていた場合、構成変更指示部３０２はネットワークＩ／Ｆ３０１およびルータ２０３を介し、ネットワーク１０４を通じて、計算サーバ１０２へ構成変更完了を通知する（Ｓ７７）。構成変更完了の通知が計算サーバ１０２内ネットワークＩ／Ｆ５０１に受信されると、構成提示部５０６がネットワークＩ／Ｆ５０１およびネットワーク１０４を介して、クライアント１０１へと構成変更内容を送信する（Ｓ７８）。そして、クライアント１０１内のネットワークＩ／Ｆ６０１が送信された構成変更内容を受信し（Ｓ７９）、構成取得部６０２は受信した構成変更内容を構成情報９０１としてメモリ６０７へ格納し、構成表示部６０３へ構成変更内容の格納完了を通知する。構成変更内容の格納完了通知を受け取った構成表示部６０３は、Ｉ／Ｏ６０６を介して、メモリ６０７内の構成情報９０１をユーザに提示する（Ｓ８０）。
【０１９７】
以上の処理によって、物理構成の変更が無い場合には、ハイパーバイザ４０２によって仮想サーバ４０３の構成が変更される。
【０１９８】
以上のように本発明では、物理サーバ２０２同士の接続関係と、仮想計算機システム内の仮想サーバ４０３の接続関係と、仮想サーバ４０３と物理サーバ２０２の配置関係とを考慮することにより、従来技術では実現できなかった自由度の高い構成を迅速に算出することが可能となる。また、クライアント１０１のユーザはニーズ（要求情報）を入力するだけで、仮想計算機システム全体の構成を算出することができることから、ユーザが多大な労力を割いて構成を考える必要がなくなり、結果として管理コストを低減することが可能となる。
【０１９９】
なお、上記実施形態では、データセンタ１０３を構成する仮想計算機システムの構成要素の構成パターンを求める例を示したが、仮想サーバの配置のみや、物理サーバ２０２とスイッチの接続関係の構成パターンのみを算出するようにしてもよい。
【符号の説明】
【０２００】
１０１      クライアント
１０２      計算サーバ
１０３      データセンタ
１０４      ネットワーク
２０１      コントローラ
２０２      物理サーバ
２０３      ルータ
２０４  スイッチ
３０１      ネットワークＩ／Ｆ
３０２      構成変更指示部
３０３      構成／負荷情報取得部
３０４      メモリ
４０１      ネットワークＩ／Ｆ
４０２      ハイパーバイザ
４０３      仮想サーバ
５０１      ネットワークＩ／Ｆ
５０２      要求取得部
５０３      構成／負荷情報取得部
５０４      メモリ
５０５      構成算出部
５０６      構成提示部
５０７      構成変更指示部
６０１      ネットワークＩ／Ｆ
６０２      構成取得部
６０３      構成表示部
６０４      要求取得部
６０５      要求送信部
６０６      Ｉ／Ｏ
６０７      メモリ
７０１      構成情報
７０２      負荷情報
８０１      構成情報
８０２      負荷情報
８０３      要求情報
８０４  システム定義情報
９０１      構成情報
９０２      要求情報
１００１  サーバ情報
１００２  要求／制約反映テーブル
１００３  致死フィルタ
【図１】
0005773142.tif 000004
【図２】
0005773142.tif 000005
【図３】
0005773142.tif 000006
【図４】
0005773142.tif 000007
【図５Ａ】
0005773142.tif 000008
【図５Ｂ】
0005773142.tif 000009
【図６Ａ】
0005773142.tif 000010
【図６Ｂ】
0005773142.tif 000011
【図７Ａ】
0005773142.tif 000012
【図７Ｂ】
0005773142.tif 000013
【図８】
0005773142.tif 000014
【図９】
0005773142.tif 000015
【図１０】
0005773142.tif 000016
【図１１】
0005773142.tif 000017
【図１２】
0005773142.tif 000018
【図１３】
0005773142.tif 000019
【図１６】
0005773142.tif 000020
【図１７】
0005773142.tif 000021
【図１８】
0005773142.tif 000022
【図１９】
0005773142.tif 000023
【図２０Ａ】
0005773142.tif 000024
【図２０Ｂ】
0005773142.tif 000025
【図２０Ｃ】
0005773142.tif 000026
【図２１】
0005773142.tif 000027
【図２２】
0005773142.tif 000028
【図２３】
0005773142.tif 000029
【図２４】
0005773142.tif 000030
【図２５】
0005773142.tif 000031
【図２６】
0005773142.tif 000032
【図２７】
0005773142.tif 000033
【図２８】
0005773142.tif 000034
【図２９】
0005773142.tif 000035
【図１４】
0005773142.tif 000036
【図１５】
0005773142.tif 000037