mdadm raid1 无法重新同步

mdadm raid1 无法重新同步

我正在尝试使用 mdadm raid1 解决遇到的这个问题。

我有一台运行在带有 mdadm 的软件 2 驱动器 raid1 上的 ubuntu 9.04 服务器。昨天,其中一个驱动器发生故障,因此我用一个大小相同的全新驱动器替换了它。我移除了故障驱动器,将分区从剩余的良好驱动器复制到新驱动器,然后将其添加到 raid。它重新同步并且系统运行良好,直到未发生故障的驱动器也被标记为故障。

现在,我的 RAID 仅在新驱动器上运行。因此,我购买了另一个驱动器并重复了上述过程。因此,现在我有了 2 个全新的驱动器,并且 RAID 正在同步。但是,几分钟后,我检查了 /proc/mdstat,发现 RAID 不再同步。

mdadm --detail /dev/md1 显示:(sdb 是第一个新驱动器,sdc 是第二个新驱动器)

root@dola:/home/jjaramillo# mdadm --detail /dev/md1 /dev/md1: 版本:00.90 创建时间:2008 年 12 月 20 日星期六 00:42:05 突袭级别:raid1 阵列大小:974711680(929.56 GiB 998.10 GB) 已用设备大小:974711680(929.56 GiB 998.10 GB) 突袭设备:2 总设备数:2 首选次要:1 持久性:超级块是持久的

Update Time : Wed Jun  2 10:09:35 2010
      State : clean, degraded

活动设备 : 1 工作设备 : 2 故障设备 : 0 备用设备 : 1

       UUID : bba497c6:5029ba0b:bfa4f887:c0dc8f3d
     Events : 0.5395594

Number   Major   Minor   RaidDevice State
   2       8       35        0      spare rebuilding   /dev/sdc3
   1       8       19        1      active sync   /dev/sdb3

我尝试过几次移除并重新添加驱动器,但还是发生了同样的事情。RAID 无法重新同步。我查看了 /var/log/messages,发现以下内容:

6 月 2 日 07:57:36 dola 内核:[35708.917337] sd 5:0:0:0: [sdb] 未处理的检测代码 6 月 2 日 07:57:36 dola 内核:[35708.917339] sd 5:0:0:0: [sdb] 结果:hostbyte=DID_OK driverbyte=DRIVER_SENSE 6 月 2 日 07:57:36 dola 内核:[35708.917342] sd 5:0:0:0: [sdb] 检测密钥:中等错误 [当前] [描述符] 6 月 2 日 07:57:36 dola 内核:[35708.917346] 描述符检测数据与检测描述符(十六进制): 6 月 2 日 07:57:36 dola 内核: [35708.917348] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 Jun 2 07:57:36 dola kernel: [35708.917357] 00 43 9e 47 Jun 2 07:57:36 dola kernel: [35708.917360] sd 5:0:0:0: [sdb] Add. Sense: 未恢复的读取错误 - 自动重新分配失败

因此,看起来 sdb(第一个新驱动器)上存在某种错误。我的问题是,让 raid 重新启动并运行的最佳方法是什么?我曾考虑将 /dev/md1 添加到空白硬盘驱动器,然后从头开始重新创建 raid 并重新加载数据,但可能有一个更简单的解决方案。

任何帮助,将不胜感激。

答案1

您不应尝试以任何有意义的方式准备新驱动器,除非您的 raid 组成部分实际上是磁盘分区而不是磁盘本身。在这种情况下,您将在新驱动器上创建一个与剩余活动磁盘上的大小相同的分区。

您根本不需要接触旧驱动器——它被认为是故障的和不可靠的。

正确的步骤是移除损坏的驱动器,添加一个新的空驱动器,然后使用 mdadm 将该新驱动器添加到阵列。您可以这样做:

mdadm --add /dev/md0 /dev/<newdrive>

然后,内核会将新驱动器同步到阵列中,并从剩下的一个良好驱动器复制数据。

答案2

关于:

我移除了有故障的驱动器,将分区从剩余的良好驱动器复制到新驱动器,然后将其添加到磁盘阵列中。

您不应该自行复制分区。

您唯一要做的就是将新驱动器放入系统,然后使用 mdadm 将其添加到您的 raid 组。

如果您确实进行了复制(即 dd if=/dev/good_disk of=/dev/new_disk),您可能最终复制了 raid UUID 或让 mdadm 知道哪个磁盘是哪个磁盘的东西,然后它就会感到困惑。

答案3

安装新的硬盘,按照 Tom O'Connor 的建议进行分区,然后使用 mdadm 修复阵列。请参阅 mdadm 手册页“管理模式:”下的 --add 选项:

mdadm /dev/md0 --add /dev/sda1 

您可能必须先“--fail”第一个替换驱动器。

相关内容