最近一段时间经常遭遇 kernel panic(Linux 内核崩溃)。电脑用着用着就没反应了。有时候键盘上的大小写锁定键等指示灯还是不停闪烁,然后过几分钟就自动重启;有时候这些症状也没有,而只是 CPU 风扇开始加马力,直到按电源键硬关机。这种非正常关机(unclean shutdown)还是会造成其它问题的。最常见的就是文件系统被迫坏。然后今天就碰到了我的根分区的 BtrFS 系统在重启过程中报告说 “Csum didn’t match”。根分区无法挂载。接着就只能进入应急模式了。
但是这个应急模式似乎很简陋,很多指令都没有。尝试了网上的几种修复手段都不管用。然后在 openSUSE 社区的 Carlos 建议下用安装光盘上的恢复模式看了看。可是他跟很多人一样,都说自从用 BtrFS 以来就没有遇到过问题。(果然还是我人品太差 :P)
然后又在手机上搜到了 BtrFS 的维基,其 Problem_FAQ 的第一条就是说遇到无法挂载的情况怎么办。然后我就在使用USB安装盘启动进入恢复模式的情况下试了试 mount
的 recovery
选项,
# mount -o recovery /dev/nvme0n1p6 /mnt
居然可以列表 /mnt
下面挂载的根分区的内容。看来文件系统还没问题,仅仅是 BtrFS 出了点故障。然后就 umount
。打算在这个环境下使用 btrfs
的 check
指令来看看怎么样。结果,
# btrfs check /dev/nvme0n1p6
直接报告没有任何问题。
完全莫名其妙,我只能猜测是之前使用 recovery
选项的挂载操作让 BtrFS 系统执行了自我修复。总不能是因为这个里面的 btrfs check
比系统无法启动显示的那个要强大吧?©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/a-csum-didnot-match-incident-of-btrfs/>。转载请保留此信息及相应链接。
引用通告: 再次因为内核崩溃导致 BtrFS 文件系统出问题 | 水景一页