btrfs raid1 是不是不具备可用性?

2025 年 7 月 17 日
 kyonn

查了些资料, btrfs raid1 特性本身已经达到稳定状态, 但是不能跟 nocow 配合使用(异常 case 数据会损坏). 问题是 cow 碰到数据库或者 vm 性能就会非常差, 推荐做法就是关闭 cow.

难不成用 btrfs raid1 的就不用数据库了? 那局限性也太大了. 还是说顶着 cow 上数据库,但是每天 balance?

再加上 btrfs 的 raid1 跟 madam 还不一样, 只是保证数据在 2 个盘都有,不是镜像的概念, 如果一个盘挂了, 必须先 降级挂载才能恢复, 感觉 raid 的好处半点没捞着, 除了校验和能提前发现文件系统问题外, 感觉一无是处了.

先做 madam raid1,再在上面用 /dev/md0 做 btrfs 感觉更复杂了, 可不可靠也不知道.

ps: 只讨论 raid 的服务可持续, 备份由其他机制完成.

2051 次点击
所在节点    程序员
12 条回复
busier
2025 年 7 月 17 日
md 是一个很成熟的方案 怎么就不敢用了
kyonn
2025 年 7 月 17 日
@busier 不确定 md 搭配 btrfs 有没有坑. md 搭配 ext4 当然很成熟了.
busier
2025 年 7 月 17 日
在文件系统视角 不管看 md ,还是分区,还是裸磁盘都是块设备而已 没区别的

但是 md 终究没有 btrfs 内置的 raid 灵活

首选 btrfs 内置 raid1 (但不推荐更高级别的 raid )

但是你的需求需要 md+btrfs 也是没问题
msg7086
2025 年 7 月 18 日
数据库可以不用 btrfs 啊。很多系统会偏向使用单独的 db server 。
我司是 btrfs 重度用户,不过我们也不用 btrfs 内建 RAID ,都是下层分布式块存储,上面直接开 basic btrfs 。
你不考虑一下 zfs 吗? zfs on linux 也不错的。
YsHaNg
2025 年 7 月 18 日
保证两个盘都有不比镜像更好吗
kyonn
2025 年 7 月 18 日
@busier 从分层角度看没错的,实际两者总有个配合问题,查找资料过程也发现即使 btrfs raid 和裸磁盘搭配,也有个时钟问题需要保证的。分层总可能有不理想的情况会产生些许耦合。

似乎群晖的 raid 就是 mdam raid+btrfs 的形式,如果有大量的实践过就能放心一些。
kyonn
2025 年 7 月 18 日
@msg7086 没那么大规模, 单独 db server 不太现实.

我司是 btrfs 重度用户,不过我们也不用 btrfs 内建 RAID ,都是下层分布式块存储,上面直接开 basic btrfs 。
你不考虑一下 zfs 吗? zfs on linux 也不错的。
-- 那你们公司跟 cow 冲突的业务(比如 db/vm)是在分布式块存储的基础上开 basic btrfs + 禁用 cow ? 还是直接用了其他文件系统? 还是顶着 cow 用, 定期做碎片整理?


zfs on linux 没用过, 不熟悉, 之前了解到的唯一缺点是不方便扩容? 必须一次性把存储规模定下来建好?
kyonn
2025 年 7 月 18 日
@YsHaNg 镜像的话掉了一块还能继续用的, btrfs 那种方式挂了一块, 必须停机修复, 就失去了 raid 的作用. 不过了解到
YsHaNg
2025 年 7 月 18 日
@kyonn 我印象里可以 online rebalance 转换成 single 可以继续用
msg7086
2025 年 7 月 19 日
@kyonn 我司 db server 是单独的机子,btrfs 上只放普通文件。
kyonn
2025 年 7 月 19 日
@msg7086 了解了,我试试 zfs 。
kyonn
2025 年 7 月 19 日
@YsHaNg 了解了

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

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

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

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

© 2021 V2EX