libvirt 스냅샷이 저장되는 방식 이해

libvirt 스냅샷이 저장되는 방식 이해

처음에는 여기에 저장될 것이라고 생각했지만 /var/lib/libvirt/images/도메인의 스냅샷을 생성하면 centos7이 디렉터리에는 아무 것도 변경되지 않습니다.

drwx--x--x 2 root         root       4096 Feb 29 21:28 .
drwxr-xr-x 7 root         root       4096 Feb 28 23:47 ..
-rw------- 1 libvirt-qemu kvm  5370216574 Feb 29 22:09 centos7-1.qcow2
-rw------- 2 libvirt-qemu kvm  5931597824 Feb 29 22:12 centos7.qcow2
-rw------- 1 root         root 1499267135 Feb 28 21:07 centos7-server.qcow2

/var/lib/libvirt/qemu/snapshot/centos7다음으로 다음 과 같은 XML 파일의 내용을 확인했습니다 .

client2.xml client.xml disks.xml

제가 스냅샷에 붙인 이름입니다.

스냅샷이 디스크 이미지가 아닌 XML 파일인 이유를 누군가 말해 줄 수 있습니까? 이 xml 파일은 무엇을 저장합니까 images? 작동하려면 내 디렉토리에 원본 qcow2 이미지가 필요하고 어떤 이미지에서도 작동하지 않을 것 같습니다. 이것이 맞습니까?

답변1

xml 파일은 스냅샷 메타데이터를 나타내며, 파일을 열면 다음과 같은 내용이 표시됩니다(간결하게 필드 정의가 단축됨).

yoursnapshot.xml

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh snapshot-edit
or other application using the libvirt API.
-->

<domainsnapshot>
  <name>your-snapshot</name>
  <state>shutoff</state>
  <creationTime>1567455358</creationTime>
  <memory snapshot='no'/>
  <disks>
    <disk name='hda' snapshot='internal'/>
  </disks>
  <domain type='kvm'>
    <name>centos76-client</name>
    [...]
  </domain>
  <active>1</active>
</domainsnapshot>

이 파일에는 스냅샷 이름, 생성 당시 도메인 상태, 생성 시간, 스냅샷이었던 경우 메모리, 디스크 및 해당 시점의 도메인 정의가 기록됩니다.

이 필드 정의는 귀하가 얻게 될 정보와 동일합니다 virsh dumpxml your-domain. 스냅샷 당시의 기기, CPU, 메모리 등의 구성입니다. 예를 들어, 스냅샷 이후 일부 장치, 메모리 크기 등을 변경한 경우 스냅샷을 찍을 때의 정확한 설정으로 돌아갈 수 있습니다.

이제 이 disks섹션에서는 실제로 스냅샷이 생성된 디스크 장치를 확인할 수 있습니다. 디스크 이미지를 생성하려고 하지만 qcow2파일의 경우 약간 다르게 작동합니다.

qcow2쓰기 시 이미지 복사를 구현합니다. 다른 COW(기록 중 복사) 파일 시스템에서는 btrfs이는 파일이 그 자리에서 변경되지 않고 대신 수정될 때 파일의 변경된 복사본이 디스크의 다른 곳에 저장됨을 의미합니다.

스냅샷을 사용하면 qcow2이미지가 항상 그 자리에서 수정되지만, 스냅샷이 생성된 경우 qcow2스냅샷 이후에 파일이 수정될 때마다 수정 사항이 적용되기 전의 파일 복사본이 스냅샷에 저장됩니다. 이는 이미지와 스냅샷이 모두 qcow2파일 안에 있음을 의미합니다. (파일 형식과 스냅샷 작동 방식에 대한 자세한 설명 qcow2여기.

명령을 사용하여 이러한 디스크 스냅샷을 나열하고 상호작용할 수 있습니다(나열, 복원, 생성, 삭제) qemu-img. 예를 들어 다음과 같이 스냅샷을 나열할 수 있습니다.

# qemu-img snapshot -l /var/lib/libvirt/qemu/centos7-server.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         your-snapshot             0 2019-09-02 22:15:58   00:00:00.000

여기의 태그는 name스냅샷 XML 파일의 이름 및 XML 자체 내의 항목과 일치해야 libvirt이미지의 어떤 스냅샷을 복원해야 하는지 알 수 있습니다.qcow2

답변2

블로그 글을 썼어요https://www.lorenzobettini.it/2023/04/kvm-virtual-machine-manager-and-virtual-machines-on-external-drives/virt-manager에서 사용하는 디렉터리와 머신, 구성, 스냅샷을 다른 디렉터리나 외부 드라이브에 저장하려는 경우 이를 처리하는 방법에 대해 설명합니다.

중요한 디렉토리는 /etc/libvirt/qemu및 입니다 /var/lib/libvirt/qemu/.

관련 정보