Usuń migawkę libvirt „osieroconą”

11

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.qcow2zmienia 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.qcow2został 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-metadatado virsh snapshot-create-astego miejsca uniknęłoby tego problemu, ponieważ nie utworzyłby pliku .xml, a tym samym nie zachowałby śladu migawki.

Jérôme
źródło
1
Po usunięciu deskryptora pliku migawki w samym obrazie maszyny wirtualnej powinny pozostać pewne dowody na istnienie migawki, które można sprawdzić za pomocą qemu-img info /srv/vm/prod.qcow2. Ale nie jestem pewien, jak sam usunąć ten ślad ...
sdittmar
@ sdittmar możesz skontaktować się z listą dyskusyjną użytkowników libvirt (patrz moja odpowiedź), aby uzyskać dokładną odpowiedź na to pytanie.
Jérôme

Odpowiedzi:

16

Właściwą metodą było

virsh snapshot-delete prod --metadata snap

(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-metadataargumentem.

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.

Jérôme
źródło