e2fsck

检测Linux ext2/ext3/ext4文件系统


语法格式

e2fsck [-cDfnptvVy] [-b superblk] [-B blksize] device

命令简介

e2fsck命令主要用于检测与修复ext2/ext3/ext4系列的文件系统。e2fsck采用交互方式检测文件系统,当需要修复文件系统时,e2fsck会请求用户予以确认。对具有日志功能的ext3和ext4文件系统而言,如果系统没有正常关机,在重新提交日志中的交易之后,文件系统通常就会恢复正常。因此,对于具有日志功能的ext3和ext4文件系统,e2fsck通常只需提交日志中的交易之后即可退出,除非其超级块表示还需要做进一步的检测。

在上述语法格式中,device是文件系统分区的设备文件名,如/dev/sdc1等。在运行e2fsck命令时,通常只需提供文件系统分区的设备文件名即可,命令选项都是选用的,除非文件系统严重受损。

注意,在已安装的文件系统上运行e2fsck 命令通常是不安全的,除非已指定了“-n”选项而未指定“-c”、“-l”或“-L”选项。但即使这样做是安全的,在文件系统已安装的情况下,e2fsck命令的输出结果也是无效的。当检测的文件系统已经安装,e2fsck请示用户是否还要继续检测时,唯一正确的回答是“no”,只有真正知道自己正在做什么的专家才可考虑采用其他方式回答这个问题。

命令选项

-b superblk  使用指定的备份超级块(而非主超级块)修复文件系统。当文件系统的主超级块严重受损时,可以使用这个选项修复文件系统。备份超级块的位置依赖于具体的文件系统,以及文件系统的大小与逻辑数据块的大小等。在逻辑数据块为1KB的文件系统中,第一个备份超级块通常位于8193号数据块;在逻辑数据块为2KB的文件系统中,第一个备份超级块位于16 384号数据块;在逻辑数据块为4KB的文件系统中,第一个备份超级块位于32 768号数据块。为了确定其他备份超级块的位置,可以使用“mke2fs -n”命令查询其输出结果。注意,为了获取超级块的准确位置,在运行“mke2fs -n”命令时还需要使用“-b”选项指定文件系统数据块的大小。如果指定了备用超级块,e2fsck将会以读写方式打开文件系统,在完成文件系统的检测与修复之后适当地更新主超级块。

-B blksize  通常,e2fsck将会尝试采用各种不同的数据块规格检索和确定超级块的位置与大小。“-B”选项强制e2fsck按照指定的规格定位超级块。如果指定规格的超级块不存在,e2fsck将会输出一个错误信息,终止程序的执行。

-c  指定这个选项可以促使e2fsck调用badblocks程序,以只读方式扫描设备,检测其中是否存在坏块。如果发现任何坏块,将其加到坏块信息节点中,防止分配给文件或目录。如果指定这个选项两次,将采用非破坏性的读写测试方式,扫描坏块。

-D  优化文件系统中的目录。利用这个选项,e2fsck将会通过重建索引(如果文件系统支持目录索引)、排序与压缩目录等方式,尝试优化所有的目录。

-f  强制执行文件系统的检测,即使文件系统完好无损。

-n  以只读方式打开指定的文件系统,对于fsck的所有修复请求均以“no”作为响应,使fsck能够以非交互的方式自动检测指定的文件系统,报告(而不是修复)文件系统中存在的问题。注意,这个选项不能与“-p”或“-y”选项同时使用。

-p  并发地检测文件系统,自动修复简单的问题,无须用户干预。一旦检测到严重问题,需要提请用户做进一步的校正处理,fsck或e2fsck将输出一个错误描述信息,然后立即结束程序的执行。注意,这个选项通常主要用于系统引导脚本,不能与“-n”或“-y”选项同时使用。

-t  在完成文件系统的检测与修复之后,显示e2fsck在整个处理过程中的内存使用、时间花费及数据读写等分类统计信息。如果“-t”选项指定两次,在每个中间处理阶段结束后,e2fsck也会输出每个阶段的上述统计信息。

-v  显示e2fsck命令的详细处理过程与动作。

-V  显示e2fsck命令的版本信息,然后退出。

-y  对于fsck的所有修复请求,均以“yes”作为响应,使fsck或e2fsck能够以非交互的方式自动检测与修复指定的文件系统。注意,这个选项不能与“-n”或“-p”选项同时使用。

应用实例

1. 检测与修复ext3文件系统,校正文件大小有误的问题。

# e2fsck  /dev/sdb1
e2fsck 1.41.12 (17-May-2010)
/dev/sdb1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 14, i_blocks is 16, should be 8.  Fix<y>? yes

Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

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

2. 使用超级块备份修复超级块严重受损的ext3文件系统。

# e2fsck -b 32768 /dev/sdb2
e2fsck 1.41.12 (17-May-2010)
/dev/sdb2 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
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (31226, counted=31222).
Fix<y>? yes

Free blocks count wrong (4762980, counted=4762976).
Fix<y>? yes
Free inodes count wrong for group #0 (8133, counted=8130).
Fix<y>? yes

Free inodes count wrong (1221589, counted=1221586).
Fix<y>? yes

/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb2: 14/1221600 files (0.0% non-contiguous), 120736/4883712 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