web-dev-qa-db-ja.com

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

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

11
Jérôme

適切な方法は

virsh snapshot-delete prod --metadata snap

(このコマンドは wiki上 で見つかります。ここで尋ねる前に試してみましたが、それ以降に修正されたタイプミスのために失敗しました。)

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

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

libvirt-users mailing-listthis thread でこの説明を入手しました。

ライブスナップショットを介してバックアップを実行する人は誰でも、前述のwikiページを読んでください。私のnoobの質問に答えるフォーラムスレッドに興味があり、 Eric Blakeからのスライドを参照してください。このブログ投稿 と以下のコメント。

16
Jérôme