在 VirtualBox 中合并所有快照的最快方法?

And*_*tov 54 performance virtualbox virtualization snapshot

我有 vdi 从中获取了相当多的快照 - 例如,50 或 70 个快照。我想要一个具有当前状态的普通 vdi。这些快照占用太多磁盘空间,不需要作为快照。

我知道如果我打电话

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing
Run Code Online (Sandbox Code Playgroud)

我会得到我想要的。但这需要很长时间(考虑到我的硬件和 16G 初始磁盘大小,超过 5 小时)。

而且,当然,我尝试过VBoxManage snapshot delete,但很奇怪:在停止的机器上不起作用,在正在运行的机器上可能会失败,一旦失败,所有后续调用都会失败。

有没有办法从多个快照中制作普通的 vdi - 更快?

$ VBoxManage --version
3.2.14r75509
Run Code Online (Sandbox Code Playgroud)

(在ServerFault上问过,但决定这个地方更适合这个问题)

And*_*tov 58

找到了解决办法。它就像我在这里写的命令的最后一步一样简单。IE

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi
Run Code Online (Sandbox Code Playgroud)

所以我应该只克隆最后一个快照,而不是链中的每个快照。而且它的速度要快数千%。

uuid 可以从 VBoxManage list hdds | grep VmName | tail

在 GUI(在 Windows 上)中,选择 VM,从右上角选择Snapshots,右键单击您想要的快照,选择Clone...,然后在对话框中选择Full Clone

  • 如果您已经在磁盘上有 `thedisk-full.vdi` 文件,那么请先将命令中的名称更改为类似 `thedisk-full-new.vdi` 的名称。 (3认同)
  • 在 VirtualBox 5 中,不推荐使用 `clonehd` 并保留向后兼容性,请改用 `clonemedium`。 (2认同)

小智 25

这是一种技术(在 VirtualBox 4.3.4 上测试),它使用“克隆”命令将所有快照合并并压缩到包含单个 VDI 文件的新 VM:

  1. 重命名 VM,以便您可以为克隆的 VM 重用其当前名称(您可以从“常规”设置的“基本”选项卡更改 VM 名称)。

  2. 右键单击 VM 并运行“克隆...”命令:

    • 将名称设置为 VM 的原始名称。
    • 接受其余的默认值,即克隆类型:“完整克隆”;快照:“当前机器状态”。
  3. 删除旧 VM(右键单击 VM 并运行“删除...”命令)。