带有活动和备用分区的 Raid1

Dan*_*ron 8 linux raid software-raid mdadm ubuntu

我的 Ubuntu 系统(10.04 LTS、2.6.32-24-server 以防万一)上的 RAID1 软件 raid 分区遇到以下问题。

我的一个磁盘 (sdb5) 报告了 I/O 错误,因此在阵列中被标记为故障。该阵列随后被一个有源器件降级。因此,我更换了硬盘,克隆了分区表并将所有新分区添加到我的 raid 阵列中。同步所有分区后,结果很好,有 2 个活动设备 - 除了其中一个。然而,之前报告故障磁盘的分区没有将新分区作为活动设备,而是作为备用磁盘:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]
Run Code Online (Sandbox Code Playgroud)

详细的外观显示:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5
Run Code Online (Sandbox Code Playgroud)

那么问题来了:我如何告诉我的raid 将备用磁盘变成活动磁盘?为什么将其添加为备用设备?重新创建或重新组装阵列不是一种选择,因为它是我的根分区。而且我在 Software Raid HOWTO 中找不到有关该主题的任何提示。

任何帮助,将不胜感激。

当前解决方案

我找到了解决问题的方法,但我不确定这是否是解决问题的实际方法。仔细查看我的突袭,我发现 sdb5 始终被列为备用设备:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5
Run Code Online (Sandbox Code Playgroud)

因此,将设备 sdb5 读取到阵列 md3 总是最终将设备添加为备用设备。

最后我只是重新创建了数组

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5
Run Code Online (Sandbox Code Playgroud)

哪个有效。

但问题对我来说仍然是开放的:有没有更好的方法来操作超级块中的摘要并告诉阵列将 sdb5 从备用磁盘转换为活动磁盘?我仍然很好奇答案。

Rol*_*nik 1

Daniel:首先,通过执行以下操作来仔细检查备件是否已集成到阵列中:

猫 /proc/mdstat

它应该报告是否正在进行构建过程以及预计需要多长时间。

如果没有出现任何建筑物,请尝试以下操作

mdadm /dev/md3 --删除 /dev/sdb5

mdadm /dev/md3 --add /dev/sdb5

并报告这对您有何作用。有关更多详细信息,请参阅http://linux.die.net/man/8/mdadm 。