3.15 Linux 系统故障排错

1、root 账号密码遗忘

step1:重新启动操作系统,在选择进入系统的Grub菜单界面,根据提示按“e”小写字母进入编辑界面

step2:加载bash解释器 或 关闭Selinux

  • 加载shell解释器:要按方向键向下键,找到以字符串“Linux16”开头的行,将光标移动到该行的结尾,然后输入“init=/bin/bash”。
  • 关闭selinux写法,init=/bin/bash enforcing=0(前者作用让系统登录后加载bash解释器,后者是且关闭Selinux)

setp3:配置完成后,根据界面下面的英文提示按“Ctrl-x”组合键以单用户模式启动Linux,修改root密码

step4:执行exec /sbin/init命令重启系统,此时无法使用其它重启命令。

如果是系统的SELinux处于开启状态,并且前文修改内核选项时,没有增加“enforcing=0”,则此处需要多执行一条“touch /.autorelabel”命令以便在下次系统引导前重新标记系统中的所有相关文件,因为在SELinux开启时,修改root密码时修改passwd文件会导致SELinux安全上下文报错。

2、MBR 扇区故障

MBR分区位于0扇区(磁盘的第一个扇区,又称为引导扇区),一共512字节,前446字节是grub引导程序,中间64字节是分区表,包含整个硬盘的分区表记录,一旦主引导扇区发生故障,将无法引导系统或者无法找到正确的分区位置而无法加载系统,通过硬盘引导主机时很可能进入黑屏状态。

a. 备份MBR扇区数据

由于MBR扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其他的存储设备中,否则在恢复时将无法读取到备份文件。将第一块硬盘(sda)的MBR扇区备份到第二块硬盘的sdb1分区中。

mkdir /mnt/backup								# 创建MBR备份目录
mkfs.xfs /dev/sdb1							# 格式化sdb1 分区
mount /dev/sdb1 /mnt/backup 		# 挂载 /dev/sdb1

# 将MBR扇区的分区表备份到 /mnt/backup 中
dd if=/dev/sdb1 of=/mnt/backup/sda.mbr bs=512M count=1
b. 模拟MBR扇区故障
# 模拟MBR扇区故障
dd if=/dev/zero of=/dev/sda bs=512M count=1

# 重启测试错误
reboot

c. 恢复MBR扇区数据

由于MBR扇区被破坏以后,就无法再从该硬盘启动系统了,所以需要使用其他硬盘中的操作系统或centos系统的安装光盘进行引导。以便从备份文件中恢复MBR扇区中的数据。

1、使用centos安装光盘引导为例,当出现安装界面时选择troubleshooting(排错),回车

2、选择 Resuce a CentOS system,回车

3、选择continue

4、按Enter键后进入带“sh-4.2#”提示符的shell环境

5、恢复备份数据

lsblk																						# 查看分区情况
mkdir /mnt/backup																# 创建备份目录
mount /dev/sdb1 /mnt/backup											# 挂载之前备份MBR的分区
dd if=/mnt/backup/sda.mbr of=/dev/sda						# 将数据重新写回/dev/sda中
reboot																					# 重启

3、grub 故障

Grub是大多数linux操作系统默认使用的引导程序。RHEL7用了grub2,而不再是grub了,MBR分区的前446个字节存放的是系统引导程序grub,中间64字节是分区表,最后2个字节表示结束。

a. 模拟grub故障
# 模拟grub故障
dd if=/dev/zero of=/dev/sda bs=446M	count=1

# 重启测试故障
reboot

b. 光盘修复 grub故障

1、使用centos安装光盘引导为例,当出现安装界面时选择troubleshooting(排错),回车

2、选择 Resuce a CentOS system,回车

3、选择continue

4、按Enter键后进入带“sh-4.2#”提示符的shell环境

# 切换根到本机的系统
df -h
chroot /mnt/sysimage

# 使用fdisk查看引导分区
fdisk -l /dev/sda

# 重装一下 grub2 到启动分区
grub2-install /dev/sda

# 回退到sh-4.2
exit

# 重启
reboot
4、内核和grub2文件故障
a. 模拟文件故障
# 故障模拟删除/boot目录
ls /boot
rm -rf /boot/*
b. 进入光盘修复模式

0、关闭虚拟机 -> 打开电源时进入固件 -> 设置光盘为第一启动程序

1、使用centos安装光盘引导为例,当出现安装界面时选择troubleshooting(排错),回车

2、选择 Resuce a CentOS system,回车

3、选择continue

4、按Enter键后进入带“sh-4.2#”提示符的shell环境

# 切换根到本机的系统
df -h 
chroot /mnt/sysimage/

# 恢复/boot
ls /boot
df -h 
mount /dev/sr0 /mnt/cdrom
c. 重新安装内核

重新安装内核:可以用rpm 或者yum,用yum需要先卸载当前的,再安装;rpm可以强行--force覆盖安装

# 重新安装内核
rpm -ivh /mnt/cdrom/Packages/kernel-3.10.0-1160.el7.x86_64.rpm --force
d. 安装grub2
# grub2-install /dev/sda 安装不上,此操作去掉
grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启系统(记得调回硬盘启动)
bash-4.2# exit
sh-4.2# reboot

关闭虚拟机 -> 打开电源时进入固件 -> 设置磁盘为第一启动程序

注意:如果安装了图像界面进不去,解决方式是重新安装图形化界面:yum groupinstall 'Server with GUI'

5、排除文件系统类故障

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

当文件系统的超级块数据损坏时,linux将无法识别该文件系统,挂载时会出现错误提示以致不能正常使用。

a. 模拟故障损坏
# 创建sdb1分区
gdisk /dev/sdb
# 格式化
mkfs.xfs /dev/sdb1

# 模拟文件系统损坏
dd if=/dev/zero of=/dev/sdb1 bs=512 count=1
mount /dev/sdb1 /mnt/backup/

# 设置开机自动挂载
vim /etc/fstab
	/dev/sdb1   /backup   xfs  defaults  0 0

# 查看故障损坏
reboot
  • 对于通过/etc/fstab文件自动挂载且设置了fsck参数(第六列的值非0),如超级块出现错误,则linux操作系统在启动时会报错。并提示用户需要进行修复操作

b. 文件系统进行修复

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

# 修复文件系统
xfs_repair /dev/sdb1

# 重启操作系统
reboot

  • 修复失败,原因未知!!!
# 因为修复失败,导致实验失败
# 取消开机自动挂载/dev/sdb1
vim /etc/fstab
# 重启
reboot
6、磁盘资源耗尽故障

当一个文件系统的磁盘空间耗尽以后,将无法继续在该分区中创建新的文件数据。磁盘资源耗尽主要是两个方面:i节点耗尽和磁盘容量耗尽。

# 创建一个20M的磁盘分区
lsblk																		# 查看分区
gdisk /dev/sdb													# 创建20M的磁盘分区
mkdir /mnt/inodes												# 创建分区挂载目录
mount /dev/sdb2	/mnt/inodes							# 挂载分区


df -i																		# 查看磁盘inode节点
touch /mnt/inodes/test{1..10240}.txt		# 创建文件

df -i
df -h

# 清空小文件
rm -rf /inodes/*
7、磁盘坏道故障

若磁盘出现以下现象,则有可能是磁盘出现坏道,需要进行检测和修复。

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

磁盘坏道分为三种:

  • 逻辑坏道:逻辑坏道可以使用fsck -a方法修复
  • 0磁道坏道:0磁道坏道的修复方法是隔离0磁道,使用fdisk划分区的时候从1磁道开始划分区。
  • 硬盘坏道:如果是硬盘坏道的话,只能隔离不能修复,

注意:修复硬盘前切记保存数据

badblocks 命令

  • 描述:查看磁盘坏道
  • 语法:badblocks [选项] 磁盘文件

-s选项用于显示进度信息

-v选项用于显示详情

# 查看磁盘坏道
badblocks -sv /dev/sdb2

# 逻辑坏道修复
fsck -a /dev/sdb2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值