第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 、who、w、last、lastb
例如:
成功登陆信息
last
错误登陆信息
lastb
程序日志分析
由相应的应用程序独立进行管理
⚫ Web服务:/var/log/httpd/
◆ access_log、error_log
⚫ 代理服务:/var/log/squid/
◆ access.log、cache.log、squid.out、store.log
⚫ FTP服务:/var/log/xferlog
分析工具
⚫ 文本查看、grep过滤检索、Webmin管理套件中查看
⚫ awk、sed等文本过滤、格式化编辑工具
⚫ Webalizer、Awstats等专用日志分析工具
拓展:
程序日志分析
可定制化程度高,位置由程序自己定义,分析除了普通的文本分析外,还有自己的分析系统
日志管理策略
及时作好备份和归档
延长日志保存期限
控制日志访问权限
⚫ 日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
⚫ 将服务器的日志文件发到统一的日志文件服务器
⚫ 便于日志信息的统一收集、整理和分析
⚫ 杜绝日志信息的意外丢失、恶意篡改或删除
修复 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
正在检查从0到20971520的块
Checking for bad blocks (read-only test): 完成
Pass completed, 0 bad blocks found.