「孤立した」libvirtスナップショットを削除


11

この手順に従って KVMを使用してライブスナップショットを作成しようとしています

わからない状態なので、いつかめちゃくちゃにしていたに違いない。

私の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-metadatavirsh snapshot-create-as.xmlファイルが作成されないためこの問題が回避され、スナップショットのトレースが保持されなくなります。


1
スナップショットファイル記述子を削除した後も、VMイメージ自体に既存のスナップショットの証拠が残っているはずqemu-img info /srv/vm/prod.qcow2です。これはで確認できます。しかし、私はそのトレースを自分で削除する方法がわかりません...
sdittmar

@sdittmarの場合、libvirt-usersメーリングリスト(私の回答を参照)に連絡して、正確な回答を得ることができます。
ジェローム

回答:


16

適切な方法は

virsh snapshot-delete prod --metadata snap

(このコマンドはwikiにあります。ここで尋ねる前に試してみましたが、誤字脱字が原因で失敗しました。)

libvirtdがダウンしているときに.xmlファイルを削除してもカバーされないことについて、私はそれが何をしているのかわかりません。多分唯一の違いは、libvirtdを停止する必要がないことです。それでも、おそらくこれは将来的に進化する可能性があります。いずれの場合も、ファイルを直接操作するのではなく、libvirtのAPIを使用することをお勧めします。

スナップショットが--no-metadata引数付きで作成された場合、この呼び出しは実際には必要ありません。

libvirt-users mailing-listのこのスレッドでこの説明を入手しました。

ライブスナップショットを介してバックアップを実行する人は誰でも、前述のwikiページを読む必要があります。また、私のnoobの質問に答えるフォーラムスレッド、およびEric Blakeのスライド、ならびにこのブログの投稿と次のコメントに興味があるかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.