VirtualBox에서 스냅 샷을 병합하는 가장 빠른 방법은 무엇입니까?


48

나는 많은 스냅 샷을 가진 vdi를 가지고 있습니다-예를 들어 50 또는 70 개의 스냅 샷. 현재 상태의 하나의 일반 vdi를 원합니다. 이러한 스냅 샷은 디스크 공간을 너무 많이 차지하므로 스냅 샷으로 필요하지 않습니다.

전화하면

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing

내가 원하는 것을 얻을 것이다. 그러나 매우 오랜 시간이 걸립니다 (하드웨어 및 16G 초기 디스크 크기로 인해 5 시간 이상 소요).

그리고 물론 시도했지만 VBoxManage snapshot delete이상한 일입니다. 중지 된 시스템에서 작동하지 않고 시스템 실행시 실패 할 수 있으며 한 번 실패하면 모든 후속 호출에 실패합니다.

여러 스냅 샷에서 일반 vdi를 만드는 방법이 있습니까?

$ VBoxManage --version
3.2.14r75509

( ServerFault 에서 질문 했지만이 질문 이이 질문에 더 적합하다고 결정했습니다)


사용하는 명령은 더 빠른 방법이 아닌 사용하려는 명령입니다.
Ramhound

전체 VM을 내보내는 것은 어떻습니까? VDI에 내가 원하는 것을 포함합니까?
Andrey Regentov

당신은 그것을 시도해야합니다. 결국 가상 머신의 크기 때문에 다른 방법은 여전히 ​​시간이 걸릴 것입니다.
Ramhound

답변:


53

해결책을 찾았습니다. 여기에 쓴 명령의 마지막 단계만큼 간단합니다. 즉

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi

따라서 체인의 모든 스냅 샷이 아닌 마지막 스냅 샷 만 복제해야합니다. 그리고 그것은 수천 퍼센트 빠릅니다.

UUID에서 찾을 수 있습니다 VBoxManage list hdds | grep VmName | tail

GUI (Windows의 경우)에서 VM을 선택 하고 오른쪽 상단 에서 Snapshots 를 선택하고 원하는 스냅 샷을 마우스 오른쪽 단추로 클릭 한 다음 Clone ... 을 선택 하고 대화 상자에서 Full Clone 을 선택하십시오 .


thx이지만 설정에서 작동하지 않습니다. 이미지가 이미 존재한다고 말합니다. -기존을 잊었습니까?
Andy

3
thedisk-full.vdi디스크에 이미 파일 이 있다면 먼저 명령의 이름을 다음과 같이 변경하십시오 thedisk-full-new.vdi.
Andrey Regentov

전체 경로는 물론 VirtualBox에 등록 된 경로 여야합니다. VBox가 모든 스냅 샷을 조회해야하기 때문에 심볼릭 링크가 작동하지 않습니다.
Andy

꼬리가 무엇인지 잘 모르 tail -1시겠습니까 , " "을 ( 를) 의미 합니까?
eckes

1
VirtualBox 5에서는 clonehd더 이상 사용되지 않으며 이전 버전과의 호환성을 위해 남겨두고 clonemedium대신 사용하십시오.
George Sovetov

22

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

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

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

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


VirtualBox 6.0.8부터는 여전히 작동합니다.
Paul Sturm

3

당신은 시도 할 수 수출OVF 다음 가져 생성 된 파일을 다시.

여기에 설명 된대로 :

OVF는 가상 머신에 대해 작성된 스냅 샷을 설명 할 수 없습니다. 결과적으로 스냅 샷이있는 가상 시스템을 내 보내면 시스템의 현재 상태 만 내보내지고 내보내기의 디스크 이미지는 가상 시스템의 현재 상태와 동일한 "평평한"상태가됩니다.

결과적으로 다른 스냅 샷없이 현재 상태로 복제 된 VM을 갖게됩니다.


컴퓨터를 내보낼 수 없기 때문에 vdis에 대해 묻습니다. 컴퓨터가 고장 나고 (호스트 재부팅 후 액세스 할 수없는 상태), VDI (디스크 및 약 50 개의 스냅 샷)였습니다.
Andrey Regentov

0

이 작업은 동일한 물리 디스크에서 매우 큰 파일을 읽고 쓰는 것을 의미합니다. 속도를 높일 수있는 유일한 방법은 해당 파일을 다른 디스크에 넣어 VBoxManage 명령의 경로를 변경하는 것입니다. 머신에 하나의 디스크 만있는 경우 네트워크 속도에 따라 네트워크 공유를 통해 외부 USB 드라이브 또는 다른 머신의 디스크를 사용할 수 있습니다.


1
일반적으로 네트워크는 내부 HDD 인터페이스보다 수십 배 느리므로 프로세스 속도가 빨라지지 않을 수 있습니다.
Andrey Regentov

-2

일부에는 10Gib / s LAN이 있으므로 초당 1 기가 바이트 이상을 전송할 수 있으므로 병목 현상이 발생하지 않습니다.

일부에는 1Gib / s LAN이 있으므로 초당 100MB 이상을 전송할 수 있으므로 병목 현상이 발생하지 않습니다 (실제로 SSD가 빠르지 않은 경우).

기계 디스크는 동일한 디스크에서 동시에 읽기 또는 쓰기 (또는 많은 조각화)시 초당 20MB 근처로 내려가는 반면, 조각화되지 않은 읽기 전용 또는 쓰기에서만 초당 100MB 이상으로 나올 수 있습니다.

LAN에 대해서는 느리지 만 USB (1.1, 1.0은 말할 것도없고 2.0)는 훨씬 느리다고 말합니다.

내가 제안 할 것은 : USB 3.1 Gen2 Type C 또는 eSATA / SATA / SAS 사용

그러나 항상 : 두 번째로 빠른 디스크를 사용하십시오.

그리고 항상 : 다른 디스크로 복제하고 파일을 다시 복사하는 것은 SSD 또는 독립적 인 멀티 헤드 암이있는 하드 디스크가 아닌 경우 디스크 중 하나만 사용하는 것보다 훨씬 빠릅니다 (두 개에서 동시에 읽고 쓸 수 있음) 표면은 각 헤드마다 고유 한 팔을 가지고 있으며 매우 비싸며 약 9876 €이다.

가장 좋은 방법은 원하는 상태의 가상 하드 디스크 만 복제 한 다음 작동 상태를 확인한 다음 최상위 수준 복원 (모든 스냅 샷 삭제), 스토리지에서 HDD를 제거하고 새 하드 디스크를 연결하는 것입니다.

따라서 트리없는 스냅 샷 구성표에서 이전 상태를 모두 해제하는 단계 :

  1. 하나의 디스크에서 다른 디스크로 복제, 병목 현상 방지
  2. 새 머신을 생성하고 해당 디스크를 연결하고 연결을 끊고 변경 불가능한 것으로 구성
  3. 그것이 작동하는지 테스트하십시오 (불변이기 때문에) 당신은 같은 상태를 가질 것입니다
  4. 변경할 수없는 것이 필요하면 연결을 끊고 다시 정상으로 변경하십시오.
  5. 이전 머신 스냅 샷 삭제 (먼저 복원)
  6. 임시 테스트 머신 삭제
  7. 가상 디스크를 디스크에 다시 복사
  8. 복제 된 디스크 연결

그러나 항상, 스냅 샷은 풀 트리와 같을 수 있고, 하나의 노드에 둘 이상의 자식이있을 수 있고, 각 자식에 둘 이상의 자식이있을 수 있습니다.

snoapshots 트리를 사용하기 위해 항상 DELETE는 나머지 노드를 제거하지 않고 노드를 삭제하는 것으로 생각합니다 (해당 상태는 느슨하지만 부모는 없으며 자식도 비우지 않습니다. 데이터는 모든 첫 번째 하위에 병합됩니다) 레벨 하위 항목이므로 프로세스가 느리게) 및 RESTORE에서 모든 하위 레벨의 모든 하위 항목을 삭제합니다 (복원 한 후 모든 상태를 잃어 버리면 파일 만 삭제되므로 초 단위로 빠르게 처리됩니다).

그건!

PD : VBOX가 그 두 가지 작업에 부여한 끔찍한 이름 (하나의 노드 만 삭제 = 삭제, 모든 하위 레벨에서 모든 하위 노드 삭제 = RESTORE)


복원은 스냅 샷을 삭제하지 않고 현재 (저장되지 않은) 상태 만 삭제합니다.
Melebius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.