如何将其中一个 RAID1 磁盘标记为备用磁盘? (mdadm)

如何将其中一个 RAID1 磁盘标记为备用磁盘? (mdadm)

我的 Debian 机器上有一个运行良好、运行良好的基于​​软件的 RAID1,使用 3 个 HDD 作为活动硬盘。

我想将其中一个磁盘标记为备用磁盘,这样它最终会成为 2 个活动磁盘 + 1 个备用磁盘。

像:

mdadm --manage --raid-devices=2 --spare-devices=1 /dev/md0

类似的只是失败,表示当前选项模式不支持其中一个选项或者只是失败。

Billy@localhost~#: mdadm -G --raid-devices=2 /dev/md0
mdadm: failed to set raid disks
unfreeze

或者

Billy@localhost~#: mdadm --manage --raid-devices=2 --spare-devices=1 /dev/md0
mdadm: :option --raid-devices not valid in manage mode

或类似的。我不知道伙计。请帮忙?

答案1

您可以使用 检查阵列的当前状态cat /proc/mdstat。在此示例中,这就是数据的来源。

因此,我们假设md127raid1 中有 3 个磁盘。这里它们只是一个磁盘的分区,但这并不重要

md127 : active raid1 vdb3[2] vdb2[1] vdb1[0]
      102272 blocks super 1.2 [3/3] [UUU]

我们需要先将其中一个磁盘脱机,然后才能将其删除:

$ sudo mdadm --manage /dev/md127 --fail /dev/vdb2
mdadm: set /dev/vdb2 faulty in /dev/md127

现在的状态显示情况很糟糕

md127 : active raid1 vdb3[2] vdb2[1](F) vdb1[0]
      102272 blocks super 1.2 [3/2] [U_U]

我们现在可以删除该磁盘:

$ sudo mdadm --manage /dev/md127 --remove /dev/vdb2
mdadm: hot removed /dev/vdb2 from /dev/md127

md127 : active raid1 vdb3[2] vdb1[0]
      102272 blocks super 1.2 [3/2] [U_U]

现在调整大小:

$ sudo mdadm --grow /dev/md127 --raid-devices=2
raid_disks for /dev/md127 set to 2
unfreeze

至此,我们已成功将阵列减少到 2 个磁盘:

md127 : active raid1 vdb3[2] vdb1[0]
      102272 blocks super 1.2 [2/2] [UU]

现在可以将新磁盘重新添加为热备用:

$ sudo mdadm -a /dev/md127 /dev/vdb2
mdadm: added /dev/vdb2

md127 : active raid1 vdb2[3](S) vdb3[2] vdb1[0]
      102272 blocks super 1.2 [2/2] [UU]

显示(S)它是一个热备用。

我们可以通过使现有磁盘出现故障并注意到备用磁盘上发生重建来验证其是否按预期工作:

$ sudo mdadm --manage /dev/md127 --fail /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md127

md127 : active raid1 vdb2[3] vdb3[2] vdb1[0](F)
      102272 blocks super 1.2 [2/1] [_U]
      [=======>.............]  recovery = 37.5% (38400/102272) finish=0.0min speed=38400K/sec

vdb2不再标记,(S)因为它不是热备用。

坏盘重新添加后现在被标记为热备用

md127 : active raid1 vdb1[4](S) vdb2[3] vdb3[2]
      102272 blocks super 1.2 [2/2] [UU]

相关内容