
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(只读,不做任何写操作):
# 只读挂载旧盘
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 在恢复文件中找到了。
三条经验
- exFAT 上放 WSL VHDX 是高风险操作:exFAT 没有日志机制,一旦宿主卷损坏,VHDX 必然跟着完蛋
- 损坏磁盘只读,不写:任何"自动修复"都可能把最后一丝元数据覆盖掉
- PhotoRec 是最后手段但真的有效:不依赖文件系统结构,靠文件头签名扫,ext4 全坏也能救回大部分文件内容