当前位置: 首页>>技术教程>>正文


重启时强制 fsck.ext4,但实际上是 “forceful”

, , ,

问题描述

我的一台 Ubuntu 10.04 服务器给我带来了麻烦。\n当我运行 fsck.ext4 -n /dev/sda5 时,它告诉我空闲 inode 计数、空闲块计数等方面存在错误。

我试过了:

touch /forcefsck

还尝试过:

shutdown -rF now

重新启动后,我仍然看到错误。

我也刚刚检查了我的 eeePC 上网本,Ubuntu 10.10,也有同样的问题!

我如何在重新启动时强制 “/” 文件系统的真正 “forced” “forceful” “认真修复我的文件系统” fsck?

澄清:我运行 fsck.ext4 -n 因为它是一个已挂载的文件系统,以检查是否有错误。这告诉我有。我认为在 boot-up 过程中每 30 次挂载自动 fsck 正是为了处理根文件系统中的错误。但在我的情况下它不会这样做。\n我可以使用 LiveCD 重新启动并修复错误,然后再次重新启动,但这对于实时服务器来说是一些严重的停机时间。重新启动,自动 fsck,然后继续启动在实时服务器上更可持续,我相信这应该是正确的行为。

附加信息:这是输出。它看起来像 autofsck 会修复的东西,不是吗?

root@server:~# fsck.ext4 -n /dev/sda5
e2fsck 1.41.11 (14-Mar-2010)
Warning!  /dev/sda5 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sda5 contains a file system with errors, check forced.
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
Free blocks count wrong (1849368, counted=1948909).
Fix? no

Free inodes count wrong (545504, counted=552134).
Fix? no


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

/dev/sda5: 116752/662256 files (0.2% non-contiguous), 795324/2644692 blocks

最佳方法

我知道这是一个非常古老的线程,但我最近不得不解决这个问题,所以我想发布如何强制操作系统修复在启动期间使用 fsck 发现的问题(对于 12.04)。

您确实需要运行命令 sudo touch /forcefsck 。这将导致它在下次启动时执行 fsck。您可以在 /var/log/boot.log 中看到 fsck 的结果。

但是,您不能保证 fsck 会修复它找到的任何内容。为此,您需要编辑文件 /etc/default/rcS。该文件末尾有一行:

FSCKFIX=no

这需要更改为以下内容:

FSCKFIX=yes

这将与运行带有 -y 选项的 fsck 具有相同的效果,后者将强制执行所有可能的修复,并且不会要求用户交互。

这将允许您像 OP 要求的那样运行 fsck,而不必求助于从活动磁盘启动,这并不总是可行的,尤其是当您在远程系统上时。

次佳方法

sudo touch /forcefsck
sudo reboot

你打错了——你在触摸 /forcefcsk。 “c” 和 “s” 被交换。 fsck 是 FileSystemCheckK 的缩写。

第三种方法

从 e2fsck 手册页:

\\n

“Note that in general it is not safe to run e2fsck on mounted filesystems. The only exception is if the -n option is specified, and -c, -l, or -L options are not specified. However, even if it is safe to do so, the results printed by e2fsck are not valid if the filesystem is mounted. If e2fsck asks whether or not you should check a filesystem which is mounted, the only correct answer is ”no”. Only experts who really know what they are doing should consider answering this question in any other way.”

\\n

因此,如果您使用 fsck 检查已安装的 FS,即使使用 -n 选项,结果也可能根本无效。不要检查挂载的文件系统。使用 Live-CD/Live-USB。

如果您在挂载时不检查文件系统,我不明白您为什么需要使用 touch /forcefsck,您可以卸载并修复它。但如果是这种情况并且在修复后你的 FS 仍然有错误那么你可以考虑使用:

e2fsck -cy /dev/sda5

这将解决您可能遇到的称为坏块的硬盘驱动器相关问题(这需要很长时间)。

如果您想检查已安装的文件系统,我不知道如何进行,但我认为您应该创建另一个问题。

第四种方法

由于分区正在使用中,您不能强制执行 fsck /将进行修复。尝试从不同的分区或 live cd 运行检查。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13271.html,未经允许,请勿转载。