linux&&系统故障排查

日志文件分析

主要日志文件

日志文件分析

系统启动类故障排除

Linux的系统启动过程是怎样的?

在这里插入图片描述
开机自检(BIOS)
加电后,主板上的BIOS芯片对基本硬件(cpu、内存、显卡)等进行检查,最后“滴”一声,进入下一步硬盘引导。
MBR引导
寻找硬盘引导记录,硬盘上面存放着系统。即加载MBR引导信息,加载MBR中的GRUB引导程序。

硬盘:有许多磁道,最外层的被称为0磁道。0磁道上有一个扇区,该扇区只有512字节的容量。该扇区被称为第一扇区,第一扇区包含引导程序(引导程序在window和Linux上各不相同,我们最常用的是grub引导程序,该引导程序在第一扇区占据446字节空间)、分区表(记录磁盘的分区信息主分区、扩展分区、逻辑分区,该分区表在第一扇区占据64字节空间)、结束标志(2字节)。第一扇区主要用于系统引导和分区识别功能。第一扇区就是MBR(主引导记录)

GRUB菜单
GRUB根据配置文件grub.conf加载内核程序
加载内核程序
内核程序开始加载系统中的第一个进程init

MBR扇区故障

MBR故障有什么现象?判断依据。

MBR如果损坏且未留有备份,该系统可能无法修复!!!因为分区表丢失会导致无法识别分区。

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

在这里插入图片描述

MBR故障修复步骤

提前准备好备份文件
dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1
模拟损坏MBR扇区故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
以RHEL6安装光盘引导进入急救模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#进入shell模式后,使用fdisk命令检查当前的磁盘信息
fdisk  -l
#挂载存放MBR备份数据的磁盘
mkdir  /dir1
mount  /dev/sdb1  /dir1
#将挂载目录下的MBR备份数据恢复到boot分区下
dd  if=/dir1/sda.mbr.bak  of=/dev/sda  bs=512  count=1
#退出shell模式
exit

利用备份文件进行恢复
重新启动即可
在这里插入图片描述

dd : 复制命令,依据扇区进行复制
if : 输入文件
of : 输出文件
bs : 块大小
count : 此处数量为1块
bs * count = 512 = MBR的容量

GRUB引导故障

GRUB配置文件grub.conf有什么用?
#使用“fdisk  -l”命令查看硬盘信息,其中带*号的一行是boot引导分区,内部存放着内核文件。
fdisk  -l
#使用mount命令,根据以上的设备信息查询引导分区的挂载目录位置。一般是/boot目录
mount
-rw-r--r--  1 root root  1240067 Jul 13  2016 abi-4.4.0-31-generic
-rw-r--r--  1 root root  1243479 Dec  2  2016 abi-4.4.0-53-generic
-rw-r--r--  1 root root   189566 Jul 13  2016 config-4.4.0-31-generic
-rw-r--r--  1 root root   189885 Dec  2  2016 config-4.4.0-53-generic
drwxr-xr-x  5 root root     4096 Dec 14  2016 grub
-rw-r--r--  1 root root 21230206 Dec 14  2016 initrd.img-4.4.0-31-generic
-rw-r--r--  1 root root 21675809 Dec 14  2016 initrd.img-4.4.0-53-generic
-rw-------  1 root root  3879360 Jul 13  2016 System.map-4.4.0-31-generic
-rw-------  1 root root  3887632 Dec  2  2016 System.map-4.4.0-53-generic
-rw-------  1 root root  6937248 Jul 13  2016 vmlinuz-4.4.0-31-generic
-rw-------  1 root root  6963344 Dec  2  2016 vmlinuz-4.4.0-53-generic
##vmlinuz-4.4.0-31-generic  :  内核文件
##initrd.img-4.4.0-31-generic  :  内核的映像文件或扩展文件
#查看grub目录,其中grub.cfg是引导程序的配置文件
root@bjphp2:/boot# ls -al grub/
total 44
drwxr-xr-x 5 root root  4096 Dec 14  2016 .
drwxr-xr-x 3 root root  4096 Dec 14  2016 ..
drwxr-xr-x 2 root root  4096 Dec 14  2016 fonts
-rw-r--r-- 1 root root   699 Dec 14  2016 gfxblacklist.txt
-r--r--r-- 1 root root  7383 Dec 14  2016 grub.cfg
-rw-r--r-- 1 root root  1024 Jul 30  2018 grubenv
drwxr-xr-x 2 root root 12288 Dec 14  2016 i386-pc
drwxr-xr-x 2 root root  4096 Dec 14  2016 locale
#之后grub根据配置文件加载内核,内核启动系统第一个进程
Linux系统启动时,光标一直闪,无法完成启动怎么办?

具体描述
新电脑安装linux系统后,在不拔出U盘的状态下可以进入grub目录,通过输入exit命令可以进入正常的linux命令行界面;若拔出U盘,服务器重启后左上角会有光标闪烁且一直无法进入命令行界面。
解决方法
sudo grub-install /dev/sda
sudo update-grub
原因
大概率是因为你在使用U盘安装系统时,在设置grub目录时,设置到了/dev/sda目录(U盘目录)。

GRUB故障修复步骤

模拟损坏grub故障
dd if=/dev/zero of=/dev/sda bs=446 count=1

bs=446 : grub仅占MBR扇区的前446个字节,因此此处仅破坏前446个字节即可
grub故障不需要备份数据也可恢复
grub损坏故障现象与MBR损坏故障现象相同或类似。

以RHEL6安装光盘引导进入急救模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#进入shell模式后,使用ls命令可以看到光盘目录中的内容
ls
#此时,使用命令"ls  /mnt/sysimage"可以看到系统目录中的内容
ls  /mnt/sysimage/
#使用chroot命令创建虚根,用户仅能看到虚根及虚根以内的数据。其实虚根前面存在光盘目录/mnt/sysimage。
chroot  /mnt/sysimage/
#安装grub引导程序到硬盘起始位置
grub-install  /dev/sda
#退出shell模式,重新启动系统即可
exit

在这里插入图片描述

grub.conf文件丢失修复步骤

模拟grub.conf文件丢失

#备份grub.conf文件
mv  /boot/grub/grub.conf  /tmp

现象
在这里插入图片描述
方法一:手动输入引导命令,实现系统启动
在这里插入图片描述

执行root命令及之后的命令即可

方法二:插入RHEL6安装光盘
在BIOS中设置光盘引导,在系统启动时启动RHEL6安装光盘
在这里插入图片描述
进入系统急救模式
在这里插入图片描述
同GRUB故障修复步骤一样,进入shell模式

#进入shell模式,设置虚根
chroot  /mnt/sysimage
#将grub.conf备份文件恢复到/boot/grub目录下
cp  /tmp/grub.conf  /boot/grub/
#退出shell模式,进入BIOS更改为硬盘引导,重新启动系统即可
exit

如果grub.conf文件丢失,可以从相同系统版本的服务器上拷贝一份拿来使用

/etc/inittab文件丢失

遗忘root用户的密码

故障现象
  • 无法进行需要root权限的管理操作
  • 若没有其他可用账号,将无法登陆系统
遗忘root用户的密码修复步骤

方法一:引导进入单用户模式,重设密码
启动系统,如下图所示为grub配置文件加载内核的选项。按“e”进入下一步
在这里插入图片描述
如下图所示,将看到grub配置文件中的三个选项
在这里插入图片描述

root : 内核的位置
kernel : 内核文件是谁
initrd : 内核的映像文件

选择第二个,并按“e”键进入下一步。
在这里插入图片描述
如上图所示,在命令行输入以下内容

quiet  1 

1 : 1代表加载init进程时以何种方式加载,1指的是单用户模式。
1 或 s 或 single 均可
单用户模式:单用户模式在加载init进程时,不需要输入用户口令即可登录。

最后敲击回车键返回上级的三个选项页面,然后按“b”键进入下一步启动
在这里插入图片描述
如下图所示,进入单用户模式
在这里插入图片描述
最后,使用命令passwd设置root口令即可.
在这里插入图片描述
重启服务器后,新用户口令生效。

方法二:进入急救模式,重设密码
更改BIOS,设置光盘引导,放置RHEL6安装启动光盘。
在这里插入图片描述
在这里插入图片描述
进入shell模式,切换虚根
在这里插入图片描述

chroot  /mnt/sysimage/
#设置root用户新口令
passwd
#退出shell模式,重启系统即可
exit

在这里插入图片描述

如何防止root密码被恶意修改?如何防止单用户模式下修改root密码?

基本原理
给grub菜单加上限制,设置第二密码。
单用户模式下,遗忘root密码设置root新密码是通过修改grub配置文件实现的!
操作步骤

#修改grub配置文件,在hiddenmenu下一行设置口令
vim  /boot/grub/grub.conf
  hiddenmenu
  password  123456

保存退出,重新启动系统检测。
在这里插入图片描述

default=0 : 一个系统中可能同时存在两个内核。0代表着以第一个内核开始启动。
splashimage=(hd0,0)/grub/splash.xpm.gz : 图片文件。
hiddenmenu : 等待延迟timeout五秒后,隐藏菜单。

了解init进程

init进程有几种运行状态?

init进程是系统启动的第一个进程

init进程有以下七种运行状态
0 : 关闭init进程,因为init进程是系统中的第一个进程,所以关闭init进程等同于关闭系统
1 : 单用户模式,字符界面。
2 : multiuser,withhout NFS。多用户模式,不含网络系统,字符界面。
3 : full multiuser mode。完全多用户模式,字符界面。
4 : unused。保留未用。
5 : x11。完全多用户模式,图形界面。
6: : 重新启动init进程,因为init进程是系统中的第一个进程,所以重新启动init进程等同于重启系统。
在这里插入图片描述

通常设置init进程的运行级别为3。

Linux如何设置服务器开机运行字符界面?

设置init进程的运行级别为3即可。

如何查看init进程的配置文件?

vim /etc/inittab

该文件控制着系统运行时的默认运行级别。用于设定init进程默认的运行级别。
运行级别一般为3或5

Linux如何在字符界面下临时开启图形界面?

使用startx命令即可

startx

图形界面同一时刻只存在一个。

Linux如何设置系统启动时系统服务的运行状态?
Linux中可以对哪些系统服务设置运行状态?

执行“chkconfig --list”命令,查看系统服务运行状态的设置。
在这里插入图片描述
如何查询单个服务的运行状态设置?

chkconfig  --list  httpd
#设置目标服务开机自启动
chkconfig  httpd  on
#此时目标服务默认在init程序以2345运行级别运行时启动。
chkconfig  --list  httpd
#指定当init程序以3,5运行级别运行时启动目标服务
chkconfig  --level  35  httpd  on
#检查
chkconfig  --list  httpd

chkconfig设置单个服务开机启动或停止比较方便
ntsysv设置多个服务开机启动或停止比较方便

如何实现批量系统服务运行状态设置?

执行ntsysv命令
在这里插入图片描述
以上设置完成后,保存退出即可生效。

可以使用命令“ntsysv 35”,对init程序运行状态3,5级别时系统服务的运行状态进行设置。

Linux中的系统服务有哪些?都是用来做什么的?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上的设置,在init的运行级别为2,3,5时生效。

文件系统类故障排除

修复文件系统

故障原因
  • 非正常关机,突然断电,设备读写失误等
  • 文件系统的超级块(super-block)信息被破坏

超级块(super-block): 位于分区的起始位置(目录区),记录分区内部文件在数据区的存放位置。

故障现象
  • 无法向分区中读取或写入数据
  • 启动后提示“Give root password for maintenance”
解决思路
  • 根据提示输入root口令,进入修复模式
  • 使用fsck命令进行修复
故障排除步骤及修复步骤

文件系统损坏有以下几种类型:
非根分区文件系统损坏

#模拟对/dev/sdb1分区的破坏操作
dd  if=/dev/zero  of=/dev/sdb1  bs=512  count=4
#检查是否能挂载该分区
mount  /dev/sdb1  /mnt
  mount: you must specify the filesystem type
#对该分区进行修复
fsck  -y  -t  ext4  /dev/sdb1
#再次挂载该分区

超级块在分区的起始位置,容量大小不确定。

根分区(普通分区)文件系统损坏

#模拟对/dev/sda3分区的破坏操作
dd  if=/dev/zero  of=/dev/sda3  bs=512  count=4
#此时,由于根分区损坏,全部命令均无法正常使用
ls
  bash:/bin/ls:输入/输出错误

重启系统,无法发现init程序,无法正常启动系统,如下所示。
在这里插入图片描述
更改BIOS设置,设置光盘启动,放置启动光盘,进入救援模式。
在这里插入图片描述
进入shell模式

#对该分区进行修复
fsck  -y  -t  ext4  /dev/sda3

fsck -y /dev/sda3

最后恢复硬盘启动即可

根分区(LVM分区)文件系统损坏
模拟破坏LVM的根分区
在这里插入图片描述
更改BIOS设置,设置光盘启动,放置启动光盘,进入救援模式。
在这里插入图片描述
进入shell模式

#查找卷组
lvm  vgscan
#激活卷组
lvm  vgchange  -ay  /dev/VolGroup(卷组名)
#查看逻辑卷
lvm  lvscan
#
fsck  -y  /dev/VolGroup/LogVol01(根分区对应的逻辑卷名)

在这里插入图片描述

修复完成后、恢复硬盘启动、重新启动即可。

磁盘资源耗尽故障

故障原因

磁盘空间已被大量的数据占满,空间耗尽(数据区满)
虽然还有可用空间,但文件数i节点耗尽(目录区满)

故障现象

无法写入新的文件,提示“…:设备上没有空间”
部分程序无法运行,甚至系统无法启动

解决思路

清理磁盘空间,删除无用,冗杂的文件
转移或删除占用大量i节点的琐碎文件
进入单用户模式、急救模式进行修复
为用户配置磁盘限额

Linux中磁盘空间被耗尽该如何修复?
Linux中磁盘索引节点被耗尽该如何修复?

模拟磁盘索引节点耗尽

#查看新增测试磁盘
fdisk  -l
#对新增磁盘分区.n-1-2
fdisk  /dev/sdb
#格式化新增磁盘
mkfs  -t  ext4  /dev/sdb1
#挂载测试磁盘到服务器。
mount  /dev/sdb1  /data
df -hT
df -i
#模拟创建大量空文件
#脚本实现即可

在这里插入图片描述
解决方法
使用find命令查找空文件,删除无效的空文件即可.慎用。

rm  -rf  `find  /data  -size  0k`
Linux中如何查看磁盘索引节点的使用情况?

df -i /data

检测磁盘坏道

故障原因

磁盘设备中存在坏道(逻辑的或物理的)

故障现象
  • 读取磁盘中的数据时,磁盘设备发出异常声响(真坏)
  • 访问磁盘中的某个文件时,反复读取且出错,提示文件损坏
  • 对于新建立的分区无法完成格式化
  • 系统使用该磁盘时频繁死机
解决思路
  • 检测硬盘中是否存在坏道
  • 修复硬盘或更换新的硬盘
磁盘坏道修复步骤
#执行磁盘坏块检查命令
badblocks  -sv  /dev/sdb

-s : 扫描并修复
-v : 显示过程

Linux中最常见的公共日志文件是哪个?

/var/log/messages

67:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值