使用 mdadm 的 RAID-1 到 RAID-5

sta*_*ick 5 mdadm software-raid

按题目。

使用 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 阵列的过程。

Kai*_*zke 11

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

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

    mdadm ARRAY --fail DEVICE
    mdadm ARRAY --remove DEVICE
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    mdadm --grow ARRAY -n 2
    
    Run Code Online (Sandbox Code Playgroud)
  • 将阵列类型从 RAID1 更改为 RAID5:

    mdadm --grow ARRAY -l 5
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在再次添加在第一步中删除的所有磁盘:

    mdadm ARRAY --add-spare DEVICE DEVICE ...
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 将 RAID5 增加到可用数量DISKS

    mdadm --grow ARRAY -n DISKS
    
    Run Code Online (Sandbox Code Playgroud)

    这是唯一缓慢的操作,因为它需要移动磁盘上的所有数据并生成奇偶校验。然而,当它正在进行时,您仍然可以在计算机上工作,但您应该预料到磁盘性能会下降。

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

    resize2fs ARRAY
    
    Run Code Online (Sandbox Code Playgroud)

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


Sim*_*ter 7

没有从 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 …在其中一个组件设备上使用以找出答案)。

  • 幸运的是,无需破解即可将 N 盘 RAID1 (N > 2) 减少为两盘 RAID1:只需重复使用 `mdadm ARRAY --fail DEVICE` 将磁盘标记为“失败”,然后使用 `madm ARRAY --remove DEVICE` 将其从数组中删除。一旦只剩下两个磁盘,请使用“mdadm --grow ARRAY -n 2”将磁盘数量设置为两个。瞧,您现在拥有一个干净的两磁盘 RAID1,可以应用步骤 3 到 5。 (2认同)

Kha*_*led -2

它不会像这样简单地即时工作。如果要将 RAID 级别从 1 更改为 5,您需要:

  1. 备份您的数据。
  2. 准备磁盘以支持新的 RAID 级别。
  3. 配置 RAID 并格式化。
  4. 恢复您的数据。

RAID-1 使用镜像,这意味着磁盘的相同副本。然而,RAID-5 使用一种不同的技术,称为分布式奇偶校验。本页介绍了标准 RAID 级别。