Btrfs 位于 mdadm raid10 之上,还是 btrfs raid10 位于裸设备上?

Btrfs 位于 mdadm raid10 之上,还是 btrfs raid10 位于裸设备上?

我有一个由 管理的 RAID10,mdadm并在其上安装了 EXT4 文件系统。但是,我喜欢 BTRFS,并希望将 EXT4 文件系统转换为 BTRFS,但我考虑的是性能和可维护性。以 BTRFS 为例,当我从阵列中删除/添加另一个磁盘时,我无法像使用 mdadm 那样轻松查看状态(或者也许我只是不知道如何操作 - 我搜索了 BTRFS 文档但找不到这个)。

那么,根据您的经验,哪个是更好的选择:

  1. 只是转换 EXT4 文件系统并让 mdadm 管理 RAID10 吗?

  2. 摆脱 mdadm,让 BTRFS 做一切?

答案1

让 Btrfs 做一切。

首先,Btrfs 有自己的集成镜像代码,它比 madm 更智能。

当然,如果 madm raid10 中镜像对中的一个磁盘发生严重故障,您可以更换坏磁盘并继续生活(尽管需要经过一组令人痛苦的复杂 shell 命令)。问题是,如果您的磁盘故障更轻微:如果几个块只是返回错误的位,而不是给出坏块的适当错误代码,那么在读取数据时,您将随机获得坏数据。Btrfs 比这更聪明:它会对每个数据位进行校验和。老实说,我不知道说“每个 BTree 节点”或“每个块”哪个更正确,但关键是,当它从镜像阵列读取一些数据时,它会在将其返回到您的用户空间进程之前检查校验和。如果校验和不匹配,它会先咨询阵列中的另一个镜像,如果该镜像给出了正确的校验和,那么它会提醒您磁盘已开始悄无声息地发生故障。

Btrfs wiki 特别提到了你的问题

如果 Btrfs 依赖设备映射器或 MD 进行镜像,无法通过检查镜像副本来解决校验和失败问题。底层不知道文件系统块的校验和或粒度,因此他们无法验证返回的数据。

最后,即使没有这个实质性的优势,处理已删除或添加的 Btrfs 设备的命令行工作流程也非常简单。我甚至不确定我是否能正确使用降级安装然后修复文件系统的 shell 命令,但对于 Btrfs 来说,这是在多设备页面上有非常清晰的记录作为:

mount -o degraded /dev/sdb /mnt
btrfs device delete missing /mnt

此时,如果您剩余的磁盘上有足够的空间,您可以随时btrfs rebalance完成它;无需替换镜像,因为您绝对需要使用 madm 来替换它!如果您想替换它,您可以先做btrfs device add

答案2

BTRFS 仍处于试验阶段,如果出现崩溃,您最终可能会得到“有趣”的功能。如果您确实有/想要运行 btrfs,那么暂时在软件 raid 上运行它会比直接运行它安全得多。当 btrfs 成熟并投入生产时,这可能不再是事实。

相关内容