.\" -*- nroff -*-
.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\"
.TH FSCK 8 "February 2009" "Linux" "MAINTENANCE COMMANDS"
.SH NAME
fsck \- check and repair a Linux file system
.SH SYNOPSIS
.B fsck
.RB [ \-sAVRTMNP ]
.RB [ \-C
.RI [ fd ]]
.RB [ \-t
.IR fstype ]
.RI [ filesys ...]
.RB [ \-\- ]
.RI [ fs-specific-options ]
.SH DESCRIPTION
.B fsck
is used to check and optionally repair one or more Linux file systems.
.I filesys
can be a device name (e.g.
.IR /dev/hdc1 ", " /dev/sdb2 ),
a mount point (e.g.
.IR / ", " /usr ", " /home ),
or an ext2 label or UUID specifier (e.g.
UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd or LABEL=root).
Normally, the
.B fsck
program will try to handle filesystems on different physical disk drives
in parallel to reduce the total amount of time needed to check all of the
filesystems.
.PP
If no filesystems are specified on the command line, and the
.B \-A
option is not specified,
.B fsck
will default to checking filesystems in
.B /etc/fstab
serially.  This is equivalent to the
.B \-As
options.
.PP
The exit code returned by
.B fsck
is the sum of the following conditions:
.br
\	0\	\-\ No errors
.br
\	1\	\-\ File system errors corrected
.br
\	2\	\-\ System should be rebooted
.br
\	4\	\-\ File system errors left uncorrected
.br
\	8\	\-\ Operational error
.br
\	16\	\-\ Usage or syntax error
.br
\	32\	\-\ Fsck canceled by user request
.br
\	128\	\-\ Shared library error
.br
The exit code returned when multiple file systems are checked
is the bit-wise OR of the exit codes for each
file system that is checked.
.PP
In actuality,
.B fsck
is simply a front-end for the various file system checkers
(\fBfsck\fR.\fIfstype\fR) available under Linux.  The file
system-specific checker is searched for in
.I /sbin
first, then in
.I /etc/fs
and
.IR /etc ,
and finally in the directories listed in the PATH environment
variable.  Please see the file system-specific checker manual pages for
further details.
.SH OPTIONS
.TP
.B \-s
Serialize
.B fsck
operations.  This is a good idea if you are checking multiple
filesystems and the checkers are in an interactive mode.  (Note:
.BR e2fsck (8)
runs in an interactive mode by default.  To make
.BR e2fsck (8)
run in a non-interactive mode, you must either specify the
.B \-p
or
.B \-a
option, if you wish for errors to be corrected automatically, or the
.B \-n
option if you do not.)
.TP
.BI \-t " fslist"
Specifies the type(s) of file system to be checked.  When the
.B \-A
flag is specified, only filesystems that match
.I fslist
are checked.  The
.I fslist
parameter is a comma-separated list of filesystems and options
specifiers.  All of the filesystems in this comma-separated list may be
prefixed by a negation operator
.RB ' no '
or
.RB ' ! ',
which requests that only those filesystems not listed in
.I fslist
will be checked.  If all of the filesystems in
.I fslist
are not prefixed by a negation operator, then only those filesystems
listed
in
.I fslist
will be checked.
.sp
Options specifiers may be included in the comma-separated
.IR fslist .
They must have the format
.BI opts= fs-option\fR.
If an options specifier is present, then only filesystems which contain
.I fs-option
in their mount options field of
.B /etc/fstab
will be checked.  If the options specifier is prefixed by a negation
operator, then only
those filesystems that do not have
.I fs-option
in their mount options field of
.B /etc/fstab
will be checked.
.sp
For example, if
.B opts=ro
appears in
.IR fslist ,
then only filesystems listed in
.B /etc/fstab
with the
.B ro
option will be checked.
.sp
For compatibility with Mandrake distributions whose boot scripts
depend upon an unauthorized UI change to the
.B fsck
program, if a filesystem type of
.B loop
is found in
.IR fslist ,
it is treated as if
.B opts=loop
were specified as an argument to the
.B \-t
option.
.sp
Normally, the filesystem type is deduced by searching for
.I filesys
in the
.I /etc/fstab
file and using the corresponding entry.
If the type can not be deduced, and there is only a single filesystem
given as an argument to the
.B \-t
option,
.B fsck
will use the specified filesystem type.  If this type is not
available, then the default file system type (currently ext2) is used.
.TP
.B \-A
Walk through the
.I /etc/fstab
file and try to check all file systems in one run.  This option is
typically used from the
.I /etc/rc
system initialization file, instead of multiple commands for checking
a single file system.
.sp
The root filesystem will be checked first unless the
.B \-P
option is specified (see below).  After that,
filesystems will be checked in the order specified by the
.I fs_passno
(the sixth) field in the
.I /etc/fstab
file.
Filesystems with a
.I fs_passno
value of 0 are skipped and are not checked at all.  Filesystems with a
.I fs_passno
value of greater than zero will be checked in order,
with filesystems with the lowest
.I fs_passno
number being checked first.
If there are multiple filesystems with the same pass number,
fsck will attempt to check them in parallel, although it will avoid running
multiple filesystem checks on the same physical disk.
.sp
Hence, a very common configuration in
.I /etc/fstab
files is to set the root filesystem to have a
.I fs_passno
value of 1
and to set all other filesystems to have a
.I fs_passno
value of 2.  This will allow
.B fsck
to automatically run filesystem checkers in parallel if it is advantageous
to do so.  System administrators might choose
not to use this configuration if they need to avoid multiple filesystem
checks running in parallel for some reason --- for example, if the
machine in question is short on memory so that
excessive paging is a concern.
.sp
.B fsck
normally does not check whether the device actually exists before
calling a file system specific checker. Therefore non-existing
devices may cause the system to enter file system repair mode during
boot if the filesystem specific checker returns a fatal error. The
.B /etc/fstab
mount option
.B nofail
may be used to have
.B fsck
skip non-existing devices.
.B fsck
also skips non-existing devices that have the special file system type
.B auto
.
.TP
.B \-C\fR [ \fI "fd" \fR ]
Display completion/progress bars for those filesystem checkers (currently
only for ext2 and ext3) which support them.   Fsck will manage the
filesystem checkers so that only one of them will display
a progress bar at a time.  GUI front-ends may specify a file descriptor
.IR fd ,
in which case the progress bar information will be sent to that file descriptor.
.TP
.B \-M
Do not check mounted filesystems and return an exit code of 0
for mounted filesystems.
.TP
.B \-N
Don't execute, just show what would be done.
.TP
.B \-P
When the
.B \-A
flag is set, check the root filesystem in parallel with the other filesystems.
This is not the safest thing in the world to do,
since if the root filesystem is in doubt things like the
.BR e2fsck (8)
executable might be corrupted!  This option is mainly provided
for those sysadmins who don't want to repartition the root
filesystem to be small and compact (which is really the right solution).
.TP
.B \-R
When checking all file systems with the
.B \-A
flag, skip the root file system (in case it's already mounted read-write).
.TP
.B \-T
Don't show the title on startup.
.TP
.B \-V
Produce verbose output, including all file system-specific commands
that are executed.
.TP
.B fs-specific-options
Options which are not understood by
.B fsck
are passed to the filesystem-specific checker.  These arguments
.B must
not take arguments, as there is no
way for
.B fsck
to be able to properly guess which arguments take options and which
don't.
.IP
Options and arguments which follow the
.B \-\-
are treated as file system-specific options to be passed to the
file system-specific checker.
.IP
Please note that fsck is not
designed to pass arbitrarily complicated options to filesystem-specific
checkers.  If you're doing something complicated, please just
execute the filesystem-specific checker directly.  If you pass
.B fsck
some horribly complicated option and arguments, and it doesn't do
what you expect,
.B don't bother reporting it as a bug.
You're almost certainly doing something that you shouldn't be doing
with
.BR fsck.
.PP
Options to different filesystem-specific fsck's are not standardized.
If in doubt, please consult the man pages of the filesystem-specific
checker.  Although not guaranteed, the following options are supported
by most file system checkers:
.TP
.B \-a
Automatically repair the file system without any questions (use
this option with caution).  Note that
.BR e2fsck (8)
supports
.B \-a
for backwards compatibility only.  This option is mapped to
.BR e2fsck 's
.B \-p
option which is safe to use, unlike the
.B \-a
option that some file system checkers support.
.TP
.B \-n
For some filesystem-specific checkers, the
.B \-n
option will cause the fs-specific fsck to avoid attempting to repair any
problems, but simply report such problems to stdout.  This is however
not true for all filesystem-specific checkers.  In particular,
.BR fsck.reiserfs (8)
will not report any corruption if given this option.
.BR fsck.minix (8)
does not support the
.B \-n
option at all.
.TP
.B \-r
Interactively repair the filesystem (ask for confirmations).  Note: It
is generally a bad idea to use this option if multiple fsck's are being
run in parallel.  Also note that this is
.BR e2fsck 's
default behavior; it supports this option for backwards compatibility
reasons only.
.TP
.B \-y
For some filesystem-specific checkers, the
.B \-y
option will cause the fs-specific fsck to always attempt to fix any
detected filesystem corruption automatically.  Sometimes an expert may
be able to do better driving the fsck manually.  Note that
.B not
all filesystem-specific checkers implement this option.  In particular
.BR fsck.minix (8)
and
.BR fsck.cramfs (8)
does not support the
.B -y
option as of this writing.
.SH AUTHOR
Theodore Ts'o (tytso@mit.edu)
.SH AVAILABILITY
The blkid command is part of the util-linux-ng package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
.SH FILES
.IR /etc/fstab .
.SH ENVIRONMENT VARIABLES
The
.B fsck
program's behavior is affected by the following environment variables:
.TP
.B FSCK_FORCE_ALL_PARALLEL
If this environment variable is set,
.B fsck
will attempt to run all of the specified filesystems in parallel,
regardless of whether the filesystems appear to be on the same
device.  (This is useful for RAID systems or high-end storage systems
such as those sold by companies such as IBM or EMC.)
.TP
.B FSCK_MAX_INST
This environment variable will limit the maximum number of file system
checkers that can be running at one time.  This allows configurations
which have a large number of disks to avoid
.B fsck
starting too many file system checkers at once, which might overload
CPU and memory resources available on the system.  If this value is
zero, then an unlimited number of processes can be spawned.  This is
currently the default, but future versions of
.B fsck
may attempt to automatically determine how many file system checks can
be run based on gathering accounting data from the operating system.
.TP
.B PATH
The
.B PATH
environment variable is used to find file system checkers.  A set of
system directories are searched first:
.BR /sbin ,
.BR /sbin/fs.d ,
.BR  /sbin/fs ,
.BR /etc/fs ,
and
.BR /etc .
Then the set of directories found in the
.B PATH
environment are searched.
.TP
.B FSTAB_FILE
This environment variable allows the system administrator
to override the standard location of the
.B /etc/fstab
file.  It is also useful for developers who are testing
.BR fsck .
.SH SEE ALSO
.BR fstab (5),
.BR mkfs (8),
.BR fsck.ext2 (8)
or
.BR fsck.ext3 (8)
or
.BR e2fsck (8),
.BR cramfsck (8),
.BR fsck.minix (8),
.BR fsck.msdos (8),
.BR fsck.jfs (8),
.BR fsck.nfs (8),
.BR fsck.vfat (8),
.BR fsck.xfs (8),
.BR fsck.xiafs (8),
.BR reiserfsck (8).
