Virtualbox, 스냅 샷 및 기본 디스크 병합


9

지점에 약 30 개의 스냅 샷이있는 가상 머신이 있습니다. 현재 개발 경로는 22 개의 스냅 샷과 기본 디스크입니다. 파일의 양이 현재 IO 및 내가 사용하고있는 dev 랩톱에 영향을 미치는 것으로 보입니다 (많은 조각에서 140GB 총 크기의 호스트 디스크 성능 문제인지 또는 사실인지 모르겠습니다) 많은 파일에 분산 된 타격 섹터).

스냅 샷의 현재 개발 분기를 기본 디스크와 병합하고 싶지만 다음 명령이 올바른 결과를 생성하는지 확실하지 않습니다. 절차가 완료된 후 (5-6 시간)이 디스크를 부팅 할 수 없습니다.

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

이것이 올바른 접근인지 아닌지 확인할 수 있습니까?


일부 정보를 추가하기 위해 내가받는 오류는 VirtualBox 오류가 아니라 Windows의 부팅 오류입니다. 시동 복구를 시작하려고하지만 오류를 모르므로 수정 프로그램을 모릅니다. 일반적으로 창을 시작하면 대기 시간이 길고 파란 화면이 나타납니다. 디스크를 복제 할 때 이것이 예상되었거나 잘못된 방법을 사용 했습니까?
Henrik

질문에서 제안한대로 VBoxManage (Windows 호스트, Ubuntu 게스트)를 사용했으며 스냅 샷을 단일 출력 디스크 이미지로 올바르게 병합했습니다
Chaulky

1
예, 이것이 올바른 접근법입니다. 파일 이름 대신 소스 UUID 만 지정하는 것이 좋습니다. 그러면 VBox에서 첨부 파일을 확인할 수 있습니다.
rustyx

답변:


7

수행 할 작업은 스냅 샷 대화 상자에서 모든 스냅 샷을 단일 VDI에 병합하려는 상위 스냅 샷을 선택하십시오.

당신의 설명에서 이것은 나무의 뿌리처럼 들립니다.

마우스 오른쪽 버튼을 클릭하고 '스냅 샷 삭제'를 선택하십시오.

원하는 작업을 수행합니다. 모든 하위 스냅 샷의 모든 변경 사항을 단일 VDI로 병합합니다.

또한 최신 스냅 샷에있는 디스크 이미지를 복제하면 차이점 보관 용 디스크가 상위 디스크 (및 상위 하드 디스크 유형에 도달 할 때까지 상위 디스크)와 병합됩니다.

'스냅 샷 삭제'에서 clonehd 명령이 실행되는 것 같습니다.

VM 설정 (특히 IO APIC 활성화 / 비활성화)을 확인하고 일치하는지 확인하십시오.


나는 이것이 이것이 이것을하는 유일한 방법이라고 생각하지만 GUI 방식으로 수동, 시간 소모적 인 멀티 클릭입니다.
Henrik

3

단일 스냅 샷 만 유지하려면 현재 상태로 설정 한 다음 VM을 내보내고 다시 가져 오십시오. 내 보낸 어플라이언스는 스냅 샷 기록을 유지하지 않습니다.

또는이 vboxmerge.py 스크립트를 사용하여 병합을 처리 할 수 있습니다. 스냅 샷 수가 많으면 내보내기 / 가져 오기주기가 더 빠를 것으로 예상됩니다.


2

다음은 'Clone'명령을 사용하여 모든 스냅 샷을 단일 VDI 파일이 포함 된 새 VM에 병합하고 압축하는 기술 (VirtualBox 4.3.4에서 테스트)입니다.

  1. 복제 된 VM의 현재 이름을 재사용 할 수 있도록 VM의 이름을 바꿉니다 ( '일반'설정의 '기본'탭에서 VM 이름을 변경할 수 있음).

  2. VM을 마우스 오른쪽 버튼으로 클릭하고 'Clone ...'명령을 실행하십시오.

    • 이름을 VM의 원래 이름으로 설정하십시오.
    • 나머지 기본값을 그대로 사용하십시오. 예 : 복제 유형 : 'Full clone'; 스냅 샷 : '현재 컴퓨터 상태'.
  3. 이전 VM을 삭제하십시오 (VM을 마우스 오른쪽 단추로 클릭하고 '제거 ...'명령을 실행하십시오).


0

호스트가 Windows이거나 Windows에서 VHD 파일에 액세스 할 수있는 경우 모든 변경 사항을 부모, 조부모 등으로 병합하는 방법이 있습니다.

DiskPart 도구와 두 가지 명령을 사용하고 있습니다.

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

여기서 #은 이동하려는 계층 수준의 수, 1은 부모의 경우, 2는 부모의 경우 등입니다.

그것은 복제하는 것보다 훨씬 시간이 덜 걸리며 제자리에 있습니다.

모든 중간 VHD를 병합 한 후에는 삭제할 수 있으며 (삭제하지는 않음) 병합 한 부모를 VirtualBox에 연결하는 것을 잊지 마십시오.

예:

Disk3.vhd는 Disk2.vhd의 하위이고 Disk2.vhd는 Disk1.vhd의 하위입니다.

Disk1.vhd에서 Disk3.vhd의 모든 변경 사항을 사용 depth=2하려면 Disk3.vhd를 사용 하고 선택하십시오. Disk1.vhd에서 Disk2.vhd의 모든 변경 사항을 원하면 depth=1select Disk3.vhd를 사용 하십시오.

또한 추악한 VirtualBox 스냅 샷이 필요하지 않다는 것을 기억하십시오. DiskPart create vdisk 명령을 사용하여 기존 디스크 (차이 디스크 등)에서 차등 디스크를 만들거나 거대한 트리를 만들 수도 있습니다.

나머지는 모두 : 포스터는 VDI가 아닌 VHD를 사용하므로 DiskPart 및 Disk Managment와 같은 기본 도구를 사용하여 게스트 (호스트가 Windows 인 경우 호스트)에서 해당 디스크에 액세스 할 수 있습니다.

포스터 : 병합하기 전에 항상 전체 백업을해야한다는 점을 기억하십시오. VirtualBox 클론은 제자리에서 작동하지 않고 새 파일 (쓰기시 복사)을 생성하지만 DiskPart 병합은 작동합니다 (파일 수정, 생성하지 않음) 새로운 것).

VHD / VHDX가 사용 중이므로 다른 접근 방식을 제공 할 수 있기를 바랍니다.

참고 : Windows 7 이상, XP 및 Vista는 외부 M $ 도구를 사용하여 VHD를 마운트 할 수 있지만 DiskPart는 XP 및 Vista에서 VHD를 지원하지 않습니다 ...이 모든 것은 Windows HOME 버전 (7 이상)에서도 작동합니다. 서버 에디션.

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