Chinaunix首页 | 论坛 | 博客
  • 博客访问: 197126
  • 博文数量: 28
  • 博客积分: 1179
  • 博客等级: 上尉
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-21 22:51
文章分类

全部博文(28)

文章存档

2012年(4)

2011年(8)

2010年(2)

2009年(6)

2008年(8)

分类: LINUX

2008-12-29 22:24:23

[摘在开源世界第四期,有删改。]

RedHat 企业版 5 下系统故障恢复                                                 

                                          CU 网友:anmyyang

Redhat Enterprise 5 的系统故障的极端情况主要包括 grub 配置文件丢失,fstab 分区挂载表丢失及
/boot 系统引导目录被删除的故障恢复,本文针对此三种情况分别给出恢复策略。

一 、Grub 配置文件丢失的故障恢复
Grub 配置文件一般指/boot/grub/grub.conf 文件,该文件指示了系统引导时要从哪个分区去加载
内核及内存镜像(RAMDISK)文件,该文件的丢失将使电脑启动时在 grub 配置界面中卡住。解决该文
件丢失需要管理员记住 grub.conf 的基本配置信息,比如:

[root@localhost ~]# cat /etc/grub.conf
default=0          #默认加载第几个系统,从 0 起算
timeout=5          #启动时停留在 Grub 配置界面中的时间
splashimage=(hd0,0)/grub/splash.xpm.gz  #Grub 的背景图片
hiddenmenu                 #是否隐藏菜单
title Red Hat Enterprise Linux Server (2.6.18-8.el5) #操作系统的标题
      root (hd0,0)                  #操作系统的引导分区;hd0表示是第一个硬盘;后面的0表示是第一个分区(例如sda0)
      kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/  #设置加载的内核
      initrd /initrd-2.6.18-8.el5.img                   #设置加载的内存磁盘文件

解决方法:
1 在系统启动的 grub 配置环境中敲入如下几条语句;
      root (hd0,0)
      kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
      initrd /initrd-2.6.18-8.el5.img
2 再敲入 boot 启动;
3 去/boot/grub/中做一个 grub.conf 文件(文件内容就是刚才显示的内容),或者把备份的 grub
文件恢复一份为 grub.conf;此后系统重启后即可正常引导;

二 、fstab 分区挂载表丢失的故障恢复
fstab 文件位于/etc/fstab,该文件指示了系统在启动后要怎么装载系统分区,像系统的几个重要系统
分区如/,/boot,/home,swap 分区都要通过 fstab 让系统去挂载,该文件丢失的话系统挂载过程会
出错,虽然在 RedhatLinux Enterprise 5 中 fstab 丢失系统仍可启动至图形界面(如果有安装的
话),但是在切入到命令行界面即会出错,我们先看一下 fstab 的内容:
[root@localhost ~]# vi /etc/fstab
LABEL=/         /              ext3   defaults    11
LABEL=/boot        /boot             ext3   defaults    12
devpts          /dev/pts           devpts gid=5,mode=620 0 0
tmpfs          /dev/shm             tmpfs defaults      00
LABEL=/home         /home              ext3  defaults    12
proc           /proc            proc defaults        00
sysfs         /sys            sysfs defaults     00
LABEL=SWAP-sda3       swap              swap   defaults    00

我们来看一下这一行:
LABEL=/         /              ext3   defaults    11
这行说明了标签(label)等于/的分区挂载在根(/)目录下,分区是 ext3 格式,第五列的 1 指明访分
区是否要备份 (0 为不备份,1 为要备份, 一般根分区要备份),第六列的 1 指明该分区要自检 (0 为不
自检,1 或者 2 为要自检, 如果是根分区要设为 1,其他分区只能是 2)。
我们设置标签是因为分区名(如/dev/sda1)很难记忆,所以系统自动会把要挂载到/目录的分区标
签设为/,把挂载到/home 目录的分区标签设为/home,设置标签的命令如下:
将/dev/sda1 分区命名为 abc:
[root@localhost ~]#e2label /dev/sda1 abc
查询/dev/sda1 分区:
[root@localhost ~]#e2label /dev/sda1 abc
查找标签为 abc 的分区:
[root@localhost ~]#findfs LABEL=abc

解决方法:
A 如有系统可以启动并可以使用命令的话,手工做一份 fstab 放入/etc 即可,但由于 fstab 比较难
记,管理员先前最好要有备份,将备份文件拷贝为/etc/fstab 即可。
B 如果系统不能启动,要依靠系统光盘的救援模式,按照如下步骤解决:
1 放入 Redhat 系统光盘,设置从光盘引导,并且进入救援模式(敲入 linux rescue);
2 findfs LABEL=/ 来查找原来/目录所挂载的分区名;
3 如第 2 步找到的分区为/dev/sda9,先用 mkdir /mnt/sysimage 建立一个目录,再用
 mount /dev/sda9 /mnt/sysimage 来挂载;
4 进入/mnt/sysimage/etc 目录,如果 fstab 有备份的话将其恢复(如 mv fstab.bak fstab),如果
没有,请自己做一个 fstab;
如果用 chroot /mnt/sysimage 将当前根目录设定为磁盘中的根目录(否则当前根目录在光盘中),
此时进入/etc 目录,如果 fstab 有备份的话将其恢复(如 mv fstab.bak fstab),如果没有,请自己
做一个 fstab;
5 敲入 reboot 或敲入两次 exit 并命出光盘重启即可;

三 、/boot 系统引导目录被删除的故障恢复
/boot 目录中存放有 grub.conf 及系统引导用的内核及内存磁盘文件,该目录被删除一般会导致
grub 配置界面都没有使用,并有提示 error15,解决方法还只能依靠系统光盘的救援模式。
我们来考查最糟糕的一种情况,就是/boot 目录被删除的同时,fstab 也被删除了,此时要怎么恢复?
系统先前环境:
系统假设安装有 linux 与 winxp
其中/dev/sda8 挂载在/boot 目录下
    /dev/sda9 挂载在/目录下
    /dev/sda12 挂载于/home 目录下
且/home 目录中备份有 kernel-2.6.18-8.el5.i686.rpm(该文件用于安装系统内核,极为重要,建议
管理员备份一个,在系统光盘中也有),fstab,grub.conf 文件
以下是系统 grub.conf 的配置:
default=1
timeout=5
splashimage=(hd0,7)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-8.el5)
     root (hd0,7)
     kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
     initrd /initrd-2.6.18-8.el5.img
title Other
     rootnoverify (hd0,0)
     chainloader +1
以下是 df -h 的结果:
Filesystem           Size Used Avail Use% Mounted on
/dev/sda9             9.5G 2.7G 6.3G 30% /
/dev/sda8              99M 28M 67M 30% /boot
tmpfs              474M    0 474M 0% /dev/shm
/dev/sda12             965M 53M 863M 6% /home
/dev/sda10             965M 18M 898M 2% /zjg
/dev/sdb5             983M 628M 355M 64% /media/disk
解决方法:
1 放入系统盘,设置从光盘启动,敲入 linux rescue 进入救援模式;
2 此时是光盘无法自动挂载/分区到/mnt/sysimage,要手工挂载;
  用 findfs LABEL=/ 找到原来/分区所挂载的分区,比如为/dev/sda9,同样的找到原
来/home,/boot 对应的分区/dev/sda12,/dev/sda8
  mount /dev/sda9 /mnt/sysimage 挂载/
 mount /dev/sda8 /mnt/sysimage/boot 挂载boot (注:也可不挂载)
 mount /dev/sda12 /mnt/sysimage/home 挂载/home
3 chroot /mnt/sysimage 切换到原系统的根分区,否则是光盘上的分区;
4 比如管理员在/home 目录下有 fstab 的备份,此时要把/home 下的备份 fstab 拷贝
到/etc/fstab,没有的话请自己配一下;重启;
5 再次进入光盘救援模式,chroot /mnt/sysimage 切换到原系统的根分区,
6 去/home 目录,并安装 kernel-2.6.18-8.el5.i686.rpm
 rpm -ivh kernel-2.6.18-8.el5.i686.rpm --root=/ --force
7 此时可以查看/boot 目录,已经安装了内核文件与文件系统文件
    vmlinuz-2.6.18-8.el5
    initrd-2.6.18-8.el5.img
8 安装 grub: grub-install /dev/sda(这一步做什么用的??)
8 把/home 下的 grub.conf 拷贝到/boot/grub/grub.conf,没有的话请自己配一下;
9 reboot 或两次 exit 重启,并拿出光盘即可启动。

阅读(1916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~