虚拟机磁盘文件误删恢复教程
⚠️ 立刻停掉所有虚拟机
如果 VMDK/VHD/VDI 虚拟磁盘文件在宿主机上被误删,马上关掉宿主机上所有正在运行的虚拟机。虚拟机在运行时会持续写入日志和快照,每一秒都可能覆盖被删的数据。
虚拟机数据丢失的两种场景
| 场景 | 数据在哪 | 恢复方法 |
|---|---|---|
| 宿主机上 VMDK/VHD 文件被误删 | 宿主机磁盘底层 | 用恢复软件扫描宿主机硬盘 |
| 虚拟机内部文件被误删 | 虚拟磁盘内部 | 和普通电脑恢复方法一样 |
💡 本文重点讲第一种——虚拟磁盘文件在宿主机上被删了。第二种情况的恢复方法和普通 Windows/Linux 恢复一样,参考对应的误删恢复教程即可。
情况一:宿主机上 VMDK/VHD 文件被误删除
恢复原理
虚拟机磁盘文件本质上就是一个大文件(通常几十 GB 到几百 GB)。在宿主机上删除它,等同于删除一个大文件——底层数据还在,只是文件索引没了。
有利条件:
- 虚拟磁盘文件通常很大,不容易被完全覆盖。
- 文件类型特征明显(VMDK 头、VHD footer 等),恢复软件能精准识别。
不利条件:
- 文件太大,恢复需要大量连续空闲空间,碎片化可能导致文件不完整。
- 如果被删后宿主机运行了其他虚拟机/下载了文件,部分扇区可能已被覆盖。
操作步骤:
- 如果宿主机还在运行,立即停止所有虚拟机,停止大文件写入操作。
- 下载恢复软件(推荐 EaseUS 或 DiskGenius),安装到另一块盘或 U 盘。
- 选中虚拟磁盘文件原来所在的分区,启动深度扫描。
- 按文件大小排序(虚拟磁盘文件通常几百 GB 到几 TB,是最大的那几个)。
- 恢复文件到另一块外接硬盘(空间足够大的),不要恢复到原宿主机盘。
- 恢复完成后,在 VMware/VirtualBox 中重新注册这个虚拟磁盘 → 开机验证。
VMware 与 VirtualBox 的不同
| 软件 | 磁盘文件 | 文件名特征 |
|---|---|---|
| VMware | .vmdk | 通常有多个:xxx.vmdk(描述文件)+ xxx-flat.vmdk(实际数据) |
| VirtualBox | .vdi / .vhd / .vmdk | 单文件 |
| Hyper-V | .vhdx / .avhdx | 差分磁盘检查点可能有多层 |
⚠️ VMware 的特殊之处:如果用的是"按需分配"模式,实际数据文件是
xxx-flat.vmdk(很大),而xxx.vmdk是个小文本描述文件。恢复时两个都要找回来,缺少任意一个都无法挂载。
情况二:虚拟机快照丢失/损坏
虚拟机的快照(Snapshot/Checkpoint)记录了虚拟磁盘的状态差异。如果快照文件丢失,虚拟机可能无法启动。
VMware:丢失快照描述文件
- 打开 VMware,看看虚拟机的目录下的
.vmsd和.vmsn文件还在不在。 - 如果这两个小文件(几 KB 到几十 MB 不等)被删了,但快照的 VMDK 数据文件还在:
- 用恢复软件扫描并恢复
.vmsd和.vmsn文件。 - 如果无法恢复,尝试创建一个新的快照文件指向已有的 VMDK 数据(高级操作,建议参考 VMware 社区论坛)。
- 用恢复软件扫描并恢复
VirtualBox:检查点是分支
VirtualBox 的检查点也是分支结构。丢失检查点后:
- 尝试用
VBoxManage clonehd命令直接克隆基础磁盘(跳过快照链)。 - 这能恢复"打快照之前"的数据状态,快照之后的修改会丢失。
新创建的空虚拟机说明
如果 VMDK 文件完全无法恢复,虚拟机就只能从头重建——但虚拟机里原来装的系统和软件全部丢失。这就是为什么虚拟机也要定期备份磁盘文件:
- 每周备份一次 VMDK/VHD 到外接硬盘。
- 重要虚拟机开启 VMware 的"保护策略"或定期导出 OVF。
常见问题
Q:虚拟机磁盘过大(500GB+),恢复软件扫描太慢了?
A:确实。可以先让 EaseUS/DiskGenius 运行快速扫描,列出删除文件列表。然后精准恢复特定的 .vmdk 文件,不用做全盘深度扫描。
Q:虚拟磁盘恢复后挂载提示"磁盘已损坏"?
A:说明恢复的文件不完整——部分扇区被覆盖了。可以用 VMFS Recovery 这类专为 VMware 设计的恢复工具尝试修复。如果修复失败,可以挂载到另一个虚拟机作为第二块硬盘,看能不能认出分区并提取部分文件。