fsck

检测与修复文件系统


语法格式

fsck [-ACMNPRsTV] [-t fstype] [filesyses] [--] [fs-opts]

命令简介

fsck命令用于检测与修复指定的文件系统。命令参数filesyses可以是一个或多个文件系统分区的设备文件名(如/dev/sdb2)、文件系统安装点(如/home)、文件系统标号(如LABEL=root)或UUID(如UUID=8868abf6…)等。通常,fsck将尝试并发地处理位于不同物理磁盘上的文件系统,以减少检测所有文件系统所需的总体时间量。

如果命令行中未指定文件系统参数,也未指定“-A”选项,fsck的默认做法是依次检测/etc/fstab定义的文件系统。这种做法等价于指定了“-A”选项。

在Linux系统中,fsck命令实际上只是各种文件系统检测程序(fsck.fstype)的一个前端软件,在运行fsck命令时,根据“-t”选项指定的文件系统类型,fsck首先会检索/sbin目录,然后依次检索/etc/fs和/etc目录,最终检索PATH变量定义的命令检索路径,寻找文件系统特定的检测程序。

有关特定文件系统检测程序的说明,详见fsck.fstype命令手册页,有关ext2、ext3及ext4命令的说明,详见e2fsck命令。

命令选项

-s  串行检测模式。当以交互方式检测多个文件系统时,这个选项是首选。注意,e2fsck默认的运行模式是交互检测文件系统。若想采用非交互模式并发检测文件系统以自动校正错误,在运行e2fsck命令时必须指定“-p”(详见e2fsck命令)或“-a”选项,否则需要指定“-n”选项。

-t fstype  指定欲检测文件系统的类型。当指定了“-A”选项时,只有匹配fstype类型参数的文件系统才检测。多个文件系统类型(包括选项)可以并列,中间加逗号“,”分隔符。文件系统类型列表前面可以加一个“no”或“!”否定符号,表示仅检测未列举的文件系统类型。反之,如果文件系统类型列表前面未加否定符号,仅检测列举的文件系统类型。文件系统类型列表中还可以增加“opts=option”形式的文件系统特定的选项,表示除了文件系统类型之外,还要检测/etc/fstab文件中的安装选项字段是否包含指定的选项,仅当两者都匹配时才检测相应的文件系统。同样,如果选项前面存在否定符号,表示仅检测/etc/fstab文件中安装选项字段不包含指定选项的文件系统。例如,如果“opts=rw”出现在文件系统类型列表中,表示仅检测/etc/fstab文件中安装选项字段包含“rw”选项的文件系统。如果未指定文件系统类型,当前默认的文件系统类型是ext2。

-A  遍历/etc/fstab文件,依次检测其中列举的所有有效文件系统。除非指定了“-P”选项,首先检测“/”文件系统。然后按照fstab文件中pass字段(第6个字段)指定的顺序,依次检测每个文件系统。如果pass字段为0,跳过相应的文件系统。pass字段的值确定了文件系统检测的先后顺序,数值越小,检测的顺序越靠前。如果多个文件系统的pass字段具有相同的值,fsck将尝试并行检测相应的文件系统。在fstab文件中,通常把“/”文件系统的pass字段设为1,其他可能需要检测的文件系统均设为2,以便能够充分利用fsck的并行自动检测功能。这个选项主要用于系统引导过程的启动脚本,以便使用一个fsck命令即可检测所有需要检测的文件系统。

-C  显示文件系统检测的进度。注意,当前只有ext2/3/4系列的文件系统检测程序支持完成进度的显示。

-M  禁止检测已安装的文件系统,如果遇到已安装的文件系统,返回结束状态0。

-N  实际上并不执行,只是向用户展示一旦执行时fsck命令究竟会做什么。

-P  当指定了“-A”选项时,以并发方式检测“/”文件系统与其他文件系统。

-R  当使用“-A”选项检测所有的文件系统时,跳过采用读写方式安装的“/”文件系统。

-T  禁止在命令的启动过程中显示一行“fsck from …”的标题信息。

-V  输出详细的信息,包括执行的文件系统特定的命令等。

文件系统特定的选项

除了上述选项之外,运行fsck命令时还可以指定文件系统特定的选项(如前面提到的“-p”选项就是e2fsck命令支持的选项)。如果指定的选项并非fsck支持的选项,fsck将会把此类选项直接传递给文件系统特定的检测程序。这样的选项本身一定不能含有参数,因为fsck无法断定哪些选项应带参数,哪些选项没有参数。

此外,还可以在“--”之后明确指定需要传递给特定文件系统检测程序的选项,此时也可以指定需要传递的参数。

如果需要传递的选项与参数较多,最好直接运行文件系统特定的检测程序。

文件系统特定检测程序支持的选项没有统一的标准,但大多数文件系统特定的检测程序都支持下列 选项:

-a  自动地检测与修复文件系统,通常也不需要用户干预。注意,e2fsck只是考虑兼容性才支持“-a”选项,e2fsck真正支持的是具有相同功能的“-p”选项。

-n  通常,“-n”选项将会禁止文件系统特定的检测程序尝试修复检测期间遇到的问题,只需报告发现的问题即可。注意,并非所有文件系统特定的检测程序都支持“-n”选项,如fsck.minix。

-r  交互地修复文件系统(遇到问题时需要请求用户干预)。注意,这是e2fsck命令的默认处理方式,不需要明确指定,之所以支持这个选项主要是考虑兼容性。

-y  对于某些文件系统特定的检测程序(如e2fsck)而言,“-y”选项表示总是尝试自动修复检测期间发现的任何文件系统受损问题。如果是资深人员,也可以不用“-y”选项,而是根据具体情况,尝试自己确定应当如何响应fsck命令的修复建议。注意,并非所有的文件系统特定的检测程序都支持“-n”选项,如fsck.minix等。

应用实例

1. 交互检测与修复文件系统。根据fsck命令给出的建议,自行确定回答yes还是no。

# fsck -t ext4 /dev/sdb1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
data01 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 16 ref count is 2, should be 1.  Fix<y>? yes

Pass 5: Checking group summary information

data01: ***** FILE SYSTEM WAS MODIFIED *****
data01: 32/1221600 files (0.0% non-contiguous), 120720/4883708 blocks
#

2. 使用“-y”选项自动检测与修复文件系统,对于fsck命令提出的每项修复建议,总是使用“yes”给予 确认。

# fsck –t ext4 –y /dev/sdb1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
data01 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
/lost+found not found.  Create? yes

Pass 4: Checking reference counts
Pass 5: Checking group summary information

data01: ***** FILE SYSTEM WAS MODIFIED *****
data01: 32/1221600 files (0.0% non-contiguous), 120717/4883708 blocks
#

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z