使用 mdadm 将 RAID-1 转换为 RAID-5

使用 mdadm 将 RAID-1 转换为 RAID-5

根据主题。

使用 mdadm 从 RAID-1 转换为 RAID-5 时,为什么 RAID 1 阵列必须包含 2 个设备,而不能超过 2 个设备?我对 RAID 的理解不够深入,无法找出原因。

背景:我的三个 RAID-1 阵列各包含 3 个设备,我的目标是从两个阵列中移除一个设备,并将备用设备连接到剩余的 RAID-1 阵列。这样将留下两个 RAID-1 阵列,每个阵列有 2 个设备,剩余的 RAID 阵列有 4 个设备。目标是将 4 个设备的 RAID-1 阵列转换为 RAID-5。这不是关于哪种 RAID 架构更好或更差的讨论,只是将 RAID-1 阵列更改为 RAID-5 阵列的过程。

答案1

将 N 盘 RAID1 升级到 N 盘 RAID5 是可能的,尽管有点繁琐:

  • 从 RAID1 中移除除两个磁盘之外的所有磁盘。为此,请重复执行:

    mdadm ARRAY --fail DEVICE
    mdadm ARRAY --remove DEVICE
    

    其中ARRAY是阵列的 ID,如 /dev/md2,并且DEVICE是该阵列的分区,如 sdc2 或 sdd2。

  • 将RAID1的大小更改为两块磁盘:

    mdadm --grow ARRAY -n 2
    
  • 将阵列类型从 RAID1 更改为 RAID5:

    mdadm --grow ARRAY -l 5
    
  • 现在再次添加在第一步中删除的所有磁盘:

    mdadm ARRAY --add-spare DEVICE DEVICE ...
    

    请注意,与--fail和不同--remove,您需要指定DEVICEs 的完整路径名。

  • 将 RAID5 增加到可用数量DISKS

    mdadm --grow ARRAY -n DISKS
    

    这是唯一一个缓慢的操作,因为它需要移动磁盘上的所有数据并生成奇偶校验。然而,在进行过程中,您仍然可以在机器上工作,但磁盘性能可能会下降。

  • 增大操作完成后(用于cat /proc/mdstat查看其进度),您可以调整文件系统的大小。假设您使用 ext4,则操作如下:

    resize2fs ARRAY
    

由于数据重新排列的时间较长,因此删除 RAID1,然后创建新的 RAID5(仍然需要创建奇偶校验,但比重新排列所有数据更容易)并从备份中恢复数据通常更快。

答案2

没有从 RAID-1 到 RAID-5 的迁移路径,除非是两个磁盘的特殊情况,其中 RAID-1 恰好与 RAID-4 和 RAID-5 相同(因为单个位的奇偶校验就是该位本身),因此迁移代码只改变 RAID 级别而不触及数据。

转换为 RAID-5 后,您可以向阵列添加更多磁盘 - 此迁移路径是存在的。

因此你的迁移计划将是:

  1. 在所有设备上运行一致性检查(/usr/share/mdadm/checkarray …
  2. 将所有阵列减少为两个磁盘¹
  3. 将要切换的阵列转换为 RAID-5(--grow … -l5
  4. 将额外的磁盘作为备用磁盘添加到 RAID-5(--grow … --add …
  5. 设置新的磁盘数量(--grow … -n4)。

¹ 这很棘手,因为没有好的方法可以减少磁盘数量。您可以从救援系统中覆盖 RAID 超级块并使用该--assume-clean选项避免重建,但您需要使用与以前相同的超级块版本(mdadm --examine …在其中一个组件设备上使用以找出答案)。

答案3

按照mdadm 文档,您可以将镜像 raid (raid1)“升级”为降级奇偶校验 raid (raid5),然后添加新磁盘。您的 raid 在重建过程中通常无法承受单个磁盘故障,因此您应该有一份最近的备份,以防万一。

答案4

实际上它相当简单,使用“--grow”选项

相关内容