linux - 具有多个设备的 btrfs raid1

标签 linux btrfs

<分区>

我有 6 台设备:4TB、3TB、2TB、2TB、1.5TB、1TB(/dev/sda 到/dev/sdf)。

第一个问题:

使用 RAID-1 我会:

  • 2TB 镜像到 2TB
  • 1TB 镜像到 0.5@4TB + 0.5@3TB
  • 1.5TB 镜像到 1.25@4TB + 0.25@3TB
  • 3TB 的其余 2.25TB 镜像到 4TB 的其余 2.25TB。

在这种情况下,我的总大小为 (4 + 3 + 2 + 2 + 1.5 + 1) = 13.5/2 = 6.75TB

$ mkfs.btrfs --data raid1 --metadata raid1/dev/sda/dev/sdb/dev/sdc/dev/sdd/dev/sde/dev/sdf 会给我提供吗大约 6.75TB?如果是,我可以承受丢失多少磁盘(以及哪些?)?

第二个问题:

例如,使用 RAID-1 我可以承受丢失三个磁盘的代价:

  • 一个 2TB 的磁盘,
  • 1TB 磁盘和
  • 1.5TB 磁盘,

不会丢失数据。

使用 btrfs 我怎么能有同样的自由来丢失相同的磁盘?

谢谢!

最佳答案

Btrfs 按 block 分布数据(及其 RAID 1 副本),因此可以很好地处理不同大小的硬盘。您将收到所有硬盘的总和,除以二 - 无需考虑如何将它们放在相似大小的对中。

如果不止一个磁盘发生故障,您总是处于丢失数据的危险之中:RAID 1 无法处理同时丢失两个磁盘。在上面给出的示例中,如果错误的两个磁盘损坏,您总是会丢失数据。

如果多个磁盘发生故障,Btrfs 会增加丢失数据的机会,因为它会稍微随机地分配 block ,一些 block 只存储的可能性更高在失败的两个设备上。另一方面,如果您丢失了数据,出于同样的原因,您丢失的数据可能会更少。平均而言,它总计丢失 n 位的机会相同,但如果您只对丢失一位的机会感兴趣,那么使用 btrfs 会更糟。

此外,您还应该考虑其使用校验和的优势,这有助于防止磁盘上的数据损坏。

关于linux - 具有多个设备的 btrfs raid1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23620964/

相关文章:

linux - Windows 上的 wx python 图像刷新

linux - 修复 btrfs "btrfs parent transid verify failed on ..."

c - 如何从预读()中释放内存?

c - 使用 popen 时出现意外的 sh 语法错误

linux - 从源码构建notepadqq时出错

bash - 如何测试位置是否是 btrfs 子卷?

linux - btrfs ioctl : get file checksums from userspace

linux - EXT4 是否已过时用于生产?

linux - 如何通过SSH成为 super 用户