如何在 Linux 上设置自动文件系统检查和修复
Linux 管理中最重要的任务之一是检查文件系统的完整性。 Linux 文件系统可能在各种情况下被损坏,例如系统崩溃、断电、磁盘断开连接、意外覆盖 i 节点等。因此,最好定期检查文件系统的完整性,以最大程度地降低文件系统损坏的风险。在检查和修复 Linux 文件系统时,fsck
是一个有用的工具。
在本教程中,我将描述如何使用 fsck
工具设置自动文件系统检查。
启动时触发自动文件系统检查
如果您想在启动时自动触发 fsck
,可以使用发行版特定的方法在启动时设置无人值守的 fschk
。
在 Debian、Ubuntu 或 Linux Mint 上,按如下方式编辑 /etc/default/rcS
。
$ sudo vi /etc/default/rcS
# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes
在 CentOS 上,使用以下内容编辑 /etc/sysconfig/autofsck
(如果不存在则创建它)。
$ sudo vi /etc/sysconfig/autofsck
AUTOFSCK_DEF_CHECK=yes
强制定期文件系统检查
如果文件系统很大,您可以强制定期检查文件系统,而不是每次启动时检查。为此,首先使用 tune2fs
命令找出文件系统配置。以下命令行显示文件系统相关参数的当前值。在此示例中,/dev/sda1
是文件系统超级块所在的分区。
$ sudo tune2fs -l /dev/sda1

从tune2fs输出中,您不仅可以看到文件系统状态(干净与否),还可以看到与文件系统检查相关的参数。 最大挂载计数
参数是触发文件系统检查之前的挂载次数。 检查间隔
参数显示两次文件系统检查之间的最长时间。在大多数 Linux 发行版上,默认情况下不会设置这些参数,这意味着不会进行常规文件系统检查。
要强制每 30 次挂载
进行文件系统检查(即,在文件系统挂载 30 次后触发文件系统检查),请运行以下命令。
$ sudo tune2fs -c 30 /dev/sda1
要强制每3个月
检查一次文件系统,请使用以下命令。
$ sudo tune2fs -i 3m /dev/sda1
现在验证新添加的文件系统检查条件是否设置正确。
$ sudo tune2fs -l /dev/sda1
. . .
Last mount time: n/a
Last write time: Fri Mar 14 22:29:24 2014
Mount count: 20
Maximum mount count: 30
Last checked: Mon Mar 3 20:55:08 2014
Check interval: 7776000 (3 months)
Next check after: Sun Jun 1 21:55:08 2014
在下次重新启动时强制执行一次性文件系统检查
如果您想在下次重新启动时触发一次性文件系统检查,可以使用此命令。
$ sudo touch /forcefsck
一旦您像上面一样在顶级目录 (/
) 中创建了一个名为 forcefsck
的空文件,它将在您下次启动时强制检查文件系统。成功启动后,/forcefsck
将自动被删除。
