使用‘fsck’修复Linux中文件系统错误的方法

前言

文件系统负责组织数据的存储和恢复方式。 无论如何,随着时间的推移,文件系统可能会被破坏,并且可能无法访问它的某些部分。 如果您的文件系统出现这种不一致,建议验证其完整性。

这可以通过名为fsck的系统实用程序( 文件系统一致性检查)完成。 此检查可在引导期间自动完成或手动运行。

在本文中,我们将回顾fsck实用程序及其用法,以帮助您修复磁盘错误。

何时在Linux中使用fsck

当您想要运行fsck时,有不同的场景。 以下是一些例子:

  • 系统无法启动。
  • 系统上的文件已损坏(通常您可能会看到输入/输出错误)。
  • 附加驱动器(包括闪存驱动器/ SD卡)无法正常工作。

fsck可用选项

需要使用超级用户权限或root运行Fsck命令。 您可以使用不同的参数。 它们的用法取决于您的具体情况。 您将在下面看到一些更重要的选项:

  • -A - 用于检查所有文件系统。 该列表取自/etc/fstab 。
  • -C - 显示进度条。
  • -l - 锁定设备以确保在检查期间没有其他程序尝试使用该分区。
  • -M - 不检查已挂载的文件系统。
  • -N - 仅显示将要执行的操作 - 不进行实际更改。
  • -P - 如果要并行检查文件系统,包括root。
  • -R - 不检查根文件系统。 这仅适用于' -A '。
  • -r - 为正在检查的每个设备提供统计信息。
  • -T - 不显示标题。
  • -t - 专门指定要检查的文件系统类型。 类型可以是逗号分隔列表。
  • -V - 提供描述正在进行的操作。

如何运行fsck来修复Linux文件系统错误

要运行fsck ,您需要确保未安装要检查的分区。 出于本文的目的,我将使用安装在/mnt第二个驱动器/dev/sdb 。

如果我在安装分区时尝试运行fsck会发生什么。

# fsck /dev/sdb 

在已安装的分区上运行fsck

为避免这种情况,请使用卸载分区。

# umount /dev/sdb 

然后fsck可以安全地运行。

# fsck /dev/sdb 

在Linux分区上运行fsck

了解fsck退出代码

运行fsck后 ,它将返回退出代码。 这些鳕鱼可以通过运行以下命令在fsck的手册中看到:

# man fsck
0 No errors
1 Filesystem errors corrected
2 System should be rebooted
4 Filesystem errors left uncorrected
8 Operational error
16 Usage or syntax error
32 Checking canceled by user request
128 Shared-library error 

修复Linux文件系统错误

有时在文件系统上可以找到多个错误。 在这种情况下,您可能希望fsck自动尝试更正错误。 这可以通过以下方式完成:

# fsck -y /dev/sdb 

-y标志, “yes”来自fsck的任何提示自动“yes”以纠正错误。

同样,您可以在所有文件系统上运行相同的操作(没有root ):

$ fsck -AR -y 

如何在Linux根分区上运行fsck

在某些情况下,您可能需要在系统的根分区上运行fsck 。 由于在安装分区时无法运行fsck ,因此可以尝试以下选项之一:

  • 在系统启动时强制fsck
  • 在救援模式下运行fsck

我们将审查这两种情况。

系统启动时强制fsck

这相对容易完成,您唯一需要做的就是在系统的根分区中创建一个名为forcefsck的文件。 使用以下命令:

# touch /forcefsck 

然后,您可以简单地强制或安排重新启动系统。 在下次启动期间,将执行fsck 。 如果停机时间很重要,建议您仔细规划,因为如果您的系统上有许多使用的inode, fsck可能需要一些额外的时间。

系统引导后,检查文件是否仍然存在:

# ls /forcefsck 

如果是这样,您可能希望将其删除,以避免每次系统启动时出现fsck 。

在救援模式下运行fsck

在救援模式下运行fsck需要更多步骤。 首先准备系统以重新启动 。 停止任何关键服务,如MySQL / MariaDB等,然后键入。

# reboot 

在启动过程中,按住shift键以显示grub菜单。 选择“ 高级选项 ”。

Grub Advance Options

然后选择“ 恢复模式 ”。

选择Linux恢复模式

在下一个菜单中选择“ fsck ”。

选择fsck Utility

系统将询问您是否希望重新安装/ filesystem。 选择“yes” 。

确认根文件系统

你应该看到类似的东西。

运行fsck文件系统检查

然后,您可以通过选择“恢复”恢复正常启动。

选择正常启动

结论

在本教程中,您学习了如何使用fsck并在不同的Linux文件系统上运行一致性检查。 如果您对fsck有任何疑问,请不要犹豫,在下面的评论部分提交。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Linux关于透明大页的使用与禁用介绍

    引言 随着计算需求规模的不断增大,应用程序对内存的需求也越来越大.为了实现虚拟内存管理机制,操作系统对内存实行分页管理.自内存"分页机制"提出之始,内存页面的默认大小便被设置为 4096 字节(4KB),虽然原则上内存页面大小是可配置的,但绝大多数的操作系统实现中仍然采用默认的 4KB 页面. 4KB 大小的页面在"分页机制"提出的时候是合理的,因为当时的内存大小不过几十兆字节,然而当物理内存容量增长到几 G 甚至几十 G 的时候,操作系统仍然以 4KB 大小为页面

  • Linux下升级python和安装pip的详解

    Linux版本升级: 1.首先确认Linux操作系统中自带的python 版本时候与自己所需要的版本一致 所有的python版本都在https://www.python.org/ftp/python/ 选择下载 2. wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz 进行下载 3.解压 tar -zxvf Python-2.7.11.tgz 进入Python-2.7.11目录  输入 ./configure make

  • Linux文本查找命令find的用法详解

    find 命令主要用于查找目录和文件,可以指定多种参数进行匹配. 用法:find  +查找路径  +命令参数   [输出形式] 查找路径:告诉find在哪查找 命令参数:指定要查找的文件属性,属性包括多种,类型.名称.大小.修改时间等等 常用的参数: -name 按文件名进行查找 -user 按照文件的属主进行查找 -mtime  按照文件的更改时间来查找,-n 表示文件修改时间距今天n天以内,+n 表示文件修改时间距今天n天以前 -type  按照文件的类型查找,d 表示目录, f表示文件 ,

  • Linux设置虚拟内存的教学与实战教程

    什么是虚拟内存? 先直接摘抄一段 wikipedia 上的介绍. 虚拟内存是计算机系统内存管理的一种技术.它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换. 对于 C 语言里面的变量,我们可以使用 & 运算符来获得其地址, 既然是虚拟地址,就是指这个地址是虚拟的. 虚拟地址机制不是必须的,在简单的单片机中,编写的代码编译时都需要指定物理 RAM 空间分布,不会有虚拟地址的概念,

  • 一道题理解Linux中sort命令的多个参数

    sort命令很常用,但参数也很多,比如: -o, -n, -u, -r一时也未必能想起如何使用. 这里有一道题,可以很好的结合使用上面的参数,达到很好记忆的效果. 题目: 数据文件data中含以下数据: 4 1 3 5 1001 2 4 5 请用一条命令反向排序,去重并将这些数据同样保存在data文件中.最终输出结果: 1001 5 4 3 2 1 要达到上面的三条要求,就要同时借助于上面的几个参数,具体命令如下: [root@localhost ~]# cat data | sort -nur

  • Linux获取当前脚本真实路径的方法

    1.获取当前脚本的真实路径: #!/bin/bash if [[ $0 =~ ^\/.* ]] #判断当前脚本是否为绝对路径,匹配以/开头下的所有 then script=$0 else script=$(pwd)/$0 fi script=`readlink -f $script` #获取文件的真实路径 script_path=${script%/*} #获取文件所在的目录 realpath=$(readlink -f $script_path) #获取文件所在目录的真实路径 echo $sc

  • Linux使用join -a1来合并两个文件

    要合并以下两个文件,一起合并在一起,合并到1.txt中 # 1.txt Jerry 20 Alice 30 David 40 # 2.txt Jerry man Alice woman David 40 合并的后的1.txt Jerry 20 man Alice 30 woman David 40 上面的文件特点是有相同的,则合并,第二列缺少内容的.这个时候使用join -a1 1.txt 2.txt就可以很好的达到目的. [root@host ~]# join -a1 1.txt 2.txt

  • Linux Shell在目录下使用for循环结合if查找文件的巧用

    1.for循环对目录做遍历,if判断文件是否为要查找的文件. 示例1: #!/bin/bash if [ $# -lt 1 ];then echo "Usage:$0 + filepath" exit fi #判断用户是否输入了参数 match=$1 #将要查的文件赋值给变量match found=0 #定义一个初始变量作为发生条件,当文件找到时对此变量重新赋值 for file in /etc/* #对目录进行遍历 do if [ $file == $match ];then #判断

  • Linux删除文件提示Operation not permitted的处理办法

    经常有同事问,删除文件/目录时报Operation not permitted错误,这个要如何处理?! 这个一般是权限的问题,比如: 1. 普通用户且有足够的权限的话,一般文件夹可能是别的服务/进程掉用该文件夹 lsof +D  /Dir/Your/Want/To/Delete/ 先执行上面的命令,查询到调用该文件夹的进程IDs,然后再kill掉,这个时候应该就可以删了! 2. 普通用户且缺乏权限的话,如果要删除该文件夹则要借助su或者sudo命令来删除 3. 如果是root用户,依然报上面的错

  • Linux编辑启动、停止与重启springboot jar包脚本实例

    前言 springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring.profiles.active=prod springboot加载jar包的方式有 // 直接在控制台进行启动,缺点就是控制台关闭项目也就关闭了. java -jar bootdo.jar // 这种方式可以运行在后台,但是如果推出了shell的话,那也会挂 java -jar /bootdo-2.0.0.jar > b

随机推荐