linux常见故障及解决方案

分析和排查系统故障

要求:

  • 日志文件分析
  • 将/etc/Bluetooth文件夹改名;然后启动Bluetooth服务,观察故障现象;通过分析/var/log/messages文件中的相关记录,判断故障原因,并修复该故障。

步骤:

  1. 1.     将/etc/bluetooth目录改名为/etc/bluetooth.bak,执行“service Bluetooth start”命令尝试启动服务,将出现错误提示信息“Can’t open RFCOMM config file:No such file or directory”。如图所示:
  2. 2.     查看/var/log/messages文件,分析末尾关于Bluetooth服务的日志记录,会发现类似于“Can’t open config file  /etc/Bluetooth/hcid.conf”的记录条目。将/etc/bluetooth.bak目录改名为/etc/bluetooth。重新启动bluetooth服务,将可恢复正常,观察/var/log/messages文件中相关日志记录的变化。如图所示:

  • 在终端tty3中尝试以不存在的用户账号Administrator进行登录;新建用户账号kitty并以此账号在终端tty4种进行登录,第一次输入错误的密码,第二次再输入正确的密码;查看前述用户的登录情况记录。

步骤:

  1. 1.     切换到tty3,使用账号Administrator登录,密码任意。

  1. 2.     重建用户Kitty,设置密码为123456;切换到tty4,首先尝试以账号Kitty、密码为Kitty进行登录,然后以账号Kitty、密码为123456登录。如图所示:

  1. 3.     使用last命令查看成功的登录记录。如图所示:

  1. 4.     使用lastb命令查看失败的登录记录。如图所示:

  1. 5.     查看/var/log/secure文件中新增的安全信息,观察Administrator、Kitty用户登录及验证失败的事件记录。如图所示:

  • 故障模拟及修复
  • 备份磁盘sda的MBR扇区到其他硬盘,并联系MBR的回复操作。

步骤:

  1. 1.     将第1块硬盘(sda)的MBR扇区备份到第2块硬盘的sdb1分区中(挂载到/backup目录下)。

  1. 2.     模拟MBR扇区故障。从设备文件zero中读取512字节的数据,将其覆盖到第1块硬盘(sda),从而破坏MBR扇区中的数据。如图所示:

  1. 3.     重启系统后,将会出现“Operating system not found”的提示信息,表示无法找到可用的操作系统,因此无法启动主机。如图所示:

  1. 4.     以使用RHEL 5 安装光盘为例。当出现安装向导的“boot:”提示符时,在后边输入“linux  rescue”并回车,将以“急救模式”引导光盘中的Linux系统。如图所示:

  1. 5.     在接受的默认语言界面,选择“English”,然后点击“OK”。如图所示:

  1. 6.     在键盘格式界面,选择“us”,然后点击“OK”。如图所示:

  1. 7.     在提示是否配置网卡时一般选择“NO”。如图所示:

  1. 8.     在如图所示界面中,点击“Continue”。如图所示:

  1. 9.     在是否初始化磁盘的警告窗口,建议选择“NO”,避免对硬盘数据造成不必要的损坏。如图所示:

  1. 10.  最后选择“OK”确认后将进入到带“sh-3.2#”提示符的Bash Shell环境。如图所示:

  1. 11.  执行相应的命令挂载保存有备份文件的硬盘分区(sdb1),并将数据恢复到硬盘“/dev/sda”中即可。需要注意的是:当前使用的系统环境是光盘中的Linux目录结构。如图所示:

  1. 12.  完成恢复操作以后,执行“exit”命令退出临时Shell环境,系统将会自动重启。
  2. u  通过单用户模式进入Linux系统,重设root账号的密码。

步骤:

  1. 1.     重启主机,在出现GRUB菜单时按上下方向键取消倒计时,并定位到要进入的操作系统选择项(如“Red Hat Enterprise Linux Server”),按e键进入编辑模式。如图所示:

  1. 2.     定位到以kernel开头的一行并按e键。如图所示:

  1. 3.     在行尾添加“1”的启动参数,其中数字“1”也可以换成字母“s”或“single”,也可以表示进入到单用户模式。如图所示:

  1. 6.     在单用户模式的Shell环境中,可以执行“passwd root”命令重新设置root用户的密码。如图所示:

若使用RHEL5的安装光盘进入急救模式的shell环境,则只需切换到待修复Linux系统的根目录环境,直接执行“passwd root”命令重设root用户的密码即可;或者修改/etc/shadow文件,将root用户的密码字段清空,重启后以空密码可登录系统。如图所示:

sh-3.2# chroot /mnt/sysimage

sh-3.2# passwd  root

  • 将/etc/inittab、/boot/grub/grub.conf文件移动至/opt目录下,重启系统。

步骤:

  • GRUB引导故障
  • 模拟GRUB引导故障。将grub.conf文件移动至/opt目录下。如图所示:

  1. 2.     重启系统,Linux主机启动后可能只出现“grub>”的提示符,无法完成进一步的系统启动过程。如图所示:

  1. 3.     在该提示符后进行编辑,通过输入对应的引导命令,然后再执行“boot”命令即可正常引导Linux系统。如图所示:

或:kernel       /vmlinuz-2.6.18-194.e15  ro   root=/dev/VolGroup00/LogVol00      rhgb      quiet

  1. 4.     进入系统后,将之前移动到/opt目录里的grub.conf文件重新复执一份到原目录/boot/grub/里。如图所示:

由于在“grub>”环境中使用的命令较为复杂,而且一般难以也难以记住相关的命令选项、内核加载参数等,因此用户可以采用另一种修复办法,同样使用RHEL5的安装光盘引导进入急救模式,如果分区表并未被破坏,则急救模式将会找到硬盘中的Linux根分区,并将其挂载到光盘目录结构中的/mnt/sysimage/文件夹中。

进入“sh-3.2#”的shell环境以后,执行“chroot /mnt/sysimage”命令可以将目录结构切换到待修复的Linux系统中,然后重写(或通过之前备份的文件恢复)grub.conf(/boot/grub/目录下)配置文件即可。如图所示:

sh-3.2# chroot /mnt/sysimage

       sh-3.2#  vim/boot/grub/grub.conf

       sh-3.2#  exit

       sh-3.2#  exit

在上例中,若未执行“  chroot/mnt/sysimage”命令,则重新建立的grub.conf配置文件应该位于/mnt/sysimage/boot/grub/grub.conf。

如果是MBR扇区中的引导程序出现损坏,可能在重建grub.conf配置文件后仍然无法成功启动系统,这时候可以通过RHEL5救援模式的shell环境重新安装gurb引导程序。切换到待修复的Linux系统根环境,执行“grub-install /dev/sda”命令可以重新将grub引导程序安装到第1块硬盘sda的MBR扇区。如图所示:

sh-3.2# chroot /mnt/sysimage

       sh-3.2#  grub-install  /dev/sda

       sh-3.2#  exit

       sh-3.2#  exit

上述方法同样适用于在Linux主机中重装Windows系统(不覆盖Linux系统)后导致Linux系统无法启动的情况。因为对于使用双操作系统的主机,后安装的Windows系统将使用自己的引导数据覆盖MBR扇区中的记录,导致开机后不再出现GRUB菜单从而无法进入Linux系统。如果是后安装Linux系统,GRUB程序将会自动识别硬盘中的Windows系统并将其加载到GRUB菜单配置中。

经验总结:

       执行“dd if=/dev/zero of=/dev/sda bs=446 count=1”命令可以模拟出对MBR扇区中GRUB引导程序的破坏(注意先做好备份),但并不会破坏分区表(实际上分区表保存在MBR扇区中的第447~第510字节中)。

  • 模拟/etc/inittab文件丢失

步骤:

  1. 1.     将inittab文件移动至/opt目录下,模拟/etc/inittab文件丢失。如图所示:

  1. 2.     重启系统后,将会出现“INIT:No inittab file found”的错误提示信息。如图所示:

  1. 3.     这类故障同样可以在RHEL 5 安装光盘的急救模式下进行修复。如何编辑如图所示:

日志文件分析

  1. 1.      内核及系统日志

内核及系统日志功能主要由默认安装的sysklogd-1.4.1-39.2软件包提供,该软件包安装了klog、syslogd两个程序,并通过syslog服务进行控制,分别用于记录系统内核的消息和各种应用程序的消息。Syslog服务所使用的配置文件为/etc/syslog.conf。通过查看/etc/syslog.conf文件中的内容,可以了解到系统默认的日志设置。

在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要):

  • 0  EMERG(紧急):会导致主机系统不可用的情况
  • 1  ALERT (警告):必须马上采取措施解决的问题
  • 2  CRIT (严重):比较严重的情况
  • 3  ERR (错误):运行出现错误
  • 4WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件
  • 5  NOTICE (注意):不会影响正常功能,但是需要注意的事件
  • 6  INFO (信息):一般信息
  • 7  DEBUG (调试):程序或系统调试信息等
  • 用户日志

在wtmp、btmp、lastlog等日志文件中,保存了系统用户登录、退出等相关的事件消息。

  • 查询当前登录的用户情况——userswhow命令

user命令只是简单的输出当前登录的用户名称,每个显示的用户名对应一个登录会话。

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who的默认输出包括用户名、终端类型、登录日期及远程主机。

w命令用于显示当前系统中的每个用户及其所运行的进程信息,比users、who命令的输出内容要更加丰富一些。

  • 查询用户登录的历史记录——lastlastb命令

last命令用于查询成功登录到系统的用户系统,最近的登录情况将显示在最前面。通过last命令可以及时掌握Linux主机的登录情况,若发现未经授权的用户登录过,表示当前主机可能已被入侵。

lastb命令用于查询登录失败的用户记录,比如登录的用户名错误、密码不正确等情况都将记录在案。用于登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用lastb命令查看以外,也可以直接从安全日志文件/var/log/secure中获得相关信息。

  • 程序日志

在Linux系统中,还有相当一部分应用程序并没有使用syslog服务来管理日志,而是由程序自己维护日志记录。

总的来说,作为一名合格的系统管理人员,应该提高警惕,随时注意各种可疑状况,定期并随机的检查各种系统日志文件,包括一般信息日志、网络连接日志、文件传输日志以及用户登录日志记录等。在检查这些日志时,要注意是否有不合常理的时间或操作记录,例如出现以下一些现象就应多加注意:

  • 用户在非常规的时间登录,或者用户登录系统的IP地址和以往的不一样
  • 用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录
  • 非法使用或不正当使用超级用户权限
  • 无故或者非法重新启动各项网络服务的记录
  • 不正常的日志记录,比如日志的残缺不全,或者是诸如wtmp这样的日志文件无故缺少了中间的记录文件。

另外,尤其提醒管理人员需要注意的是:日志并不是完全可靠的,高明的黑客在入侵系统后,经常会打扫现场。所以需要综合运用以上的系统命令,全面、综合的进行审查和检测,切忌断章取义,否则将可能做出错误的判断。

  • 修复文件系统

在Linux主机中,可能会因为非正常关机、突然断电、设备数据读写异常等原因导致文件系统的破坏。比较常见的是超级块(super-block)损坏。超级块是文件系统的核心“档案”,他记录了该文件系统的类型、大小、空闲磁盘块等信息。

当文件系统的超级块数据损坏时,Linux将无法识别该文件系统,挂载时会出现“you must specify the filesystem type”的提示而不能正常使用。例如,模拟/dev/sdb1文件系统的超级块数据库损坏,尝试挂载时将不能成功。如图所示:

对于通过/etc/fstab文件自动挂载且设置了fsck参数(第6列的值非0)的文件系统,若超级块出现错误则Linux系统在启动时会报错,并提示用户需要进行修复操作。例如:当/dev/sdb1分区的超级块出现错误时,启动后系统将提示“Give root password for maintenance”,如图所示:

出现这种情况时,只需根据提示输入root用户的密码,即可进入到一个临时的shell环境,在这里用户可以对出现错误的文件系统进行修复。修复完毕后执行exit命令即可退出并重启系统。

修复一般的文件系统错误可以使用fsck命令进行,结合“-t”选项指定文件系统类型,结合“-y”选项对发现的问题自动回答“yes”。需要注意的是:如果该文件系统遭受破坏的情况很严重,则修复完毕后可能仍然会丢失一些数据,因此请慎重决定是否进行恢复(必要时也可以先用dd命令将损坏的分区进行备份)。

  • 磁盘资源耗尽故障

显而易见,当一个文件系统的磁盘空间耗尽以后,将无法继续在该分区中创建新的文件数据,从而导致故障的出现。例如,当根分区“/”中德磁盘空间耗尽以后,将可能导致部分程序乃至整个系统无法正常启动或运行,因为一些临时性的运行文件将无法建立。

当根分区磁盘空间不足而无法启动进入Linux系统时,可以通过RHEL5的安装光盘进入急救模式,转移或清理根分区中占用大量空间的文件,具体过程不再赘述。使用dd命令可以模拟出根分区耗尽的故障,例如:执行“dd if=/dec/zero  of=/somefile bs=1M  count=999999”命令。

除此以外,在每一个ext3文件系统中,能够使用的文件数量(对应i节点数量)也是有限的。当一个文件系统被格式化以后,其i节点数也即文件数量就已经固定下来了。如果用户在该分区中创建了巨量的细小文件(耗尽i节点),将可能出现这种情况:虽然该分区中仍然有大量的剩余磁盘空间,但是用户却无法再建立新的文件。

模拟i节点耗尽故障

具体步骤:

  1. 1.     新建一个约32MB大小(磁盘容量越小,修复时间越短)的ext3文件系统,将其挂载到/data目录下。并使用带“-i”选项的df命令确认该文件系统中i节点的使用情况。

  1. 2.     编写一个测试程序,运行该程序后可以耗尽/dev/sdb2分区中所有可用的i节点。

  1. 3.     当i节点耗尽以后,在该文件系统中再创建新的文件时,将会出现“设备上没有空间”的错误现象。通过df命令可以查看到该分区中实际上还有可用的剩余空间,但是因为i节点数已经用完,所以无法创建新的文件。

修复i节点耗尽故障

              具体步骤:

理解i节点耗尽故障的根结以后,问题就比较好解决了。只需要找出该分区中占用大量i节点的细小文件,并进行转移或者删除即可。对于许多用户公用的文件系统,建议为相关用户设置磁盘限额(包括文件数量、磁盘空间两方面)。

  • 检测硬盘坏道

磁盘坏道分为逻辑坏道和物理坏道两种,前者主要由于软件操作不当造成,可以使用软件修复;而后者是物理性损坏,只能通过更改磁盘分区或扇区的占用位置来进行改善,排除掉包含有坏道的磁盘空间。当磁盘出现以下现象时,有可能是磁盘出现坏道,需要进行检测和修复:

  • 读取磁盘中的数据时,磁盘设备发出异常声响
  • 访问磁盘中的某个文件时,反复读取且出错,提示文件损坏
  • 对于新建立的分区无法完成格式化
  • 系统使用该磁盘时频繁死机

在Linux系统中,检测磁盘的坏道情况可以使用badblocks命令进行,结合“-s”选项用于显示进度信息,“-v”选项用于显示详情。如图所示:

时间: 2024-08-03 16:22:24

linux常见故障及解决方案的相关文章

Linux常见故障-------MBR引导扇区恢复

本次给大家介绍的是Linux常见故障其中的MBR引导扇区. ----------------故障概述-------------- 基本概述在Linux系统的启动过程中,涉及MBR主引导记录.GRUB启动菜单.系统初始化配置文件等各方面,其中任何一个环节出现故障都可能会导致系统启动的失常,因此一定要注意做好相关文件的备份工作. 完整的开机引导流程 开机自检:也称加电自检(POST,Power On Self Test). 指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU.系统主板.基本

Linux -- 常见故障排除

目前Linux的擅长应用领域是:单一应用的基础服务器应用,譬如DNS.Web服务器.NFS服务器.防火墙.文件服务器.代理服务器.中小型数据库.Linux网络故障大多与服务器配置有关.下面我们介绍一下故障排除步骤. 一. Linux网络故障之网卡故障 Linux的网络实现是模仿FreeBSD的,它支持FreeBSD的带有扩展的Sockets(套接字)和TCP/IP协议.它支持两个主机间的网络连接和Sockets通讯模型,实现了两种类型的Sockets:BSD Sockets和INET Socke

Linux常见故障及修复方法

一:MBR扇区故障修复 [[email protected]~]#mkdir  /backup [[email protected]~]#mount  /dev/sdb1  /backup /    ##新建个硬盘分区,并挂载到新建文件夹内 [[email protected]~]#dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1  ##备份MBR扇区512字节 [[email protected]~]#dd if=/dev/zero of

模拟Linux开机故障与解决方案

Linux启动流程图 (一)模拟第一个阶段失效与修复我们利用一条命令来把MBR的前446字节覆盖的方法来模拟第一阶段dd if=/dev/zero of=/dev/sda bs=446 count=1然后我们重启linux系统,此时只会这个界面,而进不去系统了 接下来我们就要想办法来使系统恢复正常了,首先我们要把光盘加入光驱,然后重新启动,以光盘进行引导.此时会出现这样的界面: 然后,我们要进入救援模式进行修复系统.在boot:后面输入一条命令就进入了救援模式:Linux rescue 此时会进

Linux常见故障-------grub菜单故障

其实除了mbr引导扇区的故障出现会引起无法进入操作系统之外,gurb菜单故障也会无法进入操作系统. 出现GRUB故障的原因(1)MBR扇区中的GRUB引导程序遭到意外损坏(2)grub.conf文件丢失或是引导配置有误出现该种故障的表现系统引导停滞不前,一直卡在"grub>"符号处修复思路(1)使用引导光盘,进入急救模式,重写(一般人没那技术)或从备份恢复grub.conf(2)向MBR扇区中重建grub程序具体修复步骤(1)引导急救模式,加载系统镜像(chroot /mnt/s

Linux 常见的trouble shooting故障排错

Linux 常见的trouble shooting故障排错 备份开机所必须运行的程序对一个运维人员来说是非常有必要的.在实际生产环境中,系统和数据基本都是安装在不同的硬盘上面,因为企业最关心的还是数据,系统崩溃了,最坏的方法就是重新安装系统,但是数据丢失了,那会直接给企业带来损失,如果系统和数据都放在同一个硬盘上面,那系统都进不去了,何谈数据.解决常见的trouble shooting,不要在系统出现故障的时候,想到的第一个就是重装系统.为解决常见的trouble shooting,首先必须先了

在Azure上实现Linux Server故障转移

要充分利用公有云的弹性扩展和高可用, 首先要在应用系统层面支持横向扩展(scale out),这个说起来很容易,或者说对新开发的应用系统而言已经成为标配.但是对已有的.老旧的应用系统来说,这就比较困难了,不是每个应用系统都能实现/支持横向扩展的.从客户的角度来说,基本上很难接受为了把应用系统迁移到公有云上而去额外投入修改应用系统代码.虽然我们都心知肚明,本质上这是在“偿还技术债”,修改应用系统代码也是为了更好地利用公有云的优势... 对于应用系统的横向扩展而言,“状态”是最大的拦路虎,要支持横向

windows蓝屏代码大全及常见蓝屏解决方案

对于以下的代码查询建议使用ctrl+F查询,而且很多蓝屏与黑屏的问题多是最近操作引起的,例如更新驱动,安装新的硬件.软件--把相关的配置调到最近的正常状况大多可以解决,确实不行时方可考虑重装系统,解决问题的大法,不过重装系统前请注意做好备份工作! 蓝屏代码含义 (代码已经做了省略,每个的x后面都少了4个0) 0 0x0000 作业完成.1 0x0001 不正确的函数.2 0x0002 系统找不到指定的档案.3 0x0003 系统找不到指定的路径.4 0x0004 系统无法开启档案.5 0x000

老男孩教育每日一题-2017年4月28日- MySQL主从复制常见故障及解决方法?

MySQL主从复制常见故障及解决方法? 1.1.1故障1:从库数据与主库冲突 show slave status; 报错:且show slave status\G Slave_I/O_Running:Yes Slave_SQL_Running:No Seconds_Behind_Master:NULL Last_error:Error 'Can't create database 'xiaoliu'; database exists' on query. Default   database:'