排查一些常见的系统故障

排除系统启动类故障

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

一、MBR扇区故障

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

备份MBR扇区数据

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

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

#mkdir  /backup

# mount  /dev/sdb1  /backup

# dd if=/dev/sda  of=/backup/sda.mbr.bak  bs=512  count=1

模拟MBR扇区故障

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

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

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

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

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

以使用RHEL6安装光盘引导为例,当出现安装向导界面时,选择“Rescue installed system”并回车或单击“ESC”键,输入“linux rescue”,将以”急救模式“引导光盘中的Linux系统。之后一次按回车键接受默认的语言、键盘合适,提示是否配置网卡时一般选择”No’,然后系统会自动查看硬盘中的Linux分区并尝试将其挂载到"/mnt/sysimage"目录(选择“Continue”确认并继续)。之后单击“OK”,进入带“bash-4.1#”提示符的Bash Shell环境,当前使用系统环境是光盘中的Linux系统目录结构

# mkdir  /asd

# mount  /dev/sdb1  /abcd

# dd if=/abcd/sda.mbr.bak  of=/dev/sda

# reboot

系统将自动重启,恢复正常

二、GRUB引导故障

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

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

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


 grub>root (hd0,0)                                  


 grub>kernel/vmlinux-2.6.32-431.e16 ro root=/dev/VolGroup00/LogVo100 rhgb quiet


 grub>inited /initrd-2.6.32-431.e16.img                 


 grub>boot                                               

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

查看grub.conf启动菜单配置文件的默认内容。

#grep -v "^#" /boot/grub/grub.conf

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

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

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

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

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

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

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

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


bash-4.1# chroot /mnt/sysimage       //切换到待修复的Linux系统根环境  


sh-4.1# vi /boot/grub/grub.conf      //重建grub.conf文件,内容略     


sh-4.1# exit                         //退出chroot环境               


bash-4.1# reboot                       //退出sh-4.1环境,系统会自动重启 

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

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

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


bash-4.1# chroot /mnt/sysimage                       


sh-4.1# grub-install /dev/sda                        


sh-4.1# exit                                         


bash-4.1# reboot                                     

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

三、/etc/inittab 文件丢失

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

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

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

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


bash-4.1# chroot /mnt/sysimage


sh-4.1# mount /dev/hdc /media/cdrom


sh-4.1# 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"文件后,启动时将会出现错误提示信息。

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

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


# lvm vgscan                            //查找逻辑卷    

# lvm  vgchange -ay /dev/VolGroup00     //激活找到的逻辑卷

# mkdir /tmpdir                                         


# mount /dev/VolGroup00/LogVol00 /tmpdir  //挂载根分区到/tmpdir目录   


# vi  /tmpdir/etc/fstab   //重建fstab配置文件,或直接复制备份的文件     

遗忘root用户密码

1.通过单用户模式重设root账号的密码;

(1)重启主机,在出现GRUB菜单是按“上、下”箭头取消倒计时,按“e”进入编辑模式

(2)定位到以 kernel 开头的一行并按“e”,在行尾添加“s”或“1”,进入单用户模式

(3)执行“passwd root”命令重设root用户密码

2.通过急救模式重设root账号的密码

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

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

# chroot  /mnt/sysimage

# passwd root

排除文件系统类故障

文件系统及磁盘中所存储数据的价值是无法估量的,管理员的工作职责之一就是确保数据的安全。由于磁盘属于易损耗品,无法预测什么时候会损坏,最好的办法就是建立完善的备份机制。当出现文件类或磁盘类故障时,一定要慎重处理。

一、修复文件系统

在Linux中,主机经常因为非正常关机、突然断电、设备数据读写异常等原因导致文件系统的破坏。比较常见的是超级块(super-block)损坏,超级块是文件系统的核心"档案",它记录了该文件系统的类型、大小、空闲磁盘块等信息。当文件系统的超级块数据损坏时,Linux将无法识别该文件系统,也就无法挂载使用。

当通过"/etc/fstab"配置文件自动加载的文件系统出现错误时,Linux系统开机后一般会自动进行检测,并提示用户需要进行文件系统的修复操作,例如:当"/dev/sdb1"分区的超级块出现错误时,启动后系统将提示"Give root password for maintenance"

# dd if=/dev/zero  of=/dev/sdb1  bs=512  count=4

# mount  /dev/sdb1  /mnt/

这时只需要输入root用户的密码,即可进入到一个临时的Shell环境,在这里用户可以对出现错误的文件系统进行修复。修复一般的文件系统错误可以使用fsck命令,结合"-t"选项指定文件系统类型,结合“-y”选择对发现的问题自动回答“yes”。需要注意的是,如果该文件系统遭受破坏的情况很严重,则修复完毕后可能仍然会丢失一些数据,因此请慎重决定是否进行修复。

使用fsck命令修复位于"/dev/sdb1"分区中的ext4文件系统。

# fsck -y -t ext4  /dev/sdb1

二、磁盘资源耗尽故障

显而易见,当一个文件系统的磁盘空间被耗尽以后,将无法继续在该分区创建新的文件数据,从而导致故障的出现,例如:当根分区"/"中的磁盘空间耗尽以后,将可能导致部分程序乃至整个系统无法正常启动或进行,因为一些临时的运行文件将无法建立。

当根分区磁盘空间不足无法启动进入Linux系统时,可以通过RHEL6的光盘进入急救模式,转移或清除掉根分区占用大量空间的文件。过程不再描述。

除此以外,当ext4文件系统中,i节点作为文件的索引节点,决定了该磁盘中文件数据的存储位置。当一个文件系统被创建以后,其i节点数就已经固定下来了,从而在该文件系统中能够使用的文件数量也就固定下来了。如果用户在该分区中创建了巨量的细小文件(耗尽i节点),将可能出现这种情况;虽然该分区中仍然有大量的剩余磁盘空间,但是用户却无法再 建立新的文件。

1.模拟i节点耗尽故障

(1)以一个20M的ext4文件系统为例(“/dev/sdb2”),将其挂载到"/data"目录下。并使用带“-i”选项的df命令确认该分区的i节点的使用情况。

(2)编写一个循环创建空文件的脚本程序,运行该脚本直至耗尽sdb2分区中的i节点。

(3)i节点耗尽以后,再次创建新的文件时,将会出现"设备上没有空间"的错误信息,但是使用df命令可以查看到该分区中还有可用的剩余空间,只是i节点数已经用完。

(4)修复i节点耗尽故障

理解i节点耗尽故障的根结以后,问题就好了点了,只要找出该分区中占用大量i节点的细小文件,并进行转移或者删除即可。

# rm -rf /data/file*

三、检测硬盘坏道

磁盘坏道分为逻辑坏道和物理坏道两种,前者主要由于软件操作不当造成,可以使用软件修复;而后者是物理性损坏,只能通过更改磁盘分区或扇区占用位置来进行改善,排除掉包含坏块的磁盘空间。当磁盘出现一下现象时,有可能是磁盘出现坏道,需要进行检测和修复。

(1)读取磁盘中的数据时,磁盘设备发出异常声响。

(2)访问磁盘中的某个文件时,反复读取且出错,提示文件损坏。

(3)对于新建立的分区无法完成格式化。

(4)系统使用该磁盘时频繁死机。

硬盘出现坏道后,如果不及时更换或进行技术出来,坏道就会越来越多,并可能造成频繁死机和数据丢失的后果。所有必要时应该对磁盘进行定期检测,检测是否存在坏道。

在Linux系统中,检测磁盘的坏道情况可以使用badblocks命令进行,在创建文件系统的过程中也可以结合mkfs命令的选项进行检测。使用badblocks命令时,“-s”选项用户显示进度信息,“-v”选项用于显示详情。

# badblocks  -sv  /dev/sdb

在长期使用计算机过程中,文件系统和磁盘类故障很难避免,对于此类故障的修复,一定要慎重处理,稍有不慎可能加重数据破坏的程度,当磁盘出现坏道时,尽快停止系统中的应用服务、备份相关数据,必要时关闭系统防止更大的损失。对于存在坏道的硬盘设备,应使用其他完好的硬盘进行替换。

时间: 2024-10-09 17:01:52

排查一些常见的系统故障的相关文章

常见linux系统故障排查与修复

一.常见系统故障: 服务器能正常启动固然是极好的,但是由于管理员误操作,或者是磁盘的物理扇区损坏等都有可能对系统造成致命的打击,让系统无法启动,这时作为管理员的你不能坐视不管了吧?这就要求管理员的你要能应对系统的各种错误导致的系统无法启动. 我们知道系统的启动是分为多个步骤的,任意一个环节的错误都会使系统无法启动所以像是关键性的数据最好要做好备份工作以免出错时无法应对.因为有的数据可以修复,有的数据也是无法修复的,下面探讨一下可修复部分的数据的修复吧: 1.  MBR中grub损坏,1_5阶段的

linux命令:常见的系统故障排除

Linux系统常见故障排除:    1.确定问题的故障特征 2.重现故障现象 3.使用工具收集进一步信息 4.排除不可能的原因 5.定位故障: 从简单的问题入手,一次尝试一种方式 可能出现的故障: 1.管理员密码忘记: 系统重新启动后,按方向键上下,定格在该界面中: 按下e进入编辑,然后选择选择kernel内核那栏 再按下e进行编辑,在quiet后输入1表示进入单用户维护模式: 输入1后,按确认键,再按b键,系统启动到单用户模式,进入单用户模式后 直接修改管理员密码即可. 2.系统无法正常启动

linux常见的系统故障排除

1,确定问题的故障特征2,重现故障3,是哦那个工具搜集进一步信息4,排除不可能的原型5,定位故障: 从最简单的问题入手 一次尝试一种方式 1,备份原文件2,尽可能借助工具 可能出现的故障:1,管理员密码忘记2,系统无法正常启动 a,grub损毁(MBR损坏,grub配置文件丢失) b,系统初始化故障(某文件系统无法正常挂载,驱动不兼容) grub:编辑模式 emergency: c,服务故障 d,用户无法登陆系统(bash程序故障) 3,命令无法运行4,编译过程无法继续 mbr损坏:1,借助别的

centos6,7常见系统故障解决方法

本篇文章笔者整理了一些常见的系统故障,以及误操作而造成的故障以及解决方案. 一,centos 7.4上 vmlinuz-3.10.0-693.el7.x86_64 内核文件损坏. 1,故障状态如下 (一直卡在该页面) 2,修复方法如下 (挂载光盘进入救援模式)依次选择:Troubleshootimg -->Rescue a Centos system-->1 (注意查看光盘挂载路径) 3,开启一个子shell查看光盘是否挂载 (centos6的光盘需要手动进行挂载)找到光盘下的vmlinuz文

透彻的了解Linux系统故障并解决

透彻的了解Linux系统故障并解决 2009-12-25 10:24 佚名 NET130 字号:T | T 经常应用Windows操作系统时,我们会很多的系统故障,于是很多人开始应用Linux操作系统,不过Linux操作系统也有一些系统故障,下面就对Linux系统故障诊断进行说明. 希望你能了解这些Linux系统故障. AD:2014WOT全球软件技术峰会北京站 课程视频发布 经常应用Windows操作系统时,我们会很多的系统故障,于是很多人开始应用Linux操作系统,不过Linux操作系统也有

带你玩转Logview: MaxCompute Logview参数详解和问题排查

摘要: 对于Logview上的诸多参数信息,究竟应该怎么"拨开云雾",发现问题所在呢?又如何通过Logview了解每个instance.task运行状态及资源占用情况,如何分析执行计划,分析query存在问题,找到Long-Tails task,让数据分析业务高效又省钱呢?本文中,阿里巴巴计算平台产品专家云花将为大家揭晓答案. 摘要:Logview是MaxCompute Job提交后查看和Debug任务的工具.通过Logview可看到一个Job的运行状态.运行结果以及运行细节和每个步骤

Windows 2008 R2 密码恢复

主题: Windows 2008 R2 密码恢复 准备工具: Windows2008 R2 安装光盘 ERDCommander Boot Media Wizard Tool (MsDaRT6.5)       http://www.xdowns.com/soft/6/65/2012/Soft_92944.html 操作步骤: 安装:MsDaRT6.5,生成工具ERD 使用ERD,制作启动光盘或U盘 使用制作的光盘或U盘来破解密码 详细参考下文: http://os.51cto.com/art/2

微信开发-PC调试-JS-SDK功能之分享功能调试

一般涉及和第三方的开发调试,都会比较麻烦些.不过,像微信这样的大公司呢,产品技术是过硬的,所以,基本上只要自己把文档看仔细了,弄好了,基本就没有问题了. 对于后端接口一类的调试,主要就是通过打印访问日志的方式,进行一步步排查,常见的错误官方文档也有提示,仔细找找就能发现问题. 本文主要讲解js-sdk的调试方式,因此就不说后台接口的问题了. js-sdk的调试难点在于,在手机上的调试,无法监控各种传输状态,由于是js类的操作,也不方便打印日志什么的. 不过幸好,微信官方提供了一个pc版本的调试工

系统自动安装及基本故障排除、sudo详解

系统安装过程 anaconda:stage2.img,主要提供安装的界面,包含txt.GUI界面 kickstart:三部分组成 1.命令段:定义的配置选项 必须指定的命令 keyboard us:键盘 lang en_US:语言 timezone Asia/Shanghai:时区 authconfig --useshadow:认证 bootloader --location:默认安装到mbr clearpart --initlabe1(初始化一个分区表) --linux(清除所有Linux分区