將 virtualbox 快照重新設定為另一個父級

將 virtualbox 快照重新設定為另一個父級

我過度使用 VirtualBox 快照(用於 CI 建構器),因此通常在單一虛擬機器上有多個快照。我經常發現自己從現有快照中「分叉」出一個新快照,例如用於更新系統:

base
└── A
    └── A1

更新完成後,我將父快照替換為其子快照,只需刪除A,VirtualBox 將合併變更集base->AA->A1

base
└── A1

涼爽的。

但是,有時我想建立一個新的快照子樹,即起初一些快照的分叉,並獲得自己的生命:

例如

base
└── A
    ├── A1
    └── B
        └── B1

現在:這很快就會變得醜陋(因為我不斷更新子樹),最終我喜歡清理快照樹,所以它變成:

base
├── A1
└── B1

不幸的是,VirtualBox 不允許我刪除快照,A並出現以下錯誤:

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->A1base->A->B)。這可能會增加快照大小,但我可以愉快地接受這一點(並希望透過減少 FS 層我能獲得更好的效能)

那麼:如何將快照重新設定為父快照,同時保持同級快照完好無損?

答案1

您可以基於快照建立完整的虛擬機器克隆。新虛擬機器將不會有任何快照。唯一的其他方法是取消註冊 VM,然後透過使用vboxmanage磁碟映像並編輯 VM 的 XML 檔案自行完成所有工作。

相關內容