VHDX 数据恢复流程示意图

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(自动修复),结果:

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

最终恢复方案:PhotoRec raw carving

放弃恢复 ext4 目录结构后,改用 PhotoRec 对 /dev/sdd 做 raw carving(只读,不做任何写操作):

# 只读挂载旧盘
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 全坏也能救回大部分文件内容