V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
PhaSelEza
V2EX  ›  Linux

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

  •  
  •   PhaSelEza · 2023-02-20 09:47:17 +08:00 · 2211 次点击
    这是一个创建于 639 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    17 条回复    2023-10-25 14:27:03 +08:00
    tangbao
        1
    tangbao  
       2023-02-20 09:49:21 +08:00   ❤️ 1
    没有遇到过,文件系统只读我只在一台树莓派上碰到过,排查后是长时间写入导致卡坏了进入保护了😂
    yanqiyu
        2
    yanqiyu  
       2023-02-20 10:01:10 +08:00   ❤️ 1
    有没有完整的 log ,比如出现错误之前的没有完成的事务。
    可能是内存上的数据还没写回去就出错放弃了
    v2wtf
        3
    v2wtf  
       2023-02-20 10:08:16 +08:00   ❤️ 2
    还真有人敢用 btrfs 啊?想要这些高级文件系统特性的,老老实实上 ZFS 吧,性能是差一些,但是那种坚如磐石的感觉是多少性能都换不来的。
    feedcode
        4
    feedcode  
       2023-02-20 10:24:39 +08:00   ❤️ 3
    corrupt leaf 后面会跟原因的,如果是 invalid root item size 可以尝试更新下内核,之前有个 false alarm 被修掉了
    https://github.com/torvalds/linux/commit/1465af12e254#diff-21b5c65ce5cabfab40b020cac0ef6a62950d31ccc43859879bf7981e3e0135ff
    pagxir
        5
    pagxir  
       2023-02-20 10:33:24 +08:00 via Android   ❤️ 1
    我遇到过,用的上 5.15.29 的 kernel ,原因是磁盘(用了两年的叠瓦盘)问题。不过,btrfs 不稳定是真的,老版本内核遇到过 CPU 100%问题,遇到过数据莫名其妙全盘消失问题(只是执行 remount ),所以数据盘尽量不用 btrfs 。
    anytk
        6
    anytk  
       2023-02-20 10:43:37 +08:00   ❤️ 1
    挂载选项开了 autodefrag 没?开了建议关掉。
    我 btrfs 用在 U 盘系统上,也出现过只读挂载,发现跟休眠有关,后来卸载了 tlp 就好了。
    autodefrag 建议关掉,这个目前经常出现问题,现象是持续写入。
    anytk
        7
    anytk  
       2023-02-20 10:44:40 +08:00
    U 盘系统上 btrfs 用了两年多了,目前感觉还好,优势还是有的,比如透明压缩 zstd
    kkocdko
        8
    kkocdko  
       2023-02-20 10:45:26 +08:00 via Android
    @feedcode +1 ,之前很多人碰到过这个 bug
    PhaSelEza
        9
    PhaSelEza  
    OP
       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
        10
    ProPh3t  
       2023-02-20 12:55:13 +08:00
    别的不说,“文件系统被挂载为只读后重启”这个操作很不安全,给你挂成只读就是为了让你能够赶紧备份数据,你直接重启了,搞不好直接和数据说拜拜了。
    wellerman
        11
    wellerman  
       2023-02-20 14:43:55 +08:00
    老实用 EXT4 吧,就算把数据整没了,恢复也方便。
    MeteorCat
        12
    MeteorCat  
       2023-02-20 14:52:29 +08:00 via Android
    别用 btrfs ,家里常常断电之后引导错误再也无法启动,这文件系统就是坑人的
    deorth
        13
    deorth  
       2023-02-20 15:31:02 +08:00 via Android
    我用 btrfs_win 写入几十 g 后分区直接炸了
    zfs 虽好,内核没合并啊,有时要用个 liveCD 救引导的时候怎么办
    qdk0901
        14
    qdk0901  
       2023-02-20 16:49:27 +08:00
    zfs 也给我惹过大麻烦,差点把我公司的代码全干掉,搞了 2 天 2 夜,用尽了所有方法都不能成功挂载也不能恢复到之前的点
    最后终于以某种方式只读挂载成功了,幸运的把数据读了回来
    zfs 并非坚如磐石,它出问题的时候能帮你的人很少,你能找到的资料也很少,而且 zfs 的代码很少更新,看起来常年没人维护一样
    darrh00
        15
    darrh00  
       2023-02-20 17:00:04 +08:00
    好久之前用过一段时间的 btrfs ,中间出现过好几次错误,都恢复了。
    最后出现了某个错误(忘记具体错误是什么了),
    然后在网上找了一圈断断续续搞了一个礼拜没搞定就放弃了,
    没有备份,数据全丢,后来就老老实实 ext4 了。
    ferstar
        16
    ferstar  
       2023-02-21 08:55:02 +08:00
    这题我会啊,前阵子才修了一发,见: https://blog.ferstar.org/post/issue-75/
    Rorysky
        17
    Rorysky  
       2023-10-25 14:27:03 +08:00
    @qdk0901 linux 的 zfs 就是移植的 bsd 的,所以不怎么更新
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.