mdadm 如何将一个阵列用作另一个阵列中的“成员磁盘”

mdadm 如何将一个阵列用作另一个阵列中的“成员磁盘”

我有一个带 MDADM 的 4 磁盘 RAID 5 阵列。其中一个磁盘发生故障。我买了一个比原磁盘大三倍的新磁盘作为替换。

我现在有

  • 降级 RAID5 中的 3x5TB 磁盘
  • 1x16TB 空闲未使用磁盘

我想将现有的 raid 从 5 更改为 1+0,其中只有旧磁盘是“0”部分:

  • RAID0 中的 3x5TB 磁盘
  • 1x16TB 磁盘

以上内容将在我最终想要的 RAID 1 中组装。

我认为我应该:

  • 在新的降级 RAID 1 中添加新磁盘
  • 从降级的 RAID 5 复制所有数据
  • 将挂载点更改为新阵列
  • 拆除 RAID5 并从中创建 RAID0
  • 将 RAID0 添加到 RAID1

或者,作为后备,我可以用创建 btrfs RAID 1 卷来替换最后一步。

这可行吗?

答案1

是的,这应该可行。但是有更好的方法来实现这样的目标。

如果您想知道 RAID10 或 RAID60 是如何构建的,那么它就是这样的:系统构建许多小型 RAID1 或 RAID6 阵列,然后将它们组合成大型“RAID0”阵列。而不是相反,例如将许多 RAID0 镜像或组装成附加奇偶校验设备。

要实现类似的设置,请执行以下操作:

  • 将大磁盘分区为三个分区,每个分区的大小与小磁盘的单个分区大小相等,
  • 将每个分区制作成“降级”的 RAID1 阵列,例如mdadm --create /dev/mdN -l1 -n2 /dev/sdXY missing
  • 将它们设为 LVM PV pvcreate /dev/mdN,并用这三个 PV 构建 LVM VG vgcreate my_vg /dev/mdN /dev/mdM /dev/mdP
  • 根据需要创建逻辑卷,迁移数据,删除旧阵列
  • 将较小的磁盘重新分区,使其具有单个分区,并将每个磁盘添加到其 RAID1 中

这样你就可以:

  • 避免使用 MD 而不是 MD(可以手动组装,但我不确定它是否会在启动时自动组装)
  • 引入 LVM,改进了卷管理;MD 上的 LVM 非常标准且支持配置
  • 当其中一个较小的磁盘损坏时,您将替换它并仅重新同步该部分;如果您采用“raid1 out of raid0”方式,您将同步整个数据。

最后一个论点实际上描述了为什么冗余总是在最低级别上完成,而将这些较小的冗余片段(条带)组合到更高的级别。

相关内容