我家的 Linux 服务器有一个四驱动器软件 RAID 5,其中每个 SATA 驱动器都有两个分区,名为 sd[abcd][12]。/dev/md1 由 sd[abcd]1 构建,/dev/md2 由 sd[abcd]2 构建。每个驱动器为 500GB,每个分区为 250GB。我使用 LVM 将 md1 和 md2 合并为一个卷组。
将这些驱动器升级到 1TB 的良好程序是什么?我没有更多可用的 SATA 端口。我考虑过拔出其中一个驱动器,用一个新的 1TB 驱动器替换它,该驱动器由两个 250GB 分区和一个 500GB 分区组成,然后重建阵列。对每个驱动器重复此操作,然后在 sd[abcd]3 上创建一个新的 RAID5。这似乎“不太理想”:滥用同步/恢复过程似乎不是正确的方法。
使用外部 USB 外壳、插入新的 1TB 磁盘、对其进行分区、将其添加到 md1 和 md2 阵列、重新同步,然后从阵列中删除一个旧磁盘,并对每个磁盘重复此操作,这样更有意义吗?
确实没有什么理由将多个阵列分布在相同的磁盘上,所以如果这个过程消除了这种情况,那就好了。
感谢您的建议!
答案1
首先,将驱动器分区为几个 RAID 阵列并使用 LVM 将它们合并回去是没有意义的。
USB 速度极慢,而且占用大量 CPU,因此依次连接四个驱动器并复制大量数据将花费很长时间。我宁愿一次更换一个驱动器。
我对此的解决方法是(如果您的数据非常重要,并且您非常偏执,您可以在此操作期间添加 USB 驱动器作为热备用,但这将花费更多的时间):
- 拔出一个旧驱动器并插入一个新驱动器。等待其同步
- 对其余驱动器重复此操作
- 您现在有四个 1TB 驱动器,其中 500GB 分配为两个 250GB 分区,还有 500GB 未使用空间
- 将现有分区之一从 250GB 扩展到 750GB,以便使用整个磁盘
- 使用以下方法扩展包含扩展分区的 RAID:
mdadm grow
- 扩展 LVM,以便使用整个大小
- 从 LVM 中删除 250GBx4 阵列 pv。这会将数据从小分区移到大分区,因此需要一些时间
- 删除 250GB 分区,然后对 750GB 分区重复上述扩展过程
之后,您将拥有四个 1TB 磁盘,每个磁盘都有一个 1TB 分区,这些磁盘以 RAID5 形式连接,并在顶部使用 LVM。结果完美。
答案2
您可以按照您的建议执行重新同步和替换操作,但完成后请将所有文件从 md1 和 2 复制到 md3,然后删除 md1 和 2 分区并扩展 md3 分区以使用新空间。为此,您需要将 TB 驱动器上的第一个分区设为 md3 的一部分,这样您以后就不必重新定位数据。
答案3
我建议在沙箱中完成此类工作。
我写了一篇较长的文章,介绍如何使用文件而不是分区设置此类沙箱:我可以在 Linux 软件 raid 中“原子地”交换 raid5 驱动器吗?
答案4
如果您当前的高清使用量少于 1TB,那么我会倾向于执行以下操作:
- 拔出一个 500GB 硬盘,然后安装一个 1TB
- 将所有内容复制到 1TB 驱动器
- 安装其他 1TB 硬盘
- 创建一个新的降级 RAID5 + lvm,并按照你想要的方式与其他磁盘进行分区
- 将数据从独立的 1TB 驱动器复制到降级的 raid5
- 将独立驱动器添加到阵列。