系统故障排查
一系统启动类故障
常见系统启动类故障包括:MBR扇区故障、GRUB引导故障、丢失系统文件、遗忘root密码
・MBR扇区故障
MBR即Master Boot Record,主引导记录,位于硬盘的第一个扇区(512字节),其中包含了系统引导程序、硬盘分区表信息
1故障原因
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作
2故障现象
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏
3解决思路
应提前作好备份文件(如果没有MBR的备份文件,恢复难度会比较大,可能需要使用"诺顿磁盘医生(Norton Disk Doctor)"之类能够按分区位置查找修复的磁盘工具)
以RHEL5安装光盘引导进入急救模式,从备份文件中恢复
应用示例:模拟MBR损坏
1备份MBR扇区数据
MBR扇区的备份文件应保存在不同的磁盘中,否则在恢复时将无法读取备份文件
把第一块硬盘sda的MBR扇区备份到第二块硬盘的sdb1分区中
2模拟MBR被破坏的故障
人为的将MBR扇区的记录覆盖,从而达到破坏的目的
从设备文件zero中读取512自己的数据进行覆盖
重启系统后无法引导了
3RHEL5光盘引导,进入急救模式
插入光盘,输入linux rescue
选择语言等,跳过网卡检测,跳过初始化磁盘(警告);进入到急救模式
4从备份文件中恢复MBR扇区
含备份文件的分区挂载到一个临时目录,以便能够读取到备份文件
・GRUB引导故障
GRand Unified Bootloader 中文意思为"极好的统一引导器",是大多数Linux系统默认使用的引导程序;即开机时的引导菜单
1故障原因
MBR中的GRUB引导程序遭到破坏
grub.conf文件丢失、引导配置有误
2故障现象
系统引导停滞,显示"grub>"提示符
3解决思路
尝试手动输入引导命令
进入急救模式,从备份中恢复 grub.conf
向MBR扇区中重建grub程序
应用示例:模拟引导文件丢失
1备份并删除grub.conf引导文件
2重启系统验证
3手动输入引导命令引导系统
其中:
root (hd0,0)指定包含内核等引导文件的分区(即/boot分区),(hd0,0) 对应为 /dev/sda1
kernel …… 指定内核文件所在的路径、根分区所在的设备位置
initrd …… 指定引导过程中使用的缓存盘镜像文件位置
boot 用于启动进入系统
进入系统后,要恢复引导文件(否则下次还是不能引导)
4从急救模式恢复引导文件
如果分区表没有别破坏,进入急救模式后,系统会自动挂载根分区到/mnt/sysimage/中
如果MBR扇区中的引导程序损坏(例如重装Windows系统后),则可能即使重建了引导文件,系统也无法启动,因此需要重新安装grub引导程序(还是在急救模式下)
最后exit退出
・/etc/inittab文件丢失
/etc/inittab文件是系统初始化进程init的配置文件
1故障原因
inittab文件被误删除,或者存在配置错误
2故障现象
启动中提示 "... INIT: No inittab file found"
系统停滞,无法完成初始化
3解决思路
进入急救模式,从备份文件中恢复
或者,在急救模式中重新安装 initscripts 软件包
rpm -ivh --replacepkgs initscripts-8.45.14.EL.i386.rpm
应用示例:
1备份并删除inittab文件
2进入急救模式
3从备份文件恢复(略)
4重新安装软件包(急救模式下)
rpm -ivh --replacepkgs initscripts-8.45.14.EL.i386.rpm
--replacepkgs 选项表示进行替换(覆盖)安装,即使系统中已经安装了这个包
・遗忘root用户密码
1故障原因
遗忘root用户的密码
2故障现象
无法进行需要root权限的管理操作
若没有其他可用帐号,将无法登录系统
3解决思路
引导进入单用户模式,然后重设密码:grub > kernel ... single 或 s 或 1
或进入急救模式,然后重设密码
应用示例:
1单用户模式下修改密码
启动计算机时,在出现GRUB菜单时按上下键取消倒计时,按e键进入编辑模式
选择kernel开头的一行,并按e键开始编辑,在行尾添加"s"启动参数;也可以写成"single"或"l"
回车确认后按b键重引导系统到单用户模式,直接进入到了shell环境,不用输入密码
执行passwd root修改密码,如果不能修改,直接修改/eyc/shadow文件,将密码字串删除,然后添加两个感叹号
删除前
删除后
wq!强制保存退出后,reboot重启验证
2通过急救模式重设root账号密码
进入急救模式后
或者修改shadow文件
二文件系统类故障
・文件系统故障
1故障原因
非正常关机、突然断电、设备读写失误等
文件系统的超级块(super-block)信息被破坏
2故障现象
无法向分区中读取或写入数据
启动后提示"Give root password for maintenance"
3解决思路
根据提示输入root口令,进入修复状态
使用fsck命令进行修复
应用示例:
1模拟对/dev/sda2分区的破坏操作
2检查是否能挂载该分区
3 Linux系统开机后,当提示"Give root password for maintenance"时,只需输入root用户的密码,即可进入到一个临时的Shell环境,用户可以对出现错误的文件系统进行修复
fsck –y -t ext3 /dev/sda2
-y选项可以在出现交互提问时,自动按"yes"处理
・磁盘资源耗尽故障
1故障原因
磁盘空间已被大量的数据占满,空间耗尽
虽然还有可用空间,但文件数i节点耗尽
2故障现象
无法写入新的文件,提示"… : 设备上没有空间"
部分程序无法运行,甚至系统无法启动
3解决思路
清理磁盘空间,删除无用、冗余的文件
转移或删除占用大量i节点的琐碎文件(文件个数)
进入单用户模式、急救模式进行修复
为用户设置磁盘配额
・检测磁盘坏道
1故障原因
磁盘设备中存在坏道(逻辑的或物理的)
逻辑坏道主要由于软件操作不当造成,可以使用软件修复
物理坏道是物理性损坏,只能通过更改磁盘分区或扇区的占用位置来进行改善,排除掉包含有坏块的磁盘空间
注意是mkfs命令而不是fsck命令,检查坏道之前,应尽量先卸载该分区,退出正在访问设备的其他程序
2故障现象
读取磁盘中的数据时,磁盘设备发出异常声响。
访问磁盘中的某个文件时,反复读取且出错,提示文件损坏。
对于新建立的分区无法完成格式化。
系统使用该磁盘时频繁死机
3解决思路
检测硬盘中是否存在坏道
badblocks -sv /dev/sdb
耗时时间比较长
修复硬盘,或更换新的硬盘