当前位置: 首页 > 科技观察

Linux老手给出的Linux系统故障问题总结,值得收藏

时间:2023-03-12 12:41:25 科技观察

1.处理linux系统故障的思路。只有这样才能快速定位和解决问题。在开始本文的学习之前,我根据多年的工作和处理问题和失败的经验,总结了一套处理问题的总体思路,供大家参考:1.注意报错信息:everyEverytimean发生错误,给出错误信息。一般这个提示就基本定位问题了,所以一定要注意这个报错信息。如果忽略这些错误消息,问题将永远得不到解决。2、查看日志文件:有时报错信息只给出了问题的表面现象。如果想更深入地了解问题,就必须查看相应的日志文件,日志文件分为系统日志文件(/var/log)和应用程序的日志文件,结合这两个日志文件,可以通常定位问题。3、分析定位问题:这个过程比较复杂。根据报错信息,结合日志文件等相关情况,最终找到了问题的原因。4、解决问题:找到问题原因后,解决问题就很简单了。从这个过程可以看出,解决问题的过程就是分析问题、发现问题的过程。一旦确定了问题的原因,就会相应地解决故障。看似简单明了的思路,但真正重视这个思路并按照这个思路处理问题的人却寥寥无几。真心希望大家在处理过失的时候,能够静下心来,先理清思路,然后有目的地去处理。问题。2、忘记linuxroot密码或者进入单用户方式的概率很高,也是linux运维最基本的技能。解决这个问题,在linux下很简单,只要重启linux系统,然后开机进入linux的单用户模式(init1)即可。由于单用户模式不需要输入登录密码,直接登录系统修改root密码即可解决问题。在目前的企业线上环境中,最常用的Linux版本是centos6.x和7.x,所以这里我们先以RHEL/Centos6.x版本为例介绍一下如何进入单用户并重置root密码。操作步骤如下:1、重启系统,当linux系统启动到grub启动菜单时,按esc键找到当前系统启动选项,如图:如果有多个可用内核,则有这里有多个引导选项。2、使用方向键将光标置于需要使用的系统引导内核选项上,然后按键盘字母“e”进入编辑状态,如图:3、然后使用上下键down键选择内核命令的一行,继续按键盘字母“e”编辑该行,在行尾加一个空格,然后加single,如下图:4.后修改完成,按回车键返回上一界面。5.最后,按键盘上的“b”键,系统开始开机。这样系统就以单用户模式启动了。这里的单用户类似于Windows下的安全模式。单用户模式下,只启动最基本的系统,不启动网络和应用服务。单用户模式启动后,系统会自动进入命令行状态,然后直接执行命令“passwd”,然后回车,系统会提示你输入两次新的root密码,最后你会看到密码修改成功的提示。这样就完成了root密码的修改。如果需要正常启动系统,现在只需输入“init3”即可进入多用户模式。以root用户重新登录系统,查看新密码是否生效。在RHEL/Centos7.x版本之后,Linux的机制发生了较大的变化。在系统引导方面,已经使用grub2代替了之前的grub引导。init初始化程序也换成了systemd初始化,自带的root密码重置方法也变了。下面将介绍Centos7.5版本忘记root密码的处理方法。操作步骤如下:1.重启系统,当linux系统启动到grub2启动菜单,找到当前系统启动选项,如果有多个可用内核,这里有多个启动选项,按e键,如下图:2.按下e键后,出现如下图界面,使用方向键将光标置于linux16bootline行尾,添加如下内容:初始化=/bin/sh3。添加完成后按Ctrl+x启动shell引导,最后进入单用户模式。4、以读写方式挂载根分区,执行以下命令:mount-oremount,rw/然后,可以执行“passwd”命令重新设置密码。这里需要注意一件事。如果系统中启用了selinux,还可以在根分区中创建autorelabel文件,否则系统无法正常启动。操作命令如下:touch/.autorelabel5。修改密码后,直接执行重启命令无效。这时需要输入全路径命令,操作如下:exec/sbin/init这样完成密码重置,正常登录系统,查看密码是否修改成功。三、linux系统无法启动的解决办法linux无法启动的原因有很多,导致系统错误,无法启动。2、非法关机,导致根文件系统损坏,即linux根分区损坏,系统无法正常启动。3、Linux内核崩溃,无法启动。4、系统启动程序有问题,如grub丢失或损坏,导致系统无法启动。.5、硬件故障,如主板、电源、硬盘等出现问题,导致Linux无法启动。从这些常见故障我们可以看出,导致系统无法启动的问题主要有两种,硬件原因和操作系统原因。对于硬件问题,只需更换硬件设备即可解决。对于操作系统问题,虽然问题千差万别,但在大多数情况下,您可以使用一些相对简单统一的方法来恢复系统。下面我们针对上述问题,结合RHEL/CentosLinux系统环境,给出一些常用的、通用的问题解决方法。3.1./etc/fstab文件丢失,导致系统无法启动。/etc/fstab文件存放了系统中文件系统的相关信息。如果该文件配置正确,系统会在linux启动时读取这个文件,自动挂载linux的各个分区。如果该文件配置错误或丢失,系统将无法启动。具体故障现象是当检测到挂载分区:startingsystemlogger后,系统会停止启动。为了解决这个问题,我们的第一个想法是想办法恢复/etc/fstab文件的信息。只要恢复这个文件,系统就可以自动挂载各个分区并正常启动。可能很多读者首先想到的是将系统切换到单用户模式,然后手动挂载分区,最后根据系统信息重建/etc/fstab文件。但是这个方法不行,因为缺少fatab文件,所以linux无法挂载任何分区。即使linux可以切换到单用户,此时的系统也只是一个只读的文件系统,无法上传到磁盘。写任何信息。我们介绍另一种方法,就是使用linuxrescue模式登录系统,然后获取分区和挂载点信息,重建/etc/fstab文件。这里以Centos6.9为例,其他版本类似。首先,将系统第一章光盘放入光驱,将BOIS设置为从光驱启动,这样系统就会从光驱启动。如下图,选择“Rescueinstalledsystem”,然后回车,系统开始开机进入救援模式。然后系统自动开始引导,进入下图画面:这里是选择模式使用的语言,可以根据自己的需要设置。这里我们选择“English”,然后按tab键,选择“ok”,回车进入下一步。下面是键盘选择界面,如下图,这里可以选择默认的“us”。接下来进入网络配置界面,如下图:这里是选择是否启用网络。由于系统启动失败,我们已经在linux系统上操作过了,网络是否开启已经无所谓了。这里选择不启用。下面是最关键的一步,如下图,修复模式会自动挂载系统所有分区到/mnt/sysimage目录下,选择“Continue”,修复环境进入读写状态,可以分区读写操作,选择“Read-Only”,修复环境进入只读模式,因为我们要重建fstab文件到/etc目录,所以选择“Continue”进入读写模式。下面是一个友情提示界面,如下图,因为fstab文件丢失,修复模式找不到可以挂载的分区。由此可见,修复模式也是读取这里的/etc/fstab文件,回车,进入Nextstep。下面是选择下一步要执行的动作,如下图,这里选择“shellStartshell”进入修复模式命令行。最后进入修复环境,就可以操作了。如下图所示,上面详细演示了如何进入linux的修复模式。其实很多时候,当linux无法启动的时候,可以通过这个方法登录系统进行修复和更改操作。下面是恢复/etc/fstab文件的详细过程。First,checkthesystempartition,asshownbelow:bash-4.1#fdisk-lDisk/dev/sda:42.9GB,42949672960bytes255heads,63sectors/track,5221cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndBlocksIdSystem/dev/sda1*12520078183Linux/dev/sda226130010241437+83Linux/dev/sda313011682306841583Linux/dev/sda41683522128427017+5Extended/dev/sda516831873153417683Linux/dev/sda618742064153417683Linux/dev/sda720652255153417683Linux/dev/sda822562382102009683Linux/dev/sda923832484819283+82Linuxswap/Solaris/dev/sda10248552212198492183LinuxBecausethepartitionisnotdamaged,youcanviewthe通过fdisk命令可以得到完整的系统分区信息,但是我们并不知道每个分区对应的标签名称信息。接下来使用tune2fs命令查看各个分区对应的标签名称:bash-4.1#tune2fs-l/dev/sda1|grepmountedLastmountedon:/bootbash-4.1#tune2fs-l/dev/sda2|grepmountedLastmountedon:/usrbash-4.1#tune2fs-l/dev/sda3|grepmountedLastmountedon:/bash-4.1#tune2fs-l/dev/sda5|grepmountedLastmountedon:/varbash-4.1#tune2fs-l/dev/sda6|grepmountedLastmountedon:/tmpbash-4.1#tune2fs-l/dev/sda7|grepmountedLastmountedon:/homebash-4.1#tune2fs-l/dev/sda8|grepmountedLastmountedon:/optbash-4.1#tune2fs-l/dev/sda10|grepmountedLastmountedon:/data这样就得到了所有分区的挂载点信息,然后就可以构造afstab文件使用技巧:您可以参考其他系统fstab文件的格式,结合本系统的分区和挂载点信息,构建自己的fstab文件。由于fstab文件存放在系统的根目录下,所以需要挂载原系统的根分区。从上面我们可以看出根分区对应的设备名是/dev/sda3,然后在修复模式创建的临时根分区下创建挂载。挂载点,然后挂载原系统的根分区。运行过程如下:bash-4.1#pwd/bash-4.1#mkdirtempbash-4.1#mount/dev/sda3/tempbash-4.1#dfFilesystem1K-blocksUsedAvailableUse%Mountedon/dev51564405156440%/dev/tmp/loop079872798720100%/mdev/sda32972268259916255893210%/temp这样就把原来根分区的所有文件都挂载到了/temp目录下,然后我们就可以创建我们需要的fstab文件了。重构后的fstab文件内容如下:bash-4.1#cat/temp/etc/fstabLABEL=//ext4defaults11LABEL=/boot/bootext4defaults12devpts/dev/ptsdevptsgid=5,mode=62000tmpfs/dev/shmtmpfsdefaults00LABEL=/home/homeext4defaults12LABEL=/home/homeext4defaults/12LAopt/optext4defaults12proc/procprocdefaults00sysfs/syssysfsdefaults00LABEL=/data/dataext4defaults12LABEL=/usr/usrext4defaults12LABEL=/var/varext4defaults12LABEL=SWAP-sda9swapswapdefaults00配置好后,保存退出,然后重启系统正常启动。bash-4.1#reboot3.2,CentOS下不小心删除/boot目录的修复方法这个问题经常出现在新手和开发者身上。误删的原因有很多,但都不重要。如何回复,我们一起来看看这种现象,见下图:出现这种情况,可能的原因有:系统启动问题,/boot目录被误删,grub配置错误。不管是什么原因,这里提供一个终极的方法,也就是一定能解决问题的方法,大家可以反复尝试。解决这个问题,还是需要使用centosU盘镜像或者CD镜像,通过系统镜像进入rescue修复模式,然后就可以大展拳脚了。下面看看如何在centos7.x版本下进入rescue修复模式,然后修复系统开机。首先通过系统镜像盘进入系统启动模式,如下图:然后选择Troubleshooting,回车进入下图界面:这里选择“RescueaCentossystem”,回车,输入以下内容界面:这是进入rescue修复模式的几个步骤中的一个选项,类似centos6.x版本,这里选择数字1进入可读写模式。稍等片刻,即可进入下图所示界面:按回车进入命令行模式,然后执行chroot命令,如下图所示:这样就多了根目录,这就相当于进入了真实的系统环境了。接下来将系统镜像挂载到任意目录,这里挂载在/mnt下,挂载系统镜像的目的是将系统镜像作为yum源,然后安装系统缺少的内核模块,安装grub2引导程序。bash-4.2#mount/dev/cdrom/mnt下面开始创建一个yum源码仓库,用于从本地系统镜像中读取rpm包,安装内核模块。如下图:重点来了,第一步是重装内核,这里使用yum的reinstall命令,不要使用install安装,执行如下命令:bash-4.2#yumreinstallkernel这样,内核模块安装完成,接下来需要重新安装grub2,重新生成grub2配置文件grub.cfg,执行下图所示操作:执行完成后,执行两次exit命令退出,系统会自动重启完成引导引导的修复。万一发生事故,系统已经可以畅通无阻地启动。4、Linux系统无响应(死机)问题分析Linux服务器长期运行后,难免会出现无响应的情况,俗称“死机”。系统死机后,屏幕一般会输出故障信息,键盘会失去反应。这种情况的常见解决方法是重启系统。不过重启前要注意屏幕上的输出信息,因为可能会提示死机。主要原因对解决问题很有帮助。其实还有一种方法,就是通过串口直连的方式将客户端电脑和服务器端连接起来,将服务器端的详细错误信息发送给客户端电脑。服务器死机的原因有很多,但主要有两个方面:软件问题和硬件问题。下面总结了Linux系统死机的常见原因和解决问题的思路:1)系统硬件问题主要是由SCSI卡、主板、RAID卡、HBA卡、网卡、硬盘等硬件设备引起的。这种情况下,就需要定位硬件故障的细节,更换硬件来解决问题。2)外围硬件问题,主要是网络问题引起的。这时候就需要检查网络设备、网络参数等,找到并解决问题。3)软件问题,主要是系统内核bug、应用软件bug、驱动bug等。遇到这种情况,需要通过升级内核、修复程序bug、更新驱动等方式解决。4)系统设置问题:主要是系统参数设置不当造成的,可以通过恢复系统默认状态、关闭防火墙等方式解决。五、其他故障的一般解决方法如果linux引导程序有问题,也可以通过光驱或U盘引导进入linux救援模式,然后修改相应的引导程序或重新安装引导程序。如果linux内核崩溃或丢失,也可以先进入linux救援模式,然后加载根分区,最后重新编译内核。如果最坏的情况发生,文件系统严重损坏,内核崩溃,那么这时候重装系统就比较容易了。遇到这种情况,可以先将linux上有用的数据和文件备份转移到其他设备上,然后再对整个文件系统进行cleaninstall。我们不可能对这里出现的每一个问题都给出详细的解决方案。问题千差万别,每个问题的处理方式都不一样。本专栏要教给大家的是,当Linux系统出现问题时,解决问题的一般思路和一般策略,熟练掌握这些技巧,你就能游刃有余地应对任何Linux问题。