12章Linux下的系统故障排查和分析

Linux下的系统故障分析和排查 

日志文件分析 

系统启动类故障排除 

文件系统类故障排除

日志文件分析 

日志的功能

⚫ 用于记录系统、程序运行中发生的各种事件

⚫ 通过阅读日志,有助于诊断和解决系统故障 

日志文件的分类

⚫ 内核及系统日志

◆ 由系统服务syslog统一进行管理,日志格式基本相似

⚫ 用户日志

◆ 记录系统用户登录及退出系统的相关信息

⚫ 程序日志

◆ 由各种应用程序独立管理的日志文件,记录格式不统

日志文件分析 

日志保存位置

⚫ 默认位于:/var/log 目录下 

主要日志文件介绍

内核及系统日志 

由系统服务 rsyslogd 统一管理

软件包:rsyslog

主要程序:/usr/sbin/rsyslogd

配置文件:/etc/rsyslog.conf

内核及系统日志 

日志消息的级别

⚫ 0 EMERG(紧急):会导致主机系统不可用的情况

⚫ 1 ALERT(警告):必须马上采取措施解决的问题

⚫ 2 CRIT(严重):比较严重的情况

⚫ 3 ERR(错误):运行出现错误

⚫ 4 WARNING(提醒):可能会影响系统功能的事件

⚫ 5 NOTICE(注意):不会影响系统但值得注意

⚫ 6 INFO(信息):一般信息

⚫ 7 DEBUG(调试):程序或系统调试信息等

内核及系统日志 

日志记录的一般格式

 

文本查看工具查看日志

 

who

 

用户日志分析 

保存了用户登录、退出系统等相关信息

⚫ /var/log/lastlog:最近的用户登录事件

⚫ /var/log/wtmp:用户登录、注销及系统开、关机事件

⚫ /var/run/utmp:当前登录的每个用户的详细信息

⚫ /var/run/btmp:记录失败的错误的登录尝试及验证事件

⚫ /var/log/secure:与用户验证相关的安全性事件 p 分析工具

⚫ users whowlastlastb

例如:

成功登陆信息

last

错误登陆信息

lastb

程序日志分析 

由相应的应用程序独立进行管理

⚫ Web服务:/var/log/httpd/

◆ access_logerror_log

代理服务:/var/log/squid/

◆ access.logcache.logsquid.outstore.log

⚫ FTP服务:/var/log/xferlog 

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看

⚫ awksed等文本过滤、格式化编辑工具

⚫ WebalizerAwstats等专用日志分析工具

拓展:

程序日志分析

可定制化程度高,位置由程序自己定义,分析除了普通的文本分析外,还有自己的分析系统

日志管理策略 

及时作好备份和归档 

延长日志保存期限 

控制日志访问权限

⚫ 日志中可能会包含各类敏感信息,如账户、口令等 

集中管理日志

⚫ 将服务器的日志文件发到统一的日志文件服务器

⚫ 便于日志信息的统一收集、整理和分析

⚫ 杜绝日志信息的意外丢失、恶意篡改或删除

修复 MBR 扇区故障2-1 

故障原因

⚫ 病毒、木马等造成的破坏

⚫ 不正确的分区操作、磁盘读写误操作 

故障现象

⚫ 找不到引导程序,启动中断

⚫ 无法加载操作系统,开机后黑屏 

解决思路

⚫ 应提前作好备份文件

⚫ 以安装光盘引导进入急救模式

⚫ 从备份文件中恢复

例如:

添加1gy硬盘

进行分区

格式化成ext4文件系统

创建目录

进行mount

查看挂载情况

修复 MBR 扇区故障2-2 

应用示例

备份 MBR 扇区数据,到别的磁盘

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

模拟 MBR 扇区故障

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

光盘引导,进入急救模式,按提示操作

从备份文件中恢复 MBR 扇区

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

创建备份

 

遗忘 root 用户密码 

故障原因

⚫ 遗忘 root 用户的密码 

故障现象

⚫ 无法进行需要 root 权限的管理操作

⚫ 若没有其他可用帐号,将无法登录系统 

解决思路

⚫ 方法一:引导进入单用户模式,重设密码

⚫ 方法二:进入急救模式,重设密码

重设root密码 

引导进入单用户模式

打开centos7,在选择进入系统的界面按“e”进入编辑页面。

然后按向下键,找到以“Linux16”开头的行,在该行的最后面输入“init=/bin/sh”

接下来按“ctrl+X”组合键进入单用户模式

再输入“mount -o remount,rw /” (注意mount与-o之间和rw/之间的有空格)

然后再输入“passwd”回车,重设root密码

接下来再输入touch /.autorelabel,回车

输入exec /sbin/init,回车

回车后出现下面的界面,这里稍微等几分钟,系统会自动重启

接下来就等系统重启然后进入查看是否已经修改成功了

修复文件系统2-1 

故障原因

非正常关机、突然断电、设备读写失误等

文件系统的超级块(super-block)信息被破坏

故障现象

无法向分区中读取或写入数据

启动后提示“Give root password for maintenance” 

解决思路

根据提示输入 root 口令,进入修复状态

使用 fsck 命令进行修复

修复文件系统2-2 

应用示例

模拟对 /dev/sdb1 分区的破坏操作

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

检查是否能挂载该分区

◆ mount /dev/sdb1 /mnt/

◆ mount: you must specify the filesystem type

/dev/sdb1 分区进行修复

◆ fsck -y -t ext4 /dev/sdb1

再次挂载该分区

 例如:

破坏扇区

断开磁盘连接

reboot

选第三个,进入急救模式,恢复备份

 

 

 

 

磁盘资源耗尽故障 

故障原因

⚫ 磁盘空间已被大量的数据占满,空间耗尽

⚫ 虽然还有可用空间,但文件数i节点耗尽 

故障现象

⚫ 无法写入新的文件,提示“… : 设备上没有空间”

⚫ 部分程序无法运行,甚至系统无法启动 

解决思路

⚫ 清理磁盘空间,删除无用、冗余的文件

⚫ 转移或删除占用大量 i 节点的琐碎文件

⚫ 进入单用户模式、急救模式进行修复

⚫ 为用户设置磁盘配额

检测磁盘坏道2-1 

故障原因

⚫ 磁盘设备中存在坏道(逻辑的或物理的) 

故障现象

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

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

⚫ 对于新建立的分区无法完成格式化

⚫ 系统使用该磁盘时频繁死机

检测磁盘坏道2-2 

解决思路

检测硬盘中是否存在坏道

修复硬盘,或更换新的硬盘

[root@centos7 ~]# badblocks -sv /dev/sdb

正在检查从020971520的块

Checking for bad blocks (read-only test): 完成

Pass completed, 0 bad blocks found.