我目前有一个包含四个设备的 Btrfs 分区:三个 3 TB 驱动器和一个 4 TB 驱动器。数据和元数据是 RAID 10,所以我有 6 TB 的可用空间,几乎已满。我曾预计,当我的存储空间填满时,Btrfs 中的 RAID 5 支持将会成熟,但显然这不是优先事项。
我的问题是:有什么理由比 RAID 10 更受欢迎吗? 我知道我当前硬件上的真实 RAID 1 应该为我提供 3 TB 的可用空间,每个块有 4 个副本,但 Btrfs 显然不是这样运行的。从Btrfs 常见问题:
btrfs 首先将所有设备组合成一个存储池,然后在创建文件数据时复制块。RAID-1 目前定义为“所有数据在不同设备上的 2 个副本”。这与 MD-RAID 和 dmraid 不同,因为它们为 n 个设备制作了 n 个副本。在三个 1 TB 设备上的 btrfs RAID-1 中,我们获得了 1.5 TB 的可用数据。由于每个块仅复制到 2 个设备,因此写入给定块只需要写入 2 个设备;只能从一个设备读取。
来自 Jens Erat堆栈溢出:
Btrfs 按块分发数据(及其 RAID 1 副本),因此可以很好地处理不同大小的硬盘。您将得到所有硬盘的总和除以二 – 并且无需考虑如何将它们组合成大小相似的对。
如果多个磁盘发生故障,您始终面临丢失数据的危险:RAID 1 无法处理同时丢失两个磁盘的情况。在上面给出的示例中,如果两个错误的磁盘发生故障,您始终会丢失数据。
这是否意味着,由于 4 TB 驱动器,从 RAID 10 重新平衡到 RAID 1 将为我提供额外的 500 GB 数据(6.5 TB 而不是 6 TB)?我有什么理由坚持使用 RAID 10 吗?
答案1
是的,您额外获得了 500 GB。请注意,确定 btrfs 中的可用空间仍然难以捉摸。另外:查看btrfs 磁盘使用量计算器。
关于您的第二个问题:您的阵列可能会损失一些性能。当然,您的数据在两种 RAID 配置上都同样安全。在考虑性能时,您或许可以看看这些基准:内核网站,phoronix.com。
您是否已经尝试过转换为 RAID 1?如果是,您发现了什么?
答案2
不要使用 btrfs raid 5 或 6,因为其实现充满了错误,如果需要的话,请运行 zfs。
使用 raid10 您将获得速度。
最佳做法是在 4TB 驱动器上创建一个 3TB 分区(确保所有 3 个分区的大小完全相同),将它们组合成 RAID10,这样将有 6 TB 的可用空间。将 4 TB 驱动器上的额外 1 TB 用于 /boot(如果您想使用 efistub 并避免使用 grub 或任何其他可以使您的启动更快的引导加载程序,则这必须是 vfat),交换(您可以使用一个相当大的,最佳选择是一个小型 zram 交换(4 gb 与 32 gb RAM 配合使用很好,2 gb 与 16 gb 配合使用应该没问题,如果您的内存少于 16 gb,我不知道是否值得,您可能还是应该升级)首先使用(将优先级设置为最高)使用 zstd 和与核心/线程数相同的压缩流...一个用于 / 的 ssd(除大型媒体文件之外的所有内容)和一个稍大一些但优先级较低的交换(优先级越高,交换越快被使用,因此 zram 应该是最高的)(500 GB ssd 为 8 GB,1 TB 为 16 GB,如果您的 ssd 超过 1 TB,则超过 16 GB 的交换可能毫无意义,因为如果您经常交换它,则需要更多内存,如果您的 SSD 小于 500 GB,请考虑购买 500 或 1 TB 型号,因为现在即使是最好的 sata ssd 也非常便宜)并在优先级最低的 HDD 上放置一个更大的(是 SSD 的两倍大?这无关紧要,因为如果它经常使用,您需要更多内存......和最低优先级),这样仍然在该驱动器上留下足够的空间用于另一个大分区(可能用于 vms 或与 Windows 的双启动等)。还要加密您的交换(zram 除外,因为除非有人在拔掉电源之前将液氮倒在内存上,否则该交换上的任何数据都将在几秒钟内无法恢复)和 /(如果您希望 trim 在 ssd 上工作,您需要在 crypttab 中启用它,安全性稍低,因为攻击者可以看到哪些单元是空的,但性能更好)。