md / raid:md2:无法启动dirty degraded数组,内核恐慌

在使用远程电源开关之后,我的服务器没有回到在线状态。 当我到数据中心并在现场重新启动计算机时,我看到服务器启动(我看到了进度条几乎一直运行到最后),并最终发出以下消息:

md/raid:md2: cannot start dirty degraded array. md/raid:md2: failed to run raid set. md: pers->run() failed ... md/raid:md2: cannot start dirty degraded array. md/raid:md2: failed to run raid set. md: pers->run() failed ... Kernel panic - not syncing: Attempted to kill init! Pid: 1, comm: init not tainted 2.6.32-279.1.1.el6.i686 #1 Call Trace: [<c083bfbc>] ? panic+0x68/0x11c [<c045a501>] ? do_exit+0x741/0x750 [<c045a54c>] ? do_group_exit+0x3c/0xa0 [<c045a5c1>] ? sys_exit_group+0x11/0x20 [<c083eba4>] ? syscall_call+0x7/0xb [<c083007b>] ? cmos_wake_setup+0x62/0x112 

服务器运行CentOS和软件突袭,我没有raid设置的备份。 我唯一的备份是/ home和数据库转储。 (很高兴至less有那些虽然。)

由于服务器是旧的戴尔PowerEdge 1750没有CD-ROM驱动器,我没有办法从引导磁盘引导机器。 我也记得在过去,服务器也不能从可启动的USB磁盘启动。 因此,我知道如何启动服务器的唯一方法是到数据中心,拿起服务器并将其送到办公室。 拧开服务器。 将光盘驱动器连接到主板上的IDE插槽。 然后启动它。 我希望你们能帮我避免这一点。

我已经看了一下启动选项,我发现了以下启动选项。 当CentOS即将启动并中断启动倒计时:

 CentOS (2.6.32-279.1.1.el63.i686) CentOS Linux (2.6.32-71.29.1.el6.i686) centos (2.6.32-71.el6.i686) 

我认为第一个configuration是默认的configuration,因为select让我感到上面提到的内核恐慌。 其他的以“永远睡觉”结束。

我可以按'e'编辑引导命令,按'a'修改内核参数,按'c'作为grub命令行。

命令行提供了一个grub>提示符。 但是我不知道如何在没有(试图)访问脏分区的情况下启动系统。

我想要做的是: – 引导机器 – 检查硬盘是否有错误 – 将驱动器标记为干净

在grub屏幕上,编辑引导命令,并在引导命令行选项末尾添加emergency 。 然后启动它。 这不保证工作(如果md2是你的根文件系统,它将失败)。 如果这不能让你的shell,你将不得不去寻找一个CD-ROM驱动器。

一旦你有一个shell,你可以运行mdadm来尝试恢复你的RAIDarrays。

找出哪些设备应该是其中的一部分:

 mdadm -D /dev/md2 

你会看到一个设备清单。 如果某些标记为removedfailed则必须先处理发生故障的磁盘。

之后,重新组装你的RAIDarrays:

 mdadm --assemble --force /dev/md2 /dev/**** /dev/**** /dev/**** ... 

(*列出应该在前一个输出中的数组中的每个设备。)