Linux系统故障分析与排查—系统启动类故障排除

Linux系统故障分析与排查—系统启动类故障排除

在处理Linux系统出现的各种故障时,故障的症状是最先发现的,而导致这以故障的原因才是最终排除故障的关键。熟悉Linux系统的日志管理,了解常见故障的分析与解决办法,将有助于管理员快速定位故障点。“对症下药”及时解决各种系统问题。

在处理Linux系统出现的各种故障时,故障的症状是最先发现的,而导致这以故障的原因才是最终排除故障的关键。熟悉Linux系统的日志管理,了解常见故障的分析与解决办法,将有助于管理员快速定位故障点。“对症下药”及时解决各种系统问题。

本文以RHEL5版本系统为例讲述系统启动时的故障排除的具体做法。

1、系统启动类故障排除

在Linux系统的启动过程中,涉及到哦MBR主引导记录、GRUB启动菜单、系统初始化配置文件、分区挂载配置文件等各方面,其中任何一个环节出现故障都可能会导致系统启动的失常,因此一定要注意做好相关文件的备份功能。下面是一些系统启动类的故障情况:

> MBR扇区故障

MBR引导记录位于物理硬盘的第一个扇区(512个字节),该扇区又称为主引导扇区(MBR扇区),除了包含系统引导程序的部分数据以外,还包含了整个硬盘的分区表记录。当主引导扇区发送故障时,将可能无法进入主引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。

下面将介绍对MBR扇区进行备份、破坏、修复的过程,嘿嘿!

>:备份MBR扇区数据

由于MBR扇区包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存在其他的存储设备中,否则在恢复时将无法读取带备份文件。

使用dd命令将第1块硬盘(sda)的MBR扇区备份到第2块硬盘的sdb1分区中(挂载到/backup目录)

   
   
  1. mkdir /backup 
  2. mount /dev/sdb1 /backup 
  3. dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1 

>:模拟MBR扇区故障

仍然使用dd命令,我们人为将MBR扇区的记录覆盖,以便模拟出MBR故障、

   
   
  1. dd if=/dev/zero of=/dev/sda bs=512 count=1 

完成上述操作后重启系统,将会出现"Operating system not found "的提示信息,表示无法找到可能的操作系统,因此无法启动主机。

> 从备份文件中恢复MBR扇区数据

由于MBR扇区被破坏以后,已经无法再从该硬盘启动系统,所以需要使用其他硬盘中的操作系统进行引导,或者直接使用RHEL5系统的安装光盘进行引导。不管使用哪种方式,目地都是相同的:获得一个可以执行命令的Shell环境,以变从备份文件中恢复MBR扇区中的数据,

以使用RHEL5安装光盘引导为例,当出现安装向导的:“boot”提示符时,在后边输入“linux rescue‘并回车,将以”急救模式“引导光盘中的Linux系统。之后一次按回车键接受默认的语言、键盘合适,提示是否配置网卡时一般选择”No’,然后系统会自动查看硬盘中的Linux分区并尝试将其挂载到"/mnt/sysimage"目录(选择“Continue”确认并继续)。接下需要特别输液椅:当出现是否初始化磁盘的警告窗口时如:

一定要选择"No",以免对硬盘数据造成进一步损坏。

最好选择“OK”确认后进入到带"sh-3.1#"提示符的Bash Shell环境,只要执行相应的命令挂载保存有备份文件的硬盘文件(sdb1),并将数据恢复到硬盘"/dev/sda"中即可。需要注意的是,当前使用的系统环境是光盘中的Linux目录结构。

*>:确认第1块硬盘的分区情况(已无法获得有效分区表信息,并恢复MBR扇区的数据)。

  
  
  1. fdisk -l /dev/sda 

   
   
  1. mkdir /tmpdir 
  2. mount /dev/sdb1 /tmpdir 
  3. dd if=/tmpdir/sda.mbr.bak of=/dev/sda bs=512 count=1   //恢复备份数据 

完成恢复操作以后,执行"reboot"重启主机即可(注意取出RHEL5的安装光盘)。

2、GRUB引导故障

GRUB是大多数Linux系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统(如果有的话)。当"/boot/grub.conf'配置文件丢失,或者关键配置出现错误,或者MBR记录中的引导程序遭到破坏时,Linux主机启动后可能会出现"grub>“的提示符,无法完成进一步的系统启动过程。

如果在该提示符,可以进行编辑,通过输入对应的引导命令(可以参考”/boot/grub/grub,conf"文件中的配置),再执行"boot'命令也可以进行引导Linux系统。

eg>:通过在"grub>"环境中手动输入引导命令启动Linux系统。

  
  
  1. grub>root (hd0,0) 
  2. grub>kernel/vmlinux-2.6.18-8.e15 ro root=/dev/VolGroup00/LogVo100 rhgb quiet 
  3. grub>inited /initrd-2.6.18-8.e15.img 
  4. grub>boot 
 

之后的启动成功与正常启动RHEL5系统的过程是一模一样的。登录进入系统以后,需要找到配置文件"/boot/grub/grub.conf',并修复其中的错误,或者直接重建该文件。具体内容可以参考其他正常主机的同名文件。

.>>>>>>>>>:查看grub.conf启动菜单配置文件的主要内容。        grep -v "^#" /boot/grub/grub.conf

其中,各主要配置项的含义说明:

>:title:指定在启动菜单中显示的操作系统名称。

>:root:指定包含内核等引导文件的/boot分区所在的位置。

>:kernel:指定内核文件所在的位置,内核加载时权限为只读"ro",并通过"root="指定根分区设备文件的位置。

>:initrd:指定启动内核所使用的临时系统镜像文件所在的位置。

由于在"grub>"环境中使用的命令较为复杂,而且一般难以记得相关的命令选项,内核加载参数等。因此用户可以采用另一种修复办法,同样使用RHEL5的安装光盘进入急救模式,如果分区表并未被破坏,则急救模式将会找到硬盘中的Linux根分区,并将其挂载到光盘目录结构中的"/mnt/sysimage/"文件夹中。

进入"sh-3.1"的Shell环境以后,执行"chroot /mnt/sysimage"命令可以将目录结构切换到待修复的Linux系统中。然后重新建立新的grub.conf配置文件即可。

eg:确认待修复的Linux系统分区的挂载情况,并重建grub.conf文件。

  
  
  1. chroot /mnt/sysimage               //切换到待修复的Linux系统根环境。 
  2. mount 
  3. .....省略部分内容 
  4. vi /boot/grub/grub.conf             //重建grub.conf文件,内容就不写了 
  5. exit                                        //退出chroot环境 
  6. exit                                         //退出sh-3.1环境,系统会自动重启 
 

在上例中,若为执行"chroot /mnt/sysimage"命令,则重新建立的grub.conf配置文件应该位于"/mnt/sysimage/boot/grub/grub.conf"

如果是MBR扇区中的引导程序出现损坏,可能在重建grub.conf配置文件后仍然无法成功启动系统,这时候可以在救援模式的Shell环境重新安装grub

eg:进入待修复的Linux系统根环境,重新将grub引导程序安装到第一块硬盘(sda)中的MBR扇区中。

  
  
  1. chroot /mnt/sysimage 
  2. grub-install /dev/sda 
  3. exit 
  4. exit 
 

上述方法同样适用于在Linux主机中那种Windows系统(不覆盖Linux系统)后导致Linux系统无法启动的情况。因为i对于使用双操作系统的主机,后安装的Windows系统将使用自己的引导数据覆盖MBR扇区中的记录,导致开机后不再出现GRUB菜单从而无法进入Linux系统。如果是后安装Linux系统,GRUB程序将会自动识别硬盘中的Window系统并将其加载到GRUB菜单配置中。

> /etc/inittab文件丢失

"/etcinittab"文件是系统初始化进程init的配置文件,当该文件被误删或者存在错误配置时,可能导致无法启动系统。丢失"/etc/inittab"文件后,启动后将会出现"INIT:No inittab file found"的错误提示信息。

这类故障同样可以在RHEL5安装光盘的急救模式下进行修复。如果文件配置错误,则进行纠正或者从备份文件中进行恢复即可。默认情况下,如果并未使用chroot命令切换环境,则需要修改的文件"/mnt/sysimage/etc/inittab"。

若inittab文件已经丢失,且没有可用的备份。则需要从RHEL5的光盘目录中重新安装initscript软件包。

eg:在急救模式的"sh-3.1#"环境中挂载RHEL5光盘设备,并重新安装initscript软件包,结合rpm 命令的"--replacepkgs"选项用于替代现有文件。

   
   
  1. chroot /mnt/sysimage 
  2. mount /dev/hdc /media/cdrom 
  3. rpm -vhi --replacepkgs /media/cdrom/Server/initscripts-8.45.14.EL.i386.rpm 

在急救模式的Shell环境中通常不再保留cdrom连接文件,而直接通过设备文件"/dev/hdc'使用光盘。安装完毕重启系统即可。

>  /etc/fstab文件丢失

"/etc/fstab"配置文件决定了Linux系统在启动后如何加载各分区,例如根分区"/"、"/boot"分区等,若这些分区无法挂载,系统也就无法成功启动。丢失"/etc/fstab"文件后,启动时将会出现如下错误提示信息。

同样使用RHEL5的安装光盘进入急救模式的Shell环境中,由于缺少fstab文件,光盘系统将无法找到待修复的Linux分区,因此必须通过手动的方式查找并挂载根分区,然后重建fstab配置文件后重启系统即可。

eg:在急救模式的Shell环境中扫描逻辑卷组,激活逻辑卷,以便找到根分区设备,然后手动挂载根分区,并重建fstab配置文件。

   
   
  1. lvm vgscan                                   //查找逻辑卷  
  2. lvm  vgchange -ay /dev/VolGroup00     //激活找到的逻辑卷  
  3. mkdir /tmpdir  
  4. mount /dev/VolGroup00/LogVol00 /tmpdir  //挂载根分区到/tmpdir目录  
  5. vi  /tmpdir/etc/fstab   //重建fstab配置文件,或直接复制备份的文件 

3、遗忘root用户的密码

>:通过单用户模式重设root账号的密码(不再说明);

>:通过急救模式重设root账号的密码

若使用RHEL5的安装光盘进入急救模式的Shell环境,则只需切换到待修复Linux系统的根目录环境,直接执行"passwd root"命令重设root用户的密码即可;或者修改 "/etc/shadow"文件,将root用户的密码字段清空,重启,正常进入系统再修改密码。

eg:在急救模式中,切换到待修复的Linux根分区环境,修改root账号的密码。

  
  
  1. chroot /mnt/sysimage 
  2. passwd root 
  3. .... 
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值