记一次服务器电源故障导致磁盘MBR、Grub引导文件损坏的恢复

因为一台RedHat 6.4服务器里的服务不常用,一直放在机房没发现故障,导致一直无限重启N天。最后原因是电源故障,换完电源后,发现系统又无法启动,显示Hard Disk Error错误提示。刚开始怀疑是阵列卡导致磁盘故障,但重启发现阵列卡显示磁盘正常。最后由于习惯使用Windows PE,手贱在PE里头使用DiskGenius恢复MBR引导,最后啥也不显示了,直接显示一个j。

1.jpg
这下将MBR也损坏了。服务器有重要数据,无奈在虚拟机上进行了故障重现,相同的环境下模拟恢复流程,记录下来。
首先准备RedHat6.4安装磁盘,我这里是iso文件包,直接挂在虚拟机器里头跑起来。安装完系统后直接干掉了boot目录下的所有文件。然后使用PE重置引导MBR。这下故障重现了。
接着恢复记录开始了。
1、挂载Redhat 6.4安装磁盘,启动选择第三项 Rescue installed system,回车
2.jpg
2.后面这两个直接默认即可:语言language默认选english,键盘keyboard选us,回车
3.jpg
3.What type of media contains the rescue image?选择Local CD/DVD,回车
5.jpg
4.中间有个OK回车确定,然后在Setup Networking网络选项选择No,回车
7.jpg
5.Rescue 这步选择Continue(按一下Tab键可以选中),回车
8.jpg
6.后面两个OK,回车两次即可。
9.jpg
7.最后选择Shell Start shell,回车
11.jpg
8.进入shell后,显示bash-4.1#,在该状态下切换为恢复系统的根目录运行

chroot /mnt/sysimage
sh-4.1#
进入要恢复系统的root

13.jpg
9.接着挂载系统安装盘的CDROM。

cd /mnt
mkdir cdrom
mount /dev/cdrom /mnt/cdrom 

10.进入系统安装盘,安装系统rpm。

cd /mnt/cdrom/Packages/
rpm -ivh grub-* --force     //输入kernel.后按tab可自动补全,我这里*全部安装。
rpm -ivh kernel.2.6.32-358.el6.i686.rpm --force     //输入kernel.2后按tab可自动补全。

11.先确认一下磁盘名称,然后执行grub-install

df -h   //确认一下磁盘名称
grub-install /dev/sda 

12.安装完grub等后,进入boot/grub下创建grub.conf文件

cd /boot/grub
vi /boot/grub/grub.conf

13.grub.conf文件内容

default=0
timeout=5    //启动界面停留时间
title RedHat Enterprise Linux 6.4    //linux启动时界面显示的系统名称
    root (hd0,0)
    kernel /vmlinuz-2.6.32-358.el6.i686 ro root=UUID=45eb1da6-672b-4943-be61-7d2145c1c7c3  rhgb quiet

PS:kernel最后的其中"rhgb"表示"Redhat Graphics Boot"图形进度条模式,所以如启动时候不想显示进度条,将grub里头的"rhgb"去掉保存即可,而"quiet"表示在启动过程中只显示重要启动信息,类似系统自检的消息不会显示,也可以选用。

14.注意其中root的目录UUID需要先找到。可以使用cat /etc/fstab查看,并记录“/”的UUID值即可,我这里是c1c7c3这行。
15.jpg

15.最后exit,exit,reboot重启即可。这里放一个原版完整的grub.conf文件供参考。

标签: RedHat

发表评论: