JPWO2015008377A1 - 状態復元プログラム、装置、及び支援方法 - Google Patents

状態復元プログラム、装置、及び支援方法 Download PDF

Info

Publication number
JPWO2015008377A1
JPWO2015008377A1 JP2015527124A JP2015527124A JPWO2015008377A1 JP WO2015008377 A1 JPWO2015008377 A1 JP WO2015008377A1 JP 2015527124 A JP2015527124 A JP 2015527124A JP 2015527124 A JP2015527124 A JP 2015527124A JP WO2015008377 A1 JPWO2015008377 A1 JP WO2015008377A1
Authority
JP
Japan
Prior art keywords
state
snapshot
procedure
restoration
shortest
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
JP2015527124A
Other languages
English (en)
Other versions
JP5971420B2 (ja
Inventor
敦二 関口
敦二 関口
小高 敏裕
敏裕 小高
智弘 清水
智弘 清水
幸洋 渡辺
幸洋 渡辺
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
Application granted granted Critical
Publication of JP5971420B2 publication Critical patent/JP5971420B2/ja
Publication of JPWO2015008377A1 publication Critical patent/JPWO2015008377A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)

Abstract

復元の高速化を図りながら記憶容量を節約すること。記憶部(1a)は、情報処理装置(3)の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報を記憶する。演算部(1b)は、記憶部(1a)に記憶された情報に基づいて、復元の起点の状態からそれ以外の他の状態へ情報処理装置(3)を復元する最短手順を他の状態毎に算出し、何れの最短手順にも用いられないスナップショットを削除対象と決定する。

Description

本発明は状態復元プログラム、状態復元装置および状態復元支援方法に関する。
現在、種々の装置(コンピュータ、ネットワーク機器およびストレージ装置など)を含む情報処理システムが利用されている。情報処理システムでは、装置が保持するデータのバックアップを取得することがある。バックアップを取得しておけば、各装置をバックアップの取得時点の状態へ復元できる。例えば、システム運用中の定期的なタイミングやシステム環境のリリース作業(ソフトウェアの更新、設定パラメータの更新、扱うデータの更新など)前のタイミングなどにバックアップを取得することが考えられる。
バックアップには種々の方法が考えられている。例えば、スナップショットと呼ばれるデータを定期的に取得することがある。スナップショットは記憶装置内の所定領域のある時点におけるイメージを記録したものである。例えば、コンピュータ、コンピュータ上で動作する仮想マシン、データベースなどの内容をスナップショットにより記録し得る。
例えば、スナップショットの取得と論理ボリュームへの書き込み履歴であるジャーナルの取得とを切替えて、バックアップを行う提案がある。また、スナップショット数が最大数に達した後は、新たなスナップショットを作成する毎に最古のスナップショットを廃棄することも考えられている。
特開2007−80131号公報 特開2007−280323号公報
設定変更(例えば、通信用のパラメータの変更など)用の複数の命令を装置に順次与えることで装置の設定変更を行うことがある。変更を戻したい場合は、各命令と逆の設定変更を行う命令を順次与えることで元の設定を復元し得る。この復元方法とスナップショットによる復元方法とを併用することが考えられる。例えば、ある時点の状態をスナップショットで復元し、その時点から設定変更用の命令を適用して所望の状態を復元し得る。
ところで、スナップショットのデータサイズは比較的大きい。このため、スナップショットの数が増えると記憶装置の容量を圧迫する。スナップショットを削除すれば記憶容量を節約し得る。しかし、削除されたスナップショットを復元に利用できなくなる。すると、ある状態へ復元するまでの所要時間が長くなるおそれがある。理由は次の通りである。
スナップショットによる復元は、所定時間内に終了することが多い。一方、装置の設定変更用(設定を戻す場合も含む)の命令には所要時間が短いものや長いもの(例えば、装置の再起動を伴うもの)など様々である。削除されたスナップショットの代わりに長時間を要する命令(または命令の組)を、ある状態への復元に実行することになると、復元の所要時間が削除前よりも長くなり得る。そこで、復元の所要時間を考慮しながら、削除対象のスナップショットをどのように決定するかが問題となる。
1つの側面では、本発明は、復元の高速化を図りながら記憶容量を節約できる状態復元プログラム、状態復元装置および状態復元支援方法を提供することを目的とする。
1つの態様では、コンピュータによって実行される状態復元プログラムが提供される。この状態復元プログラムは、装置の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報に基づいて、復元の起点の状態からそれ以外の他の状態へ装置を復元する最短手順を他の状態毎に算出し、何れの最短手順にも用いられないスナップショットを削除対象と決定する、処理をコンピュータに実行させる。
また、1つの態様では、状態復元装置が提供される。この状態復元装置は、記憶部と演算部とを有する。記憶部は、装置の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報を記憶する。演算部は、記憶部に記憶された情報に基づいて、復元の起点の状態からそれ以外の他の状態へ装置を復元する最短手順を他の状態毎に算出し、何れの最短手順にも用いられないスナップショットを削除対象と決定する。
また、1つの態様では、状態復元支援方法が提供される。この状態復元支援方法では、コンピュータが、装置の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報に基づいて、復元の起点の状態からそれ以外の他の状態へ装置を復元する最短手順を他の状態毎に算出し、何れの最短手順にも用いられないスナップショットを削除対象と決定する。
1つの側面では、復元の高速化を図りながら記憶容量を節約できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の状態復元装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 第2の実施の形態の状態復元装置のハードウェア例を示す図である。 第2の実施の形態の状態復元装置の機能例を示す図である。 第2の実施の形態の状態記録テーブルの例を示す図である。 第2の実施の形態の手順実行記録テーブルの例を示す図である。 第2の実施の形態のスナップショット記録テーブルの例を示す図である。 第2の実施の形態の手順情報テーブルの例を示す図である。 第2の実施の形態の手順データの例を示す図である。 第2の実施の形態のGUIの例を示す図である。 第2の実施の形態の手順実行の例を示すフローチャートである。 第2の実施の形態の状態復元の例を示すフローチャートである。 第2の実施の形態の状態遷移グラフの例を示す図である。 第2の実施の形態の削除対象の決定例を示すフローチャートである。 第2の実施の形態の削除対象の決定例を示す図である。 第2の実施の形態のGUIの他の例を示す図である。 第3の実施の形態のスナップショット記録テーブルの例を示す図である。 第3の実施の形態のGUIの例を示す図である。 第3の実施の形態の削除対象の決定例を示すフローチャートである。 第3の実施の形態の状態遷移グラフの例(その1)を示す図である。 第3の実施の形態の削除対象の決定例(その1)を示す図である。 第3の実施の形態の状態遷移グラフの例(その2)を示す図である。 第3の実施の形態の削除対象の決定例(その2)を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の状態復元装置を示す図である。状態復元装置1は、記憶装置2に記憶された設定変更用の命令およびスナップショットを用いて情報処理装置3の状態を復元する。状態復元装置1は、記憶部1aおよび演算部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、復元対象の装置の複数の状態の発生順序を示す情報を記憶する。例えば、情報処理装置3は設定変更に伴って、その状態が状態ST1,ST2,ST3,ST4,ST5と順番に遷移している。例えば、記憶部1aは、状態ST1,ST2,ST3,ST4,ST5の当該発生順序を示す情報を記憶する。
ここで、状態遷移図4は当該状態遷移を例示している。状態遷移図4では丸印の内部に状態を示す符号(ST1など)が示されている。丸印を繋ぐ右向き矢印が順方向の遷移を示す。丸印を繋ぐ左向き矢印が逆方向の遷移を示す。各矢印に付された符号(C1など)は、当該矢印に対応する遷移を発生させる命令を示す符号である。
すなわち、順方向の遷移を発生させる命令は、命令C1(状態ST1から状態ST2)、命令C2(状態ST2から状態ST3)、命令C3(状態ST3から状態ST4)、命令C4(状態ST4から状態ST5)である。
一方、逆方向の遷移を発生させる命令は、命令C4’(状態ST5から状態ST4)、命令C3’(状態ST4から状態ST3)、命令C2’(状態ST3から状態ST2)、状態C1’(状態ST2から状態ST1)である。
例えば、これらの各命令は記憶装置2の命令リスト2aに格納されている。ただし、状態復元装置1が命令リスト2aを記憶してもよい。例えば、各命令は、所定のシェルスクリプト、プログラミング言語およびSQLなどのコマンド文で記述される。
記憶部1aは、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間を示す情報を記憶する。例えば、上記各命令の実行に要する時間は次の通りである。命令C1は1である。命令C2は3である。命令C3は1である。命令C4は1である。命令C4’は1である。命令C3’は1である。命令C2’は3である。命令C1’は1である。状態遷移図4では、右向き矢印の上側の数値が状態間の順方向の遷移を発生させる命令の実行に要する時間を示している。また、左向き矢印の下側の数値が状態間の逆方向の遷移を発生させる命令の実行に要する時間を示している。
記憶部1aは、複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間を示す情報を記憶する。例えば、状態ST1ではスナップショット2bが取得されている。状態ST3ではスナップショット2cが取得されている。例えば、スナップショット2bを用いた状態ST1への復元に要する時間は3である。スナップショット2cを用いた状態ST3への復元に要する時間は3である。
状態遷移図4では、スナップショット2b,2cを用いた復元による状態遷移を曲線の矢印で表記している。曲線の矢印の上側の数値は、該当のスナップショットを用いた復元に要する時間を示している。例えば、スナップショット2b,2cは記憶装置2に格納されている。ただし、状態復元装置1がスナップショット2b,2cを記憶してもよい。
演算部1bは、記憶部1aに記憶された情報に基づいて、復元の起点の状態からそれ以外の他の状態へ装置を復元する最短手順を他の状態毎に算出する。例えば、情報処理装置3の復元の起点の状態として、任意の状態の選択を許容し得る。復元の起点の状態を情報処理装置3の現在の状態としてもよい。
例えば、状態ST5を復元の起点の状態とするなら、演算部1bは、状態ST5から、状態ST5よりも前の時点の状態ST1,ST2,ST3,ST4へ情報処理装置3を復元する最短手順を、状態ST1,ST2,ST3,ST4毎に算出する。具体的には次の通りである。なお、以下では、無限に存在する手順のうち同じ状態を2回以上経由しない手順のみを候補として列挙する。
状態ST5から状態ST1への復元手順の候補は次の通りである。(a1)命令C4’,C3’,C2’,C1’を用いる手順(所要時間6)。(a2)スナップショット2cおよび命令C2’,C1’を用いる手順(所要時間7)。(a3)スナップショット2bを用いる手順(所要時間3)。よって、(a3)の手順が状態ST5から状態ST1への最短手順である。
状態ST5から状態ST2への復元手順の候補は次の通りである。(b1)命令C4’,C3’,C2’を用いる手順(所要時間5)。(b2)スナップショット2cおよび命令C2’を用いる手順(所要時間6)。(b3)スナップショット2bおよび命令C1を用いる手順(所要時間4)。よって、(b3)の手順が状態ST5から状態ST2への最短手順である。
状態ST5から状態ST3への復元手順の候補は次の通りである。(c1)命令C4’,C3’を用いる手順(所要時間2)。(c2)スナップショット2cを用いる手順(所要時間3)。(c3)スナップショット2bおよび命令C1,C2を用いる手順(所要時間7)。よって、(c1)の手順が状態ST5から状態ST3への最短手順である。
状態ST5から状態ST4への復元手順の候補は次の通りである。(d1)命令C4’を用いる手順(所要時間1)。(d2)スナップショット2cおよび命令C3を用いる手順(所要時間4)。(d3)スナップショット2bおよび命令C1,C2,C3を用いる手順(所要時間8)。よって、(d1)の手順が状態ST5から状態ST4への最短手順である。
演算部1bは、最短手順の探索をダイクストラ法(Dijkstra's Algorithm)などを用いて行ってもよい。例えば、状態遷移図4は状態をノード、状態間の遷移を示す矢印をエッジとしたグラフで表され得る。演算部1bは、復元の起点の状態ST5から、当該状態ST5より前の時点の各状態に至る最短手順を、当該グラフにダイクストラ法を適用することで算出し得る。
演算部1bは、何れの最短手順にも用いられないスナップショットを削除対象と決定する。復元の起点の状態を状態ST5とした場合の上記最短手順の例において、スナップショット2bは状態ST1,ST2への復元の最短手順に用いられる。一方、スナップショット2cは何れの最短手順にも用いられていない。したがって、演算部1bは、スナップショット2cを削除対象と決定する。その後、演算部1bがスナップショット2cを記憶装置2から削除するように制御してもよい。
状態復元装置1によれば、演算部1bにより、記憶部1aに記憶された情報に基づいて、復元の起点の状態からそれ以外の他の状態へ情報処理装置3を復元する最短手順が他の状態毎に算出される。演算部1bにより、何れの最短手順にも用いられないスナップショットが削除対象として決定される。
これにより、復元の高速化を図りながら記憶容量を節約できる。ここで、スナップショットは、ある時点における情報処理装置3内の所定の単位(例えば、仮想マシンやデータベースなど)について取得されるものである。このため、スナップショットのデータサイズは命令リスト2aのデータサイズに比べて大きい。したがって、スナップショットの数が増えると記憶装置2の容量を圧迫する。スナップショットを削除すれば、記憶容量を節約し得るが、削除されたスナップショットを復元に利用できなくなる。すると、ある状態へ復元するまでの所要時間が長くなるおそれがある。
状態遷移図4の例でいえば、スナップショット2b,2cによる復元は、イメージの適用であるため、所定時間内に終了することが多い。他方、命令C1〜C4,C1’〜C4’には実行の所要時間が比較的短い命令C1,C3,C4,C1’,C3’,C4’や実行の所要時間が比較的長い命令C2,C2’など様々である。仮にスナップショット2bを削除してしまうと、復元の起点の状態ST5から状態ST1や状態ST2への復元を行う際に、最短手順(上記の(a3)および(b3)の手順)を採れなくなる。このように、例えば、最古のスナップショットを削除するといった方法で削除対象を決定してしまうと、復元の所要時間が削除前よりも長くなるおそれがある。
そこで、演算部1bは、各命令や各スナップショットによる各状態への復元の所要時間の情報に基づいて、復元の起点とした状態から他の各状態へ復元する際の最短手順に用いられないスナップショットを削除対象と決定する。復元の高速化に寄与しないスナップショットを保持しておくのは余計だからである。すなわち、最短手順に用いられるスナップショット2bを削除せずに残し、かつ、最短手順に用いられないスナップショット2cを削除できる。これにより、復元の高速化を図りながら記憶容量を節約できる。
なお、演算部1bは、各命令や各スナップショットによる各状態への復元の所要時間を、記憶装置2に記憶された命令リスト2aやスナップショット2b,2cを用いて予め計測し、記憶部1aに格納してもよい。または、各命令や各スナップショットによる各状態への復元の所要時間のユーザによる入力を許容してもよい。また、1つの命令は複数のサブ命令の順列でもよい。例えば、命令C1は複数のサブ命令を順番に実行する命令群でもよい。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、装置群20、状態復元装置100、ストレージ200および端末装置300を含む。装置群20、状態復元装置100、ストレージ200および端末装置300は、ネットワーク10に接続されている。ネットワーク10は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどの広域ネットワークでもよい。装置群20は、サーバ21、ストレージ22およびルータ23を含む。
サーバ21は、VMM(Virtual Machine Monitor)21aを実行し、仮想マシン21bを動作させる物理的なコンピュータである。サーバ21のような物理的なコンピュータを、物理マシンと呼ぶことがある。サーバ21は、仮想マシン21bを複数動作させることができる。
VMM21aは仮想マシンを管理するためのソフトウェアである。VMM21aは、サーバ21のCPUの処理能力やRAMの記憶領域を、演算のリソースとして仮想マシン21bに割り振る。VMM21aは、ハイパーバイザと呼ばれることもある。仮想マシン21bは、サーバ21上で動作する仮想的なコンピュータである。仮想マシン21bでは、OS(Operating System)や所定のアプリケーションなどのソフトウェアを実行できる。以下の説明では、単に「装置」というとき物理マシンおよび仮想マシンの両方を含む。
ストレージ22は、仮想マシン21bで実行されるソフトウェアの処理に用いられる各種のデータを記憶する記憶装置である。ルータ23は、装置群20に含まれる各種の装置を接続して通信を中継する中継装置である。
例えば、第2の実施の形態の情報処理システムでは、データセンタに装置群20を設置し、装置群20によって実現される機能や演算のリソースを外部ユーザに提供する。このようなコンピュータの利用形態をクラウドコンピューティングと呼ぶことがある。装置群20の各装置の設定は、外部ユーザに提供するリソースなどの内容の変化に応じて変わり得る。例えば、装置や仮想マシンの増減に伴って通信用の設定が変更されたり、ソフトウェアの動作環境が変更されたりする。その場合、情報処理システムを管理するユーザにより、当該変更のための更新作業(リリース作業ということもある)が行われる。リリース作業に伴って、装置群20の各装置の状態は変化する。
状態復元装置100は、装置群20に含まれる装置の状態を過去の所定の時点の状態に復元する機能を提供するサーバコンピュータである。状態復元装置100は、装置単位の状態を時間などに対応付けて管理し、装置単位に、ある時点の状態を復元する。ここで、仮想マシン21bはサーバ21上で動作するから、仮想マシン21bの状態をサーバ21の状態と考えることができる。また、仮想マシン21bの状態の変化をサーバ21の状態の変化と考えることができる。
ストレージ200は、装置群20に含まれる装置毎のバックアップデータを記憶する。バックアップデータを取得しておけば、装置群20の全部または一部の装置をバックアップデータが取得された時点の状態へ復元できる。バックアップデータには、サーバ21や仮想マシン21bのスナップショット、ストレージ22やルータ23のコンフィグデータ(例えば、設定内容をテキストで記述したもの)などが含まれる。
例えば、サーバ21のOSや所定のアプリケーションは、サーバ21が有する所定の記憶領域のスナップショットを所定のタイミングで取得してストレージ200に格納する。また、例えば、VMM21aは仮想マシン21bのメモリ/ディスクイメージをスナップショットとして所定のタイミングで取得し、ストレージ200に格納する。所定のタイミングとしては、定期的なタイミングやユーザにより指定されたタイミングが考えられる。
端末装置300は、ユーザによって操作されるクライアントコンピュータである。端末装置300は、ユーザに所定のGUI(Graphical User Interface)を提供する。端末装置300は、当該GUIに対する操作に応じた要求を状態復元装置100に送信する。例えば、端末装置300は、装置群20の装置毎(または装置の集合毎)に復元させたい状態を状態復元装置100に指定し、復元を実行させる。
図3は、第2の実施の形態の状態復元装置のハードウェア例を示す図である。状態復元装置100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットが状態復元装置100のバスに接続されている。サーバ21や端末装置300も状態復元装置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)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。なお、ストレージ200もHDDやSDDなどの複数の記憶装置を備えている。
通信部104は、ネットワーク10を介して他のコンピュータと通信を行えるインタフェースである。通信部104は、有線インタフェースでもよいし、無線インタフェースでもよい。
画像信号処理部105は、プロセッサ101からの命令に従って、状態復元装置100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、状態復元装置100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク13に記録されたプログラムやデータを読み取る駆動装置である。光ディスク13として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、状態復元装置100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置14やリーダライタ装置15を接続できる。メモリ装置14は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置15は、メモリカード16へのデータの書き込み、またはメモリカード16からのデータの読み出しを行う装置である。メモリカード16は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置14またはメモリカード16から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
図4は、第2の実施の形態の状態復元装置の機能例を示す図である。状態復元装置100は、UI(User Interface)部110、状態登録部120、手順実行部130、手順実行結果登録部140、最短手順リスト作成部150、スナップショット削除判定部160および記憶部170を有する。UI部110、状態登録部120、手順実行部130、手順実行結果登録部140、最短手順リスト作成部150およびスナップショット削除判定部160は、プロセッサ101が実行するソフトウェアのモジュールとして実現できる。記憶部170は、RAM102またはHDD103に確保した記憶領域として実現できる。
UI部110は、端末装置300にGUIを提供する。UI部110は、当該GUIに対する操作入力を受け付ける。UI部110は、受け付けた操作入力に応じて、状態復元装置100の各部に処理の実行を指示する。
状態登録部120は、各装置の状態を記録する。各装置の状態は、リリース作業に伴う設定変更に応じて変化し得る。状態登録部120は、ある時点における装置の状態を識別するための情報(例えば、時刻)を生成し、ストレージ200に格納する。また、状態登録部120は、所定のタイミングで、サーバ21にスナップショットを取得させる。
手順実行部130は、設定変更用の手順の実行を制御する。ここで、手順とは、設定変更用の命令の集合である。1つの命令が1つの手順に対応してもよいし、複数の命令が1つの手順(命令群)に対応してもよい。手順実行部130は、ストレージ200からリリース作業に伴う1以上の手順を読み出し、作業対象の装置に順次実行させる。手順実行部130は、状態復元用の手順の実行制御も行う。
手順実行結果登録部140は、手順の実行に応じた装置の状態遷移を記録する。手順実行結果登録部140は、手順に応じた状態遷移を示す情報を装置毎に生成し、ストレージ200に格納する。手順実行結果登録部140は、実行された手順の内容を示す手順データをストレージ200に格納する。
最短手順リスト作成部150は、装置の状態復元を行うための手順(復元手順)を組み合わせて、復元元の状態から復元先の状態へ復元するための所要時間の最も短い復元手順の組(最短手順リスト)を作成する。ここで、復元手順は、手順実行部130により実行された手順および当該手順とは逆の設定を行う手順(切り戻し手順という)を用いた状態復元の手順を含む。また、復元手順はスナップショットを用いた状態復元の手順を含む。
スナップショット削除判定部160は、最短手順リスト作成部150により作成された最短手順リストに基づいて、ストレージ200に格納されたスナップショットのうち、削除対象とするスナップショットを決定する。スナップショット削除判定部160は、削除対象としたスナップショットをストレージ200から削除する。
記憶部170は、状態復元装置100の各部の処理に用いられる各種の情報を記憶する。例えば、記憶部170は、ストレージ200に記憶された各情報のうちの少なくとも一部の複製を記憶し、状態復元装置100の各部に提供する。
ストレージ200は、状態遷移記録DB(DataBase)210、スナップショットDB220および手順DB230を記憶する。状態遷移記録DB210、スナップショットDB220および手順DB230は、ストレージ200が備える記憶装置に確保した記憶領域として実現できる。
状態遷移記録DB210は、状態登録部120により作成された装置の状態を示す情報および手順実行結果登録部140により作成された装置の状態遷移を示す情報を記憶する。スナップショットDB220は、装置毎に取得されたスナップショットおよびスナップショットと各状態との対応関係を示す情報を記憶する。手順DB230は、手順実行部130により実行された手順の手順データを記憶する。なお、状態遷移記録DB210、スナップショットDB220および手順DB230の少なくとも何れかを状態復元装置100に格納してもよい。
図5は、第2の実施の形態の状態記録テーブルの例を示す図である。状態記録テーブル211は、装置毎の状態を記録した情報である。状態記録テーブル211は、状態遷移記録DB210に格納される。状態記録テーブル211は、状態ID(IDentifier)、機器IDおよび時刻の項目を含む。
状態IDの項目には、状態を識別する状態IDが登録される。機器IDの項目には、装置を識別する機器IDが登録される。機器IDが仮想マシンを示す場合、当該機器IDは当該仮想マシンを動作させる物理マシンも識別できる。時刻の項目には、時刻が登録される。ここで、第2の実施の形態では、一例として、装置のある時点の状態を、当該時点を示す時刻で表す。ただし、他の方法で状態を記録してもよい。
例えば、状態記録テーブル211には、状態IDが“ST1”、機器IDが“D010”、時刻が“2012/11/21 14:30:00”という情報が登録される。これは、機器ID“D010”の装置の状態ID“ST1”で示される状態が2012年11月21日14時30分00秒の時点の状態であることを示す。ここで、機器ID“D010”は仮想マシン21bの機器IDである。“D010”のうち“D”の部分はサーバ21を示し、“010”の部分は仮想マシン21bを示す。なお、以下の説明では、ある状態IDの状態を指して、状態ST1のように表記することがある。
図6は、第2の実施の形態の手順実行記録テーブルの例を示す図である。手順実行記録テーブル212は、実行された手順に応じた状態遷移を示す情報である。手順実行記録テーブル212は、状態遷移記録DB210に格納される。手順実行記録テーブル212は、記録ID、手順ID、前の状態ID、後の状態ID、実行機器IDおよび所要時間の項目を含む。
記録IDの項目には、レコードを識別するための記録IDが登録される。手順IDの項目には、手順を識別する手順IDが登録される。前の状態IDの項目には、手順実行前の状態IDが登録される。後の状態IDの項目には、手順実行後の状態IDが登録される。実行機器IDの項目には、手順を実行した装置のIDが登録される。所要時間の項目には、当該手順の実行に要した時間が登録される。ここで、一例として所要時間の単位を分とする(以下、同様)。
例えば、手順実行記録テーブル212には、記録IDが“R1”、手順IDが“OP1”、前の状態IDが“ST1”、後の状態IDが“ST2”、実行機器IDが“D010”、所要時間が“1(分)”という情報が登録される。これは、機器ID“D010”の装置において、状態ST1で、手順ID“OP1”の手順を実行したことで、当該装置の状態が状態ST2に遷移したことを示す。また、当該手順の実行に要した時間が1分であったことを示す。更に、当該レコードは記録ID“R1”で識別されることを示す。なお、以下の説明では、ある手順IDの手順を指して、手順OP1のように表記することがある。
図7は、第2の実施の形態のスナップショット記録テーブルの例を示す図である。スナップショット記録テーブル221は、スナップショットを管理するための情報である。スナップショット記録テーブル221は、スナップショットDB220に格納される。スナップショット記録テーブル221は、スナップショットID、スナップショットパス、機器ID、状態IDおよび所要時間の項目を含む。
スナップショットIDの項目には、スナップショットIDが登録される。スナップショットパスの項目には、スナップショットを示すポインタが登録される。機器IDの項目には、スナップショットが取得された装置の機器IDが登録される。状態IDの項目には、スナップショットが取得された時点の状態に対応する状態IDが登録される。所要時間の項目には、スナップショットを用いて当該状態を復元するための所要時間が登録される。
例えば、スナップショット記録テーブル221には、スナップショットIDが“SS1”、スナップショットパスが“/mnt/snapshot/20121121−001.dat”、機器IDが“D010”、状態IDが“ST1”、所要時間が“4(分)”という情報が登録される。
これは、機器ID“D010”の装置に対して、スナップショットID“SS1”、パス“/mnt/snapshot/20121121−001.dat”で示されるスナップショットが取得されていることを示す。また、当該スナップショットが当該装置の状態ST1に対応する記録であること、当該スナップショットによる状態復元に要する時間が4分であることを示す。なお、以下の説明では、あるスナップショットIDのスナップショットを指して、スナップショットSS1のように表記することがある。
図8は、第2の実施の形態の手順情報テーブルの例を示す図である。手順情報テーブル231は、手順データを管理するための情報である。手順情報テーブル231は、手順DB230に格納される。手順情報テーブル231は、手順ID、手順、切り戻し手順IDおよび所要時間の項目を含む。
手順IDの項目には、手順IDが登録される。手順の項目には、手順データが登録される。切り戻し手順IDの項目には、当該手順に対応する切り戻し手順の手順IDが登録される。所要時間の項目には、当該手順の実行に要する時間が登録される。
例えば、手順情報テーブル231には、手順IDが“OP1”、手順が“editHostsFile.sh”、切り戻し手順IDが“OP2”、所要時間が“1(分)”という情報が登録されている。これは、“editHostsFile.sh”というファイル名で示される手順の手順IDが“OP1”であり、手順OP1による設定を元に戻すための切り戻し手順が手順OP2であることを示す。また、手順OP1を実行するための所要時間が1分であることを示す。
図9は、第2の実施の形態の手順データの例を示す図である。手順データf1,f2では、シェルスクリプトで命令を記述する場合を例示している。手順データf1は、“hosts”ファイルに、“x.x.x.x newhost”のレコードを追加する手順を例示している。手順データf1では、cpコマンドにより変更前の“hosts”ファイルを“etc−hosts.bak”というファイル名で複製する。その後、echoコマンドにより上記レコードを追加する。すなわち、手順データf1は2つの命令を含む。
手順データf2は、cpコマンドにより“etc−hosts.bak”ファイルの内容を、“hosts”ファイルに上書きすることで、“hosts”ファイルを変更前の状態に復元する手順を例示している。当該手順は、手順データf1で示される手順に対する切り戻し手順である。手順データf1は1つの命令を含んでいる。なお、手順データf1,f2はシェルスクリプトの形式に限らず、種々の形式(例えば、所定のプログラミング言語で記述されたプログラムなど)を利用し得る。
図10は、第2の実施の形態のGUIの例を示す図である。GUI180は、ユーザによる状態復元のための操作入力を支援するUIである。GUI180は、UI部110により、ストレージ200に記憶された情報に基づいて生成され、端末装置300に提供される。GUI180は、状態遷移図181、凡例182、所要時間表示フォーム183、選択状態表示フォーム184、キャンセルボタン185および復元ボタン186を含む。
状態遷移図181は、手順情報テーブル231、手順実行記録テーブル212およびスナップショット記録テーブル221に基づいて、機器ID“D010”の装置の状態遷移を画像により図示したものである。凡例182は、状態遷移図181で描画されているシンボルの説明が表示される。状態遷移図181では、凡例182で示される凡例に従って、各状態が図示される。
例えば、1つの丸印が1つの状態を示す。四角形で囲われた丸印は、スナップショットが取得されている状態を示す。他の丸印よりも濃い色で表示される丸印は、当該装置の現在の状態を示す。他の丸印よりも太い線で描画された丸印は、ユーザにより選択中の状態(復元先の候補とする状態)を示す。例えば、ユーザは端末装置300が備える入力デバイスを用いてポインタP1を操作し、状態遷移図181に表示された何れかの丸印を選択することで、復元先の候補とする状態を選択できる。
所要時間表示フォーム183は、現在の状態から、選択中の状態へ復元するための目安となるおおよその時間を表示するフォームである。なお、後述するように、所要時間表示フォーム183には、最短の所要時間を表示してもよい。
選択状態表示フォーム184は、選択中の状態を表示するフォームである。例えば、状態ST2は、状態遷移図181では“2”という番号に対応付けて表示されている。当該状態に対応する丸印が選択されると、選択状態表示フォーム184には、“2”の状態が選択されていることが表示される。更に、選択状態表示フォーム184の下部には、選択中の状態に関する詳細の情報も表示されている。例えば、状態ST2は手順OP1の実行後の状態であるから、その旨が表示される。また、状態ST2は手順OP3の実行前の状態であるから、その旨が表示される。
キャンセルボタン185は、GUI180の表示を終了するためのボタンである。復元ボタン186は、選択中の状態への復元を状態復元装置100へ指示するためのボタンである。例えば、ユーザは端末装置300が備える入力デバイスを用いてポインタP1を操作し、キャンセルボタン185または復元ボタン186の押下操作を行える。端末装置300は、押下操作されたボタンに応じた指示を状態復元装置100に送信する。
図11は、第2の実施の形態の手順実行の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。なお、以下の説明では、リリース作業を行う対象として仮想マシン21bを例示する。ただし、他の装置についてリリース作業を行う場合も同様の手順を適用できる。
(S11)UI部110は、仮想マシン21bに対するリリース作業の開始指示を受け付ける。例えば、ユーザは端末装置300を操作して、当該リリース作業の開始指示を状態復元装置100に入力できる。UI部110は、状態復元装置100の各部に以降の処理を実行させる。まず、状態登録部120は、状態記録テーブル211に作業開始時の状態を示す情報(現時刻)を記録する。作業開始時の状態は、状態記録テーブル211の例では状態ST1に相当する。状態登録部120は、状態を示す変数Saにサーバ21の当該状態の状態ID(例えば、“ST1”)を代入する。
(S12)状態登録部120は、仮想マシン21bのスナップショットを取得するか否かを判定する。スナップショットを取得する場合、処理をステップS13に進める。スナップショットを取得しない場合、処理をステップS14に進める。スナップショットは、前述の通り、定期的なタイミングやユーザにより指定されたタイミングで取得される。例えば、状態登録部120は、一定時間が経過する毎に、または所定数の手順を実行する毎に、スナップショットを取得すると判定してもよい。それ以外の場合はスナップショットを取得しないと判定する。
(S13)状態登録部120は、仮想マシン21bのスナップショットの取得をVMM21aに指示する。VMM21aは仮想マシン21bのスナップショットを取得し、ストレージ200に格納する。サーバ21はスナップショットを取得した旨を状態復元装置100に通知する。状態登録部120は、新たに作成されたスナップショットにスナップショットIDを付与する。状態登録部120は、スナップショットIDとスナップショットのパスとを、変数Saで示される状態に対応付けてスナップショット記録テーブル221に登録する。なお、スナップショットによる復元の所要時間はおおよそ一定と考えられるので、所定の値または過去の実績から予測される値を登録する(スナップショット記録テーブル221の例では4分)。また、機器IDとして仮想マシン21bの機器ID(例えば、“D010”)を登録する。
(S14)手順実行部130は、作業指示を受け付ける。例えば、ユーザは端末装置300を操作して、新たなシェルスクリプトのファイル(例えば、editHostsFile.sh)を入力することで作業の続行を状態復元装置100に入力できる。または、ユーザは、端末装置300を操作して、作業終了(例えば、quit)を状態復元装置100に指示することもできる。手順実行部130は、UI部110を介して当該指示を受け付ける。
(S15)手順実行部130は、作業終了の指示を受け付けたか否かを判定する。作業終了の指示を受け付けた場合、処理を終了する。作業終了の指示ではなく、何れかの手順の入力を受け付けた場合、処理をステップS16に進める。
(S16)手順実行部130は、入力された手順を仮想マシン21bに実行させる。手順実行部130は、当該手順の実行時間を計測し、記憶部170に記録する。
(S17)状態登録部120は、手順の実行が完了すると、現在の状態を示す情報(現時刻)を状態記録テーブル211に記録する。例えば、状態ST1の次の状態であれば、状態ST2が新たに記録される。状態登録部120は、状態を示す変数Sbに現在の状態の状態IDを代入する。
(S18)手順実行結果登録部140は、手順の実行結果を記録する。具体的には、変数Saの値を前の状態ID、変数Sbの値を後の状態ID、仮想マシン21bのIDを実行機器IDとし、実行した手順の手順IDに対応付けて手順実行記録テーブル212に登録する。また、当該レコードに記録IDを付与する。所要時間として、ステップS16で計測した時間を登録する。ここで、次のように手順IDを求める。まず、手順情報テーブル231を参照して入力された手順と同名(例えば、editHostsFile.sh)の手順が登録済かを検索する。登録済ならその手順IDを抽出して今回の登録に用いる。未登録であれば、手順IDを新たに付与して手順情報テーブル231に登録する(所要時間をステップS16で計測した時間とする)。そして、新たに付与した手順IDを手順実行記録テーブル212の登録に用いる。このとき、切り戻し手順IDにはNULL値(切り戻し手順なし)を登録する。ただし、切り戻し手順IDおよび切り戻し手順を記述した手順データをユーザに入力させてもよい。入力があれば、手順実行結果登録部140は、入力された切り戻し手順IDおよび切り戻し手順の手順データを手順情報テーブル231に登録する。
(S19)状態登録部120は、状態を示す変数Sbの値を、変数Saに代入する。そして、処理をステップS12に進める。
このように、順次手順を実行することで、サーバ21などに対するリリース作業が行われる。なお、上記の説明では、ユーザによる手順の指定を順次受け付けるものとしたが、このような方法に限られない。例えば、リリース作業として実行する複数の手順とその順番とを予めスケジューリングしておき、当該スケジューリングされた内容に沿って、順次手順を実行してもよい。
また、ステップS12では、手順実行部130は、スナップショットを取得するか否かをユーザに確認してもよい。例えば、手順実行部130は、ユーザによりスナップショットを取得する旨の入力があればスナップショットを取得すると判定する。他方、スナップショットを取得しない旨の入力があればスナップショットを取得しないと判定する。
更に、手順情報テーブル231に登録された手順IDに対する切り戻し手順IDがステップS18の段階で未登録であったとしても、当該切り戻し手順IDのユーザによる事後登録を許容する。ステップS18または事後的に切り戻し用の手順データが入力された場合、前述のように、手順実行結果登録部140は、当該手順データを手順情報テーブル231に記録する。そして、手順実行部130は当該手順データを用いてテスト環境などで予め切り戻し手順の所要時間を実測しておく。手順実行結果登録部140は、計測された切り戻し手順の所要時間を手順情報テーブル231に登録する。ただし、切り戻し手順の所要時間を、対応する順方向の手順の所要時間と同じ時間と見積もって手順情報テーブル231に登録してもよい。
次に、状態復元の方法を例示する。状態復元は任意のタイミングで行うことができる。
図12は、第2の実施の形態の状態復元の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。以下の説明では状態復元を行う対象として仮想マシン21bを例示する。ただし、他の装置について状態復元を行う場合も同様の手順を適用できる。
(S21)UI部110は、仮想マシン21bについて現在の状態から指定状態への復元指示を受け付ける。例えば、ユーザは、GUI180を用いて復元先の状態を指定し、当該状態への復元指示を状態復元装置100に入力できる。GUI180以外の入力手段(例えばCLI(Command Line Interface))を用いてもよい。UI部110は、状態復元装置100の各部に以降の処理を実行させる。
(S22)最短手順リスト作成部150は、仮想マシン21bの現在の状態の状態IDを変数Sc(以下、変数Scなどで示される状態を指すときに状態Scなどと表記することがある)に代入する。また、変数Stに指定状態の状態IDを代入する。更に、各状態をノード(node)とし各状態間の遷移をエッジ(edge)とした状態遷移グラフGを作成する。エッジは手順データを用いた復元手順またはスナップショットを用いた復元手順に相当する。エッジの長さは、各復元手順の所要時間に相当する。例えば、状態遷移グラフGは、各手順データの実行の所要時間またはスナップショットによる復元の所要時間で各エッジを重み付けした隣接行列で表すことができる。
(S23)最短手順リスト作成部150は、状態遷移グラフGおよび変数Sc,Stを変数とする最短経路探索用の関数f(G,Sc,St)を用いて状態Scから状態Stへ至る最短手順リストp(Sc,St)を求める。最短手順リストpには、スナップショットを用いた復元手順も含まれ得る。例えば、関数fはダイクストラ法を用いて、状態遷移グラフGのうち、状態Scから状態Stへ至る最短手順リストpを求める関数である。ダイクストラ法は、グラフ理論において最短経路問題を解くために用いられるアルゴリズムである。最短手順リスト作成部150は、最短手順リストpを手順実行部130に提供する。
(S24)手順実行部130は、最短手順リストpで指示される復元手順を、サーバ21(および仮想マシン21b)により順番に実行させることで、仮想マシン21bの状態を指定された状態Stへ復元する。手順実行部130は、スナップショットを用いた復元を行う場合には、スナップショットを指定した復元をVMM21aに指示する。手順実行部130は、シェルスクリプトなどを用いた復元を行う場合には、シェルスクリプトなどを指定した復元を仮想マシン21bに指示する。
(S25)状態登録部120は、サーバ21の現在の状態を復元後の状態Stとする。
このように、手順実行部130は最短の復元手順を用いて装置の状態を復元する。このため、復元を高速化できる。次に最短手順の算出の具体例を説明する。
図13は、第2の実施の形態の状態遷移グラフの例を示す図である。最短手順リスト作成部150は、手順実行記録テーブル212、スナップショット記録テーブル221および手順情報テーブル231に基づいて、状態遷移グラフG1を生成する。状態遷移グラフG1は、仮想マシン21bの状態ST1,ST2,ST3,ST4,ST5,ST7,ST8をノードとし、状態間の遷移をエッジとした有向グラフである。状態遷移グラフG1の各エッジの上部の数値は、各エッジに対応する復元手順の所要時間を示している。
最短手順リスト作成部150は、手順実行記録テーブル212の仮想マシン21bに関するレコード毎の、前の状態ID、後の状態IDおよび所要時間によりエッジを作成する。ここで、状態ST(i)(iは1以上の整数)から状態ST(i+1)へ遷移させる復元手順を復元手順aiとする。例えば、状態ST1から状態ST2へ遷移させる復元手順は復元手順a1(これは、手順OP1に相当する)である。
このとき、復元手順aiに対して、手順情報テーブル231に切り戻し手順IDが登録されていれば、切り戻し手順に相当する逆方向のエッジを作成する。復元手順aiに対する切り戻し手順が存在する場合、当該切り戻し手順を復元手順ai’とする。例えば、状態ST2から状態ST1へ遷移させる復元手順(復元手順a1に対する切り戻し手順)は、復元手順a1’(これは、手順OP2に相当する)である。
ここで、前の状態IDから後の状態IDへ向かう矢印で示されるエッジは順方向の状態遷移を示している。後の状態IDから前の状態IDへ向かう矢印で示されるエッジは逆方向の状態遷移を示している。また、状態遷移グラフG1では、説明を簡単にするために、順方向および逆方向の状態遷移とも同じ所要時間となる場合を例示している。これは一例であり、順方向および逆方向の状態遷移の所要時間は異なっていてもよい。また、状態遷移グラフG1の例では順方向の全てのエッジに対して逆方向のエッジが存在しているが、順方向のエッジに対して逆方向のエッジが存在しない場合もあり得る。
一方、スナップショットを用いた復元は、現在の状態Scからスナップショットが取得された状態Sssに復元することに対応する。このため、最短手順リスト作成部150は、状態Scから状態Sssへ遷移するエッジを作成する。スナップショット記録テーブル221の例では、スナップショットSS1は状態ST1に対応する。よって、状態ST8から状態ST1へ遷移するエッジを作成する。スナップショットSS1を用いた復元手順をass1とする。スナップショットSS2は状態ST4に対応する。よって、状態ST8から状態ST1へ遷移するエッジを作成する。スナップショットSS2を用いた復元手順をass2とする。スナップショットSS3は状態ST6に対応する。よって、状態ST8から状態ST1へ遷移するエッジを作成する。スナップショットSS3を用いた復元手順をass3とする。
最短手順リスト作成部150は、状態遷移グラフG1に基づいて、現在の状態Scから指定状態Stに至る最短手順リストp(Sc,St)を求める。例えば、現在の状態Scが状態ST8、指定状態Stが状態ST2であれば、状態ST8,ST1,ST2の順に経由する経路が最短(所要時間5分)である。経路は他にも、状態ST8,ST7,・・・,ST2と順番に戻る経路(所要時間6.4分)や、状態ST8,ST4,ST3,ST2と戻る経路(所要時間10分)などがあるが、最短のものは、上記所要時間5分のものである。この経路に対応する復元手順の組を最短手順リストpとする。
具体的には、状態ST8から状態ST1への復元手順は、ass1である。状態ST1から状態ST2への復元手順はa1である。よって、最短手順リストpは[ass1,a1]となる。なお、ある状態から他の状態への経路として、スナップショットを用いる復元手順と、スナップショットを用いない復元手順との両方が存在し、両方の復元手順の所要時間が同じである場合もある。この場合、最短手順リスト作成部150は、スナップショットを用いない復元手順を優先して選択して最短手順リストpを作成する。余計なスナップショットはできるだけ削除対象とした方が、記憶容量を節約し得るからである。
なお、最短手順リストpの括弧記号内の記載順序は、復元手順の実行順序も表している。左側に記載される復元手順ほど先に実行され、右側に記載される復元手順ほど後に実行されることになる。すなわち、手順実行部130は、まず、VMM21aにスナップショットSS1による復元(復元手順ass1)を実行させる。次に、仮想マシン21bに手順OP1による復元(復元手順a1)を実行させる。これにより、仮想マシン21bの状態は、状態ST8から状態ST2に復元される。
次に、スナップショットの削除対象の決定方法を説明する。以下に示す処理は、例えば次に示す(1)〜(5)の何れかのタイミングで実行され得る。(1)定期的なタイミング(例えば、日次、週次、月次など)。(2)スナップショット取得後のタイミング(図11のステップS13の直後)。(3)手順実行後のタイミング(図11のステップS19の直後)。(4)状態復元の実行後のタイミング(図12のステップS25の直後)。(5)ユーザにより指定されたタイミング(UI部110がユーザによる指示を受けて、状態復元装置100の各部に削除対象の決定を行わせる)。(2)〜(4)の場合は、作業対象または状態復元対象の装置に対してスナップショットの削除対象の決定が行われる。(1)および(5)の場合は、スケジュールまたはユーザにより、指定された装置に対して当該削除対象の決定が行われる。
図14は、第2の実施の形態の削除対象の決定例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。以下では、仮想マシン21bのスナップショットに対する処理を想定する。ただし、他の装置に対するスナップショットの削除対象を決定する場合も同様の手順を適用できる。
(S31)最短手順リスト作成部150は、スナップショットDB220を参照して、格納されている仮想マシン21bのスナップショットの数が1よりも大きいか否かを判定する。スナップショットの数が1よりも大きい場合、処理をステップS32に進める。スナップショットの数が1以下の場合、処理を終了する。
(S32)最短手順リスト作成部150は、仮想マシン21bの現在の状態の状態IDを変数Scに代入する。また、現在の状態Scを除く仮想マシン21bの全ての状態の状態IDの集合を状態集合{S}とする。仮想マシン21bの状態は、状態記録テーブル211から把握できる。状態記録テーブル211の例において、現在の状態を状態ST8とすれば、状態集合{S}={ST1,ST2,ST3,ST4,ST5,ST6,ST7}である。
(S33)最短手順リスト作成部150は、集合{S}の要素Siを1つ選択する。以下に示すステップS34の処理を実行済の要素は選択の候補とならない。
(S34)最短手順リスト作成部150は、状態Scから状態Siまでの最短手順リストp(Sc,Si)を最短手順リストの集合{p}に追加する。最短手順リストp(Sc,Si)の算出方法は、図12,13で例示した通りである。
(S35)最短手順リスト作成部150は、集合{S}の全要素を処理済であるか(全要素について最短手順リストpを取得済であるか)否かを判定する。全要素を処理済である場合、処理をステップS36に進める。未処理の要素がある場合、処理をステップS33に進める。
(S36)スナップショット削除判定部160は、仮想マシン21bに関して、最新のスナップショットを除く全スナップショットの集合を集合{SS}とする。例えば、スナップショットSS1,SS2,SS3のうち、最新のスナップショットはスナップショットSS3である。したがって、集合{SS}={SS1,SS2}である。スナップショット削除判定部160は、集合{SS}の要素SSiを1つ選択する。以下に示すステップS37(判定によってはステップS38)の処理を実行済の要素は選択の候補とならない。
(S37)スナップショット削除判定部160は、スナップショットSSiを用いた復元手順assiが最短手順リストの集合{p}に含まれているか否かを判定する。含まれていない場合、処理をステップS38に進める。含まれている場合、処理をステップS39に進める。
(S38)スナップショット削除判定部160は、スナップショットの削除対象リスト{dss}にスナップショットSSiを追加する。
(S39)スナップショット削除判定部160は、集合{SS}の全要素を処理済であるか否かを判定する。全要素を処理済である場合、処理をステップS40に進める。未処理の要素がある場合、処理をステップS36に進める。
(S40)スナップショット削除判定部160は、削除対象リスト{dss}に含まれるスナップショットの記録をスナップショット記録テーブル221から削除する。スナップショット削除判定部160は、削除対象リスト{dss}に含まれるスナップショットのデータの削除をVMM21aに指示する。
なお、ステップS31の判定を行うのは、最新のスナップショットを残しておくためである。次のスナップショット取得までの間に、手順情報テーブル231に切り戻し手順の登録のない手順が実行される可能性がある。その場合でも、最新のスナップショットを残しておくことで、当該スナップショットにより状態を復元できるようにする。ステップS36〜S38で最新のスナップショットを除いて処理を行うのも同じ理由である。
ただし、ステップS31の判定を、「スナップショットが1以上あるか」の判定としてもよい。この場合、ステップS36〜S38の処理で最新のスナップショットも含めて削除対象を決定する。
また、ステップS32では、変数Scに現在の状態の状態IDを代入するものとしたが、現在よりも前の状態の状態IDを変数Scに代入してもよい。例えば、最短手順リスト作成部150は、ユーザによる任意の時点の状態IDの入力を許容してもよい。その場合、集合{S}を変数Scに入力された状態の時点よりも前の時点の状態の集合とする。ステップS36において、集合{SS}の要素となるスナップショットも、当該変数Scに入力された状態の時点よりも前の時点で取得されたスナップショットとする。このとき当該時点よりも前の時点で取得されたスナップショットのうち、最新のものは集合{SS}に含まれない。このようにすれば、ユーザにより指定された時点までにおいて、スナップショットを整理できる。例えば、過去のある時点までに取得されたスナップショットを整理したい場合に有用である。
図15は、第2の実施の形態の削除対象の決定例を示す図である。テーブル171は、手順実行記録テーブル212、スナップショット記録テーブル221および手順情報テーブル231に基づいて得られる集合{S},{p},{dss}を例示している。スナップショット削除判定部160は、最短手順リスト作成部150により作成された集合{p}の情報に基づいて、集合{dss}の要素を決定する。
具体的には、最短手順リスト作成部150は、各状態に対する集合{p}の要素として、次の最短手順リストを作成する。状態ST1に対してp=[ass1]。状態ST2に対してp=[ass1,a1]。状態ST3に対してp=[a7’,a6’,a5’,a4’,a3’]。状態ST4に対してp=[a7’,a6’,a5’,a4’]。状態ST5に対してp=[a7’,a6’,a5’]。状態ST6に対してp=[a7’,a6’]。状態ST7に対してp=[a7’]。
そして、集合SS={SS1,SS2}の要素のうち、集合{p}の何れの要素にも用いられない要素は、スナップショットSS2である(スナップショットSS1は、復元手順ass1に用いられている)。したがって、スナップショット削除判定部160は、削除対象リスト{dss}={ass2}とする。
スナップショット削除判定部160は、削除対象リスト{dss}に基づいて、スナップショットSS2の記録をスナップショット記録テーブル221から削除する。また、スナップショット削除判定部160は、スナップショットSS2のデータの削除をVMM21aに指示する。VMM21aは当該指示に従って、スナップショットDB220に格納されたスナップショットSS2を削除する。
なお、図13で例示したように、仮想マシン21bの状態を過去の状態(例えば、状態ST2)に復元すると、当該状態から既存の状態(例えば、状態ST3)とは異なる新たな状態へと遷移し得る。状態復元装置100は、このように1つの状態から複数の状態への遷移を記録し得る。
図16は、第2の実施の形態のGUIの他の例を示す図である。GUI180aは、GUI180に代えて、UI部110により生成され、端末装置300に提供される。GUI180aは、状態遷移図181aを表示する点がGUI180と異なる。状態遷移図181aでは、状態ST2から状態ST3,ST9,ST12の3つの状態に遷移が分岐している。このように、1つの状態から複数の状態へ遷移する場合にも、上記と同様に、復元先の状態を指定できる。
この場合も、最短手順リスト作成部150は、図12,13で例示した方法と同様にして最短手順リストを算出できる。更に、手順実行部130は、当該最短手順リストに含まれる復元手順をサーバ21などに順次実行させることで、最短の所要時間で状態復元を行える。
また、最短手順リスト作成部150は、図14,15で例示した方法と同様にして、現在の状態から他の状態への最短手順リストの集合{p}を算出できる。更に、スナップショット削除判定部160は、当該集合{p}の要素に含まれないスナップショットを削除対象と決定することができる。
以上で説明したように、状態復元装置100によれば、復元の高速化を図りながらスナップショットを格納するための記憶容量(第2の実施の形態の例ではストレージ200の記憶容量)を節約できる。また、記憶容量を効率的に利用できるように、状態復元機能を支援できる。
ここで、リリース作業において、ユーザは誤った手順をサーバ21や仮想マシン21bなどに実行させてしまうことがある。この場合、復元作業や再度リリース作業を行うことになり、リリース作業に時間がかかり得る。リリース作業の手順を予め作成しておく場合も同様である。例えば、作成者はテスト環境で試行錯誤しながら、手順を作成することがある。試行錯誤において、試作した手順により望まない結果が生じると、テスト環境の構築などからやり直すこともある。このため、システムの状態を迅速に戻したいという要求がある。特に、近年では市場の変化も速く、これまで以上に開発・運用サイクルの高速化が求められている。
この点、前述のように、リリース作業に伴う手順に対して切り戻し手順を用意することで、システムの状態を設定変更前の状態に復元し得る。ところが、手順の所要時間は、手順(および切り戻し手順)毎に千差万別である。例えば、簡単な設定ファイルの編集では数秒から数分程度(例えば、30秒など)で終わるものもある。一方、大規模なミドルウェアのインストールやOSの更新などでは数分から数時間(例えば、60分など)かかるものもある。
また、簡単な切り戻し手順がない場合もある。例えば、HDDやSSDなどの記憶装置のフォーマットやOSのインストールからやり直すような場合である。更に、切り戻し手順が存在しない場合もある。このため、切り戻し手順などを順次実行して状態を復元する際、場合によっては膨大な時間がかかることがある。
この点、スナップショットを利用することが考えられる。スナップショットの取得および復元は、手順による復元に比べて、ある程度一定時間で行えるという利点があるからである。スナップショットを利用することで、切り戻し手順などを順次実行して状態を復元するよりも、復元先の状態を高速に復元できる可能性もある。例えば、複数の手順データを順次実行するとき、その累積の実行時間よりもスナップショットからの復元の方が早いこともある。
ところが、スナップショットを用いる場合、スナップショットのデータを記憶するために記憶装置の記憶容量が圧迫され得る。スナップショットのデータ量は、取得対象となる仮想マシンなどに割り当てられたメモリ量に比例するためである。手順実行と同等の頻度でスナップショットを取得すると、記憶容量が膨大となってしまう。他方、スナップショットの取得頻度を下げると、任意の時点の状態を復元するのが難しくなる。例えば、スナップショットとスナップショットとの間の時点の状態へ復元するのが難しい。
これに対し、状態復元装置100ではシェルスクリプトなどで記述された手順データとスナップショットとを組み合わせて状態復元を行うことで、任意の時点への状態復元を高速化する。ただし、この場合もスナップショットの取得頻度によっては記憶容量が圧迫され得る。そこで、状態復元装置100は、あるスナップショットを用いた復元手順が、現在の状態から他の状態に復元するための何れの最短手順リストにも用いられないとき、当該スナップショットをスナップショットDB220から削除するように制御する。復元の高速化に寄与しないスナップショットを保持しておくのは余計だからである。これにより、最短の復元手順を確保しつつ、記憶容量を節約できる。
例えば、手順データのサイズは数キロバイト程度であるのに対し、スナップショットのサイズは数メガバイト〜数十ギガバイト程度にもなり得る。このため、余計なスナップショットの削減は、記憶容量の節約に大きく貢献する。また、手順の開発や手順の実行における誤操作時に、システムを高速に元の状態に復元できるので、ユーザの作業の省力化および工数の削減を図れる。
[第3の実施の形態]
以下、第3の実施の形態を説明する。前述の第2の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
スナップショットの取得方式として、フルスナップショット方式と差分スナップショット方式との2種類を利用できることがある。フルスナップショット方式は、ある時点における仮想マシン21bなどの状態を示す全ての情報をスナップショットとして取得する方式である。
差分スナップショット方式は、ある時点における仮想マシン21bなどの状態を示す全ての情報のうち、直前に取得されたスナップショットからの差分の情報のみをスナップショットとして取得する方式である。ここでいう「直前に取得されたスナップショット」は、フルスナップショット方式で取得されたスナップショットおよび差分スナップショット方式で取得されたスナップショットの何れかである。このような2種類の方式に区分した場合、第2の実施の形態の説明で用いられた「スナップショット」は、フルスナップショット方式で取得されたスナップショットと考えることができる。
差分スナップショット方式で取得されたあるスナップショットを用いて装置の状態を復元する場合、当該装置の状態が直前に取得された別のスナップショットに対応する状態となっていることを要する。すなわち、差分スナップショット方式で取得されたスナップショットは、状態復元において、別のスナップショットに依存する。第3の実施の形態では、このようにスナップショット間に依存関係がある場合を考慮したスナップショット管理機能を提供する。
ここで、第3の実施の形態の情報処理システムは、図2で説明した第2の実施の形態の情報処理システムと同様である。また、第3の実施の形態の状態復元装置のハードウェア例および機能例は、図3,4で説明した状態復元装置100のハードウェア例および機能例と同様である。このため、第3の実施の形態でも第2の実施の形態と同様の名称および符号を用いて各装置などを表す。第3の実施の形態では、状態復元装置100は、スナップショット間における上記の依存関係を管理する。
図17は、第3の実施の形態のスナップショット記録テーブルの例を示す図である。スナップショット記録テーブル222は、スナップショット記録テーブル221に代えて、スナップショットDB220に格納される。スナップショット記録テーブル222は、スナップショットID、スナップショットパス、機器ID、状態ID、所要時間および依存IDの項目を含む。
ここで、スナップショットID、スナップショットパス、機器ID、状態IDおよび所要時間の項目に登録される内容は、スナップショット記録テーブル221と同様である。スナップショット記録テーブル222では、依存IDの項目を含む点が、スナップショット記録テーブル221と異なる。依存IDの項目には、当該スナップショットが依存する相手のスナップショットのスナップショットIDが登録される。
例えば、スナップショット記録テーブル222には、スナップショットIDが“SS1”、スナップショットパスが“/mnt/snapshot/20121121−001.dat”、機器IDが“D010”、状態IDが“ST1”、所要時間が“4(分)”、依存IDが“−”(ハイフン)という情報が登録される。
依存IDの項目以外の項目の設定例は、スナップショット記録テーブル221と同様である。依存ID“−”は、依存IDの設定がNULL値であり、スナップショットSS1が他のスナップショットに依存していないことを示す。すなわち、スナップショットSS1はフルスナップショット方式で取得されたスナップショットである。
また、例えば、スナップショット記録テーブル222には、スナップショットIDが“SS2”、スナップショットパスが“/mnt/snapshot/20121121−001−1.dat”、機器IDが“D010”、状態IDが“ST3”、所要時間が“1(分)”、依存IDが“SS1”という情報が登録される。
これは、機器ID“D010”の装置に対して、スナップショットID“SS2”、パス“/mnt/snapshot/20121121−001−1.dat”で示されるスナップショットSS2が取得されていることを示す。また、スナップショットSS2が当該装置の状態ST3に対応する記録であること、スナップショットSS2による状態復元に要する時間が1分であることを示す。また、スナップショットSS2は、スナップショットSS1に依存することを示す。すなわち、スナップショットSS2は、差分スナップショット方式で取得されたスナップショットである。
以下の説明では、各スナップショットの取得方式を区別して、フルスナップショットSS1や差分スナップショットSS2のように表記する。単にスナップショットという場合は、フルスナップショットおよび差分スナップショットの何れの場合も含み得る。
図18は、第3の実施の形態のGUIの例を示す図である。GUI180bは、GUI180,180aに代えて、UI部110により生成され、端末装置300に提供される。GUI180bは、状態遷移図181bを表示する点が、GUI180,180aと異なる。状態遷移図181bは、手順情報テーブル231、手順実行記録テーブル212およびスナップショット記録テーブル222に基づいて、機器ID“D010”の装置の状態遷移を画像により図示したものである。
状態遷移図181bでは、フルスナップショットが取得されている状態と、差分スナップショットが取得されている状態とが区別して表示される。具体的には、白抜きの四角形で囲われた丸印は、フルスナップショットが取得されている状態を示す。濃い色の四角形で囲われた丸印は、差分スナップショットが取得されている状態を示す。他のシンボルの意味は、状態遷移図181と同様である。凡例182には、フルスナップショットおよび差分スナップショットを区別して、各シンボルの説明が表示される。
GUI180bを端末装置300に提供することで、ユーザは、フルスナップショットおよび差分スナップショットが取得された状態を区別して把握できる。また、その上で復元先の状態を選択することができる。
次に、第3の実施の形態の処理を説明する。ここで、リリース作業に伴う手順実行の処理は、図11で説明した第2の実施の形態の手順実行の例と同様である。また、状態復元の処理は、図12で説明した第2の実施の形態の状態復元の例と同様である。
図19は、第3の実施の形態の削除対象の決定例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。当該削除対象の決定例では、第2の実施の形態に対し、ステップS39,S40の間にステップS39aを実行する点が異なる。そこで、以下ではステップS39aのみを説明し、他のステップの説明を省略する。
(S39a)スナップショット削除判定部160は、スナップショット記録テーブル222に基づいて、削除対象リスト{dss}に含まれるスナップショットのうち、{dss}に含まれていない別のスナップショットから直接的または間接的に依存されているスナップショットを特定する。スナップショット削除判定部160は、特定したスナップショットを削除対象リスト{dss}から除外する。
このように、スナップショット削除判定部160は、削除対象リスト{dss}に含まれる第1のスナップショットに関する依存関係を調べる。そして、(1)第2のスナップショットから依存されていない第1のスナップショットを削除対象として維持する。また、(2)第2のスナップショットから依存されているが、当該第2のスナップショットや当該第2のスナップショットが依存されている第3のスナップショットも再帰的に全て{dss}に含まれているスナップショット群を削除対象として維持する。当該(1)、(2)の何れにも該当しないスナップショットを{dss}から除外する。
ステップS39aの当該処理は、何れかの最短手順リストに用いられるスナップショットでの復元に利用される(あるいは当該復元の前提となる)スナップショットを削除対象から除外する処理であるともいえる。
図20は、第3の実施の形態の状態遷移グラフの例(その1)を示す図である。最短手順リスト作成部150は、手順実行記録テーブル212、スナップショット記録テーブル222および手順情報テーブル231に基づいて、状態遷移グラフG2を生成する。第3の実施の形態では、差分スナップショットSS2,SS3およびフルスナップショットSS4が取得されている点が第2の実施の形態と異なる。
差分スナップショットSS2は状態ST1から状態ST3へ復元するための差分スナップショットである。差分スナップショットSS3は、状態ST3から状態ST5へ復元するための差分スナップショットである。差分スナップショットSS2,SS3を用いた復元の所要時間は何れも1分である。フルスナップショットSS4は、状態ST7へ復元するためのフルスナップショットである。フルスナップショットSS4を用いた復元の所要時間は4分である。
状態遷移グラフG2では、差分スナップショットSS2を用いた復元手順をass2、差分スナップショットSS3を用いた復元手順をass3、フルスナップショットSS4を用いた復元手順をass4としている。
スナップショット記録テーブル222でも示されるように、差分スナップショットSS2は、フルスナップショットSS1に依存している。差分スナップショットSS3は、差分スナップショットSS2に依存している。この場合、フルスナップショットSS1は、差分スナップショットSS2から直接的に依存されているといえる。フルスナップショットSS1は、(差分スナップショットSS2を介して)差分スナップショットSS3から間接的に依存されているといえる。差分スナップショットSS2は、差分スナップショットSS3から直接的に依存されているといえる。
すなわち、差分スナップショットSS2を用いて現在の状態Scから状態ST3に復元する場合、VMM21aは復元手順ass1,ass2を順番に実行することになる。また、差分スナップショットSS3を用いて現在の状態Scから状態ST5に復元する場合、VMM21aは復元手順ass1,ass2,ass3を順番に実行することになる。このように、差分スナップショットを用いた復元は、依存関係のある他のスナップショットと組み合わせて実行される。差分スナップショットを用いた復元は、VMM21aにより制御されるので、シェルスクリプトなどの手順データと組み合わせた復元が難しい。
最短手順リスト作成部150は、状態遷移グラフG2に基づいて、現在の状態Scからそれ以外の他の状態Siに至る最短手順リストp(Sc,Si)の集合{p}を求める。集合{p}の求め方は、第2の実施の形態と同様である。
図21は、第3の実施の形態の削除対象の決定例(その1)を示す図である。テーブル172は、手順実行記録テーブル212、スナップショット記録テーブル222および手順情報テーブル231に基づいて得られる集合{S},{p},{dss}を例示している。スナップショット削除判定部160は、最短手順リスト作成部150により作成された集合{p}の情報に基づいて、集合{dss}の要素を決定する。
具体的には、最短手順リスト作成部150は、各状態に対する集合{p}の要素として、次の最短手順リストを作成する。状態ST1に対してp=[ass1]。状態ST2に対してp=[ass1,a1]。状態ST3に対してp=[a7’,a6’,a5’,a4’,a3’]。状態ST4に対してp=[a7’,a6’,a5’,a4’]。状態ST5に対してp=[a7’,a6’,a5’]。状態ST6に対してp=[a7’,a6’]。状態ST7に対してp=[a7’]。
そして、集合{SS}={SS1,SS2,SS3}の要素のうち、集合{p}の何れの要素にも用いられない要素は、差分スナップショットSS2,SS3である(フルスナップショットSS1は、復元手順ass1に用いられている)。したがって、スナップショット削除判定部160は、削除対象リスト{dss}={ass2,ass3}とする。
更に、差分スナップショットSS2は、前述の通り、差分スナップショットSS3から直接的に依存されているが、差分スナップショットSS3も{dss}に含まれている。また、差分スナップショットSS2は差分スナップショットSS3以外のスナップショットからは依存されていない。このため、スナップショット削除判定部160は、差分スナップショットSS2を削除対象として維持する。
また、差分スナップショットSS3は、何れのスナップショットからも依存されていない。このため、スナップショット削除判定部160は、差分スナップショットSS3を削除対象として維持する。
スナップショット削除判定部160は、削除対象リスト{dss}に基づいて、差分スナップショットSS2,SS3の記録をスナップショット記録テーブル222から削除する。また、スナップショット削除判定部160は、差分スナップショットSS2,SS3のデータの削除をVMM21aに指示する。VMM21aは当該指示に従って、スナップショットDB220に格納された差分スナップショットSS2,SS3を削除する。
このように、状態復元装置100は、スナップショット間の依存関係を考慮して、削除対象のスナップショットを決定する。仮に、依存関係を無視して削除対象を決定してしまうと、最短の復元手順リストに用いられる差分スナップショットによる復元を行えなくなる可能性があるからである。例えば、フルスナップショットSS1または差分スナップショットSS2の何れかが削除されてしまうと、VMM21aは、差分スナップショットSS3を用いた復元を行えなくなってしまう。そこで、上記のようにスナップショット間の依存関係を考慮して削除対象のスナップショットを決定することで、差分スナップショットを用いた復元が行えなくなることの防止を図れる。
図22は、第3の実施の形態の状態遷移グラフの例(その2)を示す図である。状態遷移グラフG3は、状態遷移グラフG2とエッジとノードとの接続関係は同一であるが、各エッジの長さ(エッジに対応する復元手順の所要時間)が異なる。各復元手順の所要時間を次の通りとする。復元手順a1,a1’,a3,a3’は1分である。復元手順a2,a2’は0.5分である。復元手順a4,a4’,a5,a5’,a6,a6’,a7,a7’は3分である。復元手順ass1,ass4は4分である。復元手順ass2,ass3は2分である。現在の状態をST8とすると、図19で示した処理に従えば、状態復元装置100は状態遷移グラフG3に対して、次のように削除対象のスナップショットを決定する。
図23は、第3の実施の形態の削除対象の決定例(その2)を示す図である。テーブル173は、状態遷移グラフG3に対する集合{S},{p},{dss}を例示している。具体的には、最短手順リスト作成部150は、各状態に対する集合{p}の要素として、次の最短手順リストを作成する。状態ST1に対してp=[ass1]。状態ST2に対してp=[ass1,a1]。状態ST3に対してp=[ass1,a1,a2]。状態ST4に対してp=[ass1,a1,a2,a3]。状態ST5に対してp=[ass1,a1,a2,as s3]。状態ST6に対してp=[a7’,a6’]。状態ST7に対してp=[a7’]。
そして、集合{SS}={SS1,SS2,SS3}の要素のうち、集合{p}の何れの要素にも用いられない要素は、差分スナップショットSS2である。フルスナップショットSS1は復元手順ass1に用いられているし、差分スナップショットSS3は復元手順ass3に用いられているからである。したがって、スナップショット削除判定部160は、削除対象リスト{dss}={ass2}とする。
ただし、差分スナップショットSS2は、前述の通り、差分スナップショットSS3から直接的に依存されている。また、図22,23の例では、差分スナップショットSS3は{dss}に含まれていない。このため、スナップショット削除判定部160は、差分スナップショットSS2を{dss}から除外する。すなわち、差分スナップショットSS2を削除対象から除外する。
すると、削除対象リスト{dss}の要素はなくなる。図22,23の例では、削除対象となるスナップショットが存在しないことになる。ここで、差分スナップショットSS3は状態ST3の復元に用いられるが、差分スナップショットSS2に依存している。このため、差分スナップショットSS2を削除してしまうと、VMM21aは差分スナップショットSS3を用いた復元を行えなくなってしまう。そこで、状態復元装置100は、{dss}にリストアップされた差分スナップショットSS2を削除対象から除外する。
これにより、VMM21aによる差分スナップショットSS3を用いた復元について、スナップショットSS1,SS2,SS3を順番に適用する方法を確保できる。より具体的には、VMM21aによる復元処理で、復元手順ass3に対し復元手順ass2の実行が前提であるとき、状態ST5に対して算出された手順リスト[ass1,a1,a2,ass3]に代えて、手順リスト[ass1,ass2,ass3]をVMM21aに実行させることになる(当該代替の手順リストの実行指示はスナップショット削除判定部160が行う)。この場合にも、VMM21aによる差分スナップショットを用いた復元を適切に行える。
なお、これまでの例では最新のスナップショットを残すものとした。ただし、例えば、最新のスナップショットが取得された状態に、シェルスクリプトなどの手順データを用いて当該最新のスナップショット以下の所要時間で復元可能であれば、前述したように最新のスナップショットを削除対象としてもよい。図22の例では、最新のスナップショットが取得された状態ST7へは復元手順a7’を用いて、現在の状態ST8からも復元可能である。更に、復元手順a7’の所要時間(3分)は復元手順ass4の所要時間(4分)以下である。したがって、この場合には、フルスナップショットSS4を削除対象と決定することも考えられる。
また、前述のように、手順データやスナップショットを用いた復元手順の所要時間は実測してもよいし、所与のものとしてもよい。ただし、復元手順の所要時間は各装置の動作環境(例えば、プロセッサの処理性能やディスクがHDDかSSDかなど)によって異なることがある。このため、復元手順の所要時間を実測によって記録すれば、実際の環境により適した時間で復元の最短手順を計算できる。例えば、実測の方法としては、同じ性能の装置でテスト環境を作って実測する、多数の環境で復元手順を実行した際の時間を記録して統計処理して所要時間を推測する、動作環境(例えば、装置の性能)から所要時間を推測する、などの方法が考えられる。
更に、スナップショットによる復元に制約を追加してもよい。例えば、スナップショットによる復元では、仮想マシン21b単体の状態は復元できる。しかし、付随する装置(例えば、ストレージ22やルータ23)の設定も当該仮想マシン21bの状態に対応する状態に復元せねば、仮想マシン21bを適切に動作させることができないことがある。このような場合は、当該付随する装置の復元も行われなければ、システムとして復元されたことにならない。そこで、付随する装置の設定にも影響を及ぼす設定変更を行った際に取得されたスナップショットは上記の復元に用いないようにしてもよい(この場合、シェルスクリプトなどの手順のみを用いて付随する装置の設定と共に復元するようにする)。
例えば、図11で示したステップS18で、手順実行結果登録部140は、手順データによる設定変更が仮想マシン21bだけでなく、ストレージ22やルータ23にも及んでいることを検出する。その場合、手順実行結果登録部140は、直前のステップS13でスナップショットを取得していれば、当該スナップショットを復元に利用しない旨をスナップショット記録テーブル221に登録する。後の処理において、最短手順リスト作成部150およびスナップショット削除判定部160は、スナップショット記録テーブル221を参照して、復元に利用しない旨の登録がされているスナップショットを処理の対象から除外する。
また、データサイズの大きな手順データを削除対象としてもよい。上記の例において、通常は手順データ(数十バイト〜数キロバイト)に比べてスナップショットのデータサイズ(数メガバイト〜数ギガバイト)は大きくなる。ただし、ある手順データが、1回の設定変更にしか用いられないにも関わらず、スナップショット程度のデータサイズをもつこともある。例えば、このような手順データとしてDBのトランザクションログが考えられる。状態復元装置100は、そのような手順データを検索し、当該手順データを検出した場合、当該手順データにより遷移する状態をスナップショットや他の手順データを用いて復元可能であれば、当該手順データをスナップショットよりも優先的に削除してもよい。例えば、手順データのデータサイズに100メガバイトなどの閾値を設け、当該閾値を超える手順データを検索してもよい。このようにすれば、記憶領域を一層節約し得る。
更に、仮想マシン21bのスナップショットを特に例示して説明したが、DBに対して取得されたスナップショットやサーバ21に対して取得されたスナップショットについても第2,第3の実施の形態の方法を適用できる。DBに対しては、トランザクションログを手順データとして用い得る。また、サーバ21に対しては、仮想マシン21bと同様にシェルスクリプトなどを手順データとして用い得る。
ところで、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク13、メモリ装置14およびメモリカード16など)に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 状態復元装置
1a 記憶部
1b 演算部
2 記憶装置
2a 命令リスト
2b,2c スナップショット
3 情報処理装置
4 状態遷移図
一方、逆方向の遷移を発生させる命令は、命令C4’(状態ST5から状態ST4)、命令C3’(状態ST4から状態ST3)、命令C2’(状態ST3から状態ST2)、命令C1’(状態ST2から状態ST1)である。
手順データf2は、cpコマンドにより“etc−hosts.bak”ファイルの内容を、“hosts”ファイルに上書きすることで、“hosts”ファイルを変更前の状態に復元する手順を例示している。当該手順は、手順データf1で示される手順に対する切り戻し手順である。手順データfは1つの命令を含んでいる。なお、手順データf1,f2はシェルスクリプトの形式に限らず、種々の形式(例えば、所定のプログラミング言語で記述されたプログラムなど)を利用し得る。
(S14)手順実行部130は、作業指示を受け付ける。例えば、ユーザは端末装置300を操作して、新たなシェルスクリプトのファイル(例えば、editHostsFile.sh)を入力することで作業の続行を状態復元装置100に指示できる。または、ユーザは、端末装置300を操作して、作業終了(例えば、quit)を状態復元装置100に指示することもできる。手順実行部130は、UI部110を介して当該指示を受け付ける。
図13は、第2の実施の形態の状態遷移グラフの例を示す図である。最短手順リスト作成部150は、手順実行記録テーブル212、スナップショット記録テーブル221および手順情報テーブル231に基づいて、状態遷移グラフG1を生成する。状態遷移グラフG1は、仮想マシン21bの状態ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8をノードとし、状態間の遷移をエッジとした有向グラフである。状態遷移グラフG1の各エッジの上部の数値は、各エッジに対応する復元手順の所要時間を示している。
一方、スナップショットを用いた復元は、現在の状態Scからスナップショットが取得された状態Sssに復元することに対応する。このため、最短手順リスト作成部150は、状態Scから状態Sssへ遷移するエッジを作成する。スナップショット記録テーブル221の例では、スナップショットSS1は状態ST1に対応する。よって、状態ST8から状態ST1へ遷移するエッジを作成する。スナップショットSS1を用いた復元手順をass1とする。スナップショットSS2は状態ST4に対応する。よって、状態ST8から状態STへ遷移するエッジを作成する。スナップショットSS2を用いた復元手順をass2とする。スナップショットSS3は状態ST6に対応する。よって、状態ST8から状態STへ遷移するエッジを作成する。スナップショットSS3を用いた復元手順をass3とする。
すると、削除対象リスト{dss}の要素はなくなる。図22,23の例では、削除対象となるスナップショットが存在しないことになる。ここで、差分スナップショットSS3は状態STの復元に用いられるが、差分スナップショットSS2に依存している。このため、差分スナップショットSS2を削除してしまうと、VMM21aは差分スナップショットSS3を用いた復元を行えなくなってしまう。そこで、状態復元装置100は、{dss}にリストアップされた差分スナップショットSS2を削除対象から除外する。
また、データサイズの大きな手順データを削除対象としてもよい。上記の例において、通常は手順データ(数十バイト〜数キロバイト)に比べてスナップショットのデータサイズ(数メガバイト〜数ギガバイト)は大きくなる。ただし、ある手順データが、1回の設定変更にしか用いられないにも関わらず、スナップショット程度のデータサイズをもつこともある。例えば、このような手順データとしてDBのトランザクションログが考えられる。状態復元装置100は、そのような手順データを検索し、当該手順データを検出した場合、当該手順データにより遷移する状態をスナップショットや他の手順データを用いて復元可能であれば、当該手順データをスナップショットよりも優先的に削除してもよい。例えば、手順データのデータサイズに100メガバイトなどの閾値を設け、当該閾値を超える手順データを検索してもよい。このようにすれば、記憶領域を一層節約し得る。

Claims (9)

  1. 装置の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、前記複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報に基づいて、復元の起点の状態からそれ以外の他の状態へ前記装置を復元する最短手順を他の状態毎に算出し、
    何れの最短手順にも用いられないスナップショットを削除対象と決定する、
    処理をコンピュータに実行させる状態復元プログラム。
  2. 前記決定では、何れの最短手順にも用いられないスナップショットのうち、何れかの最短手順に用いられるスナップショットにより依存されるスナップショットを削除対象から外す、請求の範囲第1項記載の状態復元プログラム。
  3. 前記決定では、前記起点の状態よりも前に取得されたスナップショットのうち、最新のスナップショットを削除対象から外す、請求の範囲第1項または第2項記載の状態復元プログラム。
  4. 前記複数の命令それぞれを前記装置に実行させる際に、各命令の実行に要する時間を計測し、前記装置の状態と各命令の内容と各命令の実行に要する時間とを対応付けて記録する、請求の範囲第1項乃至第3項の何れか1項に記載の状態復元プログラム。
  5. 前記記録では、前記装置に実行させた第1の命令により発生した状態の遷移とは逆の遷移を発生させる第2の命令のユーザによる入力を許容し、前記第2の命令を前記第1の命令に対応付けて記録する、請求の範囲第4項記載の状態復元プログラム。
  6. 前記記録では、前記第2の命令の実行に要する時間を前記第1の命令と同じ時間として記録する、または、前記第2の命令の実行に要する時間を実測して記録する、請求の範囲第5項記載の状態復元プログラム。
  7. 前記記録では、前記複数の命令それぞれを前記装置に実行させる前後の状態と、前記装置に対して取得されたスナップショットとの対応関係を記録する、請求の範囲第4項乃至第6項の何れか1項に記載の状態復元プログラム。
  8. 装置の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、前記複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報を記憶する記憶部と、
    前記情報に基づいて、復元の起点の状態からそれ以外の他の状態へ前記装置を復元する最短手順を他の状態毎に算出し、何れの最短手順にも用いられないスナップショットを削除対象と決定する演算部と、
    を有する状態復元装置。
  9. コンピュータが、
    装置の複数の状態の発生順序と、状態間の順方向または逆方向の遷移を発生させる複数の命令それぞれの実行に要する時間と、前記複数の状態のうちスナップショットが取得されている状態への当該スナップショットを用いた復元に要する時間とを示す情報に基づいて、復元の起点の状態からそれ以外の他の状態へ前記装置を復元する最短手順を他の状態毎に算出し、
    何れの最短手順にも用いられないスナップショットを削除対象と決定する、
    状態復元支援方法。
JP2015527124A 2013-07-19 2013-07-19 状態復元プログラム、装置、及び支援方法 Expired - Fee Related JP5971420B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069622 WO2015008377A1 (ja) 2013-07-19 2013-07-19 状態復元プログラム、装置、及び支援方法

Publications (2)

Publication Number Publication Date
JP5971420B2 JP5971420B2 (ja) 2016-08-17
JPWO2015008377A1 true JPWO2015008377A1 (ja) 2017-03-02

Family

ID=52345869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015527124A Expired - Fee Related JP5971420B2 (ja) 2013-07-19 2013-07-19 状態復元プログラム、装置、及び支援方法

Country Status (3)

Country Link
US (1) US20160110268A1 (ja)
JP (1) JP5971420B2 (ja)
WO (1) WO2015008377A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606704B1 (en) * 2014-12-31 2020-03-31 Acronis International Gmbh Creation of consistent copies of application data
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10055311B1 (en) * 2015-09-09 2018-08-21 Amazon Technologies, Inc. Reversion operations for virtual computing environments
US10339101B1 (en) * 2015-09-11 2019-07-02 Cohesity, Inc. Distributed write journals that support fast snapshotting for a distributed file system
JP6965012B2 (ja) * 2016-08-26 2021-11-10 キヤノン株式会社 配信システム、配信システムの制御方法、及びプログラム
EP3539026B1 (en) 2016-11-10 2021-12-08 Swirlds, Inc. Methods and apparatus for a distributed database including anonymous entries
RU2754189C2 (ru) 2016-12-19 2021-08-30 Свирлдз, Инк. Способы и устройство для распределенной базы данных, которая позволяет удалять события
US10331374B2 (en) * 2017-06-30 2019-06-25 Oracle International Corporation High-performance writable snapshots in data storage systems
KR102208336B1 (ko) 2017-07-11 2021-01-27 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
US10409664B2 (en) 2017-07-27 2019-09-10 International Business Machines Corporation Optimized incident management using hierarchical clusters of metrics
US11416344B2 (en) 2017-10-03 2022-08-16 Rubrik, Inc. Partial database restoration
SG10202107812YA (en) 2017-11-01 2021-09-29 Swirlds Inc Methods and apparatus for efficiently implementing a fast-copyable database
US10713124B2 (en) * 2017-11-21 2020-07-14 Rubrik, Inc. Database snapshot and backup management with recoverable chains
JP7024804B2 (ja) * 2018-02-06 2022-02-24 日本電気株式会社 システム更新装置およびシステム更新方法
US10579240B2 (en) * 2018-02-09 2020-03-03 Picmonkey, Llc Live-rendered and forkable graphic edit trails
US10949102B2 (en) * 2018-10-18 2021-03-16 EMC IP Holding Company LLC Leveraging snapshot for time series pattern analysis prediction
US10922123B2 (en) * 2018-12-12 2021-02-16 Microsoft Technology Licensing, Llc Container migration in computing systems
US10921986B2 (en) 2019-05-14 2021-02-16 Oracle International Corporation Efficient space management for high performance writable snapshots
SG11202109729SA (en) 2019-05-22 2021-10-28 Swirlds Inc Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database
US11216344B2 (en) 2020-05-13 2022-01-04 Rubrik, Inc. Real time database backup status indication and restore
US11841772B2 (en) * 2021-02-01 2023-12-12 Dell Products L.P. Data-driven virtual machine recovery
WO2023274532A1 (en) * 2021-07-01 2023-01-05 Huawei Technologies Co., Ltd. Method for restoring to a point in time using multiple snapshots and delta objects
WO2023250014A1 (en) * 2022-06-22 2023-12-28 Afiniti, Ltd. Fault management in a communication system
US20240036968A1 (en) * 2022-07-26 2024-02-01 Vmware, Inc Managing service configuration attempts for a host in response to failure

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111136B2 (en) * 2003-06-26 2006-09-19 Hitachi, Ltd. Method and apparatus for backup and recovery system using storage based journaling
JP4688617B2 (ja) * 2005-09-16 2011-05-25 株式会社日立製作所 記憶制御システム及び方法
JP5021929B2 (ja) * 2005-11-15 2012-09-12 株式会社日立製作所 計算機システム及びストレージシステムと管理計算機並びにバックアップ管理方法
JP2007140746A (ja) * 2005-11-16 2007-06-07 Hitachi Ltd 計算機システム及び管理計算機並びにリカバリ管理方法
JP2007280323A (ja) * 2006-04-12 2007-10-25 Hitachi Ltd 記憶システム及びデータ管理方法
JP4726075B2 (ja) * 2006-09-14 2011-07-20 Kddi株式会社 ネットワーク設定復元方法および装置
JP4236677B2 (ja) * 2006-09-20 2009-03-11 株式会社日立製作所 Cdpを用いたリカバリ方法
JP4981523B2 (ja) * 2007-05-28 2012-07-25 株式会社日立製作所 ストレージシステム及びストレージシステム管理方法
JP5188538B2 (ja) * 2010-05-27 2013-04-24 株式会社日立製作所 計算機システム及びリストア方法

Also Published As

Publication number Publication date
JP5971420B2 (ja) 2016-08-17
WO2015008377A1 (ja) 2015-01-22
US20160110268A1 (en) 2016-04-21

Similar Documents

Publication Publication Date Title
JP5971420B2 (ja) 状態復元プログラム、装置、及び支援方法
JP5970617B2 (ja) 開発支援システム
US8135986B2 (en) Computer system, managing computer and recovery management method
JP4704893B2 (ja) 計算機システム及び管理計算機とストレージシステム並びにバックアップ管理方法
WO2016199232A1 (ja) ストレージ管理計算機、及びストレージ装置の管理方法
KR101693683B1 (ko) 가상 데이터베이스 되감기
US20110320394A1 (en) Creation and Revision of Network Object Graph Topology for a Network Performance Management System
US10255086B2 (en) Determining optimal methods for creating virtual machines
US20090307684A1 (en) Managing package dependencies
EP3015998A1 (en) Zoning balance subtask delivering method, apparatus and system
JP2007140698A (ja) 計算機システム及びストレージシステムと管理計算機並びにバックアップ管理方法
US20100332637A1 (en) Virtual-machine management program and method for managing virtual machines
US9940066B2 (en) Snapshot management in hierarchical storage infrastructure
JP4918668B2 (ja) 仮想化環境運用支援システム及び仮想化環境運用支援プログラム
US11977559B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
RU2554851C2 (ru) Захват и загрузка состояний операционной системы
JP5106062B2 (ja) ファイル検索方法、ファイル検索装置、検索システム、及び、ファイル検索プログラム
JP6688433B2 (ja) 計算機システム
WO2016120989A1 (ja) 管理計算機及びルールの試験方法
US11424982B2 (en) Remediation of a system to new desired state using configuration dependency graph
US10496059B2 (en) Operational control management apparatus and operational control management method
JP2020115317A (ja) 管理装置、方法及びプログラム

Legal Events

Date Code Title Description
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: 20160614

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160627

R150 Certificate of patent or registration of utility model

Ref document number: 5971420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees