Linux如何分析和排查系统故障——排除文件系统类故障

前言:文件系统及磁盘中所存储的数据的价值是无法估量的,管理员的工作职责之一就是要确保数据的安全。由于磁盘属于易损耗品,无法预估它什么时候会损坏。最好的办法就是建立完善的备份机制。当系统出现文件系统或磁盘类故障时,一定要慎重处理。

一、修复文件系统

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

当文件系统的超级块数据损坏是,Linux将无法识别该文件系统,挂载时会出现"you must specify the filesystem type"的提示而不能正常使用。

示例1:执行以下操作可以破坏/dev/sdb1文件系统的超级块数据库,尝试挂载时不能成功。

模拟对 /dev/sdb1 分区的破坏操作

检查是否能挂载该分区

对于通过/etc/fstab文件自动挂载且设置了fsck参数(第6列的值非0;该数字用于决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。这个知识点以前分享过,是在我的主页一篇标题为:"Linux基础命令——挂载、卸载文件系统"的文章中讲的,感兴趣的话可以去我的主页翻翻看)的文件系统,若超级块出现错误,则Linux系统在启动时会报错,并提示用户需要进行修复操作。例如,当/dev/sdb1分区的超级块出现错误时,启动后系统将提示"Give root password for maintenance"。如下图图示1.1

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

图示:1.1

图示1.2

修复一般的文件系统错误可以使用"fsck"命令进行,结合"-t"选项指定文件系统类型,结合"-y"选项对发现的问题自动回答"yes"。需要注意的是,如果该文件系统遭受破坏的情况很严重,则修复完毕后可能会丢失一些数据,因此请慎重决定是否进行修复(必要时也可以先用dd命令将损坏的分区进行备份)。

上述总结:

故障原因非正常关机、突然断电、设备读写失误等

文件系统的超级块(super-block)信息被破坏

故障现象无法向分区中读取或写入数据

启动后提示"Give root password for maintenance"

解决思路根据提示输入 root 口令,进入修复状态

使用 fsck 命令进行修复

二、磁盘资源耗尽

当一个文件系统的磁盘空间耗尽以后,将无法继续在该分区中创建新的文件数据,从而导致故障的出现。例如,当根分区"/"中的磁盘空间耗尽以后,将可能导致部分程序乃至整个系统无法正常启动或运行,因此一些临时性的运行文件将无法建立。

当根分区磁盘空间不足而无法启动进入Linux系统时,可以通过安装光盘进入急救模式,转移或清理掉根分区中占用大量空间的文件。具体过程就不再赘述了,光盘进入急救模式在上上个文章已经分享过了。使用dd命令可以模拟出根分区耗尽的故障,例如"dd if=/dev/zero of=/testfile bs=1M count=999999"。

除此之外,在文件系统中能够使用的文件数量(对应i节点数量)也是有限的,当一个文件系统被格式化以后,其i节点即文件数量就已经固定下来了。如果用户在该分区中创建了巨量的细小文件(耗尽i节点),将可能出现这种情况:虽然该分区中任然有大量的剩余磁盘空间,但是却无法再建立新文件。

应用示例:

1.模拟i节点耗尽故障

具体步骤:

1)新建一个约32MB大小的EXT4文件系统(如/dev/sdb7),将其挂载到/data目录下(怎么创建新的分区在以前的文章中也有过分享)。并使用带"-i"选项的df命令确认该文件系统中的节点的使用情况。

图示:

2)编写一个简单的脚本,运行该脚本可以耗尽/dev/sdb7分区中的所有可用的i节点。关于脚本的相关知识,我们将在以后的文章中会讲到,这里简单了解一下。

图示:

3)当i节点耗尽以后,在该文件系统中再创建新的文件时,会出现"设备上没有空间"的错误假象。但当我们通过df命令查看该分区的磁盘空间时,会看到还有可用的磁盘空间,这其实就是因为i节点耗尽导致的,所以无法创建。

图示:

2.修复i节点耗尽故障

理解i节点耗尽故障的根结之后,问题就好解决了。只需找到该分区中占用大量i节点的细小文件,并进行转移或者删除即可。对于多用户公用的文件系统,建议为相关用户设置磁盘限额(包括文件数量和磁盘空间两方面)。

图示:

上述总结:

故障原因磁盘空间已被大量的数据占满,空间耗尽

虽然还有可用空间,但文件数i节点耗尽

故障现象无法写入新的文件,提示"… : 设备上没有空间"

部分程序无法运行,甚至系统无法启动

解决思路清理磁盘空间,删除无用、冗余的文件

转移或删除占用大量 i 节点的琐碎文件

进入单用户模式、急救模式进行修复

为用户设置磁盘配额

三、检测硬盘坏道

磁盘坏道可分为逻辑坏道和物理坏道两种,前者主要由于软件操作不当造成的,可以使用软件修复;后者是物理损坏,只能通过更爱磁盘分区或扇区的占用位置来进行改善,排除掉包含有坏块的磁盘空间。

故障现象读取磁盘中的数据时,磁盘设备发出异常声响。

访问磁盘中的某个文件时,反复读取且出错,提示文件损坏

对于新建立的分区无法完成格式化

系统使用该磁盘时频繁死机

硬盘出现坏道后,如果不及时更换或进行技术处理,坏道就会越来越多,并可能造成频繁死机或数据丢失的后果。所以必要时应该对磁盘进行定期检测,检查是否存在坏道。

在Linux系统中,检测磁盘的坏道情况可以使用badblocks命令进行

选项:

#-s 显示进度信息

#-v 显示详情

示例:查看硬盘设备/dev/sdb中的坏道情况

在长期使用计算机的过程中,文件系统和磁盘的故障现象很难完全避免,对于此类故障的修复处理需要十分谨慎,如果操作不慎可能会加重数据破坏的程度。当发现硬盘中存在坏道时,应尽快停止系统中的应用服务、备份相关数据,必要时立即关闭系统以防止磁盘坏道进一步扩散,导致更大的损失。对于存在坏道的硬盘设备,应使用其他完好的硬盘进行替换。

Linux硬盘文件系统损坏,Linux常见的文件系统类故障该怎么解决-文件系统错误相关推荐

  1. linux常见的文件系统格式,Linux系统里几种常见的文件系统格式

    在天下网吧-网吧系统-网吧天下栏目上一篇文章中,我们看到了:希望对各位网吧网管或者网吧维护,做网吧系统的各位大大有用,那么今天我们一起来看下:Linux系统里几种常见的文件系统格式 在上一篇文章中我们 ...

  2. 2场直播丨MySQL 数据库最常见的 6 类故障的排除方法、2020数据技术嘉年华·金融峰会暨数据库大咖讲坛(第4期)...

    一.MySQL 数据库最常见的 6 类故障的排除方法 - 2020年11月12日 20:00 - 2020年11月12日 21:00 MySQL 无法启动?MySQL 连接不上?MySQL 挂起(hu ...

  3. Android APP常见的5类内存泄露及解决方法

    Android APP常见的5类内存泄露及解决方法 参考文章: (1)Android APP常见的5类内存泄露及解决方法 (2)https://www.cnblogs.com/genggeng/p/7 ...

  4. linux反复出现文件系统损坏,Linux日常维护之文件系统损坏后的修复

    Linux文件系统损坏后的修复技巧详细介绍 在日常运维中,经常会遇到文件系统损坏的问题,如下图: Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件? 首先会让你输入root用户的密 ...

  5. linux 磁盘头损坏 pv不见了,文件系统损坏的修复过程

    最近碰到两次在作扩卷等操做时整个卷数据损坏丢失的状况,有必要记录下问题的处理过程. 若是你是晚班,遇到这种状况,忽然一个卷不见了,你先作好下面两件事. 1 记录好你以前全部的操做命令,用以判断咱们究竟 ...

  6. linux系统检测硬盘物理损坏,linux系统下检测硬盘上的坏道和坏块

    linux系统下检测硬盘上的坏道和坏块 发布时间:2020-02-28 22:22:57 来源:51CTO 阅读:1127 作者:赤练挚爱 磁盘坏道检测 当磁盘出现以下情况:io wait 无故增高或 ...

  7. linux硬盘分区损坏,用Linux拯救损坏的硬盘分区表

    用Linux拯救损坏的硬盘分区表 作者: 网络转载 CNETNews.com.cn 2008-05-22 20:10:09 本人有一块西部数据80GB的硬盘,因为不小心感染了病毒,使硬盘分区表遭到了严 ...

  8. 文件系统损坏导致虚拟机无法正常启动的问题及解决方法

    简介 计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必 ...

  9. [虚拟机-系统重启]文件系统损坏导致虚拟机无法正常启动的问题及解决方法

    简介 计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必 ...

  10. linux硬盘安装redhat,RedHat Linux硬盘安装RedHat Linux 9

    RedHat Linux 9.0的三个文件: ①shrike-i386-disc1.iso: ②shrike-i386-disc2.iso; ③shrike-i386-disc3.iso. 使用RAR ...

最新文章

  1. 《乐高EV3机器人搭建与编程》——2.2 颜色设计
  2. 数据分箱技术在Python中实现
  3. Spring事务的实现方式和实现原理
  4. Flask常见错误与解决方法
  5. linux脚本里调执行命令,使用shell的-n/-x/-x执行选项调试Shell脚本
  6. POJ3264Balanced Lineup(最基础的线段树)
  7. CCF201409试题
  8. 为Windows添加日志事件
  9. 现代控制理论课程实验三:一阶倒立摆的LQR控制器设计
  10. 代码高亮与美化的工具
  11. python plt 画图
  12. 数学建模专栏 | 第八篇:MATLAB评价型模型求解方法
  13. python网络爬虫网易云音乐_怎么使用Python网络爬虫爬取网易云音乐歌词
  14. arcgis地理空间数据库学习记录05-管理分布式数据库
  15. 高性能电工电子电拖及自动化技术实训与考核装置
  16. ply补全为立方体_PLY文件格式及其解析 | 学步园
  17. css:box-shadow实现单边,多边阴影
  18. Docker数据卷挂载相关
  19. 【笨木头Unity】入门之旅005:正常人都要掌握的操作
  20. 墙都不扶就服你!javaredisson分布式锁

热门文章

  1. Python3自定义包
  2. java项目账户充值提现_充值和提现的业务流程是怎样的?
  3. ThinkPad键盘失灵解决办法
  4. Vue家谱视图结构- vue-tree-chart
  5. Word2019 插入脚注问题
  6. 企业邮箱账号,如何在foxmail上创建
  7. Cookie、Session 简述
  8. 日本的美景,从谷歌卫星地图上就可以一撇究竟
  9. Win10/win11系统如何禁用笔记本自带键盘、笔记本键盘禁用后无法恢复解决办法【靠谱】
  10. 百度地图API去掉百度logo信息等