linux目标机断电文件丢失,记录一次断电导致centos7.4系统不能正常进入的解决方案...

情况描述:

园区意外断电,导致服务器centos7.4系统不能正常进入,一直卡在进度条界面,按esc或者f5能够看到详细的错误,主要有三个服务报错,如下图:

3736e90ecb0de6ee466db989dfd607bc.png

chronyd、Postfix、polkit服务启动失败

分析情况:

这几个服务都是centos下常见的服务,chronyd是时间同步服务,Postfix是邮件服务,polkit是linux服务器上面的一种服务器方法进程,是不是最后一个服务失败导致系统进不去的呢?

解决步骤:

一、关闭错误服务解决方法

服务器的紧急模式不能进入,于是刻录了一张centos7.4的光盘,通过光盘的紧急模式进入,原来的系统文件都被挂载在/mnt/sysimage/目录下面:

d8a473e044b5f9dcafb3ad599555f4ac.png

1.1、首先查看message日志

cat /mnt/sysimage/var/log/message (日志文件比较大)

检索发现了界面上面报的几个错误,于是我们想把这几个服务都停止掉:

于是在紧急模式下使用命令:

systemctl stop chronyd (不存在)

systemctl disable chronyd

systemctl disable polkit

systemctl disable postfix

后面证实这种方法错误,这种操作是关闭了光盘系统里面的三个对应服务。

1.2、进入单用户模式

(在启动grub菜单,选择编辑选项启动

按键盘e键,来进入编辑界面

找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh

现在按下 Control+x ,使用单用户模式启动

现在,可以使用下面的命令访问系统

chroot /sysroot

运行一下命令,停止服务:

systemctl disable chronyd

systemctl disable polkit

systemctl disable postfix

然后重启,这次不报这三个错误了,但是继续报其它服务错误,我们采用同样的方法,陆陆续续关闭了以下服务:

chronyd.service

firewalld

NetworkManager

postfix

tuned

docker

kdump

在关闭了这么多服务后,启动界面不报任何错误了,但还是进不去系统,一直卡在进度条,按esc也没有任何错误,进入死胡同了,这种方法不通了。

二、系统分区、文件系统、磁盘检测

检查修复

进入紧急模式:

2.1、文件系统修复

先umount 系统分区,在修复

xfs_repair -v -L /dev/dm-0 (可能会导致用户信息和日志丢失)

2.2、df -h 和fdisk -l /dev/sda1 检查分区是否正常

2.3、#检测坏道命令,结果输出到 /home/badblocks.log

badblock -s -v -o /home/badblocks.log /dev/sda1

结果:都没有错误

三、selinux原因导致

于是进去检查selinux的配置,发现SELINUX=disabled和SELINUXTYPE=targeted是正常的,排除这种可能。

四、查看原系统的操作日志

紧急模式进入,查看/mnt/sysimage/root/.bash_history,发现有删除/etc/rc.d/目录下的操作记录,仔细看发现是中了挖矿病毒,用clamav扫描,手动清除文件的操作,而且还有替换ps、lattr命令等操作,截图如下,在想会不会是因为误删除了系统文件导致的,后面证实了我的想法是正确的。

a6f66d22883f75ba3ec8ef220187154e.png

55cdd942f037fbade68db71ed0c6d369.png

b1661c259198e0960ce6f3642ad408d5.png

787063dc43562236e38e9f6cd8316f05.png

4.1、于是重新进入紧急模式,查看message、boot.log、dmesg、secure日志,发现日志太大了,不好定位问题,于是先备份这些日志文件,然后全部清空,重新从硬盘启动系统,然后用光盘紧急模式进入查看日志具体错误,先后修复了以下文件。

centos7系统服务关联的三个路径:

/usr/lib/systemd/system/ # RPM包安装时分发的unit文件

/run/systemd/system/ # systemd运行时创建的文件

/etc/systemd/system/

修复了以下文件:

/usr/bin/tmux

zram.service

/sbin/rngd

/lib/systemd/rhel-dmraid-activation :no such file or directory 、

/usr/libexec/anaconda/anaconda-pre-log-gen

/usr/libexec/anaconda/zramswapon

anaconda-pre.service

libevent-2.0.so.5

anaconda-tmux0tty1.service

anaconda.service

/usr/bin/anaconda-disable-nm-ibft-plugin

/sys/module/pcc-cpufreg/initstate

/etc/rc.d/init.d/functions

采用方法:从光盘文件拷贝到原系统文件

cp /usr/lib64/libevent-2.0.so.5 /mnt/sysimage/usr/lib64/

cp -r /usr/libexec/anaconda /mnt/sysimage/usr/libexec/

cp /lib/systemd/rhel-dmraid-activation /mnt/sysimage/lib/systemd

cp /usr/bin/anaconda-disable-nm-ibft-plugin /mnt/sysimage/usr/bin/

修复了几十轮以后,发现message里面还报了以下错误:

Unknown username "polkitd"

Unknown username "dbus"

Failed bot register match for Disconnected message

Looping too fast Throottling execution a little

tuned.service

postfix.service failed

chronyd.service

polikit.service

dbus.service

有用户不存在和系统服务启动失败的现象,很奇怪,这些是系统服务用户,下意识的去找passwd文件,发现里面除了root,其它用户都被注释掉了,到这里感觉找到了问题所在,于是取消注释,重新在清楚日志重启,发现可以正常进入系统了,具体passwd文件被病毒注释还是程序或者人为设置的,无痕可查。后来我做过实验,如果把passwd里面的用户除了root,其它用户都停掉,确实会导致进不去系统。

总结:进不去系统原因是passwd用户被注释了,不然能进去系统,系统缺少库文件会影响系统服务启动。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值