如何在 VirtualBox 中恢复中断的快照合并?

如何在 VirtualBox 中恢复中断的快照合并?

我有一台连接了两个硬盘的虚拟机。

使用此设置我制作了 7 张快照并想删除第三张。

合并过程中VBoxSvc发生崩溃,留下一个(希望成功)合并的硬盘 2、一个未合并的硬盘 1 和一个虚拟机,该虚拟机仍将快照列为当前状态。

  1. 我无法再次删除快照,因为硬盘 2 现在缺少相关的快照-vdi。
  2. 我无法使用硬盘 2,因为 VM 认为它需要已删除的快照 vdi。

是否可以以与硬盘 2 相同的方式合并硬盘 1,然后手动编辑 .vbox 文件以从中删除快照,从而完成快照删除过程?

截图:https://i.stack.imgur.com/FEAJi.jpg

答案1

我认为我已经通过以下步骤解决了该问题:

VM 名称:Workbench64
带有快照部分的完整硬盘:HDD1
已合并的硬盘,不含该特定快照部分:HDD2

  1. 我备份了虚拟机目录Workbench64,以防进一步损坏
  2. 我检查了 VBox Gui 中损坏的快照,通过右键单击它并选择“快照详细信息”来查找丢失的 vdi 部分的 UUID。如果无法访问连接的存储设备,其 UUID 将以粗体显示。我的是 {5c95...}
  3. 我关闭了 VBox Gui,这样它就不会覆盖该 Workbench64.vbox文件。
  4. 我将HDD2.vdi文件移出了Workbench64VM 目录。(也许没有必要)
  5. Workbench64.vbox在文本编辑器中打开了该文件,并搜索了出现的次数{5c95...}(显然是整个 UUID)。第一次出现是在<HardDisks>部分中。它看起来会像这样:
    <HardDisk uuid="{5c95...}" location="Snapshots/{5c95...}.vdi" format="VDI">
    如果末尾有一个/>,则删除整行。如果末尾没有/>,就像我的例子一样,删除整行和</HardDisk>下面的一行(哪一行无关紧要,但为了更加确定,请使用与您删除的行具有相同缩进级别(前面有空格)的行)。

  6. 下一次出现应该在<Image>与此类似的标签中:
    <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device=0"> <Image uuid="{5c95...}" /> </AttachedDevice">
    删除<Image>标签和周围的<AttachedDevice>[...]</AttachedDevice>标签。 仅搜索您正在搜索的 UUID,其他的不管!) 这将从 VM-Snapshot 中删除缺失的快照 vdi-part。

  7. 保存文件并退出文本编辑器。
  8. 打开 VBox Gui 并再次检查虚拟机中快照的详细信息,看看它是否仍在抱怨缺少 vdi-part。(它不应该。)
  9. 现在尝试删除/合并快照。它应该将(在我的情况下)的 vdi 部分合并HDD1到其中并从虚拟机中删除快照。

如果一切顺利,您现在HDD1也已合并,并且 VM 没有损坏的快照。HDD2.vdi如果您按照步骤 4 操作,请返回 VM 文件夹,它应该会启动到您在该 VM 上的最新状态/快照。

我似乎没有丢失任何数据,因为快照合并在实际合并之间崩溃了,所以也许我只是很幸运。

相关内容