查了些资料, btrfs raid1 特性本身已经达到稳定状态, 但是不能跟 nocow 配合使用(异常 case 数据会损坏). 问题是 cow 碰到数据库或者 vm 性能就会非常差, 推荐做法就是关闭 cow.
难不成用 btrfs raid1 的就不用数据库了? 那局限性也太大了. 还是说顶着 cow 上数据库,但是每天 balance?
再加上 btrfs 的 raid1 跟 madam 还不一样, 只是保证数据在 2 个盘都有,不是镜像的概念, 如果一个盘挂了, 必须先 降级挂载才能恢复, 感觉 raid 的好处半点没捞着, 除了校验和能提前发现文件系统问题外, 感觉一无是处了.
先做 madam raid1,再在上面用 /dev/md0 做 btrfs 感觉更复杂了, 可不可靠也不知道.
ps: 只讨论 raid 的服务可持续, 备份由其他机制完成.
1
busier 17 天前 via Android
md 是一个很成熟的方案 怎么就不敢用了
|
3
busier 17 天前 via Android
在文件系统视角 不管看 md ,还是分区,还是裸磁盘都是块设备而已 没区别的
但是 md 终究没有 btrfs 内置的 raid 灵活 首选 btrfs 内置 raid1 (但不推荐更高级别的 raid ) 但是你的需求需要 md+btrfs 也是没问题 |
![]() |
4
msg7086 17 天前
数据库可以不用 btrfs 啊。很多系统会偏向使用单独的 db server 。
我司是 btrfs 重度用户,不过我们也不用 btrfs 内建 RAID ,都是下层分布式块存储,上面直接开 basic btrfs 。 你不考虑一下 zfs 吗? zfs on linux 也不错的。 |
5
YsHaNg 17 天前 via iPhone
保证两个盘都有不比镜像更好吗
|
6
kyonn OP @busier 从分层角度看没错的,实际两者总有个配合问题,查找资料过程也发现即使 btrfs raid 和裸磁盘搭配,也有个时钟问题需要保证的。分层总可能有不理想的情况会产生些许耦合。
似乎群晖的 raid 就是 mdam raid+btrfs 的形式,如果有大量的实践过就能放心一些。 |
7
kyonn OP @msg7086 没那么大规模, 单独 db server 不太现实.
我司是 btrfs 重度用户,不过我们也不用 btrfs 内建 RAID ,都是下层分布式块存储,上面直接开 basic btrfs 。 你不考虑一下 zfs 吗? zfs on linux 也不错的。 -- 那你们公司跟 cow 冲突的业务(比如 db/vm)是在分布式块存储的基础上开 basic btrfs + 禁用 cow ? 还是直接用了其他文件系统? 还是顶着 cow 用, 定期做碎片整理? zfs on linux 没用过, 不熟悉, 之前了解到的唯一缺点是不方便扩容? 必须一次性把存储规模定下来建好? |