mdadm:在RAID5中换出较大的硬盘,如何分区?

所以我得到了在MDADM RAID5中换出较小硬盘驱动器的要点:

失败并移除一个驱动器。

 mdadm -f / dev / md0 / dev / sdd1
 mdadm -r / dev / md0 / dev / sdd1

关机,交换硬盘,分区,并添加回arrays

mdadm --add /dev/md0 /dev/sdd1

等待重新同步,并继续所有其余的驱动器。

最后增长arrays

mdadm --grow /dev/md0 --size=max

我的问题是如何划分新的更大的驱动器? 我看到网上有不同的指示,我知道他们大多数都过时了,所以我想看看有没有人最近做了。

  1. 将新驱动器分区为与arrays中的旧驱动器相同的大小

  2. 将新驱动器分区为驱动器的最大大小。

我有一个非常简单的设置,每个4个驱动器RAID5 350GB。 我只有一个分区在每个驱动器上,并build立一个单一的数组。 这是一个数据存档磁盘,因此不需要多个arrays或分区。

我在想的另一种方法是备份到一个驱动器,build立一个3驱动器arrays,将备份驱动器添加到arrays。 那是:

  • 移除一个驱动器(350GB)
  • 添加一个新的驱动器(1TB)
  • 备份所有的数据到新的驱动器(我的RAID数据将适合一个新的驱动器)
  • 取出剩余的3个(350GB)旧驱动器
  • 把其余的3(1TB)新的驱动器
  • build立一个3驱动器arrays
  • 将数据从第一个新驱动器复制到arrays
  • 擦拭备份磁盘,并添加到arrays,使其4驱动器。

这是否安全? 更快? 思考?

最后,你将需要有“RAID分区”有最大的磁盘大小; 如果在重build时执行此操作,或者在arrays更新后重新分区,则无关紧要。

我最近做了类似的事情,速度相当快。 请注意,您可以设置raid重build速度(/ proc / sys / dev / raid / speed_limit_min / max),默认情况下它仅限于后台重build。

请注意,您的计划中缺less一个步骤:您将需要指示md层顶部的内容(文件系统或lvm pv或…)

但是,如果你可以做到这一点(可以让系统停机时间更长,投入更多的时间,并有足够的磁盘插槽),将所有内容复制到备份磁盘上可能更安全。 数据始终清晰可见,令我感到欣慰。

最简单/最安全的方式是由大磁盘组成的arrays

  • 将所有数据复制到外部驱动器
  • 删除所有的小磁盘,并用大的replace它们
  • 在较大的磁盘上创build新的arrays
  • 将数据复制回来

这也将给你两个数据副本:一个在外部驱动器上,另一个在你移除的较小驱动器上。 (仔细跟踪哪个磁盘是哪个!)

我不认为你可以增加一个磁盘来增加RAID-5arrays。 您将创build一个3磁盘的RAID-5arrays,将数据复制到新arrays后,您可以做的最好的做法是将第四个磁盘标记为热备份…这与完全不同一个4磁盘的RAID-5arrays。

我问自己同样的问题,只是用4个400 GB的磁盘RAID5(让我们称之为/ dev / md1)replace更大的磁盘(2到4 TB之间的东西)。 最重要的是LVM。

一个不那么优雅的解决scheme,我想通了,是以下几点:

移除一个磁盘(根据磁盘的SMART值最容易出错),换上新的磁盘。 将新磁盘分区为与旧分区大小相同的一个分区,剩下的分区为第二个分区。 将相同大小的分区添加到RAID / dev / md1并等待重新同步完成。

然后再次与下一个磁盘一样。 现在你有两个额外的未使用的分区。 开始一个新的RAID 5。 将新的RAID5(例如/ dev / md2)作为物理卷(PV)添加到/ dev / md1上使用的卷组。 在两个磁盘被replace之后,已经有了更多的冗余磁盘空间可用。

对第三和第四个磁盘执行相同的操作,将它们作为附加磁盘添加到/ dev / md2,然后在设备上运行pvresize。

我虽然怀疑我会做同样的build议两次已经在这个线程:把所有的东西(目前约1.2G的RAID的700G的RAID)在外部磁盘(可能是一个新的),然后开始一个新的具有三个磁盘的RAID5arrays,将数据复制回来,然后添加用作临时存储的最后一个磁盘。

当前版本的md工具支持replace设备,同时保持RAID(以及冗余)工作。

您需要至less能够在计算机上再添加一台设备,但在此之后,您不需要在arrays重build期间将arrays保持数小时(或几天,如果是当前的多TB硬盘)降级状态。

首先,您需要添加一个磁盘作为arrays的备用(假设RAID中有4个驱动器):

 mdadm /dev/md0 --add /dev/sde1 

然后,您告诉Linux开始将数据移动到新驱动器:

 mdadm /dev/md0 --replace /dev/sda1 --with /dev/sde1 

更换完成后,设备被标记为有故障,所以您需要从arrays中删除它:

 mdadm /dev/md0 --remove /dev/sda1 

重复数组中的其他驱动器。

如果您有连接多个附加驱动器的能力,即使是同时使用所有驱动器,也可以同时保持arrays联机和完全冗余。 所以下面是一组有效的命令:

 mdadm /dev/md0 --add /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 mdadm /dev/md0 --replace /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 --with /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 

等到完成,删除旧的驱动器:

 mdadm /dev/md0 --remove /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1