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

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

我的 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

(询问于服务器故障但决定这个地方更适合回答这个问题)

答案1

找到解决方案了。它和我在这里写的命令的最后一步一样简单。即

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

因此我应该只克隆最后一个快照,而不是链中的所有快照。这样速度会快上千倍。

可以从以下位置找到 uuidVBoxManage list hdds | grep VmName | tail

在 GUI(在 Windows 上)中,选择 VM,选择快照在右上角,右键单击所需的快照,选择克隆...,然后选择完整克隆在对话框中。

答案2

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

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

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

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

答案3

您可以尝试出口光学成像进而进口返回生成的文件。

正如解释的那样这里

OVF 无法描述为虚拟机拍摄的快照。因此,当您导出具有快照的虚拟机时,只会导出该机器的当前状态,并且导出中的磁盘映像将具有与虚拟机当前状态相同的“扁平”状态。

结果您将拥有一个具有当前状态的克隆虚拟机,而没有其他快照。

答案4

有些有 10Gib/s 的 LAN,因此它每秒可以传输超过 1 GB,所以不会成为瓶颈。

有些有 1Gib/s 的 LAN,因此每秒可以传输超过 100 兆字节,所以它不会成为瓶颈(除非你有一个非常快的 SSD)。

机械磁盘,当同时在同一磁盘上进行读写(或碎片很多)时,速度会接近每秒 20 兆字节,而在非碎片化磁盘上,仅读取或仅写入速度可以达到每秒 100 兆字节以上。

您说 LAN 速度较慢,但​​没说 USB(2.0,更不用说 1.1 或 1.0)速度要慢很多倍。

我的建议是:使用 USB 3.1 Gen2 Type C 或 eSATA / SATA / SAS

但始终:使用第二个足够快的磁盘。

并且始终:克隆到另一个磁盘并将文件复制回来比仅使用其中一个磁盘要快得多,除非它是 SSD 或具有独立多头臂的硬盘(它们可以在两个表面位置同时读取和写入,每个头都有自己的臂,非常昂贵,大约 >9876 欧元)。

最好的方法是只克隆您想要的状态的虚拟硬盘,然后检查它是否正常工作,然后恢复顶层(将删除所有快照),然后移除存储上的硬盘并连接新的硬盘。

因此,在没有树快照方案的情况下丢失所有旧状态的步骤如下:

  1. 从一个硬盘克隆到另一个硬盘,避免瓶颈
  2. 创建一台新机器,连接该磁盘,断开连接,将其配置为不可变
  3. 测试它是否有效(因为它是不可变的),你将拥有相同的状态
  4. 如果您需要它不是不可变的,请断开它,改回正常等等。
  5. 删除旧的机器快照(先恢复)
  6. 删除临时测试机
  7. 将虚拟磁盘复制回磁盘
  8. 附加克隆的磁盘

但始终要记住,快照可以像一棵完整的树,一个节点可以有多个子节点,每个子节点可以有多个子节点,等等。

要使用快照树,总是认为 DELETE 是删除一个节点而不影响其余节点(只丢失该状态,但不影响其余节点,不会影响父节点和子节点,数据将合并到所有第一个子级别的子节点上,因此过程很慢)并且 RESTORE 是销毁所有子级别的所有子节点(恢复后会丢失所有状态,只会删除文件,因此过程非常快,只需几秒钟)。

那是!

PD:VBOX 给这两个操作起的名字太可怕了(删除一个节点 = DELETE;删除所有子级别的所有子节点 = RESTORE)

相关内容