是否可以将 btrfs RAID5 转换为具有相同磁盘的 RAID6 而不丢失数据?

是否可以将 btrfs RAID5 转换为具有相同磁盘的 RAID6 而不丢失数据?

如果有足够的可用磁盘空间,如何使用相同的磁盘,无需交换数据,我该如何将现有的 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

RAID6 - 维基百科

  • 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.wiki.kernel.org

来自链接的 btrfs balance“转换”示例(已更新):

btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt

-dusage 是数据块平衡的使用阈值。

-dconvert 用于数据

-mconvert 用于元数据

/mnt 是 BTRFS 卷的挂载位置。您无法在卸载的情况下执行此操作。

btrfs 数据和/或元数据可以是:

  1. 单身的
  2. raid0
  3. raid01
  4. 突袭1
  5. 突袭5
  6. 突袭6
  7. 突袭1c3
  8. 突袭1c4

可以使用暂停、恢复、取消或获取状态的命令。

btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt

注意事项

  1. 根据驱动器上的数据量,平衡需要时间。
  2. 有可能平衡失败并损坏阵列和/或使其陷入不稳定的只读模式。
  3. 转换之前备份数据。
  4. 确保您正在运行最新的稳定 Linux 内核。

相关内容