我的家用 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 阵列,重新同步,然后从阵列中移除一个旧磁盘,对每个磁盘重复此操作?
确实没有充分的理由让多个阵列分布在同一个磁盘上,所以如果该过程消除了这一点,那就太好了。
感谢您的建议!
首先,将驱动器划分为几个 RAID 阵列并用 LVM 将它们合并回来是没有意义的。
USB 速度非常慢且占用大量 CPU 资源,因此按顺序连接四个驱动器并复制这么多数据需要很长时间。我宁愿一次只更换一个驱动器。
我的方法是(如果您的数据非常重要,并且您非常偏执,您可以在此操作期间添加 USB 驱动器作为热备件,但这会花费更多时间):
mdadm grow
在此之后,您将拥有四个 1TB 磁盘,每个磁盘有一个 1TB 分区,加入到顶部有 LVM 的 RAID5。完美的结果。
您可以按照您的建议进行重新同步和替换,但是一旦您将所有文件从 md1 和 2 复制到 md3 上,然后核对 md1 和 2 分区并扩展 md3 分区以使用新空间。为此,您需要使 TB 驱动器上的第一个分区成为 md3 的一部分,这样您以后不必重新定位数据。
我建议在沙箱中做这样的工作。
我写了一篇关于如何用文件而不是分区设置这样一个沙箱的更长的文章:我可以在 Linux 软件 raid 中“原子地”交换一个 raid5 驱动器吗?
如果您当前的 HD 使用量少于 1TB,那么我很想执行以下操作: