# VHDX 损坏：6 万文件 PhotoRec 抢救实录

> WSL2 虚拟磁盘损坏，1TB VHDX 只剩 ext4 元数据坏。从 exFAT 连锁故障到 e2fsck 误操作，最后 PhotoRec 只读 raw carving 恢复 6 万多个文件。

![VHDX 数据恢复流程示意图](/assets/articles/lcz/vhdx-recovery/hero.jpg)

> WSL2 虚拟磁盘损坏，1TB 的 VHDX 只剩 ext4 元数据损坏。从 e2fsck 误操作到 PhotoRec 恢复 6 万多个文件——一次完整的"数据抢救"实录。

## 事故经过

WSL2 Ubuntu 突然无法启动，报错 `WSL_E_DISK_CORRUPTED`。检查发现宿主 E 盘是 exFAT 格式，chkdsk 报告卷位图损坏 + 交叉链接——**宿主文件系统损坏连带拖垮了 ext4.vhdx**。

## 踩的坑：e2fsck -f -y 是毁灭性操作

最初 `e2fsck -fn` 检查显示 superblock 损坏。之后误执行了 `e2fsck -f -y`（自动修复），结果：

- Root inode 被重写
- 根目录基本只剩空的 lost+found
- ext4 元数据被进一步破坏

**教训：损坏的 ext4 盘上，永远不要跑 `e2fsck -f -y`**——它会把"坏但还有救"的元数据直接覆盖掉。正确做法是**先 dd 完整克隆磁盘**，再在克隆上折腾。

## 最终恢复方案：PhotoRec raw carving

放弃恢复 ext4 目录结构后，改用 PhotoRec 对 /dev/sdd 做 raw carving（只读，不做任何写操作）：

```bash
# 只读挂载旧盘
wsl --mount "E:\WSL\Ubuntu-24.04\ext4.vhdx" --vhd --bare
# PhotoRec 对整个 1099GB 做 raw carving
# 恢复结果写到健康的 D 盘
D:\HermesRecovery.1
D:\HermesRecovery.2
...
```

结果：恢复出 **6 万多个文件**（.txt、.py、.gz、.sqlite、.java 等），目标 `~/.hermes/skills/` 的 custom skills 在恢复文件中找到了。

## 三条经验

1. **exFAT 上放 WSL VHDX 是高风险操作**：exFAT 没有日志机制，一旦宿主卷损坏，VHDX 必然跟着完蛋
2. **损坏磁盘只读，不写**：任何"自动修复"都可能把最后一丝元数据覆盖掉
3. **PhotoRec 是最后手段但真的有效**：不依赖文件系统结构，靠文件头签名扫，ext4 全坏也能救回大部分文件内容


---
来源：https://laobanclaw.top/articles/vhdx-corruption-photorec-recovery/（AI 军火库）
