分析和排查系统故障

一,分析日志文件

日志文件是用于记录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这样的日志文件无故缺少中间的记录文件


【案例:搭建日志服务器】













服务器

(server)

A










客户机

(client)

B





































第一步:在“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/sysp_w_picpath     /切换到待修复的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/sysp_w_picpath         /切换到待修复的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/sysp_w_picpath

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:显示详情