128GB SSD에서 Windows VM을 실행하고 있습니다. 드라이브의 모든 공간을 차지할 수 있다고 생각하여 127GB 가상 디스크를 VM에 할당했습니다. 제가 잊어버린 것은 동일한 물리적 드라이브에 저장된 3개의 VM 스냅샷에 필요한 디스크 공간입니다. 이제 드라이브에 남은 공간이 0이 되어 VM이 실행되지 않습니다.
제가 하고 싶은 일은 모든 스냅샷을 삭제하여 물리적 드라이브의 공간을 확보하는 것입니다. 안타깝게도 스냅샷을 삭제하려고 하면 오류가 발생합니다.
Failed to perform an online medium merge (VERR_DISK_FULL)
VM이 켜져 있지만 일시 중지된 경우입니다. VM의 전원을 강제로 끄고 병합을 시도하면 다음과 같은 결과가 나타납니다.
Failed to delete the snapshot SomeSnapshot of the virtual machine somevm.
Could not merge the medium '/var/vms/somevm/Snapshots/{58220add-b745-4d38-874b-c788f0e31560}.vdi' to '/var/vms/somevm/Snapshots/{181dd674-a65a-44af-afa4-d7ee00cf6c21}.vdi' (VERR_DISK_FULL).
이 혼란에서 벗어나는 가장 쉬운 방법은 무엇입니까? 호스트 OS는 Linux Mint를 실행하고 있습니다.
답변1
저는 VirtualBox의 난해한 미디어 레지스트리 시스템을 망치는 것을 싫어하고, 싫어하고, 싫어합니다... 디스크를 해제하고 스냅샷을 다시 연결하려고 하는 등 말도 안되는 모든 일을 하기 때문에 제가 생각할 수 있는 가장 간단한 방법으로 작업을 수행했습니다. VM 디스크 이미지를 다음으로 복사합니다. 더 큰 드라이브인 경우 드라이브를 마운트하세요.VM의 원래 경로에서, 스냅샷 삭제 명령을 다시 실행한 다음 마지막으로 더 작은 최종 디스크 이미지를 원래 드라이브에 다시 복사합니다. 모든 세부 사항은 다음과 같습니다.
LVM을 사용하므로 먼저 파일을 보관할 새 LV를 만듭니다.
sudo lvcreate -l 100%FREE -n vm-resize somevg sudo cryptsetup create vm-resize /dev/mapper/somevg-vm--resize --key-file /dev/urandom sudo mkfs.ext4 -m 1 /dev/mapper/vm-resize
다음으로 VM 디스크 이미지를 새 LV에 복사합니다.
cd /var/vms sudo mkdir vm-resize sudo mount /dev/mapper/vm-resize vm-resize/ sudo cp -a somevm/* vm-resize/
그런 다음 SSD가 마운트된 것과 동일한 경로에 새 LV를 마운트합니다.
umount somevm/ vm-resize/ sudo mount /dev/mapper/vm-resize somevm/
마지막으로 모든 스냅샷을 "삭제"할 수 있습니다(현재 디스크 이미지에 병합).
snapshots=( $(VBoxManage snapshot somevm list | sed -E 's/.*(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}).*/\1/') ) for uuid in "${snapshots[@]}"; do VBoxManage snapshot somevm delete "$uuid" done
하지만 아직 끝나지 않았습니다. 다음으로 두 개의 LV를 원래 위치에 다시 마운트합니다.
sudo umount somevm/ sudo mount somevm/ sudo mount /dev/mapper/vm-resize vm-resize/
그런 다음 더 작은 새 디스크 이미지를 원래 드라이브로 다시 이동해야 합니다.
sudo rm somevm/Snapshots/*.vdi sudo cp -a vm-resize/somevm.vdi somevm/somevm.vdi
이제 VM이 작동하는지 테스트해 보겠습니다.
그런 다음 마지막으로 (이번에는 실제로) 정리를 수행합니다.
sudo umount vm-resize sudo cryptsetup remove vm-resize sudo lvremove somevg/vm-resize
참 쉽죠?