KVM per this procedure )を使用してライブスナップショットを作成しようとしています。
わからない状態なので、いつかめちゃくちゃにしていたに違いない。
私のVMはprod
と呼ばれます。ファイル/srv/vm/prod.qcow2
で作成されました。
どうやら、実行中のスナップショットはありません。ベースファイルで作業しています。ファイル/srv/vm/prod.qcow2
の変更日は1分ごとに変わるため、推測できます。さらに、このコマンドはそれを確認します:
# virsh domblklist prod
Target Source
------------------------------------------------
vda /srv/vm/prod.qcow2
そして、ブロックコミットするものは何もありません:
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file
ただし、libvirtは古いスナップショットのトレースを保持します。
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
snap 2015-06-09 12:11:33 +0200 disk-snapshot
その記述子ファイルは/var/lib/libvirt/qemu/snapshot/prod/snap.xml
です。
<domainsnapshot>
<name>snap</name>
<state>disk-snapshot</state>
<creationTime>1433844693</creationTime>
<memory snapshot='no'/>
<disks>
<disk name='vda' snapshot='external' type='file'>
<driver type='qcow2'/>
<source file='/srv/vm/snap.qcow2'/>
</disk>
</disks>
[...]
ソースファイル/srv/vm/snap.qcow2
が削除されました。
私が実装しようとしている方法を考えると、このスナップショットは次のコマンドで作成された可能性が高いです:
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic
削除できません:
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
したがって、私はスナップショットが作成された状態にあり、明らかに使用されていないため、削除できません。
何かできることはありますか?
気にする必要がありますか、それとも無視できますか?
編集
スナップショットファイル記述子を削除しました。
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt
私のVMが再び稼働し、スナップショットへの参照が表示されなくなりました。
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
Virt-managerにも何もありません。
私は元気ですか、それともハウスキーピングがまだありますか?
編集2
どうやら -–no-metadata
をvirsh snapshot-create-as
に渡すと、.xmlファイルが作成されず、スナップショットのトレースが保持されないため、この問題を回避できます。
適切な方法は
virsh snapshot-delete prod --metadata snap
(このコマンドは wiki上 で見つかります。ここで尋ねる前に試してみましたが、それ以降に修正されたタイプミスのために失敗しました。)
Libvirtdがダウンしているときに.xmlファイルを削除してもカバーされないことについては、私にはわかりません。多分唯一の違いは、libvirtdを停止する必要がないことです。それでも、おそらくこれは将来進化する可能性があります。いずれの場合も、ファイルを直接操作するのではなく、libvirtのAPIを使用することをお勧めします。
スナップショットが--no-metadata
引数で作成された場合、この呼び出しは実際には必要ありません。
libvirt-users mailing-list の this thread でこの説明を入手しました。
ライブスナップショットを介してバックアップを実行する人は誰でも、前述のwikiページを読んでください。私のnoobの質問に答えるフォーラムスレッドに興味があり、 Eric Blakeからのスライド と を参照してください。このブログ投稿 と以下のコメント。