13.2. 명령줄을 사용하여 가상 머신 스냅샷 생성
VM(가상 머신)의 상태를 스냅샷에 저장하려면 virsh snapshot-create-as
명령을 사용하면 됩니다.
사전 요구 사항
VM은 파일 기반 스토리지를 사용합니다. 이 경우 있는지 확인하려면 다음 명령을 사용하고
disk
장치의 경우disk type
을file
로 표시하십시오.virsh dumpxml <vm-name> | grep "disk type"
# virsh dumpxml <vm-name> | grep "disk type" <disk type='file' device='disk'> <disk type='file' device='cdrom'>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 실행 중인 VM의 메모리가 포함된 VM 스냅샷을 생성하려면 VM의 메모리를 저장하기에 충분한 디스크 공간이 있어야 합니다.
- VM의 메모리를 저장하기 위한 최소 권장 공간은 VM의 할당된 RAM과 동일합니다. 예를 들어 32GB RAM이 있는 VM의 메모리를 저장하려면 최대 32GB의 디스크 공간이 필요합니다.
- VM이 I/O 로드가 많은 경우 상당한 추가 디스크 공간이 필요할 수 있습니다.
- VM에 VFIO 패스스루 장치를 할당한 경우 추가 디스크 공간이 필요할 수 있습니다.
VM을 일시 중지하지 않고 스냅샷을 생성하는 경우 추가 디스크 공간이 필요할 수 있습니다.
주의Red Hat은 워크로드가 매우 크거나 VFIO 패스스루 장치를 사용하는 실행 중인 VM의 메모리를 저장하지 않는 것이 좋습니다. 이러한 VM의 메모리를 저장하면 호스트 디스크를 채우고 시스템의 성능이 저하될 수 있습니다. 대신 이러한 VM에 대한 메모리 없이 스냅샷을 생성하는 것이 좋습니다.
또한 일부 VFIO 장치가 메모리로 스냅샷을 생성할 수 있는 것은 아닙니다. 현재 메모리로 스냅샷을 생성하는 것은 다음과 같은 상황에서만 올바르게 작동합니다.
- 연결된 VFIO 장치는 마이그레이션 기능이 활성화된 Mellanox VF입니다.
- 연결된 VFIO 장치는 마이그레이션 기능이 활성화된 NVIDIA vGPU입니다.
프로세스
필수 매개 변수를 사용하여 VM 스냅샷을 생성하려면
virsh snapshot-create-as
명령을 사용합니다.virsh snapshot-create-as <vm-name> <snapshot-name> <optional-description> <additional-parameters>
# virsh snapshot-create-as <vm-name> <snapshot-name> <optional-description> <additional-parameters>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 종료 VM의 스냅샷을 생성하려면
--disk-only
매개변수를 사용합니다. 예를 들어 다음 명령은 shut-downTestguest1
VM의 현재 disk-state에서Snapshot1
을 생성합니다.virsh snapshot-create-as Testguest1 Snapshot1 --disk-only
# virsh snapshot-create-as Testguest1 Snapshot1 --disk-only Domain snapshot Snapshot1 created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 실행 중인 VM의 disk-state를 저장하는 스냅샷을 만들려면
--disk-only --quiesce
매개변수를 사용합니다. 예를 들어 다음 명령은 설명clean system install
을 사용하여 실행 중인Testguest2
VM의 현재 디스크 상태에서Snapshot2
를 생성합니다.virsh snapshot-create-as Testguest2 Snapshot2 "clean system install" --disk-only --quiesce
# virsh snapshot-create-as Testguest2 Snapshot2 "clean system install" --disk-only --quiesce Domain snapshot Snapshot2 created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 실행 중인 VM을 일시 중지하고 디스크 상태 및 메모리를 저장하는 스냅샷을 생성하려면
--memspec
매개변수를 사용합니다. 예를 들어 다음 명령은Testguest3
VM을 일시 중지하고 VM의 현재 디스크 및 메모리 상태에서Snapshot3
을 생성합니다. VM 메모리는/var/lib/libvirt/images/saved_memory.img
파일에 저장됩니다. 스냅샷이 완료되면 VM이 작업을 자동으로 다시 시작합니다.virsh snapshot-create-as Testguest3 Snapshot3 --memspec /var/lib/libvirt/images/saved_memory.img
# virsh snapshot-create-as Testguest3 Snapshot3 --memspec /var/lib/libvirt/images/saved_memory.img Domain snapshot Snapshot3 created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스냅샷 프로세스 중에 VM을 일시 중지하면 다운 타임이 발생하지만 특히 로드가 많은 VM의 경우 실행 중인 VM의
실시간
스냅샷을 생성하는 것보다 더 안정적으로 작동할 수 있습니다.실행 중인 VM과 라이브 메모리의 disk-state를 저장하는 스냅샷을 생성하려면
--live --memspec
매개변수를 사용합니다. 예를 들어 다음 명령은 실행 중인Testguest4
VM의 현재 디스크 및 메모리 상태에서Snapshot4
를 생성하고 메모리 상태를/var/lib/libvirt/images/saved_memory2.img
파일에 저장합니다.virsh snapshot-create-as Testguest4 Snapshot4 --live --memspec /var/lib/libvirt/images/saved_memory2.img
# virsh snapshot-create-as Testguest4 Snapshot4 --live --memspec /var/lib/libvirt/images/saved_memory2.img Domain snapshot Snapshot4 created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
VM의 메모리를 스냅샷에 저장하면 실행 중인 프로세스의 상태가 VM의 게스트 운영 체제에 저장됩니다. 그러나 이러한 스냅샷으로 되돌리면 네트워크 연결 손실 또는 동기화되지 않은 시스템 시간 등 다양한 요인으로 인해 프로세스가 실패할 수 있습니다.
검증
지정된 VM과 연결된 스냅샷을 나열합니다.
virsh snapshot-list <Testguest1>
# virsh snapshot-list <Testguest1> Name Creation Time State -------------------------------------------------------------- Snapshot1 2024-01-30 18:34:58 +0100 shutoff
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스냅샷이 external 로 생성되었는지 확인합니다.
virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external
# virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external <disk name='vda' snapshot='external' type='file'>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령의 출력에
snapshot='external'
이 포함된 경우 스냅샷은 외부이므로 Red Hat에서 완전히 지원합니다.