btrfs 出现 corrupt leaf 的原因如何排查?

2023-02-20 09:47:17 +08:00
 PhaSelEza

入手一台 Xiaomi Book Air 13 ,装 Debian testing 并使用 btrfs 作为文件系统。SSD 为 KIOXIA KBG50ZNV512G 。

短时间内出现了两次 corrupt leaf ,文件系统被挂载为只读。

重启后一切正常,btrfs scrub 或 btrfs check 均检测不到错误,smartctl 显示的 SMART 数据也没有错误。

请教下各位,这种情况该如何排查故障原因?需要换硬盘吗?

1970 次点击
所在节点    Linux
17 条回复
tangbao
2023-02-20 09:49:21 +08:00
没有遇到过,文件系统只读我只在一台树莓派上碰到过,排查后是长时间写入导致卡坏了进入保护了😂
yanqiyu
2023-02-20 10:01:10 +08:00
有没有完整的 log ,比如出现错误之前的没有完成的事务。
可能是内存上的数据还没写回去就出错放弃了
v2wtf
2023-02-20 10:08:16 +08:00
还真有人敢用 btrfs 啊?想要这些高级文件系统特性的,老老实实上 ZFS 吧,性能是差一些,但是那种坚如磐石的感觉是多少性能都换不来的。
feedcode
2023-02-20 10:24:39 +08:00
corrupt leaf 后面会跟原因的,如果是 invalid root item size 可以尝试更新下内核,之前有个 false alarm 被修掉了
https://github.com/torvalds/linux/commit/1465af12e254#diff-21b5c65ce5cabfab40b020cac0ef6a62950d31ccc43859879bf7981e3e0135ff
pagxir
2023-02-20 10:33:24 +08:00
我遇到过,用的上 5.15.29 的 kernel ,原因是磁盘(用了两年的叠瓦盘)问题。不过,btrfs 不稳定是真的,老版本内核遇到过 CPU 100%问题,遇到过数据莫名其妙全盘消失问题(只是执行 remount ),所以数据盘尽量不用 btrfs 。
anytk
2023-02-20 10:43:37 +08:00
挂载选项开了 autodefrag 没?开了建议关掉。
我 btrfs 用在 U 盘系统上,也出现过只读挂载,发现跟休眠有关,后来卸载了 tlp 就好了。
autodefrag 建议关掉,这个目前经常出现问题,现象是持续写入。
anytk
2023-02-20 10:44:40 +08:00
U 盘系统上 btrfs 用了两年多了,目前感觉还好,优势还是有的,比如透明压缩 zstd
kkocdko
2023-02-20 10:45:26 +08:00
@feedcode +1 ,之前很多人碰到过这个 bug
PhaSelEza
2023-02-20 10:50:05 +08:00
@yanqiyu @feedcode
感谢,下次出现时我记录下具体的日志。刚用 stress-ng 圧测了一小时没有复现出这个问题。

@anytk
Debian 应该是没有开这个选项的:
/dev/nvme0n1p3 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=256,subvol=/@rootfs)
ProPh3t
2023-02-20 12:55:13 +08:00
别的不说,“文件系统被挂载为只读后重启”这个操作很不安全,给你挂成只读就是为了让你能够赶紧备份数据,你直接重启了,搞不好直接和数据说拜拜了。
wellerman
2023-02-20 14:43:55 +08:00
老实用 EXT4 吧,就算把数据整没了,恢复也方便。
MeteorCat
2023-02-20 14:52:29 +08:00
别用 btrfs ,家里常常断电之后引导错误再也无法启动,这文件系统就是坑人的
deorth
2023-02-20 15:31:02 +08:00
我用 btrfs_win 写入几十 g 后分区直接炸了
zfs 虽好,内核没合并啊,有时要用个 liveCD 救引导的时候怎么办
qdk0901
2023-02-20 16:49:27 +08:00
zfs 也给我惹过大麻烦,差点把我公司的代码全干掉,搞了 2 天 2 夜,用尽了所有方法都不能成功挂载也不能恢复到之前的点
最后终于以某种方式只读挂载成功了,幸运的把数据读了回来
zfs 并非坚如磐石,它出问题的时候能帮你的人很少,你能找到的资料也很少,而且 zfs 的代码很少更新,看起来常年没人维护一样
darrh00
2023-02-20 17:00:04 +08:00
好久之前用过一段时间的 btrfs ,中间出现过好几次错误,都恢复了。
最后出现了某个错误(忘记具体错误是什么了),
然后在网上找了一圈断断续续搞了一个礼拜没搞定就放弃了,
没有备份,数据全丢,后来就老老实实 ext4 了。
ferstar
2023-02-21 08:55:02 +08:00
这题我会啊,前阵子才修了一发,见: https://blog.ferstar.org/post/issue-75/
Rorysky
187 天前
@qdk0901 linux 的 zfs 就是移植的 bsd 的,所以不怎么更新

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917501

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX