使用远程电源开关后,我的服务器没有恢复在线。当我前往数据中心并当场重新启动计算机时,我看到服务器正在启动(我看到 centos 进度条几乎一直运行到最后)并最终给出以下消息:
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,而我没有 RAID 设置的备份。我唯一的备份是 /home 和数据库转储。(不过至少有这些,我很高兴。)
由于服务器是一台没有 CD-ROM 驱动器的旧式 Dell PowerEdge 1750,因此我无法从启动盘启动机器。我还记得过去服务器也无法从可启动的 USB 磁盘启动。因此,我知道如何启动服务器的唯一方法是前往数据中心,拿起服务器并将其带到办公室。拧开服务器。将 cdrom 驱动器连接到主板上的 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)
我认为第一个配置是默认配置,因为选择该配置会导致上述内核崩溃。其他配置的结尾类似于“永远休眠”。
我可以按“e”编辑启动命令,按“a”修改内核参数,按“c”进入 grub 命令行。
命令行给出了 grub> 提示符。但我不知道如何在不(尝试)访问脏分区的情况下让系统启动。
我当然想做的是: - 启动机器 - 检查硬盘是否有错误 - 将驱动器标记为干净
答案1
从 grub 屏幕,编辑启动命令并添加emergency
到启动命令行选项的末尾。然后启动它。这不能保证能起作用(如果md2
是您的根文件系统,它将失败)。如果这不能为您获取 shell,您将不得不去寻找 CD-ROM 驱动器。
一旦您有了 shell,您就可以运行mdadm
以尝试恢复您的 RAID 阵列。
找出哪些设备应该属于其中:
mdadm -D /dev/md2
您将看到设备列表。如果某些设备被标记为removed
或,failed
则您必须先处理故障磁盘。
此后,重新组装 RAID 阵列:
mdadm --assemble --force /dev/md2 /dev/**** /dev/**** /dev/**** ...
(* 列出应该位于前一个输出中的数组中的每个设备。)