Próbuję wykonać migawkę na żywo za pomocą KVM zgodnie z tą procedurą .
W pewnym momencie musiałem coś popsuć, bo jestem w stanie, którego nie rozumiem.
Moja maszyna wirtualna nazywa się prod
. Został utworzony w pliku /srv/vm/prod.qcow2
.
Najwyraźniej nie ma uruchomionej migawki: Pracuję nad plikiem podstawowym. Zgaduję, ponieważ data modyfikacji pliku /srv/vm/prod.qcow2
zmienia się co minutę. Poza tym polecenie to potwierdza:
# virsh domblklist prod
Target Source
------------------------------------------------
vda /srv/vm/prod.qcow2
I nie ma nic do zablokowania:
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file
Jednak libvirt śledzi starą migawkę:
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
snap 2015-06-09 12:11:33 +0200 disk-snapshot
Jego plik deskryptora to /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>
[...]
Plik źródłowy /srv/vm/snap.qcow2
został usunięty.
Biorąc pod uwagę metodę, którą próbuję wdrożyć, jest całkiem prawdopodobne, że ta migawka została utworzona za pomocą następującego polecenia:
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic
Nie mogę tego usunąć:
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
Tak więc jestem w stanie, w którym utworzono migawkę, najwyraźniej nie jest już używana i nie można jej usunąć.
Czy mogę coś z tym zrobić?
Czy powinienem się tym przejmować, czy mogę to zignorować?
Edytować
Właśnie usunąłem deskryptor pliku migawki.
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt
Moja maszyna wirtualna znów działa i nie widzę już żadnych odniesień do migawki.
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
Nic też w virt-manager.
Czy wszystko ze mną w porządku, czy jest jeszcze jakieś sprzątanie?
Edytuj 2
Najwyraźniej przejście -–no-metadata
do virsh snapshot-create-as
tego miejsca uniknęłoby tego problemu, ponieważ nie utworzyłby pliku .xml, a tym samym nie zachowałby śladu migawki.
źródło
qemu-img info /srv/vm/prod.qcow2
. Ale nie jestem pewien, jak sam usunąć ten ślad ...Odpowiedzi:
Właściwą metodą było
(To polecenie można znaleźć na wiki . Próbowałem go przed pytaniem tutaj, ale nie powiodło się z powodu literówki, która została poprawiona od tego czasu.)
Nie wiem, co robi, czego nie obejmuje usuwanie pliku .xml, gdy libvirtd jest wyłączony. Być może jedyną różnicą jest to, że zatrzymanie libvirtd nie jest potrzebne. Mimo to być może może to ewoluować w przyszłości. W każdym razie zaleca się korzystanie z interfejsu API libvirt zamiast bezpośredniego odtwarzania plików.
To wywołanie rzeczywiście nie jest potrzebne, jeśli migawka została utworzona z
--no-metadata
argumentem.Zdobyłem ten wyjaśnień w tym wątku na Libvirt-users-listy .
Każdy, kto chce tworzyć kopie zapasowe za pomocą migawek na żywo, powinien przeczytać wyżej wspomnianą stronę wiki i może być zainteresowany wątkiem forum, który odpowiada na moje pytania noob i wskazuje na slajdy Erica Blake'a , a także ten post na blogu i następujące komentarze.
źródło