≡菜单

10个Linux Fsck命令示例,用于检查和修复文件系统

Linux fsck实用程序用于检查和修复Linux文件系统(ext2,ext3,ext4等)。

根据上次检查文件系统的时间,系统在引导期间运行fsck来检查文件系统是否处于一致状态。文件系统出现问题时,系统管理员也可以手动运行它。

确保在已卸载的文件系统上执行fsck,以避免任何数据损坏问题。

本文介绍了有关如何执行fsck命令进行故障排除和修复任何文件系统错误的10个实际示例。

1.磁盘分区上的文件系统检查

首先,使用以下命令查看系统上所有可用的分区 分命令 如下所示。

# parted /dev/sda 'print'

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  106MB   105MB   primary   fat16        diag
 2      106MB   15.8GB  15.7GB  primary   ntfs         boot
 3      15.8GB  266GB   251GB   primary   ntfs
 4      266GB   500GB   234GB   extended
 5      266GB   466GB   200GB   logical   ext4
 6      467GB   486GB   18.3GB  logical   ext2
 7      487GB   499GB   12.0GB  logical   fat32        lba

您可以检查特定的文件系统(例如:/ dev / sda6),如下所示。

# fsck /dev/sda6
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793506/4476416 blocks

以下是可能的 出口 codes 对于fsck命令。

  • 0 – No errors
  • 1 –文件系统错误已更正
  • 2 –系统应重新启动
  • 4 –文件系统错误未得到纠正
  • 8 – Operational error
  • 16 –用法或语法错误
  • 32 –用户请求取消了Fsck
  • 128–共享库错误

2.特定于文件系统类型的Fsck命令

fsck内部使用相应的文件系统检查程序命令进行文件系统检查操作。这些fsck checker命令通常位于/ sbin下。

以下示例显示了各种可能的fsck checker命令(例如:fsck.ext2,fsck.ext3,fsck.ext4等)。

#cd /sbin
# ls fsck*
fsck  fsck.cramfs  fsck.ext2  fsck.ext3  fsck.ext4  fsck.ext4dev  fsck.minix  fsck.msdos  fsck.nfs  fsck.vfat

fsck命令执行时会给您一个错误’t为要检查的文件系统找到文件系统检查器。

例如,如果在ntfs分区上执行fsck,则您’ll得到以下错误信息。 / sbin下没有fsck.ntfs。因此,这给出了以下错误消息。

# fsck /dev/sda2
来自util-linux 2.20.1的fsck
fsck: fsck.ntfs: not found
fsck: error 2 while executing fsck.ntfs for /dev/sda2

3.使用选项-A一次检查所有文件系统

您可以使用此选项在一次fsck运行中检查所有文件系统。这将按照/ etc / fstab中每个文件系统提到的fs_passno给出的顺序检查文件系统。

请注意,将跳过fs_passno值为0的文件系统,并按顺序检查大于0的文件系统。

/ etc / fstab包含下面列出的条目,

# cat /etc/fstab

##
proc            /proc           proc    nodev,noexec,nosuid 0       0
## / was 上 /dev/sda5 during installation
/dev/sda5 /               ext4    errors=remount-ro 0       1
## /mydata was 上 /dev/sda6 during installation
/dev/sda6 /mydata         ext2    defaults        0       2
## /backup was 上 /dev/sda7 during installation
/dev/sda7 /backup         vfat    defaults        0       3

在这里,具有相同fs_passno的文件系统在您的系统中并行检查。

# fsck -A

建议在全局检查期间通过添加-R选项排除根文件系统,如下所示。

# fsck -AR -y
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793506/4476416 blocks
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 8 files, 50/1463400 clusters

注意:在以下示例之一中说明了选项-y。

4.使用选项-t仅检查特定的文件系统类型

使用fsck -t选项,可以指定要检查的文件系统列表。当与选项-A一起使用时,fsck将仅检查此选项-t提及的文件系统。请注意,fslist是逗号分隔的值。

现在,将ext2作为fslist值传递给-t选项,如下所示:

# fsck -AR -t ext2 -y
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 11/2240224 files, 70327/4476416 blocks

在此示例中,/ dev / sda6是使用文件系统ext2创建的唯一分区,因此将进行相应的检查。

使用关键字‘no’在文件系统前面,您可以检查除特定文件系统之外的所有其他文件系统类型。

在以下示例中,ext2文件系统从检查中排除。

# fsck -AR -t noext2 -y
来自util-linux 2.20.1的fsck
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 0 files, 1/1463400 clusters

5.唐’使用选项-M在挂载的文件系统上执行Fsck

最好在所有fsck操作中将此选项用作默认选项。这样可以防止您在已挂载的文件系统上意外运行fsck。

# mount | grep "/dev/sd*"
/dev/sda5 上 / type ext4 (rw,errors=remount-ro)
/dev/sda6 上 /mydata type ext2 (rw)
/dev/sda7 上 /backup type vfat (rw)

As shown above, /dev/sda7 is mounted. If you try to execute fsck 上 this /dev/sda7 mounted filesystem (along with the -M option), fsck will simply 出口 with the 出口 code 0 如下所示。

# fsck -M /dev/sda7
# echo $?
0

6.使用选项-T跳过显示标题

使用选项-T,您可以跳过显示在fsck命令输出开头的标题。

# fsck -TAR
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 is mounted.  e2fsck:无法继续,正在中止。
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 8 files, 50/1463400 clusters

请注意,标题类似于“来自util-linux 2.20.1的fsck”.

7.强制进行文件系统检查,即使它’■使用选项-f清洁

默认情况下,fsck尝试跳过干净的文件系统以更快地完成工作。

# fsck /dev/sda6
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793503/4476416 blocks

您可以使用-f强制其检查文件系统,如下所示。

# fsck /dev/sda6 -f
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda6: 95/2240224 files (7.4% non-contiguous), 3793503/4476416 blocks

8.尝试使用选项-y自动修复检测到的问题

在以下示例中,/ dev / sda6分区已损坏,如下所示。

# mount /dev/sda6 /mydata
# cd /mydata
# ls -li
ls: cannot access 测试: Input/output error
total 72
  49061 -rw-r--r--  1 root root     8 Aug 21 21:50 1
  49058 -rw-r--r--  1 root root 36864 Aug 21 21:24 file_with_holes
  49057 -rw-r--r--  1 root root  8192 Aug 21 21:23 fwh
     11 drwxr-xr-x  2 root root 49152 Aug 19 00:29 lost+found
2060353 ?rwSr-S-wT 16 root root  4096 Aug 21 21:11 电影
      ? -?????????  ? ?    ?        ?            ? 测试

如上所示,目录 电影 和一个文件 测试 属性无效。

在以下示例中,-y将通过“yes”解决所有问题以自动修复检测到的损坏。

# fsck -y /dev/sda6
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0137642 but it looks 
like it is really a directory.
Fix? 是

Pass 2: Checking directory structure
Entry 'test' in / (2) has deleted/unused inode 49059.  Clear? 是

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sda6: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda6: 96/2240224 files (7.3% non-contiguous), 3793508/4476416 blocks

9.避免维修,但使用选项-n向Stdout报告问题

可以使用fsck -n选项在不修复文件系统的情况下将检测到的问题打印到stdout中。

首先,您可能会注意到/看到分区/ dev / sda6中的电影目录(和fwh文件)不存在的问题’没有有效的属性详细信息。

# mount /dev/sda6 /mydata
# cd /mydata
# ls -lrt
total 64
drwxr-xr-x  2 root root 49152 Aug 19 00:29 lost+found
?--xrwx-wx 16 root root  4096 Aug 21 21:11 电影
?-----x-wx  1 root root  8192 Aug 21 21:23 fwh
-rw-r--r--  1 root root 36864 Aug 21 21:24 file_with_holes
-rw-r--r--  1 root root     8 Aug 21 21:50 1

在stdout中显示的特定分区中的上述问题,没有对其进行任何修复,如下所示,

以下fsck示例在标准输出中显示问题,但未解决。 (部分输出如下所示)。

# fsck -n /dev/sda6
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0173 but it looks 
like it is really a directory.
Fix? no
Inode 2060353, i_blocks is 8, should be 0.  Fix? no

Pass 2: Checking directory structure
Inode 2060353 (/Movies) has invalid mode (0173).
Clear? no

Inode 49057 (/fwh) has invalid mode (013).
Clear? no

Entry 'fwh' in / (2) has an incorrect filetype (was 1, should be 0).
Fix? no

Pass 3: Checking directory connectivity
Unconnected directory inode 65409 (???)
Connect to /lost+found? no

'..' in ... (65409) is ??? (2060353), should be  (0).
Fix? no

Unconnected directory inode 2076736 (???)
Connect to /lost+found? no

Pass 4: Checking reference counts
Inode 2 ref count is 4, should be 3.  Fix? no

Inode 65409 ref count is 3, should be 2.  Fix? no

Inode 2060353 ref count is 16, should be 15.  Fix? no

Unattached inode 2060354
Connect to /lost+found? no

Pass 5: Checking group summary information
Block bitmap differences:  -(164356--164357) -4149248
Fix? no

Directories count wrong for group #126 (1, counted=0).
Fix? no

/dev/sda6: ********** WARNING: Filesystem still has errors **********

/dev/sda6: 96/2240224 files (7.3% non-contiguous), 3793508/4476416 blocks

10.使用选项-a自动修复损坏的部分

为了自动修复损坏的部分(无需任何用户干预),请使用-a选项,如下所示。

# fsck -a -AR

选项-a与e2fsck实用程序中的-p相同。它导致e2fsck修复必须在没有用户交互的情况下安全修复的所有检测到的问题。

如果fsck需要管理员’s attention, it simply 出口s with error code 4 before printing the description of the problem.

# fsck -a /dev/sda6
来自util-linux 2.20.1的fsck
/dev/sda6 contains a file system with errors, check forced.
/dev/sda6: Inode 2060353 is a unknown file type with mode 0173 but it looks
like it is really a directory.

/dev/sda6: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
	(i.e., without -a or -p options)

# echo $?
4

您还记得,可以在此处使用fsck -y选项自动修复以上问题。

# fsck -y /dev/sda6
来自util-linux 2.20.1的fsck
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0173 but it looks
like it is really a directory.
Fix? 是

Pass 2: Checking directory structure
Inode 49057 (/fwh) has invalid mode (013).
Clear? 是

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(164356--164357)
Fix? 是

Free blocks count wrong for group #5 (0, counted=2).
Fix? 是

Free blocks count wrong (682908, counted=682910).
Fix? 是

/dev/sda6: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda6: 95/2240224 files (7.4% non-contiguous), 3793506/4476416 blocks

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 20 评论… 加一 }

  • 贾拉尔·哈吉霍拉玛利 2012年8月22日,上午11:45

    嗨,

    谢谢,很好而有用的文章…

  • 阿肖克 2012年8月22日,晚上9:02

    关于的太好文章‘fsck’. I don’认为没有人能比这更好地解释-

  • Arivuchelvan 2012年8月23日,上午12:04

    你好
    不错的提示。写更多..谢谢..

  • 伊森 2012年8月23日,上午12:50

    好的指示。默认情况下,parted commond未安装在Debian Linux中。我apt-get安装了它并尝试了上网本中的一些示例。尽管只产生了一些简单的结果,

  • 卡尔提加延 2012年8月23日,下午11:51

    有用的文章。继续写作。谢谢。

  • 博哈博克 2012年8月31日,上午8:36

    #su
    #cd /
    #触摸forcefsck
    #shutdown -r现在

    …or …

    #cd /
    #sudo touch forcefsck
    #sudo shutdown -r现在

    …zen sitteren静静地看着闪烁的灯光-

  • 坦率 2013年3月22日,上午11:50

    e2fsck和fsck都需要检查哪些选项,如果无法修复,则添加到坏块列表中。以防将来使用。假设使用LiveCD来检查硬盘。包括交换驱动器(20GB的单个分区)

  • ro 2013年4月17日,晚上10:39

    你好
    ro @ ro:〜$ sudo fsck / dev / sda1
    来自util-linux 2.20.1的fsck
    e2fsck 1.42.5(2012年7月29日)
    文件系统大小(根据超级块)为24414062个块
    设备的物理大小为24413952块
    超级块或分区表可能已损坏!

    我很困惑-

  • 罗曼努尔 2013年6月26日,下午4:50

    我有专用的服务器。
    每个fsck badblocks或其他命令都说:

    / dev / sda正在使用中。
    e2fsck:无法继续,正在中止。

    在Windows中如此简单的操作在Linux中是如此复杂。
    服务器距离我数千英里。

  • 坦率 2013年6月28日,上午4:14

    嗨ROmanul,
    / dev / sda通常是/ root系统在Linux系统上的位置。
    而且您无法在检查时’s 上line,
    与MS Windows相似,您只能在脱机时真正检查并修复物理损坏。根据您所拥有的Distro,我将使用他们的邮件列表来回答特定的问题,详细说明如何连接到远程邮箱。如果您有支持合同,请与他们联系。

  • 福尔克 2014年3月2日,下午5:05

    我最近丢失了操作系统,
    它包含一个120GB的SSD(用于OS)和两个单独的750GB(匹配的版本)HD’s.

    当我尝试挂载并复制旧的750GB HDS时,它们失败了,
    他们不会挂载,并且当我尝试fsck时出现此错误。

    [root @ omited]#fsck -y / dev / sdd
    来自util-linux 2.19.1的fsck
    e2fsck 1.41.14(2010年12月22日)
    fsck.ext2:超级块无效,正在尝试备份块…
    fsck.ext2:尝试打开/ dev / sdd时超级块中的魔术码错误

    无法读取超级块或未描述正确的ext2
    文件系统。如果设备有效且确实包含ext2
    文件系统(而不是swap或ufs等),然后是超级块
    已损坏,您可以尝试使用备用超级块运行e2fsck:
    e2fsck -b 8193

    任何帮助表示赞赏。

  • 爱迪生(Jhon Edison) 2014年4月12日,上午11:11

    Gracias,muy util !!!

  • 乔伊斯 2014年10月14日,上午4:57

    嗨,我试着按照您所说的修理受损部分。但我得到以下信息:“e2fsck:无法继续中止”

    而我不’不知道该怎么办。我的系统在启动时遇到问题,在启动过程中显示“/ dev / sda4包含为错误的文件系统”部队检查,然后启动。但是我’d想修复计算机上的任何错误。救命?

  • 西迪什什·拉特卡(Siddhesh Latkar) 2015年4月16日,下午11:42

    谢谢。文章非常有用。

  • 阿努拉格 2015年11月16日,晚上9:53

    先生,我的系统已安装Kali Linux,当我启动系统时,它说bin / sh /:可以’t访问tty:工作控制已关闭..
    我无法理解问题,上面给出的命令无法正常工作,请帮助我

  • Sepahrad Salour 2016年1月5日,上午7:26

    谢谢你的帮助文章….

  • 里克 2016年5月21日,上午10:15

    在修复中非常有帮助。我如何回到Ubuntu?

  • 里克 2016年5月21日,上午10:26

    你们好棒!一世’有了这个网站,我又重新开始了! (我发现只有一件事缺少。检查完成后,您必须输入“exit”在命令行中返回到Ubuntu。)

  • 2017年2月2日,下午3:11

    我有一个奇怪的情况:我’m使用ubuntu运行活动的USB记忆棒,并尝试在未安装的sda驱动器上制作fsck,结果如下:

    root @ ubuntu:/ home / ubuntu#sudo fsck -a / dev / sda -f
    来自util-linux 2.27.1的fsck
    / dev / sda正在使用中。
    e2fsck:无法继续,正在中止。

    我要运行fsck的原因是因为每次我正常启动时总是运行一次fsck检查。即使我放了“0”我的sda1声明行的末尾到/ etc / fstab中,每次引导我仍然有此fsck检查!

    如果我对驱动器进行自检(智能),则说它100%正常。

    到底是怎么回事 ?!

  • 塞尔吉奥 2017年6月21日,晚上7:35

    谢谢。我可以修复Debian Stretch中需要dev / sda5的手册。

发表评论