分析和排查系统故障
一,分析日志文件
日志文件是用于记录Linux系统中各种运行消息的文件,相当于Linux主机的“日记”
(1),主要日志文件
【内核及系统日志】:
这种日志数据由系统服务syslog统一管理,根据其主配置文件“/etc/syslog.conf”中的设置决定将内核消息及各种系统程序消息记录到什么位置。
【用户日志】:
这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登录的终端、时间、来源主机,正在使用的进程操作等。
【程序日志】:
有些应用程序会选择由自己独立管理一份日志文件(而不是给syslog服务管理),它用于记录本程序运行过程中的各种事件信息。
《注意》:Linux系统本身和大部分服务器程序的日志文件默认都放在目录/var/log下
#/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、lo错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获取相关的事件记录信息。
#/var/log/cron:记录crond计划任务产生的事件信息。
#/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
#/var/log/maillog:记录进入或发出系统的电子邮件活动。
#/var/log/rpmpkgs:记录系统中安装的各rpm包列表信息。
#/var/log/secure:记录用户认证相关的安全事件信息。
#/var/log/wtmp:记录每个用户登录、注销及系统启动和停机中件。
#/var/run/btmp:记录失败的,错误的登录尝试及验证事件。
(2),日志文件分析
分析日志文件的目的在于通过游览日志查找关键信息,对系统服务进行调试,以及判断发生故障的原因等。
1,内核及系统日志
#内核及系统日志功能主要由默认安装的“sysklogd-1.4.1-39.2”软件包提供
#syslog服务所使用的配置文件为/etc/syslog.conf
【日志消息的重要程序、优先级别】:
0 EMERG(紧急):会导致主机系统不可用的情况。
1 ALERT(警告):必须马上采取措施解决的问题。
2 CRIT(严重):比较严重的情况。
3 ERR(错误):运行出现错误。
4 WARNING(提醒):可能会影响正常功能,但是需要注意的事件。
5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。
6 INFO(信息):一般信息。
7 DEBUG(调试):程序或系统调试信息等。
【公共日志“/var/log/messages”文件记录的格式】:
时间标签:消息发出的日期和时间
主机名:生成消息的计算机名称
子系统名称:发出消息的应用程序的名称
消息:消息的具体内容
2,用户日志“/var/log/secure”
users:简单地输出当前登录的用户名称
who:显示“用户名”、“终端类型”、“登录日期”及远程主机
w:显示当前系统中的每个用户及其所运行的进程信息
last:查询成功登录到系统的用户记录
lastb:查询登录失败的用户记录
3,程序日志
【注意一些日志现象】:
#用户在非常规的时间登录,或者才户登录系统的IP地址和以往的不一样
#用户登录失败的日志记录,尤其是那一再连续尝试进入失败的日志记录
#非法使用或不正当使用超级用户权限
#无故或者非法重新启动各项网络服务的记录
#不正常的日志记录,比如日志的残缺不全,或者是诸如wtmp这样的日志文件无故缺少中间的记录文件
【案例:搭建日志服务器】
|
||||||||
|
||||||||
第一步:在“B”中编辑配置文件:/etc/syslong.conf
cron . * @ 服务器A的IP
第二步:在“A”中编辑配置文件:/etc/sysconfig/syslog
SYSLOGD_OPTION=“-r -x -mo”
第三步:重启syslog服务
service syslog restart
二,排除系统启动类故障
(1),MBR扇区故障
#MBR引导记录位于物理硬盘的第1个扇区(512B),又称主引导扇区
#MBR中包含了系统引导程序,硬盘的分区表记录
#故障现象:可能进入黑屏状态
第一步:备份MBR扇区数据
建目录:mkdir /backup
挂载:mount /dev/sdb1 /backup
备份:dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
第二步:摸拟MBR扇区故障
模拟:dd if=/dev/zero of=/dev/sda bs=512 count=1
重启:init 6 或 reboot
第三步:从备份文件中恢复MBR扇区数据
插入光盘,进入救援模式:linux rescue
Sh-3.2#:mkdir /back
Sh-3.2#:mount /dev/sdb1 /back
Sh-3.2#:dd if=/back/mbr.bak of=/dev/sda
Sh-3.2#:exit
(2),GRUB引导故障
#GRUB是大多数Linux系统默认使用的引导程序
#当配置文件“/boot/grub/grub.conf”丢失、或者关键配置出现错误,或者MBR记录中的引导程序遭到破坏时,Linux启动后可能就只出现“grub>”提示符了。
第一步:插入RHE 5安装光盘,进入救援模式
Sh-3.2#:chroot /mnt/sysimage /切换到待修复的Linux系统根环境
Sh-3.2#:grub-install /dev/sda /重新安装grub
Sh-3.2#:exit /退出chroot环境
Sh-3.2#:exit /退出Sh-3.2环境,系统会自动重启
第二步:在“grub >”里进行编辑
grub >:root (hd0,0)
grub >:kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/volgroup/logvoloo rhgb quiet
grub >:initrd /initrd-2.6.18-194.el5.img
grub >:boot
第三步:正常启动后,找到配置文件/boot/grub/grub.conf,进行得新修复
Vim /boot/grub/grum.conf
……
……
title red hat enterprise linux (此标题可自定义)
root (hd0,0)
kernel /Vmlinuz-2.6.18.194.el5 ro root=/dev/volgroup/logvoloo rhgb quiet
initrd /initrd-2.6.18-194.el5.img
【各主要配置文件的含义说明】:
Titel:指定在启动菜单中显示的操作系统名称
Root:指定包含内核等引导文件的/boot分区所在的位置
Kernel:指定内核文件的所在位置,内核加载时权限为只读“ro”,并通过“root=”指定根分区的设备文件位置
Initrd:指定启动内核所使用的临时系统镜像文件所在的位置
《经验总结》
dd if=/dev/zero of=/dev/sda bs=446 conut=1此命令可以模拟对MBR扇区中的GRUB引导程序破坏,但不会破坏分区表,分区表保存在MBR扇区中的第447~510字节中
(3),/etc/inittab文件丢失
#/etc/inittab文件是系统初始化进程init的配置文件
#当该文件被误删除或者存在错误配置时,可能导致无法启动系统
#故障:INIT:No inittab file found
第一步:插入RHE5安装光盘,进入救援模式
第二步:重新安装initscripts软件包
Sh-3.2#:chroot /mnt/sysimage /切换到待修复的Linux系统要环境
Sh-3.2#:rpm -qf /etc/inittab /查询inittab文件对应的软件包名
Initscripts-8.45.30-2el5
Sh-3.2#:mount /dev/hdc /media /挂载光盘到/media目录下
Sh-3.2#:rpm -ivh --replacepkgs /media/Server/initscripts-8….rpm
Sh-3.2#:exit /退出chroot环境
Sh-3.2#:exit /退出Sh-3.2环境,系统会自动重启
(4),遗忘root用户的密码
【方法一】:通过单用户模式重设root账号的密码
a)重启主机,在出现GRUB菜单时按↑、↓键头来取消倒计时,并定位到要进入操作系统选择项(如“Red Hat Enterprise Linux”);按“e”键编辑。
b)定位到以“kernel”开头的一行并按“e”键,在行尾添加“single”的启动参数,其中“single”也可以换成字母“s”或数字“1”,表示进入到单用户模式。
c)回车确认后,按“b”键将系统引导进入单用户模式,直接进入shell环境。
d)在单用户模式的shell模式中,可以执行“passwd root”来重设root用户密码。
【方法二】:通过急救模式重设root账号的密码
a)插入RHEL 5安装光盘,进入急救模式的shell环境
b)Sh-3.2# chroot /mnt/sysimage
c)Sh-3.2# passwd root
三,排除文件系统故障
(1),修复文件系统
#在Linux中,可能会因为非正常关机,突然断电,设备数据读写异常等原因,导致文件系统的破坏;比较常见的是超级块(super-block)损坏。
#超级块是文件系统的核心“档案”,它记录了该文件系统的类型、大小、空间磁盘块等信息。
#故障现象:you mast specify the filesystem type
第一步:模拟故障
dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
mount /dev/sdb1 /media
第二步:用fsck命令修复文件系统
fsck -y -t ext3 /dev/sdb1
-t:指定文件系统类型
-y:对发现的问题自动回答“yes”
(2),磁盘资源耗尽故障
#每一个ext3文件系统能够用文件数量(i节点数量)是有限的
#当一个文件系统被格式化以后,其i节点数也即文件数量就已经固定下来了
#故障现象:如果用户在该分区中创建了巨量的细小文件(耗尽i节点),将可能出现这种情况;虽然该分区中仍然有大量的剩余磁盘空间,但是用户却无法再建立新的文件
第一步:模拟i节点耗尽故障
mkdir /date /先创建个目录做为测试用
mount /dev/sdb1 /date /把sdb1分区挂载到/date下
df -I /date /查看剩余的i节点(假如有8021可用)
第二步:编辑一个测试脚本,进行试验
vim test1 /新建测试程序,取名为test1
#! /bin/bash
i=1
while [ $i -le 8021 ]
do
touch /date/file$i
let i++
done
sh test1 /运行该测试程序,可以加上“&”放入后台运行
df -I /date /确认一下
i节点占用情况
第三步:修复i节点耗尽故障
vim test2 /新建测试程序,取名为test2
#! /bin/bash
m=’find /date -type f -a -empty’
for z in $m //z可以是任意字符
do
rm -rf #z
done
(3),检测硬盘坏道
badblocks -sv /dev/sdb
-s:显示进度
-v:显示详情