AF7*_*AF7 3 raid1 raid10 btrfs
我有一个 btrfs 阵列,它由 raid 1 中的两个 2TB 磁盘组成。我的空间不足,我想添加两个闲置的 3TB 磁盘。最终设置将是 2x2TB+2x3TB 驱动器。一个驱动器故障冗余对我来说就足够了(数据也备份到了其他地方)。
我不确定如何继续:btrfs wiki清楚地说明了如何添加新设备,但我不确定这最终会如何看待可用磁盘空间。我会得到:
根据一些研究(例如这个答案),我认为结果应该是 2,这就是我想要的。这样对吗?
另一种可能性是我切换到 raid 10 设置,如果这对不同大小的磁盘是可能的。如果这是可取的,我应该如何在不临时将数据托管在外部存储上的情况下这样做?
2TB 空间,4 倍冗余或
来自官方维基的引用详细解释了它:
“…… btrfs 首先将所有设备组合到一个存储池中,然后在创建文件数据时复制块。
RAID-1 当前定义为“不同设备上所有数据的 2 个副本”。
这与 MD-RAID 和 dmraid 不同……”
— 仅 2 份。
另一种可能性是我切换到 raid 10 设置,如果这对不同大小的磁盘是可能的。
再次阅读相同的来源:“...
RAID-10 建立在这些定义之上。
每个条带被拆分为恰好 2 个 RAID-1 集,这些 RAID-1 集被写入恰好 2 个设备(因此最少 4 个设备)。具有 6 × 1 TB 设备的 btrfs RAID-10 卷将产生 3 TB 可用空间,其中包含所有数据的 2 个副本。……”
如果不临时将数据托管在外部存储上,我该怎么做?
这一切都在“转换”段落中进行btrfs balance
了解释——从一个挂载点开始,其中包含所需的数据和元数据配置文件的规范。微不足道地调整他们的例子,它变成了这样:
btrfs balance start -dconvert=raid10 -mconvert=raid10 /…mntPoint…
我想balance
在您将两个新磁盘添加到该池中之后,中间不需要- 添加本身不会重新平衡,只有新写入的数据才会使用其他设备。因此,这非常简单:为您喜欢的任何布局添加并开始平衡。
理论上你会得到最好的结果,因为“ btrfs 首先将所有设备组合到一个存储池中”
使用设置来测试所有这些将非常简单,例如,在更小尺寸的环回设备上。
尽管 Btrfs 变得相当成熟,但我听说与非类似 RAID 的模式相比,多设备支持仍然不够强大。我建议先在环回设备上尝试上述转换,即使它会成功,也至少在其他地方备份最重要的数据。
另外,表达我自己的观点,我会说我更喜欢将这种设置转换为传统的 LVM-2 而不是 LSR(Linux 软件 RAID 又名 MD),这将使您能够创建逻辑子卷,以便以后与 Btrfs 一起使用或任何其他所需的 FS。