Linux系统故障问题案例收集

2023-10-24 18:10

本文主要是介绍Linux系统故障问题案例收集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

处理Linux系统故障的思路

1)重视报错提示信息。每个错误的出现都是给出错误提示信息,一般情况下这个提示信息基本定位了问题的所在,因此一定要重视这个报错信息,如果对这些错误信息视而不见,问题永远得不到解决。

2)查阅日志文件。有时候报错信息只是给出了问题的表面现象,要想更深入地了解问题,必须查看相应的日志文件。日志文件又分为系统日志文件(/var/log)和应用日志文件,结合这两个日志文件,一般就能定位问题所在。

3)分析、定位问题。这个过程是比较复杂的,根据报错信息,结合日志文件,同时还要考虑其他相关情况,最终找到引起问题的原因。

4)解决问题。找到了问题出现的原因,解决问题就是很简单的事情了。从这个流程可以看出,解决问题的过程就是分析、查找问题的过程,一旦确定问题产生的原因,故障也就随之解决了。看似简单明了的思路,但是真正能重视这个思路的、按照这个思路处理问题的却很少,在处理故障的时候,能静下心来,先整理思路,然后有目的地去处理问题。

## 仅供参考

1、忘记Linux root密码和进入单用户的方法(老生常谈的问题了)

忘记Linux root密码这个问题出现的概率是很高的,也是Linux运维基础的技能。要解决这个问题,在Linux下非常简单,只需重启Linux系统,然后引导进入Linux的单用户模式(init 1)就可以搞定了,由于单用户模式是不需要输入登录密码的,因此,可以直接登录系统,修改root密码即可解决问题。目前企业的线上环境,最常用的Linux是CentOS6.x和CentOS7.x版本,那么这里首先以RHEL/CentOS6.x版本为例,介绍如何进入单用户并重置root密码,操作步骤如下所述。

1)重启系统,待Linux系统启动到GRUB引导菜单时,按〈Esc〉键,找到当前系统引导选项,如图所示,如果有多个可用内核,这里就有多个引导选项。
在这里插入图片描述

2)通过〈↑〉〈↓〉键将光标放到需要使用的系统引导内核选项上,然后按〈E〉键,进入编辑状态,如图所示。
在这里插入图片描述
3)然后通过〈↑〉〈↓〉键,选中带有kernel指令的一行,继续按〈E〉键,编辑该行,在行末尾加个空格,然后添加single,如图所示。
在这里插入图片描述
4)修改完成,按〈Enter〉键,返回到刚才的界面。

5)最后按〈B〉键,系统开始引导。

这样系统就启动到了单用户模式下,这里的单用户与Windows下的安全模式类似,在单用户模式下,只是启动最基本的系统,网络以及应用服务均不启动。单用户模式启动完毕,系统会自动进入到命令行状态下,直接执行命令passwd,按〈Enter〉键,系统会提示输入新的root密码两次,最后会看到修改密码成功的提示,这样就完成了root密码的修改。如果需要正常启动系统,现在只需输入init3,就进入了多用户模式。用root用户重新登录系统,看看设置的新密码是否生效。

在RHEL/CentOS7.x版本之后,Linux的机制发生了较大变化,在系统引导方面,使用了GRUB2代替了之前的GRUB引导,init初始化程序也更换成了systemd初始化,随之带来的root密码重置的方法也有所改变。下面就介绍一下在CentOS7.5版本中,忘记root密码的处理方法,操作步骤如下所述。

1)重启系统,待Linux系统启动到GRUB2引导菜单时,找到当前系统引导选项,如果有多个可用内核,这里就有多个引导选项,按〈E〉键,如图所示。
在这里插入图片描述

2)按〈E〉键后,出现如图所示的界面,通过〈↑〉〈↓〉键将光标放到Linux16引导行所在行尾,然后添加以下内容:init=/bin/sh

在这里插入图片描述
3)添加完成,按〈Ctrl+X〉组合键启动shell引导,最后进入单用户模式。

4)挂载根分区为可读写模式,执行如下命令:

touch    /.autorelabel

5)密码修改完成后,直接执行reboot命令已经无效,此时需要输入全路径命令,操作如下:

exec  /sbin/init

这样就完成了密码重置,正常登录系统,查看密码是否修改成功。

2、Linux系统无法启动的解决办法

导致Linux无法启动的原因有很多,常见的原因有如下几种。
➢ 文件系统配置不当,例如/etc/inittab文件、/etc/fstab文件等配置错误或丢失,导致系统错误,无法启动。
➢ 非法关机,导致root文件系统破坏,也就是Linux根分区破坏,系统无法正常启动。
➢ Linux内核崩溃,从而无法启动。
➢ 系统引导程序出现问题,例如,GRUB丢失或者损坏,导致系统无法引导启动。
➢ 硬件故障,例如,主板、电源和硬盘等出现问题,导致Linux无法启动。

从这些常见的故障可知,导致系统无法启动主要有两个原因,硬件原因和操作系统原因。对于硬件出现的问题,只需通过更换硬件设备,即可解决;而对于操作系统出现的问题,虽然出现的问题可能千差万别,不过多数情况下都可以用相对简单统一的一些方法来恢复系统。下面针对上面提出的几个问题,结合RHEL/CentOSLinux系统环境,给出一些常用的、普遍的解决问题的方法。

(1)/etc/fstab文件丢失导致系统无法启动

/etc/fstab文件存放了系统中文件系统的相关信息,如果正确配置了该文件,那么在Linux启动时,系统会读取此文件,自动挂载Linux的各个分区;如果此文件配置错误或者丢失,就会导致系统无法启动。具体的故障现象在检测mount partition时出现:

starting   system  logger

针对这个问题的思路是想办法恢复/etc/fstab这个文件的信息,只要恢复了此文件,系统就能自动挂载每个分区,正常启动。可能首先想到的是将系统切换到单用户模式下,然后手动挂载分区,最后结合系统信息,重建/etc/fstab文件。但是这种方法是行不通的,因为/etc/fatab文件丢失导致Linux无法挂载任何一个分区,即使Linux还能切换到单用户下。此时的系统也只是一个Read-Only的文件系统,无法向磁盘写入任何信息。

介绍另外一个方法,就是利用Linux Rescue修复模式登录系统,进而获取分区和挂载点信息,重构/etc/fstab文件。

这里以CentOS6.9为例,其他版本方法类似。首先将系统第1张光盘放入光驱,设置BOIS从光驱启动,这样系统就从光驱引导,如图8-6所示,选择“Rescueinstalled system”一项,然后按〈Enter〉键,系统开始引导进入Rescue模式。

在这里插入图片描述
接着系统自动开始引导,进入如下图所示的界面。
在这里插入图片描述
这里是选择模式使用的语言,可以按照自己需要设定,这里选择“English”,然后按〈TAB〉键,选中“OK”,按〈Enter〉键进入下一步。下面出现的是键盘选择对话框,如下图所示,这里选择默认的“us”即可。
在这里插入图片描述
接着出现的是网络配置对话框,如图所示。
在这里插入图片描述
这里是选择是否启用网络,由于系统已经无法启动,现在已经在Linux系统上进行操作了,无所谓是否启用网络。这里选择不启用。

下面到了最关键的步骤了,如下图所示,修复模式会自动将系统的所有分区挂载到/mnt/sysimage目录下,选择“Continue”,则修复环境进入到Read-Write状态下,可以对分区进行读写操作,选择“Read-Only”,修复环境进入到只读模式。由于要重建fstab文件到/etc目录下,因此选择“Continue”进入可读写模式下。

会出现一个友情提示对话框,如下图所示。由于fstab文件丢失,修复模式找不到任何可挂载的分区,从这里可知,修复模式在这里也读取/etc/fstab文件,按〈Enter〉键进入下一步。
在这里插入图片描述
选择下一步要执行的动作,如下图所示,这里选择“shell Start shell”进入修复模式命令行。
在这里插入图片描述
最后,就进入了修复环境下,可以进行操作了。如下图所示。
在这里插入图片描述
上面详细演示了如何进入Linux的修复模式,其实很多情况下,Linux无法启动时,都可以通过这个方式登录系统进行修复和更改操作。

下面是恢复/etc/fstab文件的详细过程,首先查看一下系统分区情况,如下所示:
在这里插入图片描述
因为分区并没有损坏,通过fdisk命令可以查看到系统分区的完整信息,但是每个分区对应的label name信息还不知道,下面通过tune2fs命令查看每个分区对应的label name:
在这里插入图片描述

这样,就得到了所有分区的挂载点信息,接下来就可以构造一个fstab文件了。

小技巧:可以参考其他系统中fstab文件的格式,结合本系统的分区和挂载点信息,构造出自己的fstab文件来。

由于fstab文件是存放在系统根目录下的,因此需要挂载原来系统的根分区,从上面可知根分区对应的设备名为/dev/sda3,接着在修复模式创建的临时根分区下创建一个挂载点,然后挂载原来系统的根分区。操作过程如下所示:
在这里插入图片描述
这样一来,原有根分区的文件全部挂载到了/temp目录下,接着就可以创建需要的fstab文件了。

重构好的fstab文件内容如下:
在这里插入图片描述
配置完毕,保存退出,然后重启系统,看系统是否能正常启动。(这个方法个人认为使用在物理机上的操作系统环境,平时做好备份很重要,如果是虚拟化环境,在每次更改操作前先做一个快照更为方便快捷)

(2)CentOS下误删除/boot目录的修复方法
误删除/boot目录经常发生在新手(新手在此)、研发人员身上。误删除的原因很多,但是并不重要,作为专业运维人员,要了解误删除后怎么恢复,先来看一下这个现象,如下图所示。
在这里插入图片描述
出现这个情况的原因可能有:系统引导出现问题、/boot目录误删除和grub配置错误。

要解决这个问题,还是要用到一个CentOS的U盘镜像或者光盘镜像,通过系统镜像进入Rescue修复模式,然后就可以大展拳脚了。

下面看看如何在CentOS7.x版本下,进入Rescue修复模式,然后修复系统引导。首先通过系统镜像盘进入系统引导模式,如下图所示。
在这里插入图片描述
然后选择“Troubleshooting”,按〈Enter〉键进入如图所示的界面。
在这里插入图片描述
这里选择“Rescue a CentOS system”,按〈Enter〉键进入如图所示的界面。
在这里插入图片描述
这是进入Rescue修复模式的几个选项,跟CentOS6.x版本类似,这里选择数字1,进入可读、写模式。等待片刻,即可进入如图所示的界面。
在这里插入图片描述
按〈Enter〉键进入命令行模式,然后执行chroot命令,如图所示。
在这里插入图片描述

这样,就变更到了root目录下,相当于进入到了真实系统环境下了。接着,将系统镜像挂载到任意一个目录下,这里挂载到/mnt下,挂载系统镜像的目的是将系统镜像作为YUM源,然后安装系统丢失的内核模块,并安装GRUB2引导程序。

bash-4.2#  mount /dev/cdrom  /mnt

下面开始创建一个YUM源仓库,用于从本地系统镜像中读取RPM包,进行内核模块的安装,如图所示。
在这里插入图片描述
重点来了,第1步是重新安装内核,这里使用YUM的reinstall命令,千万别用install来安装,执行如下命令:

bash-4.2#  yum reinstall kernel

这样,内核模块安装完成了,接下来,还需要重新安装GRUB2,并重新生成GRUB2配置文件grub.cfg,执行如图所示的操作。
在这里插入图片描述
执行完成后,两次执行exit命令退出后,系统会自动重启,完成boot引导的修复,不出意外的话,系统已经可以畅通无阻地启动了。

Linux系统无响应(死机)问题分析

Linux服务器在长期运行后,难免出现无响应现象。在系统死机后,屏幕一般会输出故障信息,键盘失去响应,这种情况的常见处理办法就是重启系统,不过在重启前,要重点关注一下屏幕的输出信息,因为其提示的可能是引起死机的主要原因,对解决问题是有很大帮助的。

其实还有另一个方法,就是通过串口直连线连接客户机和服务器,将服务器的出错详细信息发送到客户机上。引起服务器死机的原因有很多,但主要有两个方面:软件问题和硬件问题。下面总结了造成Linux系统死机的常见原因和解决问题的思路。
➢ 系统硬件问题主要是由SCSI卡、主板、RAID卡、HBA卡、网卡、硬盘等硬件设备导致。在这种情况下需要定位硬件故障细节,通过更换硬件来解决问题。
➢ 外围硬件问题主要是网络问题导致的。此时就需要检查网络设备、网络参数等方面查找和解决问题。
➢ 软件问题主要是系统内核bug、应用软件bug、驱动程序bug等。在这种情况下就需要从升级内核、修复程序bug、更新驱动程序等方面来解决问题。
➢ 系统设置问题主要是系统参数设置不当导致,可以通过恢复系统到默认状态,关闭防火墙等方面来解决问题。

这篇关于Linux系统故障问题案例收集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/276887

相关文章

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J