我希望我们遇到了一个可以恢复的问题。我们遇到了驱动器崩溃问题,结果发现 VM 和 VHD 的导出/备份在中途失败了(当然没有人检查日志)。所以没有干净的方法来实现这一点。我们丢失的是 Hyper-V 程序及其用于配置的所有文件。
这是在 Windows 11(最新版本)上。都在同一台电脑上,我们丢失的是电脑上的SSD。损坏的驱动器是 C: 驱动器,因此我们丢失了所有 Hyper-V 安装、注册表、AppData 文件夹等。
我们仍然拥有 VM 和 VHD 文件。数据。它们位于 D: 驱动器上。而我们需要的是虚拟光驱。如果我们找回虚拟机,那就太好了。但我可以创建一个新的虚拟机。不过我需要 VHD 上的数据。
VM 有 10 个左右的检查点,因此在 Hyper-V 中,检查点树是一系列降序的节点,每个节点都有一个子节点。那个孩子有一个孩子。和...
我创建了一个新的虚拟机并将其指向 VHDX 文件。没有运气。开机时它说找不到可启动媒体。这是我拥有的文件:
虚拟硬盘
虚拟机
快照
有办法恢复吗?我不太了解 Hyper-V,但我猜测 VHD 文件的集合确实有驱动器映像。但是告诉 Hyper-V 使用所有这些 - 如何呢?
现在数据很可能已被破坏。VHDX 充当所有 AVHDX 文件的根。如果连接到它并尝试从它启动,即使修改了一点点,AVHDX 的整个子树也会被破坏。第三方数据恢复工具是存在的,但不可能说你使用它们的运气如何。
将来,您应该尝试重新安装 Hyper-V 并运行虚拟机导入,指向 VM 的根文件夹。导入可以弄清楚快照状态并自动拼凑快照树。尽管我怀疑你能否恢复任何东西,但你至少应该用你现在拥有的东西尝试一下。它至少应该能够检测到虚拟机。它将尝试连接到它确定的活动虚拟机,而该虚拟机又将引用最近活动的 AVHDX。然后,它将沿着其父树一直回到根 VHDX。如果您足够幸运,连接和引导尝试没有修改任何内容,那么一切都会正常工作。然后,您可以删除所有快照,Hyper-V 将自行合并并展平所有内容。
如果您想尝试从组成的 VHDX 和 AVHDX 文件重建完整的 VHDX,则需要通过Get-VHD运行每个 AVHDX 。每个都有一个ParentPath属性:
找到没有其他 AVHDX 将其作为父项指向的 AVHDX。这将是链条中的最后一个。向后推导,直到您以相反的顺序了解整个链条。您可能可以按修改日期工作,但 ParentPath 是一个更可靠的指示器。一旦合并,就无法返回,所以第一次就做对。合并命令不会检查您正在处理的磁盘文件是否有自己的子文件。如果它有一个父级,它会将其合并到该父级中,从而有效地孤立它所拥有的所有子级。您可以使用Set-VHD重新设置孤立 VHDX 的父级,但这只是额外的繁忙工作,而且您必须知道新父级是谁,否则您必须一次检查一个可用的磁盘文件,直到获得对的。
一旦您知道了父级顺序,请使用Merge-VHD,从无子级 AVHDX 开始。
如果成功,这将自动删除合并的子 AVHDX。转到列表中的下一个。
在这种情况下,我怀疑最终合并将失败,因为 VHDX 可能已被修改并且其子级不再对齐。但是,在你尝试之前你不会知道。