KVM スナップショット概要
KVM スナップショットはKVM のとある時点の状態を保持する機能です。
スナップショットは普通のバックアップのように全データを保持しておくのとは異なり、ゲストOS 上への変更が発生した時に差分のみを保持することで、スナップショットを作成した時点の状態を保持します。
また、ゲストOS の全データをコピーするわけではないのでスナップショットの作成処理は高速です。
スナップショットは、ゲストOS 本体もしくはスナップショットファイルのいずれかが破損してしまうと、元の状態に戻すことはできなくなるので、バックアップの代わりとして利用する場合は注意してください。
スナップショットの作成手順としては、external 親スナップショットを作成し、それから派生する子スナップショットを作成していくイメージです。
スナップショット(external)の取得
virsh snapshot-create-as
コマンドを使用することで、ゲストOS のexternal スナップショットを取得することができます。
スナップショットの取得は、ゲストOS が起動中でも可能です。
# virsh snapshot-create-as <KVMドメイン名> <スナップショット名> "<コメント>" --disk-only --atomic
Domain snapshot sn01_kvm_centos7 created
# virsh snapshot-create-as kvm_centos7 sn01_kvm_centos7 "test snap shot" --disk-only --atomic
Domain snapshot sn01_kvm_centos7 created
スナップショット(external)の復元について
external スナップショットの復元は2015年06月現在、対応していない様子。
$ virsh snapshot-revert kvm_centos7 sn01_kvm_centos7
error: unsupported configuration: revert to external snapshot not supported yet
スナップショット復元については、internal スナップショットを取得してから行ってください。
スナップショットの確認
# virsh snapshot-list <KVMドメイン名>
# virsh snapshot-list kvm_centos7
Name Creation Time State
------------------------------------------------------------
sn01_kvm_centos7 2015-01-18 18:04:44 +0900 shutoff
スナップショット(internal)の取得
外部スナップショットを取得した状態で、次のようにコマンドを実行すると、スナップショットを取得することができます。
なお、スナップショットの名前は外部スナップショットや他の内部スナップショットと被らないようにしてください。
# virsh snapshot-create-as <KVMドメイン名> <スナップショット名> "<コメント>"
# virsh snapshot-create-as kvm_centos7 sn02_kvm_centos7 "comment"
スナップショットをtree 表示する
スナップショットの派生関係を確認したい場合、--tree
オプションを付けることで確認することができます。
# virsh snapshot-list kvm_centos7 --tree
sn01_kvm_centos7
|
+- sn02_kvm_centos7
|
+- mariadb_kvm_centos7
+- postgresql_kvm_centos7
現在の状態が、どのスナップショットからの派生かを調べる
virsh snapshot-list
コマンドに--tree
, --current
オプションを使用することで確認することができます。
# virsh snapshot-list kvm_centos7 --tree --current
mariadb_kvm_centos7
特定のスナップショット状態に戻す
特定のスナップショットのポイントに戻すにはvirsh snapshot-revert
コマンドを使用します。
指定するスナップショットは内部スナップショットを指定するようにしてください。
# virsh snapshot-revert <KVMドメイン名> <スナップショット名>
# virsh snapshot-revert kvm_centos7 sn02_kvm_centos7
スナップショット(internal)の削除
virsh snapshot-delete
コマンドを実行することで、スナップショットを削除することができます。
# virsh snapshot-delete <KVMドメイン名> <スナップショット名>
# virsh snapshot-delete kvm_centos7 sn03_kvm_centos7
スナップショット(external)の削除
external snapshot を削除する場合は--metadata
オプションをつけることで削除できます。
# virsh snapshot-delete <KVMドメイン名> <スナップショット名> --metadata
# virsh snapshot-delete kvm_centos7 sn01_kvm_centos7 --metadata