我正在尝试使用 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”第一个替换驱动器。