我的一台 Ubuntu 10.04 服务器出了问题。运行时,fsck.ext4 -n /dev/sda5
它告诉我空闲 inode 计数、空闲块计数等有错误。
我努力了:
touch /forcefsck
还尝试过:
shutdown -rF now
重启后,我仍然看到错误。
我也刚刚检查了我的 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
答案1
我知道这是一个非常老的话题,但是我最近必须解决这个问题,所以我想发布如何强制操作系统修复启动期间使用 fsck 发现的问题(针对 12.04)。
您确实需要运行该命令sudo touch /forcefsck
。这将导致它在下次启动时执行 fsck。您可以在 /var/log/boot.log 中看到 fsck 的结果。
但是,不能保证 fsck 会修复它发现的任何问题。为此,您需要编辑文件 /etc/default/rcS。该文件末尾有一行:
FSCKFIX=no
需要将其更改为以下内容:
FSCKFIX=yes
这与使用 -y 选项运行 fsck 具有相同的效果,它将强制实施所有可能的修复,并且不会要求用户交互。
这将允许您按照 OP 要求的方式运行 fsck,而不必借助于从活动磁盘启动,这并不总是可行的,特别是当您在远程系统上时。
答案2
sudo touch /forcefsck
sudo reboot
您输入错误 - 您输入的是 /forcefcsk。“c”和“s”互换了。fsck 是 FileSystemChecK 的缩写。
答案3
来自 e2fsck 手册页:
“请注意,一般来说,在已挂载的文件系统上运行 e2fsck 是不安全的。唯一的例外是如果指定了 -n 选项,而未指定 -c、-l 或 -L 选项。但是,即使这样做是安全的,如果文件系统已挂载,e2fsck 打印的结果也是无效的。如果 e2fsck 询问您是否应该检查已挂载的文件系统,唯一正确的答案是“否”。只有真正知道自己在做什么的专家才会考虑以其他方式回答这个问题。”
因此,如果您使用 fsck 检查已挂载的文件系统,即使使用 -n 选项,结果也可能完全无效。不要检查已挂载的文件系统。使用 Live-CD/Live-USB。
如果您在挂载文件系统时不检查它,我不明白为什么您需要使用touch /forcefsck
它,您可以卸载它并修复它。但如果是这种情况,并且在修复后您的 FS 仍然有错误,那么您可以考虑使用:
e2fsck -cy /dev/sda5
这将修复您可能遇到的称为坏块的硬盘相关问题(这将需要很长时间)。
如果您想检查已挂载的文件系统,我不知道如何进行,但我认为您应该提出另一个问题。
答案4
您可以通过以下方式自动完成修订:
Tune2fs -c 5 -i 10 / dev / sda1
-c
是运行前的最大挂载次数fsck
,-i
是运行前的最大天数fsck
。
在这种情况下,将每 5 次或每 10 天进行一次(以先到者为准)。
我有两台计算机,一台安装有 Linux SuSE 13.2,另一台安装有 Linux Mint 18.0,两台计算机都运行正常。