mdadm:在 RAID5 中将小硬盘换成大硬盘,如何分区?

JD *_*ias 4 partition mdadm raid5 swapping

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

失败并移除一个驱动器。

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

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

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

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

最后增长数组

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

我的问题是你如何对新的更大的驱动器进行分区?我在网上看到了不同的说明,我知道它们中的大多数已经过时了,所以我想看看最近是否有人这样做了。

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

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

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

我正在考虑的另一种方法是备份到一个驱动器,构建一个 3 驱动器阵列,将备份驱动器添加到阵列。那是:

  • 移除一个驱动器 (350GB)
  • 添加新驱动器 (1TB)
  • 将我的所有数据备份到新驱动器中(我的raid 数据将适合新驱动器)
  • 取出剩余的 3 个(350GB)旧驱动器
  • 放入其余的 3 (1TB) 个新驱动器
  • 构建一个 3 驱动器阵列
  • 将数据从第一个新驱动器复制到阵列
  • 擦除备份磁盘并添加到阵列以使其成为 4 个驱动器。

这样更安全吗?快点?想法?

Hub*_*rio 5

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

您需要能够在计算机上至少再添加一台设备,但在此之后,您无需在重建时将阵列保持在降级状态数小时(或数天,如果是当前的多 TB HDD)。

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

mdadm /dev/md0 --add /dev/sde1
Run Code Online (Sandbox Code Playgroud)

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

mdadm /dev/md0 --replace /dev/sda1 --with /dev/sde1
Run Code Online (Sandbox Code Playgroud)

更换完成后,设备被标记为故障,因此需要将其从阵列中移除:

mdadm /dev/md0 --remove /dev/sda1
Run Code Online (Sandbox Code Playgroud)

对阵列中的其他驱动器重复此操作。

如果您有能力连接多个额外的驱动器,您甚至可以同时连接所有驱动器,同时保持阵列在线和完全冗余。因此,以下是一组有效的命令:

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
Run Code Online (Sandbox Code Playgroud)

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

mdadm /dev/md0 --remove /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Run Code Online (Sandbox Code Playgroud)


Jor*_*ris 2

最终,您将需要“raid 分区”来获得磁盘的最大大小;无论您在重建时执行此操作还是在更新阵列后重新分区,都没有关系。

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

请注意,您的计划中缺少一个步骤:您将需要指示 md 层之上的事物也增长(文件系统,或 lvm pv,或...)

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