我的 Mac 上运行着 VMWare Fusion,运行的是 Windows 7 VM。我不小心关闭了 Mac,VM 映像无法正常恢复,导致我在该映像中处理的所有文件都丢失了。我有一个 2 个月前的快照,但我真的需要一堆从那时起在该快照上创建的文件。鉴于 vmdk 文件(或者可能是其他 VMWare 文件),是否有一个读取器可以用来浏览该硬盘,即使我无法让映像正常启动。或者还有其他方法可以读取文件系统吗?
奇怪的是,图像认为它处于暂停状态,因此我尝试“播放”虚拟机,结果运行时出现致命错误。
编辑:我尝试了下面的答案,它成功了。基于现有硬盘创建新的 VM 能够找到我的旧数据。有趣的是,当选择从哪个 vmdk 文件创建我的新 VM 硬盘时,VMWare Fusion 识别了几个可能的 vmdk 文件。看起来我制作的每个快照都创建了另一个有效的 vmdk 文件。我的 VM 名为“Windows 7”,并且我有名为“Windows 7-000001-s00x.vmdk”的 vmdk 文件,其中 x 是组成一个功能性 vmdk 组的一系列文件 - 对于每个组,只有一个 vmdk 文件被视为可以使用的基本文件(根名为“Windows 7-000001.vmdk”)。
我查看了每个有效 vmdk 文件的日期,并选择了虚拟机崩溃前的最后一个文件。虽然弹出了一些不相关的警告,但我还是能够找回所有丢失的信息。
答案1
如果致命错误来自 vmplayer 而不是 Windows vm,那么一个选项是创建一个新的 VM 并使用现有的 vmdk 作为其磁盘。如果是 vm 配置损坏,那么 vmdk 可能没问题。
如果错误来自 Windows,那么您可以使用连接到 VM 的 Windows CD 执行常规恢复类型的操作。
或者您可以创建一个全新的 Window VM 并将 vmdk 作为第二个磁盘添加其中。
很难猜测是 vmdk 损坏了还是其上的文件系统损坏了。
如果这些都不起作用,并且您手边有 qemu-img,您可以尝试将 vmdk 转换为平面磁盘映像文件,然后再转换回 vmdk 以查看它是否可以恢复数据:
http://en.wikibooks.org/wiki/QEMU/Images
这个故事的寓意是不要将文件存储在 VM 映像中 - 仅将映像用于操作系统,并将数据存储在本机磁盘上。这可以是您机器上的分区,也可以从 Mac OS 导出 Samba 共享并从 VM 访问它。