저는 VirtualBox 스냅샷(CI 빌더에서 사용하기 위해)을 과도하게 사용하고 있으므로 일반적으로 단일 VM에 여러 개의 스냅샷이 있습니다. 종종 시스템 업데이트 등을 위해 기존 스냅샷에서 새 스냅샷을 "포크"하는 경우가 있습니다.
base
└── A
└── A1
업데이트가 완료되면 간단히 제거하여 상위 스냅샷을 하위 스냅샷으로 대체하고 VirtualBox는 변경 세트 와 A
다음을 병합합니다 .base->A
A->A1
base
└── A1
시원한.
그러나 때로는 새로운 스냅샷 하위 트리를 만들고 싶을 때가 있습니다.원래일부 스냅샷을 포크하고 고유한 생명력을 얻습니다.
예:
base
└── A
├── A1
└── B
└── B1
이제: 이것은 곧 보기 흉해지며(하위 트리를 계속 업데이트함에 따라) 결국 스냅샷 트리를 정리하고 싶으므로 다음과 같이 됩니다.
base
├── A1
└── B1
A
안타깝게도 VirtualBox에서는 다음 오류로 인해 스냅샷을 삭제할 수 없습니다 .
Snapshot 'A' of the machine 'vagrantbox' cannot be deleted, because it has 2 child snapshots, which is more than the one snapshot allowed for deletion.
이론적으로는 스냅샷 삭제에 아무런 문제가 없습니다 A
. VirtualBox는 스냅샷 병합을 두 번( base->A->A1
및 base->A->B
) 수행하면 됩니다. 이렇게 하면 스냅샷 크기가 커질 수 있지만 만족스럽게 사용할 수 있습니다. (그리고 FS 레이어를 줄임으로써 더 나은 성능을 얻을 수 있기를 바랍니다.)
그렇다면 형제 스냅샷은 그대로 유지하면서 스냅샷을 상위 스냅샷으로 리베이스하려면 어떻게 해야 할까요?
답변1
스냅샷을 기반으로 전체 VM 클론을 만들 수 있습니다. 새 VM에는 스냅샷이 없습니다. 유일한 다른 방법은 VM 등록을 취소한 다음 vboxmanage
디스크 이미지를 사용하고 VM의 XML 파일을 편집하여 모든 작업을 직접 수행하는 것입니다.