将 VirtualBox 快照重新定位到另一个父级

将 VirtualBox 快照重新定位到另一个父级

我过度使用 VirtualBox 快照(用于 CI 构建器),因此通常在单个 VM 上会有很多快照。我经常会从现有快照中“分叉”出新快照,例如用于更新系统:

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 克隆。新 VM 将没有任何快照。唯一的其他方法是取消注册 VM,然后通过使用vboxmanage磁盘映像并编辑 VM 的 XML 文件自己完成所有工作。

相关内容