两个物理驱动器上的 Btrfs:md raid 10 或 btrfs raid 1

两个物理驱动器上的 Btrfs:md raid 10 或 btrfs raid 1

因此,我有两个新的 (4TB) 驱动器,将用作桌面系统的主存储。主要要求是冗余和可靠性。其次要考虑的是数据读取速度和可维护性,尤其是在驱动器故障的情况下。

出于本问题范围之外的原因,选择的文件系统将是 BTRFS。

我无法决定的是,是否创建一个MD raid 10 阵列在“远 2”配置中,顶部使用非 raid BTRFS,或者使用 BTRFS 中包含的 raid 1 功能来处理元数据和文件内容。

任一选项都可以满足冗余要求,而且 BTRFS 包含在 Linux 内核中并且没有标记为实验性这一事实让我放心:它可能会足够可靠,特别是关于潜在的数据损坏(我写这篇文章是因为内核 4.10.3 刚刚发布)。

到目前为止,我还没有找到任何专门涵盖此设置的性能数据。虽然每种设置的管理细节都不同,但我认为维护两者的复杂性没有太大差异 - 但我是这么说的,到目前为止还没有使用 btrfs 的经验(但使用了 md)。

我目前更喜欢 md10 而不是 btrfs raid 1,因为它raid 10 只能在两个磁盘上运行,并且比 md1 有明显的性能优势。然而,btrfs raid 1 的底层架构与 md1 不同,因为它仅保证每个数据集的两个副本,即使在具有两个以上磁盘的设置中也是如此,而不是每个磁盘的完整镜像。

现在的问题是,这种数据分配的自由度是否以 btrfs raid 1 相对于 md1 的速度提高的方式实现,使其性能与 md10 相当?我应该考虑哪些配置选项?

第二个问题是,将 raid 架构集成到文件系统本身是否有任何好处?

当然,我想听听我关于冗余、可靠性和可维护性的假设是否不正确。

答案1

一般来说,在可预见的未来,MD 的表现将优于 BTRFS。 BTRFS 当前序列化对多个设备的写入,并且对于给定的 read() 调用仅从一个设备读取。

但就数据安全而言,使用 BTRFS 进行复制比 MD 或 LVM2 更好。由于 BTRFS 完成了内部块校验和,因此当您进行读取调用时,它可以判断数据是否良好,如果不是,则自动回退到另一个副本,并且它会正确选择数据的良好副本清理时以每个块为单位进行块处理。

综上所述,到目前为止我发现的最佳选择实际上是在两个 MD 或 LVM2 RAID0 卷之上以 raid1 模式使用 BTRFS。虽然这在 MD RAID10 之上的性能不如 ext4 或 XFS,但它的性能仍然比 BTRFS raid10 实现或在相同设备上的 MD RAID10 之上运行单个 BTRFS 设备好得多,并且提供相同的数据安全性保证。不幸的是,这确实需要四台设备。

相关内容