news 2026/3/30 5:27:24

Linux常见系统故障案例说明并修复解决(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux常见系统故障案例说明并修复解决(上)

Linux系统故障排查思路实践教程(下)https://coffeemilk.blog.csdn.net/article/details/155903189

一、恢复Linux下的误删除文件

1.1、故障情况

在Linux系统上执行【rm -rf】误删除了指定分区的全部数据,且被删除的这个分区文件系统类型是【ext4】格式,现在需要将这个分区上被删除的数据恢复,如下图所示:

#直接执行【rm -rf】命令将指定分区(或当前分区)的数据全部删除了 rm -rf ./*

1.2、故障应急处理

若需要对这个分区的数据进行恢复,必须赶紧将这个需要恢复的分区卸载掉(或者立刻断电关机、或安全的将该分区所在硬盘移除;一定不能重启,不能重启,不能重启!!!【因此,生产环境的数据内容一定不要放在根分区,这样生产环境数据出问题后后续的操作会安全便利很多】)【主要目的是不能再给该分区中写入数据,这样会十分危险,继续写入数据会让被删除的数据被覆盖掉就很难恢复了】。

#1-卸载需恢复数据的分区(如:/data2)卸载前先查看当前磁盘情况 df -hT umount /data2 #2-若在卸载分区时提示“目标忙”,则是因为被一些进程或用户占用,查询到这些进程后强制杀死后再次卸载 #2.1-查看占用该分区的所属用户、进程PID、权限和对应命令 fuser -mv /data2 #2.2-查看所有打开该分区内文件的进程 lsof +D /data2 #2.3-强制杀死获取到的占用PID kill -9 2648 #3-再次执行卸载分区操作 #3.1-【懒卸载】在分区不再繁忙时自动完成卸载,对数据的风险相对较低 umount -l /data2 #3.2-【强卸载】强制中断所有占用连接完成卸载,适用于部分网络文件系统,风险较高,非必要不使用 umount -f /data2

1.3、数据恢复

对于【ext4】格式的分区数据恢复可以使用【ext4magic】工具来恢复。

#使用【ext4magic】工具来恢复指定分区数据(ext4magic的下载地址是【https://rpmfind.net/linux/rpm2html/search.php?query=ext4magic%28x86-64%29&submit=Search+...&system=&arch=】) #1-下载并安装ext4magic rpm -ivh ext4magic-0.3.2-4.23.x86_64.rpm #2-使用【ext4magic】先扫描指定分区后会显示可恢复的数据内容(未显示的就没法恢复了) ext4magic /dev/sdb -f / ext4magic /dev/sdb -I 2 #3-恢复指定分区的数据 #先创建 /dev/sdb 的只读映像,再从映像恢复(避免源设备写入) ext4magic /dev/sdb -C /mnt/sdb_backup.img -r -d /mnt/recover -v #3.1-将指定分区下的数据全部恢复到指定目录 ext4magic /dev/sdb -r -d /恢复目录 #3.2-将指定分区下当天10点到当前时间的数据都恢复到指定目录中 ext4magic /dev/sdb -r -a $(date -d "today 10:00:00" +%s) -b $(date +%s) -d /恢复目录
#可使用【PhotoRec】工具来恢复指定分区的数据 #官网地址是【https://www.cgsecurity.org/wiki/Main_Page】 #【该工具的下载地址是:https://www.cgsecurity.org/wiki/%E4%B8%8B%E8%BD%BD_TestDisk】 #1-下载【TestDisk & PhotoRec 7.2】 wget https://www.cgsecurity.org/testdisk-7.2.linux26-x86_64.tar.bz2 #2-解压 tar -jxvf testdisk-7.2.linux26-x86_64.tar.bz2 #3-运行【PhotoRec】工具来恢复指定磁盘数据 cd testdisk-7.2 photorec_static
#【优先推荐】若该服务器拥有图形化界面还可以使用【R-Linux】来恢复(下载地址是:https://www.r-studio.com/zhcn/free-linux-recovery/Download.shtml) #1-下载【R-Linux】软件 wget https://www.r-studio.com/downloads/RLinux6_x64.rpm #2-安装【R-Linux】软件 rpm -ivh RLinux6_x64.rpm #3-启动【R-Linux】软件会显示图形界面操作(即:选中需要恢复数据的分区扫描,扫描完成后点击顶部的【显示文件】,然后选中左侧的【Root】后勾选右侧需要恢复的文件,最后点击顶部【恢复标记的】即可) rlinux

二、修复Linux系统无法启动故障

2.1、故障情况

系统启动后不能正常进入系统内,而是停留显示在【grub】或【grub rescue】界面,如下图所示:

2.2、故障分析

看到grub字样,一般是关联系统引导内容(也就是说是系统引导相关的内容出问题了),可在故障界面直接先输入【ls】命令查看一下情况。系统无法正常启动,且进入单用户后好多命令是无法使用的,这个时候建议就是直接使用此系统的镜像文件配合系统启动U盘或者PXE来进入系统救援模式进行操作。

#故障分析方法(对于系统无法正常启动情况进入到系统中;建议【直接进入系统救援模式】排查操作) #1-准备与该系统一致的系统镜像放置到系统启动U盘或PXE中 #2-将系统启动U盘插入该服务器并设置从该系统启动U盘启动 #3-选择【Troubleshooting】-->【Rescue a Kylin Linux Advanced Server system】-->【exit】后正式进入系统的救援模式中 #4-输入【1】以读写模式在系统救援模式中操作-->【df -h】查看系统当前挂载的情况(当前是有系统镜像挂载的类似Windows pe 环境的系统与原本的系统)-->【chroot /mnt/sysroot】实现只将原有系统正常挂载使用(这就是我们想要操作的界面效果) #5-重点关注报错界面中查看了没有任何数据的分区(逐一查看后可以发现是/boot 这个系统引导的关键分区里面数据都没有了,定位到问题了) cd /boot ls

2.3、故障修复

#现在已经定位到是由于【/boot】系统引导分区的内容都没有了,接下来就是恢复【/boot】分区内容 #1-先安装基础系统引导内容到【/boot】所在的硬盘中(如:/dev/sda) grub2-install /dev/sda #2-还需要生成与该系统环境一致的内核文件【vmlinuz】与系统根文件【initrd.lz】相关内容(即:挂载系统镜像从系统镜像中安装对应的内核包【以 kernel-core 开头的rpm包(如:kernel-core-4.19.90-52.22.v2207.ky10.x86_64.rpm)】即可) mount /dev/cdrom /mnt df -hT cd /mnt cd Packages/ ls -al kernel-core-4.19.90-52.22.v2207.ky10.x86_64.rpm rpm -ivh kernel-core-4.19.90-52.22.v2207.ky10.x86_64.rpm --force #3-生成系统引导菜单文件 ll -a /boot/grub2 grub2-mkconfig > /boot/grub2/grub.cfg #4-退出当前正常的系统救援模式后重启电脑 exit reboot #5-将系统引导U盘移除(系统能够正常引导进入系统,问题解决)

到这里表示恭喜你,故障修复完成,系统可以正常启动进入了。

三、修复系统资源配置错误故障

3.1、故障情况

使用ssh登录或服务器主机登录到服务器上提示“Permission denied(权限被拒绝)”或者无法登录到系统中,像是卡住了。如下图所示:

3.2、故障分析

当输入账号密码登录服务器的时候提示权限被拒绝(首先排查是否密码输入错误,其次排查是否该服务器的网络问题(如:网络不稳定【使用ping ip 方法排除】或者IP被其他设备使用));排除这两个问题后就只能进入系统救援模式进行排查问题了。

#进入系统救援模式排查问题 #1-准备与该系统一致的系统镜像放置到系统启动U盘或PXE中 #2-将系统启动U盘插入该服务器并设置从该系统启动U盘启动 #3-选择【Troubleshooting】-->【Rescue a openEuler system】后正式进入系统的救援模式中 #4-输入【1】以读写方式在系统救援模式中操作-->【df -h】查看系统当前挂载的情况(当前是有系统镜像挂载的类似Windows pe 环境的系统与原本的系统)-->【chroot /mnt/sysroot】实现只将原有系统正常挂载使用(这就是我们想要操作的界面效果) #5-查看系统中SSH的日志内容排查问题(可以查看到显示【Could not set limit for 'nofile': Operation not permitted(即:无法为 'nofile' 设置限制:操作不允许)】那是不是这个nofile配置的太少了?) tail -f /var/log/secure #6-了解nofile并查看系统中配置文件【/etc/security/limits.conf】里面配置的是多少【nofile是类 Unix(如 Linux)系统中用于限制单个进程可打开的文件描述符最大数量的配置项。这里的文件描述符不仅指代普通文件,还涵盖网络套接字、管道、设备等各类 I/O 资源,它的核心作用是管控系统资源使用,避免单个进程过度占用资源而影响系统稳定性】 cat /etc/security/limits.conf

3.3、故障修复

#现在已经定位到故障是由于在【/etc/security/limits.conf】的配置文件中配置的(nofile【单个进程可打开的文件描述符最大数量】太大了,导致系统无法申请到这么多的资源分配,因此拒绝) #1-现在只用编辑【/etc/security/limits.conf】文件修改配置的nofile值(一般在60万左右即可)后保存退出 vi /etc/security/limits.conf * hard nofile 655360 * soft nofile 655360 #2-重启系统让配置生效 exit reboot #3-重新登录验证(已经可以正常登录了)

系统重启后,可以正常登录到系统中,则恭喜你,问题修复了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 5:01:30

智慧树学习助手:3分钟完成自动化学习配置的完整指南

智慧树学习助手:3分钟完成自动化学习配置的完整指南 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的冗长视频课程烦恼吗?手动…

作者头像 李华
网站建设 2026/3/24 14:00:11

Windows虚拟显示器完整教程:免费扩展你的数字工作空间

Windows虚拟显示器完整教程:免费扩展你的数字工作空间 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: https://gitcod…

作者头像 李华
网站建设 2026/3/25 22:44:48

Vue3低代码开发平台:3步搭建你的首个可视化应用

Vue3低代码开发平台:3步搭建你的首个可视化应用 【免费下载链接】vite-vue3-lowcode vue3.x vite2.x vant element-plus H5移动端低代码平台 lowcode 可视化拖拽 可视化编辑器 visual editor 类似易企秀的H5制作、建站工具、可视化搭建工具 项目地址: https://…

作者头像 李华
网站建设 2026/3/25 11:23:25

数据库迁移革命:从SQLite到MySQL的3分钟终极转换方案

数据库迁移革命:从SQLite到MySQL的3分钟终极转换方案 【免费下载链接】sqlite-to-mysql Script to convert and add sqlite3 database into a mysql/mariadb database 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-to-mysql 你是否曾经因为项目从小型…

作者头像 李华
网站建设 2026/3/23 13:52:57

结合.NET Aspire与Spring Boot:构建可观测的云原生Java应用

在云原生时代,即使是以.NET生态为核心的开发框架,也意识到了多语言支持的重要性。.NET Aspire便是这样一个框架,它虽然源于.NET,但通过其开放的设计,特别是对OpenTelemetry标准的采纳,为Java Spring Boot应用程序提供了强大的集成支持,使Java开发者也能受益于其简化的分…

作者头像 李华
网站建设 2026/3/27 7:21:04

verilog简单入门day7

今天我们先尝试一下debug这是代码块示意图这是原代码always (*) beginif (cpu_overheated)shut_off_computer 1; end always (*) beginif (~arrived)keep_driving ~gas_tank_empty; end可以发现这个代码无法实现图片功能,因此我们需要进行修改,有两个l…

作者头像 李华