前几天升级到 openSUSE Tumbleweed 20201130 快照之后就频繁遇到内核崩溃的问题。也就是说 Linux Kernel 5.9.11 带来了这个情况。我没开启内存转储,反正也看不懂。于是紧接着升级到 Linux Kernel 5.9.12,Kernal Panic 没那么频繁了,但是一天里总会遇到那么一两次。这一波的内核崩溃也同样引发了 BtrFS 文件系统故障,跟上一次还是有点不一样。
正在使用电脑的时候突然就会停止响应,绝大多数时候还能看到键盘上的大写字母锁定指示灯缓慢闪烁。大约一分钟后自动关机并重启。系统启动时会卡死在
sd 0:0:0:0: [sda] Attached SCSI removable disk
还有时候重启也只是闪一下就立即再重启(1秒钟,能看到灯亮了一瞬间)。这时候就需要长按电源键来强制彻底关机了。之后多半能够再开机进入启动程序。
因为系统启动不起来,所以还是同样的需要用安装 DVD 镜像来制作一个 U 盘安装来进入 Rescue 模式。进入 Rescue 模式后使用空密码登录 root 帐户开始检查和尝试修复。有了之前的经验,先检查是不是根分区所在的 BtrFS 文件系统的问题。
# btrfs check /dev/nvme0n1p6
检查显示没问题。然后尝试挂载到 /mnt,
# mount -o recovery /dev/nvme0n1p6 /mnt mount.bin: /mnt: can't read superblock on /dev/nvme0n1p6
所以虽然 btrfs 检查没问题,但是无法挂载。看来这个 BtrFS 系统的确还不够成熟。
下面尝试修复,
# btrfs rescue super-recover -v /dev/nvme0n1p6
结果它说 “All supers are valid, no need to recover”。
找了找论坛,说是下面这个指令多半有用,
# btrfs rescue zero-log /dev/nvme0n1p6
接着再挂载试试看,
# mount -o recovery /dev/nvme0n1p6 /mnt
成功了。还真有用。
不过也不能说是 Kernel Panic 造成的 BtrFS 损坏。它可能只是间接原因,而直接原因可能是直接断电关机吧。
果然 Tumbleweed 还是会偶尔出点儿让人崩溃的问题。可是貌似直接换软件源来切换到 Leap 15.2 并不是很保险,决定还是等等看。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/root-partition-btrfs-superblock-problem/>。转载请保留此信息及相应链接。