JP2019057213A - 調整プログラム、調整装置および調整方法 - Google Patents

調整プログラム、調整装置および調整方法 Download PDF

Info

Publication number
JP2019057213A
JP2019057213A JP2017182387A JP2017182387A JP2019057213A JP 2019057213 A JP2019057213 A JP 2019057213A JP 2017182387 A JP2017182387 A JP 2017182387A JP 2017182387 A JP2017182387 A JP 2017182387A JP 2019057213 A JP2019057213 A JP 2019057213A
Authority
JP
Japan
Prior art keywords
time
virtual machine
schedule
physical machine
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017182387A
Other languages
English (en)
Other versions
JP6901683B2 (ja
Inventor
伸吾 奥野
Shingo Okuno
伸吾 奥野
幸洋 渡辺
Koyo Watanabe
幸洋 渡辺
飯倉 二美
Futami Iikura
二美 飯倉
正洋 麻岡
Masahiro Asaoka
正洋 麻岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017182387A priority Critical patent/JP6901683B2/ja
Priority to US16/127,347 priority patent/US11010186B2/en
Publication of JP2019057213A publication Critical patent/JP2019057213A/ja
Application granted granted Critical
Publication of JP6901683B2 publication Critical patent/JP6901683B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

【課題】適切な移動スケジュールを作成すること。【解決手段】記憶部1aは、物理マシン2,3,4,・・・および各物理マシンで動作する仮想マシン2a,2b,3a,3b,4a,4b,・・・に関する構成情報D1と物理マシンから他の物理マシンへの仮想マシンの移動の所要時間を示す時間情報D2とを記憶する。処理部1bは、物理マシン2,3,4,・・・に関するメンテナンスの実施期間を取得すると、記憶部1aに記憶された構成情報D1および時間情報D2から移動のスケジュールを決定するための制約条件を仮想マシンに対して作成する。処理部1bは、作成した制約条件およびメンテナンスの実施期間に基づいて仮想マシン2a,2b,3a,3b,4a,4b,・・・の移動のスケジュール情報を作成する。処理部1bは、仮想マシン2a,2b,3a,3b,4a,4b,・・・のユーザU1が使用する端末装置5にスケジュール情報を出力する。【選択図】図1

Description

本発明は調整プログラム、調整装置および調整方法に関する。
情報処理の分野では、物理的なコンピュータ(物理マシンや物理ホストと呼ぶことがある)上で、複数の仮想的なコンピュータ(仮想マシンや仮想ホストと呼ぶことがある)を動作させる仮想化技術が利用されている。各仮想マシン上では、OS(Operating System)などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。例えば、ハイパーバイザと呼ばれるソフトウェアが、CPU(Central Processing Unit)の処理能力やRAM(Random Access Memory)の記憶領域を、演算のリソースとして複数の仮想マシンに割り振ることがある。
複数の物理マシンを含むシステムには、仮想マシンを実行する物理マシンを変更できるものがある。例えば、仮想マシンを終了させてから、あるいは、終了させずに、ハイパーバイザ間で仮想マシンに関するデータの移動を可能とする技術が用いられている。
例えば、ユーザにより入力された仮想ホストの移動予定日がサーバ機器のメンテナンス予定日よりも後の場合、移動予定日を修正するよう要請し、当該移動予定日に当該仮想ホストを移動先サーバ機器へ移動予約するメンテナンス管理装置の提案がある。
また、仮想マシンに関する情報およびネットワークでのトラフィックに関する情報の少なくとも一方に基づいて、複数の仮想マシンのライブマイグレーションの実行順を定める提案もある。
なお、SAT(SATisfiability problem、充足可能性問題)ソルバを用いて病院の特定病棟に勤務する看護師(スタッフ)の勤務スケジュールを求める提案もある。
特開2015−161956号公報 特開2014−153997号公報 特開2015−222464号公報 特開2015−172794号公報
利用者に仮想マシンの利用環境を提供する運用者は、物理マシンのメンテナンスを行うために、事前に、メンテナンスを行う物理マシン上の仮想マシンを別の物理マシンに移動させることがある。この場合、移動処理により該当の仮想マシンの性能が低下したり、該当の仮想マシンを一時的に利用できなくなったりすることがある。このため、運用者は、メンテナンス日程やそれに伴う仮想マシンの移動スケジュールを利用者に事前に通知することが多い。ところが、運用者による仮想マシンの移動スケジュールの決定には利用者の仮想マシンの利用予定が考慮されないことが多く、利用者に影響を与える可能性がある。
そこで、利用者により業務都合を入力させて、運用者側で仮想マシンの移動スケジュールを決定することも考えられる。しかし、利用者が必ずしも仮想マシンの負荷の高い時間帯を把握しているとは限らない。このため、利用者の業務都合に任せて仮想マシンの移動スケジュールを決定すると、仮想マシンの負荷の高い時間帯に移動処理が実行され、利用者の仮想マシンの利用に対する影響が却って大きくなる可能性がある。
1つの側面では、本発明は、適切な移動スケジュールを作成することを目的とする。
1つの態様では、調整プログラムが提供される。調整プログラムは、物理マシンに関するメンテナンスの実施期間を取得すると、物理マシンおよび物理マシンで動作する仮想マシンに関する構成情報および物理マシンから他の物理マシンへの仮想マシンの移動の所要時間を示す時間情報から移動のスケジュールを決定するための制約条件を仮想マシンに対して作成し、制約条件および実施期間に基づいて移動のスケジュール情報を作成し、仮想マシンのユーザが使用する装置にスケジュール情報を出力する、処理をコンピュータに実行させる。
1つの側面では、適切な移動スケジュールを作成できる。
第1の実施の形態の情報処理システムを示す図である。 仮想マシン移動スケジュールの作成例を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 管理サーバのハードウェア例を示す図である。 ライブマイグレーションの例を示す図である。 管理サーバの機能例を示す図である。 メンテナンス実施期間情報の例を示す図である。 メンテナンス対象マシン情報の例を示す図である。 物理マシン構成テーブルの例を示す図である。 仮想マシン構成テーブルの例を示す図である。 仮想マシン稼働テーブルの例を示す図である。 依存関係テーブルの例を示す図である。 LM所要時間テーブルの例を示す図である。 メンテナンススケジュールテーブルの例を示す図である。 LMスケジュールテーブルの例を示す図である。 LM実施拒否日時情報の例を示す図である。 制約充足問題における変数の例を示す図である。 変数によるLMの表現の例を示す図である。 管理サーバの処理例を示すフローチャートである。 日程調整例を示すフローチャートである。 制約充足問題の生成例を示すフローチャートである。 日程再調整例を示すフローチャートである。 制約充足問題の再生成例を示すフローチャートである。 ソルバ部に対する入力データの例(その1)を示す図である。 ソルバ部に対する入力データの例(その2)を示す図である。 ソルバ部に対する入力データの例(その3)を示す図である。 ソルバ部に対する入力データの例(その4)を示す図である。 ソルバ部に対する入力データの例(その5)を示す図である。 ソルバ部による出力データの例(その1)を示す図である。 ソルバ部による出力データの例(その2)を示す図である。 利用者に対するLMスケジュール画面の例(その1)を示す図である。 利用者に対するLMスケジュール画面の例(その2)を示す図である。 利用者に対するLMスケジュール画面の例(その3)を示す図である。 運用者に対するメンテナンススケジュール画面の例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、調整装置1および物理マシン2,3,4,・・・を有する。調整装置1および物理マシン2,3,4,・・・はネットワークN1に接続されている。調整装置1は、物理マシン2,3,4,・・・における仮想マシンの移動スケジュールを調整する。物理マシン2,3,4,・・・それぞれは、CPUやメモリなどの演算リソースを有し、演算リソースを用いて仮想マシンを実行する。例えば、物理マシン2,3,4,・・・それぞれは、ハイパーバイザを実行し、ハイパーバイザの機能により、仮想マシンに対する演算リソースの割り当てを行う。ここで、物理マシンをPM(Physical Machine)と略記することがある。仮想マシンをVM(Virtual Machine)と略記することがある。
ネットワークN1には、端末装置5も接続されている。端末装置5は、仮想マシンを利用するユーザU1によって利用されるクライアントである。端末装置5は、インターネットなどの他のネットワークを介してネットワークN1に接続されてもよい。
物理マシン2,3,4,・・・は、自物理マシンで動作する仮想マシンを他の物理マシンに移動させる機能を有する。例えば、物理マシン2,3,4,・・・はライブマイグレーションと呼ばれる技術を用いて仮想マシンの移動を行う。ライブマイグレーションでは、移動対象の仮想マシンに割り当てられた移動元の物理マシンのCPUリソースやメモリリソースの情報を移動先の物理マシンにコピーすることで、仮想マシンの起動状態を保ったまま仮想マシンを移動させる。あるいは、仮想マシンを移動させる技術として、仮想マシンを停止してから該当の仮想マシンの情報を移動先の物理マシンにコピーするコールドマイグレーションを用いることもできる。
システムの運用では、仮想マシンを実現するための基盤(インフラ(infrastructure))である物理マシンに対するセキュリティパッチの適用やOSのアップグレードなどのメンテナンスが行われることがある。物理マシンのメンテナンスには、物理マシンの停止を伴うことが多い。物理マシンを停止させる場合、当該物理マシン上の仮想マシンも停止させることになり、仮想マシンを利用できなくなってしまう。
そこで、物理マシンのメンテナンスの前に、メンテナンス対象の物理マシン上の仮想マシンを別の物理マシンに移動させることで、メンテナンスによる仮想マシン利用への影響を軽減しながら、メンテナンス対象の物理マシンのメンテナンスを行うことがある。調整装置1は、そのための仮想マシンの移動スケジュールの作成を支援する。調整装置1は、記憶部1aおよび処理部1bを有する。
記憶部1aは、RAMなどの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部1bは、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部1bはプログラムを実行するプロセッサでもよい。プロセッサは、複数のプロセッサの集合(マルチプロセッサ)も含み得る。
記憶部1aは、物理マシンおよび物理マシンで動作する仮想マシンに関する構成情報D1を記憶する。構成情報D1は、インフラに関する情報を含む。例えば、構成情報D1は、物理マシンの構成を示す物理マシン構成情報d1、仮想マシンの構成を示す仮想マシン構成情報d2および仮想マシン間の依存関係を示す依存関係情報d3を含む。
ここで、一例として、物理マシン2,3,4および仮想マシン2a,2b,3a,3b,4a,4bの識別情報を次の通りとする。物理マシン2の識別情報は“PM1”である。物理マシン3の識別情報は“PM2”である。物理マシン4の識別情報は“PM3”である。仮想マシン2aの識別情報は“VM1”である。仮想マシン2bの識別情報は“VM2”である。仮想マシン3aの識別情報は“VM3”である。仮想マシン3bの識別情報は“VM4”である。仮想マシン4aの識別情報は“VM5”である。仮想マシン4bの識別情報は“VM6”である。
物理マシン構成情報d1は、各物理マシンが備えるCPUコア数、メモリ容量およびディスク容量の情報を含む。具体的には、物理マシン構成情報d1には、物理マシン2(識別情報“PM1”)に対して、CPUコア数“64”個、メモリ容量“256GB(Giga Bytes)”、ディスク容量“32TB(Tera Bytes)”というレコードが登録されている。物理マシン構成情報d1には、他の物理マシンに対しても同様のレコードが登録される。
仮想マシン構成情報d2は、各仮想マシンに割り当てるCPUコア数、メモリ容量、ディスク容量および当該仮想マシンの現配置(現在の配置先の物理マシン)の情報を含む。具体的には、仮想マシン構成情報d2には、仮想マシン2a(識別情報“VM1”)に対して、CPUコア数“2”個、メモリ容量“32GB”、ディスク容量“2TB”、現配置“PM1”(物理マシン2)というレコードが登録されている。仮想マシン構成情報d2には、他の仮想マシンに対しても同様のレコードが登録される。
依存関係情報d3は、仮想マシンの組合せと、当該組合せに属する各仮想マシンを同じ物理マシン上で動作させてもよいか否かを示す情報を含む。具体的には、依存関係情報d3には、仮想マシン2a,2bの組合せ(識別情報“VM1”、“VM2”の組合せ)に対して、同物理マシンで動作可(同PM“可”)というレコードが登録されている。また、依存関係情報d3には、仮想マシン2a,3aの組合せ(識別情報“VM1”、“VM3”の組合せ)に対して、同物理マシンで動作不可(同PM“不可”)というレコードが登録されている。例えば、ある仮想マシンの組を共通の物理マシン上で動作させた方が、性能の向上を見込めることもあるし、冗長化を考慮して共通の物理マシン上で動作させないこともある。仮想マシン間のこのような関係性を依存関係情報d3として予め設定することが考えられる。
記憶部1aは、物理マシンから他の物理マシンへの仮想マシンの移動の所要時間を示す時間情報D2を記憶する。時間情報D2は、メンテナンスの実施期間に属する各時刻における仮想マシンの移動の所要時間(予測される所要時間)を示す情報である。所要時間は仮想マシン毎に与えられる。
例えば、時間情報D2は、仮想マシン、時刻および移動所要時間の情報を含む。具体的には、時間情報D2には、仮想マシン2aの識別情報“VM1”、時刻“t1”、移動所要時間“Δx”を含むレコードが登録されている。このレコードは、物理マシン2から他の物理マシンへの仮想マシン2aの移動を時刻“t1”に完了させるための移動の所要時間が“Δx”であることを示す。
また、時間情報D2には、仮想マシン2aの識別情報“VM1”、時刻“t2”、移動所要時間“Δy”を含むレコードが登録されている。このレコードは、物理マシン2から他の物理マシンへの仮想マシン2aの移動を時刻“t2”に完了させるための移動の所要時間が“Δy”であることを示す。時間情報D2には、他の時刻についても、仮想マシン2aの移動所要時間が登録される。時間情報D2には、他の仮想マシンについても、時刻毎の移動所要時間が登録される。
時間情報D2は、記憶部1aに予め格納されていてもよい。時間情報D2は、各仮想マシンの過去の各時刻における負荷の履歴や過去の各時刻における移動時の所要時間の履歴などに基づいて予測された結果でもよい(例えば、処理部1bが当該予測結果を記憶部1aに格納してもよい)。
図2は、仮想マシン移動スケジュールの作成例を示す図である。処理部1bは、物理マシンに関するメンテナンスの実施期間を取得すると、記憶部1aに記憶された構成情報D1および時間情報D2から仮想マシンの移動のスケジュールを決定するための制約条件D3を当該仮想マシンに対して作成する。制約条件D3は、仮想マシンの移動のスケジュールの決定に対する制約を示す。ここで、移動対象となる仮想マシンは、メンテナンス対象の物理マシン上の仮想マシンである。
制約条件D3は、構成情報D1および時間情報D2から作成される。制約条件D3は、構成情報D1に基づく仮想マシンの移動先に対する制約条件を含む。構成情報D1に基づく制約条件には、例えば、ある物理マシン上の仮想マシンの所要リソースの合計が、当該物理マシンのリソースを上回らないようにする、仮想マシンの組を同一物理マシン上で稼働する(または稼働させない)などの条件が考えられる。
また、制約条件D3は、時間情報D2に基づく仮想マシンの移動タイミングや移動時間に対する制約条件を含む。時間情報D2に基づく制約条件には、メンテナンス中の物理マシンでは仮想マシンの移動を行わない、などの条件が考えられる。また、時間情報D2に基づく制約条件は、時間情報D2に基づく仮想マシンの移動所要時間の総和(移動対象が複数の仮想マシンの場合は複数の仮想マシンの移動所要時間の総和)を最小にするという条件(目的関数)を含む。
制約条件D3の一例として、依存関係情報d3における仮想マシン2a,3aに対する制約(仮想マシン2a,3aを同一物理マシン上で稼働させない)の作成方法を示すと次のようになる。
(1)処理部1bは、仮想マシン2a,3aが所属するグループGを生成する。
(2)処理部1bは、式(1)で示される制約条件を生成する。
Figure 2019057213
ここで、vは仮想マシンを示す。pは物理マシンを示す。Pは物理マシンの集合を示す。apv(t)は、時刻tに仮想マシンvが物理マシンp上で稼働している場合は1であり、それ以外の場合は0である。
処理部1bは、制約条件D3およびメンテナンスの実施期間に基づいて仮想マシンの移動のスケジュール情報を作成する。例えば、処理部1bは、作成した制約条件D3およびメンテナンスの実施期間の情報を制約充足判定ソルバに入力し、制約充足判定ソルバの機能により、制約条件D3を満足するスケジュールを作成する。例えば、処理部1bは、制約充足判定ソルバとして、MILP(Mixed Integer Linear Programming、混合整数線形計画法)ソルバやSATソルバを用いることができる。ここで、以下では、制約充足判定ソルバを、単にソルバと称することがある。
物理マシンに関するメンテナンスの実施期間は、メンテナンス対象の物理マシンに対してメンテナンスを行う候補の期間ということもできる。例えば、処理部1bは、物理マシン毎のメンテナンスの所要時間の情報(記憶部1aに予め格納される)に基づいて、物理マシン毎のメンテナンス実施期間に関する制約条件を更に作成してもよい。処理部1bは、当該制約条件に基づいて、仮想マシンの移動のスケジュールと共に、当該候補期間のうち物理マシン毎のメンテナンスを行う期間を、ソルバにより決定してもよい。処理部1bは、メンテナンス対象の物理マシン上の仮想マシンを、当該物理マシンのメンテナンスを行う期間よりも前に、他の物理マシンに移動させるように、スケジュール情報を作成する。
例えば、物理マシン2(識別情報“PM1”)がメンテナンス対象に含まれるとする。このとき、一例として、処理部1bは、仮想マシン2aを時刻taから時刻tbの間に物理マシン2から物理マシン4に移動させ、仮想マシン2bを時刻tbから時刻tcの間に物理マシン2から物理マシン4に移動させるというスケジュール情報を作成する。なお、時刻tbは、時刻taよりも後の時刻である。時刻tcは、時刻tbよりも後の時刻である。
処理部1bは、移動対象の仮想マシンのユーザが使用する装置に、作成したスケジュール情報を出力する。例えば、ユーザU1は、仮想マシン2a,2b,3a,3bを利用する。記憶部1aは、ユーザの端末装置の識別情報と当該ユーザが使用する仮想マシンの識別情報との対応関係を予め記憶してもよい。そうすれば、処理部1bは、記憶部1aを参照することで、仮想マシンに対応するユーザの端末装置を特定できる。
例えば、処理部1bは、仮想マシン2a(識別情報“VM1”)を時刻taから時刻tbの間に移動させ、仮想マシン2b(識別情報“VM2”)を時刻tbから時刻tcの間に移動させるスケジュール情報を、端末装置5に送信する。なお、処理部1bは、ユーザU1に対して、移動元および移動先の物理マシンの情報を提供しなくてよい。端末装置5は、スケジュール情報を受信し、当該スケジュール情報で示されるスケジュールを表す画面6を、端末装置5に接続されたディスプレイに表示させる。ユーザU1は、画面6を閲覧することで、自身が利用する仮想マシン2a,2bの移動スケジュールを確認することができる。
このようにして、調整装置1は、仮想マシンの適切な移動スケジュールを作成できる。
例えば、処理部1bは、制約条件D3として、仮想マシンの移動所要時間の総和(移動対象が複数の仮想マシンの場合は複数の仮想マシンの移動時間の総和)を最小にするという制約条件を作成する。そして、処理部1bは、時間情報D2に基づいて、当該条件を満たすスケジュール情報を作成する。このため、ユーザU1の仮想マシンの利用に対する影響を抑えて仮想マシンの移動スケジュールを作成することができる。
なお、処理部1bは、時間情報D2を含む制約条件を作成してソルバにより解いてもよい。あるいは、処理部1bは、時間情報D2を含まない制約条件(移動所要時間の入力部分を変数とする)を作成し、当該制約条件に時間情報D2の移動所要時間を入力してソルバにより解いてもよい(構成情報D1に基づく制約条件についても同様である)。
また、処理部1bは、制約条件D3として、構成情報D1に基づく仮想マシンの移動先に関する制約条件を作成する。このため、物理マシンおよび仮想マシンの運用の要件を逸脱しないように、仮想マシンの移動スケジュールを決定できる。ここで、例えば、ユーザU1の仮想マシンの利用への影響時間の最小化のみを目的として移動スケジュールを作成すると、運用上の意図がある仮想マシンの依存関係を満たせなくなる可能性がある。一例としては、性能向上のために同一の物理マシンに配備すべきアプリケーションを実行する仮想マシンとDB(DataBase)を実行する仮想マシンとを、別個の物理マシンに移動させてしまうことが考えられる。これに対して、当該依存関係も制約条件として用いることで、このような運用上意図しない仮想マシンの配置を抑制できる。
なお、画面6は、ユーザU1により当該スケジュールを確定させるためのボタン(例えば、“OK”ボタン)を含んでもよい。また、画面6は、ユーザU1による当該スケジュールの拒否を受け付けるためのボタン(例えば、“移動拒否期間設定”ボタン)を含んでもよい。処理部1bは、後者のボタンの入力に応じて、仮想マシン毎の移動拒否期間(移動の禁止時間帯)を設定するための設定画面の情報を更に端末装置5に送信し、当該設定画面に対するユーザU1の移動拒否期間の入力を受け付けてもよい。
そして、処理部1bは、移動拒否期間の入力に応じて、該当の仮想マシンに対する移動拒否期間に対応する制約条件を更に作成し、該当の仮想マシンの移動スケジュールに関するスケジュール情報を再作成してもよい。この場合、処理部1bは、再作成したスケジュール情報を端末装置5に再度送信し、端末装置5によりユーザU1に提示する。ここで、処理部1bは、ユーザU1による移動拒否期間に代えて、ユーザU1による移動の許容時間帯を取得して、制約条件を再作成し、スケジュール情報を再作成してもよい。
すなわち、処理部1bは、出力したスケジュール情報に対してユーザにより入力された移動の禁止時間帯または移動の許容時間帯を取得する。処理部1bは、禁止時間帯または許容時間帯に基づいて制約条件を再作成し、再作成した制約条件に基づいてスケジュール情報を再作成し、再作成したスケジュール情報を端末装置5に出力する。
このように、ユーザU1により、仮想マシンの移動予定を確認させ、当該移動予定がユーザU1の業務都合と競合している場合に、移動拒否期間を指定させることで、ユーザU1の仮想マシンの利用への影響を更に抑えた移動スケジュールの作成が可能となる。
以下では、より具体的な情報処理システムを例示して、調整装置1の機能を詳細に説明する。
[第2の実施の形態]
図3は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、管理サーバ100、物理マシン200,300,400,・・・を有する。管理サーバ100および物理マシン200,300,400,・・・は、ネットワーク10に接続されている。ネットワーク10は、例えば、LAN(Local Area Network)である。ネットワーク10は、ネットワーク20に接続されている。ネットワーク20は、ネットワーク10の外部のネットワークであり、例えば、インターネットやWAN(Wide Area Network)などである。ネットワーク20には、利用者端末500,600が接続されている。また、ネットワーク10には運用者端末700が接続されている。
ここで、第2の実施の形態の情報処理システムは、パブリッククラウドサービスと呼ばれるサービスを提供する。パブリッククラウドサービスでは、システムの運用者は、システム上のハードウェア資源をネットワーク経由で複数の利用者(テナント)に提供する。システムの利用者は、提供されるハードウェア資源を用いて、仮想マシンを構築し、当該仮想マシン上で種々の業務アプリケーションを利用する。
第2の実施の形態の情報処理システムでは、サービスの品質を維持するために、インフラ側のメンテナンス(例えば、物理マシン200,300,400,・・・に対するセキュリティパッチの適用やOSのアップグレードなど)が行われる。そこで、物理マシンに対してメンテナンスを行う前に、該当の物理マシン上で動作中の仮想マシンを別の物理マシンに移動する処理が行われる。第2の実施の形態の例では、仮想マシンの移動に、ライブマイグレーションの技術が利用される(ただし、仮想マシンの移動に、コールドマイグレーションを用いてもよい)。
管理サーバ100は、物理マシン200,300,400,・・・における仮想マシンのライブマイグレーションのスケジュールを管理するサーバコンピュータである。管理サーバ100は、メンテナンス対象の物理マシンおよびメンテナンスの実施期間が入力されると、メンテナンス対象の物理マシン上で動作する仮想マシンのライブマイグレーションのスケジュールを作成する。管理サーバ100は、作成したスケジュールを、利用者端末500,600や運用者端末700に送信する。また、管理サーバ100は、作成したスケジュールが確定されると、確定されたスケジュールに従って、メンテナンス対象の物理マシンに仮想マシンのライブマイグレーションを指示する。管理サーバ100は、第1の実施の形態の調整装置1の一例である。
物理マシン200,300,400,・・・は、それぞれがCPUやメモリなどの演算リソースを有し、演算リソースを用いて仮想マシンを実行するサーバコンピュータである。例えば、物理マシン200,300,400,・・・それぞれは、ハイパーバイザを実行し、ハイパーバイザの機能により、仮想マシンに対する演算リソースの割り当てを行う。物理マシン200,300,400,・・・は、第1の実施の形態の物理マシン2,3,4,・・・の一例である。
利用者端末500,600は、利用者によって利用されるクライアントコンピュータである。利用者端末500,600は、異なる利用者によって利用される。各利用者は、利用者端末500,600を操作して、物理マシン200,300,400,・・・上の仮想マシンを利用する。利用者端末500の利用者は、利用者端末500を用いて、管理サーバ100により提供されるライブマイグレーション(自身が利用する仮想マシンについてのライブマイグレーション)のスケジュールを確認することもある。利用者端末600の利用者も同様に、利用者端末600を用いて、管理サーバ100により提供されるライブマイグレーションのスケジュールを確認することもある。利用者端末500,600は、第1の実施の形態の端末装置5の一例である。
運用者端末700は、第2の実施の形態の情報処理システムの運用者(システム管理者)によって利用されるクライアントコンピュータである。運用者は、運用者端末700を用いて、管理サーバ100により提供される物理マシンのメンテナンスのスケジュールやメンテナンスに伴うライブマイグレーションのスケジュールを確認する。
図4は、管理サーバのハードウェア例を示す図である。管理サーバ100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106およびNIC(Network Interface Card)107を有する。各ハードウェアは管理サーバ100のバスに接続されている。
プロセッサ101は、管理サーバ100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組合せであってもよい。
RAM102は、管理サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、管理サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、管理サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11として、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、管理サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
媒体リーダ106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
NIC107は、ネットワーク10を介して他の装置と通信を行う。NIC107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
物理マシン200,300,400,・・・、利用者端末500,600および運用者端末700も管理サーバ100と同様のハードウェアを用いて実現できる。
図5は、ライブマイグレーションの例を示す図である。物理マシン200,300,400,・・・は、ライブマイグレーションにより、物理マシン間で仮想マシンを移動させる。例えば、物理マシン200は、ハイパーバイザ210および仮想マシン211,212を有する。物理マシン300は、ハイパーバイザ310および仮想マシン311を有する。ハイパーバイザ210は、物理マシン200が備えるCPUやメモリといったハードウェアのリソースを仮想マシン211,212に割り当てる。ハイパーバイザ310も同様に、物理マシン300が備えるハードウェアのリソースを仮想マシン311に割り当てる。例えば、物理マシン200から物理マシン300に仮想マシン212を移動する場合を想定すると、ライブマイグレーションにより次のような手順を採ることが考えられる。
(1)物理マシン300上で移動対象の仮想マシン212用のCPU/メモリリソースを予約する。(2)物理マシン200で移動対象の仮想マシン212に割り当てられているメモリリソースのデータを、物理マシン300で当該仮想マシン212用に新たに割り当てたメモリリソースにコピーする。(3)物理マシン200から物理マシン300へ仮想マシン212に割り当てていたCPUリソースの状態をコピーし、物理マシン200で仮想マシン212を停止させる。(4)物理マシン300で仮想マシン212を再開し、物理マシン200で仮想マシン212に割り当てていたリソースを解放する。これにより、物理マシン200上で稼働している仮想マシン212を、物理マシン300に移動させることができる。上記の手順はPre−Copyと呼ばれることもある。ただし、ライブマイグレーションにはPost−Copyなどの他の手順を用いてもよい。
ここで、以下の説明では、ライブマイグレーションを、LM(Live Migration)と略記することがある。
図6は、管理サーバの機能例を示す図である。管理サーバ100は、インフラ管理部111およびスケジューラ112を有する。インフラ管理部111およびスケジューラ112の機能は、プロセッサ101により実現される。例えば、プロセッサ101は、RAM102に記憶された所定のプログラムを実行することで、インフラ管理部111およびスケジューラ112の機能を発揮する。あるいは、インフラ管理部111およびスケジューラ112は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
インフラ管理部111は、各物理マシンのハードウェアの構成や各仮想マシンに割り当てられるリソースの構成を管理する。例えば、物理マシン200は、仮想マシン211,212を有する。物理マシン300は、仮想マシン311,312を有する。
インフラ管理部111は、インフラ構成情報記憶部120、VM性能情報記憶部130およびインフラ管理制御部140を有する。インフラ構成情報記憶部120およびVM性能情報記憶部130は、例えば、RAM102やHDD103の記憶領域を用いて実現される。
インフラ構成情報記憶部120は、インフラ構成情報を記憶する。インフラ構成情報は、各物理マシンのハードウェアの構成や各仮想マシンに割り当てられるリソースの構成に関する情報である。
VM性能情報記憶部130は、VM性能情報を記憶する。VM性能情報は、仮想マシンの性能に関する情報であり、各仮想マシンのLMの所要時間(各時刻においてLMのために予測される所要時間)に関する情報を含む。また、VM性能情報は、LMの所要時間の予測結果を得るために用いられた各仮想マシンの負荷の履歴(過去の各時刻における各仮想マシンの負荷の履歴)を含む。なお、各仮想マシンの負荷の履歴に基づくLMの所要時間の予測は、管理サーバ100により行われてもよい。
インフラ管理制御部140は、スケジューラ112により決定されたLMのスケジュールに従って、各物理マシンに対する仮想マシンのLMを指示する。
スケジューラ112は、物理マシンのメンテナンスを行う際に、メンテナンス対象の物理マシンで動作する仮想マシンのLMのスケジュールを決定する。スケジューラ112は、メンテナンス実施期間やメンテナンス対象の物理マシンの情報を運用者端末700から受け付けると、インフラ構成情報記憶部120およびVM性能情報記憶部130に記憶された情報に基づいて、LMのスケジュールを決定する。
スケジューラ112は、制約条件記憶部150、イベント情報記憶部160、制約条件生成部170およびソルバ部180を有する。制約条件記憶部150およびイベント情報記憶部160は、例えば、RAM102やHDD103の記憶領域を用いて実現される。
制約条件記憶部150は、制約条件生成部170により生成された制約条件を記憶する。
イベント情報記憶部160は、ソルバ部180により作成された各仮想マシンのLMのスケジュールの情報や各物理マシンのメンテナンスのスケジュールの情報を記憶する。
制約条件生成部170は、インフラ構成情報記憶部120に記憶されたインフラ構成情報およびVM性能情報記憶部130に記憶されたVM性能情報に基づいて、LMのスケジュールの決定に対する制約条件を生成する。制約条件生成部170は、生成した制約条件を制約条件記憶部150に格納する。
ソルバ部180は、制約条件生成部170により生成された制約条件を満足するようにスケジューリングできるかを判定することで、LMのスケジュールの作成を試行する。ソルバ部180は、生成された制約条件を最も良く満足するLMのスケジュールを、イベント情報記憶部160に格納する。
ソルバ部180として、例えば、MILPソルバやSATソルバなどを利用することができる。MILPソルバには、次の文献が参考になる。
(文献1)J.P.Vielma, “Mixed Integer Linear Programming Formulation Techniques,” SIAM Review, vol.57, No.1, pp.3-57, 2015.
(文献2)Free Software Foundation,Inc., “GLPK (GNU Linear Programming Kit),” URL:http://www.gnu.org/software/glpk/glpk.html.
(文献3)Zuse Institute Berlin, “SCIP (Solving Constraint Integer Programs),”URL:http://scip.zib.de/.
(文献4)IBM Corporation, “IBM ILOG CPLEX Optimizer,”URL:http://www-01.ibm.com/software/commerce/optimization/cplex-optimizer/index.html.
また、SATソルバには、次の文献が参考になる。
(文献5)C.P.Gomes, H.Kautz, A.Sabharwal, and B.Selman, “Satisfiability Solvers,” in Handbook of Knowledge Representation (F. van Harmelen, V. Lifschitz, and B.Porter, eds.), pp.89-134, Foundations of Artificial Intelligence, 2008.
(文献6)N.Een and N.Sorensson, “MiniSat,” URL:http://minisat.se/Main.html.
(文献7)G.Audemard and L.Simon, “Glucose,”URL:http://www.labri.fr/perso/lsimon/glucose/.
ただし、ソルバ部180として、上記のMILPソルバやSATソルバ以外のソルバを利用することもできる。
図7は、メンテナンス実施期間情報の例を示す図である。メンテナンス実施期間情報M1は、運用者端末700により、スケジューラ112に入力される。メンテナンス実施期間情報M1は、システムに含まれる複数の物理マシンに関するメンテナンスの実施期間の情報である。メンテナンス実施期間情報M1は、開始日時および終了日時の項目を含む。
開始日時の項目には、メンテナンスの実施期間の開始日時が登録される。終了日時の項目には、メンテナンスの実施期間の終了日時が登録される。例えば、メンテナンス実施期間情報M1は、開始日時“2017−06−01T12:00:00.000Z”および終了日時“2017−06−30T11:59:00.000Z”という情報を含む。これは、メンテナンス実施期間が2017年6月1日12時00分から2017年6月30日11時59分までであることを示す。
ここで、1つの物理マシンに対するメンテナンス作業は、メンテナンス実施期間のうちの一部の時間範囲を用いて行われる。管理サーバ100は、各物理マシンのメンテナンス作業が、入力されたメンテナンス実施期間中に完了するようにスケジューリングする。
例えば、管理サーバ100は、第1の物理マシンに対するメンテナンス作業を行う前に、第1の物理マシン上の全ての仮想マシンを第2の物理マシン(移動先の物理マシンは複数でもよい)に移動させて、第1の物理マシンのメンテナンス作業を行えるようにする。
また、その後、第2の物理マシンのメンテナンス作業を行う場合も考えられる。その場合、管理サーバ100、第2の物理マシン上の全ての仮想マシンを第1の物理マシンまたは第3の物理マシン(移動先の物理マシンは複数でもよい)に移動させて、第2の物理マシンのメンテナンス作業を行えるようにする。
図8は、メンテナンス対象マシン情報の例を示す図である。メンテナンス対象マシン情報M2は、運用者端末700により、スケジューラ112に入力される。メンテナンス対象マシン情報M2は、物理マシン名およびメンテナンス所要時間の項目を含む。
物理マシン名の項目には、物理マシンの名称が登録される。メンテナンス所要時間の項目には、当該物理マシンのメンテナンスの所要時間が登録される。例えば、メンテナンス対象マシン情報M2は、物理マシン名“PM01”、メンテナンス所要時間“01:00:00.000”という情報を含む。これは、物理マシン名“PM01”で示される物理マシンのメンテナンス作業の所要時間が1時間であることを示す。
メンテナンス対象マシン情報M2には、メンテナンス対象の他の物理マシンに対しても、同様に物理マシン名とメンテナンス所要時間が登録される。
図9は、物理マシン構成テーブルの例を示す図である。物理マシン構成テーブル121は、インフラ構成情報記憶部120に予め格納されている。物理マシン構成テーブル121は、物理マシン名、CPUコア数、メモリ容量およびディスク容量の項目を含む。
物理マシン名の項目には、物理マシンの名称が登録される。CPUコア数の項目には、当該物理マシンが備えるCPUコアの数が登録される。メモリ容量の項目には、当該物理マシンが備えるメモリ(RAM)の容量が登録される。ディスク容量の項目には、当該物理マシンが備えるHDD(あるいは、当該物理マシンに対して外部ストレージに割り当てられた補助記憶領域)の容量が登録される。
例えば、物理マシン構成テーブル121には、物理マシン名が“PM01”、CPUコア数が“64”、メモリ容量が“256GB”、ディスク容量が“32TB”というレコードが登録されている。このレコードは、物理マシン名“PM01”で示される物理マシンが備えるCPUコア数が64個、メモリ容量が256GB、ディスク容量が32TBであることを示す。
物理マシン構成テーブル121には、他の物理マシンに対しても同様に、物理マシン名とCPUコア数とメモリ容量とディスク容量とが登録される。
図10は、仮想マシン構成テーブルの例を示す図である。仮想マシン構成テーブル122は、インフラ構成情報記憶部120に予め格納されている。仮想マシン構成テーブル122は、仮想マシン名、CPUコア数、メモリ容量、ディスク容量およびユーザID(IDentifier)の項目を含む。
仮想マシン名の項目には、仮想マシンの名称が登録される。CPUコア数の項目には、当該仮想マシンに割り当てられるCPUコア数が登録される。メモリ容量の項目には、当該仮想マシンに割り当てられるメモリの容量が登録される。ディスク容量の項目には、当該仮想マシンに割り当てられるHDD(あるいは、物理マシンの外部ストレージの補助記憶装置)の容量が登録される。
例えば、仮想マシン構成テーブル122には、仮想マシン名が“accounting−db−13”、CPUコア数が“2”、メモリ容量が“32GB”、ディスク容量が“2TB”、ユーザIDが“user1”というレコードが登録されている。このレコードは、仮想マシン名“accounting−db−13”で示される仮想マシンに対して所要されるCPUコア数が2個、メモリ容量が32GB、ディスク容量が2TBであり、ユーザID“user1”のユーザが当該仮想マシンを利用していることを示す。
仮想マシン構成テーブル122には、他の仮想マシンに対しても同様に、仮想マシン名とCPUコア数とメモリ容量とディスク容量とユーザIDとが登録される。
図11は、仮想マシン稼働テーブルの例を示す図である。仮想マシン稼働テーブル123は、インフラ構成情報記憶部120に予め格納されている。仮想マシン稼働テーブル123は、各仮想マシンの初期配置先の物理マシンを示す情報である。仮想マシン稼働テーブル123は、物理マシン名、仮想マシン名およびユーザIDの項目を含む。
物理マシン名の項目には、物理マシンの名称が登録される。仮想マシン名の項目には、当該物理マシン上で稼働する仮想マシンの名称が登録される。ユーザIDの項目には、当該仮想マシンを利用するユーザのユーザIDが登録される。
例えば、仮想マシン稼働テーブル123には、物理マシン名が“PM01”、仮想マシン名が“server−90”、ユーザIDが“user3”というレコードが登録されている。このレコードは、物理マシン名“PM01”で示される物理マシン上で、仮想マシン名“server−90”で示される仮想マシンが稼働しており、ユーザID“user3”のユーザが当該仮想マシンを利用していることを示す。
仮想マシン稼働テーブル123には、他の仮想マシンに対しても同様に、配置先の物理マシン名と仮想マシン名とユーザIDとが登録される。
図12は、依存関係テーブルの例を示す図である。依存関係テーブル124は、インフラ構成情報記憶部120に予め格納されている。依存関係テーブル124は、仮想マシンのグループに対する依存関係を示す情報である。依存関係テーブル124は、グループ名、仮想マシン名およびルールの項目を含む。
グループ名の項目には、仮想マシンのグループの名称が登録される。仮想マシン名の項目には、該当のグループに属する仮想マシンの名称の組が登録される。ルールの項目には、該当のグループに属する仮想マシンを同一の物理マシン上で稼働させるか否かを示す情報が登録される。例えば、ルール“affinity”は、同一の物理マシン上で稼働させること(affinityルールと呼ぶ)を示す。また、ルール“anti−affinity”は、同一の物理マシン上で稼働させないこと(anti−affinityルールと呼ぶ)を示す。
例えば、依存関係テーブル124には、グループ名が“G01”、仮想マシン名が“accounting−db−13”および“accounting−db−03”、ルールが“anti−affinity”というレコードが登録されている。このレコードは、グループ名“G01”で示されるグループに、仮想マシン名“accounting−db−13”および“accounting−db−03”の2つの仮想マシンが所属し、これら仮想マシンを同一物理マシン上で稼働させないことを示す。
また、例えば、依存関係テーブル124には、グループ名が“G02”、仮想マシン名が“accounting−db−03”および“accounting−web−03”、ルールが“affinity”というレコードが登録されている。このレコードは、グループ名“G02”で示されるグループに、仮想マシン名“accounting−db−03”および“accounting−web−03”の2つの仮想マシンが所属し、これら仮想マシンを同一物理マシン上で稼働させることを示す。
依存関係テーブル124には、仮想マシンの他のグループに対しても同様に、グループ名と仮想マシン名とルールとが登録される。
図13は、LM所要時間テーブルの例を示す図である。LM所要時間テーブル131は、VM性能情報記憶部130に予め格納されている。LM所要時間テーブル131は、時刻、仮想マシン名およびLM所要時間の項目を含む。
時刻の項目には、時刻が登録される。仮想マシン名の項目には、仮想マシンの名称が登録される。LM所要時間の項目には、該当の時刻において該当の仮想マシンに対して予測されるライブマイグレーション(LM)の所要時間が登録される。
例えば、LM所要時間テーブル131には、時刻が“2017−06−20T09:00:00.000Z”、仮想マシン名が“server−90”、LM所要時間が“00:15:00.000”というレコードが登録されている。このレコードは、2017年6月20日9時00分〜9時59分の間に仮想マシン名“server−90”の仮想マシンのLMを完了する場合の当該LMの所要時間が15分であることを示す。
また、LM所要時間テーブル131には、時刻が“2017−06−20T09:00:00.000Z”、仮想マシン名が“accounting−db−03”、LM所要時間が“00:30:00.000”というレコードが登録されている。このレコードは、2017年6月20日9時00分〜9時59分の間に仮想マシン名“accounting−db−03”の仮想マシンのLMを完了する場合の当該LMの所要時間が30分であることを示す。
また、LM所要時間テーブル131には、時刻が“2017−06−20T10:00:00.000Z”、仮想マシン名が“server−90”、LM所要時間が“00:15:00.000”というレコードが登録されている。このレコードは、2017年6月20日10時00分〜10時59分の間に仮想マシン名“server−90”の仮想マシンのLMを完了する場合の当該LMの所要時間が15分であることを示す。
また、LM所要時間テーブル131には、時刻が“2017−06−20T10:00:00.000Z”、仮想マシン名が“accounting−db−03”、LM所要時間が“00:20:00.000”というレコードが登録されている。このレコードは、2017年6月20日10時00分〜10時59分の間に仮想マシン名“accounting−db−03”の仮想マシンのLMを完了する場合の当該LMの所要時間が20分であることを示す。
LM所要時間テーブル131には、他の時刻、他の仮想マシンに対しても同様に、時刻と仮想マシン名とLM所要時間とが登録される。
図14は、メンテナンススケジュールテーブルの例を示す図である。メンテナンススケジュールテーブル161は、ソルバ部180により生成され、イベント情報記憶部160に格納される。メンテナンススケジュールテーブル161は、物理マシン名、開始日時および終了日時の項目を含む。
物理マシン名の項目には、メンテナンス対象の物理マシンの名称が登録される。開始日時の項目には、当該物理マシンのメンテナンスの開始日時が登録される。終了日時の項目には、当該物理マシンのメンテナンスの終了日時が登録される。
例えば、メンテナンススケジュールテーブル161には、物理マシン名が“PM01”、開始日時が“2017−06−20T10:30:00.000Z”、終了日時が“2017−06−20T11:29:00.000Z”というレコードが登録されている。このレコードは、物理マシン名“PM01”の物理マシンのメンテナンスを2017年6月20日10時30分〜2017年6月20日11時29分まで行う予定であることを示す。
メンテナンススケジュールテーブル161には、メンテナンス対象の他の物理マシンに対しても同様に、物理マシン名と開始日時と終了日時とが登録される。
図15は、LMスケジュールテーブルの例を示す図である。LMスケジュールテーブル162は、ソルバ部180により生成され、イベント情報記憶部160に格納される。LMスケジュールテーブル162は、仮想マシン名、開始日時、終了日時、移動元、移動先および状態の項目を含む。
仮想マシン名の項目には、LM対象の仮想マシンの名称が登録される。開始日時の項目には、該当の仮想マシンのLMの開始日時が登録される。終了日時の項目には、該当の仮想マシンのLMの終了日時が登録される。移動元の項目には、LMの移動元の物理マシンの名称(物理マシン名)が登録される。移動先の項目には、LMの移動先の物理マシンの名称(物理マシン名)が登録される。状態の項目には、当該LMの開始日時および終了日時で示されるスケジュールの“確定”または“未確定”を示す情報が登録される。状態の項目の初期値は“未確定”である。
例えば、LMスケジュールテーブル162には、仮想マシン名が“server−90”、開始日時が“2017−06−20T09:45:00.000Z”、終了日時が“2017−06−20T09:59:00.000Z”、移動元が“PM01”、移動先が“PM02”、状態が“確定”というレコードが登録されている。
このレコードは、仮想マシン名“server−90”のLMを2017年6月20日9時45分に開始し、2017年6月20日9時59分に終了することを示す。また、当該LMの移動元が物理マシン名“PM01”の物理マシンであり、移動先が物理マシン“PM02”の物理マシンであること、当該LMのスケジュールが利用者によって確定済であることを示す。
LMスケジュールテーブル162には、他の仮想マシンに対しても、仮想マシン名と開始日時と終了日時と移動元と移動先と状態とが登録される。
なお、LMスケジュールテーブル162のうち、仮想マシン名、開始日時および終了日時の項目の内容が利用者に提示される内容である。また、LMスケジュールテーブル162のうち、仮想マシン名、開始日時、終了日時、移動元および移動先の項目が運用者に提示される内容である。
図16は、LM実施拒否日時情報の例を示す図である。LM実施拒否日時情報M3は、利用者端末500,600により、スケジューラ112に入力される。LM実施拒否日時情報M3は、仮想マシン名、開始日時および終了日時の項目を含む。
仮想マシン名の項目には、仮想マシンの名称が登録される。開始日時の項目には、LMの実施を拒否する期間(LM実施拒否期間)の開始日時が登録される。終了日時の項目には、LMの実施拒否期間の終了日時が登録される。例えば、LM実施拒否日時情報M3は、仮想マシン名“mysql−67”、開始日時“2017−06−20T11:00:00.000Z”、終了日時“2017−06−20T13:59:00.000Z”という情報を含む。これは、仮想マシン名“mysql−67”の仮想マシンのLM実施拒否期間が2017年6月20日11時00分から2017年6月20日13時59分であることを示す。
LM実施拒否日時情報M3には、他の仮想マシンについても同様に、仮想マシン名と開始日時と終了日時とが含まれ得る。
図17は、制約充足問題における変数の例を示す図である。制約条件生成部170は、図7〜図13で例示した各情報(場合によっては、図16の情報も含む)に含まれる値を制約充足問題の入力とする。ソルバ部180は、制約充足問題を解くことで、図14で例示したメンテナンススケジュールテーブル161および図15で例示したLMスケジュールテーブル162を出力し、イベント情報記憶部160に格納する。
例えば、入力変数には次のものがある。
は、メンテナンス実施期間の開始日時である。tは、メンテナンス実施期間の終了日時である。T={t,・・・,t}は、メンテナンス実施期間を分単位に離散化した時刻の集合である。Tにおけるある時刻から、その次の時刻(1分後の時刻)の直前までの期間を1つのタイムスロットと呼ぶ。時刻tおよびtの値は、メンテナンス実施期間情報M1から得られる。
Pは、メンテナンス対象の物理マシン(PM)の集合である。maintDurationは、物理マシンp(PMp)のメンテナンス所要時間である。ここで、pは、メンテナンス対象の物理マシンを示す添え字である。PおよびmaintDurationの値は、メンテナンス対象マシン情報M2から得られる。
cpuCapは、PMpのCPUコア数である。ramCapは、PMpのメモリ容量である。diskCapは、PMpのディスク容量である。cpuCap、ramCapおよびdiskCapの値は、物理マシン構成テーブル121から得られる。
Vは、LMの日程調整対象の仮想マシン(VM)の集合である。initAccommopvは、仮想マシンv(VMv)の初期配置を示し、VMvの初期配置先がPMpの場合は1、それ以外の場合は0を示す。ここで、vは、LM対象の仮想マシンを示す添え字である。Vは、仮想マシン稼働テーブル123に登録された仮想マシンのうち、メンテナンス対象マシン情報M2で指定された物理マシンに対応付けられた仮想マシンの集合となる。initAccommopvの値は、仮想マシン稼働テーブル123から得られる。
migrationDuration(t)は、時刻tにおけるVMvのLM所要時間である。migrationDuration(t)の値は、LM所要時間テーブル131から得られる。
cpuReqは、VMvのCPUコア数である。ramReqは、VMvのメモリ容量である。diskReqは、VMvのディスク容量である。cpuReq、ramReqおよびdiskReqの値は、仮想マシン構成テーブル122から得られる。
availMigrationTimeSlot(t)は、LM実施許可日時(あるいは、LM実施拒否日時)を示し、時刻tにVMvのLMを実施してよい場合は1、それ以外の場合は0を示す。availMigrationTimeSlot(t)の値は、LM実施拒否日時情報M3から得られる(LM実施拒否日時に属する時刻では0であり、それ以外で1となる)。
numGafは、affinityルールが適用されているグループの数である。Gaf={Gaf_1,・・・,Gaf_numGaf}は、affinityルールが適用されているグループの集合である。numGaaは、anti−affinityルールが適用されているグループの数である。Gaa={Gaa_1,・・・,Gaa_numGaa}は、anti−affinityルールが適用されているグループの集合である。numGaf、Gaf、numGaa、Gaaの値は、依存関係テーブル124から得られる。
また、例えば、出力変数には次のものがある。
(t)は、PM単位のメンテナンス実施期間を示し、時刻tにPMpがメンテナンス中の場合は1、それ以外の場合は0を示す。m(t)は、メンテナンススケジュールテーブル161の作成に用いられる。
pv(t)は、VMの配置先の物理マシンを示し、時刻tにVMvがPMp上で稼働している場合は1、それ以外の場合は0を示す。lpv(t)は、LMによるVMの配置先の切り替わりを示し、VMvについて時刻tにPMpへのLMが完了した場合は1、それ以外の場合は0を示す。apv(t)およびlpv(t)は、LMスケジュールテーブル162の作成に用いられる。
ここで、上記の変数migrationDuration(t)、lpv(t)およびapv(t)によるLMの表現を例示する。
図18は、変数によるLMの表現の例を示す図である。図18(A)は、時刻t,ti+1,・・・,ti+5における、仮想マシンv1,v2に対するmigrationDurationを例示する。
例えば、migrationDurationv1(ti+2)=2である。これは、時刻ti+2に仮想マシンv1のLMを完了させるためにタイムスロットを2つ要することを示す。
また、migrationDurationv2(ti+4)=3である。これは、時刻ti+4に仮想マシンv2のLMを完了させるためにタイムスロットを3つ要することを示す。
図18(B)は、時刻t,ti+1,・・・,ti+5における、仮想マシンv1,v2に対するlpv(ただし、p=Cとする)を例示する。
例えば、lpv1(ti+2)=1であり、それ以外の時刻ではlpv1(t)=0である。これは、時刻ti+2に、仮想マシンv1の物理マシンCへのLMが完了したことを示す。ここで、図18(A)によれば、時刻ti+2で仮想マシンv1のLMが完了するには、タイムスロットを2つ要する。したがって、仮想マシンv1のLMの実施期間は、時刻ti+1,ti+2で示される2つのタイムスロットの期間である。
また、lpv2(ti+4)=1であり、それ以外の時刻ではlpv2(t)=0である。これは、時刻ti+4に、仮想マシンv2の物理マシンCへのLMが完了したことを示す。ここで、図18(A)によれば、時刻ti+4で仮想マシンv2のLMが完了するには、タイムスロットを3つ要する。したがって、仮想マシンv2のLMの実施期間は、時刻ti+2,ti+3,ti+4で示される3つのタイムスロットの期間である。
図18(C)は、時刻t,ti+1,・・・,ti+5において、仮想マシンv1,v2に対し、apv(t)==1となるp(物理マシン)を例示する。
例えば、時刻t,ti+1,ti+2では、apv1(t)==1となるpは、物理マシンA(仮想マシンv1のLMの移動元)である。そして、図18(B)で例示されるように、仮想マシンv1は、時刻ti+2で物理マシンCへのLMが完了する。このため、時刻ti+3以降では、apv1(t)==1となるpは、物理マシンCである。
また、時刻t,ti+1,・・・,ti+4では、apv2(t)==1となるpは、物理マシンB(仮想マシンv2のLMの移動元)である。そして、図18(B)で例示されるように、仮想マシンv2は、時刻ti+4で物理マシンCへのLMが完了する。このため、時刻ti+5以降では、apv2(t)==1となるpは、物理マシンCである。
以上のように、変数migrationDuration(t)、lpv(t)およびapv(t)により、仮想マシンv1,v2のLMについて、次の内容が表される。
仮想マシンv1について、LM実施期間は時刻[ti+1,ti+2](時刻ti+1から時刻ti+2まで)であり、移動元が物理マシンA、移動先が物理マシンCである。
仮想マシンv2について、LM実施期間は時刻[ti+2,ti+4](時刻ti+2から時刻ti+4まで)であり、移動元が物理マシンA、移動先が物理マシンCである。
制約条件生成部170は、上記に例示した各変数を用いた制約条件を生成する。ソルバ部180は、生成された制約条件に関する制約充足問題を解くことで、メンテナンススケジュールテーブル161およびLMスケジュールテーブル162を作成する。
ここで、制約条件生成部170により生成される制約条件の例を示す。
第1の制約条件は、VMvが初期配置先のPMp上で起動することである。第1の制約条件は、式(2)で表される。
Figure 2019057213
第2の制約条件は、PMpに対してメンテナンスを一度実施することである。第2の制約条件は、式(3)(4)で表される。特に、式(3)は、PMpに対してmaintDuration以上の連続したメンテナンス期間が確保されることを示す。式(4)は、当該メンテナンス期間の合計がmaintDurationに等しいことを示す。
Figure 2019057213
Figure 2019057213
第3の制約条件は、一度にメンテナンスを実施できるPM数をC台以下とすることである。ここで、Cは、システムに応じて予め定められる定数である。第3の制約条件は、式(5)で表される。
Figure 2019057213
第4の制約条件は、VMvが何れかのPMp上で常に稼働することである。第4の制約条件は、式(6)で表される。
Figure 2019057213
第5の制約条件は、PMp上で稼働するVMの要求資源量の合計がPMpの提供資源量以下であり、かつ、PMpのメンテナンス中はPMp上でVMを稼働させないことである。第5の制約条件は、式(7)(8)(9)で表される。特に、式(7)は、CPUコア数に関する制約条件を表す。式(8)は、メモリ容量に関する制約条件を示す。式(9)は、ディスク容量に関する制約条件を表す。
Figure 2019057213
Figure 2019057213
Figure 2019057213
第6の制約条件は、VMvがPMp上で稼働する時間がmigrationDuration(t)+1以上であることである。第6の制約条件は、式(10)で表される。ここで、第6の制約条件は、VMvがLMのためにmigrationDuration(t)+1以上の期間、連続して稼働状態となることを反映している。migrationDuration(t)に“+1”(1を加算)する理由は、LMが完了した直後に別のLMを実施することは考えにくいためである。
Figure 2019057213
第7の制約条件は、ライブマイグレーションの検出を示す。第7の制約条件は、式(11)で表される。ここで、lpv(t)は、VMvについて時刻tにPMpへのライブマイグレーションが完了した場合は1であり、それ以外の場合は0である。
Figure 2019057213
第8の制約条件は、VMvのLMを実施できるのは許可された期間のみであることである。第8の制約条件は、式(12)で表される。
Figure 2019057213
第9の制約条件は、PMpについてメンテナンス中のライブマイグレーションが禁止されることである。第9の制約条件は、式(13)で表される。
Figure 2019057213
第10の制約条件は、一度にLMを行えるVMをC台以下とすることである。ここで、Cは、システムに応じて予め定められる定数である。第10の制約条件は、式(14)で表される。
Figure 2019057213
第11の制約条件は、anti−affinityルールが適用されているグループに属する各VMを同じPM上で稼働させることを禁止することである。第11の制約条件は、式(15)で表される。
Figure 2019057213
第12の制約条件は、affinityルールが適用されているグループに属する各VMを同じPM上で稼働させることである。第12の制約条件は、式(16)で表される。
Figure 2019057213
第13の制約条件は、制約充足問題の目的関数であり、各VMのLMの所要時間(すなわち、利用者の業務に対する影響時間)を最小化することである。第13の制約条件は、式(17)で表される。
Figure 2019057213
次に、管理サーバ100による処理手順を説明する。
図19は、管理サーバの処理例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
(S1)スケジューラ112は、メンテナンスおよびLMの日程調整実施のメッセージを運用者端末700から受信する。当該メッセージは、メンテナンス実施期間情報M1およびメンテナンス対象マシン情報M2を含む。
(S2)スケジューラ112は、メンテナンスの日程調整の処理を実行する。日程調整の処理の詳細は後述される。スケジューラ112は、日程調整の結果、各物理マシンのメンテナンススケジュールテーブル161および各仮想マシンのLMスケジュールテーブル162を作成する。
(S3)スケジューラ112は、作成したLMスケジュールに基づいて、LM実施予定日時を利用者に提示する。具体的には、スケジューラ112は、利用者が利用する仮想マシンのLM実施予定日時を示す画面情報を、利用者毎に作成し、該当の利用者の利用者端末に、作成した画面情報を送信する。このとき、スケジューラ112は、LM実施予定日時と共にLM実施予定日時に含まれる各時刻に対して予測される仮想マシンの負荷(予測負荷)を示す情報も該当の利用者端末に送信する。スケジューラ112により送信された画面情報は、利用者端末により受信される。利用者端末は、当該画面情報に基づいて仮想マシンのLM実施予定日時を示す画面(各時刻の仮想マシンの予測負荷を含む)を表示する。なお、スケジューラ112は、仮想マシン構成テーブル122や仮想マシン稼働テーブル123のユーザIDの項目により、各仮想マシンを利用する利用者を識別することができる。
(S4)スケジューラ112は、各利用者によるLM実施日時確定または拒否日時のメッセージを受信する。拒否日時のメッセージは、LM実施拒否日時情報M3を含む。
(S5)スケジューラ112は、メンテナンスおよびLMの日程再調整の処理を実行する。日程再調整の処理の詳細は後述される。スケジューラ112は、日程再調整に応じて、メンテナンススケジュールテーブル161およびLMスケジュールテーブル162を更新する。
(S6)スケジューラ112は、メンテナンス日程を運用者に提示する。具体的には、スケジューラ112は、メンテナンススケジュールテーブル161およびLMスケジュールテーブル162に基づいて、各仮想マシンのLMのスケジュールや各物理マシンのメンテナンスのスケジュールを示す画面情報を作成する。スケジューラ112は、作成した画面情報を運用者端末700に送信する。
(S7)スケジューラ112は、LM実施確定日時を利用者に提示する。具体的には、スケジューラ112は、LMスケジュールテーブル162に基づいて、利用者が利用する仮想マシンのLMのスケジュールを示す画面情報を、利用者毎に作成する。スケジューラ112は、該当の利用者の利用者端末に、作成した画面情報を送信する。なお、スケジューラ112は、ステップS6,S7を、任意の順序で実行することができる。
(S8)スケジューラ112は、作成したメンテナンス日程をインフラ管理部111に登録する。具体的には、スケジューラ112は、LMスケジュールテーブル162で示されるスケジュールで各仮想マシンのLMを行うようにインフラ管理部111を設定する。
インフラ管理部111は、当該スケジュールに応じて、各仮想マシンのLMを物理マシン200,300,400,・・・に指示する。すなわち、管理サーバ100は、作成されたLMスケジュールテーブル162(スケジュール情報)に基づいて、該当の仮想マシンのLM(移動)をメンテナンス対象の物理マシンに指示する。これにより、運用者による物理マシンのメンテナンス作業を効率化できる。
図20は、日程調整例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。以下に示す手順は、図19のステップS2に相当する。
(S11)制約条件生成部170は、制約充足問題の生成処理を実行する。制約充足問題の生成処理の詳細は後述される。制約条件生成部170は、制約充足問題の生成処理の結果、複数の制約条件を含む制約充足問題を出力する。
(S12)ソルバ部180は、ステップS11で出力された制約充足問題の求解を実行し、メンテナンス実施期間の各時刻における出力変数の各値を求める。
(S13)ソルバ部180は、メンテナンス実施期間の各時刻における出力変数の値から、スケジューリング結果として、メンテナンススケジュールテーブル161およびLMスケジュールテーブル162を作成する。ソルバ部180は、当該スケジューリング結果をイベント情報記憶部160に格納する。なお、この段階では、LMスケジュールテーブル162の状態の項目は、全て“未確定”である。
ここで、ソルバ部180は、メンテナンス実施期間のうち、メンテナンス対象の物理マシン上で稼働する全ての仮想マシンを他の物理マシンに移動させた後の期間から、当該物理マシンに対してメンテナンスを行う日程を決定する。例えば、ソルバ部180は、メンテナンス対象の物理マシン上で稼働する全ての仮想マシンを、他の物理マシンに移動させた直後の期間(メンテナンスの所要時間に相当する長さの期間)を、当該物理マシンに対してメンテナンスを行う期間としてもよい。
図21は、制約充足問題の生成例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。以下に示す手順は、図20のステップS11に相当する。
(S21)制約条件生成部170は、インフラ構成情報記憶部120に記憶されたインフラ構成情報をソルバ部180への入力形式に変換する。前述のように、インフラ構成情報は、物理マシン構成テーブル121、仮想マシン構成テーブル122、仮想マシン稼働テーブル123および依存関係テーブル124を含む。制約条件生成部170は、これらの各テーブルの情報をソルバ部180に対する入力データの形式に変換する。
(S22)制約条件生成部170は、仮想マシン(VM)の依存関係に関する制約条件を生成する。VMの依存関係に関する制約条件は、例えば、前述の第1、第4、第5、第11および第12の制約条件である。制約条件生成部170は、生成した制約条件を制約条件記憶部150に格納する。
(S23)制約条件生成部170は、LMの日程調整対象の全仮想マシン(VM)をスケジューリング候補に設定する。日程調整対象の仮想マシンは、メンテナンス対象マシン情報M2で指定された物理マシン上で稼働する仮想マシンである。それ以外の物理マシン上で稼働する仮想マシンはLMの日程調整の対象外である。
(S24)制約条件生成部170は、メンテナンス実施期間の全日時をLM実施の候補日時に設定する。例えば、制約条件生成部170は、メンテナンス実施期間情報M1に基づいて、T={t,・・・,t}を設定する。また、制約条件生成部170は、Tに属する全てのtについてavailMigrationTimeSlot(t)=1とする。
(S25)制約条件生成部170は、VM性能情報記憶部130に記憶された仮想マシンの負荷予測を、ソルバ部180への入力形式に変換する。ここで、仮想マシンの負荷予測とは、VM性能情報記憶部130に記憶されたLM所要時間テーブル131である。LM所要時間テーブル131は、メンテナンス実施期間(T)の各時刻に対応する仮想マシン毎のLMの所要時間を含む。制約条件生成部170は、LM所要時間テーブル131の情報をソルバ部180に対する入力データの形式(変換後の仮想マシンの負荷予測)に変換する。なお、LMの所要時間は、仮想マシンの負荷が大きいときには長くなり、仮想マシンの負荷が小さいときには短くなる傾向にある。このため、LMの所要時間は、仮想マシンの負荷予測の結果を反映した情報であるといえる。
(S26)制約条件生成部170は、変換後の仮想マシンの負荷予測に基づいて、仮想マシン(VM)負荷が小さいとき(すなわち、各仮想マシンのLM所要時間が小さいとき)にLMを実施するように制約条件(LM実施時間に関する制約条件)を生成する。LM実施時間に関する制約条件は、例えば、前述の第2、第3、第6〜第10および第13の制約条件である。ここで、この段階では、第8の制約条件については、各仮想マシンについてメンテナンス実施期間における全ての期間でLMを実施可(全てのtについてavailMigrationTimeSlot(t)=1)である。制約条件生成部170は、生成した制約条件を制約条件記憶部150に格納する。
(S27)制約条件生成部170は、ステップS22,S26で生成した制約条件を基に制約充足問題を設定する。
図22は、日程再調整例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。以下に示す手順は、図19のステップS5に相当する。
(S31)制約条件生成部170は、集合Vを初期化する。具体的には、制約条件生成部170は、集合Vを空集合φとする。ここで、集合Vは、LM実施の日程が確定した仮想マシンの集合である。
(S32)制約条件生成部170は、仮想マシン毎のLMの日程の確認を行う。制約条件生成部170は、ステップS32〜S37の手順を、Vに属する全ての仮想マシンに対して繰り返し実行する。
(S33)制約条件生成部170は、仮想マシンvのLM実施予定日時は利用者により受け入れられたか否かを判定する。受け入れられた場合、制約条件生成部170は、ステップS34に処理を進める。受け入れられなかった場合、制約条件生成部170は、ステップS36に処理を進める。制約条件生成部170は、利用者に提示した仮想マシンvのLMのLM実施予定日時に対する確定または実施拒否日時のメッセージを受け付けることで、ステップS33の判定を行う。確定のメッセージを受け付けた場合、制約条件生成部170は、LM実施予定日時が利用者により受け入れられたと判定する。実施拒否日時のメッセージを受け付けた場合、制約条件生成部170は、LM実施予定日時が利用者により受け入れられなかったと判定する。
(S34)制約条件生成部170は、集合Vに仮想マシンvを追加する。
(S35)制約条件生成部170は、仮想マシンvのLM実施日時を確定する。具体的には、制約条件生成部170は、イベント情報記憶部160に記憶されたLMスケジュールテーブル162における仮想マシンvのレコードの状態の項目を、“未確定”から“確定”に変更する。そして、制約条件生成部170は、ステップS37に処理を進める。
(S36)制約条件生成部170は、実施拒否日時のメッセージに含まれるLM実施拒否日時情報M3から、仮想マシンvのLM実施拒否日時を取得し、制約条件記憶部150に格納する。そして、制約条件生成部170は、ステップS37に処理を進める。
(S37)制約条件生成部170は、Vに属する全ての仮想マシンvに対して、利用者による確定または実施拒否日時のメッセージを処理するまでステップS32〜S37を繰り返し実行し、全ての仮想マシンvに対して処理済になると、ステップS38に処理を進める。
(S38)制約条件生成部170は、V=Vであるか(すなわち、集合Vの全要素が集合Vの全要素に一致するか)否かを判定する。V=Vの場合、制約条件生成部170は、ステップS41に処理を進める。V=Vでない場合、制約条件生成部170は、ステップS39に処理を進める。
(S39)制約条件生成部170は、制約充足問題の再生成処理を実行する。制約充足問題の再生成処理の詳細は後述される。制約条件生成部170は、制約充足問題の再生成処理の結果、複数の制約条件を含む制約充足問題を出力する。
(S40)ソルバ部180は、ステップS39で出力された制約充足問題の求解を実行し、メンテナンス実施期間の各時刻における出力変数の各値を求める。
(S41)ソルバ部180は、メンテナンス実施期間の各時刻における出力変数の値から、メンテナンススケジュールテーブル161およびLMスケジュールテーブル162を更新する。ソルバ部180は、LMスケジュールテーブル162においてLMスケジュールを更新した仮想マシンの状態の項目を“未確定”から“確定”に変更する。ソルバ部180は、再スケジューリング結果として、更新後のメンテナンススケジュールテーブル161およびLMスケジュールテーブル162を出力する。ソルバ部180は、当該再スケジューリング結果をイベント情報記憶部160に格納する。
なお、ステップS38でV=Vの場合、利用者によって全ての仮想マシンのLM実施予定日時が受け入れられたことになるため、ステップS41の再スケジューリング結果はステップS13のスケジューリング結果に等しくなる。
また、ステップS36では、制約条件生成部170は、仮想マシンvのLM実施拒否日時を受け付けるものとしたが、LM実施拒否日時に代えて、LM実施を許容する日時(LM実施許容日時)を受け付けてもよい。そして、制約条件生成部170は、当該LM実施許容日時に基づいて制約条件を作成し、ソルバ部180による再スケジューリングを行ってもよい。
図23は、制約充足問題の再生成例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。以下に示す手順は、図22のステップS39に相当する。
(S51)制約条件生成部170は、集合V−Vに属する全ての仮想マシンvをスケジューリング候補に設定する。集合V−Vは、LM実施日程が確定していないVMの集合である。制約条件生成部170は、最初のスケジューリングの結果、利用者によってLMの実施予定日時が受け入れられた仮想マシンについては最初のスケジューリングの結果として得られたLMの実施予定日時を固定する。そして、制約条件生成部170は、LM実施予定日時が受け入れられなかった仮想マシンvを再スケジューリングの候補とする。
(S52)制約条件生成部170は、仮想マシンvのLM実施拒否日時、および、仮想マシンv(仮想マシンvは、集合Vの全要素)のLM実施日時をLM実施の候補日時から除外する。具体的には、制約条件生成部170は、仮想マシンvのLM実施拒否日時については対象の仮想マシンvについてのみ、候補日時から除外する(仮想マシンv以外の仮想マシンについては仮想マシンvのLM実施拒否日時を候補日時から除外しない)。また、制約条件生成部170は、仮想マシンvのLM実施日時を、全仮想マシンについて候補日から除外する。制約条件生成部170は、これらの除外内容を、availMigrationTimeSlot(t)の値に反映させる。
ここで、仮想マシンvのLM実施拒否日時は、LM実施拒否日時情報M3から取得された情報(制約条件記憶部150に格納されている)である。また、仮想マシンvのLM実施日時は、LMスケジュールテーブル162に登録されている情報である。
(S53)制約条件生成部170は、変換後の仮想マシンの負荷予測に基づいて、仮想マシン(VM)負荷が小さいとき(すなわち、各仮想マシンのLM所要時間が小さいとき)にLMを実施するように制約条件(LM実施時間に関する制約条件)を生成する。LM実施時間に関する制約条件は、例えば、前述の第2、第3、第6〜第10および第13の制約条件である。ただし、LM実施予定日時が確定済の仮想マシンに関しては決定済の各種変数の値は固定である。制約条件生成部170は、生成した制約条件を制約条件記憶部150に格納する。
(S54)制約条件生成部170は、ステップS22で生成したVMの依存関係に関する制約条件とステップS53で生成したLM実施時間に関する制約条件を基に制約充足問題を設定する。
なお、ステップS52では、LMスケジュールを確定済の仮想マシンvのLM実施日時を候補日時から除外するものとした。その理由は、LMを並列に行う多重度が増加し過ぎて、システム負荷の増大を抑えるためである。一方、システム負荷の増大が懸念されないのであれば、仮想マシンvのLM実施日時を候補日時から除外しなくてもよい。
以下では、ソルバ部180に対する入力データ、および、当該入力データに対してソルバ部180の出力データを例示する。
図24は、ソルバ部に対する入力データの例(その1)を示す図である。例えば、入力データは、変数t、t、P、maintDuration、cpuCap、ramCapおよびdiskCapを含む。
:=0;およびt:=41759;はメンテナンス実施期間を示す(ここで、“:=”は代入を表し、“;”は当該変数への代入終了を表す)。t:=0は、メンテナンス実施期間の開始日時である2017年6月1日12時00分を示す。t:=41759は、メンテナンス実施期間の終了日時である2017年6月30日11時59分を示す。Tは、tを基準にtまでの時刻を分単位に離散化した値の集合となる。
P:=“PM01”、“PM02”、・・・;は、物理マシン名(PM名)の集合である(図中では各行が物理マシン名となる)。
maintDuration:=(“PM01” 60)、(“PM02” 120)、・・・;は、物理マシン毎のメンテナンスの所要時間(単位は分)である。1つのレコードは、(物理マシン名(PM名) メンテナンスの所要時間)の組となる。なお、図中では1行が1つのレコードとなる(入力データに含まれる以降の他の変数についても同様である)。
cpuCap:=(“PM01” 64)、(“PM02” 32)、・・・;は、物理マシン毎のCPUコア数である。1つのレコードは、(PM名 CPUコア数)の組となる。
ramCap:=(“PM01” 256)、(“PM02” 128)、・・・;は、物理マシン毎のメモリ容量である。1つのレコードは、(PM名 メモリ容量)の組となる。
diskCap:=(“PM01” 32000)、(“PM02” 128000)、・・・;は、物理マシン毎のディスク容量である。1つのレコードは、(PM名 ディスク容量)の組となる。
図25は、ソルバ部に対する入力データの例(その2)を示す図である。入力データは、更に、変数VおよびinitAccommopvを含む。
V:=“accounting−db−13”、“vm−67”、・・・;は、仮想マシン名(VM名)の集合である。
initAccommopv:=(・・・、“PM01” “mysql−67” 1)、(“PM02” “mysql−67” 0)、(“PM01” “accounting−db−03” 1)、(“PM02” “accounting−db−03” 0)、・・・;は、各仮想マシンの初期配置先の物理マシンを示す。1つのレコードは、(PM名 仮想マシン名(VM名) 0or1)の組となる(最後の値は、該当の物理マシンが該当の仮想マシンの初期配置先であれば“1”、初期配置先でなければ“0”である)。
図26は、ソルバ部に対する入力データの例(その3)を示す図である。入力データは、更に、変数migrationDuration(t)を含む。
migrationDuration(t):=・・・、(“server−90” 27180 15)、(“mysql−67” 27180 15)、・・・、(“server−90” 27239 15)、(“mysql−67” 27239 15)、・・・;は、仮想マシン毎のLMの所要時間である。1つのレコードは、(VM名 時刻 LMの所要時間(分))の組となる。
ここで、図中の時刻“27180”は、2017年6月20日9時00分を示す。時刻“27239”は、2017年6月20日9時59分を示す。時刻“27240”は、2017年6月20日10時00分を示す。時刻“27241”は、2017年6月20日10時01分を示す。
図27は、ソルバ部に対する入力データの例(その4)を示す図である。入力データは、更に、変数cpuReq、ramReqおよびdiskReqを含む。
cpuReq:=(“accounting−db−13” 2)、(“vm−67” 2)、・・・;は、仮想マシン毎に割り当てるCPUコア数である。1つのレコードは、(VM名 CPUコア数)の組となる。
ramReq:=(“accounting−db−13” 32)、(“vm−67” 2)、・・・;は、仮想マシン毎に割り当てるメモリ容量である。1つのレコードは、(VM名 メモリ容量)となる。
diskReq:=(“accounting−db−13” 2000)、(“vm−67” 32)、・・・;は、仮想マシン毎に割り当てるディスク容量である。1つのレコードは、(VM名 ディスク容量)となる。
図28は、ソルバ部に対する入力データの例(その5)を示す図である。入力データは、更に、変数availMigrationTimeSlot(t)、Gaa_1およびGaf_1を含む。
availMigrationTimeSlot(t):=・・・、(“mysql−67” 27298 1)、(“mysql−67” 27299 1)、(“mysql−67” 27300 0)、(“mysql−67” 27301 0)、・・・;は、仮想マシン後のLMの実施許可期間または実施拒否期間を示す。実施許可は“1”であり、実施拒否は“0”である。1つのレコードは、(VM名 時刻 0or1)となる。
ここで、図中の時刻“27298”は、2017年6月20日10時58分を示す。時刻“27299”は、2017年6月20日10時59分を示す。時刻“27300”は、2017年6月20日11時00分を示す。時刻“27301”は、2017年6月20日11時01分を示す。
aa_1:=“accounting−db−13”、“accounting−db−03”;は、anti−affinityルールの適用対象の1つ目のグループおよび当該グループに属する仮想マシンを示す。anti−affinityルールの適用対象の2つ目以降のグループも同様に設定される。
af_1:=“accounting−db−03”、“accounting−web−03”;は、affinityルールの適用対象の1つ目のグループおよび当該グループに属する仮想マシンを示す。affinityルールの適用対象の2つ目以降のグループも同様に設定される。
図29は、ソルバ部による出力データの例(その1)を示す図である。例えば、ソルバ部180は、制約条件生成部170により設定された制約充足問題を解くことで、次の出力データを出力する。出力データは、変数m(t)およびapv(t)を含む。
(t)=・・・、(“PM01” 27268 0)、(“PM01” 27269 0)、(“PM01” 27270 1)、(“PM01 ” 27271 1)、・・・;は、物理マシン毎のメンテナンス実施期間を示す。1つのレコードは、(PM名 時刻 0or1)の組である(最後の値は、該当PMが該当時刻にメンテナンス中であれば“1”、メンテナンス中でなければ“0”である)。
ここで、図中の時刻“27268”は、2017年6月20日10時28分を示す。時刻“27269”は、2017年6月20日10時29分を示す。時刻“27270”は、2017年6月20日10時30分を示す。時刻“27271”は、2017年6月20日10時31分を示す。
pv(t)=・・・、(“PM01” “server−90” 27238 1)、(“PM01” “server−90” 27239 1)、(“PM01” “server−90” 27240 0)、(“PM01” “server−90” 27241 0)、・・・;は、各PMで稼働するVMを示す。1つのレコードは、(PM名 VM名 時刻 0or1)の組である(最後の値は、該当のPM上で該当のVMが稼働している場合は“1”、稼働していない場合は“0”である)。
ここで、図中の時刻“27238”は、2017年6月20日9時58分を示す。時刻“27239”は、2017年6月20日9時59分を示す。時刻“27240”は、2017年6月20日10時00分を示す。時刻“27241”は、2017年6月20日10時01分を示す。
図30は、ソルバ部による出力データの例(その2)を示す図である。出力データは、更に、変数lpv(t)を含む。
pv(t)=(“PM01” “server−90” 27238 0)、(“PM01” “server−90” 27239 0)、・・・、(“PM02” “server−90” 27238 0)、(“PM02” “server−90” 27239 1)、(“PM02” “server−90” 27240 0)、・・・;は、各仮想マシンの移動先物理マシンへのLM完了時刻を示す。1つのレコードは、(PM名 VM名 時刻 0or1)の組である(最後の値は、該当のPM上への該当のVMのLMが完了した時刻の場合は“1”、それ以外の場合は“0”である)。
ここで、図中の時刻“27238”は、2017年6月20日9時58分を示す。時刻“27239”は、2017年6月20日9時59分を示す。時刻“27240”は、2017年6月20日10時00分を示す。時刻“27241”は、2017年6月20日10時01分を示す。時刻“27248”は、2017年6月20日10時08分を示す。時刻“27249”は、2017年6月20日10時09分を示す。時刻“27250”は、2017年6月20日10時10分を示す。時刻“27251”は、2017年6月20日10時11分を示す。
ソルバ部180は、出力データの内容から各仮想マシンに対するLMスケジュールを得る。例えば、lpv(t)の出力結果によれば、“server−90”について“PM02”へのLM終了時刻は“27239”である。また、LM所要時間テーブル131によれば、時刻“27239”(2017年6月20日9時59分)に仮想マシン名“sever−90”の仮想マシンのLMを完了させるときのLMの所要時間は15分である。したがって、ソルバ部180は、“server−90”に対するLMスケジュールを、時刻“27225”〜“27239”の15タイムスロットの期間と決定する。
ソルバ部180は、出力データで示される期間を年月日時分秒の形式に変換し、メンテナンススケジュールテーブル161およびLMスケジュールテーブル162を作成する。
スケジューラ112は、ソルバ部180により作成したLMスケジュールを利用者に提示し、利用者による確認を促す。次に、管理サーバ100により利用者端末500に提供される画面の例を説明する。
図31は、利用者に対するLMスケジュール画面の例(その1)を示す図である。画面800は、管理サーバ100から利用者端末500に対して提供される画面の例である。利用者端末500は、画面800に対応する画面情報を管理サーバ100から受信し、当該画面情報に基づいて、利用者端末500に内蔵または接続されたディスプレイ(表示装置)により、画面800を表示する。ここで、利用者端末500は、ユーザID“user3”の利用者によって利用されるものとし、当該利用者のユーザ名を“AAA”とする。
スケジューラ112は、仮想マシン構成テーブル122(または、仮想マシン稼働テーブル123)に基づいて、LMスケジュールテーブル162に登録された各仮想マシンの利用者のユーザIDを特定する。また、ユーザIDに対応する利用者のユーザ名や端末のアドレスの情報は、RAM102またはHDD103に予め格納されている。スケジューラ112は、当該情報を参照することで、ユーザ名や画面情報の送信先を特定する。
画面800は、VMシンボル801,802、LMシンボル811,812、予測負荷シンボル群821,822およびボタン831,832を有する。
VMシンボル801,802は、該当の利用者が利用する、LM対象の仮想マシンを示す。例えば、VMシンボル801は、仮想マシン名“server−90”の仮想マシンを示す。また、VMシンボル802は、仮想マシン名“mysql−67”の仮想マシンを示す。画面800の例では、VMシンボル801,802それぞれの行の左側から右側へ向かう方向を時系列の正方向として、各仮想マシンのLMスケジュールを示す。
LMシンボル811,812は、各仮想マシンのLMの実施予定の日時を示す。例えば、LMシンボル811は、仮想マシン名“server−90”の仮想マシンに対して、2017年6月20日9時45分〜同日9時59分にLMを実施することを示す。また、例えば、LMシンボル812は、仮想マシン名“mysql−67”の仮想マシンに対して、2017年6月20日11時00分〜同日11時09分にLMを実施することを示す。
予測負荷シンボル群821,822は、各時刻における各仮想マシンの予測負荷を示す。例えば、予測負荷シンボル群821,822に属するシンボルは円状の図形であり、円の大きさにより負荷の大きさを表す(円の直径が大きいほど予測負荷が大きく、円の直径が小さいほど予測負荷が小さい)。仮想マシンの予測負荷は、LMスケジュールの決定の根拠となる情報であり、利用者は、予測負荷シンボル群821,822を確認することで、各仮想マシンの負荷と、LMスケジュールとの整合(負荷の小さいときにLMを行う)を確認することができる。
ボタン831は、画面800のLMスケジュールの確定を入力するためのボタンである。利用者端末500は、利用者によるボタン831の入力を受け付けると、画面800に表示された各仮想マシンについて、LMスケジュールの確定メッセージを管理サーバ100に送信する。
ボタン832は、画面800のLMスケジュールを変更するための画面へ遷移するためのボタンである。
図32は、利用者に対するLMスケジュール画面の例(その2)を示す図である。画面800aは、画面800のLMスケジュールに対する変更内容(LM実施拒否日時)を入力するための画面である。画面800aは、利用者によるボタン832への入力に応じて、管理サーバ100から利用者端末500に提供される画面である。画面800aは、VMシンボル801,802、LMシンボル811,812、予測負荷シンボル群821,822、ボタン833,834およびLM実施拒否日時シンボル841を有する。
ボタン833は、LM実施拒否日時シンボル841によるLM実施拒否日時の選択を解除するためのボタンである。
ボタン834は、LM実施拒否日時シンボル841を用いて選択されたLM実施拒否日時を設定するためのボタンである。利用者端末500は、ボタン834に対する入力を受け付けると、選択された仮想マシンのLM実施拒否日時を示すLM実施拒否日時情報M3を含む拒否日時メッセージを管理サーバ100に送信する。なお、画面800aにおいて、LM実施拒否日時が選択されていない仮想マシンについては、利用者端末500は、確定メッセージを管理サーバ100に送信する。
LM実施拒否日時シンボル841は、利用者によるLM実施拒否日時の選択を受け付けるためのシンボルである。例えば、利用者は、利用者端末500に接続されたポインティングデバイスを用いて、所望の仮想マシンの行にLM実施拒否日時シンボル841を配置する。そして、利用者は、当該ポインティングデバイスを用いて、LM実施拒否日時シンボル841の横方向の幅を変えることで、当該仮想マシンに対するLM実施拒否日時を選択する。利用者は、LM実施拒否日時シンボル841をLMシンボル812に重ねて配置することができる。LM実施拒否日時シンボル841の例では、仮想マシン名“mysql−67”の仮想マシンに対するLM実施拒否日時として、2017年6月20日11時00分〜同日13時59分が選択されている。
管理サーバ100は、画面800aによりLM実施拒否日時情報M3を受け付けると、LM実施時間に関する制約条件を再作成し、LM実施拒否日時が入力された仮想マシンについてLMスケジュールを更新する。管理サーバ100は、更新したLMスケジュールを利用者に再度提示する。
図33は、利用者に対するLMスケジュール画面の例(その3)を示す図である。画面800bは、管理サーバ100から利用者端末500に対して提供される画面の例である。画面800bは、画面800aによるLM実施拒否日時の選択に応じて更新されたLMスケジュールを示す。画面800bは、VMシンボル801,802、LMシンボル811,813、予測負荷シンボル群821,822、ボタン835およびLM実施拒否日時シンボル841を有する。
LMシンボル813は、仮想マシン名“mysql−67”の仮想マシンに対し、利用者により入力されたLM実施拒否日時(LM実施拒否日時シンボル841で示されるLM実施拒否日時)に基づいて再作成されたLMスケジュールを示す。具体的には、LMシンボル813は、仮想マシン名“mysql−67”の仮想マシンに対して、2017年6月20日10時00分〜同日10時09分にLMを実施することを示す。
なお、画面800aでは、仮想マシン名“server−90”の仮想マシンに対しては、LM実施拒否日時が選択されなかったので、仮想マシン名“server−90”の仮想マシンについては最初に決定されたLMスケジュールから更新されていない。
ボタン835は、仮想マシンのLMスケジュールの確認を終了するためのボタンである。利用者端末500は、ボタン835の入力を受け付けると、画面800bを閉じる。
上記の例では、利用者端末500に提供される画面800,800a,800bを例示したが、利用者端末600にも当該利用者端末600の利用者が利用する仮想マシンに関してLMスケジュールを確認するための画面が提供される。
図34は、運用者に対するメンテナンススケジュール画面の例を示す図である。画面900は、管理サーバ100から運用者端末700に対して提供される画面の例である。画面900は、画面800bで示される更新後のLMスケジュールに対応する物理マシンのメンテナンススケジュールを示す。運用者端末700は、画面900を描画するための画面情報を管理サーバ100から受信し、当該画面情報に基づいて、運用者端末700に内蔵または接続されたディスプレイ(表示装置)により、画面900を表示する。ここで、利用者のユーザ名を“aaa”とする。
画面900は、PMシンボル901,902、VMスケジュールシンボル911,912およびメンテナンスシンボル913を有する。
PMシンボル901,902は、メンテナンス対象の物理マシンを示す。例えば、PMシンボル901は、物理マシン名“PM01”の物理マシンを示す。また、PMシンボル902は、物理マシン名“PM02”の物理マシンを示す。画面900の例では、PMシンボル901,902それぞれの行の左側から右側へ向かう方向を時系列の正方向として、各物理マシン上の仮想マシンの稼働予定、LM予定およびメンテナンススケジュールを示す。
VMスケジュールシンボル911,912は、各仮想マシンの稼働予定およびLM予定を示す。VMスケジュールシンボル911,912は、LMスケジュールテーブル162の内容(各仮想マシンに対してLMスケジュールが“確定”された結果)を反映している。例えば、VMスケジュールシンボル911は、物理マシン名“PM01”上の複数の仮想マシンの稼働予定と、当該複数の仮想マシンのLM予定とを示す。また、VMスケジュールシンボル912は、物理マシン名“PM02”上の複数の仮想マシンの稼働予定と、当該複数の仮想マシンのLM予定とを示す。VMスケジュールシンボル911,912によれば、運用者は、各仮想マシンがLM実施前には物理マシン名“PM01”の物理マシンで稼働し、LM実施後には物理マシン名“PM02”の物理マシンで稼働することを把握できる。
メンテナンスシンボル913は、物理マシンのメンテナンススケジュールを示すシンボルである。メンテナンスシンボル913は、メンテナンススケジュールテーブル161の内容を反映しており、物理マシン名“PM01”の物理マシンに対するメンテナンススケジュールを示す。メンテナンスシンボル913の例では、物理マシン名“PM01”の物理マシンに対して、2017年6月20日10時30分〜同日11時29分の期間に、メンテナンスを行うことを示す。
このように、管理サーバ100は、インフラ構成情報に基づくVMの依存関係に関する制約条件や、LM所要時間テーブル131に基づくLM実施時間に関する制約条件を作成することで、当該制約条件により、仮想マシンの適切なLMスケジュールを作成できる。
例えば、管理サーバ100は、VMの依存関係に関する制約条件に基づいて、物理マシンおよび仮想マシンの運用上の構成要件を逸脱しないように、仮想マシンのLMスケジュールを決定することができる。
特に、VMの依存関係に関する制約条件は、依存関係テーブル124に基づく制約条件を含む。ここで、例えば、利用者の仮想マシンの利用への影響時間の最小化のみを目的として移動スケジュールを作成すると、運用上の意図がある仮想マシンの依存関係を満たせなくなる可能性がある。
一例としては、性能向上のために同一の物理マシンに配備すべきアプリケーションを実行する仮想マシンとDBを実行する仮想マシンとを、別個の物理マシンに移動させてしまうことが考えられる。そこで、管理サーバ100は、例えば、インフラ構成情報に含まれる仮想マシンの第1のグループを同一の物理マシンで動作させる第1の制約条件を作成し、第1の制約条件に基づいて、第1のグループに属する各仮想マシンの移動先を同一の物理マシンとする。
あるいは、冗長化のために別個の物理マシンに配備すべきソフトウェアを実行する仮想マシン同士を、共通の物理マシンに移動させてしまうことも考えられる。そこで、管理サーバ100は、例えば、インフラ構成情報に含まれる仮想マシンの第2のグループに属する各仮想マシンをそれぞれ別個の物理マシンで動作させる第2の制約条件を作成する。そして、管理サーバ100は、第2の制約条件に基づいて、第2のグループに属する各仮想マシンの移動先をそれぞれ別個の物理マシンとする。
このように、インフラ構成情報(特に、依存関係テーブル124)で示される依存関係も制約条件として用いることで、運用上意図しない仮想マシンの配置を抑制でき、仮想マシンの性能が低下することを抑えられる。
また、LMのタイミングの決定について、例えば、利用者に業務都合を予め入力させ、入力された業務都合を基にLMスケジュールを決定することも考えられる。しかし、利用者が考える業務の繁忙と仮想マシンの負荷の大きさとが乖離していることもある。例えば、主に昼間に利用する人事業務のアプリケーションを実行する仮想マシンであるため、利用者がLMスケジュールを夜間としたが、夜間は当該仮想マシンで高負荷のバッチ処理を行っており、LMによる性能低下で当該バッチ処理を完了できないこともある。このように、利用者の感覚だけでは、利用者の業務への影響を最小にするLMスケジュールを作成できるとは限らない。
そこで、管理サーバ100は、LM実施時間に関する制約条件に基づいて、仮想マシンのLMの所要時間の総和(移動対象が複数の仮想マシンの場合は複数の仮想マシンの移動時間の総和)を最小にするように、仮想マシンのLMスケジュールを決定する。すなわち、管理サーバ100は、仮想マシン毎のLMの所要時間を示す時間情報(例えば、LM所要時間テーブル131)に基づいて複数の仮想マシンのLMの所要時間の和を最小にする第3の制約条件を作成する。そして、管理サーバ100は、第3の制約条件に基づいて複数の仮想マシンのLMの所要時間の和を最小にするスケジュールを決定する。これにより、各利用者による仮想マシンの利用に対する影響を抑えて仮想マシンのLMスケジュールを決定できる。
更に、管理サーバ100は、最初に作成した仮想マシンのLMスケジュールに対し、利用者の確認を促し、利用者によるLM実施拒否期間の入力を許容する。これにより、利用者の業務都合に整合しないスケジュールでLMが実施されることを抑制でき、利用者による仮想マシンの利用への影響を一層抑えた、より適切なLMスケジュールを決定できる。
なお、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1 調整装置
1a 記憶部
1b 処理部
2,3,4,・・・ 物理マシン
2a,2b,3a,3b,4a,4b,・・・ 仮想マシン
5 端末装置
D1 構成情報
d1 物理マシン構成情報
d2 仮想マシン構成情報
d3 依存関係情報
D2 時間情報
N1 ネットワーク
U1 ユーザ

Claims (12)

  1. 物理マシンに関するメンテナンスの実施期間を取得すると、前記物理マシンおよび前記物理マシンで動作する仮想マシンに関する構成情報および前記物理マシンから他の物理マシンへの前記仮想マシンの移動の所要時間を示す時間情報から前記移動のスケジュールを決定するための制約条件を前記仮想マシンに対して作成し、
    前記制約条件および前記実施期間に基づいて前記移動のスケジュール情報を作成し、
    前記仮想マシンのユーザが使用する装置に前記スケジュール情報を出力する、
    処理をコンピュータに実行させる調整プログラム。
  2. 出力した前記スケジュール情報に対して前記ユーザにより入力された前記移動の禁止時間帯または前記移動の許容時間帯を取得し、前記禁止時間帯または前記許容時間帯に基づいて前記制約条件を再作成し、再作成した前記制約条件に基づいて前記スケジュール情報を再作成し、再作成した前記スケジュール情報を前記装置に出力する、請求項1記載の調整プログラム。
  3. 前記スケジュール情報と共に前記スケジュール情報に含まれる各時刻に対して予測される前記仮想マシンの負荷を示す情報を前記装置に出力する、請求項1または2記載の調整プログラム。
  4. 前記時間情報は、前記実施期間に属する各時刻における仮想マシン毎の前記移動の所要時間を示す情報である、請求項1乃至3の何れか1項に記載の調整プログラム。
  5. 前記スケジュール情報の作成では、更に、前記物理マシンのメンテナンスの所要時間に基づいて、前記実施期間のうち、前記物理マシンに対してメンテナンスを行う期間を決定する、請求項1乃至4の何れか1項に記載の調整プログラム。
  6. 前記制約条件の作成では、前記構成情報に含まれる前記仮想マシンの第1のグループに属する各仮想マシンを同一の物理マシンで動作させる第1の制約条件を作成し、
    前記スケジュール情報の作成では、前記第1の制約条件に基づいて、前記第1のグループに属する各仮想マシンの移動先を同一の物理マシンとする、
    請求項1乃至5の何れか1項に記載の調整プログラム。
  7. 前記制約条件の作成では、前記構成情報に含まれる前記仮想マシンの第2のグループに属する各仮想マシンをそれぞれ別個の物理マシンで動作させる第2の制約条件を作成し、
    前記スケジュール情報の作成では、前記第2の制約条件に基づいて、前記第2のグループに属する各仮想マシンの移動先をそれぞれ別個の物理マシンとする、
    請求項1乃至6の何れか1項に記載の調整プログラム。
  8. 前記制約条件の作成では、前記時間情報に基づいて複数の前記仮想マシンの前記移動の所要時間の和を最小にする第3の制約条件を作成し、
    前記スケジュール情報の作成では、前記第3の制約条件に基づいて前記和を最小にするスケジュールを決定する、
    請求項1乃至7の何れか1項に記載の調整プログラム。
  9. 作成した前記スケジュール情報に基づいて、前記仮想マシンの前記移動を前記物理マシンに指示する、請求項1乃至8の何れか1項に記載の調整プログラム。
  10. 前記移動の所要時間は、ライブマイグレーションの所要時間である、請求項1乃至9の何れか1項に記載の調整プログラム。
  11. 物理マシンおよび前記物理マシンで動作する仮想マシンに関する構成情報と前記物理マシンから他の物理マシンへの前記仮想マシンの移動の所要時間を示す時間情報とを記憶する記憶部と、
    前記物理マシンに関するメンテナンスの実施期間を取得すると、前記記憶部に記憶された前記構成情報および前記時間情報から前記移動のスケジュールを決定するための制約条件を前記仮想マシンに対して作成し、前記制約条件および前記実施期間に基づいて前記移動のスケジュール情報を作成し、前記仮想マシンのユーザが使用する装置に前記スケジュール情報を出力する処理部と、
    を有する調整装置。
  12. コンピュータが、
    物理マシンに関するメンテナンスの実施期間を取得すると、前記物理マシンおよび前記物理マシンで動作する仮想マシンに関する構成情報および前記物理マシンから他の物理マシンへの前記仮想マシンの移動の所要時間を示す時間情報から前記移動のスケジュールを決定するための制約条件を前記仮想マシンに対して作成し、
    前記制約条件および前記実施期間に基づいて前記移動のスケジュール情報を作成し、
    前記仮想マシンのユーザが使用する装置に前記スケジュール情報を出力する、
    調整方法。
JP2017182387A 2017-09-22 2017-09-22 調整プログラム、調整装置および調整方法 Active JP6901683B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017182387A JP6901683B2 (ja) 2017-09-22 2017-09-22 調整プログラム、調整装置および調整方法
US16/127,347 US11010186B2 (en) 2017-09-22 2018-09-11 Non-transitory computer-readable recording medium, adjustment device, and adjustment method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017182387A JP6901683B2 (ja) 2017-09-22 2017-09-22 調整プログラム、調整装置および調整方法

Publications (2)

Publication Number Publication Date
JP2019057213A true JP2019057213A (ja) 2019-04-11
JP6901683B2 JP6901683B2 (ja) 2021-07-14

Family

ID=65806608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017182387A Active JP6901683B2 (ja) 2017-09-22 2017-09-22 調整プログラム、調整装置および調整方法

Country Status (2)

Country Link
US (1) US11010186B2 (ja)
JP (1) JP6901683B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715403B2 (en) * 2017-04-11 2020-07-14 Nerdio, Inc. Scalable, standardized I.T. deployment platform
US11340929B2 (en) 2018-05-22 2022-05-24 Vmware, Inc. Hypervisor agnostic cloud mobility across virtual infrastructures
JP7177349B2 (ja) * 2019-02-08 2022-11-24 富士通株式会社 スケジュールプログラム、スケジュール装置およびスケジュール方法
US11461191B2 (en) * 2019-11-14 2022-10-04 Vmware, Inc. Orchestrating and prioritizing the rebuild of storage object components in a hyper-converged infrastructure
US11573839B1 (en) * 2019-11-21 2023-02-07 Amazon Technologies, Inc. Dynamic scheduling for live migration between cloud regions and edge locations
US11734038B1 (en) 2019-11-21 2023-08-22 Amazon Technologies, Inc Multiple simultaneous volume attachments for live migration between cloud regions and edge locations
US11461123B1 (en) 2019-11-21 2022-10-04 Amazon Technologies, Inc. Dynamic pre-copy and post-copy determination for live migration between cloud regions and edge locations
US11175944B2 (en) * 2020-01-03 2021-11-16 Vmware, Inc. Optimizing cluster-wide operations in a hyper-converged infrastructure (HCI) deployment
US11409619B2 (en) 2020-04-29 2022-08-09 The Research Foundation For The State University Of New York Recovering a virtual machine after failure of post-copy live migration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011158300A1 (ja) * 2010-06-17 2011-12-22 株式会社日立製作所 計算機システムおよびその更改方法
JP2015161956A (ja) * 2014-02-26 2015-09-07 株式会社日立製作所 メンテナンス管理装置
US20160378520A1 (en) * 2015-06-23 2016-12-29 International Business Machines Corporation Adjusting virtual machine migration plans based on alert conditions related to future migrations

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161922A1 (en) * 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8566640B2 (en) * 2010-07-19 2013-10-22 Veeam Software Ag Systems, methods, and computer program products for instant recovery of image level backups
US9250863B1 (en) * 2010-12-28 2016-02-02 Amazon Technologies, Inc. Managing virtual machine migration
WO2012127633A1 (ja) * 2011-03-22 2012-09-27 富士通株式会社 移動管理装置、移動管理方法および移動管理プログラム
WO2013029051A2 (en) * 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
US20130097296A1 (en) * 2011-10-18 2013-04-18 Telefonaktiebolaget L M Ericsson (Publ) Secure cloud-based virtual machine migration
US9152448B2 (en) * 2012-05-11 2015-10-06 Vmware, Inc. Performance of load balancing modules with migration awareness
JP6044131B2 (ja) 2012-06-25 2016-12-14 富士通株式会社 プログラム、管理サーバおよび仮想マシン移動制御方法
JP5719974B2 (ja) * 2012-09-03 2015-05-20 株式会社日立製作所 複数の監視対象デバイスを有する計算機システムの管理を行う管理システム
JP5876425B2 (ja) 2013-02-12 2016-03-02 日本電信電話株式会社 仮想マシンのライブマイグレーションスケジューリング方法及び仮想マシンシステム
US9317326B2 (en) * 2013-11-27 2016-04-19 Vmware, Inc. Consistent migration of a group of virtual machines using source and destination group messaging
US9720728B2 (en) * 2013-12-06 2017-08-01 Huawei Technologies Co., Ltd. Migrating a VM when the available migration duration times of a source and destination node are greater than the VM's migration duration time
JP5807978B2 (ja) 2014-03-11 2015-11-10 孝幸 菅原 プログラム
JP5807980B1 (ja) 2014-05-22 2015-11-10 孝幸 菅原 スケジューリング装置
JP2016110183A (ja) * 2014-12-02 2016-06-20 富士通株式会社 情報処理システム及び情報処理システムの制御方法
US10075342B2 (en) * 2015-06-12 2018-09-11 Microsoft Technology Licensing, Llc Action orchestration in fault domains
US10635423B2 (en) * 2015-06-30 2020-04-28 Vmware, Inc. Methods and apparatus for software lifecycle management of a virtual computing environment
US9600331B1 (en) * 2015-08-24 2017-03-21 International Business Machines Corporation Virtual machine placement in a cloud computing environment based on factors including optimized processor-memory affinity
US9936019B2 (en) * 2016-03-16 2018-04-03 Google Llc Efficient live-migration of remotely accessed data
US10545777B2 (en) * 2016-11-08 2020-01-28 International Business Machines Corporation Generating a virtual machines relocation protocol
CN106648462B (zh) * 2016-11-21 2019-10-25 华为技术有限公司 数据存储方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011158300A1 (ja) * 2010-06-17 2011-12-22 株式会社日立製作所 計算機システムおよびその更改方法
JP2015161956A (ja) * 2014-02-26 2015-09-07 株式会社日立製作所 メンテナンス管理装置
US20160378520A1 (en) * 2015-06-23 2016-12-29 International Business Machines Corporation Adjusting virtual machine migration plans based on alert conditions related to future migrations

Also Published As

Publication number Publication date
US20190095232A1 (en) 2019-03-28
JP6901683B2 (ja) 2021-07-14
US11010186B2 (en) 2021-05-18

Similar Documents

Publication Publication Date Title
JP6901683B2 (ja) 調整プログラム、調整装置および調整方法
US11425194B1 (en) Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US11263084B2 (en) Saving program execution state
US9826031B2 (en) Managing distributed execution of programs
US11233873B2 (en) Dynamic weighting for cloud-based provisioning systems
US11016808B2 (en) Multi-tenant license enforcement across job requests
US10193977B2 (en) System, device and process for dynamic tenant structure adjustment in a distributed resource management system
US8321558B1 (en) Dynamically monitoring and modifying distributed execution of programs
US9276987B1 (en) Identifying nodes already storing indicated input data to perform distributed execution of an indicated program in a node cluster
US20120192197A1 (en) Automated cloud workload management in a map-reduce environment
CN104246741A (zh) 编制混合云服务
US10304014B2 (en) Proactive resource allocation plan generator for improving product releases
US11074103B2 (en) Scheduling method and scheduling device
US11256541B2 (en) Rescheduling of virtual machine migrations with less impact on an existing migration schedule
GB2603597A (en) Optimizing device update scheduling
JP2019061359A (ja) プログラム及び情報処理装置
US20220413902A1 (en) Partition migration with critical task prioritization
Beranek et al. Architecting Enterprise Applications for the Cloud: The Unicorn Universe Cloud Framework
US10102036B2 (en) Providing additional thread context to assist memory locality
JP2014126940A (ja) クラウド構成管理支援システム、クラウド構成管理支援方法及びクラウド構成管理支援プログラム
US20230224205A1 (en) Hardware resource management for management appliances running on a shared cluster of hosts
US20240015213A1 (en) Extend controller for multi-tenancy
von Laszewski et al. e-Science project and experiment management with Microsoft Project
chandra Thota Reduce the Customer’s Complaint Resolution Time in Migration of Oracle Database Servers in Vmware

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200611

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200625

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200625

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210414

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210531

R150 Certificate of patent or registration of utility model

Ref document number: 6901683

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150