EXPLANATION
What is e2fsck?
Check ext2, ext3, or ext4 filesystems.
5 e2fsck Examples
1. Check a partition
You should be root to execute this command. If not, you’ll get the following error message.
$ /sbin/e2fsck /dev/sdb1
e2fsck 1.35 (28-Feb-2004)
/sbin/e2fsck: Permission denied while trying to open /dev/sdb1
You must have r/w access to the filesystem or be root
Also, the filesystem should not be mounted when you are performing
the check. If it is mounted, you’ll get the following error message.
# e2fsck /dev/sdb1
e2fsck 1.41.12 (17-May-2010)
e2fsck: Device or resource busy while trying to open /dev/sdb1
Filesystem mounted or opened exclusively by another program?
So, login to root, unmount the filesystem, and perform the check as shown below.
$ su -
# umount /home
# e2fsck /dev/sdb1
e2fsck 1.35 (28-Feb-2004)
/dev/sdb1: clean, 250/73187328 files, 26838739/146374231 blocks
2. Automatic repair using e2fsck
Using -p option, you can instruct e2fsck to check and automtically repair all issues without prompting you for confirmation.
# e2fsck -p /dev/sdb1
You can also use option -y, which will use “yes” answer to all the questions that are asked by the e2fsck command.
# e2fsck -y /dev/sdb1
3. Check only (no change) using e2fsck
Using -n option, you can instruct e2fsck to perform check only. i.e
this will not make any changes to the filesystem, it will only check
# e2fsck -n /dev/sdb1
4. Force the filesystem check
When the filesystem is clean, it will not perform any checks, it will return the following message
# e2fsck /dev/sdb1
e2fsck 1.35 (28-Feb-2004)
/dev/sdb1: clean, 250/73187328 files, 26838739/146374231 blocks
However, if you want to force the filesystem check, even when it is clean, use the -f option as shown below.
# e2fsck -f /dev/sdb1
e2fsck 1.35 (28-Feb-2004)
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
/dev/sdb1: 250/73187328 files (6.0% non-contiguous), 26838739/146374231 blocks
5. Display a progress bar during e2fsck check
Using -C option, you can specify a file descriptor, where e2fsck will
send the output, which is useful when you are doing e2fsck from a shell
script.
If you specify “-C 0”, it will display a progress bar while e2fsck is
doing the check, which is useful, as you can see that it is doing
something.
# e2fsck -f -C 0 /dev/sdb1
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
/dev/sdb1: |===== - 9.5%
Syntax and Options
Syntax:
e2fsck [ -pacnyrdfkvtDFV ] [ -b superblock ] [ -B blocksize ] [ -l|-L bad_blocks_file ] [ -C fd ] [ -j external-journal ] [ -E extended_options ] device
Explain the option of the e2fsck command. e.g. of chmod shown below.
Short Option |
Long Option |
Option Description |
-a |
|
Same as option -p. It is only for backward compatibility. |
-b |
|
Using this option, you can specify an alternative superblock. Use
this when the main superblock is corrupted. For filesystems with 1k
blocksizes, a backup superblock can be found at block 8193; for
filesystems with 2k blocksizes, at block 16384; and for 4k block‐sizes,
at block 32768. Use mke2fs -n option to see additional backup
superblocks. The mke2fs -b option, which specifies blocksize of the
filesystem must be specified in order for the superblock locations that
are printed out to be accurate |
-B |
/td> |
Using this option it will search for the superblock using different
block sizes. This option forces e2fsck to use only the specified
superblock blocksize. If the superblock is not found, e2fsck will
terminate with a fatal error. |
-c |
|
Using this option it use badblocks program to do a read-only scan of
the device in order to find any bad blocks. If any bad blocks are
found, they are added to the bad block inode to prevent them from being
allocated to a file or directory. If this option is specified twice,
then the bad block scan will be done using a non-destructive read-write
test. |
-C |
|
Using this option it writes completion information to the specified
file descriptor so that the progress of the filesystem check can be
monitored. This option is typically used by programs which are running
e2fsck. |
-d |
|
Print debugging output. Not useful except to debug e2fsck command itself. |
-D |
|
Use this option to optimize directories in filesystem. Does this by
reindexing them, or by sorting and compressing directories for smaller
directories, or for filesystems using traditional linear directories. |
-E |
|
Using this option you can set e2fsck extended options. These are
comma separated, and may take an argument using the equals (‘=’) sign.
It supports ea_ver=extended_attribute_version and fragcheck |
-f |
|
Force checking even if the file system seems clean |
-F |
|
Flush the filesystem device’s buffer caches before beginning. Only really useful for doing e2fsck time trials. |
-j |
|
Set the pathname where the external-journal for this filesystem can be found. |
-k |
|
When combined with the -c option, any existing bad blocks in the
bad blocks list are preserved, and any new bad blocks found by running
badblocks(8) will be added to the existing bad blocks list. |
-l |
|
Add the block numbers listed in the file specified by filename to the list of bad blocks. |
-L |
|
Using this option set the bad blocks list to be the list of blocks
specified by filename. (This option is the same as the -l option, except
the bad blocks list is cleared before the blocks listed in the file are
added to the bad blocks list.) |
-n |
|
Using this option open the filesystem read-only, and assume an
answer of `no’ to all questions. Allows e2fsck to be used
non-interactively. This option may not be specified at the same time as
the -p or -y options. |
-p |
|
Automatically repair (“preen”) the file system. This option
will cause e2fsck to automatically fix any filesystem problems that can
be safely fixed without human intervention. If e2fsck discovers a
problem which may require the system administrator to take additional
corrective action, e2fsck will print a description of the problem and
then exit with the value 4 logically or’ed into the exit code. |
-r |
|
This option does nothing at all; it is provided only for backwards compatibility. |
-t |
|
Print timing statistics for e2fsck. If this option is used twice,
additional timing statistics are printed on a pass by pass basis. |
-v |
|
Verbose mode. |
-V |
|
Print version information and exit. |
-y |
|
Assume an answer of `yes’ to all questions; allows e2fsck to be
used non-interactively. Don’t use it when you are using -n or -p
options. |
The exit code returned by e2fsck is the sum of the following conditions:
- 0 – No errors
- 1 – File system errors corrected
- 2 – File system errors corrected, system should
- be rebooted
- 4 – File system errors left uncorrected
- 8 – Operational error
- 16 – Usage or syntax error
- 32 – E2fsck canceled by user request
- 128 – Shared library error
The simplest way to force fsck filesystem check on a root partition eg. /dev/sda1
is to create an empty file called forcefsck
in the partition's root directory.
# touch /forcefsck
This empty file will temporarily override any other settings and force
fsck
to check the filesystem on the next system reboot. Once the filesystem is checked the
forcefsck
file will be removed thus next time you reboot your filesystem will NOT
be checked again. To enable more permanent solution and force
filesystem check on every reboot we need to manipulate filesystem's
"Maximum mount count" parameter. The following
linux command will ensure that filesystem
/dev/sdb1
is checked every time your Linux system reboots. Please note that for this to happen the fsck's PASS value in
/etc/fstab
must be set to a positive integer as discussed above.
# tune2fs -c 1 /dev/sdb1
alternatively we can set fsck after every 10 reboots:
# tune2fs -c 10 /dev/sdb1