如果有足够的可用磁盘空间,如何使用相同的磁盘,无需交换数据,我该如何将现有的 RAID5(单奇偶校验)btrfs 设置转换为双奇偶校验 RAID6 配置?
基本上,这应该只是移除一个磁盘并保留一个冗余驱动器,以便 btrfs 重新分配剩余驱动器上的所有内容并重新添加该移除的磁盘?
那么推荐的流程是什么?
我当时想的是
btrfs device delete /dev/sdx /mnt/fs
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
btrfs device add /dev/sdx /mnt/fs
我是否真的需要删除并添加磁盘,或者我可以直接转换设置吗?即
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
答案1
https://www.howtoforge.com/a-beginners-guide-to-btrfs-p2
这表明,只要您有足够的可用空间,您就可以更改正在运行的阵列上的 raid 级别。请确保您正在运行最新的稳定 Linux 内核。
示例(来自链接):btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
-dconvert 用于数据
-mconvert 用于元文件(你想复制它,相信我)
/mnt 是 BTRFS 卷的挂载位置。您可以卸载 BTRFS 卷,但我没有尝试过,我想保持诚实。
您有 raid0、raid1、raid5 和 raid6。如果您有足够的可用空间,我相信对于 raid6 来说,它是 n-2 或驱动器数量 [可用空间] 减 2。虽然使用 BTRFS,您可以使用更少的空间,而是使用数据进行测量。如果您存储的数据量较少,那么可以使用少于可接受数量的驱动器来实现类似 raid6 的功能。可能,但不推荐。
另请注意,这将需要一段时间,具体取决于驱动器上的数据量。平衡也有可能失败,并直接杀死阵列或使其进入不稳定的只读模式。一如既往,请保留备份。
答案2
- RAID5 需要 3+ 个驱动器 (n),空间效率为 1-1/n
- RAID6 需要 4+ 个驱动器 (n),空间效率为 1-2/n
1 TiB 阵列的总空间(近似值)以及从 RAID5 -> RAID6 的变化(%):
- 4 x 250GiB ~ 1 TiB -> RAID5 ~ 768 GiB -> RAID6 ~ 512 GiB -> -50%
- 5 x 200GiB ~ 1 TiB -> RAID5 ~ 819.2 GiB -> RAID6 ~ 614.4 GiB -> -25%
- 6 x 170GiB ~ 1 TiB -> RAID5 ~ 853.3 GiB -> RAID6 ~ 682.6 GiB -> -20%
假设您有足够的可用空间和驱动器,您可以更改正在运行的阵列上的 raid 级别。
- 不要删除或移除最终阵列中的任何驱动器
- 通过删除 -> 添加 -> 转换,你将实现“双重”平衡
- 在移除/删除过程中,元数据和数据块会重新分配到剩余的驱动器,然后您添加一个驱动器,当您转换为 RAID6 时,该驱动器需要再次平衡。
如果您需要添加驱动器,请在平衡/转换之前将它们全部添加。
btrfs device add /dev/sdc /mnt
btrfs device add /dev/sdd /mnt
来自链接的 btrfs balance“转换”示例(已更新):
btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt
-dusage 是数据块平衡的使用阈值。
-dconvert 用于数据
-mconvert 用于元数据
/mnt 是 BTRFS 卷的挂载位置。您无法在卸载的情况下执行此操作。
btrfs 数据和/或元数据可以是:
- 单身的
- raid0
- raid01
- 突袭1
- 突袭5
- 突袭6
- 突袭1c3
- 突袭1c4
可以使用暂停、恢复、取消或获取状态的命令。
btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt
注意事项
- 根据驱动器上的数据量,平衡需要时间。
- 有可能平衡失败并损坏阵列和/或使其陷入不稳定的只读模式。
- 转换之前备份数据。
- 确保您正在运行最新的稳定 Linux 内核。