(57)【要約】【課題】消費電力を低減し、またユーザの利便性を向上させることが可能なプログラム、コンピュータ及び制御方法を提供する。【解決手段】運転中のＶＭに対する中断命令または停止命令により、仮想マシンを中断または停止するが、継続時間だけＶＭに対する操作を待つ。継続時間を経過して操作がない場合に、他のＶＭが全て中断または停止しているか否かを判断する。全ての仮想マシンが中断または停止していると判断した後に、物理マシンの中断命令または停止命令を出力する。その後物理マシンは停止する。【選択図】図５
2010211615.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付けステップと、
該受け付けステップにより中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止ステップと、
前記仮想マシンへの操作を継続時間の間待つ継続ステップと、
前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力ステップと
を実行させるプログラム。
【請求項２】
仮想マシンは複数であり、
前記出力ステップは、
前記継続ステップの継続時間を経過した後に、他の仮想マシンの全てが中断または停止しているか否かを判断する判断ステップと、
該判断ステップにより他の仮想マシンの全てが中断または停止していると判断した場合に、前記コンピュータの中断命令または停止命令を出力するステップ
を含む請求項１に記載のプログラム。
【請求項３】
前記継続ステップにより、前記仮想マシンに対する操作命令を受け付けた場合、前記停止ステップにより、中断または停止した前記仮想マシンを再度起動する解除ステップ
を含む請求項２に記載のプログラム。
【請求項４】
前記継続ステップは、
前記受け付けステップにより中断命令または停止命令を受け付けた場合、仮想マシン毎に継続時間を記憶した記憶部から対応する仮想マシンの継続時間を読み出すステップと、
前記仮想マシンへの操作を前記読み出した継続時間の間待つ継続ステップと
を含む請求項２に記載のプログラム。
【請求項５】
前記継続ステップは、
前記受け付けステップにより中断命令を受け付けた場合、仮想マシン毎に中断命令に対応する第１継続時間を記憶した記憶部から対応する仮想マシンの第１継続時間を読み出すステップと、
前記仮想マシンへの操作を前記読み出した第１継続時間の間待つ継続ステップと、
前記受け付けステップにより停止命令を受け付けた場合、仮想マシン毎に停止命令に対応する前記第１継続時間よりも短い第２継続時間を記憶した記憶部から対応する仮想マシンの第２継続時間を読み出すステップと、
前記仮想マシンへの操作を前記読み出した第２継続時間の間待つ継続ステップと
を含む請求項２に記載のプログラム。
【請求項６】
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
コンピュータの停止時間の予定を記憶部に記憶する停止記憶ステップと、
前記コンピュータの運転中に時計部から出力される時間が前記停止記憶ステップにより前記記憶部に記憶したコンピュータの停止時間である場合に、複数の仮想マシン全てが中断または停止しているか否かを判断する停止判断ステップと、
該停止判断ステップにより中断または停止していると判断した場合に、前記停止時間の終了時に前記コンピュータを起動させるためのタイマを設定する設定ステップと、
該設定ステップによりタイマを設定した後に前記コンピュータの停止命令を出力する停止出力ステップと
を実行させるプログラム。
【請求項７】
仮想マシンを動作させるコンピュータにおいて、
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付け部と、
該受け付け部により中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止部と、
前記仮想マシンへの操作を継続時間の間待つ継続部と、
前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力部と
を備えるコンピュータ。
【請求項８】
コンピュータ上で動作する仮想マシンを制御するための制御方法において、
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付けステップと、
該受け付けステップにより中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止ステップと、
前記仮想マシンへの操作を継続時間の間待つ継続ステップと、
前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力ステップと
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で動作する仮想マシンを制御するためのプログラム、コンピュータ及び制御方法に関する。
【背景技術】
【０００２】
仮想マシンを動作させるコンピュータの普及に伴い、消費電力を低減するための試みがなされている（例えば特許文献１参照）。従来は、全ての仮想マシンの動作が停止している場合にコンピュータの電源を停止することにより消費電力を低減していた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２０９１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法は消費電力の低減とユーザの利便性とを十分に両立させるものではなかった。またコンピュータの停止後すぐに仮想マシンを起動する場合、再度コンピュータ及び仮想マシンの起動処理が必要となり、ユーザに長時間の待機を強いることになっていた。
【０００５】
本発明は斯かる事情に鑑みてなされたものである。その目的は、仮想マシンを中断または停止させる場合でもコンピュータをすぐに中断または停止せずに継続時間の間運転を継続させることにより、ユーザが仮想マシンをすぐに再度使用する場合の利便性を向上させることにある。また、継続時間の間に操作がない場合は、ユーザがすぐに再度使用しないと判断し、コンピュータを停止させることにより、消費電力を低減することにある。
【課題を解決するための手段】
【０００６】
本願に開示するプログラムは、コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、コンピュータに、運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付けステップと、該受け付けステップにより中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止ステップと、前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力ステップとを実行させる。
【発明の効果】
【０００７】
当該装置の一観点によれば、中断命令または停止命令を受け付けた場合でも、コンピュータの運転を継続時間の間継続する。これにより、中断または停止の後に再度ユーザが対象となる仮想マシンの使用を希望する場合でも、早期に使用を再開することが可能となる。また、継続時間経過後はコンピュータが停止することから消費電力の低減をも図ることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】制御システムの概要を示す説明図である。
【図２】物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図３】設定ファイルのレコードレイアウトを示す説明図である。
【図４】時間ファイルのレコードレイアウトを示す説明図である。
【図５】ＶＭ及び物理マシンの状態遷移を示す説明図である。
【図６】制御処理の手順を示すフローチャートである。
【図７】制御処理の手順を示すフローチャートである。
【図８】時間ファイルのレコードレイアウトを示す説明図である。
【図９】実施の形態２に係る中断または停止処理の手順を示すフローチャートである。
【図１０】実施の形態２に係る中断または停止処理の手順を示すフローチャートである。
【図１１】実施の形態２に係る中断または停止処理の手順を示すフローチャートである。
【図１２】実施の形態３に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図１３】履歴ファイルのレコードレイアウトを示す説明図である。
【図１４】実施の形態３に係る時間ファイルのレコードレイアウトを示す説明図である。
【図１５】最適化処理の手順を示すフローチャートである。
【図１６】実施の形態４に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図１７】予定ファイルのレコードレイアウトを示す説明図である。
【図１８】制御処理の手順を示すフローチャートである。
【図１９】制御処理の手順を示すフローチャートである。
【図２０】制御処理の手順を示すフローチャートである。
【図２１】制御処理の手順を示すフローチャートである。
【図２２】制御処理の手順を示すフローチャートである。
【図２３】制御処理の手順を示すフローチャートである。
【図２４】実施の形態５に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図２５】ＶＭの中断時間及び停止時間の変化を示す説明図である。
【図２６】各ＶＭの中断時間及び停止時間、並びに、物理マシンの中断時間及び停止時間の変化を示す説明図である。
【図２７】ＶＭの予定ファイルの変更処理手順を示すフローチャートである。
【図２８】ＶＭの予定ファイルの変更処理手順を示すフローチャートである。
【図２９】ＶＭの予定ファイルの変更処理手順を示すフローチャートである。
【図３０】物理マシンに係る予定ファイルの変更処理手順を示すフローチャートである。
【図３１】実施の形態６に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は制御システムの概要を示す説明図である。制御システムはコンピュータ１、仮想マシン２及び端末装置３、３、３・・を含む。コンピュータ１は例えばサーバコンピュータであり複数の仮想マシン（以下ＶＭ：(Virtual Machine)という）２１、２２、２３、・・（以下、場合により２で代表する）を制御する。端末装置３は例えばパーソナルコンピュータ、または、通信機能、入出力装置及びモニタを有する入出力装置等である。以下では、コンピュータ１を物理マシン１といい、また端末装置３はパーソナルコンピュータ３であるものとして説明する。
【００１０】
パーソナルコンピュータ３と物理マシン１とはＵＳＢ（Universal Serial Bus）ケーブル、または、インターネット若しくはＬＡＮ（Local Area Network）等の通信網を介して接続されており、所定のプロトコルにて情報を送受信する。本実施の形態においては、パーソナルコンピュータ３は物理マシン１に対しＬＡＮにより接続されている例を挙げて説明する。パーソナルコンピュータ３を使用するユーザは物理マシン１を介してＶＭ２を起動する。物理マシン１上では複数のＶＭ２１、２２、２３、・・・が動作している。以下ではＶＭ２１乃至２３の３台のＶＭ２を物理マシン１が制御する例を挙げて説明するが、この数に限定するものではない。
【００１１】
続いて本実施形態の概要を説明する。運転中のＶＭ２１が中断命令または停止命令を受け付けた場合、ＶＭ２１は「中断状態」または「停止状態」へ移行する。しかし、物理マシン１は直ちに中断または停止することなく、継続時間（例えば３分）の間運転を継続する。そして継続時間が経過した後に停止したＶＭ２１を含め、他のＶＭ２２、２３が「中断状態」または「停止状態」であり、かつ、それぞれのＶＭ２が持つ継続時間が経過した場合に物理マシン１は停止する。以下に詳細を説明する。
【００１２】
図２は物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。物理マシン１はハードウェアリソース１０及びＶＭカーネル１７を含む。ハードウェアリソース１０は、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、ハードディスク（以下ＨＤ(Hard Disk)１５という）、ＮＩＣ（Network Interface Card）１６、時計部１８及び電源制御部１９等を含む。ハードウェアリソース１０は仮想化ソフトウェアであるＶＭカーネル１７の制御下におかれる。ＣＰＵ１１はＶＭカーネル１７及びＶＭカーネル１７上の制御モジュール１７０の指示に従い、バス（図示せず）を介して接続される各ハードウェアを制御する。
【００１３】
記憶部としてのＲＡＭ１２は例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭ１２は、ＣＰＵ１１によるＶＭカーネル１７等各種プログラムの実行時に発生する種々のデータを一時的に記憶する。記憶部としてのＨＤ１５はＶＭ２にて作成されたファイル及びＶＭカーネル１７の指示により記憶すべき各種データ等を記憶する。ＮＩＣ１６はイーサーネットカード等であり、パーソナルコンピュータ３または図示しない他のＷｅｂサーバ等とＨＴＴＰ（HyperText Transfer Protocol）等により情報を送受信する。時計部１８は内部にタイマ１８１を備え、時間をＣＰＵ１１へ出力する。
【００１４】
なお、本実施の形態においては説明を容易にするために年月日の記載を適宜省略するが、時間には年月日を含めても良いことはもちろんである。電源制御部１９は物理マシン１への電力の供給または停止制御を行う。ＶＭカーネル１７と連携する制御モジュール１７０はＶＭ２１、２２、２３の構成及び電源管理を含む各種処理を行う。制御モジュール１７０は、ユーザからの中断または停止命令を受け付ける受け付け部１７１、物理マシン１を中断または停止せずに継続時間だけ物理マシン１の運転を継続する継続部１７２、指定されたＶＭ２を中断または停止する停止部１７３、物理マシン１を中断または停止する出力部１７４、物理マシン１が中断または停止できるか否かを判断する判断部１７５、ユーザからの起動命令を待ちＶＭ２に対し起動命令を出力する解除部１７６、物理マシン１及びＶＭ２を起動する起動部１７７及びユーザの操作を監視し受け付け部１７１に対し中断または停止命令を生成する生成部１７８等を含みＲＡＭ１２上にロードされて実行される。ＲＡＭ１２またはＨＤ１５には設定ファイル１５１及び時間ファイル１５２が用意されている。なお、本実施の形態においてはハードウェアリソース１０上でＶＭカーネル１７が直接動作するハイパーバイザー型の仮想化ソフトウェアを用いる例を説明するが、これに限るものではない。Windows（登録商標）またはLinux（登録商標）上で仮想化ソフトウェアが動作するホスト型を用いても良いことはもちろんである。
【００１５】
ＶＭ２１の利用を希望するユーザはパーソナルコンピュータ３により物理マシン１を起動する。パーソナルコンピュータ３は物理マシン１に対し起動命令を出力する。また、パーソナルコンピュータ３は複数のＶＭ２の内、起動を希望するＶＭ２を特定するための識別情報（以下、ＶＭＩＤという）及びＶＭ２の起動命令を物理マシン１へ出力する。その他、パーソナルコンピュータ３のＩＰアドレスまたはＭＡＣアドレス等のパーソナルコンピュータ３を識別する情報と、起動させるＶＭ２とを物理マシン１において予め関連づけておく。そして、物理マシン１の起動後、物理マシン１に対する起動命令を送信したパーソナルコンピュータ３と関連づけられたＶＭ２（ここではＶＭ２１）を起動させてもよい。この場合、起動を希望するＶＭ２の識別情報の出力処理を省略することができる。また、パーソナルコンピュータ３を利用する利用者を識別する情報と、起動させるＶＭ２とを物理マシン１において予め関連づけておき、物理マシン１の起動後、利用者を識別する情報を物理マシン１へ送信しても良い。なお、関連づけの方法は一例であって、これらに限るものではない。
【００１６】
以下、本実施の形態においてはＶＭ２１を起動する例を挙げて説明する。ＮＩＣ１６はWake On Lanに対応しており、物理マシン１の起動命令を受けて電源制御部１９へ起動命令を出力する。なお、パーソナルコンピュータ３は物理マシン１の電源を投入するためのマジックパケットをＮＩＣ１６へ出力する。
【００１７】
電源制御部１９は図示しない交流電源からの電力を物理マシン１へ供給する。これにより、物理マシン１が起動し、またＶＭカーネル１７及び制御モジュール１７０も起動する。起動部１７７はＶＭ２１を起動する。ＶＭ２１はＶＭカーネル１７の制御下で動作し、ＶＭ２１に対してインストールされたＯＳ(Operating System)２１１下で各種アプリケーション２１２を実行する。ＶＭ２１はＮＩＣ１６を介してパーソナルコンピュータ３へ画面情報を出力する。同様に他のユーザは他のコンピュータ３を用いてＶＭ２２を利用することができる。起動部１７７はこれを受けてＶＭ２２を起動する。
【００１８】
続いてＶＭ２１の中断または停止処理について説明する。ＶＭ２１の中断は、例えばＶＭ２１が使用しているＲＡＭ１２の領域内の情報をＨＤ１５へ記憶させＶＭ２１をハイバーネーション (もしくは休止)することをいう。この場合、ＶＭ２１が使用していたＲＡＭ１２の領域は開放される。ハイバーネーション (もしくは休止)の後、再度ＶＭ２１を起動した場合、ＨＤ１５へ記憶させた情報がＲＡＭ１２の領域に記憶され、中断時の作業内容が復元される。なお、本実施の形態においてはハイバーネーションを「中断状態」であるものとして説明するが、これに限るものではない。
【００１９】
その他ＶＭ２１の中断は、ＶＭ２１が使用しているＲＡＭ１２の領域内の情報を、ＲＡＭ１２内に保持し、電源制御部１９によりＲＡＭ１２に通電し続けるサスペンド (もしくはスリープ、スタンバイ)であっても良い。サスペンド (もしくはスリープ、スタンバイ)の後、再度ＶＭ２１を起動した場合、ＶＭ２１は保持されたＲＡＭ１２の領域内の情報を利用することで、中断時の作業内容が早期に復元される。ＶＭ２１の停止とは、ＶＭ２１が使用しているＯＳ２１１及びアプリケーション２１２を全て終了し、ＲＡＭ１２の領域内の情報をＨＤ１５に記憶することなく開放し、ＶＭ２１の動作を「停止状態」とすることをいう。
【００２０】
図３は設定ファイル１５１のレコードレイアウトを示す説明図である。設定ファイル１５１は各ＶＭ２に対応づけて「中断状態」または「停止状態」へ移行する際の移行時間を記憶している。設定ファイル１５１はＶＭＩＤフィールド、移行時間フィールド及び状態フィールドを含む。ＶＭＩＤフィールドはＶＭ２を識別するための情報を記憶している。なお、図３の例ではＶＭ２１のＶＭＩＤを「ＶＭ２１」、ＶＭ２２のＶＭＩＤを「ＶＭ２２」、ＶＭ２３のＶＭＩＤを「ＶＭ２３」としている。状態フィールドには、ＶＭ２がパーソナルコンピュータ３から一定時間操作命令を受け付けなかった場合に、「運転状態」から移行すべき状態を記憶している。また移行時間フィールドには、操作命令を受け付けなかった場合に、「運転状態」から「中断状態」または「停止状態」へ移行するのに必要とする移行時間を記憶している。
【００２１】
例えばＶＭ２１はパーソナルコンピュータ３から３０分間操作命令を受け付けなかった場合、「運転状態」から「中断状態」へ移行する。またＶＭ２３はパーソナルコンピュータ３から５０分間操作命令を受け付けなかった場合に、「運転状態」から「停止状態」へ移行する。なお、この設定ファイル１５１の記憶内容はパーソナルコンピュータ３から適宜変更することが可能である。
【００２２】
図４は時間ファイル１５２のレコードレイアウトを示す説明図である。時間ファイル１５２はＶＭＩＤフィールド及び継続時間フィールド等を含む。継続時間フィールドにはＶＭＩＤに対応づけて中断命令または停止命令を受け付けた場合に物理マシン１を継続して運転し続ける時間が記憶されている。図４の例では、ＶＭ２１からの中断命令または停止命令を受け付けた後、物理マシン１の「運転状態」を３分間継続（以下、適宜「継続」を「維持」と読み替える。）する。なお、この時間ファイル１５２の記憶内容はパーソナルコンピュータ３から適宜変更することが可能である。物理マシン１の運転を維持させるために、ＶＭ２の状態を、中断または停止に対する継続時間の間、それぞれ、「中断維持状態」、「停止維持状態」とし、ＶＭ２毎に継続時間経過後に「中断状態」または「停止状態」とする。これにより、すべてのＶＭ２が「中断状態」または「停止状態」とならない限り物理マシン１を中断または停止にできなくできる。つまり、各ＶＭ２が「中断維持状態」または「停止維持状態」を終了し、「中断状態」または「停止状態」となることで、物理マシン１は中断または停止する。
【００２３】
生成部１７８はＮＩＣ１６を介してパーソナルコンピュータ３から出力される操作命令を監視し、操作命令が出力されない時間が設定ファイル１５１に記憶した移行時間を経過した場合、中断命令または停止命令を受け付け部１７１に出力する。具体的には生成部１７８は、監視対象のＶＭ２の移行時間及び状態を読み出し、時計部１８からの出力を参照して当該ＶＭ２の操作命令が出力されない時間が移行時間を経過した場合に読み出した状態に対応する命令を出力する。例えばＶＭ２１に関しては、生成部１７８は３０分の移行時間を経過後、中断命令を受け付け部１７１へ出力する。
【００２４】
なお、本実施の形態においては中断命令または停止命令の出力例として、ＶＭ２に対する無操作状態の経過をトリガとしたがあくまで一例でありこれに限るものではない。例えば、パーソナルコンピュータ３からＯＳ２１１に対し、中断命令または停止命令が出力された場合に、ＯＳ２１１が受け付け部１７１に対し、中断命令または停止命令を出力するようにしても良い。
【００２５】
受け付け部１７１はＶＭ２１の中断命令または停止命令を受け付け、ＶＭ２１のＶＭＩＤと共に中断命令または停止命令を停止部１７３へ出力する。停止部１７３はＶＭＩＤに対応するＶＭ２１へ中断命令または停止命令を出力する。ＶＭ２１は中断命令または停止命令を受けて中断または停止する。停止部１７３は中断命令または停止命令の出力後、継続部１７２へ、中断命令または停止命令を出力したＶＭＩＤ、及び、中断命令または停止命令が出力されたことを示す情報を出力する。中断命令であれば、ＶＭカーネル１７は、ＶＭ２１の状態を「中断維持状態」、停止命令であればＶＭ２１の状態を「停止維持状態」と記憶する。継続部１７２は時間ファイル１５２を参照し、ＶＭ２１のＶＭＩＤに対応する継続時間を読み出す。継続部１７２は時計部１８の出力を参照し、中断命令または停止命令を受け付けてから読み出した継続時間を経過するまでＶＭＩＤに対応するＶＭ２１への操作としての起動命令を待つ。継続時間に起動命令がなければ、継続部１７２はＶＭ２１の状態を、「中断維持状態」または「停止維持状態」から、「中断状態」または「停止状態」に変更し、ＶＭカーネル１７が状態を記憶する。
【００２６】
出力部１７４は各ＶＭ２１、ＶＭ２２、及びＶＭ２３が「運転状態」、「中断状態」、「停止状態」、「中断維持状態」、または「停止維持状態」のいずれにあるかをＶＭカーネル１７から取得し、物理マシン１に対する中断命令または停止命令の発行を判断する判断部１７５を備える。
【００２７】
本例の場合、ＶＭＩＤが「ＶＭ２２」のＶＭ２２、及びＶＭＩＤが「ＶＭ２３」のＶＭ２３が中断または停止しているか否かを判断する。具体的には、判断部１７５は、各ＶＭ２の状態を管理するＶＭカーネル１７に対し状態を要求することで判断する。ＶＭ２１及びＶＭ２２が「中断状態」で、ＶＭ２３が「停止状態」であるため、出力部１７４へ、物理マシン１を中断すると判断したことを通知する。
【００２８】
出力部１７４は判断部の判断結果を受け、ＶＭカーネル１７へ物理マシン１の中断命令または停止命令を出力する。ＶＭカーネル１７は物理マシン１の中断命令または停止命令を受け付けた場合、実行中のプログラムを終了し、物理マシン１を中断または停止する。
【００２９】
図５はＶＭ２及び物理マシン１の状態遷移を示す説明図である。横軸は時間を示す。図５は、上からＶＭ２１、ＶＭ２２、ＶＭ２３それぞれの「運転状態」、「中断状態」、「停止状態」、「中断維持状態」及び「停止維持状態」の時間的変化を示し、物理マシン１の「運転状態」、「中断状態」及び「停止状態」の時間的変化を示す。本例の場合、最初にＶＭ２２の中断命令が受け付け部１７１により受け付けられ、停止部１７３はＶＭ２２を中断して、「中断維持状態」とする。継続部１７２は８分以上経過するまでパーソナルコンピュータ３から起動命令を待つ。８分以上経過しても起動命令を受けなければ、「中断状態」であることを、判断部１７５へ出力する。判断部１７５は他のＶＭ２１及びＶＭ２３が「運転状態」であるため、物理マシン１を中断または停止できないと判断する。この場合、出力部１７４は物理マシン１の停止命令を出力しないことから、物理マシン１は引き続き「運転状態」である。
【００３０】
次にＶＭ２３の停止命令が受け付け部１７１により受け付けられ、停止部１７３はＶＭ２３を停止して「停止維持状態」とする。継続部１７２は２分以上経過するまでパーソナルコンピュータ３から起動命令を待つ。２分以上経過しても起動命令を受けなければ、「停止状態」であることを、判断部１７５へ出力する。判断部１７５は他のＶＭ２１が「中断維持状態」であるため、物理マシン１を中断または停止できないと判断する。この場合、出力部１７４は物理マシン１の停止命令を出力しないことから、物理マシン１は引き続き「運転状態」である。最後にＶＭ２１の中断命令が受け付け部１７１により受け付けられ、停止部１７３はＶＭ２１を中断して「中断維持状態」とする。継続部１７２は３分以上経過するまでパーソナルコンピュータ３から起動命令を待つ。３分以上経過しても起動命令を受けなければ、「中断状態」であることを、判断部１７５へ出力する。判断部１７５はＶＭ２１が「中断状態」、ＶＭ２２が「停止状態」及びＶＭ２３が「中断状態」であるため、物理マシン１を中断できると判断する。出力部１７４は、判断部１７５の判断結果を受け、物理マシン１の中断命令を出力する。本実施の形態においては継続時間を経過した後、出力部１７４が物理マシン１の中断命令を出力する例を一例として挙げたが、これに限るものではない。出力部１７４が物理マシン１の停止命令を出力し、物理マシン１を停止しても良い。
【００３１】
出力部１７４の中断命令または停止命令を受けて、物理マシン１は「中断状態」または「停止状態」へ移行する。なお、物理マシン１の「中断状態」は電源制御部１９が、ＨＤ１５にＲＡＭ１２の情報を記憶するハイバーネーション（もしくは休止）、または、ＲＡＭ１２に通電を継続するサスペンド（もしくはスリープ、スタンバイ）のいずれかであればよい。また「停止状態」はWake On Lan機能を除いて物理マシン１への電力供給を電源制御部１９が停止することをいう。
【００３２】
図６及び図７は制御処理の手順を示すフローチャートである。物理マシン１及びＶＭ２の使用を希望するユーザはパーソナルコンピュータ３を用いて、物理マシン１及びＶＭ２を起動する。パーソナルコンピュータ３は物理マシン１の起動命令を含むマジックパケットをＮＩＣ１６へ出力する。物理マシン１のＮＩＣ１６は物理マシン１の起動命令を受け付ける（ステップＳ６１）。ＮＩＣ１６は起動命令を電源制御部１９へ出力する。電源制御部１９は電源をオンとし、物理マシン１を起動する（ステップＳ６２）。ＣＰＵ１１はＶＭカーネル１７及び制御モジュール１７０をＲＡＭ１２にロードして、下記に述べる処理を実行する。
【００３３】
パーソナルコンピュータ３は起動を希望するＶＭ２の選択を受け付ける。パーソナルコンピュータ３は選択を受け付けたＶＭ２の起動命令及びＶＭＩＤを物理マシン１へ出力する。起動部１７７はＮＩＣ１６を介して出力されたＶＭ２の起動命令及びＶＭＩＤを受け付ける（ステップＳ６３）。起動部１７７はＶＭＩＤに対応するＶＭ２を起動する（ステップＳ６４）。ＶＭカーネル１７は、ＶＭ２の「運転状態」、「中断状態」または「停止状態」を記憶する（ステップＳ６５）。ステップＳ６５では起動後であるので、ＶＭＩＤに対応づけて、「運転状態」を記憶する。
【００３４】
他のＶＭ２についても起動命令がパーソナルコンピュータ３から出力された場合、ステップＳ６３乃至Ｓ６５と同様の処理を行う。また以下で述べる各処理は、各ＶＭ２において並行処理される。生成部１７８は設定ファイル１５１からＶＭＩＤに対応する移行時間及び状態を読み出す（ステップＳ６６）。生成部１７８はパーソナルコンピュータ３からＮＩＣ１６へＶＭ２に対する操作命令が出力されない時間を、時計部１８の出力を参照して計時する（ステップＳ６７）。生成部１７８はパーソナルコンピュータ３から操作命令があったか否かを判断する（ステップＳ６８）。生成部１７８は操作命令があったと判断した場合（ステップＳ６８でＹＥＳ）、ステップＳ６７に処理を戻す。生成部１７８は操作命令がないと判断した場合（ステップＳ６８でＮＯ）、計時した時間が移行時間を経過したか否かを判断する（ステップＳ６９）。生成部１７８は移行時間を経過していないと判断した場合（ステップＳ６９でＮＯ）、処理をステップＳ６８へ戻す。
【００３５】
一方、生成部１７８は移行時間を経過したと判断した場合（ステップＳ６９でＹＥＳ）、中断命令または停止命令を生成する（ステップＳ６１０）。生成部１７８はＶＭＩＤ、及び、生成した中断命令または停止命令を受け付け部１７１へ出力する（ステップＳ７１）。受け付け部１７１はＶＭＩＤ、及び、中断命令または停止命令を受け付ける（ステップＳ７２）。なお、パーソナルコンピュータ３からＶＭ２のＶＭＩＤ、及び、中断命令または停止命令が出力された場合、受け付け部１７１は当該ＶＭＩＤ、及び中断命令または停止命令を受け付ける。停止部１７３は対応するＶＭ２を中断または停止する（ステップＳ７３）。ＶＭカーネル１７は、ＶＭ２の状態を記憶する（ステップＳ７４）。ステップＳ７４ではＶＭＩＤに対応づけて、「中断維持状態」または「停止維持状態」と記憶する。停止部１７３は受け付けたＶＭＩＤ、及び、中断命令または停止命令を継続部１７２へ出力する（ステップＳ７５）。
【００３６】
継続部１７２は時間ファイル１５２からＶＭＩＤに対応する継続時間を読み出す（ステップＳ７６）。解除部１７６は継続時間内にＶＭＩＤに係るＶＭ２に対する起動命令が、ＮＩＣ１６を介してパーソナルコンピュータ３から出力されたか否かを判断する（ステップＳ７７）。解除部１７６は起動命令が出力されたと判断した場合（ステップＳ７７でＹＥＳ）、処理を再びステップＳ６４へ戻す。これにより対応するＶＭ２は再度起動し、物理マシン１は運転を継続する。
【００３７】
解除部１７６は起動命令が出力されていないと判断した場合（ステップＳ７７でＮＯ）、継続部１７２は読み出した継続時間を経過したか否かを判断する（ステップＳ７８）。継続部１７２は継続時間を経過していないと判断した場合（ステップＳ７８でＮＯ）、処理をステップＳ７７へ戻す。継続部１７２は継続時間を経過したと判断した場合（ステップＳ７８でＹＥＳ）、ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「中断状態」または「停止状態」と記憶する（ステップＳ７９）。
【００３８】
判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあるか否かを判断する（ステップＳ７１０）。具体的には、判断部１７５はＶＭカーネル１７に記憶した各ＶＭ２の状態を参照して判断を行う。判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にないと判断した場合（ステップＳ７１０でＮＯ）、処理をステップＳ６３へ戻す。以上の処理を繰り返し、また他のＶＭ２についても並行して同様の処理を行う。
【００３９】
一方、判断部１７５は他の全てのＶＭ２が、「中断状態」または「停止状態」にあると判断した場合（ステップＳ７１０でＹＥＳ）、出力部１７４はＶＭカーネル１７に対し物理マシン１の停止命令を出力する（ステップＳ７１１）。ＣＰＵ１１はＶＭカーネル１７からの停止命令を受けて物理マシン１を停止する（ステップＳ７１２）。これにより、中断命令または停止命令があった場合でも、継続時間の間物理マシン１の「運転状態」が維持される。従って、「運転状態」が維持されている間にユーザが再度ＶＭ２の使用を希望する場合でも、物理マシン１及びＶＭ２を起動する場合に比較して、早期に使用を開始することが可能となる。その一方で、継続時間を経過し、また、他のＶＭ２も全て「中断状態」または「停止状態」にある場合には、再開の可能性が低いと判断し物理マシン１を停止することで、ユーザの利便性を図りつつ省電力を計ることが可能となる。
【００４０】
実施の形態２
実施の形態２は中断命令、または、停止命令のいずれかに応じて継続時間を変更する制御に関する。図８は時間ファイル１５２のレコードレイアウトを示す説明図である。時間ファイル１５２にはＶＭＩＤに対応づけて第１継続時間である中断時継続時間及び第２継続時間である停止時継続時間が記憶されている。時間ファイル１５２はＶＭＩＤフィールドに加えて、中断時継続時間フィールド及び停止時継続時間フィールドを含む。中断時継続時間フィールドには、ＶＭＩＤに対応づけて、受け付け部１７１が中断命令を受け付けた場合に、ＶＭ２を「中断維持状態」へ移行させると共に物理マシン１を継続する時間を記憶している。また停止時継続時間フィールドには、ＶＭＩＤに対応づけて、受け付け部１７１が停止命令を受け付けた場合に、ＶＭ２を「停止維持状態」へ移行させると共に物理マシン１を継続する時間を記憶している。
【００４１】
停止時継続時間は同一のＶＭＩＤに対応する中断時継続時間よりも短い時間が記憶されている。これは、停止時は中断時と異なり、物理マシン１を短時間で再開させる可能性が低いことから、省電力を優先したものである。図８の例ではＶＭ２１の中断時継続時間は３分であり、停止時継続時間はこれよりも短い２分と記憶されている。なお、時間ファイル１５２の記憶内容はパーソナルコンピュータ３を介して適宜その値を変更することが可能である。また、中断時継続時間、または、停止時継続時間のいずれかを設定しておき、ＣＰＵ１１が設定した中断時継続時間、または、停止時継続時間に、係数を乗ずることで、停止時継続時間、または、中断時継続時間を算出するようにしても良い。例えば、中断時間継続時間が設定により記憶されている場合、ＣＰＵ１１は１よりも小さい係数を乗ずることで停止時継続時間を算出すればよい。
【００４２】
図９乃至図１１は実施の形態２に係る中断または停止処理の手順を示すフローチャートである。ステップＳ７１の処理以降以下の処理を行う。受け付け部１７１はＶＭＩＤ、及び、中断命令または停止命令を受け付ける（ステップＳ９１）。停止部１７３にＶＭ２の中断命令または停止命令を出力し、停止部１７３は対応するＶＭ２を中断または停止する（ステップＳ９２）。ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「中断維持状態」または「停止維持状態」と記憶する（ステップＳ９３）。受け付け部１７１は受け付けたＶＭＩＤ、及び、中断命令または停止命令を継続部１７２へ出力する（ステップＳ９４）。継続部１７２は中断命令が出力されたか否かを判断する（ステップＳ９５）。
【００４３】
継続部１７２は中断命令が出力されたと判断した場合（ステップＳ９５でＹＥＳ）、時間ファイル１５２からＶＭＩＤに対応する中断時継続時間を読み出す（ステップＳ９６）。解除部１７６は中断時継続時間内にＶＭＩＤに係るＶＭ２に対する起動命令が、ＮＩＣ１６を介してパーソナルコンピュータ３から出力されたか否かを判断する（ステップＳ９７）。解除部１７６は起動命令が出力されたと判断した場合（ステップＳ９７でＹＥＳ）、処理を再びステップＳ６４へ戻す。これにより対応するＶＭ２は再度起動し、物理マシン１は運転を継続する。
【００４４】
解除部１７６は起動命令が出力されていないと判断した場合（ステップＳ９７でＮＯ）、継続部１７２は読み出した中断時継続時間を経過したか否かを判断する（ステップＳ９８）。継続部１７２は中断時継続時間を経過していないと判断した場合（ステップＳ９８でＮＯ）、処理をステップＳ９７へ戻す。継続部１７２は中断時継続時間を経過したと判断した場合（ステップＳ９８でＹＥＳ）、ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「中断状態」と記憶する（ステップＳ９９）。なおステップＳ９９の処理後、後述するステップＳ１１１へ処理を移行する。
【００４５】
ステップＳ９５において、継続部１７２は中断命令が出力されていないと判断した場合（ステップＳ９５でＮＯ）、時間ファイル１５２からＶＭＩＤに対応する停止時継続時間を読み出す（ステップＳ１０１）。解除部１７６は停止時継続時間内にＶＭＩＤに係るＶＭ２に対する起動命令が、ＮＩＣ１６を介してパーソナルコンピュータ３から出力されたか否かを判断する（ステップＳ１０２）。解除部１７６は起動命令が出力されたと判断した場合（ステップＳ１０２でＹＥＳ）、処理を再びステップＳ６４へ戻す。これにより対応するＶＭ２は運転を再開し、物理マシン１は運転を継続する。
【００４６】
解除部１７６は起動命令が出力されていないと判断した場合（ステップＳ１０２でＮＯ）、継続部１７２は読み出した停止時継続時間を経過したか否かを判断する（ステップＳ１０３）。継続部１７２は停止時継続時間を経過していないと判断した場合（ステップＳ１０３でＮＯ）、処理をステップＳ１０２へ戻す。継続部１７２は停止時継続時間を経過したと判断した場合（ステップＳ１０３でＹＥＳ）、ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「停止状態」と記憶する（ステップＳ１０４）。なおステップＳ１０４の処理後、後述するステップＳ１１１へ処理を移行する。
【００４７】
判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあるか否かを判断する（ステップＳ１１１）。判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にないと判断した場合（ステップＳ１１１でＮＯ）、処理をステップＳ６３へ戻す。以上の処理を繰り返し、また他のＶＭ２についても並行して同様の処理を行う。一方、判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあると判断した場合（ステップＳ１１１でＹＥＳ）、出力部１７４はＶＭカーネル１７に対し物理マシン１の停止命令を出力する（ステップＳ１１２）。ＣＰＵ１１はＶＭカーネル１７からの停止命令を受けて物理マシン１を停止する（ステップＳ１１３）。これにより、ＶＭ２に対し、中断命令があった場合と停止命令があった場合とで継続運転に関する制御を最適化することでよりユーザの利便性を向上させることができると共に、省電力を計ることが可能となる。
【００４８】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００４９】
実施の形態３
実施の形態３は時間ファイル１５２を最適化する形態に関する。図１２は実施の形態３に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態１に加えて、ＶＭ２の状態の変化が記録されている履歴ファイル１５３、ＶＭ２の状態の変化を履歴ファイルに記録する抽出部１７９及び履歴ファイル１５３を使って時間ファイル１５２の中断時間及び停止時間を最適化する算出部１７１０が設けられている。図１３は履歴ファイル１５３のレコードレイアウトを示す説明図である。ＲＡＭ１２またはＨＤ１５を含む記憶部に記憶される履歴ファイル１５３は日毎に各ＶＭ２の運転時間、中断時間、または停止時間、及び、各ＶＭ２の状態の履歴を記憶している。履歴ファイル１５３はＶＭＩＤフィールド、時間フィールド及び状態フィールドを含む。ＶＭＩＤフィールドにはＶＭＩＤが記憶される。時間フィールドには、ＶＭＩＤに対応づけて運転時間、中断時間、または停止時間が記憶される。
【００５０】
また状態フィールドにはＶＭＩＤに対応づけて記憶した時間におけるＶＭ２の状態を記憶している。図１３の例は１２月１５日月曜日におけるＶＭ２１、ＶＭ２２及びＶＭ２３の運転時間、中断時間、または停止時間、並びに、ＶＭ２１、ＶＭ２２及びＶＭ２３の状態の履歴を示している。例えば、ＶＭ２１は９時から１１時の間は「運転状態」にあり、１１時から１１時１０分の間「中断状態」にあり、１１時１０分から１１時３０分までの間は「運転状態」にあることが理解できる。なお、説明を容易にするために年及び秒の記載を省略している。また、時計部１８からは曜日の情報、及び、平日または祝日のいずれかを特定するための情報がＶＭカーネル１７へ出力されており、ＶＭカーネル１７は履歴ファイル１５３の各レコードに曜日、及び、平日または祝日の情報を記憶する。
【００５１】
ステップＳ６４、Ｓ７３、Ｓ９２、Ｓ９８及びＳ１０３で述べた如く、起動部１７７がＶＭ２を起動した場合、または、停止部１７３がＶＭ２を中断あるいは停止した場合、ＶＭカーネル１７は、運転、中断または停止時間を状態と共に履歴ファイル１５３に記憶する。具体的にはＶＭカーネル１７は時計部１８の出力を参照し、ＶＭＩＤに対応づけて履歴ファイル１５３に運転時間、中断時間または停止時間を、「運転状態」、「中断状態」または「停止状態」と共に記憶する。これにより継続時間を考慮した各ＶＭ２の履歴が蓄積される。
【００５２】
抽出部１７９は履歴ファイル１５３から各ＶＭ２の中断時間または停止時間の内、予め定めた閾値以下の中断時間または停止時間を抽出する。なお、本実施の形態においてはこの閾値を１０分とするが、一例でありこれに限るものではない。また本実施の形態においては中断時間及び停止時間の双方を抽出して、時間ファイル１５２の中断時継続時間及び停止時継続時間の双方を最適化する例を説明するが、これに限るものではない。中断時間または停止時間のいずれかを抽出して、時間ファイル１５２の中断時継続時間または停止時継続時間のいずれかを最適化しても良い。
【００５３】
抽出部１７９は各ＶＭ２の所定日数分の中断時間及び停止時間を履歴ファイル１５３の時間フィールド及び状態フィールドを参照して抽出する。本実施の形態においては一例として平日の曜日毎に過去１０週分の中断時間及び停止時間を抽出する例を挙げて説明する。例えば祝日を除く月曜日の過去１０週分の、１０分以下の中断時間及び停止時間を抽出する。なお、抽出例はあくまで一例でありこれに限定するものではない。
【００５４】
算出部１７１０は抽出部１７９で抽出した中断時間及び停止時間に基づき、中断時間及び停止時間を最適化する。例えば算出部１７１０は抽出した中断時間及び停止時間の平均中断時間及び平均停止時間を最適化として算出するようにすれば良い。その他、算出部１７１０は抽出した中断時間の内最も長いまたは短い中断時間を有する中断時間を最適な中断時間としても良い。同様に、算出部１７１０は抽出した停止時間の内最も長いまたは短い停止時間を有する停止時間を最適な停止時間としても良い。さらに算出部１７１０は抽出した中断時間を１分台、２分台、３分台の如く時間単位に分類して正規化し、最も数多く分類された時間単位を最適な中断時間としても良い。同様に、算出部１７１０は抽出した停止時間を１分台、２分台、３分台の如く時間単位に分類して正規化し、最も数多く分類された時間単位を最適な停止時間としても良い。本実施の形態においては、最適化の例として平均中断時間及び平均停止時間を算出する例を挙げて説明する。
【００５５】
図１４は実施の形態３に係る時間ファイル１５２のレコードレイアウトを示す説明図である。時間ファイル１５２は曜日毎にＶＭＩＤに対応する平均中断時継続時間及び平均停止時継続時間を記憶している。また図１４に示す如く、曜日内にて平日または祝日を区別して、ＶＭＩＤに対応する平均中断時継続時間及び平均停止時継続時間を記憶している。図１４は平日月曜日の例を示している。算出部１７１０は算出した平均中断時間を、平均中断時継続時間として時間ファイル１５２に記憶する。また、算出部１７１０は算出した平均停止時間を、平均停止時継続時間として時間ファイル１５２に記憶する。なお、抽出部１７９による抽出処理及び算出部１７１０による算出処理は予め設定した時間帯に毎日実行すれば良い。
【００５６】
図１５は最適化処理の手順を示すフローチャートである。ＶＭカーネル１７は、起動部１７７及び停止部１７３の出力を参照し、ＶＭ２の状態に変化があったか否かを判断する（ステップＳ１５１）。ＶＭカーネル１７は、変化がないと判断した場合（ステップＳ１５１でＮＯ）、変化があるまで待機する。一方、運転、中断または停止に係るＶＭ２の状態の変化があったと判断した場合（ステップＳ１５１でＹＥＳ）、図１３の如くＶＭＩＤに対応づけて時間及び状態を履歴ファイル１５３に記憶する（ステップＳ１５２）。なお、本実施の形態においてはＶＭ２毎に、履歴を記憶し、継続時間を最適化しているが、ＶＭ２を、ユーザＩＤを有する複数人が使用する場合は、さらにユーザ別に履歴を記憶し、ユーザ別に継続時間を最適化しても良い。
【００５７】
抽出部１７９は予めＨＤ１５に記憶された最適化を行う時間を読み出す。これは例えば毎日午後３時等と記憶されている。抽出部１７９は最適化を行う時間に達したか否かを判断する（ステップＳ１５３）。抽出部１７９は最適化を行う時間に達していないと判断した場合（ステップＳ１５３でＮＯ）、処理をステップＳ１５１に戻し、再び履歴を蓄積する。抽出部１７９は最適化を行う時間に達したと判断した場合（ステップＳ１５３でＹＥＳ）、ＨＤ１５に予め記憶した所定日数及び所定時間（閾値）を読み出す（ステップＳ１５４）。
【００５８】
抽出部１７９は読み出した所定日数分の所定時間以下の中断時間及び停止時間を抽出する（ステップＳ１５５）。時計部１８からは曜日の情報、及び、平日または祝日のいずれかを特定するための情報も出力される。抽出部１７９は現在の曜日、及び、平日または祝日が一致する過去所定日数分（例えば１０日分）の中断時間及び停止時間の内、所定時間（例えば１０分）以下の中断時間及び停止時間を抽出する。算出部１７１０は中断時間の合計値を読み出した数で除し、また停止時間の合計値を読み出した数で除し、平均中断時間及び平均停止時間を算出する（ステップＳ１５６）。
【００５９】
算出部１７１０は算出した平均中断時間を平均中断時継続時間として、及び平均停止時間を平均停止時継続時間として時間ファイル１５２に記憶する（ステップＳ１５７）。この際時間ファイル１５２には、曜日や、平日または休日・祝日などの属性を示す情報と共にＶＭＩＤに対応する平均中断時継続時間及び平均停止時継続時間が記憶される。以上の処理はＶＭ２毎に実行される。そして、ステップＳ９６にて中断時継続時間を読み出す場合は、継続部１７２は時計部１８から出力される曜日及び祝日か否かの情報を参照して、対応する平均中断時継続時間を時間ファイル１５２から読み出す。同様に、ステップＳ１０１にて停止時継続時間を読み出す場合は、継続部１７２は時計部１８から出力される曜日や、平日または休日・祝日などの属性を示す情報を参照して、対応する平均停止時継続時間を時間ファイル１５２から読み出す。これにより、各ＶＭ２の使用実績に応じて継続時間を最適化することができ、より使い勝手が良く、また省電力の向上をも図ることが可能となる。
【００６０】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００６１】
実施の形態４
実施の形態４は予定に応じて中断または停止する形態に関する。図１６は実施の形態４に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態４では新たにタイマ設定部１７１１及び予定ファイル（停止記憶部）１５４が設けられている。図１７は予定ファイル１５４のレコードレイアウトを示す説明図である。ＲＡＭ１２またはＨＤ１５に設けられる予定ファイル１５４は平日の月曜日〜金曜日、祝日、または土曜日若しくは日曜日別に各ＶＭ２及び物理マシン１の運転時間、中断時間または停止時間の予定を記憶している。この予定ファイル１５４の内容はパーソナルコンピュータ３から適宜修正することが可能である。
【００６２】
図１７の例は、平日月曜日の物理マシン１の停止時間及び運転時間、並びに、各ＶＭ２の停止時間及び運転時間を含む予定を記憶している。なお、図１７に示した予定はあくまで一例であり、曜日の如何にかかわらず毎日同一の予定としても良く、また、平日と、週末土日及び祝日との２つの予定のみとしても良い。図１７の例では、物理マシン１は２１時から９時００分までは「停止状態」となるよう予定が記憶されている。物理マシン１の停止時は、ＶＭ２も同様に停止するよう予定が記憶されている。タイマ設定部１７１１は物理マシン１を停止する場合、予定ファイル１５４を参照し、停止時間の終了時まで（図１７の例では９時００分）に物理マシン１が起動するようタイマ１８１を設定する。
【００６３】
時計部１８及びタイマ１８１は物理マシン１が停止時においても動作しており、タイマ１８１は、停止時間の終了時に達したと判断した場合、ＣＰＵ１１へ起動命令を出力する。なお、本実施の形態においては、説明を容易にするために、停止時間の終了時に達した場合に、物理マシン１が起動を開始する例を挙げて説明するがこれに限るものではない。例えば、停止時間の終了時前に、物理マシン１を予め起動させても良い。この場合、物理マシン１の起動を開始してからＶＭ２の起動を開始できる状態が整うまでの所要時間を用いて、停止時間の終了時から逆算する。これにより、物理マシン１の起動時間を決定することができる。例えば、物理マシン１の起動に５分要する場合、停止時間の終了時５分前に物理マシン１を起動させる。これにより、停止時間の終了時に、物理マシン１が利用可能な状態となる。なお、物理マシン１の起動に要する時間は予め測定しておくか、あるいはパーソナルコンピュータ３から適宜設定することが可能である。ＣＰＵ１１はＶＭカーネル１７及び制御モジュール１７０を起動することによって物理マシン１を起動する。起動部１７７は時計部１８の出力及び予定ファイル１５４を参照し、ＶＭ２の中断時間または停止時間の終了時に、対応するＶＭ２を起動する。図１７の例では９時にＶＭ２１及びＶＭ２２が起動され、１０時にＶＭ２３が起動される。なお、本実施の形態においては、説明を容易にするために、停止時間の終了時に達した場合に、物理マシン１が起動し、その後ＶＭ２の起動を開始する例を挙げて説明するがこれに限るものではない。例えば、停止時間の終了時前に、ＶＭ２を予め起動させても良い。この場合、物理マシン１の起動を開始してからＶＭ２の起動が完了するまでの所要時間を用いて、停止時間の終了時から逆算する。これにより、物理マシン１の起動時間およびＶＭ２の起動時間を決定することができる。例えば、物理マシン１の起動に５分要し、ＶＭ２の起動に３分要する場合、停止時間の終了時８分前に物理マシン１を起動させる。その後、停止時間の終了時３分前にＶＭ２を起動する。これにより、停止時間の終了時に、ＶＭ２が利用可能な状態となる。なお、ＶＭ２の起動に要する時間は予め測定しておくか、あるいはパーソナルコンピュータ３から適宜設定することが可能である。
【００６４】
図１８乃至図２０は制御処理の手順を示すフローチャートである。物理マシン１が停止中に、タイマ１８１は時計部１８から出力される現在時刻を取得する（ステップＳ１８１）。タイマ１８１は前回の停止時に設定された物理マシン１の停止時間の終了時に現在時刻が達したか否かを判断する（ステップＳ１８２）。タイマ１８１は停止時間の終了時に現在時刻が達していないと判断した場合（ステップＳ１８２でＮＯ）、処理をステップＳ１８１へ戻す。一方、タイマ１８１は停止時間の終了時に現在時刻が達したと判断した場合（ステップＳ１８２でＹＥＳ）、物理マシン１を起動する（ステップＳ１８３）。具体的にはタイマ１８１は電源制御部１９にオン信号を出力する。電源制御部１９は物理マシン１に電力を供給する。
【００６５】
以下に述べるステップＳ１８４〜Ｓ２０１はＶＭ２１〜ＶＭ２３が並行して処理を行う。起動部１７７は予定ファイル１５４からＶＭ２の中断時間または停止時間の終了時を読み出し（ステップＳ１８４）、時計部１８から出力される現在時刻が、ＶＭ２の中断時間または停止時間の終了時に達したか否かを判断する（ステップＳ１８５）。起動部１７７はＶＭ２の中断時間または停止時間の終了時に達していないと判断した場合（ステップＳ１８５でＮＯ）、ＶＭ２の中断時間または停止時間に達するまで待機する。一方、起動部１７７はＶＭ２の中断時間または停止時間の終了時に達したと判断した場合（ステップＳ１８５でＹＥＳ）、対応するＶＭ２を起動する（ステップＳ１８６）。ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「運転状態」と記憶する（ステップＳ１８７）。なお、時計部１８は時間の他、曜日及び祝日であるか否かの情報をも起動部１７７へ出力する。起動部１７７は曜日及び祝日であるか否かの情報を参照して、図１７に示す予定ファイル１５４から対応するＶＭ２の中断時間及び停止時間を読み出す。なお、起動部１７７は物理マシン１についても、処理を行う日の曜日及び祝日であるか否かの情報に基づき、対応する停止時間を読み出す。
【００６６】
生成部１７８はＶＭＩＤに対応する移行時間及び状態を設定ファイル１５１から読み出す（ステップＳ１８８）。生成部１７８はＶＭ２に対する操作命令を受け付けていない時間を計時する（ステップＳ１８９）。生成部１７８はパーソナルコンピュータ３からＶＭ２に対する操作命令があったか否かを判断する（ステップＳ１８１０）。生成部１７８はパーソナルコンピュータ３から操作命令があったと判断した場合（ステップＳ１８１０でＹＥＳ）、ステップＳ１８９に処理を戻す。生成部１７８は操作命令がないと判断した場合（ステップＳ１８１０でＮＯ）、計時した時間が移行時間を経過したか否かを判断する（ステップＳ１８１１）。生成部１７８は移行時間を経過していないと判断した場合（ステップＳ１８１１でＮＯ）、処理をステップＳ１８１０へ戻す。
【００６７】
一方、生成部１７８は移行時間を経過したと判断した場合（ステップＳ１８１１でＹＥＳ）、中断命令または停止命令を生成する（ステップＳ１８１２）。生成部１７８はＶＭＩＤ、及び、生成した中断命令または停止命令を受け付け部１７１へ出力する（ステップＳ１９１）。受け付け部１７１はＶＭＩＤ、及び、中断命令または停止命令を受け付ける（ステップＳ１９２）。なお、実施の形態１で述べた如く、パーソナルコンピュータ３からＶＭ２のＶＭＩＤ、及び、中断命令または停止命令が出力された場合にも生成部１７８は中断命令または停止命令を生成しても良いことはもちろんである。
【００６８】
停止部１７３は対応するＶＭ２を中断または停止する（ステップＳ１９３）。ＶＭカーネル１７は、ＶＭ２の状態を記憶する（ステップＳ１９４）。ステップＳ１９４ではＶＭＩＤに対応づけて、「中断維持状態」または「停止維持状態」を記憶する。停止部１７３は受け付けたＶＭＩＤ、及び、中断命令または停止命令を継続部１７２へ出力する（ステップＳ１９５）。
継続部１７２は時間ファイル１５２からＶＭＩＤに対応する継続時間を読み出す（ステップＳ１９６）。なお、本実施の形態においては説明を容易にするために中断命令または停止命令の種類にかかわらず、ＶＭ２毎に時間ファイル１５２に記憶された継続時間を用いる例を説明する。解除部１７６は継続時間内にＶＭＩＤに係るＶＭ２に対する起動命令が、ＮＩＣ１６を介してパーソナルコンピュータ３から出力されたか否かを判断する（ステップＳ１９７）。解除部１７６は起動命令が出力されたと判断した場合（ステップＳ１９７でＹＥＳ）、処理を再びステップＳ１８６へ戻す。これにより対応するＶＭ２は運転を再開し、物理マシン１は運転を継続する。
【００６９】
解除部１７６は起動命令が出力されていないと判断した場合（ステップＳ１９７でＮＯ）、継続部１７２は読み出した継続時間を経過したか否かを判断する（ステップＳ１９８）。継続部１７２は継続時間を経過していないと判断した場合（ステップＳ１９８でＮＯ）、処理をステップＳ１９７へ戻す。継続部１７２は継続時間を経過したと判断した場合（ステップＳ１９８でＹＥＳ）、ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「中断状態」または「停止状態」と記憶する（ステップＳ１９９）。
【００７０】
判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあるか否かを判断する（ステップＳ２０１）。具体的には、判断部１７５はＶＭカーネル１７に記憶した各ＶＭ２の状態を参照して判断を行う。判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にないと判断した場合（ステップＳ２０１でＮＯ）、処理をステップＳ１８４へ戻す。以上の処理を繰り返し、また他のＶＭ２についても並行して同様の処理を行う。
【００７１】
一方、判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあると判断した場合（ステップＳ２０１でＹＥＳ）、時計部１８から現在時刻を取得する（ステップＳ２０２）。判断部１７５は現在時刻をタイマ設定部１７１１へ出力する。タイマ設定部１７１１は現在時刻よりも後の停止時間の終了時間を予定ファイル１５４から読み出す（ステップＳ２０３）。例えば、現在時刻が１１時５０分のときは、図１７より、後の停止時間が１２時〜１２時３０分であるため、その終了時間である１２時３０分を読み出す。タイマ設定部１７１１はタイマ１８１に読み出した終了時間に物理マシン１が起動するよう起動タイマを設定する（ステップＳ２０４）。この起動タイマの設定により物理マシン１がステップＳ１８１〜Ｓ１８３の処理により起動する。
【００７２】
出力部１７４はタイマ設定部１７１１による起動タイマ設定後、ＶＭカーネル１７に対し物理マシン１の停止命令を出力する（ステップＳ２０５）。ＣＰＵ１１はＶＭカーネル１７からの停止命令を受けて物理マシン１を停止する（ステップＳ２０６）。これにより、予定ファイル１５４に基づき、利用状況に合わせて物理マシン１及びＶＭ２を「運転状態」にすることが可能となる。
【００７３】
図２１乃至図２３は制御処理の手順を示すフローチャートである。例えば図１７に示す予定ファイル１５４では物理マシン１は早朝５時の段階において、予定が「停止」であるが、ユーザがパーソナルコンピュータ３を通じて、物理マシン１及びＶＭ２を起動したものとする。ＮＩＣ１６はパーソナルコンピュータ３から物理マシン１の起動命令を受け付ける（ステップＳ２１１）。ＮＩＣ１６は起動命令を電源制御部１９へ出力する。電源制御部１９は電力を供給し、物理マシン１を起動する（ステップＳ２１２）。
【００７４】
起動部１７７はＮＩＣ１６を介してＶＭ２の起動命令及びＶＭＩＤを受け付ける（ステップＳ２１３）。起動部１７７は起動対象のＶＭ２を起動する（ステップＳ２１４）。ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「運転状態」と記憶する（ステップＳ２１５）。
【００７５】
生成部１７８はＶＭＩＤに対応する移行時間及び状態を設定ファイル１５１から読み出す（ステップＳ２１６）。生成部１７８はＶＭ２に対する操作命令を受け付けていない時間を計時する（ステップＳ２１７）。生成部１７８はパーソナルコンピュータ３から操作命令があったか否かを判断する（ステップＳ２１８）。生成部１７８は操作命令があったと判断した場合（ステップＳ２１８でＹＥＳ）、ステップＳ２１７に処理を戻す。生成部１７８は操作命令がないと判断した場合（ステップＳ２１８でＮＯ）、計時した時間が移行時間を経過したか否かを判断する（ステップＳ２１９）。生成部１７８は移行時間を経過していないと判断した場合（ステップＳ２１９でＮＯ）、処理をステップＳ２１８へ戻す。
【００７６】
一方、生成部１７８は移行時間を経過したと判断した場合（ステップＳ２１９でＹＥＳ）、中断命令または停止命令を生成する（ステップＳ２１１０）。生成部１７８はＶＭＩＤ、及び、生成した中断命令または停止命令を受け付け部１７１へ出力する（ステップＳ２２１）。受け付け部１７１はＶＭＩＤ、及び、中断命令または停止命令を受け付ける（ステップＳ２２２）。なお、実施の形態１で述べた如く、パーソナルコンピュータ３からＶＭ２のＶＭＩＤ、及び、中断命令または停止命令が出力された場合にも生成部１７８は中断命令または停止命令を生成しても良いことはもちろんである。
【００７７】
停止部１７３は対応するＶＭ２を中断または停止する（ステップＳ２２３）。ＶＭカーネル１７は、ＶＭ２の状態を記憶する（ステップＳ２２４）。ステップＳ２２４ではＶＭＩＤに対応づけて、「中断維持状態」または「停止維持状態」を記憶する。停止部１７３は受け付けたＶＭＩＤ、及び、中断命令または停止命令を継続部１７２へ出力する（ステップＳ２２５）。継続部１７２は時間ファイル１５２からＶＭＩＤに対応する継続時間を読み出す（ステップＳ２２６）。なお、本実施の形態においては説明を容易にするために中断命令または停止命令の種類にかかわらず、ＶＭ２毎に時間ファイル１５２に記憶された継続時間を用いる例を説明する。解除部１７６は継続時間内にＶＭＩＤに係るＶＭ２に対する起動命令が、ＮＩＣ１６を介してパーソナルコンピュータ３から出力されたか否かを判断する（ステップＳ２２７）。解除部１７６は起動命令が出力されたと判断した場合（ステップＳ２２７でＹＥＳ）、処理を再びステップＳ２１４へ戻す。これにより対応するＶＭ２は運転を再開し、物理マシン１は運転を継続する。なお、ＶＭ２に対して継続時間の間、操作を待つ例として、パーソナルコンピュータ３からの起動操作に基づくＶＭ２の起動命令を挙げたが一例でありこれに限るものではない。例えば、起動部１７７が、対象となるＶＭ２に関し、継続時間内に予定ファイル１５４の中断時間または停止時間の終了時に達したと判断した場合、ＶＭ２の起動操作を行っても良い。起動部１７７は中断維持状態または停止維持状態にあるＶＭ２、及び、解除部１７６に対し、起動部１７７の起動操作に伴う起動命令を出力する。解除部１７６は「中断維持状態」、または、「停止維持状態」を解除すると共に、ＶＭ２を再度起動し、物理マシン１は運転を継続する。
【００７８】
解除部１７６は起動命令が出力されていないと判断した場合（ステップＳ２２７でＮＯ）、継続部１７２は読み出した継続時間を経過したか否かを判断する（ステップＳ２２８）。継続部１７２は継続時間を経過していないと判断した場合（ステップＳ２２８でＮＯ）、処理をステップＳ２２７へ戻す。継続部１７２は継続時間を経過したと判断した場合（ステップＳ２２８でＹＥＳ）、ＶＭカーネル１７は、ＶＭ２の状態をＶＭＩＤに対応づけて、「中断状態」または「停止状態」と記憶する（ステップＳ２２９）。
【００７９】
判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあるか否かを判断する（ステップＳ２３１）。具体的には、判断部１７５はＶＭカーネル１７に記憶した各ＶＭ２の状態を参照して判断を行う。判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にないと判断した場合（ステップＳ２３１でＮＯ）、処理をステップＳ２１３へ戻す。以上の処理を繰り返し、また他のＶＭ２についても並行して同様の処理を行う。
【００８０】
一方、判断部１７５は他の全てのＶＭ２が「中断状態」または「停止状態」にあると判断した場合（ステップＳ２３１でＹＥＳ）、時計部１８から現在時刻を取得する（ステップＳ２３２）。判断部１７５は現在時刻をタイマ設定部１７１１へ出力する。タイマ設定部１７１１は現在時刻よりも後の停止時間の終了時間を予定ファイル１５４から読み出す（ステップＳ２３３）。例えば後の停止時間が１２時〜１２時３０分と記憶されていた場合、終了時間である１２時３０分を読み出す。タイマ設定部１７１１はタイマ１８１に読み出した終了時間に物理マシン１が起動するようタイマ１８１に起動タイマを設定する（ステップＳ２３４）。この起動タイマの設定により物理マシン１がステップＳ１８１〜Ｓ１８３の処理により起動する。出力部１７４はタイマ設定部１７１１による起動タイマ設定後、ＶＭカーネル１７に対し物理マシン１の停止命令を出力する（ステップＳ２３５）。ＣＰＵ１１はＶＭカーネル１７からの停止命令を受けて物理マシン１を停止する（ステップＳ２３６）。これにより、予定ファイル１５４において物理マシン１の停止時間において起動した場合でも、ＶＭ２の利用状況に応じて再度「停止状態」とすることで省電力を図ることが可能となる。
【００８１】
本実施の形態４は以上の如きであり、その他は実施の形態１乃至３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００８２】
実施の形態５
実施の形態５は履歴に基づき予定ファイル１５４を変更する形態に関する。図２４は実施の形態５に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態４に加えて変更部１７１２が設けられている。変更部１７１２は履歴ファイル１５３を参照し、予定ファイル１５４内の各ＶＭ２及び物理マシン１の時間を変更する。まずＶＭ２の予定ファイル１５４内の時間変更について説明する。
【００８３】
変更部１７１２は一つのＶＭ２の過去の中断時間または停止時間を履歴ファイル１５３から読み出し、中断時間が相互に重複する時間、または、停止時間が相互に重複する時間を抽出する。変更部１７１２はこの抽出した時間を中断時間、または、停止時間として予定ファイル１５４に記憶する。本実施の形態においては一例として過去所定日数分（例えば３日分）の中断時間及び停止時間の双方を用いて変更する例を説明する。
【００８４】
図２５はＶＭ２の中断時間及び停止時間の変化を示す説明図である。一例として上から平日月曜日の過去３週分、１２月８日月曜日、１２月１５日月曜日及び１２月２２日月曜日の中断時間及び停止時間を示している。また一番下に変更後の平日月曜日の中断時間及び停止時間を示している。横軸は時間である。変更部１７１２は履歴ファイル１５３を参照し、対象とするＶＭ２の３日分の中断時間及び停止時間を抽出する。変更部１７１２は１２月８日月曜日、１２月１５日月曜日及び１２月２２日月曜日の中断時間が相互に重複する時間を変更後の中断時間として抽出する。
【００８５】
変更部１７１２はこの抽出した変更後の中断時間をＶＭＩＤに対応づけて予定ファイル１５４に記憶する。例えばＶＭ２１の中断時間が１２時から１時、ＶＭ２２の中断時間が１１時から２時、ＶＭ２３の中断時間が１２時３０分から１時１０分の場合、１２時３０分から１時が重複する中断時間として抽出される。同様に、変更部１７１２は１２月８日月曜日、１２月１５日月曜日及び１２月２２日月曜日の停止時間が相互に重複する時間を変更後の停止時間として抽出する。変更部１７１２はこの抽出した変更後の停止時間をＶＭＩＤに対応づけて予定ファイル１５４に記憶する。
【００８６】
また、変更部１７１２は１２月８日月曜日、１２月１５日月曜日及び１２月２２日月曜日の中断時間と停止時間とが重複する場合、相互に重複する時間を変更後の中断時間として抽出する。変更部１７１２はこの抽出した変更後の中断時間をＶＭＩＤに対応づけて予定ファイル１５４に記憶する。例えば、１２月８日月曜日が「中断」、１２月１５日月曜日が「停止」、１２月２２日月曜日が「中断」として重複している場合、重複する時間を「中断」として予定ファイル１５４に記憶する。以上述べた処理を変更部１７１２は平日の各曜日について実行する。また平日以外の土曜日、日曜日及び祝日についても同様の処理を行う。具体的には、過去数週分の土曜日の中断時間（停止時間）が重複する中断時間（停止時間）を抽出する。また祝日については、過去数回分の祝日の中断時間（停止時間）が重複する中断時間（停止時間）を抽出する。
【００８７】
その他、平日の月曜日から金曜日までの５日間の中断時間（停止時間）が重複する中断時間（停止時間）を変更後の中断時間としても良い。さらに、土曜日、日曜日及び祝日の中断時間（停止時間）が重複する中断時間（停止時間）を変更後の中断時間としても良い。以上の処理は各ＶＭ２について実行される。これにより図１７に示す予定ファイル１５４は過去の中断または停止履歴に基づき変更される。
【００８８】
続いて物理マシン１の中断時間または停止時間の変更について説明する。変更部１７１２は全てのＶＭ２の変更後の予定ファイル１５４に記憶した中断時間または停止時間に基づき、物理マシン１の中断時間または停止時間を変更する。図２６は各ＶＭ２の中断時間及び停止時間、並びに、物理マシン１の中断時間及び停止時間の変化を示す説明図である。図２６には、上からＶＭ２１、ＶＭ２２、及びＶＭ２３の変更後の中断時間及び停止時間の変化が示されている。一番下には変更後の物理マシン１の中断時間及び停止時間の変化が示されている。横軸は時間である。変更部１７１２は予定ファイル１５４から変更後のＶＭ２１、ＶＭ２２、及びＶＭ２３の変更後の中断時間及び停止時間を読み出す。
【００８９】
変更部１７１２は図２６に示す如く、ＶＭ２１〜ＶＭ２３相互に重複する中断時間を抽出する。そして変更部１７１２は抽出した変更後の中断時間を物理マシン１の中断時間として予定ファイル１５４に記憶する。また変更部１７１２はＶＭ２１〜ＶＭ２３相互に重複する停止時間を抽出する。そして変更部１７１２は抽出した変更後の停止時間を物理マシン１の停止時間として予定ファイル１５４に記憶する。なお、本実施の形態においては、中断時間及び停止時間の双方を変更する例を挙げて説明するがいずれか一方であっても良い。
【００９０】
さらに変更部１７１２は、変更後の予定ファイル１５４から、ＶＭ２１〜ＶＭ２３の中断時間と停止時間とが相互に重複する時間を抽出する。図２６の例では、ＶＭ２１及びＶＭ２３が中断時間であり、ＶＭ２２が停止時間となる時間が存在する。この場合、変更部１７１２は抽出した中断時間と停止時間とが重複する時間を、物理マシン１の中断時間として予定ファイル１５４に記憶する。中断及び停止が重複する場合、早期起動を優先すべく、中断時間として記憶するものとしたものである。
【００９１】
図２７乃至図２９はＶＭ２の予定ファイル１５４の変更処理手順を示すフローチャートである。変更部１７１２は時計部１８から出力される時間、日、曜日、及び祝日であるか否かの情報を参照し、物理マシン１の起動が、日付が変わってから第１番目の起動であるか否かを判断する。変更部１７１２は日付が変わってから第１番目の起動であると判断した場合、前日までのＶＭ２の履歴ファイル１５３を考慮して予定ファイル１５４を変更すべく以下の処理を行う。なお、本実施の形態においては一日の初めに変更処理を行う例を挙げて説明するがあくまで一例であり、これに限るものではない。例えば１ヶ月毎、毎週金曜日、または６時間おき等、適宜のタイミングで変更処理を行えばよい。
【００９２】
変更部１７１２は前日が平日であるか否かを判断する（ステップＳ２７１）。変更部１７１２は前日が平日であると判断した場合（ステップＳ２７１でＹＥＳ）、履歴ファイル１５３から前日の曜日の所定週分のＶＭ２の中断時間及び停止時間を読み出す（ステップＳ２７２）。変更部１７１２は複数の中断時間が日間で相互に重複する中断時間を抽出する（ステップＳ２７３）。変更部１７１２は、対象となるＶＭＩＤに対応づけて、予定ファイル１５４の平日、前日の曜日に、抽出した中断時間を記憶する（ステップＳ２７４）。変更部１７１２は複数の停止時間が日間で相互に重複する停止時間を抽出する（ステップＳ２７５）。変更部１７１２は、対象となるＶＭＩＤに対応づけて、予定ファイル１５４の平日、前日の曜日に、抽出した停止時間を記憶する（ステップＳ２７６）。
【００９３】
変更部１７１２は中断時間及び停止時間の双方が日間で相互に重複する中断時間及び停止時間を抽出する（ステップＳ２７７）。変更部１７１２は予定ファイル１５４の平日、前日の曜日に、「中断状態」として抽出した時間を記憶する（ステップＳ２７８）。変更部１７１２は前日が平日でないと判断した場合（ステップＳ２７１でＮＯ）、前日は土曜日または日曜日であるか否かを判断する（ステップＳ２７９）。変更部１７１２は前日が土曜日または日曜日であると判断した場合（ステップＳ２７９でＹＥＳ）、履歴ファイル１５３から前日の曜日の所定週分のＶＭ２の中断時間及び停止時間を読み出す（ステップＳ２８１）。変更部１７１２は複数の中断時間が日間で相互に重複する中断時間を抽出する（ステップＳ２８２）。
【００９４】
変更部１７１２は、対象となるＶＭＩＤに対応づけて、予定ファイル１５４の土曜日または日曜日に、抽出した中断時間を記憶する（ステップＳ２８３）。変更部１７１２は複数の停止時間が日間で相互に重複する停止時間を抽出する（ステップＳ２８４）。変更部１７１２は、対象となるＶＭＩＤに対応づけて、予定ファイル１５４の土曜または日曜日に、抽出した停止時間を記憶する（ステップＳ２８５）。変更部１７１２は中断時間及び停止時間の双方が日間で相互に重複する中断時間及び停止時間を抽出する（ステップＳ２８６）。変更部１７１２は予定ファイル１５４の土曜日または日曜日に、「中断状態」として抽出した時間を記憶する（ステップＳ２８７）。
【００９５】
変更部１７１２は土曜日または日曜日でないと判断した場合（ステップＳ２７９でＮＯ）、祝日であると判断し、履歴ファイル１５３から前日を含め所定祝日分のＶＭ２の中断時間及び停止時間を、履歴ファイル１５３から読み出す（ステップＳ２８８）。変更部１７１２は複数の中断時間が祝日間で相互に重複する中断時間を抽出する（ステップＳ２８９）。変更部１７１２は、対象となるＶＭＩＤに対応づけて、予定ファイル１５４の祝日に、抽出した中断時間を記憶する（ステップＳ２９１）。変更部１７１２は複数の停止時間が祝日間で相互に重複する停止時間を抽出する（ステップＳ２９２）。変更部１７１２は、対象となるＶＭＩＤに対応づけて、予定ファイル１５４の祝日に、抽出した停止時間を記憶する（ステップＳ２９３）。
【００９６】
変更部１７１２は中断時間及び停止時間の双方が祝日間で相互に重複する中断時間及び停止時間を抽出する（ステップＳ２９４）。変更部１７１２は予定ファイル１５４の祝日に、「中断状態」として抽出した時間を記憶する（ステップＳ２９５）。ステップＳ２９５、Ｓ２７８及びＳ２８７の処理の後、変更部１７１２は全てのＶＭ２について以上述べた処理を終了したか否かを判断する（ステップＳ２９６）。変更部１７１２は全てのＶＭ２について処理を終了していない場合（ステップＳ２９６でＮＯ）、処理をステップＳ２７１へ戻し、以上の処理を繰り返す。変更部１７１２は全てのＶＭ２について処理を終了したと判断した場合（ステップＳ２９６でＹＥＳ）、一連の処理を終了する。
【００９７】
図３０は物理マシン１に係る予定ファイル１５４の変更処理手順を示すフローチャートである。ステップＳ２９６にて各ＶＭ２の変更処理の後、物理マシン１の変更処理を以下のとおり実行する。変更部１７１２は予定ファイル１５４から前日の全てのＶＭ２の中断時間及び停止時間を読み出す（ステップＳ３０１）。変更部１７１２は読み出した中断時間が各ＶＭ２間で重複する中断時間を抽出する（ステップＳ３０２）。変更部１７１２は予定ファイル１５４の前日に抽出した物理マシン１の中断時間を記憶する（ステップＳ３０３）。変更部１７１２は読み出した停止時間が各ＶＭ２間で重複する停止時間を抽出する（ステップＳ３０４）。変更部１７１２は予定ファイル１５４の前日に抽出した物理マシン１の停止時間を記憶する（ステップＳ３０５）。
【００９８】
変更部１７１２は読み出した中断時間及び停止時間が各ＶＭ２間で重複する中断時間及び停止時間を抽出する（ステップＳ３０６）。変更部１７１２は予定ファイル１５４の前日に物理マシン１の「中断状態」を記憶し、また抽出した物理マシン１の中断時間を記憶する（ステップＳ３０７）。これにより、ＶＭ２毎の使用状況に応じた予定ファイル１５４が構築される。さらに、各ＶＭ２の使用状況に応じてこれらを総括する物理マシン１の予定ファイル１５４についても最適化を図ることが可能となる。また、ＶＭ２の使用状況に応じて物理マシン１の予定ファイルを更新するため、平日のみならず土曜日、日曜日あるいは祝日毎の使用状況が反映される。
【００９９】
本実施の形態５は以上の如きであり、その他は実施の形態１乃至４と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１００】
実施の形態６
図３１は実施の形態６に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態１乃至５に係る物理マシン１を動作させるためのプログラムは、本実施の形態６のように、読み取り部（図示せず）にＣＤ−ＲＯＭ等の可搬型記録媒体１Ａを読み取らせてＨＤ１５に記憶しても良い。また、当該プログラムは、インターネット等の通信網を介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【０１０１】
図３１に示す物理マシン１は、中断命令または停止命令を受け付けさせ、継続時間の間運転を継続させる等のプログラムを、可搬型記録媒体１Ａによりまたは通信網を介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御モジュール１７０としてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述した物理マシン１として機能する。
【０１０２】
本実施の形態６は以上の如きであり、その他は実施の形態１乃至５と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１０３】
以上の実施の形態１乃至６を含む実施形態に関し、さらに以下の付記を開示する。
【０１０４】
（付記１）
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付けステップと、
該受け付けステップにより中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止ステップと、
前記仮想マシンへの操作を継続時間の間待つ継続ステップと、
前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力ステップと
を実行させるプログラム。
【０１０５】
（付記２）
仮想マシンは複数であり、
前記出力ステップは、
前記継続ステップの継続時間を経過した後に、他の仮想マシンの全てが中断または停止しているか否かを判断する判断ステップと、
該判断ステップにより他の仮想マシンの全てが中断または停止していると判断した場合に、前記コンピュータの中断命令または停止命令を出力するステップ
を含む付記１に記載のプログラム。
【０１０６】
（付記３）
前記継続ステップにより、前記仮想マシンに対する操作命令を受け付けた場合、前記停止ステップにより、中断または停止した前記仮想マシンを再度起動する解除ステップ
を含む付記２に記載のプログラム。
【０１０７】
（付記４）
前記継続ステップは、
前記受け付けステップにより中断命令または停止命令を受け付けた場合、仮想マシン毎に継続時間を記憶した記憶部から対応する仮想マシンの継続時間を読み出すステップと、
前記仮想マシンへの操作を前記読み出した継続時間の間待つ継続ステップと
を含む
付記２に記載のプログラム。
【０１０８】
（付記５）
前記継続ステップは、
前記受け付けステップにより中断命令を受け付けた場合、仮想マシン毎に中断命令に対応する第１継続時間を記憶した記憶部から対応する仮想マシンの第１継続時間を読み出すステップと、
前記仮想マシンへの操作を前記第１継続時間の間待つ継続ステップと、
前記受け付けステップにより停止命令を受け付けた場合、仮想マシン毎に停止命令に対応する前記第１継続時間よりも短い第２継続時間を記憶した記憶部から対応する仮想マシンの第２継続時間を読み出すステップと、
前記仮想マシンへの操作を前記第２継続時間の間待つ継続ステップと
を含む
付記２に記載のプログラム。
【０１０９】
（付記６）
仮想マシンの中断時間または停止時間の履歴を記憶部に記憶する記憶ステップと、
前記記憶部から仮想マシンの中断時間または停止時間を抽出する抽出ステップと、
該抽出ステップにより抽出した中断時間または停止時間に基づき、前記仮想マシンの継続時間を算出する算出ステップと
を含む付記４に記載のプログラム。
【０１１０】
（付記７）
前記抽出ステップは、
前記記憶部から仮想マシンの中断時間または停止時間の内、予め定めた閾値以下の中断時間または停止時間を抽出する
付記６に記載のプログラム。
【０１１１】
（付記８）
前記算出ステップにより算出した仮想マシンの継続時間を、仮想マシンに対応づけて記憶部に記憶するステップ
を含む付記７に記載のプログラム。
【０１１２】
（付記９）
前記算出ステップは、
前記抽出ステップにより抽出した仮想マシンの中断時間または停止時間の平均値を継続時間として算出する
付記７に記載のプログラム。
【０１１３】
（付記１０）
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
コンピュータの停止時間の予定を記憶部に記憶する停止記憶ステップと、
前記コンピュータの運転中に時計部から出力される時間が前記停止記憶ステップにより前記記憶部に記憶したコンピュータの停止時間である場合に、複数の仮想マシン全てが中断または停止しているか否かを判断する停止判断ステップと、
該停止判断ステップにより中断または停止していると判断した場合に、前記停止時間の終了時に前記コンピュータを起動させるためのタイマを設定する設定ステップと、
該設定ステップによりタイマを設定した後に前記コンピュータの停止命令を出力する停止出力ステップと
を実行させるプログラム。
【０１１４】
（付記１１）
仮想マシンの中断時間または停止時間の予定を記憶部に記憶する予定記憶ステップと、
前記コンピュータが起動した場合に、前記記憶部に記憶した前記仮想マシンの中断時間または停止時間の終了時に、仮想マシンを起動するステップ
を含む付記１０に記載のプログラム。
【０１１５】
（付記１２）
仮想マシンの中断時間または停止時間の履歴を記憶部に記憶する履歴記憶ステップと、
該履歴記憶ステップにより記憶した仮想マシンの中断時間または停止時間に基づき、前記予定記憶ステップにより前記記憶部に記憶した中断時間または停止時間の予定を変更する変更ステップ
を含む付記１０に記載のプログラム。
【０１１６】
（付記１３）
前記変更ステップは、
前記履歴記憶ステップにより前記記憶部に記憶した仮想マシンの所定日数分の中断時間または停止時間を読み出すステップと、
読み出した所定日数分の中断時間または停止時間が重複する中断時間または停止時間を抽出するステップと、
抽出した中断時間または停止時間へ、前記予定記憶ステップにより前記記憶部に記憶した中断時間または停止時間の予定を変更するステップと
を含む付記１２に記載のプログラム。
【０１１７】
（付記１４）
前記停止記憶ステップは、
コンピュータの停止時間または中断時間の予定を記憶部に記憶し、
前記変更ステップにより変更した全ての仮想マシンの中断時間または停止時間の予定を読み出すステップと、
読み出した全ての仮想マシンの中断時間または停止時間が重複する中断時間または停止時間を抽出するステップと、
抽出した中断時間または停止時間に、前記停止記憶ステップにより記憶したコンピュータの停止時間または中断時間を変更するステップと
を含む付記１２に記載のプログラム。
【０１１８】
（付記１５）
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付けステップと、
該受け付けステップにより中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止ステップと、
前記仮想マシンへの操作を継続時間の間待つ継続ステップと、
前記継続時間を経過した後に、他の仮想マシンの全てが中断または停止しているか否かを判断する判断ステップと、
前記コンピュータの運転中に時計部から出力される時間が前記停止記憶ステップにより前記記憶部に記憶したコンピュータの停止時間でない場合であり、かつ、前記判断ステップにより他の仮想マシンの全てが中断または停止している場合に、前記時計部から出力される時間よりも後の停止時間の終了時に前記コンピュータを起動させるためのタイマを設定するステップと、
該ステップによりタイマを設定した後に前記コンピュータの停止命令を出力するステップと
を含む付記１０に記載のプログラム。
【０１１９】
（付記１６）
仮想マシンを動作させるコンピュータにおいて、
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付け部と、
該受け付け部により中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止部と、
前記仮想マシンへの操作を継続時間の間待つ継続部と、
前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力部と
を備えるコンピュータ。
【０１２０】
（付記１７）
仮想マシンを動作させるコンピュータにおいて、
コンピュータの停止時間の予定を記憶部に記憶する停止記憶部と、
前記コンピュータの運転中に時計部から出力される時間が前記記憶部に記憶したコンピュータの停止時間である場合に、複数の仮想マシン全てが中断または停止しているか否かを判断する停止判断部と、
該停止判断部により中断または停止していると判断した場合に、前記停止時間の終了時に前記コンピュータを起動させるためのタイマを設定する設定部と、
該設定部によりタイマを設定した後に前記コンピュータの停止命令を出力する停止出力部と
を備えるコンピュータ。
【０１２１】
（付記１８）
コンピュータ上で動作する仮想マシンを制御するための制御方法において、
運転中の仮想マシンに対する中断命令または停止命令を受け付ける受け付けステップと、
該受け付けステップにより中断命令または停止命令を受け付けた場合、前記仮想マシンを中断または停止する停止ステップと、
前記仮想マシンへの操作を継続時間の間待つ継続ステップと、
前記継続時間を経過した後に、前記コンピュータの中断命令または停止命令を出力する出力ステップと
を含む制御方法。
【０１２２】
（付記１９）
コンピュータ上で動作する仮想マシンを制御するため制御方法において、
コンピュータの停止時間の予定を記憶部に記憶する停止記憶ステップと、
前記コンピュータの運転中に時計部から出力される時間が前記記憶部に記憶したコンピュータの停止時間である場合に、複数の仮想マシン全てが中断または停止しているか否かを判断する停止判断ステップと、
該停止判断ステップにより中断または停止していると判断した場合に、前記停止時間の終了時に前記コンピュータを起動させるためのタイマを設定する設定ステップと、
該設定ステップによりタイマを設定した後に前記コンピュータの停止命令を出力する停止出力ステップと
を含む制御方法。
【符号の説明】
【０１２３】
１      物理マシン
１Ａ    可搬型記録媒体
２      ＶＭ
３      パーソナルコンピュータ
１０    ハードウェアリソース
１１    ＣＰＵ
１２    ＲＡＭ
１５    ＨＤ
１６    ＮＩＣ
１７    ＶＭカーネル
１８    時計部
１９    電源制御部
２１、２２、２３  ＶＭ
１５１  設定ファイル
１５２  時間ファイル
１５３  履歴ファイル
１５４  予定ファイル
１７１  受け付け部
１７２  継続部
１７３  停止部
１７４  出力部
１７５  判断部
１７６  解除部
１７７  起動部
１７８  生成部
１７９  抽出部
１８１  タイマ
２１１  ＯＳ
２１２  アプリケーション
１７１０  算出部
１７１１  タイマ設定部
１７１２  変更部
【図１】
2010211615.tif 000003
【図２】
2010211615.tif 000004
【図３】
2010211615.tif 000005
【図４】
2010211615.tif 000006
【図５】
2010211615.tif 000007
【図６】
2010211615.tif 000008
【図７】
2010211615.tif 000009
【図８】
2010211615.tif 000010
【図９】
2010211615.tif 000011
【図１０】
2010211615.tif 000012
【図１１】
2010211615.tif 000013
【図１２】
2010211615.tif 000014
【図１３】
2010211615.tif 000015
【図１４】
2010211615.tif 000016
【図１５】
2010211615.tif 000017
【図１６】
2010211615.tif 000018
【図１７】
2010211615.tif 000019
【図１８】
2010211615.tif 000020
【図１９】
2010211615.tif 000021
【図２０】
2010211615.tif 000022
【図２１】
2010211615.tif 000023
【図２２】
2010211615.tif 000024
【図２３】
2010211615.tif 000025
【図２４】
2010211615.tif 000026
【図２５】
2010211615.tif 000027
【図２６】
2010211615.tif 000028
【図２７】
2010211615.tif 000029
【図２８】
2010211615.tif 000030
【図２９】
2010211615.tif 000031
【図３０】
2010211615.tif 000032
【図３１】
2010211615.tif 000033