让我们从讨论一些工具开始,这些工具可用于获取文件系统信息以及在系统重新引导后控制文件系统检查的配置。我们要讨论的工具是tune2fs
文件系统管理实用程序。使用tune2fs
我们可以导出与文件系统运行状况检查相关的一些重要信息。下列linux命令会告诉文件系统何时是最后一次/dev/sdX
已检查:
# tune2fs -l /dev/sdbX | grep Last\ c
Last checked: Sun Dec 13 09:14:22 2015
可以通过以下方式获取的其他有用信息tune2fs
命令涉及我们多少次/dev/sdX
文件系统已挂载:
# tune2fs -l /dev/sdbX | grep Mount
Mount count: 157
最后,在强制执行文件系统检查之前,允许通过多少次安装:
# tune2fs -l /dev/sdbX | grep Max
Maximum mount count: -1
根据以上输出,我们可以建立以下信息摘要。的/dev/sdbX
文件系统上次检查 Sun Dec 13 09:14:22 2015
。自上次检查以来,已挂载此文件系统157
下一次文件系统fsck检查之前的安装次数和最大装载量。在上述情况下,值-1
表示已禁用fsck。
现在,我们已经了解了一些tune2fs
基础知识,让我们讨论一下PASS系统配置选项/etc/fstab
包含启动时所有可挂载分区及其相关挂载选项的文件。
# blkid | grep sdb1
/dev/sdb1: UUID="c6e22f63-e63c-40ed-bf9b-bb4a10f2db66" TYPE="ext2"
# grep c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /etc/fstab
UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt ext2 errors=remount-ro 0 0
我们已经使用blkid
命令检索给定分区的UUID,然后使用检索到的分区UUID获取与以下内容有关的相关信息:/dev/sdb1
从/etc/fstbab
。 fsck使用最后一个列(即列6)(也称为fsck PASS列)来确定fsck是否应在挂载文件系统之前检查文件系统以及给定分区的顺序/etc/fstab
应该检查一下。 fstab PASS列的可能条目为0,1和2。
- 0-禁用,即不检查文件系统
- 1-具有此PASS值的分区具有更高的优先级,请首先检查。此值通常设置为root
/
划分 - 2-具有此PASS值的分区将最后检查
fstab PASS值,上次检查的值和安装数之间的关系如下:
在系统引导过程中,检查的第一个值是fstab PASS值。如果此值为0,则不检查其他值(豁免。请参见下面的“对根分区强制使用fsck”),然后fsck
将不执行文件系统检查。如果在/etc/fstab
是0以外的任何值,即1或2,然后检查最大安装次数和总安装次数。如果最大安装数的值大于或等于安装总数的值,则将执行fsck的文件系统检查。几个例子:
FSCK DISABLED
fstab PASS: 1
Maximum mount count: -1
Mount count: 157
----
FSCK DISABLED
fstab PASS: 0
Maximum mount count: -1
Mount count: 157
----
FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count: 1
Mount count: 157
----
FSCK DISABLED
fstab PASS: 0
Maximum mount count: 1
Mount count: 1
----
FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count: 1
Mount count: 1
----
NO FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count: 200
Mount count: 157
强制fsck进行根分区
在根分区上强制执行fsck文件系统检查的最简单方法。/dev/sda1
是创建一个名为forcefsck
在分区的根目录中。
# touch /forcefsck
此空文件将临时覆盖任何其他设置并强制执行fsck
在下次系统重新引导时检查文件系统。检查文件系统后,forcefsck
文件将被删除,因此下次重新启动文件系统时将不再进行检查。为了启用更永久的解决方案并在每次重新引导时强制检查文件系统,我们需要操纵文件系统的“最大安装计数”参数。下列linux命令将确保该文件系统/dev/sdb1
每次重新引导Linux系统时都会检查该选项。请注意,为此,fsck的PASS值/etc/fstab
如上所述,必须将其设置为正整数。
# tune2fs -c 1 /dev/sdb1
或者,我们可以在每10次重启后设置fsck:
# tune2fs -c 10 /dev/sdb1
对所有其他非根分区强制使用fsck
与根分区相反,创建空forcefsck
文件将不会在重启时触发分区检查。强制在所有其他非根分区上使用fsck的唯一方法是在以下范围内操纵文件系统的“最大安装计数”参数和PASS值/etc/fstab
配置文件。要强制在非根分区上检查文件系统,请在以下位置更改fsck的PASS值/etc/fstab
值2。例如:
UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt ext2 errors=remount-ro 0 2
然后将最大安装文件系统参数更改为正整数,具体取决于您希望允许不检查而挂载指定文件系统的次数。每次重新启动时强制fsck:
# tune2fs -c 1 /dev/sdb1
或者,我们可以将fsck设置为每5次重启后检查一次文件系统:
# tune2fs -c 5 /dev/sdb1
要禁用fsck运行:
# tune2fs -c 0 /dev/sdb1
OR
# tune2fs -c -1 /dev/sdb1
它将文件系统的“最大安装数”参数设置为-1