Saya mencoba untuk melakukan snapshot langsung menggunakan KVM sesuai prosedur ini .
Saya pasti telah mengacaukan suatu saat karena saya dalam keadaan saya tidak mengerti.
VM saya dipanggil prod
. Itu dibuat dalam file /srv/vm/prod.qcow2
.
Tampaknya, tidak ada snapshot yang berjalan: Saya sedang mengerjakan file base. Saya bisa menebak karena tanggal modifikasi file /srv/vm/prod.qcow2
berubah setiap menit atau lebih. Selain itu, perintah ini menegaskan:
# virsh domblklist prod
Target Source
------------------------------------------------
vda /srv/vm/prod.qcow2
Dan tidak ada yang diblokir:
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file
Namun, libvirt menyimpan jejak snapshot lama:
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
snap 2015-06-09 12:11:33 +0200 disk-snapshot
File deskriptornya adalah /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>
[...]
File sumber /srv/vm/snap.qcow2
telah dihapus.
Mempertimbangkan metode yang saya coba terapkan, sangat mungkin snapshot ini dibuat dengan perintah berikut:
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic
Saya tidak bisa menghapusnya:
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
Jadi saya dalam keadaan di mana snapshot dibuat, tampaknya tidak lagi digunakan, dan tidak dapat dihapus.
Adakah yang bisa saya lakukan?
Haruskah saya peduli atau bisakah saya mengabaikannya saja?
Edit
Saya baru saja menghapus deskriptor file foto.
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt
VM saya naik lagi dan saya tidak melihat referensi ke snapshot lagi.
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
Tidak ada dalam manajer-kebajikan juga.
Apakah saya baik-baik saja atau masih ada beberapa pekerjaan rumah tangga yang harus dilakukan?
Edit 2
Tampaknya, meneruskan -–no-metadata
ke virsh snapshot-create-as
akan menghindari masalah ini dengan tidak membuat file .xml, sehingga tidak ada jejak snapshot.
sumber
qemu-img info /srv/vm/prod.qcow2
. Tapi saya tidak yakin bagaimana cara menghapus jejak itu sendiri ...Jawaban:
Metode yang tepat adalah
(Perintah ini dapat ditemukan di wiki . Saya mencobanya sebelum bertanya di sini tetapi gagal karena kesalahan ketik yang telah diperbaiki sejak itu.)
Saya tidak tahu apa fungsinya yang tidak tercakup dengan menghapus file .xml saat libvirtd mati. Mungkin satu-satunya perbedaan adalah bahwa menghentikan libvirtd tidak diperlukan. Meski begitu, mungkin ini bisa berkembang di masa depan. Bagaimanapun, disarankan untuk menggunakan API libvirt daripada bermain dengan file secara langsung.
Panggilan ini memang tidak diperlukan jika snapshot dibuat dengan
--no-metadata
argumen.Saya memperoleh klarifikasi ini di thread ini dari libvirt-pengguna mailing-list .
Siapa pun yang mau melakukan backup melalui snapshot langsung harus membaca halaman wiki yang disebutkan di atas, dan mungkin tertarik dengan utas forum yang menjawab pertanyaan noob saya, dan menunjuk ke slide dari Eric Blake , serta posting blog ini dan komentar berikut.
sumber