0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fsck命令用于处理可能损坏的文件系统

冬至子 来源:TIAP 作者:刘光录 2022-11-15 17:44 次阅读

fsck(file system check,文件系统检查)用于处理可能损坏的文件系统,本文对该命令做个简单介绍。

一般来说,有这么几种情况,你可能会用到 fsck 命令:系统无法启动,设备(外部驱动器或存储设备)运行不正常,或者有文件损坏的情况等。

fsck 实际上是许多文件系统特定检查器的“前端”,比如 fsck.vfat, fsck.ext2 等。使用 fsck 的时候不需要指定具体使用的是哪个检查器。

fsck 命令简介

fsck 命令与大多数 Linux 命令的结构相同,如下为其使用方式:

fsck [options] [filesystem]

如果未指定文件系统,系统将分析你的 fstab 文件(/etc/fstab)以查找要扫描的设备。另外,需要使用 root 用户或者 sudo 来运行该命令。

我们可以使用 fdisk 或 df 命令列出 Linux 中的硬盘驱动器,然后就可以使用 fsck 命令来指定要检查的设备了。

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380




Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

在运行 fsck 之前卸载设备

不要在已安装或挂载的设备上运行 fsck ,否则的话会损坏文件。所以在运行 fsck 之前需要先卸载设备。

如果你尝试在已安装的设备上运行 fsck,会看到如下错误:

$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

而在正常的驱动器上运行 fsck,输出是这样的:

$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

虽然 fsck 命令接受设备名称(比如 /dev/sda)作为参数,但是你可以选择输入 UUID,以免将已安装的和卸载的设备混淆。UUID是分配给设备的固定值,不会受这些系统更改的影响。

fsck 命令的退出代码

如下是使用 fsck 检查磁盘后返回的一个代码列表。如果分析一个磁盘,退出代码是这些代码的总和,如果在多个设备上使用 fsck,那么返回的是两个和的逻辑或(OR,||)。

  • 0 - 没有报错;
  • 1 - 文件系统错误已更正;
  • 2 - 应重新启动系统;
  • 4 - 未更正的文件系统错误;
  • 8 - 操作错误;
  • 16 - 用法或语法错误;
  • 32 - 用户请求取消了 fsck
  • 128 - 共享库错误。

你可以使用 echo $? 来检查上次运行命令的退出代码。

fsck 命令的应用

上述我们对 fsck 做了一个基本的介绍,下面我们来看看这个命令的使用。

修复USB磁盘和其他可移动设备

作为演示,我们假定有问题(待检查)的设备为 /dev/sdb。

首先,我们需要确保驱动器已卸载:

sudo umount /dev/sdb

然后运行 fsck 命令:

sudo fsck /dev/sdb

检查是否有错误输出,如果没有显示任何信息,可使用 echo $? 来检查退出代码。

我们可以添加一些选项,允许命令进行自动更正。但是这些命令没有进行标准化,所以在使用前需要验证文件系统并比较 man 手册中的描述信息。

尽管如此,通常我们可以使用 -p 选项来让 fsck 自动修复:

sudo fsck -p /dev/sdb

类似的,-y 选项可以对检测到的任何损坏的文件系统进行更正。

修复根文件系统

当系统处于活动(active)状态时,我们无法卸载 root 分区。如果我们怀疑主文件系统已损坏,那就需要使用其他的方法了。

对于这种情况,有几个方案可以使用。比如可以在系统启动时,在救援模式(rescue mode)下运行 fsck,或者使用恢复主题的引导盘(recovery-themed live cd)。

许多 Linux 发行版,在经过几次系统启动失败后,重新启动时会自动强制 fsck。如果你喜欢自己动手,可以手动设置“几次”这个数值。

大多数现代 Linux 版本都有一个名为 tune2fs 的工具,假如你的 root 设备为 /dev/sda,可以使用如下命令:

sudo tune2fs -c 1 /dev/sda

上述命令是对系统设置的更改,设置为每 **n **次(上述例子中为 1 )引导(系统启动),运行一次 fsck。你还可以将其设置为标准的时间间隔,单位可以设置为 天、周或月

假如我们希望在任何时间启动系统时,如果一周内没有检查,就运行 fsck。那么可以使用 -i 选项来指定时间间隔,如下:

sudo tune2fs -i 1w /dev/sda

如果你使用的是 systemd,则可以通过输入以下命令在下次启动时强制运行 fsck:

fsck.mode=force
fsck.repair=yes

关于 fsck 的更多信息,大家可以参考 man 手册,在终端中运行 man fsck 即可。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    51

    文章

    8018

    浏览量

    145270
  • Linux系统
    +关注

    关注

    4

    文章

    588

    浏览量

    27220
  • UUID
    +关注

    关注

    0

    文章

    22

    浏览量

    8089
收藏 人收藏

    评论

    相关推荐

    在Linux 系统中紧急情况处理六招

    文件系统被破坏时的处理方法当文件系统被破坏时,如果使用的是ext2fs类型的文件系统,就可从软盘运e2fsck
    发表于 09-25 10:37

    在Linux 系统中紧急情况处理六招

    上原来的/etc/passwd文件的路径就是 /mnt/etc/passwd。 2、文件系统被破坏时的处理方法当文件系统被破坏时,如果使用的是ext2fs类型的
    发表于 09-26 15:14

    Linux常见故障的紧急处理方法

    文件系统被破坏时的处理方法当文件系统被破坏时,如果使用的是ext2fs类型的文件系统,就可从软盘运e2fsck
    发表于 05-19 08:00

    XfS文件系统,XfS文件系统是什么意思

    XfS文件系统,XfS文件系统是什么意思 XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。所幸的是SGI将其移植到了Lin
    发表于 03-29 10:39 4226次阅读

    Linux日志文件系统解析

    时,如何提供更好的完整性。此外本文还介绍了现行的几种日志文件 系统和下一代日志文件系统。 定义日志文件系统的方法有很多种,但是让我们抓住要点。日志
    发表于 11-01 15:23 0次下载
    Linux日志<b class='flag-5'>文件系统</b>解析

    设备文件系统devfs详细解析

    ,典型的 /dev 树包含数百个块特殊文件和字符特殊文件,它们全都在根文件系统上。每个特殊文件都可以让用户空间进程轻松地与内核设备实现交互。举例来说,通过对这些特殊
    发表于 11-01 15:36 0次下载

    Flash文件系统剖析

    设备的文件系统意味着什么吗?本文将向您介绍 Linux 的 flash 文件系统,并探索它们如何通过平均读写(wear leveling)处理底层的可消耗设备(flash 部件),并鉴别各种
    发表于 11-01 15:43 4次下载
    Flash<b class='flag-5'>文件系统</b>剖析

    DOS命令修复U盘文件错误

    Chkdsk命令是在DOS下用于修复文件系统错误的关键命令。U盘的文件系统错误会对我们的数据安全造成危害。
    发表于 01-17 15:08 9100次阅读

    文件系统是什么?浅谈EXT文件系统历史

    在先前关于Linux文件系统的文章中,我很想去深入地讨论更多EXT文件系统的特性的信息。所以,首先让我们来回答这个问题:什么是文件系统?一个文件系统应该遵循以下特点。
    发表于 06-28 09:03 5576次阅读
    <b class='flag-5'>文件系统</b>是什么?浅谈EXT<b class='flag-5'>文件系统</b>历史

    使用RT-Thread文件系统

    了解了文件系统的一些常用命令之后,下面带领大家通过运行文件系统的一些示例程序,来熟悉文件系统的基本操作。示例程序通过使用一些 DFS 的 API接口来实现,并将示例导出到 msh
    的头像 发表于 11-07 10:40 8577次阅读

    linux文件系统中的虚拟文件系统设计详解

    ;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系
    发表于 04-02 14:37 1743次阅读
    linux<b class='flag-5'>文件系统</b>中的虚拟<b class='flag-5'>文件系统</b>设计详解

    EE-329:在SHARC®处理器上运行FAT16文件系统和DOS命令

    EE-329:在SHARC®处理器上运行FAT16文件系统和DOS命令
    发表于 05-16 11:25 6次下载
    EE-329:在SHARC®<b class='flag-5'>处理</b>器上运行FAT16<b class='flag-5'>文件系统</b>和DOS<b class='flag-5'>命令</b>

    【服务器数据恢复】Linux Ext4文件系统执行fsck检查一致性后文件挂载报错的数据恢复案例

    某公司Ext4文件系统umount失败,管理员执行fsck检查一致性,结果Ext4文件mount不上(有时也表现为目录变成了文件),报错信息:mount: wrong fs type,
    的头像 发表于 10-21 14:11 1279次阅读
    【服务器数据恢复】Linux Ext4<b class='flag-5'>文件系统</b>执行<b class='flag-5'>fsck</b>检查一致性后<b class='flag-5'>文件</b>挂载报错的数据恢复案例

    如何使用fsck和xfs_repair命令修复Linux磁盘错误?

    fsck文件系统一致性检查)是用于检查Linux操作系统文件系统一致性的工具。
    的头像 发表于 03-15 09:24 1.3w次阅读

    用于Linux的最佳通用文件系统 Linux文件系统的安装

    为您的计算机选择正确的文件系统可能是一个困难的过程。您可能会想知道:为什么文件系统很重要?有没有适用于安装 Linux 的特定
    发表于 08-03 10:22 294次阅读
    适<b class='flag-5'>用于</b>Linux的最佳通用<b class='flag-5'>文件系统</b> Linux<b class='flag-5'>文件系统</b>的安装