“고아”libvirt 스냅 샷 삭제


11

이 절차에 따라 KVM을 사용하여 라이브 스냅 샷을 작성하려고 합니다 .

내가 이해할 수없는 상태에 있기 때문에 어느 시점에서 엉망이되었을 것입니다.

내 VM을이라고 prod합니다. 파일로 작성되었습니다 /srv/vm/prod.qcow2.

분명히, 실행중인 스냅 샷이 없습니다 : 기본 파일에서 작업하고 있습니다. 파일 수정 날짜가 /srv/vm/prod.qcow21 분마다 바뀌기 때문에 추측 할 수 있습니다 . 게다가,이 명령은 그것을 확인합니다 :

# 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-metadata하기 virsh snapshot-create-as때문에 스냅 샷의 흔적을 유지하지 .xml 파일을 생성하지 않음으로써이 문제를 방지한다.


1
스냅 샷 파일 디스크립터를 삭제 한 후에도 여전히 확인할 수있는 VM 이미지 자체에 기존 스냅 샷의 증거가 남아 있어야합니다 qemu-img info /srv/vm/prod.qcow2. 그러나 나는 그 흔적을 스스로 제거하는 방법을 잘 모르겠다 ...
sdittmar

@ sdittmar 당신은 libvirt-users 메일 링리스트 (내 답변 참조)에 연락하여 이것에 대한 정확한 답변을 얻을 수 있습니다.
Jérôme

답변:


16

올바른 방법은

virsh snapshot-delete prod --metadata snap

(이 명령은 wiki 에서 찾을 수 있습니다 . 여기에서 요청하기 전에 시도했지만 이후 수정 된 오타로 인해 실패했습니다.)

libvirtd가 작동하지 않는 동안 .xml 파일을 제거하여 다루지 않는 것은 무엇인지 모르겠습니다. 어쩌면 유일한 차이점은 libvirtd를 중지 할 필요가 없다는 것입니다. 그럼에도 불구하고 이것은 미래에 진화 할 수 있습니다. 어쨌든 파일을 직접 재생하는 대신 libvirt의 API를 사용하는 것이 좋습니다.

이 호출은 --no-metadata인수로 스냅 샷이 작성된 경우 실제로 필요하지 않습니다 .

나는이 설명을 얻은 이 스레드libvirt를 사용자의 메일 링리스트 .

라이브 스냅 샷을 통해 백업을하고자하는 사람은 앞서 언급 한 위키 페이지를 읽어야하며, 멍청한 질문에 답하는 포럼 스레드와 Eric Blake의 슬라이드 , 이 블로그 게시물 및 댓글에 관심이있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.