20260519

也许你知道, 我目前电脑上使用 windows + archlinux 双系统。后者作为主力系统,前者则负责跑一下只能在 windows 下跑的专业软件。前者使用的是 ntfs 文件系统,后者使用的是 btrfs 文件系统。我将前者 mount 到了 /c 目录下,于是我能使用我的 archlinux 访问我的 windows 中的文件。

然后某一天,我突发奇想,想在 windows 下也能访问 archlinux 的文件,于是我下载安装了 <www.github.com/maharmstone/btrfs> 项目,效果似乎很好,但在某一次浏览文件的时候,windows 系统突然发生了由 btrfs.sys 引发的系统崩溃。后来我再次启动 linux 系统时,遇到了 [FAILED] Failed to mount /sysroot 的问题,启动没有成功,甚至没有进入任何命令行界面。

首先,我尝试在 grub 中使用 timeshift 储存的较早的版本,但是在启动时遇到了同样的问题。(后来我知道,timeshift 运行在 btrfs 文件系统上,遇到了文件系统的问题导致备份也一并失效了)

我使用了我之前安装 arch 时制作的启动 u 盘,听取 deepseek 的建议,运行了btrfs rescue zero-log ,但是得到反馈 checksum verify failed on 612... Couldn't read tree root 。修复失败。随后我又在 deepseek 的提议下检查了几个相关文件系统检查。(期间 deepseek 还唆使我 btrfs restore 东西到 windows 系统里面,我没有这么做而是外接了一个新硬盘。)

无损的修复尝试似乎失败了,于是我使用 photorec 工具 photorec /dev/nvme1n1p3(deepseek 告诉我的方法),将我的 archlinux 系统中的文件备份到了一个外接硬盘里(不过文件存过去之后文件结构全都没了啊喂喂)。

备份完毕后,我尝试了 btrfs rescue super-recover /dev/nvme1n1p3 ,结果修复后挂载成功,重启后启动成功,有惊无险,可喜可贺。

此次遭遇后,接下来,我应该准备一个大一点的硬盘,每隔一段时间,做一次 btrfs send 异地备份整个文件系统。这样尽可能保证数据安全。

记录这次维护经历。

log