@
heimoshuiyu 你说的「缓存因为意外无法写入」,任何文件系统都存在这个问题,对缓存利用越激进(如 ZFS )就越容易有这个问题。但 btrfs 和 zfs 一样是抗断电的,它和 ZFS 一样有校验、有 CoW ,元数据默认存两份,虽然会炸,但也不是这个原因炸。
zfs 通常性能确实比 btrfs 好,这类 CoW 文件系统都无可避免地存在碎片化问题,zfs 靠缓存来弥补。btrfs 在这方面只能根据负载来手动优化。
比如你说 ls 一个 10000+ 文件的目录要 5s+,我猜是你没有启用 noatime 挂载,导致每次访问都会修改 atime ,在 HDD+小文件+CoW 的组合下,这简直就是灾难。
又比如你说 sqlite3 很慢,这也是碎片的锅,btrfs 确实不适合数据库这种负载。如果要用,建议使用 chattr +C 对数据库关闭 CoW ,可以有效提升性能。
btrfs raid1 没有读取加速是真的,但是 4 坏 2 就会导致数据全部丢失没听说过,那 2 块盘 raid1 岂不是一坏就炸 。btrfs 在降级状态默认会拒绝挂载,是不是和这个搞混了?
最终结论我没什么意见,我自己也是 nas zfs + PC btrfs 。