(57)【特許請求の範囲】
【請求項１】
仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、
前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、
前記応用プログラムを実行する前記仮想マシンの状態をスナップショットとして保存する手段
を備える仮想計算機システム。
【請求項２】
前記保存されたスナップショットに記録された前記仮想マシンが共通で利用可能な共通記憶領域を前記スナップショットとは別に有する、
請求項１記載の仮想計算機システム。
【請求項３】
前記仮想マシンにはゲストＯＳがインストールされ、前記応用プログラムは前記ゲストＯＳ上にインストールされており、
前記応用プログラム又は前記ゲストＯＳの少なくとも１つが更新された場合は、前記更新された応用プログラム又は前記ゲストＯＳを含む前記仮想マシンの状態を記録したスナップショットを、前記基準スナップショットとして新たに保存する、
請求項１又は２のいずれかに記載の仮想計算機システム。
【請求項４】
前記応用プログラムの実行時に前記応用プログラムに係る障害を検出した場合、前記応用プログラムの実行を一時停止させてスナップショットの取得を依頼する手段
をさらに備える請求項１乃至３いずれか１に記載の仮想計算機システム。
【請求項５】
保存されているスナップショットの総記憶容量を監視し、前記総記憶容量が予め設定された容量を超える又は以上である場合は、前記スナップショットのうち、保存された時期が古いスナップショットから順に削除する手段
をさらに備える請求項１乃至４いずれか１に記載の仮想計算機システム。
【請求項６】
仮想マシンにインストールされたゲストＯＳ上で動作するプリンタ制御プログラムを含む前記仮想マシンの状態を記録したスナップショットを作成するスナップショット作成手段、
前記スナップショット作成手段が作成するスナップショットのうち、前記プリンタ制御プログラムがインストールされ、初期設定終了後に作成されたスナップショットを基準スナップショットとしてスナップショット記憶手段に記憶し管理するスナップショット管理手段、
プリントジョブを処理するために前記プリンタ制御プログラムの実行要求を受け付ける毎に、前記スナップショット管理手段に依頼して、前記基準スナップショットを前記仮想マシンに読み込ませ、前記プリンタ制御プログラムを実行するプログラム実行手段
を備えるプリンタ制御システム。
【請求項７】
前記スナップショット記憶手段に記憶されたスナップショットに記録された前記仮想マシンが共通で利用可能な共通記憶手段
をさらに有する請求項６記載のプリンタ制御システム。
【請求項８】
前記プリンタ制御プログラムの実行時に発生した障害を検出する障害検出手段
をさらに備え、
前記障害検出手段が障害を検出した場合、前記プログラム実行手段は前記プリンタ制御プログラムの実行を一時停止させて前記スナップショット作成手段にスナップショットの作成を依頼する、
請求項６又は７のいずれかに記載のプリンタ制御システム。
【請求項９】
前記スナップショット記憶手段に記憶されているスナップショットの総記憶容量を監視する監視手段
をさらに備え、
前記監視手段は、前記総記憶容量が予め設定された容量を超える又は以上である場合に前記スナップショットのうち、予め定められた条件を満たすスナップショットの削除を前記スナップショット管理手段に依頼する、
請求項６乃至８項いずれか１に記載のプリンタ制御システム。
【請求項１０】
前記予め定められた条件が、前記スナップショット記憶手段に記憶された時期が古いスナップショットから順に選択されるものである、
請求項９記載のプリンタ制御システム。
【請求項１１】
前記予め定められた条件が、係る印刷物について検品が完了したプリントジョブに対応するスナップショットが選択される、
請求項９記載のプリンタ制御システム。
【請求項１２】
コンピュータを、
仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、
前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、
前記応用プログラムを実行する前記仮想マシンの状態をスナップショットとして保存する手段
として機能させるための仮想計算機プログラム。
【請求項１３】
コンピュータを、
仮想マシンにインストールされたゲストＯＳ上で動作するプリンタ制御プログラムを含む前記仮想マシンの状態を記録したスナップショットを作成するスナップショット作成手段、
前記スナップショット作成手段が作成するスナップショットのうち、前記プリンタ制御プログラムがインストールされ、初期設定終了後に作成されたスナップショットを基準スナップショットとしてスナップショット記憶手段に記憶し管理するスナップショット管理手段、
プリントジョブを処理するために前記プリンタ制御プログラムの実行要求を受け付ける毎に、前記スナップショット管理手段に依頼して、前記基準スナップショットを前記仮想マシンに読み込ませ、前記プリンタ制御プログラムを実行するプログラム実行手段
として機能させるためのプリンタ制御プログラム。
【請求項１４】
仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、
前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、
前記応用プログラムの実行要求毎に前記応用プログラムを実行する前記仮想マシンの状態を、複数の運用スナップショットとして前記基準スナップショットを起点に並列状態で保存する手段
を備える仮想計算機システム。
【請求項１５】
コンピュータを、
仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、
前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、
前記応用プログラムの実行要求毎に前記応用プログラムを実行する前記仮想マシンの状態を、複数の運用スナップショットとして前記基準スナップショットを起点に並列状態で保存する手段
として機能させるための仮想計算機プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システム、プリンタ制御システム、仮想計算機プログラム及びプリンタ制御プログラムに関する。
【背景技術】
【０００２】
特許文献１には、ゲストＯＳの性能に対する影響の少ない障害検証手段を備えた仮想計算機システムを提供することを課題とし、仮想マシンは、ゲストＯＳに対する、仮想ＣＰＵの動作状態と仮想メモリの状態と仮想ディスクの状態（仮想マシンの状態）をベーススナップショットとして保存し、以降、定期的に仮想マシンの状態の更新分を差分スナップショットとして保存し、障害発生時には、ディスク装置に保存されたベーススナップショットと差分スナップショットを用いてゲストＯＳに対する、仮想マシンの状態を復元することが開示されている。
【０００３】
特許文献２には、仮想マシンを動作する仮想計算機システムにおいて、冗長化することなく、仮想マシンの異常検出時に、仮想マシンを復旧することを課題とし、ホストＯＳが、指定されたゲストＯＳに割り当てられたＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するスナップショット管理部を設け、スナップショット管理部が、ゲストＯＳの異常検出に応じて、記憶装置に保存したスナップショットを用いて、ゲストＯＳを復旧し、ホストＯＳ及び仮想マシンを冗長化構成にする必要なく、且つゲストＯＳが、異常停止した時点の直前から、ゲストＯＳを復旧できることが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２３５３１７号公報
【特許文献２】特開２０１１−０６００５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、仮想マシンにインストールされた応用プログラムを実行するにあたって、既に作成された基準スナップショットを仮想マシンに適用した後に、その応用プログラムを実行するようにした仮想計算機システム、プリンタ制御システム、仮想計算機プログラム及びプリンタ制御プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、前記応用プログラムを実行する前記仮想マシンの状態をスナップショットとして保存する手段を備える仮想計算機システムである。
【０００７】
請求項２の発明は、前記保存されたスナップショットに記録された前記仮想マシンが共通で利用可能な共通記憶領域を前記スナップショットとは別に有する、請求項１記載の仮想計算機システムである。
【０００８】
請求項３の発明は、前記仮想マシンにはゲストＯＳがインストールされ、前記応用プログラムは前記ゲストＯＳ上にインストールされており、前記応用プログラム又は前記ゲストＯＳの少なくとも１つが更新された場合は、前記更新された応用プログラム又は前記ゲストＯＳを含む前記仮想マシンの状態を記録したスナップショットを、前記基準スナップショットとして新たに保存する、請求項１又は２のいずれかに記載の仮想計算機システムである。
【０００９】
請求項４の発明は、前記応用プログラムの実行時に前記応用プログラムに係る障害を検出した場合、前記応用プログラムの実行を一時停止させてスナップショットの取得を依頼する手段をさらに備える請求項１乃至３いずれか１に記載の仮想計算機システムである。
【００１０】
請求項５の発明は、保存されているスナップショットの総記憶容量を監視し、前記総記憶容量が予め設定された容量を超える又は以上である場合は、前記スナップショットのうち、保存された時期が古いスナップショットから順に削除する手段をさらに備える請求項１乃至４いずれか１に記載の仮想計算機システムである。
【００１１】
請求項６の発明は、仮想マシンにインストールされたゲストＯＳ上で動作するプリンタ制御プログラムを含む前記仮想マシンの状態を記録したスナップショットを作成するスナップショット作成手段、前記スナップショット作成手段が作成するスナップショットのうち、前記プリンタ制御プログラムがインストールされ、初期設定終了後に作成されたスナップショットを基準スナップショットとしてスナップショット記憶手段に記憶し管理するスナップショット管理手段、プリントジョブを処理するために前記プリンタ制御プログラムの実行要求を受け付ける毎に、前記スナップショット管理手段に依頼して、前記基準スナップショットを前記仮想マシンに読み込ませ、前記プリンタ制御プログラムを実行するプログラム実行手段を備えるプリンタ制御システムである。
【００１２】
請求項７の発明は、前記スナップショット記憶手段に記憶されたスナップショットに記録された前記仮想マシンが共通で利用可能な共通記憶手段をさらに有する請求項６記載のプリンタ制御システムである。
【００１３】
請求項８の発明は、前記プリンタ制御プログラムの実行時に発生した障害を検出する障害検出手段をさらに備え、前記障害検出手段が障害を検出した場合、前記プログラム実行手段は前記プリンタ制御プログラムの実行を一時停止させて前記スナップショット作成手段にスナップショットの作成を依頼する、請求項６又は７のいずれかに記載のプリンタ制御システムである。
【００１４】
請求項９の発明は、前記スナップショット記憶手段に記憶されているスナップショットの総記憶容量を監視する監視手段をさらに備え、前記監視手段は、前記総記憶容量が予め設定された容量を超える又は以上である場合に前記スナップショットのうち、予め定められた条件を満たすスナップショットの削除を前記スナップショット管理手段に依頼する、請求項６乃至８項いずれか１に記載のプリンタ制御システムである。
【００１５】
請求項１０の発明は、前記予め定められた条件が、前記スナップショット記憶手段に記憶された時期が古いスナップショットから順に選択されるものである、請求項９記載のプリンタ制御システムである。
【００１６】
請求項１１の発明は、前記予め定められた条件が、係る印刷物について検品が完了したプリントジョブに対応するスナップショットが選択される、請求項９記載のプリンタ制御システムである。
【００１７】
請求項１２の発明は、コンピュータを、仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、前記応用プログラムを実行する前記仮想マシンの状態をスナップショットとして保存する手段として機能させるための仮想計算機プログラムである。
【００１８】
請求項１３の発明は、コンピュータを、仮想マシンにインストールされたゲストＯＳ上で動作するプリンタ制御プログラムを含む前記仮想マシンの状態を記録したスナップショットを作成するスナップショット作成手段、前記スナップショット作成手段が作成するスナップショットのうち、前記プリンタ制御プログラムがインストールされ、初期設定終了後に作成されたスナップショットを基準スナップショットとしてスナップショット記憶手段に記憶し管理するスナップショット管理手段、プリントジョブを処理するために前記プリンタ制御プログラムの実行要求を受け付ける毎に、前記スナップショット管理手段に依頼して、前記基準スナップショットを前記仮想マシンに読み込ませ、前記プリンタ制御プログラムを実行するプログラム実行手段として機能させるためのプリンタ制御プログラムである。
請求項１４の発明は、仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、前記応用プログラムの実行要求毎に前記応用プログラムを実行する前記仮想マシンの状態を、複数の運用スナップショットとして前記基準スナップショットを起点に並列状態で保存する手段を備える仮想計算機システムである。
請求項１５の発明は、コンピュータを、仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存する手段、前記応用プログラムの実行要求を受け付ける毎に、前記基準スナップショットを前記仮想マシンに適用する手段、前記応用プログラムの実行要求毎に前記応用プログラムを実行する前記仮想マシンの状態を、複数の運用スナップショットとして前記基準スナップショットを起点に並列状態で保存する手段として機能させるための仮想計算機プログラムである。
【発明の効果】
【００１９】
請求項１の仮想計算機システムによれば、仮想マシンにインストールされた応用プログラムを実行するにあたって、既に作成された基準スナップショットを仮想マシンに適用した後に、その応用プログラムを実行することができる。
【００２０】
請求項２の仮想計算機システムによれば、仮想マシンが共通で利用可能な共通記憶領域をスナップショットとは別に有することができる。
【００２１】
請求項３の仮想計算機システムによれば、応用プログラム又はゲストＯＳの少なくとも１つが更新された場合は、その更新された応用プログラム又はゲストＯＳを含む仮想マシンの状態を記録したスナップショットを、基準スナップショットとして新たに保存することができる。
【００２２】
請求項４の仮想計算機システムによれば、応用プログラムの実行時に障害を検出した場合、その応用プログラムの実行を一時停止させてスナップショットの取得を依頼することができる。
【００２３】
請求項５の仮想計算機システムによれば、スナップショットの総記憶容量が予め設定された容量を超える又は以上である場合は、スナップショットのうち、保存された時期が古いスナップショットから順に削除することができる。
【００２４】
請求項６のプリンタ制御システムによれば、仮想マシンにインストールされたゲストＯＳ上で動作するプリンタ制御プログラムを実行するにあたって、初期設定終了後に作成された基準スナップショットを仮想マシンに適用した後に、そのプリンタ制御プログラムを実行することができる。
【００２５】
請求項７のプリンタ制御システムによれば、仮想マシンが共通で利用可能な共通記憶領域をスナップショットとは別に有することができる。
【００２６】
請求項８のプリンタ制御システムによれば、障害を検出した場合、プリンタ制御プログラムの実行を一時停止させて、スナップショットの作成を依頼することができる。
【００２７】
請求項９のプリンタ制御システムによれば、スナップショットの総記憶容量が予め設定された容量を超える又は以上である場合は、スナップショットのうち、予め定められた条件を満たすスナップショットを削除することができる。
【００２８】
請求項１０のプリンタ制御システムによれば、スナップショット記憶手段に記憶された時期が古いスナップショットから順に削除することができる。
【００２９】
請求項１１のプリンタ制御システムによれば、係る印刷物について検品が完了したプリントジョブに対応するスナップショットを削除することができる。
【００３０】
請求項１２の仮想計算機プログラムによれば、仮想マシンにインストールされた応用プログラムを実行するにあたって、既に作成された基準スナップショットを仮想マシンに適用した後に、その応用プログラムを実行することができる。
【００３１】
請求項１３のプリンタ制御プログラムによれば、仮想マシンにインストールされたゲストＯＳ上で動作するプリンタ制御プログラムを実行するにあたって、初期設定終了後に作成された基準スナップショットを仮想マシンに適用した後に、そのプリンタ制御プログラムを実行することができる。
請求項１４の仮想計算機システムによれば、仮想マシンにインストールされた応用プログラムを実行するにあたって、既に作成された基準スナップショットを仮想マシンに適用した後に、その応用プログラムを実行することができる。また、仮想マシンの状態を、複数の運用スナップショットとして基準スナップショットを起点に並列状態で保存することができる。
請求項１５の仮想計算機プログラムによれば、仮想マシンにインストールされた応用プログラムを実行するにあたって、既に作成された基準スナップショットを仮想マシンに適用した後に、その応用プログラムを実行することができる。また、仮想マシンの状態を、複数の運用スナップショットとして基準スナップショットを起点に並列状態で保存することができる。
【図面の簡単な説明】
【００３２】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を適用する仮想計算機システムのシステム構成例を示す説明図である。
【図３】本実施の形態による処理例を示すフローチャートである。
【図４】本実施の形態による処理例を示すフローチャートである。
【図５】本実施の形態による処理例を示すフローチャートである。
【図６】本実施の形態による処理例を示す説明図である。
【図７】本実施の形態による処理例を示す説明図である。
【図８】本実施の形態による処理例を示す説明図である。
【図９】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【図１０】前提となる技術例を示す説明図である。
【図１１】前提となる技術例を示す説明図である。
【発明を実施するための形態】
【００３３】
まず、本実施の形態を説明する前に、その前提となる技術について、図１０、図１１の例を用いて説明する。なお、この説明は、本実施の形態の理解を容易にすることを目的とするものである。
仮想化システムと呼ばれる技術があり、これは、一台の物理マシン１０１０（ハードウェア）上で複数のＯＳを動作させる技術である。図１０の例に示すように、物理マシン１０１０上に仮想化ソフトウェア１０２０による仮想マシン（仮想ハードウェアともいわれる）１０３０を構築し、その上にゲストＯＳ１０４０をインストールし、さらにゲストＯＳ１０４０上に応用プログラムであるアプリケーション１０５０をインストールする。図１０の例では、１つの仮想マシン１０３０の例を示しているが、複数の仮想マシン１０３０が仮想化ソフトウェア１０２０上に構築されるのが一般的である。
仮想化ソフトウェア１０２０は、物理マシン１０１０上に、複数のゲストＯＳ１０４０の並列的な同居を可能にするソフトウェアである。つまり、仮想化ソフトウェア１０２０は、ＣＰＵ、メモリ、ＨＤＤ等のハードウェアをソフトウェア的に構築し、ゲストＯＳ１０４０が依って立つハードウェアリソースを仮想マシン１０３０として用意するものである。
アプリケーション１０５０として、例えば、プリンタ制御プログラムがある。
この場合、仮想マシンはそれぞれが隔離されており、いずれかに障害（例えば、クラッシュ等）が発生しても、他の仮想マシン上でのプリンタ制御プログラムはそのまま稼働しており、印刷することができる。
以下に、仮想化システムでプリンタ制御プログラムを動作させる場合の例を説明する。
（１）仮想化システムの運用１０７２として、アプリケーション１０５０を動作させて、プリントジョブを実行する。
（２）障害１０７４が発生したら、直ちに仮想化ソフトウェア１０２０で仮想マシン１０３０のスナップショット１：１０７６を作成する。そして、記憶領域１０６０にスナップ１：１０７８として記憶する。ここで、スナップショットとは、仮想マシンの状態を保存する機能である。
（３）その後、アプリケーション１０５０の再起動、プリントジョブの再送、リブート等を行い、障害のリカバリ１０８０を実施し、そのプリントジョブを再開１０８２する。
（４）アプリケーション１０５０が稼働していない等の空きの時間に、スナップショットを立ち上げ、障害情報取得１０８４が行われたり、スナップショットを採取することが行われる。障害情報取得１０８４の処理は、本情報処理装置が行うほかに、他の情報処理装置が行ってもよい。もちろんのことながら、他の情報処理装置が障害情報取得１０８４の処理を行うことは必須ではない。
【００３４】
スナップショットの作成は、その後の処理を書き込む（空の）ファイルを作成するだけなので、従来の障害情報を採取するのに比べると短時間で済むことになる。
スナップショット作成後の差分ファイルがその後の操作で大きくなるが、必要であればマージ処理を行う。なお、差分ファイルが大きくなるとマージ処理に時間を要することとなる。
障害情報の取得は通常ログの採取を意味するが、そのログで情報不足の場合は仮想マシン１０３０のスナップショットを採取する。
スナップショットを採取することで、障害発生環境を再現する事が可能となる。
【００３５】
また、図１１の例に示すように、定期的又は非定期的にスナップショットを取得しておくことで、過去にさかのぼって障害情報を取得できるようになる。具体的には、以下のような処理を行う。
（１）仮想化システムの運用１１７２として、アプリケーション１０５０を動作させて、プリントジョブを実行する。
（２）定期的又は非定期的にスナップショット１：１１７４を取得し、記憶領域１０６０にスナップ１：１１７６として記憶する。
（３）運用１１７２において、プリントジョブにおける文字化け（本来の文字が印刷されない現象）等の非顕在化障害１１７８が発生することがあり得る。
（４）その後に、定期的又は非定期的にスナップショット２：１１８０を取得し、記憶領域１０６０にスナップ２：１１８２として記憶する。さらに、その後の運用１１８４で、スナップショット３：１１８６を取得し、記憶領域１０６０にスナップ３：１１８８として記憶することが行われ、運用１１９０が続けられる。
（５）印刷物（プリントジョブの成果物）の検品作業において、前述の非顕在化障害１１７８が発生したことがわかった場合に、非顕在化障害１１７８後のスナップショット２：１１８０（記憶領域１０６０内のスナップ２：１１８２）から障害情報取得１１９２が行われたり、スナップショットを採取することが行われる。障害情報取得１１９２の処理は、本情報処理装置が行うほかに、他の情報処理装置が行ってもよい。もちろんのことながら、他の情報処理装置が障害情報取得１１９２の処理を行うことは必須ではない。
この場合、スナップショットが複数存在し、記憶領域１０６０のディスク容量が増大する、そして、多段のスナップショットを形成するためパフォーマンスが低下する。
そのため、古いスナップショットはマージする必要があるが、マージする間は全体の処理を停止する必要があり、スナップショットが多いほど停止期間が長くなることとなる。スナップショット数を減らすと、非顕在化障害１１７８への対応力が低下する。
また、ゲストＯＳ１０４０、アプリケーション１０５０の改変（アップデート等）があった場合、その後、内容が引き継がれるため、途中でシステム設定ファイル等が壊れた又は設定ミスがあった等の場合、何処から戻るべきか容易にはわからない又はスナップショットのマージ後は戻れない事が起こり得る。
【００３６】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という意味を有する記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００３７】
本実施の形態であるスナップショット管理モジュール１００は、仮想マシンにインストールされた応用プログラムを実行するものであって、図１の例に示すように、スナップショット作成モジュール１１０、スナップショット読込モジュール１２０、スナップショット削除モジュール１２５、スナップショットマージモジュール１３０、制御モジュール１４０を有している。
なお、このスナップショット管理モジュール１００は、仮想ソフトウェアに備わった機能の一つで、スナップショットを作成／読み込み（再生）／削除／マージする機能を備えている。なお、スナップショットへの処理（作成／再生等）は、基本的には、ユーザによる指定によって行われる。また、オプションとして、スナップショット管理モジュール１００を、他のソフトウェアが起動、アクセスするようにしてもよい。後者については、図７、図８の例を用いて後述する。
【００３８】
スナップショット作成モジュール１１０は、スナップショット記憶領域１５０と接続されている。スナップショット作成モジュール１１０は、仮想マシンにインストールされた応用プログラムを含むその仮想マシンの状態を記録したスナップショットを基準スナップショットとして、スナップショット記憶領域１５０に保存する。
【００３９】
スナップショット読込モジュール１２０は、スナップショット記憶領域１５０と接続されている。スナップショット読込モジュール１２０は、応用プログラムの実行要求を受け付けるに際し、スナップショット記憶領域１５０内の基準スナップショットを仮想マシンに適用する。そして、その後に、その応用プログラムを実行するようにしてもよい。ここで「基準スナップショットを仮想マシンに適用した後」とは、「基準スナップショットを仮想マシンに読み込ませ、応用プログラムを実行できる状態にすること」である。
また、スナップショット読込モジュール１２０は、所定の処理を行うために、基準スナップショットを仮想マシンに適用するようにしてもよい。
【００４０】
そして、スナップショット作成モジュール１１０は、応用プログラムを実行する仮想マシンの状態をスナップショットとして、スナップショット記憶領域１５０内に保存する。
また、スナップショット作成モジュール１１０は、応用プログラムを実行し、所定の処理の終了後に、その応用プログラムを実行する仮想マシンの状態をスナップショットとして、スナップショット記憶領域１５０内に保存するようにしてもよい。
【００４１】
スナップショット削除モジュール１２５は、スナップショット記憶領域１５０と接続されている。スナップショット削除モジュール１２５は、スナップショット記憶領域１５０内に記憶されているスナップショットを削除する。
スナップショットマージモジュール１３０は、スナップショット記憶領域１５０と接続されている。スナップショットマージモジュール１３０は、スナップショット記憶領域１５０内に記憶されているスナップショットをマージ（結合処理）する。
【００４２】
スナップショット記憶領域１５０は、スナップショット作成モジュール１１０、スナップショット読込モジュール１２０、スナップショット削除モジュール１２５、スナップショットマージモジュール１３０と接続されている。スナップショット読込モジュール１２０、スナップショット削除モジュール１２５、スナップショットマージモジュール１３０からアクセスされ、スナップショット、基準スナップショットを記憶する。つまり、複数スナップショットがそれぞれ参照可能な共有記憶領域を有する。なお、スナップショット記憶領域１５０とは別に、スナップショット記憶領域１５０に保存されたスナップショットに記録された仮想マシンが共通で利用可能な共通記憶領域を有するようにしてもよい。ここで、「スナップショットに記録された仮想マシン」とは、「スナップショット処理が施された仮想マシン（スナップショットに含まれる仮想マシン）」である。なお、共通記憶領域は、主に、後述する図６の例に示す運用６１６、運用６３２等で共通に利用可能である。
【００４３】
制御モジュール１４０は、応用プログラムの実行時に、その応用プログラムに係る障害を検出した場合、その応用プログラムの実行を一時停止させて、スナップショット作成モジュール１１０に対して、スナップショットの取得を依頼する。スナップショット作成モジュール１１０は、その依頼に対応して、応用プログラムの実行を停止し、スナップショットを取得し、スナップショット記憶領域１５０に記憶させる。ここでは、障害を自動検出して、応用プログラムを自動で停止させ、スナップショットを自動取得するようにしてもよい。なお、制御モジュール１４０の本機能を、スナップショット管理モジュール１００内に有する必要はなく、後述する図７の例に示すように、障害検知モジュール７１０として構築してもよい。
また、制御モジュール１４０は、スナップショット記憶領域１５０に保存されているスナップショットの総記憶容量を監視し、その総記憶容量が予め設定された容量を超える又は以上である場合は、スナップショット記憶領域１５０内のスナップショットのうち、保存された時期が古いスナップショットから順に削除するようにしてもよい。つまり、スナップショット記憶領域１５０内の記憶領域確保のため、古いものから消すようにしている。なお、制御モジュール１４０の本機能を、スナップショット管理モジュール１００内に有する必要はなく、後述する図８の例に示すように、スナップショット容量監視モジュール８１０として構築してもよい。
【００４４】
図２は、本実施の形態を適用する仮想計算機システム２００のシステム構成例を示す説明図である。
仮想計算機システム２００は、物理マシン２１０、仮想化ソフトウェア２２０と、その上に構築した複数の仮想化システム（仮想マシン１：２３０−１、ゲストＯＳ１：２４０−１、アプリケーション１：２５０−１、仮想マシンｋ：２３０−ｋ、ゲストＯＳｋ：２４０−ｋ、アプリケーションｋ：２５０−ｋ）、共有記憶領域２６０、スナップショット記憶領域１５０を有している。仮想化ソフトウェア２２０には、スナップショット管理モジュール１００が含まれている。物理マシン２１０は、スナップショット記憶領域１５０、共有記憶領域２６０と接続されている。
つまり、仮想マシン２３０にはゲストＯＳ２４０がインストールされ、アプリケーション２５０はゲストＯＳ２４０上にインストールされている。
スナップショット管理モジュール１００の基準スナップショット作成モジュール１１０は、アプリケーション２５０又はゲストＯＳ２４０の少なくとも１つが更新された場合は、その更新されたアプリケーション２５０又はゲストＯＳ２４０を含む仮想マシン２３０の状態を記録したスナップショットを、基準スナップショットとして、スナップショット記憶領域１５０に新たに保存する。ここでの「更新」として、例えば、いわゆるパッチ処理が該当する。ここでは、基準スナップショットをパッチが当てられた状態に変更するものである。
【００４５】
アプリケーション２５０として、プリンタ制御プログラムの例を説明する。
スナップショット管理モジュール１００（スナップショット作成モジュール１１０）は、仮想マシン２３０にインストールされたゲストＯＳ２４０上で動作するアプリケーション２５０であるプリンタ制御プログラムを含む仮想マシンの状態を記録したスナップショットを作成する。
スナップショット管理モジュール１００（スナップショット作成モジュール１１０）は、前述のように作成したスナップショットのうち、プリンタ制御プログラムがインストールされ、初期設定終了後に作成されたスナップショットを基準スナップショットとしてスナップショット記憶領域１５０に記憶し、管理する。つまり、プリンタ制御プログラムによる処理が行われていない状態（初期設定終了後）におけるスナップショットを基準スナップショットとするものである。
そして、ユーザからの基準スナップショットの適用指示（又はシェルプログラム等からの指示）により、スナップショット管理モジュール１００（スナップショット読込モジュール１２０）は、基準スナップショットを仮想マシン２３０に読み込ませ、ユーザの指示にしたがってプリンタ制御プログラムを実行する。つまり、初期設定終了後の状態で、プリンタ制御プログラムを実行するようにしている。
また、スナップショット管理モジュール１００（制御モジュール１４０）は、応用プログラムを実行する仮想マシン２３０の状態をプリントジョブ毎に記録したジョブスナップショットを作成し、そのスナップショットをスナップショット記憶領域１５０に記憶し、管理するようにしてもよい。ここで、定期的にスナップショットを作成してもよいし、非定期的にスナップショットを作成してもよい。例えば、「定期的に」として、予め定められた期間毎（１日１回等）としてもよいし、プリントジョブ終了毎にとしてもよい。また、「非定期的に」としてユーザ（管理者等）からの指示に応じてとしてもよい。例えば、印刷物の検品によって非顕在化障害が発生していたことがわかった場合等である。
【００４６】
また、スナップショット記憶領域１５０と共有記憶領域２６０は、別個に用意されており、スナップショット記憶領域１５０には、スナップショット（基準スナップショットを含む）を記憶しており、共有記憶領域２６０には、そのスナップショット記憶領域１５０に記憶されたスナップショットに記録された仮想マシン２３０が共通で利用可能な領域が記憶されている。前述したように、共通記憶領域２６０は、主に、後述する図６の例に示す運用６１６、運用６３２等で共通に利用可能である。
また、スナップショット管理モジュール１００（制御モジュール１４０、後述する図８に例示するスナップショット容量監視モジュール８１０を含む）は、スナップショット記憶領域１５０に記憶されているスナップショットの総記憶容量を監視する。そして、スナップショット管理モジュール１００は、総記憶容量が予め設定された容量を超える又は以上である場合に、スナップショット記憶領域１５０内のスナップショットのうち、予め定められた条件を満たすスナップショットの削除を、スナップショット作成モジュール１１０に依頼するようにしてもよい。
ここで、予め定められた条件として、削除対象として、スナップショット記憶領域１５０に記憶された時期が古いスナップショットから順に選択するものであるとしてもよい。また、予め定められた条件として、削除対象として、係る印刷物について検品が完了したプリントジョブに対応するスナップショットを選択するものとしてもよい。
【００４７】
図３は、本実施の形態による処理例を示すフローチャートである。図６、図７に示す例（アプリケーション２５０をプリンタ制御プログラムとした例）を用いて説明する。
なお、以下の場合の処理例としたものである。
（１）アプリケーション２５０の実行は、毎回、初期化設定終了状態から開始する。ゲストＯＳ２４０上において複数種類のアプリケーション２５０の実行ではなく、１つのアプリケーション２５０の運用とする。
（２）アプリケーション２５０運用後にスナップショットを作成する場合は、外部機器（例えば、プリンタ等）と通信していない状態で実施する。さらに、アプリケーション２５０を停止した状態が望ましい。
基準スナップショットを適用するため、初期状態（図６の例では、Ｓｎａｐ０（スナップショット０：６１２））に戻ってプリントを開始することとなる。初期状態ではなく、プリントジョブの途中に戻ってしまうと、外部機器との整合がとれなくなってしまうからである。
（３）運用時に取り込んだリソース等の情報は、別の運用時に使用する必要がある場合がある。これらを各運用で共有するために、従来仮想マシン２３０上にあったものを仮想マシン２３０外の共有記憶領域２６０に配置する。
（４）さらに、スナップショットの容量を減らすために、プリントデータ（入力・中間・最終）やテンポラリファイル等も、仮想マシン２３０外の共有記憶領域２６０に配置するようにしてもよい。
【００４８】
ステップＳ３０２では、ゲストＯＳとそのゲストＯＳ上で動作するアプリケーションをインストールする。図６の例に示すように、仮想計算機システム２００として、ゲストＯＳ２４０と、そのゲストＯＳ２４０上で動作するアプリケーション２５０をインストールし、１つの仮想システムを構成する。
ステップＳ３０４では、インストールしたゲストＯＳとアプリケーションの初期設定を行う。図６の例に示すように、仮想計算機システム２００内のゲストＯＳ２４０とアプリケーション２５０に対して、初期設定６１０を行う。
ステップＳ３０５では、アプリケーションを起動する。
ステップＳ３０６では、スナップショット作成モジュール１１０が、基準スナップショットを作成する。図６の例に示すように、初期設定６１０を行った状態で、スナップショット０：６１２を作成する。そして、スナップショット０：６１２をスナップショット記憶領域１５０に基準スナップショットであるスナップ０：６１４として記憶させる。このステップＳ３０６の処理は、アプリケーション２５０による最初の印刷処理を行う前である。以降、この基準スナップショットを適用して、アプリケーション２５０による印刷処理が行われる。
なお、実行要求を受け付け、スナップショットを再開し、応用プログラムを実行させるために、応用プログラムの他に、別途応用プログラムを起動するシェルプログラム（シェルプログラムと同等の機能を有するプログラム）を用意してもよい。
【００４９】
図４は、本実施の形態による処理例を示すフローチャートである。
ステップＳ４０４では、スナップショット読込モジュール１２０が、基準スナップショットを適用する。
ステップＳ４０６では、アプリケーションを実行する。
ステップＳ４０７では、アプリケーションに対する実行要求を受け付ける。図６の例に示すように、アプリケーション２５０が運用６１６等としての印刷要求を受け付け、処理を開始する。
ステップＳ４０８では、障害検知モジュール７１０が、障害は発生したか否かを判断し、発生した場合はステップＳ４１０へ進み、それ以外の場合はステップＳ４１２へ進む。
図７の例に示すように、アプリケーション２５０に障害７０２が発生した場合は、障害検知モジュール７１０が障害検知７０８し、障害７０２からスナップショット作成の必要性を判断して、必要と判断したならば、スナップショット管理モジュール１００に対してスナップショット取得依頼７１４を行う。
ステップＳ４１０では、スナップショット作成モジュール１１０が、スナップショットを作成する。図７の例に示すように、障害検知モジュール７１０が、スナップショット管理モジュール１００に対してスナップショット取得依頼７１４を行い、障害検知モジュール７１０は、アプリケーション２５０に停止指示７１２を行い、その後、スナップショット管理モジュール１００は、スナップショットを作成する。なお、障害検知モジュール７１０が、アプリケーション２５０に対して停止指示７１２を行い、その後に、スナップショット管理モジュール１００に対してスナップショット取得依頼７１４を行うようにしてもよい。また、アプリケーション２５０と障害検知モジュール７１０の間における通信、障害検知モジュール７１０とスナップショット管理モジュール１００における通信は、仮想化システムにおけるデータ交換機能（例えば、ファイル共有、ネットワークアダプタのホストオンリーアダプタ等の機能）を用いても良い。
ステップＳ４１２では、処理を継続するか否かを判断する。継続する場合（Ｙｅｓ）は、ステップＳ４０７へ戻り、それ以外の場合はステップＳ４１４へ進む。
ステップＳ４１４では、スナップショット作成モジュール１１０が、スナップショットを作成する。そして、処理を終了する（Ｓ４９９）。
【００５０】
なお、図６の例のように、運用６１６、運用６３２の後、それぞれスナップショット１：６１８、スナップショット３：６３４を作成し、スナップショット記憶領域１５０にそれぞれスナップ１：６２０、スナップ３：６３６として記憶するようにしてもよい。また、運用６２２によって非顕在化障害６２４が発生した場合も、同様に、スナップショット２：６２６を作成し、スナップショット記憶領域１５０にスナップ２：６２８として記憶する。その後、スナップショット記憶領域１５０内のスナップ２：６２８を障害情報取得６３０して、仮想計算機システム２００の管理者によって非顕在化障害６２４の原因等の解析が行われる。なお、非顕在化障害６２４は、障害検知モジュール７１０が検知し得るものではなく、印刷物の検品等によって非顕在化障害６２４が発生したことを検知できるものである。
【００５１】
図５は、本実施の形態による処理例を示すフローチャートである。
ステップＳ５０２では、基準スナップショットに対するパッチ処理を行う。図６の例に示すように、スナップショット記憶領域１５０内のスナップ０：６１４に対して、パッチの適用６３８を行う。
ステップＳ５０４では、スナップショット作成モジュール１１０が、スナップショットを作成し、以後、このスナップショットを基準スナップショットとする。図６の例に示すように、スナップショットＮ：６４０を作成して、スナップショット記憶領域１５０内に基準スナップショットであるスナップＮ：６４２として記憶する。
その後は、運用６１６、運用６３２と同様に、運用６４４、運用６５０の後、それぞれスナップショットＮ＋１：６４６、スナップショットＮ＋２：６５２を作成し、スナップショット記憶領域１５０にそれぞれスナップＮ＋１：６４８、スナップＮ＋２：６５４として記憶するようにしてもよい。
【００５２】
図８は、本実施の形態による処理例を示す説明図である。
スナップショット容量監視モジュール８１０の処理について詳述する。
スナップショット記憶領域１５０が、複数のスナップショットを記憶することで、記憶領域を圧迫してしまうことにより、アプリケーション２５０の処理に影響を及ぼしたり、必要な時にスナップショットが作成できないこと等が起こり得る。そのために、これらの事態を未然に防止するための処理について説明する。
図８に示す例は、図２に示す例の仮想化ソフトウェア２２０内にスナップショット容量監視モジュール８１０を加えたものである。
スナップショット容量監視モジュール８１０は、スナップショット記憶領域１５０の容量を監視し、新たにスナップショットを作成する場合に、予め設定されたスナップショット領域の上限値を超える場合には、スナップショット管理モジュール１００に、最も古いスナップショットを削除するように指示する（削除指示８１２）。
【００５３】
また、次のような処理を行ってもよい。
プリントジョブの属性に、そのプリントジョブのライフサイクル値を追加する。ライフサイクル値には、プリント後に、文字化け、カラー状態等の検品が行われ、印刷物の完全性（印刷物に対して明示又は暗黙に要求された条件を満たしていること）が担保されるまでの期間や、その担保される期間が明確でない場合には、次の同じ種類のプリントジョブが出力されるまでの期間（例えば、月に１度の出力等）、又は顧客に納品され検収が届くまでの期間としてもよい。
スナップショットを作成する場合に、前回のスナップショットが作成されてから今回のスナップショットが作成されるまでの間に実行されたプリントジョブＩＤ（本実施の形態において印刷ジョブを一意に特定するための情報、ＩＤ：ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）とライフサイクル値を含むファイルをスナップショットとともにスナップショット記憶領域１５０に記憶させる。その中でライフサイクルが最も長いものの期限が過ぎたならば、そのスナップショットを削除する。
事前に期限（ライフサイクル値）が決定していないものは、例えば、外部（経営情報システム（ＭＩＳ：Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍ）等）から情報を取得して、期限を設定するようにしてもよい。
ただし、スナップショットを保存できる容量の閾値を超えたならば、期限に達していないプリントジョブが残っていても、古いスナップショットから順に削除するようにしてもよい。
【００５４】
図９を参照して、本実施の形態の情報処理装置（物理マシン２１０）のハードウェア構成例について説明する。図９に示す構成は、例えばパーソナルコンピュータ（ＰＣ）等によって構成されるものであり、スキャナ等のデータ読み取り部９１７と、プリンタ等のデータ出力部９１８を備えたハードウェア構成例を示している。
【００５５】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１は、前述の実施の形態において説明した各種のモジュール、すなわち、スナップショット管理モジュール１００、スナップショット作成モジュール１１０、スナップショット読込モジュール１２０、スナップショット削除モジュール１２５、スナップショットマージモジュール１３０、制御モジュール１４０、仮想化ソフトウェア２２０、仮想マシン２３０、ゲストＯＳ２４０、アプリケーション２５０等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【００５６】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはＣＰＵバス等から構成されるホストバス９０４により相互に接続されている。
【００５７】
ホストバス９０４は、ブリッジ９０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９０６に接続されている。
【００５８】
キーボード９０８、マウス等のポインティングデバイス９０９は、操作者により操作される入力デバイスである。ディスプレイ９１０は、液晶表示装置又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）等があり、各種情報をテキストやイメージ情報として表示する。
【００５９】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）９１１は、ハードディスクを内蔵し、ハードディスクを駆動し、ＣＰＵ９０１によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、スナップショット、共通データ、実行要求、プリントジョブ、等が格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【００６０】
ドライブ９１２は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９１３に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース９０７、外部バス９０６、ブリッジ９０５、及びホストバス９０４を介して接続されているＲＡＭ９０３に供給する。リムーバブル記録媒体９１３も、ハードディスクと同様のデータ記録領域として利用可能である。
【００６１】
接続ポート９１４は、外部接続機器９１５を接続するポートであり、ＵＳＢ、ＩＥＥＥ１３９４等の接続部を持つ。接続ポート９１４は、インタフェース９０７、及び外部バス９０６、ブリッジ９０５、ホストバス９０４等を介してＣＰＵ９０１等に接続されている。通信部９１６は、通信回線に接続され、外部とのデータ通信処理を実行する。データ読み取り部９１７は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部９１８は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【００６２】
なお、図９に示す情報処理装置のハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図９に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図９に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）等に組み込まれていてもよい。
【００６３】
また、前述の実施の形態の説明において、予め定められた値との比較において、「以上」、「以下」、「より大きい」、「より小さい（未満）」としたものは、その組み合わせに矛盾が生じない限り、それぞれ「より大きい」、「より小さい（未満）」、「以上」、「以下」としてもよい。
また、スナップショットを作成するタイミングとして、プリントジョブの受信が完了したときに、スナップショットを作成するようにしてもよい。このようにした場合、リカバリ処理として、プリントジョブの再送を促す必要がない。また、プリンタによる印刷前に、スナップショットを作成するようにしてもよい。このようにした場合、リカバリ処理として、印刷前までの処理を繰り返す必要がない。
また、スナップショットを状況に応じて、複数の仮想マシンに適用し、その仮想マシン上で並列的にアプリケーションを処理させるようにしてもよい。例えば、大量の印刷物を出力するプリントジョブを受信した場合、受信後のスナップショットを作成する。そして、プリンタの印刷速度に比べて、印刷用の画像生成の速度が不足する場合（又は不足すると予測される場合）には、複数の仮想マシンを立ち上げて、作成したスナップショットをそれぞれの仮想マシンに適用し、分散的な印刷用の画像生成処理を実現する。
【００６４】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００６５】
１００…スナップショット管理モジュール
１１０…スナップショット作成モジュール
１２０…スナップショット読込モジュール
１２５…スナップショット削除モジュール
１３０…スナップショットマージモジュール
１４０…制御モジュール
１５０…スナップショット記憶領域
２００…仮想計算機システム
２１０…物理マシン
２２０…仮想化ソフトウェア
２３０…仮想マシン
２４０…ゲストＯＳ
２５０…アプリケーション
２６０…共有記憶領域
７１０…障害検知モジュール
８１０…スナップショット容量監視モジュール
【要約】
【課題】仮想マシンにインストールされた応用プログラムを実行するにあたって、既に作成された基準スナップショットを仮想マシンに適用した後に、その応用プログラムを実行するようにした仮想計算機システムを提供する。
【解決手段】仮想計算機システムは、仮想マシンにインストールされた応用プログラムを含む前記仮想マシンの状態を記録したスナップショットを基準スナップショットとして保存し、前記応用プログラムの実行要求を受け付けるに際し、前記基準スナップショットを前記仮想マシンに適用し、前記応用プログラムを実行する前記仮想マシンの状態をスナップショットとして保存する。
【選択図】図１【図１】
0005713138.tif 000002
【図２】
0005713138.tif 000003
【図３】
0005713138.tif 000004
【図４】
0005713138.tif 000005
【図５】
0005713138.tif 000006
【図６】
0005713138.tif 000007
【図７】
0005713138.tif 000008
【図８】
0005713138.tif 000009
【図９】
0005713138.tif 000010
【図１０】
0005713138.tif 000011
【図１１】
0005713138.tif 000012