(57)【特許請求の範囲】
【請求項１】
リソーススケジューリング方法であって、
スケジューリングサーバが、作成する仮想マシンに対応する仮想マシン情報を取得し、
前記スケジューリングサーバが共通リソース情報を取得し、前記共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、
前記スケジューリングサーバが、前記共通リソース情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、前記リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、
前記スケジューリングサーバが、前記リソース情報プライベートコピーに基づいて、前記仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、
前記スケジューリングサーバが、前記少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する、
ことを含むリソーススケジューリング方法。
【請求項２】
前記スケジューリングサーバが、前記共通リソース情報に基づいて、予め設けられたリソース情報プライベートコピーを更新することは、
前記スケジューリングサーバが、前記リソース情報プライベートコピーを前記共通リソース情報と同期する、
ことを含む請求項１に記載のリソーススケジューリング方法。
【請求項３】
前記スケジューリングサーバが、前記共通リソース情報に基づいて、予め設けられたリソース情報プライベートコピーを更新することは、
前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、前記ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加する、
ことを含む請求項１に記載のリソーススケジューリング方法。
【請求項４】
前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、前記ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
前記リソース情報プライベートコピーの初回更新である場合、前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、
前記スケジューリングサーバが、前記ターゲットホストマシン情報を前記リソース情報プライベートコピーにコピーし、
前記スケジューリングサーバが、現在タイムスタンプを取得し、前記現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定し、
前記スケジューリングサーバが、前記完全更新タイムスタンプ及び前記増分更新タイムスタンプを前記リソース情報プライベートコピーに記憶する、
ことを含む請求項３に記載のリソーススケジューリング方法。
【請求項５】
前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、前記ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
前記リソース情報プライベートコピーの初回更新ではない場合、前記スケジューリングサーバが、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得し、
前記スケジューリングサーバが、前記時間差が所定の完全更新閾値より大きいか否かを判断し、
前記時間差が前記完全更新閾値より大きいとき、前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たす第１ターゲットホストマシン情報を選別し、
前記スケジューリングサーバが、前記第１ターゲットホストマシン情報を前記リソース情報プライベートコピーにコピーし、
前記スケジューリングサーバが、前記現在タイムスタンプを第１完全更新タイムスタンプ及び第１増分更新タイムスタンプとして設定し、
前記スケジューリングサーバが、前記第１完全更新タイムスタンプ及び前記第１増分更新タイムスタンプを前記リソース情報プライベートコピーに記憶する、
ことを含む請求項３に記載のリソーススケジューリング方法。
【請求項６】
前記スケジューリングサーバが、前記時間差が所定の完全更新閾値より大きいか否かを判断した後、
前記時間差が前記完全更新閾値以下であるとき、前記スケジューリングサーバが、前記共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得し、
前記スケジューリングサーバが、前記ホストマシン情報の中から、前記仮想マシン情報を満たす第２ターゲットホストマシン情報を取得し、
前記スケジューリングサーバが、前記第２ターゲットホストマシン情報を前記リソース情報プライベートコピーに追加し、
前記スケジューリングサーバが、前記現在タイムスタンプを第２増分更新タイムスタンプとして設定し、
前記スケジューリングサーバが、前記第２増分更新タイムスタンプを前記リソース情報プライベートコピーに記憶する、
ことをさらに含む請求項５に記載のリソーススケジューリング方法。
【請求項７】
前記スケジューリングサーバが、前記少なくとも１つの候補ホストマシンの中から、ターゲットホストマシンを取得することは、
前記スケジューリングサーバが、前記少なくとも１つの候補ホストマシンのそれぞれの各次元の優先度値を決定し、
前記スケジューリングサーバが、前記各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成し、
前記スケジューリングサーバが、前記候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得、前記各候補ホストマシンのうち１つの候補ホストマシンの前記残りリソースのコミットが成功するまで、前記各候補ホストマシンの残りリソースを前記共通リソース情報へコミットし、前記リソース要件が、前記仮想マシンに対応する仮想マシン情報に含まれ、
前記各候補ホストマシンのうち１つの候補ホストマシンに対応する残りリソースのコミットが成功すると、前記スケジューリングサーバが、コミットに成功した前記候補ホストマシンをターゲットホストマシンとして設定する、
ことを含む請求項１に記載のリソーススケジューリング方法。
【請求項８】
前記スケジューリングサーバが、前記候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得る前に、前記スケジューリングサーバが、前記候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成する、ことをさらに含み、
前記スケジューリングサーバが、前記候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得ることは、前記スケジューリングサーバが、前記候補ホストマシンターゲットリストの各候補ホストマシンの順序で、逐一、前記候補ホストマシンターゲットリストの各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、残りリソースを得る、ことを含む、
請求項７に記載のリソーススケジューリング方法。
【請求項９】
前記スケジューリングサーバが、前記候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成することは、
前記スケジューリングサーバが、前記候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをランダムにリランキングして、前記候補ホストマシンターゲットリストを得る、
ことを含む請求項８に記載のリソーススケジューリング方法。
【請求項１０】
前記スケジューリングサーバが、前記リソース情報プライベートコピーに基づいて、前記仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得することは、
前記スケジューリングサーバが、前記仮想マシン情報におけるリソース要件に基づいて、前記リソース情報プライベートコピーにおけるホストマシンをフィルタリングして、前記少なくとも１つの候補ホストマシンを得る、
ことを含む請求項１に記載のリソーススケジューリング方法。
【請求項１１】
前記スケジューリングサーバが、前記各候補ホストマシンのうち１つの候補ホストマシンの前記残りリソースのコミットが成功するまで、前記各候補ホストマシンの残りリソースを前記共通リソース情報へコミットすることは、
ある候補ホストマシンの残りリソースのコミットが失敗した場合、前記スケジューリングサーバが、該候補ホストマシンの残りリソースのコミット回数がスケジューリング競合閾値を超えるか否かを決定し、
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えていないと決定されたとき、前記スケジューリングサーバが、該候補ホストマシンの最新のリソースデータを取得し、該候補ホストマシンに対応する前記残りリソースを再決定し、
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えたと決定されたとき、前記スケジューリングサーバが、前記候補ホストマシンリストの次の候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、相応の残りリソースを得、前記相応の残りリソースをコミットする、
ことを含む請求項７に記載のリソーススケジューリング方法。
【請求項１２】
スケジューリングサーバであって、
プロセッサと、
メモリと、
前記メモリに記憶される１つ又は複数のプログラムと、を含み、
前記１つ又は複数のプログラムは、前記プロセッサによって実行されると、前記プロセッサに、請求項１乃至１１のいずれか１項に記載のリソーススケジューリング方法を実行させるスケジューリングサーバ。
【請求項１３】
クラウドコンピューティングシステムであって、少なくとも１つの、請求項１２に記載のスケジューリングサーバと、少なくとも１つの、少なくとも１つの仮想マシンを作成するためのホストマシンと、を備えるクラウドコンピューティングシステム。
【請求項１４】
複数の命令を記憶した記憶媒体であって、前記命令は、プロセッサによってロードされることで、請求項１乃至１１のいずれか１項に記載のリソーススケジューリング方法を実行させるように構成される記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本願は、２０１７年９月２９日に中国特許庁に提出された、出願番号が２０１７１０９１１６３９．９であり、発明の名称が「リソーススケジューリング方法、装置、クラウドコンピューティングシステム、及び記憶媒体」である中国特許出願の優先権を主張し、その全ての内容は参照することにより本願に組み込まれる。
【０００２】
［技術分野］
本願は、クラウド技術分野に関し、具体的に、リソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体に関する。
【背景技術】
【０００３】
クラウドコンピューティングシステムには、通常、スケジューラとホストマシンとが含まれ、ここで、スケジューラは、仮想マシンソフトウェアによって、１つのホストマシン上に１つ又は複数の仮想マシンを作成できる。クラウドコンピューティングシステムには、多数のホストマシンがあり、仮想マシンを作成する際に、いずれのホストマシン上に仮想マシンを作成するかを選択する過程がリソーススケジューリングと呼ばれ、リソーススケジューリングを行うものがスケジューラと呼ばれる。
【０００４】
いくつかの実施例では、スケジューラがリソーススケジューリングを行う際に、ホストマシンの規模及びリソーススケジューリング要求がある程度まで増加すると、スケジューラが１回のリソーススケジューリング要求を処理する時間は著しく増加するとともに、後続の要求は常に並んで、処理されるのを待つ。例えば、２段階のスケジューリングのアーキテクチャが採用され、まず、中央リソースマネージャーが、リソース招待によって、スケジューラにホストマシンリソースを提供し、スケジューラが、リソース招待の範囲内でホストマシンを選択して、リソーススケジューリング過程を完了する。また、該スケジューラがリソーススケジューリングを完了して始めて、中央リソースマネージャーは、リソース招待によって、他のスケジューラにホストマシンリソースを提供する。例えば、クラウドコンピューティングシステムのデータセンター全体には、ホストマシンＡ、ホストマシンＢ、ホストマシンＣ、ホストマシンＤ、及びホストマシンＥなどが含まれ、中央リソースマネージャーは、リソース招待によって、スケジューラ１にホストマシンＡ及びホストマシンＢを提供し、この場合、スケジューラ１は、ホストマシンＡ及びホストマシンＢのうち１つのホストマシンしか選択できない。スケジューラ１がリソーススケジューリングを完了して始めて、中央リソースマネージャーは、リソース招待によって、スケジューラ２にホストマシンリソースを提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記実施例には下記の課題が存在する。一方では、スケジューラがリソース招待の範囲内でしかホストマシンを選択できないことで、選択可能なホストマシンの規模が小さくなり、リソーススケジューリングの良い結果が保証できない。他方では、中央リソースマネージャーが、まず、１つのスケジューラにホストマシンリソースを提供し、該スケジューラがリソーススケジューリングを完了してから、中央リソースマネージャーが他のスケジューラにホストマシンリソースを提供することで、スケジューラがリソーススケジューリングを行う際に待つ必要があり、リソーススケジューリングの高い遅延性及び低いスループットを引き起こす。
【０００６】
本願の実施例では、リソーススケジューリングの良い結果及びリソーススケジューリングの効率の向上を実現可能なリソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体が提供されている。
【課題を解決するための手段】
【０００７】
上記の技術的課題を解決するために、本願の実施例では、下記の構成を提供する。
【０００８】
リソーススケジューリング方法であって、
スケジューリングサーバが、作成する仮想マシンに対応する仮想マシン情報を取得し、
スケジューリングサーバが共通リソース情報を取得し、前記共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、
スケジューリングサーバが、前記共通リソース情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、前記リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、
スケジューリングサーバが、前記リソース情報プライベートコピーに基づいて、前記仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、
スケジューリングサーバが、前記少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する、ことを含む。
【０００９】
スケジューリングサーバであって、プロセッサと、メモリと、前記メモリに記憶される１つ又は複数のプログラムと、を含み、前記１つ又は複数のプログラムは、前記プロセッサによって実行されると、前記プロセッサに、上記のリソーススケジューリング方法を実行させる。
【００１０】
クラウドコンピューティングシステムであって、少なくとも１つの、本願によるスケジューリングサーバと、少なくとも１つの、少なくとも１つの仮想マシンを作成するためのホストマシンと、を備える。
【００１１】
複数の命令を記憶した記憶媒体であって、該命令は、プロセッサによってロードされることで、上記のリソーススケジューリング方法を実行させるように構成される。
【発明の効果】
【００１２】
本願の実施例では、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【図面の簡単な説明】
【００１３】
本願の実施例の構成をより明確に説明するために、以下、実施例の説明に必要な図面を簡単に紹介する。明らかに、以下の説明における図面は本願のいくつかの実施例を示しているにすぎず、当業者にとって、創造的な労働をせずに、これらの図面から他の図面を得ることもできる。
【図１】本願の実施例で提供されたリソーススケジューリングシステムのシナリオの模式図である。
【図２】本願の実施例で提供されたリソーススケジューリング方法のフローの模式図である。
【図３】本願の実施例で提供されたリソーススケジューリング方法のフローの模式図である。
【図４】本願の実施例で提供されたリソーススケジューリング方法のフローの模式図である。
【図５】本願の実施例で提供されたリソーススケジューリング方法のフローの模式図である。
【図６】本願の実施例で提供されたリソーススケジューリング方法のリソース情報プライベートコピーの更新のフローの模式図である。
【図７】本願の実施例で提供されたリソーススケジューリング方法のターゲットホストマシンの取得のフローの模式図である。
【図８】本願の実施例で提供されたリソーススケジューリング装置の構成の模式図である。
【図９】本願の実施例で提供されたリソーススケジューリング装置の構成の模式図である。
【図１０】本願の実施例で提供されたリソーススケジューリング装置の構成の模式図である。
【図１１】本願の実施例で提供されたリソーススケジューリング装置の構成の模式図である。
【図１２】本願の実施例で提供されたスケジューリングサーバの構成の模式図である。
【発明を実施するための形態】
【００１４】
以下、本願の実施例の図面を参照して、本願の実施例の構成を明瞭かつ完全に説明する。明らかに、説明される実施例は、本願の実施例の全部ではなく、本願の実施例の一部にすぎない。当業者が創造的な労働をせずに本願の実施例から得るすべての他の実施例は、本願の保護範囲に属する。
【００１５】
以下の説明では、本願の具体的な実施例について、別段に明示されない限り、１つ又は複数のコンピュータによって実行されるステップ及び符号を参照して説明する。このため、これらのステップ及び動作がコンピュータによって実行されることに数回言及する。本文におけるコンピュータによって実行される動作には、構造化データを表す電子信号のコンピュータ処理ユニットによって実行される動作が含まれる。この動作は、該データを変換したり、該データを該コンピュータのメモリシステムにおける位置に維持したりし、再設定されることにより、又は、当業者が熟知している別の方式で、該コンピュータの作動を変えることが可能である。該データによって維持されるデータ構造は、該メモリの物理的な位置にあり、該データフォーマットによって定義される特定の特性を持つ。しかしながら、上記の文字は、本願の原理を説明しているが、制限を表すものではない。当業者であれば理解できるように、次に説明する複数のステップ及び動作は、ハードウェアでも実施可能である。
【００１６】
本願の実施例では、リソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体が提供されている。
【００１７】
図１を参照されたい。図１は、本願の実施例で提供されたリソーススケジューリングシステムのシナリオの模式図である。このリソーススケジューリングシステムは、クラウドコンピューティングシステムであってもよい。このクラウドコンピューティングシステムは、リソーススケジューリング装置を含んでもよい。このリソーススケジューリング装置は、具体的に、スケジューリングサーバに統合されてもよい。このスケジューリングサーバは、クラウドコンピューティングシステムのスケジューラであってもよい。言い換えれば、各スケジューラには、リソーススケジューリング装置が含まれてもよい。クラウドコンピューティングシステムには、例えば、図１に示すスケジューラ１、２…ｎのような１つ又は複数のスケジューラが含まれてもよい。スケジューラは、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得する。共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれてもよい。次に、スケジューラは、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新してもよい。このリソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれる。スケジューラによってメンテナンスされるリソース情報プライベートコピーは、作成する仮想マシンに対して、適当なホストマシンを選択することに用いられてもよい。スケジューラは、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得すること、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを選択し、ターゲットホストマシン上に仮想マシンを作成することなどを行ってもよい。
【００１８】
また、該クラウドコンピューティングシステムには、例えば、図１に示すホストマシンＡ、Ｂ…ｎのような１つ又は複数のホストマシンが含まれてもよい。ホストマシンは、スケジューラから送信された仮想マシン作成要求を受信し、この要求に応じて、１つ又は複数の仮想マシンを作成してもよい。
【００１９】
該クラウドコンピューティングシステムには、１つ又は複数の端末から送信された仮想マシン作成要求を主に受信する受信器が含まれてもよい。この仮想マシン作成要求には、仮想マシン情報が付けられてもよい。次に、受信器は、受信された各仮想マシン作成要求のそれぞれをメッセージにカプセル化し、メッセージを予め設けられたメッセージキューに格納してもよい。これにより、スケジューラは、メッセージキューからメッセージを取得して、メッセージから、作成する仮想マシン情報を抽出することが可能になる。説明すべきものとして、メッセージキューに複数のメッセージが存在する場合、複数のスケジューラは、並行的に、メッセージを取得し、作成する異なる仮想マシンに対してホストマシンを選択することができる。
【００２０】
該クラウドコンピューティングシステムには、主に共通リソース情報をメンテナンスするリソースマネージャーが含まれてもよい。これにより、スケジューラは、リソースマネージャーから共通リソース情報を取得することが可能になる。該共通リソース情報は、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報の記憶及びメンテナンスに用いられる。
【００２１】
説明すべきものとして、図１に示すリソーススケジューリングシステムのシナリオの模式図は、一例にすぎない。本願の実施例で説明するリソーススケジューリングシステム及びシナリオは、本願の実施例の構成をより明確に説明するためのものであり、本願の実施例で提供された構成を限定するものではない。当業者には、クラウドコンピューティングシステムの進化及び新しい業務シナリオの出現に伴い、本願の実施例で提供された構成が類似の技術的課題にも同様に適用可能であることが分かる。
【００２２】
以下、それぞれ詳しく説明する。
【００２３】
本実施例では、リソーススケジューリング装置の観点から説明する。このリソーススケジューリング装置は、具体的に、スケジューリングサーバやゲートウェイなどのネットワーク機器に統合されてもよい。
【００２４】
リソーススケジューリング方法は、スケジューリングサーバによって実行されてもよい。このリソーススケジューリング方法は、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する、ことを含んでもよい。
【００２５】
図２を参照されたい。図２は、本願の第１実施例で提供されたリソーススケジューリング方法のフローの模式図である。図２のリソーススケジューリング方法は、例えば、スケジューリングサーバによって実行されてもよい。このリソーススケジューリング方法は、下記のステップを含む。
【００２６】
ステップ１０１で、スケジューリングサーバは、作成する仮想マシンに対応する仮想マシン情報を取得する。
【００２７】
例えば、スケジューリングサーバは、クラウドコンピューティングシステムに予め設けられたメッセージキューから、作成する仮想マシンに対応する仮想マシン情報を取得してもよい。ここで、仮想マシンとは、ソフトウェアでエミュレートされる、ハードウェアシステム機能を有しかつ隔離された環境で実行される完全なコンピュータシステムを指す。
【００２８】
メッセージキューのメッセージは、非同期タスクであってもよい。メッセージキューのメッセージは、メッセージキューを流れる。クラウドコンピューティングシステムの各コンポーネントは、生産者または消費者の身分を有する。生産者は、メッセージキューにメッセージを送信する。消費者は、メッセージキューからメッセージを受信する。例えば、クラウドコンピューティングシステムでは、受信器が生産者として、端末から送信された仮想マシン情報が付けられている仮想マシン作成要求を受信すると、仮想マシン情報をメッセージにカプセル化して、メッセージをメッセージキューに記憶し、これらの仮想マシン情報がメッセージキューに並んでスケジューリングサーバによるリソーススケジューリングを待ち、スケジューリングサーバが消費者として、メッセージキューから仮想マシン情報を抽出し、仮想マシン情報に対応する作成する仮想マシンに対してホストマシンを選択する。
【００２９】
仮想マシン情報には、作成する仮想マシンに必要なプロセッサ情報、メモリ情報、及びディスク情報などが含まれてもよい。仮想マシン情報には、作成する仮想マシンの、ソリッドステートドライブ、クラウドディスク、プライベートネットワーク、ネットワークカード、ルーター、ネットワーク構成、データセンター、ラック、ホストマシンの機種、ホストマシンの属するリソースプール、及び仮想マシンのタイプなどに対するリソース要件の少なくとも１つが含まれてもよい。理解できるように、仮想マシン情報のタイプは、実際の必要に応じて、柔軟的に設定されてもよいが、具体的な内容がここで限定されない。
【００３０】
ステップ１０２で、スケジューリングサーバは、共通リソース情報を取得する。
【００３１】
ここで、共通リソース情報は、クラウドコンピューティングシステムに対して、データセンター全体のリソースデータを記憶・メンテナンスするためのものである。この共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれる。理解できるように、この共通リソース情報は、リソースマネージャーによってメンテナンスされてもよいし、クラウドコンピューティングシステムの他の機器によってメンテナンスされてもよい。スケジューリングサーバは、共通リソース情報をメンテナンスする機器から、共通リソース情報を取得できる。例えば、この共通リソース情報がクラウドコンピューティングシステムのリソースマネージャーによってメンテナンスされる場合、スケジューリングサーバは、リソースマネージャーから、共通リソース情報を取得できる。説明の便宜上、本願の実施例では、すべて、共通リソース情報がリソースマネージャーによってメンテナンスされる場合を例として説明する。
【００３２】
説明すべきものとして、共通リソース情報は、クラウドコンピューティングシステム内でグローバルに一意であり、そのメンテナンス形式は、論理データテーブルであってもよい。例えば、データテーブルの各行のそれぞれは、１つのホストマシンを表し、データテーブルの各列のそれぞれは、ホストマシンに含まれる１種のリソースを表す。リソースは、ホストマシンのネットワーク間のインターネットプロトコル（ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、利用可能な中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、利用可能なメモリ、及び利用可能なディスクなどを含んでもよい。メンテナンス過程では、共通リソース情報に対して、追加、読み取り、更新、又は削除などの処理を行うことができる。これらの処理は、データセンターのホストマシンリソースのオンライン化、変更、又はオフライン化などの過程に対応する。
【００３３】
ここで、ホストマシンとは、仮想マシンソフトウェアをインストールするための物理的なコンピュータを指す。１つのホストマシン上には、仮想マシンソフトウェアによって、１つ又は複数の仮想マシンを作成してもよい。
【００３４】
いくつかの実施例では、ホストマシン情報は、ホストマシン識別子、ＩＰアドレス、機種、オペレーティングシステム名、カーネルバージョン、ＣＰＵ型番、仮想化方式、論理領域番号、インターネットデータセンター番号、ホストマシン状態、クラウドディスクをサポートするか否か、ソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ）をサポートするか否か、ネットワークバージョン、ＣＰＵノードリソースクォータ、利用可能なメモリリソース、及び利用可能なディスクリソースなどを含んでもよいが、具体的な内容がここで限定されない。
【００３５】
説明すべきものとして、ホストマシンがクラウドコンピューティングシステムに入るには、ホストマシン導入プロセスによって必要な初期化を行う必要がある。ホストマシンは、そのホストマシン情報をリソースマネージャーに報告し、リソースマネージャーは、ホストマシン情報を共通リソース情報に記憶してもよい。いくつかの実施例では、ホストマシンは、そのホストマシン情報をスケジューリングサーバに報告してもよい。スケジューリングサーバは、ホストマシン情報を予め設けられたリソース情報プライベートコピーに記憶してもよい。いくつかの実施例では、スケジューリングサーバは、リアルタイム又は所定時間間隔で、情報取得要求をリソースマネージャーに送信し、情報取得要求に応じてリソースマネージャーからフィードバックされた共通リソース情報を受信し、共通リソース情報に基づいてリソース情報プライベートコピーを更新してもよい。いくつかの実施例では、共通リソース情報の更新があった場合、リソースマネージャーは、更新されたホストマシン情報をスケジューリングサーバに自発的に送信する。
【００３６】
ステップ１０３で、スケジューリングサーバは、共通リソース情報に基づいて、予め設けられたリソース情報プライベートコピーを更新する。
【００３７】
スケジューリングサーバ自身でメンテナンスされるリソース情報プライベートコピーのメンテナンス形式は、共通リソース情報のスケジューリングサーバのメモリにおけるバッファである。ここで、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれる。該所定のホストマシンは、クラウドコンピューティングシステムのすべてのホストマシンの一部又は全部であってもよい。リソーススケジューリングの結果を良くするために、スケジューリングサーバは、リソーススケジューリングを行う前に、リソース情報プライベートコピーと共通リソース情報とを同期化する必要があり、共通リソース情報を取得し、共通リソース情報に基づいてリソース情報プライベートコピーを更新することにより、リソース情報プライベートコピーと共通リソース情報との一致性を保証してもよい。
【００３８】
更新時間を短縮するために、共通リソース情報及び仮想マシン情報に基づいて、リソース情報プライベートコピーを更新してもよい。いくつかの実施形態では、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新することは、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加する、ことを含む。
【００３９】
いくつかの実施例では、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
リソース情報プライベートコピーの初回更新である場合、スケジューリングサーバが、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別するステップＳ１と、
スケジューリングサーバが、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーするステップＳ２と、
スケジューリングサーバが、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定するステップＳ３と、
スケジューリングサーバが、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶するステップＳ４と、を含む。
【００４０】
具体的には、まず、スケジューリングサーバは、リソース情報プライベートコピーの初回更新であるか否かを判断し、例えば、リソース情報プライベートコピーが空であるか否かを判断してもよい。リソース情報プライベートコピーが空である場合、リソース情報プライベートコピーの初回更新であると決定し、リソース情報プライベートコピーが空ではない場合、リソース情報プライベートコピーの初回更新ではないと決定する。初回更新である場合、現在のリソース情報プライベートコピーが空であり、完全更新を行う必要があり、即ち、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする必要がある。説明すべきものとして、直接に共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【００４１】
ターゲットホストマシン情報をリソース情報プライベートコピーにコピーした後、完全更新タイムスタンプ及び増分更新タイムスタンプを記録する必要がある。いくつかの実施例では、スケジューリングサーバは、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定する。例えば、現在タイムスタンプが２０１７年９月１５日午前１１：００である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、２０１７年９月１５日午前１１：００となる。次に、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【００４２】
いくつかの実施例では、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
リソース情報プライベートコピーの初回更新ではない場合、スケジューリングサーバが、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得するステップＳ１１と、
スケジューリングサーバが、時間差が所定の完全更新閾値より大きいか否かを判断するステップＳ１２と、
時間差が完全更新閾値より大きいとき、スケジューリングサーバが、共通リソース情報の中から、仮想マシン情報を満たす第１ターゲットホストマシン情報を選別するステップＳ１３と、
スケジューリングサーバが、第１ターゲットホストマシン情報をリソース情報プライベートコピーにコピーするステップＳ１４と、
スケジューリングサーバが、現在タイムスタンプを第１完全更新タイムスタンプ及び第１増分更新タイムスタンプとして設定するステップＳ１５と、
スケジューリングサーバが、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプをリソース情報プライベートコピーに記憶するステップＳ１６と、を含む。
【００４３】
具体的には、ステップＳ１１において、リソース情報プライベートコピーの初回更新ではない場合、スケジューリングサーバは、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得する。ここで、最後の完全更新タイムスタンプは、現在タイムスタンプより前の最後に記録された完全更新タイムスタンプである。
【００４４】
次に、ステップＳ１２において、スケジューリングサーバは、時間差が所定の完全更新閾値より大きいか否かを判断する。この完全更新閾値は、実際の必要に応じて、柔軟的に設定されてもよいが、具体的な値がここで限定されない。例えば、完全更新頻度を低くするために、完全更新閾値に大きな値を設定してもよい。
【００４５】
ステップＳ１３において、時間差が完全更新閾値より大きいとき、スケジューリングサーバは、共通リソース情報の中から、仮想マシン情報を満たす第１ターゲットホストマシン情報を選別する。完全更新を行うために、スケジューリングサーバは、ステップＳ１４を実行して、第１ターゲットホストマシン情報をリソース情報プライベートコピーにコピーしてもよい。説明すべきものとして、現在の共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【００４６】
次に、ステップＳ１５において、スケジューリングサーバは、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプを記録することにより、完全更新タイムスタンプ及び増分更新タイムスタンプを正確に記録する。いくつかの実施例では、現在タイムスタンプを第１完全更新タイムスタンプ及び第１増分更新タイムスタンプとして設定してもよい。例えば、現在タイムスタンプが２０１７年９月１６日午前８：００である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、２０１７年９月１６日午前８：００となる。次に、ステップＳ１６において、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【００４７】
さらに、ステップＳ１２において、時間差が所定の完全更新閾値より大きいか否かを判断した後、
スケジューリングサーバが、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得するステップＳ１７と、
スケジューリングサーバが、ホストマシン情報の中から、仮想マシン情報を満たす第２ターゲットホストマシン情報を取得するステップＳ１８と、
スケジューリングサーバが、第２ターゲットホストマシン情報をリソース情報プライベートコピーに追加するステップＳ１９と、
スケジューリングサーバが、現在タイムスタンプを第２増分更新タイムスタンプとして設定するステップＳ２０と、
スケジューリングサーバが、第２増分更新タイムスタンプをリソース情報プライベートコピーに記憶するステップＳ２１と、を実行してもよい。
【００４８】
クラウドコンピューティングシステムのホストマシンの規模が大きく、例えば、ホストマシンの規模は１００００程度であるが、スケジューリングサーバは１００程度である。このため、リソース情報プライベートコピーを更新するたびに、完全更新を行うと、即ち、共通リソース情報をリソース情報プライベートコピーに完全コピーすると、時間がかかる。更新にかかる時間を短縮するために、リソース情報の増分更新を行い、即ち、共通リソース情報のうち一部のリソース情報をリソース情報プライベートコピーに追加してもよい。
【００４９】
具体的には、共通リソース情報におけるホストマシン情報が更新されるたびに、更新タイムスタンプを記録することにより、正確な更新日時を得る。スケジューリングサーバは、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得した後、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があったホストマシン情報を取得し、各ホストマシン情報が更新された更新タイムスタンプを取得し、次に、更新があったホストマシン情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を選別する。即ち、最後の増分更新タイムスタンプに基づいて、共通リソース情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプより大きいすべてのホストマシン情報を検索する。この最後の増分更新タイムスタンプは、現在タイムスタンプより前の最後の増分更新タイムスタンプである。
【００５０】
共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報が得られた後、該ホストマシン情報に対して選別を行って、ホストマシン情報の中から、仮想マシン情報を満たす第２ターゲットホストマシン情報を取得し、第２ターゲットホストマシン情報をリソース情報プライベートコピーに追加する。
【００５１】
次に、第２増分更新タイムスタンプを記録することにより、増分更新タイムスタンプを正確に記録する。即ち、現在タイムスタンプを第２増分更新タイムスタンプとして設定し、第２増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。リソース情報プライベートコピーは、実質的に、メモリ内で実行されるバッファである。ほとんどの場合、スケジューリングサーバが増分更新を行うだけでよく、更新データ量も、かかる時間も少ない。いくつかの実施例では、今回の増分更新の前にオフラインになっているホストマシンも、リソース情報プライベートコピーから削除される。
【００５２】
説明すべきものとして、上記第１ターゲットホストマシン情報、第２ターゲットホストマシン情報、第１完全更新タイムスタンプ、第１増分更新タイムスタンプ、及び第２増分更新タイムスタンプの「第１」及び「第２」は、現れたターゲットホストマシン情報、増分更新タイムスタンプ、又は完全更新タイムスタンプを区別するためのものにすぎず、それらの重要度への限定を表すものではない。
【００５３】
ステップ１０４で、スケジューリングサーバは、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得する。
【００５４】
リソース情報プライベートコピーが更新された後、スケジューリングサーバは、リソース情報プライベートコピーを基に、作成する仮想マシンに対して、ホストマシンを選別する。仮想マシン情報におけるリソース要件と、リソース情報プライベートコピーにおけるホストマシン情報とに基づいて、リソース情報プライベートコピーにおけるホストマシン集合をフィルタリングし、条件に合致するホストマシンを保持し、条件に合致しないホストマシンを除外することにより、少なくとも１つの候補ホストマシンを得てもよい。
【００５５】
いくつかの実施例では、スケジューリングサーバは、仮想マシン情報に基づいて、ホストマシン情報に応じて構築された直列フィルターに従って、複数のホストマシンに対して相応のフィルタリングを行うように各フィルターを制御することにより、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを得てもよい。
【００５６】
いくつかの実施例では、スケジューリングサーバは、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得、前記各候補ホストマシンのうち１つの候補ホストマシンの前記残りリソースのコミットが成功するまで、前記各候補ホストマシンの残りリソースを前記共通リソース情報へコミットしてもよい。各候補ホストマシンのうち１つの候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した前記候補ホストマシンをターゲットホストマシンとして設定する。
【００５７】
ホストマシン情報に応じて、直列フィルタリングモデルを構築することができる。この直列フィルタリングモデルには、直列接続された複数のフィルターが含まれる。各フィルターそれぞれは、１つのフィルタリング機能を担う。各フィルターは、仮想マシン情報に基づいて相応の判断を行ってから、相応のフィルタリングを実行する。例えば、直列接続された１番目のフィルターは、仮想マシンに必要なＣＰＵ、メモリ、及びディスクリソースなどのリソース要件に基づいて、該リソース要件を満たさないホストマシンをフィルタリングして除外し、該リソース要件を満たすホストマシンのみを保持することを担い、直列接続された２番目のフィルターは、ＳＳＤをサポートするホストマシン、又はＳＳＤをサポートしないホストマシンをフィルタリングして除外することを担い、リソース要件において、ホストマシンがＳＳＤをサポートすることが要求される場合、２番目のフィルターは、該リソース要件に基づいて、ＳＳＤをサポートしないホストマシンをフィルタリングして除外し、ＳＳＤをサポートするホストマシンを保持する。
【００５８】
理解できるように、他のフィルターの機能は、該フィルターの機能を参照して理解すればよい。但し、他のフィルターは、他のフィルタリング機能を担う。具体的なフィルタリングモデルにおける各フィルターの機能は、作成する仮想マシンのリソース要件に応じて設定されてもよいが、具体的な内容がここで限定されない。
【００５９】
ステップ１０５で、スケジューリングサーバは、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。
【００６０】
少なくとも１つの候補ホストマシンが得られた後、スケジューリングサーバは、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを決定してもよい。ターゲットホストマシンの選択は、ランダムに選択することであってもよい。もちろん、合致度が最も良いターゲットホストマシンを選択するために、複数のホストマシンをフィルタリングして少なくとも１つの候補ホストマシンが得られた後、各候補ホストマシンそれぞれの各次元の優先度値を決定し、優先度値に従って少なくとも１つの候補ホストマシンをランキングしてもよい。
【００６１】
いくつかの実施形態では、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得することは、
スケジューリングサーバが、少なくとも１つの候補ホストマシンのそれぞれの各次元の優先度値を決定するステップＳ３１と、
スケジューリングサーバが、各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成するステップＳ３２と、
スケジューリングサーバが、候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得、リソース要件が、仮想マシンに対応する仮想マシン情報に含まれるステップＳ３３と、
スケジューリングサーバが、残りリソースを共通リソース情報へコミットするステップＳ３４と、
ある候補ホストマシンに対応する残りリソースのコミットが成功すると、スケジューリングサーバが、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定するステップＳ３５と、を含んでもよい。
【００６２】
具体的には、まず、各ホストマシンそれぞれの複数次元の優先度値を計算する。各次元の優先度は、プライベートネットワーク優先度（ｖｐｃＰｒｉｏ）、並行タスク優先度（ｔａｓｋＰｒｉｏ）、履歴エラー優先度（ｅｒｒｏｒＰｒｉｏ）、非アフィニティ優先度（ａｆｆｉｎｉｔｙＰｒｉｏ）、フリー優先度（ｆｒｅｅＰｒｉｏ）、イメージキャッシュ優先度（ｉｍｇＰｒｉｏ）、及び断片化率優先度（ｆｒａｇｍｅｎｔＰｒｉｏ）などを含んでもよい。
【００６３】
ここで、プライベートネットワーク優先度値について、ｖｐｃＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、プライベートネットワーク優先度値を決定してもよい。例えば、プライベートネットワークをサポートするホストマシンのｖｐｃＰｒｉｏの値を０にして、プライベートネットワークをサポートしないホストマシンのｖｐｃＰｒｉｏの値を１にしてもよい。或いは、プライベートネットワークをサポートするホストマシンのｖｐｃＰｒｉｏの値を１にして、プライベートネットワークをサポートしないホストマシンのｖｐｃＰｒｉｏの値を０にするなどにしてもよい。説明の便宜上、本願の実施例では、すべて、プライベートネットワークをサポートするホストマシンのｖｐｃＰｒｉｏの値を０にして、プライベートネットワークをサポートしないホストマシンのｖｐｃＰｒｉｏの値を１にする場合を例として説明する。
【００６４】
プライベートネットワークは、ＩＰアドレスが物理的なネットワークトポロジに依存せず、将来に移行がより容易である。プライベートネットワーク優先度は、プライベートネットワークをサポートするホストマシンに優先的に仮想マシンを配置して、将来の移行をより便利で柔軟にすることを役割とする。
【００６５】
並行タスク優先度について、ｔａｓｋＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、並行タスク優先度を決定してもよい。ホストマシン上の現在のタスク数を判断し、タスク数が所定閾値より小さい場合、並行タスク優先度の値を０にし、タスク数が所定閾値より小さくない場合、並行タスク優先度の値を現在のタスク数にする。例えば、所定閾値はデフォルトで３である。もちろん、該所定閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【００６６】
ホストマシン上の並行タスクが同時に実行され、並行性が高すぎると、仮想マシンの作成が遅くなり、ひいては失敗する可能性がある。並行タスク優先度は、並行タスク数がより低いホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率及びリアルタイム性を確保することを役割とする。
【００６７】
履歴エラー優先度について、ｅｒｒｏｒＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、履歴エラー優先度を計算してもよい。ホストマシンの最近の期間（例えば、デフォルトで２４時間）内の履歴エラー数を判断し、履歴エラー数がエラー閾値より小さい場合、履歴エラー優先度の値を０にし、履歴エラー数がエラー閾値より小さくない場合、履歴エラー優先度の値を履歴エラー数にする。例えば、エラー閾値はデフォルトで５であってもよい。エラー閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【００６８】
短時間でエラーが複数回発生したホストマシンには、何らかの障害が発生した可能性があり、障害を処理する前に、該ホストマシンに持続的に仮想マシンを配置すると、仮想マシンの作成タスクが失敗する可能性があり、成功率を低下させる。履歴エラー優先度は、エラーが多すぎないホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率を向上させることを役割とする。
【００６９】
非アフィニティ優先度について、ａｆｆｉｎｉｔｙＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、非アフィニティ優先度を計算してもよい。仮想マシンのユーザの該ホストマシン上の既存の仮想マシンの数を判断し、仮想マシンの数がアフィニティ閾値より小さい場合、非アフィニティ優先度の値を０にし、仮想マシンの数がアフィニティ閾値より小さくない場合、非アフィニティ優先度の値を既存の仮想マシンの数にする。例えば、アフィニティ閾値は３である。もちろん、アフィニティ閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【００７０】
大規模分散システムでは、エラーを完全に回避することがほぼ不可能である。あるユーザの仮想マシンが１つまたはいくつかのホストマシンに集中している場合、これらのホストマシンに障害が発生すると、これらのホストマシン上のすべての仮想マシンが影響を受け、該ユーザーのアプリケーションの全体的な可用性に深刻な影響を及ぼす。非アフィニティ優先度は、分散ディザスタリカバリのために、同一のユーザの仮想マシンを異なるホストマシンに広く分散させ、単一のホストマシンの障害によるアプリケーションの全体的な可用性への影響が制限され、さらにユーザーのアプリケーションの安定性及び可用性を向上させることを役割とする。
【００７１】
フリー優先度について、ｆｒｅｅＰｒｉｏの値が小さいほど、優先度が高くなる。例えば、各ホストマシンが完全に空いているか否かを判断し、完全に空いている場合、フリー優先度の値を０にし、完全に空いているのではない場合、フリー優先度の値を１にしてもよい。或いは、完全に空いている場合、フリー優先度の値を１にし、完全に空いているのではない場合、フリー優先度の値を０にするなどにしてもよい。説明の便宜上、本願の実施例では、完全に空いている場合、フリー優先度の値を０にし、完全に空いているのではない場合、フリー優先度の値を１にすることを例として説明する。
【００７２】
フリー優先度は、空いているホストマシンを保護し、空いていないホストマシンに優先的に仮想マシンを配置して、空いていないホストマシン上のリソースを十分に利用し、リソースの利用率を向上させることを役割とする。
【００７３】
イメージキャッシュ優先度について、ｉｍｇＰｒｉｏの値が小さいほど、優先度が高くなる。候補ホストマシンリストを走査し、各ホストマシンには仮想マシンに必要なイメージファイルがあるか否かを判断し、例えば、イメージファイルがある場合、イメージキャッシュ優先度の値を０にし、イメージファイルがない場合、イメージキャッシュ優先度の値を１にしてもよい。
【００７４】
イメージキャッシュ優先度は、仮想マシンイメージが記憶されたホストマシンに優先的に仮想マシンを配置することにより、実際に仮想マシンを作成する際にイメージのダウンロードを省くことを可能にし、作成時間を節約し、仮想マシンの作成プロセスのリアルタイム性を向上させることを役割とする。
【００７５】
断片化率優先度について、ｆｒａｇｍｅｎｔＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、断片化率優先度を計算してもよい。ＣＰＵ及びメモリの２次元のリソースに基づいて、優先度を計算する。デフォルトでは、断片化率優先度は、ＣＰＵの断片化率にメモリの断片化率を掛けたものに等しい。
【００７６】
断片化率優先度は、ホストマシンのリソースを十分に利用し、リソースの断片化率を低下させ、さらにリソース利用率を向上させ、運用コストを削減することを役割とする。
【００７７】
各候補ホストマシンそれぞれの各次元の優先度値が決定された後、各次元の優先度値の高い順にホストマシンをランキングして、候補ホストマシンリストを得、候補ホストマシンリストから、合致度が最も高い１つの候補ホストマシンをターゲットホストマシンとして決定する。具体的な決定過程は、
各次元の優先度の高い順に、同一の次元のホストマシンを優先度値の大きい順にランキングし、同一の次元の同じ優先度値のホストマシンに対して、次の次元の優先度値に従ってランキングを行うことにより、優先度の高い順にランキングされた候補ホストマシンリストを得る、ことを含んでもよい。
【００７８】
候補ホストマシンがランキングされた後、第１位にランキングされた候補ホストマシンが最適であり、この最適な候補ホストマシンに他の作成タスクが存在する可能性があるため、必ずしも作成の成功を保証できず、リソースの差し引きを模擬するような方式でターゲットホストマシンを決定する必要がある。
【００７９】
ターゲットホストマシンを決定する過程では、まず、ランキングされた候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、各候補ホストマシンに対応する残りリソースをそれぞれ得、ホストマシンに対してリソースの差し引きを模擬することを完了する。仮想マシンのリソース要件は、仮想マシンに対応する仮想マシン情報に含まれる。即ち、ランキングされた候補ホストマシンの降順に従って、第１位にランキングされた候補ホストマシンから始めて、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引き、ある候補ホストマシンからの差し引きが成功すると、差し引きに成功した候補ホストマシンをターゲットホストマシンとする。
【００８０】
ランキング順序は、予め設定されてもよい。例えば、デフォルトのランキング基準、即ち優先度の高い順は、プライベートネットワーク優先度（ｖｐｃＰｒｉｏ）、並行タスク優先度（ｔａｓｋＰｒｉｏ）、履歴エラー優先度（ｅｒｒｏｒＰｒｉｏ）、非アフィニティ優先度（ａｆｆｉｎｉｔｙＰｒｉｏ）、フリー優先度（ｆｒｅｅＰｒｉｏ）、イメージキャッシュ優先度（ｉｍｇＰｒｉｏ）、及び断片化率優先度（ｆｒａｇｍｅｎｔＰｒｉｏ）であってもよい。ランキング基準は、デフォルト基準範囲内で選択されてもよく、順序は、実際の必要に応じて、柔軟的に調整して設定されてもよい。
【００８１】
次に、候補ホストマシンの残りリソースが得られた後、残りリソースを共通リソース情報へコミットし、ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定する。候補ホストマシンの残りリソースを、各ホストマシンの残りリソースデータをメンテナンスするためのデータベースに書き込み、書き込みが成功すると、書き込みに成功した候補ホストマシンをターゲットホストマシンとするようにしてもよい。
【００８２】
ターゲットホストマシンが決定された後、該ターゲットホストマシン上に仮想マシンを作成することが可能になる。いくつかの実施例では、仮想マシンの作成には、ターゲットホストマシンのリソースを消費する必要があるため、リソース情報プライベートコピーにおけるホストマシン情報を更新してもよいし、クラウドコンピューティングシステムに共通リソース情報を更新するよう通知してもよい。候補ホストマシンに対応する残りリソースのコミットが失敗した場合は、スケジューリング競合、即ち、同一のホストマシンが複数のリソーススケジューリングプロセスによって同時に選択されることが発生した可能性があることを表す。この場合、コミット回数が回数閾値を超えるか否かを判断し、コミット回数が回数閾値を超えていないとき、該候補ホストマシンのホストマシン情報を再取得し、該候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを再び得る。次に、再び得られた残りリソースを共通リソース情報へ再コミットする。コミット回数が回数閾値を超えたとき、候補ホストマシンリストから、次の候補ホストマシンを取得して、リソースの差し引きの模擬を行う。
【００８３】
説明すべきものとして、１番目のホストマシンからの差し引きが成功した場合、２番目のホストマシンに対して差し引き処理を行う必要がなく、直接に１番目のホストマシンをターゲットホストマシンとして決定してもよい。１番目のホストマシンからの差し引きが成功しない場合、２番目のホストマシンに対して差し引き処理を行い、あるホストマシンからの差し引きが成功するまで繰り返す必要がある。
【００８４】
さらに、候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得る前に、上記方法は、候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成する、ことを含んでもよい。
【００８５】
候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得ることは、候補ホストマシンターゲットリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得る、ことを含む。
【００８６】
ここで、所定数は、実際の必要に応じて、柔軟的に設定されてもよい。候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、ランダムにリランキングすることであってもよいし、所定の規則に従ってリランキングすることであってもよいが、具体的なリランキング方式がここで限定されない。候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、リランキングのために、候補ホストマシンリストの先頭ｋ（ｋは所定数）個の候補ホストマシンをランダムにシャッフルして、候補ホストマシンターゲットリストを得ることで、並行シナリオで複数のリソーススケジューリングプロセスが同じターゲットホストマシンを選択することを防止し、スケジューリング競合を効果的に回避することが可能になる、ことを目的とする。
【００８７】
上記から分かるように、本願の実施例では、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【００８８】
上記の実施例で説明した方法について、以下、例を挙げて、さらに詳しく説明する。
【００８９】
スケジューラを例にすると、仮想マシン作成要求が複数ある場合、メッセージキューには、各仮想マシン作成要求に対応するメッセージが記憶され、複数のスケジューラは、並行的に、メッセージキューのメッセージから仮想マシン作成要求を抽出し、仮想マシン作成要求に付けられている仮想マシン情報に基づいて、各仮想マシン作成要求に対して適当なホストマシンを選択し、ホストマシン上に対応の仮想マシンを作成する、ことを実行できる。複数のスケジューラは、並行的にリソーススケジューリングを行うため、並行的に、異なる仮想マシンに対してホストマシンを選択できる。これにより、クラウドコンピューティングシステムのスループット及び並行能力を向上させ、スケジューラがシステム全体の性能のボトルネックとなることを回避することができる。
【００９０】
図３を参照されたい。図３は、本願の実施例で提供されたリソーススケジューリング方法における複数のスケジューラが並行的にリソーススケジューリングを行うフローの模式図である。クラウドコンピューティングシステムには、３つのスケジューラ及び３つのホストマシンが含まれると仮定する。もちろん、クラウドコンピューティングシステムに３つのスケジューラ及び３つのホストマシンのみが含まれることは不可能である。本実施例は、挙げられる例の説明の便宜のためにすぎず、スケジューラ及びホストマシンの数への限定と理解されるべきではない。しかしながら、何個のスケジューラ及び何個のホストマシンがあっても、リソーススケジューリング過程は、類似するものであり、この例に従って理解すればよい。
【００９１】
ここで、該方法のフローは、下記のステップを含んでもよい。
【００９２】
２０１で、端末は、仮想マシン情報が付けられている仮想マシン作成要求をクラウドコンピューティングシステムの受信器に送信する。
【００９３】
クラウドコンピューティングシステムのデータセンターの規模の継続的な拡大に伴い、ホストマシンの種類及び数がますます多くなり、リソーススケジューリングのロジックがますます複雑になる。また、サービス要件の急速な成長に伴い、単位時間で処理する必要がある仮想マシン作成要求が急速に増加することで、リソーススケジューリングの応答遅延がさらに増加する。従来のリソーススケジューリング方式の高い応答遅延や低いスループットなどの問題を解決するために、本実施例では、複数のスケジューラが並行的にリソーススケジューリングを行う。
【００９４】
まず、端末は、仮想マシン情報が付けられている仮想マシン作成要求をクラウドコンピューティングシステムの受信器に送信する。この端末は、仮想マシンの作成を担うユーザが使用する端末機器であってもよい。この仮想マシン情報は、上記で言及された仮想マシン情報と類似し、ここで説明を省略する。
【００９５】
２０２で、受信器は、受信された仮想マシン作成要求をメッセージにカプセル化し、メッセージをメッセージキューに記憶する。
【００９６】
受信器自身によってメッセージキューがメンテナンスされ、受信器は、仮想マシン作成要求を受信すると、仮想マシン作成要求をメッセージにカプセル化する。このメッセージのフォーマットは、実際の必要に応じて、柔軟的に設定されてもよく、例えば、ｋｅｙ−ｖａｌｕｅ又はｊｓｏｎのメッセージフォーマットなどであってもよい。次に、作成する仮想マシンに対応する仮想マシン情報をメッセージキューからスケジューラが取り出せるように、メッセージをメッセージキューに記憶する。受信器によって一定の時間帯で受信された仮想マシン作成要求が多い場合、図４に示すように、メッセージキューには、複数のメッセージが記憶されてもよい。図４のメッセージキューには、メッセージＶＭ１〜メッセージＶＭｎが記憶されている。ここで、ｎは正整数であり、かつｎ＞１である。
【００９７】
２０３で、スケジューラ１は仮想マシン情報１を取得する。
【００９８】
２０４で、スケジューラ２は仮想マシン情報２を取得する。
【００９９】
２０５で、スケジューラ３は仮想マシン情報３を取得する。
【０１００】
説明すべきものとして、ステップ２０３〜ステップ２０５の実行順序は、同時実行であってもよいし、ステップ２０３〜ステップ２０５の順次実行であってもよいし、最初にステップ２０５、次にステップ２０３、最後にステップ２０４を実行するか、最初にステップ２０４、次にステップ２０５、最後にステップ２０３を実行するなどであってもよいが、具体的なステップの実行順序がここで限定されない。
【０１０１】
スケジューラは、リソーススケジューリングを実行するコンポーネントとして、仮想マシンに対して適当なホストマシンを選択する。スケジューラが関数ブラックボックスと見なされる場合、その入力は、ホストマシン情報及び仮想マシン情報であってもよく、その出力は、仮想マシンＩＤとホストマシンＩＤとのマッチングペア、即ち、＜ＶＭ  ＩＤ，ＨＯＳＴ  ＩＤ＞であってもよい。
【０１０２】
スケジューラ１、スケジューラ２、及びスケジューラ３は、並行的にリソーススケジューリングを行って、対応の仮想マシン情報をそれぞれ取得することができ、システムの並行性及びスループットを向上させることができる。
【０１０３】
ここで、スケジューラ１が仮想マシン情報１を取得する方式は、スケジューラ１が仮想マシン情報１取得要求を受信器に送信し、受信器が、受信された、スケジューラ１から送信された仮想マシン情報１取得要求に応じて、仮想マシン情報１が付けられているメッセージ１をスケジューラ１に送信し、スケジューラ１が、受信されたメッセージ１から仮想マシン情報１を抽出できるような方式１と、スケジューラ１が、メッセージキューに記憶されたメッセージを直接に読み取り、その中から仮想マシン情報１を取得するような方式２と、を含んでもよい。
【０１０４】
説明すべきものとして、スケジューラ２が仮想マシン情報２を取得する方式、及びスケジューラ３が仮想マシン情報３を取得する方式は、スケジューラ１が仮想マシン情報１を取得する方式と類似し、ここで説明を省略する。
【０１０５】
２０６で、スケジューラ１は共通リソース情報を取得する。
【０１０６】
２０７で、スケジューラ２は共通リソース情報を取得する。
【０１０７】
２０８で、スケジューラ３は共通リソース情報を取得する。
【０１０８】
説明すべきものとして、ステップ２０６〜ステップ２０８の実行順序は、同時実行であってもよいし、ステップ２０６〜ステップ２０８の順次実行であってもよいし、最初にステップ２０８、次にステップ２０６、最後にステップ２０７を実行するなどであってもよいが、具体的なステップの実行順序がここで限定されない。
【０１０９】
クラウドコンピューティングシステムのリソースマネージャーは、共通リソース情報をメンテナンスし、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれる。ホストマシンがクラウドコンピューティングシステムに入るには、ホストマシン導入プロセスによって必要な初期化を行う必要がある。ホストマシンは、そのホストマシン情報をリソースマネージャーに報告し、リソースマネージャーは、ホストマシン情報を共通リソース情報に記憶することができる。ホストマシン情報の更新があった場合、リソースマネージャーは、共通リソース情報を適時に更新することもできる。
【０１１０】
ここで、スケジューラ１が共通リソース情報を取得する方式は、スケジューラ１が共通リソース情報取得要求をリソースマネージャーに送信し、リソースマネージャーが、受信された、スケジューラ１から送信された共通リソース情報取得要求に応じて、対応の共通リソース情報をスケジューラ１に送信するような方式１と、スケジューラ１が、共通リソース情報を記憶したデータベースを直接に読み取り、その中から共通リソース情報を取得するような方式２と、を含んでもよい。
【０１１１】
説明すべきものとして、スケジューラ２が共通リソース情報を取得する方式、及びスケジューラ３が共通リソース情報を取得する方式は、スケジューラ１が共通リソース情報を取得する方式と類似し、ここで説明を省略する。スケジューラ１、スケジューラ２、及びスケジューラ３は、並行的に又は所定時間間隔で、共通リソース情報を取得してもよい。
【０１１２】
２０９で、スケジューラ１は、受信された共通リソース情報及び仮想マシン情報１に基づいて、自身でメンテナンスされるリソース情報プライベートコピー１を更新する。
【０１１３】
２１０で、スケジューラ２は、受信された共通リソース情報及び仮想マシン情報２に基づいて、自身でメンテナンスされるリソース情報プライベートコピー２を更新する。
【０１１４】
２１１で、スケジューラ３は、受信された共通リソース情報及び仮想マシン情報３に基づいて、自身でメンテナンスされるリソース情報プライベートコピー３を更新する。
【０１１５】
説明すべきものとして、ステップ２０９〜ステップ２１１の実行順序は、実際の状況に応じて、柔軟的に設定されてもよいが、具体的なステップの実行順序がここで限定されない。
【０１１６】
スケジューラ１自身によってリソース情報プライベートコピー１がメンテナンスされ、スケジューラ２自身によってリソース情報プライベートコピー２がメンテナンスされ、スケジューラ３自身によってリソース情報プライベートコピー３がメンテナンスされる。リソース情報プライベートコピー１、リソース情報プライベートコピー２、及びリソース情報プライベートコピー３のそれぞれには、所定のホストマシンに対応するホストマシン情報が含まれる。この所定のホストマシンは、クラウドコンピューティングシステムのすべてのホストマシンの一部又は全部であってもよい。共通リソース情報に基づいてリソース情報プライベートコピーを更新することにより、リソース情報の一致性及び情報の正確さが保証される。
【０１１７】
さらに、図６に示すように、スケジューラ１が、受信された共通リソース情報及び仮想マシン情報１に基づいて、自身でメンテナンスされるリソース情報プライベートコピー１を更新することは、下記のステップを含んでもよい。
【０１１８】
３０１で、スケジューラ１は、リソース情報プライベートコピーの初回更新であるか否かを判断し、リソース情報プライベートコピーの初回更新である場合、ステップ３０２〜ステップ３０４を順次に実行し、リソース情報プライベートコピーの初回更新ではない場合、ステップ３０５を実行する。
【０１１９】
３０２で、スケジューラ１は、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別する。
【０１２０】
３０３で、スケジューラ１は、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする。
【０１２１】
３０４で、スケジューラ１は、完全更新タイムスタンプ及び増分更新タイムスタンプを記録する。
【０１２２】
スケジューラ１は、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定し、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶してもよい。
【０１２３】
３０５で、スケジューラ１は、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得する。
【０１２４】
３０６で、スケジューラ１は、時間差が所定の完全更新閾値より大きいか否かを判断し、時間差が所定の完全更新閾値より大きいとき、ステップ３０７〜ステップ３０９を順次に実行し、時間差が所定の完全更新閾値より大きくないとき、ステップ３１０を実行する。
【０１２５】
３０７で、スケジューラ１は、共通リソース情報の中から、仮想マシン情報を満たす第１ターゲットホストマシン情報を選別する。
【０１２６】
３０８で、スケジューラ１は、第１ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする。
【０１２７】
３０９で、スケジューラ１は、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプを記録する。
【０１２８】
スケジューラ１は、現在タイムスタンプを第１完全更新タイムスタンプ及び第１増分更新タイムスタンプとして設定し、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプをリソース情報プライベートコピーに記憶してもよい。
【０１２９】
３１０で、スケジューラ１は、共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得する。
【０１３０】
３１１で、スケジューラ１は、ホストマシン情報の中から、仮想マシン情報を満たす第２ターゲットホストマシン情報を取得する。
【０１３１】
３１２で、スケジューラ１は、第２ターゲットホストマシン情報をリソース情報プライベートコピーに追加する。
【０１３２】
３１３で、スケジューラ１は、第２増分更新タイムスタンプを記録する。
【０１３３】
スケジューラ１は、現在タイムスタンプを第２増分更新タイムスタンプとして設定し、第２増分更新タイムスタンプをリソース情報プライベートコピーに記憶してもよい。リソース情報同期化バッファリングメカニズムでは、リソース情報プライベートコピーの増分更新を行え、リソース情報同期化にかかる時間が著しく削減される。
【０１３４】
スケジューラ２が、共通リソース情報及び仮想マシン情報２に基づいて、リソース情報プライベートコピー２を更新すること、及び、スケジューラ３が、共通リソース情報及び仮想マシン情報３に基づいて、リソース情報プライベートコピー３を更新することは、両者の更新方式がスケジューラ１の更新方式と類似し、ここで説明を省略する。
【０１３５】
図４に示すように、スケジューラの数が限定されない場合、ｎ（ｎは、１より大きい正整数）個のスケジューラは、並行的に、メッセージキューのメッセージから、仮想マシン情報を抽出し、共通リソース情報に基づいて、自身でメンテナンスされるリソース情報プライベートコピーをそれぞれ更新することができる。
【０１３６】
２１２で、スケジューラ１は、リソース情報プライベートコピー１に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンＡを決定する。
【０１３７】
２１３で、スケジューラ２は、リソース情報プライベートコピー２に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンＢを決定する。
【０１３８】
２１４で、スケジューラ３は、リソース情報プライベートコピー３に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンＣを決定する。
【０１３９】
説明すべきものとして、ステップ２１２〜ステップ２１４の実行順序は、実際の状況に応じて、柔軟的に設定されてもよいが、具体的なステップの実行順序がここで限定されない。
【０１４０】
スケジューラ１は、仮想マシン情報におけるリソース要件と、リソース情報プライベートコピーにおけるホストマシン情報とに基づいて、リソース情報プライベートコピーにおけるホストマシン集合をフィルタリングし、条件に合致するホストマシンを保持し、条件に合致しないホストマシンを除外することにより、少なくとも１つの候補ホストマシンを得てもよい。
【０１４１】
いくつかの実施例では、スケジューラ１は、構築された直列フィルターに従って、複数のホストマシンに対して相応のフィルタリングを行うように各フィルターを制御することにより、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを得てもよい。例えば、８つのホストマシンの場合を例にすると、８つのホストマシンは、ホストマシン情報と、作成する仮想マシンの仮想マシン情報とに基づいてフィルタリングされ、フィルターＡを通過する際に、フィルターＡが、仮想マシンに必要なＣＰＵ、メモリ、及びディスクリソースなどの、ホストマシンにより提供可能なハードウェアリソース要件を満たさないホストマシンをフィルタリングして除外し、リソース要件に合致するホストマシンを保持することを担う場合、今回のフィルタリングにより、２つのホストマシンがフィルタリングされて除外される。残りの６つのホストマシンは、フィルターＢに入る。フィルターＢが、仮想マシン情報に基づいて、ＳＳＤをサポートしないホストマシンをフィルタリングして除外することを担う場合、フィルターＢによるフィルタリングを経ると、もう１つのホストマシンがフィルタリングされて除外され、５つのホストマシンがまだ残っている。次に、他のフィルターを順次に通過する。他のフィルターは、クラウドディスクをサポートしないホストマシンをフィルタリングして除外することを担ったり、プライベートネットワークをサポートしないホストマシンをフィルタリングして除外することを担ったりしてもよい。最後にフィルターＸに至る。フィルターＸは、適合しない仮想化タイプのうち１つをフィルタリングして除外することを担う。例えば、ホストマシンの仮想化タイプがＫＶＭである必要がある場合、仮想化タイプがＸｅｎであるホストマシンがフィルタリングされて除外される。フィルタリング終了後、それぞれ候補ホストマシンＡ、候補ホストマシンＢ、及び候補ホストマシンＣである３つの候補ホストマシンが得られる。
【０１４２】
さらに、図７に示すように、スケジューラ１は、少なくとも１つの候補ホストマシンが得られた後、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを決定してもよい。具体的な実行手順は、下記のステップを含んでもよい。
【０１４３】
４０１で、スケジューラ１は、少なくとも１つの候補ホストマシンのそれぞれの各次元の優先度値を決定する。
【０１４４】
各ホストマシンそれぞれの各次元の優先度値の計算方式は、上記実施例で言及された優先度値の計算方式と類似し、ここで説明を省略する。
【０１４５】
例えば、それぞれ候補ホストマシンＡ、候補ホストマシンＢ、及び候補ホストマシンＣである３つの候補ホストマシンが得られる場合、候補ホストマシンＡ、候補ホストマシンＢ、及び候補ホストマシンＣの各次元の優先度値をそれぞれ計算してもよい。
【０１４６】
４０２、スケジューラ１は、各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成する。
【０１４７】
ここで、ランキング方式は、上記実施例で言及されたランキング方式と類似し、ここで説明を省略する。
【０１４８】
例えば、スケジューラ１により生成された候補ホストマシンリスト１において、各候補ホストマシンが、優先度値の高い順に、候補ホストマシンＡ、候補ホストマシンＢ、及び候補ホストマシンＣとランキングされる。
【０１４９】
４０３で、スケジューラ１は、候補ホストマシンリストから、ランキング順に１つのホストマシンを取り出す。
【０１５０】
例えば、スケジューラ１は、生成された候補ホストマシンリスト１から、候補ホストマシンＡを取り出す。
【０１５１】
４０４で、スケジューラ１は、仮想マシンのリソース要件に基づいて、差し引き後の該ホストマシンの残りリソースを計算する。
【０１５２】
例えば、仮想マシンのリソース要件が８コア・８Ｇのリソースであり、候補ホストマシンＡのホストマシン情報に１０コア・１０Ｇのリソースが含まれ、仮想マシンの作成に８コア・８Ｇのリソースを差し引く必要がある場合、差し引き後の候補ホストマシンＡの残りリソースは、２コア・２Ｇのリソースとなる。
【０１５３】
４０５で、スケジューラ１は、残りリソースを共通リソース情報へコミットする。
【０１５４】
４０６で、スケジューラ１は、コミットが成功したか否かを判断し、コミットが成功した場合、ステップ４０７及びステップ４０８を順次に実行し、コミットが成功しなかった場合、ステップ４０９を実行する。
【０１５５】
４０７で、スケジューラ１は、該ホストマシンをターゲットホストマシンとして決定する。
【０１５６】
コミットが成功した場合は、共通リソース情報における残りリソースの値の修正が成功したことを表す。ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定する。
【０１５７】
４０８で、スケジューラ１は、リソース情報プライベートコピーを更新する。
【０１５８】
即ち、スケジューラ１は、リソース情報プライベートコピー１を更新する。
【０１５９】
４０９で、スケジューラ１は、コミット回数がスケジューリング競合閾値を超えるか否かを判断し、コミット回数がスケジューリング競合閾値を超えていないとき、ステップ４１０を実行し、コミット回数がスケジューリング競合閾値を超えたとき、ステップ４１１を実行する。
【０１６０】
コミットが失敗した場合は、複数のスケジューラが並行的に同一のホストマシンに対してコミットを試みることに起因する可能性があり、このとき、１つのみのスケジューラによるコミットが成功可能であり、それ以外のスケジューラによる今回のコミットが失敗する。
【０１６１】
該スケジューリング競合閾値は、実際の状況に応じて、柔軟的に設定されてもよい。いくつかの実施例では、該スケジューリング競合閾値は、３回〜８回の範囲に設定されてもよい。これにより、同一のホストマシン上に短時間で複数の仮想マシンを作成して、ホストマシンに過度の圧力をかけることを回避できる。
【０１６２】
４１０で、スケジューラ１は、該ホストマシンのリソースデータを再取得して、ステップ４０４を実行する。
【０１６３】
複数のスケジューラが並行して動作し、残りリソースのコミット時にスケジューリング競合が発生する可能性があるので、スケジューラは、ホストマシンの最新のリソースデータを検索して、再度の差し引きや残りリソースのコミットなどの処理を開始してもよい。同一のホストマシンに対するスケジューリング競合の回数が閾値を超えた場合、候補ホストマシンリストの次のホストマシン、即ち、２番目に良いホストマシンを選択する。これにより、スケジューリング競合のコストがより低くなり、スケジューリング競合の効果的な処理が実現される。
【０１６４】
４１１で、スケジューラ１は、選択されていない候補ホストマシンがまだあるか否かを判断し、選択されていない候補ホストマシンがまだある場合、ステップ４０３を実行し、選択されていない候補ホストマシンがない場合、ステップ４１２を実行する。
【０１６５】
説明すべきものとして、スケジューラ１は、候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを得、候補ホストマシンターゲットリストの各候補ホストマシンの順序でホストマシンを取り出し、仮想マシンのリソース要件に基づいて、差し引き後の該ホストマシンの残りリソースを計算してもよい。これにより、複数のスケジューラが並行的にリソーススケジューリングを行うシナリオで同じホストマシンを選択することを防止し、スケジューリング競合を効果的に回避することができる。
【０１６６】
いくつかの実施例では、ある候補ホストマシンの残りリソースのコミットが失敗した場合、スケジューリングサーバは、該候補ホストマシンの残りリソースのコミット回数がスケジューリング競合閾値を超えるか否かを決定してもよい。
【０１６７】
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えていないと決定されたとき、スケジューリングサーバは、該候補ホストマシンの最新のリソースデータを取得し、該候補ホストマシンに対応する前記残りリソースを再決定する。
【０１６８】
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えたと決定されたとき、スケジューリングサーバは、候補ホストマシンリストの次の候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、相応の残りリソースを得、前記相応の残りリソースをコミットしてもよい。
【０１６９】
４１２で、スケジューラ１は、選択されていないホストマシンがないと決定する。
【０１７０】
スケジューラ２が、リソース情報プライベートコピー２に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンＢを決定すること、及び、スケジューラ３が、リソース情報プライベートコピー３に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンＣを決定することは、両者の決定方式がスケジューラ１の決定方式と類似し、ここで説明を省略する。
【０１７１】
２１５で、ターゲットホストマシンＡが決定された後、スケジューラ１は、ホストマシンＡに、仮想マシン１を作成する要求を送信する。
【０１７２】
２１６で、ターゲットホストマシンＢが決定された後、スケジューラ２は、ホストマシンＢに、仮想マシン２を作成する要求を送信する。
【０１７３】
２１７で、ターゲットホストマシンＣが決定された後、スケジューラ３は、ホストマシンＣに、仮想マシン３を作成する要求を送信する。
【０１７４】
２１８で、ホストマシンＡは、仮想マシン１を作成する要求を受信すると、仮想マシン１を作成する。
【０１７５】
２１９で、ホストマシンＢは、仮想マシン２を作成する要求を受信すると、仮想マシン２を作成する。
【０１７６】
２２０で、ホストマシンＣは、仮想マシン３を作成する要求を受信すると、仮想マシン３を作成する。
【０１７７】
以下、例を挙げて説明する。図５に示すように、各スケジューラが並行的にリソーススケジューリングを行い、スケジューラ１で得られた候補ホストマシンリスト１において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンＡ、候補ホストマシンＢ、及び候補ホストマシンＣの順であり、スケジューラ２で得られた候補ホストマシンリスト２において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンＡ、候補ホストマシンＣ、及び候補ホストマシンＢの順であり、スケジューラ３で得られた候補ホストマシンリスト３において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンＢ、候補ホストマシンＡ、及び候補ホストマシンＣの順である、と仮定する。
【０１７８】
この場合、スケジューラ１は、候補ホストマシンリスト１から、第１位にランキングされた候補ホストマシンＡを取り出し、仮想マシン１のリソース要件に基づいて差し引き計算を行って、候補ホストマシンＡの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、候補ホストマシンＡをターゲットホストマシンとして決定することができる。スケジューラ１は、ホストマシンＡに、仮想マシン１を作成する要求を送信し、ホストマシンＡは、要求を受信すると、仮想マシン１を作成する。
【０１７９】
スケジューラ２は、候補ホストマシンリスト２から、第１位にランキングされた候補ホストマシンＡを取り出し、仮想マシン２のリソース要件に基づいて差し引き計算を行って、候補ホストマシンＡの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが失敗して、かつコミット回数が閾値に達し、この場合、候補ホストマシンリスト２から、第２位にランキングされた候補ホストマシンＣを取り出す必要があり、仮想マシン２のリソース要件に基づいて差し引き計算を行って、候補ホストマシンＣの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、候補ホストマシンＣをターゲットホストマシンとして決定することができる。スケジューラ２は、ホストマシンＣに、仮想マシン２を作成する要求を送信し、ホストマシンＣは、要求を受信すると、仮想マシン２を作成する。
【０１８０】
スケジューラ３は、候補ホストマシンリスト３から、第１位にランキングされた候補ホストマシンＢを取り出し、仮想マシン３のリソース要件に基づいて差し引き計算を行って、候補ホストマシンＢの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、候補ホストマシンＢをターゲットホストマシンとして決定することができる。スケジューラ３は、ホストマシンＢに、仮想マシン３を作成する要求を送信し、ホストマシンＢは、要求を受信すると、仮想マシン３を作成する。
【０１８１】
説明すべきものとして、図５は一例にすぎず、図５に示されるリソーススケジューリングシナリオは、本願の実施例の構成をより明確に説明するためのものであり、本願の実施例で提供された構成を限定するものではない。例えば、図５には、スケジューラ４などがさらに含まれてもよい。スケジューラ４で得られた候補ホストマシンリスト４において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンＹ、候補ホストマシンＸ、及び候補ホストマシンＤの順である。スケジューラ４は、候補ホストマシンリスト４から、第１位にランキングされた候補ホストマシンＹを取り出し、仮想マシン４のリソース要件に基づいて差し引き計算を行って、候補ホストマシンＹの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、スケジューラ４が候補ホストマシンＹ上に仮想マシン４を作成できると決定することができる。
【０１８２】
上記から分かるように、本実施例では、複数のスケジューラは、並行的に、メッセージキューのメッセージから仮想マシン作成要求を抽出し、仮想マシン作成要求に付けられている仮想マシン情報に基づいて、各仮想マシン作成要求に対して適当なターゲットホストマシンを選択し、ターゲットホストマシン上に対応の仮想マシンを作成する、ことを実行できる。リソース情報のバッファリングメカニズムを設ける（共通リソース情報及びリソース情報プライベートコピーを設けることを含めて）ことにより、複数のスケジューラが並行的にリソーススケジューリングを行えることが実現され、リソーススケジューリングの並行度及びスループットを効果的に向上させ、スケジューリング遅延を低減させ、システム全体のスケーラビリティを向上させることができる。
【０１８３】
本願の実施例で提供されたリソーススケジューリング方法をより良く実施するために、本願の実施例では、上記リソーススケジューリング方法に基づく装置も提供されている。ここで、用語の意味は、上記リソーススケジューリング方法における意味と同じであり、具体的な実現の詳細は、方法に係る実施例の説明を参照すればよい。
【０１８４】
図８を参照されたい。図８は、本願の実施例で提供されたリソーススケジューリング装置の構成の模式図である。ここで、このリソーススケジューリング装置は、第１取得ユニット５０１、第２取得ユニット５０２、更新ユニット５０３、第３取得ユニット５０４、及び作成ユニット５０５などを含んでもよい。
【０１８５】
ここで、第１取得ユニット５０１は、作成する仮想マシンに対応する仮想マシン情報を取得する。
【０１８６】
例えば、第１取得ユニット５０１は、クラウドコンピューティングシステムに予め設けられたメッセージキューから、作成する仮想マシンに対応する仮想マシン情報を取得してもよい。ここで、仮想マシンとは、ソフトウェアでエミュレートされる、ハードウェアシステム機能を有しかつ隔離された環境で実行される完全なコンピュータシステムを指す。
【０１８７】
メッセージキューのメッセージは、非同期タスクであってもよい。メッセージキューのメッセージは、メッセージキューを流れる。クラウドコンピューティングシステムの各コンポーネントは、生産者または消費者の身分を有する。生産者は、メッセージキューにメッセージを送信する。消費者は、メッセージキューからメッセージを受信する。例えば、クラウドコンピューティングシステムでは、受信器が生産者として、端末から送信された仮想マシン情報が付けられている仮想マシン作成要求を受信すると、仮想マシン情報をメッセージにカプセル化して、メッセージをメッセージキューに記憶し、これらの仮想マシン情報がメッセージキューに並んで第１取得ユニット５０１によるリソーススケジューリングを待ち、第１取得ユニット５０１が消費者として、メッセージキューから仮想マシン情報を抽出し、仮想マシン情報に対応する作成する仮想マシンに対してホストマシンを選択する。
【０１８８】
仮想マシン情報には、作成する仮想マシンに必要なプロセッサ情報、メモリ情報、及びディスク情報など、並びに、作成する仮想マシンの、ソリッドステートドライブ、クラウドディスク、プライベートネットワーク、ネットワークカード、ルーター、ネットワーク構成、データセンター、ラック、ホストマシンの機種、ホストマシンの属するリソースプール、及び仮想マシンのタイプなどに対するリソース要件の少なくとも１つが含まれてもよい。理解できるように、仮想マシン情報のタイプは、実際の必要に応じて、柔軟的に設定されてもよいが、具体的な内容がここで限定されない。
【０１８９】
第２取得ユニット５０２は、共通リソース情報を取得する。
【０１９０】
ここで、共通リソース情報は、クラウドコンピューティングシステムに対して、データセンター全体のリソースデータを記憶・メンテナンスするためのものである。この共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれる。理解できるように、この共通リソース情報は、リソースマネージャーによってメンテナンスされてもよく、クラウドコンピューティングシステムの他の機器によってメンテナンスされてもよく、次に、第２取得ユニット５０２によって、共通リソース情報をメンテナンスする機器から取得されてもよい。例えば、この共通リソース情報がクラウドコンピューティングシステムのリソースマネージャーによってメンテナンスされる場合、第２取得ユニット５０２は、リソースマネージャーから、共通リソース情報を取得できる。説明の便宜上、本願の実施例では、すべて、共通リソース情報がリソースマネージャーによってメンテナンスされる場合を例として説明する。
【０１９１】
説明すべきものとして、共通リソース情報は、クラウドコンピューティングシステム内でグローバルに一意であり、そのメンテナンス形式は、論理データテーブルであってもよい。例えば、データテーブルの各行のそれぞれは、１つのホストマシンを表し、データテーブルの各列は、ホストマシンに含まれる異なるタイプのリソースを表す。この異なるタイプのリソースは、ホストマシンのネットワーク間のインターネットプロトコル（ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、利用可能な中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、利用可能なメモリ、及び利用可能なディスクなどを含んでもよい。メンテナンス過程では、共通リソース情報に対して、追加、読み取り、更新、又は削除などの処理を行うことができる。これらの処理は、データセンターのホストマシンリソースのオンライン化、変更、又はオフライン化などの過程に対応する。
【０１９２】
ここで、ホストマシンとは、仮想マシンソフトウェアをインストールするための物理的なコンピュータを指す。１つのホストマシン上には、仮想マシンソフトウェアによって、１つ又は複数の仮想マシンを作成してもよい。
【０１９３】
いくつかの実施例では、ホストマシン情報は、ホストマシン識別子、ＩＰアドレス、機種、オペレーティングシステム名、カーネルバージョン、ＣＰＵ型番、仮想化方式、論理領域番号、インターネットデータセンター番号、ホストマシン状態、クラウドディスクをサポートするか否か、ソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ）をサポートするか否か、ネットワークバージョン、ＣＰＵノードリソースクォータ、利用可能なメモリリソース、及び利用可能なディスクリソースなどを含んでもよいが、具体的な内容がここで限定されない。
【０１９４】
説明すべきものとして、ホストマシンがクラウドコンピューティングシステムに入るには、ホストマシン導入プロセスによって必要な初期化を行う必要がある。ホストマシンは、そのホストマシン情報をリソースマネージャーに報告し、リソースマネージャーは、ホストマシン情報を共通リソース情報に記憶してもよい。ホストマシンは、そのホストマシン情報をリソーススケジューリング装置に報告してもよい。リソーススケジューリング装置は、ホストマシン情報を予め設けられたリソース情報プライベートコピーに記憶してもよい。或いは、リソーススケジューリング装置は、リアルタイム又は所定時間間隔で、情報取得要求をリソースマネージャーに送信し、情報取得要求に応じてリソースマネージャーからフィードバックされた共通リソース情報を受信し、共通リソース情報に基づいてリソース情報プライベートコピーを更新する。或いは、共通リソース情報の更新があった場合、リソースマネージャーは、更新されたホストマシン情報をリソーススケジューリング装置に自発的に送信する。
【０１９５】
更新ユニット５０３は、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新する。
【０１９６】
リソーススケジューリング装置自身でメンテナンスされるリソース情報プライベートコピーのメンテナンス形式は、共通リソース情報のリソーススケジューリング装置のメモリにおけるバッファである。ここで、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれる。該所定のホストマシンは、クラウドコンピューティングシステムのすべてのホストマシンの一部又は全部であってもよい。リソーススケジューリングの結果を良くするために、更新ユニット５０３は、リソーススケジューリングを行う前に、リソース情報プライベートコピーと共通リソース情報とを同期化する必要があり、共通リソース情報を取得し、共通リソース情報に基づいてリソース情報プライベートコピーを更新することにより、リソース情報プライベートコピーと共通リソース情報との一致性を保証してもよい。
【０１９７】
更新時間を短縮するために、更新ユニット５０３は、共通リソース情報及び仮想マシン情報に基づいて、リソース情報プライベートコピーを更新してもよい。いくつかの実施形態では、図９に示すように、更新ユニット５０３は、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加する更新サブユニット５０３１を含む。
【０１９８】
いくつかの実施例では、更新サブユニット５０３１は、具体的に、リソース情報プライベートコピーの初回更新である場合、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーし、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定し、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶する。
【０１９９】
具体的には、まず、更新サブユニット５０３１は、リソース情報プライベートコピーの初回更新であるか否かを判断し、例えば、リソース情報プライベートコピーが空であるか否かを判断してもよい。リソース情報プライベートコピーが空である場合、リソース情報プライベートコピーの初回更新であると決定し、リソース情報プライベートコピーが空ではない場合、リソース情報プライベートコピーの初回更新ではないと決定する。初回更新である場合、現在のリソース情報プライベートコピーが空であり、完全更新を行う必要があり、即ち、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする必要がある。説明すべきものとして、直接に共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【０２００】
ターゲットホストマシン情報をリソース情報プライベートコピーにコピーした後、完全更新タイムスタンプ及び増分更新タイムスタンプを記録する必要がある。いくつかの実施例では、更新サブユニット５０３１は、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定する。例えば、現在タイムスタンプが２０１７年９月１５日午前１１：００である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、２０１７年９月１５日午前１１：００となる。次に、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【０２０１】
いくつかの実施例では、更新サブユニット５０３１は、具体的に、リソース情報プライベートコピーの初回更新ではない場合、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得し、時間差が所定の完全更新閾値より大きいか否かを判断し、時間差が完全更新閾値より大きいとき、共通リソース情報の中から、仮想マシン情報を満たす第１ターゲットホストマシン情報を選別し、第１ターゲットホストマシン情報をリソース情報プライベートコピーにコピーし、現在タイムスタンプを第１完全更新タイムスタンプ及び第１増分更新タイムスタンプとして設定し、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプをリソース情報プライベートコピーに記憶する。
【０２０２】
具体的には、リソース情報プライベートコピーの初回更新ではない場合、更新サブユニット５０３１は、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得する。ここで、最後の完全更新タイムスタンプは、現在タイムスタンプより前の最後に記録された完全更新タイムスタンプである。
【０２０３】
次に、更新サブユニット５０３１は、時間差が所定の完全更新閾値より大きいか否かを判断する。この完全更新閾値は、実際の必要に応じて、柔軟的に設定されてもよく、具体的な値がここで限定されない。例えば、完全更新頻度を低くするために、完全更新閾値に大きな値を設定してもよい。
【０２０４】
時間差が完全更新閾値より大きいとき、完全更新を行い、即ち、共通リソース情報の中から、仮想マシン情報を満たす第１ターゲットホストマシン情報を選別し、第１ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする。説明すべきものとして、現在の共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【０２０５】
次に、更新サブユニット５０３１は、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプを記録することにより、完全更新タイムスタンプ及び増分更新タイムスタンプを正確に記録する。いくつかの実施例では、現在タイムスタンプを第１完全更新タイムスタンプ及び第１増分更新タイムスタンプとして設定してもよい。例えば、現在タイムスタンプが２０１７年９月１６日午前８：００である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、２０１７年９月１６日午前８：００となる。次に、第１完全更新タイムスタンプ及び第１増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【０２０６】
さらに、更新サブユニット５０３１は、具体的に、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得し、ホストマシン情報の中から、仮想マシン情報を満たす第２ターゲットホストマシン情報を取得し、第２ターゲットホストマシン情報をリソース情報プライベートコピーに追加し、現在タイムスタンプを第２増分更新タイムスタンプとして設定し、第２増分更新タイムスタンプをリソース情報プライベートコピーに記憶する。
【０２０７】
クラウドコンピューティングシステムのホストマシンの規模が大きく、例えば、ホストマシンの規模は１００００程度であるが、リソーススケジューリング装置は１００程度である。このため、リソース情報プライベートコピーを更新するたびに、完全更新を行うと、即ち、共通リソース情報をリソース情報プライベートコピーに完全コピーすると、時間がかかる。更新にかかる時間を短縮するために、リソース情報の増分更新を行い、即ち、共通リソース情報のうち一部のリソース情報をリソース情報プライベートコピーに追加してもよい。
【０２０８】
具体的には、共通リソース情報におけるホストマシン情報が更新されるたびに、更新タイムスタンプを記録することにより、正確な更新日時を得る。更新サブユニット５０３１は、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得した後、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があったホストマシン情報を取得し、各ホストマシン情報が更新された更新タイムスタンプを取得し、次に、更新があったホストマシン情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を選別する。即ち、最後の増分更新タイムスタンプに基づいて、共通リソース情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプより大きいすべてのホストマシン情報を検索する。この最後の増分更新タイムスタンプは、現在タイムスタンプより前の最後の増分更新タイムスタンプである。
【０２０９】
共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報が得られた後、該ホストマシン情報に対して選別を行って、ホストマシン情報の中から、仮想マシン情報を満たす第２ターゲットホストマシン情報を取得し、第２ターゲットホストマシン情報をリソース情報プライベートコピーに追加する。
【０２１０】
次に、更新サブユニット５０３１は、第２増分更新タイムスタンプを記録することにより、増分更新タイムスタンプを正確に記録し、即ち、現在タイムスタンプを第２増分更新タイムスタンプとして設定し、第２増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。リソース情報プライベートコピーは、実質的に、メモリ内で実行されるバッファである。ほとんどの場合、更新サブユニット５０３１が増分更新を行うだけでよく、更新データ量も、かかる時間も少ない。いくつかの実施例では、今回の増分更新の前にオフラインになっているホストマシンも、リソース情報プライベートコピーから削除される。
【０２１１】
説明すべきものとして、上記第１ターゲットホストマシン情報、第２ターゲットホストマシン情報、第１完全更新タイムスタンプ、第１増分更新タイムスタンプ、及び第２増分更新タイムスタンプの「第１」及び「第２」は、現れたターゲットホストマシン情報、増分更新タイムスタンプ、又は完全更新タイムスタンプを区別するためのものにすぎず、それらの重要度への限定を表すものではない。
【０２１２】
第３取得ユニット５０４は、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得する。
【０２１３】
リソース情報プライベートコピーが更新された後、第３取得ユニット５０４は、リソース情報プライベートコピーを基に、作成する仮想マシンに対して、ホストマシンを選別する。仮想マシン情報におけるリソース要件と、リソース情報プライベートコピーにおけるホストマシン情報とに基づいて、リソース情報プライベートコピーにおけるホストマシン集合をフィルタリングし、条件に合致するホストマシンを保持し、条件に合致しないホストマシンを除外することにより、少なくとも１つの候補ホストマシンを得てもよい。
【０２１４】
いくつかの実施例では、第３取得ユニット５０４は、仮想マシン情報に基づいて、ホストマシン情報に応じて構築された直列フィルターに従って、複数のホストマシンに対して相応のフィルタリングを行うように各フィルターを制御することにより、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを得てもよい。
【０２１５】
ホストマシン情報に応じて、直列フィルタリングモデルを構築することができる。この直列フィルタリングモデルには、直列接続された複数のフィルターが含まれる。各フィルターそれぞれは、１つのフィルタリング機能を担う。各フィルターは、仮想マシン情報に基づいて相応の判断を行ってから、相応のフィルタリングを実行する。例えば、直列接続された１番目のフィルターは、仮想マシンに必要なＣＰＵ、メモリ、及びディスクリソースなどのリソース要件に基づいて、該リソース要件を満たさないホストマシンをフィルタリングして除外し、該リソース要件を満たすホストマシンのみを保持することを担い、直列接続された２番目のフィルターは、ＳＳＤをサポートするホストマシン、又はＳＳＤをサポートしないホストマシンをフィルタリングして除外することを担い、リソース要件において、ホストマシンがＳＳＤをサポートすることが要求される場合、２番目のフィルターは、該リソース要件に基づいて、ＳＳＤをサポートしないホストマシンをフィルタリングして除外し、ＳＳＤをサポートするホストマシンを保持する。
【０２１６】
理解できるように、他のフィルターの機能は、該フィルターの機能を参照して理解すればよい。但し、他のフィルターは、他のフィルタリング機能を担う。具体的なフィルタリングモデルにおける各フィルターの機能は、作成する仮想マシンのリソース要件に応じて設定されてもよいが、具体的な内容がここで限定されない。
【０２１７】
作成ユニット５０５は、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。
【０２１８】
少なくとも１つの候補ホストマシンが得られた後、作成ユニット５０５は、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを決定してもよい。ターゲットホストマシンの選択は、ランダムに選択することであってもよい。もちろん、合致度が最も良いターゲットホストマシンを選択するために、複数のホストマシンをフィルタリングして少なくとも１つの候補ホストマシンが得られた後、各候補ホストマシンそれぞれの各次元の優先度値を決定し、優先度値に従って少なくとも１つの候補ホストマシンをランキングしてもよい。
【０２１９】
いくつかの実施形態では、図１０に示すように、作成ユニット５０５は、
少なくとも１つの候補ホストマシンのそれぞれの各次元の優先度値を決定する決定サブユニット５０５１と、
各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成する生成サブユニット５０５２と、
候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得、リソース要件が、仮想マシンに対応する仮想マシン情報に含まれる差し引きサブユニット５０５３と、
残りリソースを共通リソース情報へコミットするコミットサブユニット５０５４と、
ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定し、ターゲットホストマシン上に仮想マシンを作成する作成サブユニット５０５５と、を含む。
【０２２０】
具体的には、まず、決定サブユニット５０５１は、各ホストマシンそれぞれの複数次元の優先度値を計算する。各次元の優先度は、プライベートネットワーク優先度（ｖｐｃＰｒｉｏ）、並行タスク優先度（ｔａｓｋＰｒｉｏ）、履歴エラー優先度（ｅｒｒｏｒＰｒｉｏ）、非アフィニティ優先度（ａｆｆｉｎｉｔｙＰｒｉｏ）、フリー優先度（ｆｒｅｅＰｒｉｏ）、イメージキャッシュ優先度（ｉｍｇＰｒｉｏ）、及び断片化率優先度（ｆｒａｇｍｅｎｔＰｒｉｏ）などを含んでもよい。
【０２２１】
ここで、プライベートネットワーク優先度値について、ｖｐｃＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、プライベートネットワーク優先度値を決定してもよい。例えば、プライベートネットワークをサポートするホストマシンのｖｐｃＰｒｉｏの値を０にし、プライベートネットワークをサポートしないホストマシンのｖｐｃＰｒｉｏの値を１にしてもよい。或いは、プライベートネットワークをサポートするホストマシンのｖｐｃＰｒｉｏの値を１にし、プライベートネットワークをサポートしないホストマシンのｖｐｃＰｒｉｏの値を０にするなどにしてもよい。説明の便宜上、本願の実施例では、すべて、プライベートネットワークをサポートするホストマシンのｖｐｃＰｒｉｏの値を０にして、プライベートネットワークをサポートしないホストマシンのｖｐｃＰｒｉｏの値を１にする場合を例として説明する。
【０２２２】
プライベートネットワークは、ＩＰアドレスが物理的なネットワークトポロジに依存せず、将来に移行がより容易である。プライベートネットワーク優先度は、プライベートネットワークをサポートするホストマシンに優先的に仮想マシンを配置して、将来の移行をより便利で柔軟にすることを役割とする。
【０２２３】
並行タスク優先度について、ｔａｓｋＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、並行タスク優先度を決定してもよい。ホストマシン上の現在のタスク数を判断し、タスク数が所定閾値より小さい場合、並行タスク優先度の値を０にし、タスク数が所定閾値より小さくない場合、並行タスク優先度の値を現在のタスク数にする。例えば、所定閾値はデフォルトで３である。もちろん、該所定閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【０２２４】
ホストマシン上の並行タスクが同時に実行され、並行性が高すぎると、仮想マシンの作成が遅くなり、ひいては失敗する可能性がある。並行タスク優先度は、並行タスク数がより低いホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率及びリアルタイム性を確保することを役割とする。
【０２２５】
履歴エラー優先度について、ｅｒｒｏｒＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、履歴エラー優先度を計算してもよい。ホストマシンの最近の期間（例えば、デフォルトで２４時間）内の履歴エラー数を判断し、履歴エラー数がエラー閾値より小さい場合、履歴エラー優先度の値を０にし、履歴エラー数がエラー閾値より小さくない場合、履歴エラー優先度の値を履歴エラー数にする。例えば、エラー閾値はデフォルトで５であってもよい。エラー閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【０２２６】
短時間でエラーが複数回発生したホストマシンには、何らかの障害が発生した可能性があり、障害を処理する前に、該ホストマシンに持続的に仮想マシンを配置すると、仮想マシンの作成タスクが失敗する可能性があり、成功率を低下させる。履歴エラー優先度は、エラーが多すぎないホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率を向上させることを役割とする。
【０２２７】
非アフィニティ優先度について、ａｆｆｉｎｉｔｙＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、非アフィニティ優先度を計算してもよい。仮想マシンのユーザの該ホストマシン上の既存の仮想マシンの数を判断し、仮想マシンの数がアフィニティ閾値より小さい場合、非アフィニティ優先度の値を０にし、仮想マシンの数がアフィニティ閾値より小さくない場合、非アフィニティ優先度の値を既存の仮想マシンの数にする。例えば、アフィニティ閾値は３である。もちろん、アフィニティ閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【０２２８】
大規模分散システムでは、エラーを完全に回避することがほぼ不可能である。あるユーザの仮想マシンが１つまたはいくつかのホストマシンに集中している場合、これらのホストマシンに障害が発生すると、これらのホストマシン上のすべての仮想マシンが影響を受け、該ユーザーのアプリケーションの全体的な可用性に深刻な影響を及ぼす。非アフィニティ優先度は、分散ディザスタリカバリのために、同一のユーザの仮想マシンを異なるホストマシンに広く分散させ、単一のホストマシンの障害によるアプリケーションの全体的な可用性への影響が制限され、さらにユーザーのアプリケーションの安定性及び可用性を向上させることを役割とする。
【０２２９】
フリー優先度について、ｆｒｅｅＰｒｉｏの値が小さいほど、優先度が高くなる。例えば、各ホストマシンが完全に空いているか否かを判断し、完全に空いている場合、フリー優先度の値を０にし、完全に空いているのではない場合、フリー優先度の値を１にしてもよい。或いは、完全に空いている場合、フリー優先度の値を１にし、完全に空いているのではない場合、フリー優先度の値を０にするなどにしてもよい。説明の便宜上、本願の実施例では、完全に空いている場合、フリー優先度の値を０にし、完全に空いているのではない場合、フリー優先度の値を１にすることを例として説明する。
【０２３０】
フリー優先度は、空いているホストマシンを保護し、空いていないホストマシンに優先的に仮想マシンを配置して、空いていないホストマシン上のリソースを十分に利用し、リソースの利用率を向上させることを役割とする。
【０２３１】
イメージキャッシュ優先度について、ｉｍｇＰｒｉｏの値が小さいほど、優先度が高くなる。候補ホストマシンリストを走査し、各ホストマシンには仮想マシンに必要なイメージファイルがあるか否かを判断し、例えば、イメージファイルがある場合、イメージキャッシュ優先度の値を０にし、イメージファイルがない場合、イメージキャッシュ優先度の値を１にしてもよい。
【０２３２】
イメージキャッシュ優先度は、仮想マシンイメージが記憶されたホストマシンに優先的に仮想マシンを配置することにより、実際に仮想マシンを作成する際にイメージのダウンロードを省くことを可能にし、作成時間を節約し、仮想マシンの作成プロセスのリアルタイム性を向上させることを役割とする。
【０２３３】
断片化率優先度について、ｆｒａｇｍｅｎｔＰｒｉｏの値が小さいほど、優先度が高くなる。各ホストマシン毎に、断片化率優先度を計算してもよい。ＣＰＵ及びメモリの２次元のリソースに基づいて、優先度を計算する。デフォルトでは、断片化率優先度は、ＣＰＵの断片化率にメモリの断片化率を掛けたものに等しい。
【０２３４】
断片化率優先度は、ホストマシンのリソースを十分に利用し、リソースの断片化率を低下させ、さらにリソース利用率を向上させ、運用コストを削減することを役割とする。
【０２３５】
決定サブユニット５０５１が各候補ホストマシンそれぞれの各次元の優先度値を決定した後、生成サブユニット５０５２が、各次元の優先度値の高い順にホストマシンをランキングして、候補ホストマシンリストを得、作成サブユニット５０５５が、候補ホストマシンリストから、合致度が最も高い１つの候補ホストマシンをターゲットホストマシンとして決定する。具体的な決定過程は、下記の通りであってもよい。
【０２３６】
生成サブユニット５０５２は、各次元の優先度の高い順に、同一の次元のホストマシンを優先度値の大きい順にランキングし、同一の次元の同じ優先度値のホストマシンに対して、次の次元の優先度値に従ってランキングを行うことにより、優先度の高い順にランキングされた候補ホストマシンリストを得てもよい。
【０２３７】
候補ホストマシンがランキングされた後、第１位にランキングされた候補ホストマシンが最適であり、この最適な候補ホストマシンに他の作成タスクが存在する可能性があるため、必ずしも作成の成功を保証できず、リソースの差し引きを模擬するような方式でターゲットホストマシンを決定する必要がある。
【０２３８】
ターゲットホストマシンを決定する過程では、まず、差し引きサブユニット５０５３が、ランキングされた候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、各候補ホストマシンに対応する残りリソースをそれぞれ得、ホストマシンに対してリソースの差し引きを模擬することを完了する。仮想マシンのリソース要件は、仮想マシンに対応する仮想マシン情報に含まれる。即ち、ランキングされた候補ホストマシンの降順に従って、第１位にランキングされた候補ホストマシンから始めて、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引き、ある候補ホストマシンからの差し引きが成功すると、差し引きに成功した候補ホストマシンをターゲットホストマシンとする。
【０２３９】
ランキング順序は、予め設定されてもよい。例えば、デフォルトのランキング基準、即ち優先度の高い順は、プライベートネットワーク優先度（ｖｐｃＰｒｉｏ）、並行タスク優先度（ｔａｓｋＰｒｉｏ）、履歴エラー優先度（ｅｒｒｏｒＰｒｉｏ）、非アフィニティ優先度（ａｆｆｉｎｉｔｙＰｒｉｏ）、フリー優先度（ｆｒｅｅＰｒｉｏ）、イメージキャッシュ優先度（ｉｍｇＰｒｉｏ）、及び断片化率優先度（ｆｒａｇｍｅｎｔＰｒｉｏ）であってもよい。ランキング基準は、デフォルト基準範囲内で選択されてもよく、順序は、実際の必要に応じて、柔軟的に調整して設定されてもよい。
【０２４０】
次に、候補ホストマシンの残りリソースが得られた後、コミットサブユニット５０５４は、残りリソースを共通リソース情報へコミットし、ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定する。候補ホストマシンの残りリソースを、各ホストマシンの残りリソースデータをメンテナンスするためのデータベースに書き込み、書き込みが成功すると、書き込みに成功した候補ホストマシンをターゲットホストマシンとするようにしてもよい。
【０２４１】
ターゲットホストマシンが決定された後、作成サブユニット５０５５は、該ターゲットホストマシン上に仮想マシンを作成することが可能になる。いくつかの実施例では、仮想マシンの作成には、ターゲットホストマシンのリソースを消費する必要があるため、リソース情報プライベートコピーにおけるホストマシン情報を更新してもよいし、クラウドコンピューティングシステムに共通リソース情報を更新するよう通知してもよい。
【０２４２】
候補ホストマシンに対応する残りリソースのコミットが失敗した場合は、スケジューリング競合、即ち、同一のホストマシンが複数のリソーススケジューリングプロセスによって同時に選択されることが発生した可能性があることを表す。この場合、コミット回数が回数閾値を超えるか否かを判断し、コミット回数が回数閾値を超えていないとき、該候補ホストマシンのホストマシン情報を再取得して、該候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを再び得る。次に、再び得られた残りリソースを共通リソース情報へ再コミットする。コミット回数が回数閾値を超えたとき、候補ホストマシンリストから、次の候補ホストマシンを取得して、リソースの差し引きの模擬を行う。
【０２４３】
説明すべきものとして、１番目のホストマシンからの差し引きが成功した場合、２番目のホストマシンに対して差し引き処理を行う必要がなく、直接に１番目のホストマシンをターゲットホストマシンとして決定してもよい。１番目のホストマシンからの差し引きが成功しない場合、２番目のホストマシンに対して差し引き処理を行い、あるホストマシンからの差し引きが成功するまで繰り返す必要がある。
【０２４４】
さらに、図１１に示すように、作成ユニット５０５は、
候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成するランキングサブユニット５０５６をさらに含む。
【０２４５】
差し引きサブユニット５０５３は、具体的に、候補ホストマシンターゲットリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得る。
【０２４６】
ここで、所定数は、実際の必要に応じて、柔軟的に設定されてもよい。ランキングサブユニット５０５６が候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、ランダムにリランキングすることであってもよいし、所定の規則に従ってリランキングすることであってもよいが、具体的なリランキング方式がここで限定されない。候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、リランキングのために、候補ホストマシンリストの先頭ｋ（ｋは所定数）個の候補ホストマシンをランダムにシャッフルして、候補ホストマシンターゲットリストを得ることで、並行シナリオで複数のリソーススケジューリングプロセスが同じターゲットホストマシンを選択することを防止し、スケジューリング競合を効果的に回避することが可能になる、ことを目的とする。
【０２４７】
上記から分かるように、本願の実施例では、第１取得ユニット５０１が、作成する仮想マシンに対応する仮想マシン情報を取得し、第２取得ユニット５０２が共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、更新ユニット５０３が、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、第３取得ユニット５０４が、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、作成ユニット５０５が、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【０２４８】
これに応じて、本願の実施例では、クラウドコンピューティングシステムも提供されている。このクラウドコンピューティングシステムは、少なくとも１つのスケジューラと、少なくとも１つのホストマシンと、を備えてもよい。このスケジューラは、本願の実施例で提供されたいずれか１つのリソーススケジューリング装置を備え、具体的に、上記リソーススケジューリング装置に対応する実施例を参照すればよい。ここで、リソーススケジューリング装置は、具体的に、スケジューリングサーバに統合されてもよい。例えば、
スケジューリングサーバは、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成するようにしてもよい。
【０２４９】
上記の各機器の具体的な実施は、前述した実施例を参照すればよく、ここで説明を省略する。
【０２５０】
該クラウドコンピューティングシステムは、本願の実施例で提供されたいずれか１つのリソーススケジューリング装置を備えてもよいため、本願の実施例で提供されたいずれか１つのリソーススケジューリング装置が実現可能な有益効果を実現できる。詳しくは、前述した実施例を参照すればよく、ここで説明を省略する。
【０２５１】
また、本願の実施例では、スケジューリングサーバが提供されている。このスケジューリングサーバは、本願の実施例におけるいずれか１つのスケジューラである。図１２には、本願の実施例に係るスケジューリングサーバの構成の模式図が示されている。具体的には、
このスケジューリングサーバは、１つ又は複数の処理コアのプロセッサ６０１、１つ又は複数のコンピュータ可読記憶媒体であるメモリ６０２、電源６０３、及び入力手段６０４などの構成要素を含んでもよい。当業者であれば理解できるように、図１２に示されたスケジューリングサーバの構成は、スケジューリングサーバを限定するものでなく、図示よりも多く若しくは少ない構成要素を含んでもよく、又はいくらかの構成要素を組み合わせたものであってもよく、又は構成要素の異なる配置を有してもよい。ここで、
プロセッサ６０１は、該スケジューリングサーバの制御センターであり、各種のインタフェース及び線路によってスケジューリングサーバ全体の各部分を接続し、メモリ６０２に記憶されたソフトウェアプログラム及び／又はモジュールを実行又は遂行して、メモリ６０２に記憶されたデータを呼び出すことにより、スケジューリングサーバの各種の機能を実行してデータを処理し、スケジューリングサーバを全体的に監視制御する。いくつかの実施例では、プロセッサ６０１は、１つ又は複数の処理コアを含んでもよい。プロセッサ６０１には、アプリケーションプロセッサ及び変復調プロセッサが統合されてもよい。ここで、アプリケーションプロセッサは、主にオペレーティングシステム、ユーザ画面、及びアプリケーションプログラムなどを処理し、変復調プロセッサは、主に無線通信を処理する。理解できるように、上記変復調プロセッサは、プロセッサ６０１に統合されなくてもよい。
【０２５２】
メモリ６０２は、ソフトウェアプログラム及びモジュールの記憶に使用可能である。プロセッサ６０１は、メモリ６０２に記憶された１つ又は複数のプログラム及びモジュールを実行することにより、各種の機能アプリケーション及びデータ処理を実行する。メモリ６０２は、主にプログラム記憶領域及びデータ記憶領域を含んでもよい。ここで、プログラム記憶領域には、オペレーティングシステム、少なくとも１つの機能に必要なアプリケーションプログラム（例えば、音声再生機能、画像再生機能など）などを記憶してもよい。データ記憶領域には、スケジューリングサーバの使用に応じて作成されたデータなどを記憶してもよい。また、メモリ６０２は、高速ランダムアクセスメモリを含んでもよいし、不揮発性メモリを含んでもよく、例えば、少なくとも１つの磁気ディスク記憶デバイス、フラッシュメモリデバイス、又はその他の揮発性ソリッドステート記憶デバイスであってもよい。これに応じて、メモリ６０２は、メモリコントローラをさらに含んでもよい。これにより、プロセッサ６０１によるメモリ６０２へのアクセスが提供される。
【０２５３】
スケジューリングサーバは、各構成要素に電力を提供する電源６０３をさらに含む。電源６０３は、電源管理システムを介して、プロセッサ６０１に論理的に接続されてもよい。これにより、電源管理システムを介して、充電、放電の管理、及び電力消費管理などの機能が実現される。電源６０３は、１つ又は複数の直流又は交流電源、再充電システム、電源故障検出回路、電源変換器又はインバータ、電源状態指示器などの任意の構成要素を含んでもよい。
【０２５４】
該スケジューリングサーバは、入力手段６０４をさらに含んでもよい。この入力手段６０４は、入力された数字や文字の情報を受信し、ユーザ設定及び機能制御に関するキーボード、マウス、ジョイスティック、光学又はトラックボールの信号入力を生成することに使用可能である。
【０２５５】
図示されていないが、スケジューリングサーバは、表示手段などをさらに含んでもよく、ここで説明を省略する。具体的には、本実施例では、スケジューリングサーバのプロセッサ６０１が、下記のような命令に従って、１つ又は複数のアプリケーションプログラムのプロセスに対応する実行可能ファイルをメモリ６０２にロードし、メモリ６０２に記憶されたアプリケーションプログラムをプロセッサ６０１が実行することにより、各種の機能を実現する。即ち、
作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。
【０２５６】
上記の各処理の具体的な実施は、前述した実施例を参照すればよく、ここで説明を省略する。
【０２５７】
上記から分かるように、本願の実施例では、スケジューリングサーバは、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【０２５８】
当業者であれば理解できるように、上記実施例の各方法の手順の全部又は一部は、命令によって実行されたり、命令で関連のハードウェアを制御することにより実行されたりしてもよい。この命令は、コンピュータ可読記憶媒体に記憶され、プロセッサによってロード・実行されてもよい。
【０２５９】
このため、本願の実施例では、複数の命令を記憶した記憶媒体が提供されている。この命令は、プロセッサによってロードされることで、本願の実施例で提供されたいずれか１つのリソーススケジューリング方法のステップを実行させることが可能である。例えば、この命令は、
作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも１つの候補ホストマシンを取得し、少なくとも１つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する、ことを実行させることが可能である。
【０２６０】
上記の各処理の具体的な実施は、前述した実施例を参照すればよく、ここで説明を省略する。
【０２６１】
ここで、該記憶媒体は、読み出し専用メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、又は光ディスクなどを含んでもよい。
【０２６２】
該記憶媒体に記憶された命令は、本願の実施例で提供されたいずれか１つのリソーススケジューリング方法のステップを実行させることが可能であるため、本願の実施例で提供されたいずれか１つのリソーススケジューリング方法が実現可能な有益効果を実現できる。詳しくは、前述した実施例を参照すればよく、ここで説明を省略する。
【０２６３】
上記は、本願の実施例で提供されたリソーススケジューリング方法、装置、クラウドコンピューティングシステム、及び記憶媒体を詳しく説明している。本明細書では、具体的な特定例を使用して、本願の原理及び実施形態を説明している。上記の実施例の説明は、本願の方法及びその中心となる思想の理解を助けるためにすぎない。また、当業者にとっては、本願の思想を踏まえると、具体的な実施形態及び適用範囲の両方に変更があり得る。要するに、本明細書の内容は、本願に対する制限として理解されるべきではない。
【符号の説明】
【０２６４】
５０１  第１取得ユニット
５０２  第２取得ユニット
５０３  更新ユニット
５０４  第３取得ユニット
５０５  作成ユニット
５０５１  決定サブユニット
５０５２  生成サブユニット
５０５３  差し引きサブユニット
５０５４  コミットサブユニット
５０５５  作成サブユニット
５０５６  ランキングサブユニット
６０１  プロセッサ
６０２  メモリ
６０３  電源
６０４  入力手段
【図１】
0006893284.tif 000002
【図２】
0006893284.tif 000003
【図３】
0006893284.tif 000004
【図４】
0006893284.tif 000005
【図５】
0006893284.tif 000006
【図６】
0006893284.tif 000007
【図７】
0006893284.tif 000008
【図８】
0006893284.tif 000009
【図９】
0006893284.tif 000010
【図１０】
0006893284.tif 000011
【図１１】
0006893284.tif 000012
【図１２】
0006893284.tif 000013