在重启期间使用 fsck 强制检查根文件系统
在非根文件系统上执行 fsck 相当简单。但是,对于根文件系统,您不能在挂载时执行 fsck。
本快速教程解释了如何强制对根文件系统进行文件系统检查。
根文件系统
在此示例中,/dev/sda1 分区是安装为 / 的根文件系统
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 63G 41G 19G 69% /
如果您运行 fsck 来检查您的根文件系统,您将收到以下错误消息,因为 /dev/sda1 已安装,并且您无法在已安装的文件系统上执行 fsck。
# fsck /dev/sda1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda1 is mounted.
e2fsck: Cannot continue, aborting.
如果您在非根文件系统上执行 fsck,则只需卸载该分区并执行 fsck。
但在这种情况下,我们喜欢在根文件系统上执行 fsck。那么,解决方案是什么?
另外,如果您是 fsck 的新手,请参阅:10 个 Linux Fsck 命令示例来检查和修复文件系统
重启前 Tune2fs 输出
在我们重新启动系统之前,让我们检查一下 fsck 上次对根文件系统进行检查是什么时候。
为此,请使用 tune2fs 命令,并使用 grep 进行“检查”,如下所示。
# tune2fs -l /dev/sda1 | grep -i check
Last checked: Mon Nov 24 12:39:44 2015
Check interval: 15552000 (6 months)
Next check after: Sun May 22 13:39:44 2016
正如我们从上面的输出中看到的:
- 上次检查:表示最后一次发生根文件系统检查。这发生在十一月。
- 检查内部:指示检查根文件系统的频率。在此示例中,在重新启动期间在此文件系统上执行 fsck 之前,它将再等待 6 个月。
- Next check after: 表示在您执行重新启动后,将检查文件系统的日期和时间。这只会在五月之后发生。
但是,就我们而言,我们不想等到五月。我们现在要执行根文件系统 fsck 检查。
创建 /forcefsck 文件以强制检查根文件系统
因此,要强制检查根文件系统,一种简单的方法是重新启动系统,并在系统启动时强制 fsck 在内核挂载根文件系统之前执行文件系统。
要在重启期间强制 fsck,首先在 / 下创建一个名为 forcefsck 的空文件,如下所示。
# cd /
# touch forcefsck
# ls -l /forcefsck
-rw-r--r--. 1 root root 0 Mar 9 20:15 /forcefsck
现在重新启动系统:
# reboot
重启后 Tune2fs 输出
如果您有控制台访问权限,您可以看到 fsck 将在重新启动期间对 / 文件系统执行检查。
检查后,fsck 会自动删除我们之前创建的 /forcefsck 文件。重新启动后,您将不再看到此文件。
# ls -l /forcefsck
ls: cannot access /forcefsck: No such file or directory
现在,如果您执行 tune2fs,您将看到“上次检查”字段已更新为当前时间戳。这确认 fsck 在重新引导期间执行了根文件系统检查。
# tune2fs -l /dev/sda1 | grep -i check
Last checked: Wed Mar 09 20:30:04 2016
Check interval: 15552000 (6 months)
Next check after: Mon Sep 05 21:30:04 2016
您还会看到“Next check after”的值相应地发生了变化。即我们重新启动系统后的 6 个月。
- 点赞
- 收藏
- 关注作者
评论(0)