![mdadm 如何将一个阵列用作另一个阵列中的“成员磁盘”](https://linux22.com/image/767785/mdadm%20%E5%A6%82%E4%BD%95%E5%B0%86%E4%B8%80%E4%B8%AA%E9%98%B5%E5%88%97%E7%94%A8%E4%BD%9C%E5%8F%A6%E4%B8%80%E4%B8%AA%E9%98%B5%E5%88%97%E4%B8%AD%E7%9A%84%E2%80%9C%E6%88%90%E5%91%98%E7%A3%81%E7%9B%98%E2%80%9D.png)
我有一个带 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 VGvgcreate my_vg /dev/mdN /dev/mdM /dev/mdP
, - 根据需要创建逻辑卷,迁移数据,删除旧阵列
- 将较小的磁盘重新分区,使其具有单个分区,并将每个磁盘添加到其 RAID1 中
这样你就可以:
- 避免使用 MD 而不是 MD(可以手动组装,但我不确定它是否会在启动时自动组装)
- 引入 LVM,改进了卷管理;MD 上的 LVM 非常标准且支持配置
- 当其中一个较小的磁盘损坏时,您将替换它并仅重新同步该部分;如果您采用“raid1 out of raid0”方式,您将同步整个数据。
最后一个论点实际上描述了为什么冗余总是在最低级别上完成,而将这些较小的冗余片段(条带)组合到更高的级别。