重新启动时强制 fsck.ext4,但确实“强制”

Urk*_*koM 22 filesystem 10.04 ext4 fsck

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

我试过了:

touch /forcefsck
Run Code Online (Sandbox Code Playgroud)

还试过:

shutdown -rF now
Run Code Online (Sandbox Code Playgroud)

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

我也刚刚检查了我的 eeePC 上网本 Ubuntu 10.10,并且遇到了同样的问题!

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

澄清:我运行fsck.ext4 -n是因为它是一个挂载的文件系统,以检查是否有错误。这告诉我有。我认为在启动过程中每 30 次安装自动 fsck正是为了处理根文件系统中的错误。但在我的情况下它不会这样做。我可以使用 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
Run Code Online (Sandbox Code Playgroud)

小智 26

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

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

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

FSCKFIX=no
Run Code Online (Sandbox Code Playgroud)

这需要更改为以下内容:

FSCKFIX=yes
Run Code Online (Sandbox Code Playgroud)

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

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


小智 13

sudo touch /forcefsck
sudo reboot
Run Code Online (Sandbox Code Playgroud)

你有一个错字 - 你正在触摸 /forcefcsk。“c”和“s”被交换。fsck 是 FileSystemCheck 的缩写。


Nya*_*ope 10

从 e2fsck 手册页:

“请注意,通常在已挂载的文件系统上运行 e2fsck 是不安全的。唯一的例外是如果指定了 -n 选项,并且未指定 -c、-l 或 -L 选项。但是,即使它是安全的这样做,如果文件系统已挂载,e2fsck 打印的结果将无效。如果 e2fsck 询问您是否应该检查已挂载的文件系统,唯一正确的答案是“否”。只有真正知道什么的专家他们正在做的事情应该考虑以任何其他方式回答这个问题。”

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

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

e2fsck -cy /dev/sda5
Run Code Online (Sandbox Code Playgroud)

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

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