升级Linux软件RAID5

我家的Linux服务器有一个四驱动软件RAID 5,每个SATA驱动器有两个分区,分别命名为sd [abcd] [12]。 / dev / md1是从sd [abcd] 1build立的,/ dev / md2是从sd [abcd] 2build立的。 每个驱动器是500GB,每个分区是250GB。 我使用LVM将md1和md2合并到一个卷组中。

将这些驱动器升级到每个1TB的过程是一个很好的过程。 我没有更多可用的SATA端口。 我考虑过把其中一个驱动器取出来,用一个新的1TB驱动器取代它,分区有两个250GB的分区和一个500GB的分区,然后重buildarrays。 对每个驱动器重复一次,然后在sd [abcd] 3上创build一个新的RAID5。 这看起来“不够优化”:滥用同步/恢复过程似乎不是正确的方法来做到这一点。

使用外部USB机箱,坚持使用新的1TB磁盘,分区,将其添加到md1和md2arrays,重新同步,然后从arrays中删除一个旧磁盘,重复每个磁盘?

有多个arrays分布在相同的磁盘上真的没有什么理由,所以如果这个过程消除了,那就好了。

感谢您的build议!

首先,将驱动器划分成几个RAIDarrays并将它们与LVM合并在一起是没有意义的。

USB速度非常慢,CPU密集型,所以顺序连接四个驱动器,复制这么多的数据需要很长时间。 我宁愿只换一块硬盘。

我的配方是(如果你的数据非常重要,而且你非常偏执,那么在这个操作过程中你可以添加一个USB驱动器作为热备份,但是这将花费更多的时间):

  1. 拉出一个旧的驱动器,并插入一个新的。 等待它同步
  2. 重复其余的驱动器
  3. 你现在有四个1TB硬盘,500GB分配为两个250GB分区,500GB未使用空间
  4. 将现有分区之一从250GB扩展到750GB,以便使用整个磁盘
  5. 使用mdadm grow包含扩展分区的RAID
  6. 展开您的LVM,以使整个大小被使用
  7. 从LVM中删除您的250GBx4arrays光盘。 这会将您的数据从小分区移到大分区,所以需要一些时间
  8. 删除250GB分区,重复750GB分区的增长过程

在此之后,您将有四个1TB磁盘和一个1TB分区,每个磁盘都join一个带有LVM的RAID5。 完美的结果。

你可以按照你的build议重新同步和replace舞蹈,但是一旦你完成了将md1&2中的所有文件拷贝到md3上,然后核对md1&2分区并扩展md3分区以使用新的空间。 要做到这一点,您需要使TB驱动器上的第一个分区成为md3的一部分,以便以后不必重新定位数据。

我build议在沙箱里做这样的工作。
我写了一篇关于如何设置文件而不是分区的沙盒的较长文章: 我可以在Linux软件RAID中“primefaces地”交换一个raid5驱动器吗?

如果您当前的HD使用量less于1TB,那么我会试着做以下事情:

  • 拉出其中一个500GB的硬盘,并安装1TB
  • 将所有内容复制到1TB驱动器
  • 安装其他1TB驱动器
  • 创build一个新的降级RAID5 + lvm并按照您希望的方式与其他磁盘进行分区
  • 将数据从独立的1tb驱动器复制到降级的raid5
  • 将独立驱动器添加到arrays。