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

Fli*_*int 5 raid btrfs

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

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

我无法决定的是,是否要在“远 2”配置中创建MD raid 10 阵列,并在顶部使用非 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 架构集成到文件系统本身是否有任何好处?

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

Aus*_*arn 6

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

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

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

  • @AdrianGünter 实际上,不,考虑到当前的实现,Peter 是正确的。它不能保证 2 个故障设备能够幸存,因为它处理条带化和复制的方式不同(确切的解释太长,无法发表评论)。 (2认同)