mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2024-12-18 14:30:44 +08:00
0b76d709f4
Add an extended option, -E no_optimize_extents, as well as a e2fsck.conf profile option, to disable extent tree optimization. Signed-off-by: Theodore Ts'o <tytso@mit.edu>
462 lines
15 KiB
Groff
462 lines
15 KiB
Groff
.\" -*- nroff -*-
|
|
.\" Copyright 2006 by Theodore Ts'o. All Rights Reserved.
|
|
.\" This file may be copied under the terms of the GNU Public License.
|
|
.\"
|
|
.TH e2fsck.conf 5 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
|
|
.SH NAME
|
|
e2fsck.conf \- Configuration file for e2fsck
|
|
.SH DESCRIPTION
|
|
.I e2fsck.conf
|
|
is the configuration file for
|
|
.BR e2fsck (8).
|
|
It controls the default behavior of
|
|
.BR e2fsck (8)
|
|
while it is checking ext2, ext3, or ext4 filesystems.
|
|
.PP
|
|
The
|
|
.I e2fsck.conf
|
|
file uses an INI-style format. Stanzas, or top-level sections, are
|
|
delimited by square braces: [ ]. Within each section, each line
|
|
defines a relation, which assigns tags to values, or to a subsection,
|
|
which contains further relations or subsections.
|
|
.\" Tags can be assigned multiple values
|
|
An example of the INI-style format used by this configuration file
|
|
follows below:
|
|
.P
|
|
[section1]
|
|
.br
|
|
tag1 = value_a
|
|
.br
|
|
tag1 = value_b
|
|
.br
|
|
tag2 = value_c
|
|
.P
|
|
[section 2]
|
|
.br
|
|
tag3 = {
|
|
.br
|
|
subtag1 = subtag_value_a
|
|
.br
|
|
subtag1 = subtag_value_b
|
|
.br
|
|
subtag2 = subtag_value_c
|
|
.br
|
|
}
|
|
.br
|
|
tag1 = value_d
|
|
.br
|
|
tag2 = value_e
|
|
.br
|
|
}
|
|
.P
|
|
Comments are delimited by a semicolon (';') or a hash ('#') character
|
|
at the beginning of the comment, and are terminated by the end of
|
|
line character.
|
|
.P
|
|
Tags and values must be quoted using double quotes if they contain
|
|
spaces. Within a quoted string, the standard backslash interpretations
|
|
apply: "\en" (for the newline character),
|
|
"\et" (for the tab character), "\eb" (for the backspace character),
|
|
and "\e\e" (for the backslash character).
|
|
.P
|
|
The following stanzas are used in the
|
|
.I e2fsck.conf
|
|
file. They will be described in more detail in future sections of this
|
|
document.
|
|
.TP
|
|
.I [options]
|
|
This stanza contains general configuration parameters for
|
|
.BR e2fsck 's
|
|
behavior.
|
|
.TP
|
|
.I [problems]
|
|
This stanza allows the administrator to reconfigure how e2fsck handles
|
|
various filesystem inconsistencies.
|
|
@TDB_MAN_COMMENT@.TP
|
|
@TDB_MAN_COMMENT@.I [scratch_files]
|
|
@TDB_MAN_COMMENT@This stanza controls when e2fsck will attempt to use
|
|
@TDB_MAN_COMMENT@scratch files to reduce the need for memory.
|
|
.SH THE [options] STANZA
|
|
The following relations are defined in the
|
|
.I [options]
|
|
stanza.
|
|
.TP
|
|
.I allow_cancellation
|
|
If this relation is set to a boolean value of true, then if the user
|
|
interrupts e2fsck using ^C, and the filesystem is not explicitly flagged
|
|
as containing errors, e2fsck will exit with an exit status of 0 instead
|
|
of 32. This setting defaults to false.
|
|
.TP
|
|
.I accept_time_fudge
|
|
Unfortunately, due to Windows' unfortunate design decision
|
|
to configure the hardware clock to tick localtime, instead
|
|
of the more proper and less error-prone UTC time, many
|
|
users end up in the situation where the system clock is
|
|
incorrectly set at the time when e2fsck is run.
|
|
.IP
|
|
Historically this was usually due to some distributions
|
|
having buggy init scripts and/or installers that didn't
|
|
correctly detect this case and take appropriate
|
|
countermeasures. Unfortunately, this is occasionally
|
|
true even today, usually due to a
|
|
buggy or misconfigured virtualization manager or the
|
|
installer not having access to a network time server
|
|
during the installation process. So by default, we allow
|
|
the superblock times to be fudged by up to 24 hours.
|
|
This can be disabled by setting
|
|
.I accept_time_fudge
|
|
to the
|
|
boolean value of false. This setting defaults to true.
|
|
.TP
|
|
.I broken_system_clock
|
|
The
|
|
.BR e2fsck (8)
|
|
program has some heuristics that assume that the system clock is
|
|
correct. In addition, many system programs make similar assumptions.
|
|
For example, the UUID library depends on time not going backwards in
|
|
order for it to be able to make its guarantees about issuing universally
|
|
unique ID's. Systems with broken system clocks, are well, broken.
|
|
However, broken system clocks, particularly in embedded systems, do
|
|
exist. E2fsck will attempt to use heuristics to determine if the time
|
|
can not be trusted; and to skip time-based checks if this is true. If
|
|
this boolean is set to true, then e2fsck will always assume that the
|
|
system clock can not be trusted.
|
|
.TP
|
|
.I buggy_init_scripts
|
|
This boolean relation is an alias for
|
|
.I accept_time_fudge
|
|
for backwards compatibility; it used to
|
|
be that the behavior defined by
|
|
.I accept_time_fudge
|
|
above defaulted to false, and
|
|
.I buggy_init_scripts
|
|
would enable superblock time field to be wrong by up to 24 hours. When
|
|
we changed the default, we also renamed this boolean relation to
|
|
.IR accept_time_fudge.
|
|
.TP
|
|
.I clear_test_fs_flag
|
|
This boolean relation controls whether or not
|
|
.BR e2fsck (8)
|
|
will offer to clear
|
|
the test_fs flag if the ext4 filesystem is available on the system. It
|
|
defaults to true.
|
|
.TP
|
|
.I defer_check_on_battery
|
|
This boolean relation controls whether or not the interval between
|
|
filesystem checks (either based on time or number of mounts) should
|
|
be doubled if the system is running on battery. This setting defaults to
|
|
true.
|
|
.TP
|
|
.I indexed_dir_slack_percentage
|
|
When
|
|
.BR e2fsck (8)
|
|
repacks a indexed directory, reserve the specified percentage of
|
|
empty space in each leaf nodes so that a few new entries can
|
|
be added to the directory without splitting leaf nodes, so that
|
|
the average fill ratio of directories can be maintained at a
|
|
higher, more efficient level. This relation defaults to 20
|
|
percent.
|
|
.TP
|
|
.I log_dir
|
|
If the
|
|
.I log_filename
|
|
relation contains a relative pathname, then the log file will be placed
|
|
in the directory named by the
|
|
.I log_dir
|
|
relation.
|
|
.TP
|
|
.I log_dir_fallback
|
|
This relation contains an alternate directory that will be used if the
|
|
directory specified by
|
|
.I log_dir
|
|
is not available or is not writeable.
|
|
.TP
|
|
.I log_dir_wait
|
|
If this boolean relation is true, them if the directories specified by
|
|
.I log_dir
|
|
or
|
|
.I log_dir_fallback
|
|
are not available or are not yet writeable, e2fsck will save the output
|
|
in a memory buffer, and a child process will periodically test to see if
|
|
the log directory has become available after the boot sequence has
|
|
mounted the requiste file system for reading/writing. This implements the
|
|
functionality provided by
|
|
.BR logsave (8)
|
|
for e2fsck log files.
|
|
.TP
|
|
.I log_filename
|
|
This relation specifies the file name where a copy of e2fsck's output
|
|
will be written. If certain problem reports are suppressed using the
|
|
.I max_count_problems
|
|
relation, (or on a per-problem basis using the
|
|
.I max_count
|
|
relation), the full set of problem reports will be written to the log
|
|
file. The filename may contain various percent-expressions (%D, %T, %N,
|
|
etc.) which will be expanded so that the file name for the log file can
|
|
include things like date, time, device name, and other run-time
|
|
parameters. See the
|
|
.B LOGGING
|
|
section for more details.
|
|
.TP
|
|
.I max_count_problems
|
|
This relation specifies the maximum number of problem reports of a
|
|
particular type will be printed to stdout before further problem reports
|
|
of that type are squelched. This can be useful if the console is slow
|
|
(i.e., connected to a serial port) and so a large amount of output could
|
|
end up delaying the boot process for a long time (potentially hours).
|
|
.TP
|
|
.I no_optimize_extents
|
|
Do not offer to optimize the extent tree by eliminating unnecessary
|
|
width or depth.
|
|
.TP
|
|
.I readahead_mem_pct
|
|
Use this percentage of memory to try to read in metadata blocks ahead of the
|
|
main e2fsck thread. This should reduce run times, depending on the speed of
|
|
the underlying storage and the amount of free memory. There is no default, but
|
|
see
|
|
.B readahead_kb
|
|
for more details.
|
|
.TP
|
|
.I readahead_kb
|
|
Use this amount of memory to read in metadata blocks ahead of the main checking
|
|
thread. Setting this value to zero disables readahead entirely. By default,
|
|
this is set the size of two block groups' inode tables (typically 4MiB on a
|
|
regular ext4 filesystem); if this amount is more than 1/50th of total physical
|
|
memory, readahead is disabled.
|
|
.TP
|
|
.I report_features
|
|
If this boolean relation is true, e2fsck will print the file system
|
|
features as part of its verbose reporting (i.e., if the
|
|
.B -v
|
|
option is specified)
|
|
.TP
|
|
.I report_time
|
|
If this boolean relation is true, e2fsck will run as if the options
|
|
.B -tt
|
|
are always specified. This will cause e2fsck to print timing statistics
|
|
on a pass by pass basis for full file system checks.
|
|
.TP
|
|
.I report_verbose
|
|
If this boolean relation is true, e2fsck will run as if the option
|
|
.B -v
|
|
is always specified. This will cause e2fsck to print some additional
|
|
information at the end of each full file system check.
|
|
.SH THE [problems] STANZA
|
|
Each tag in the
|
|
.I [problems]
|
|
stanza names a problem code specified with a leading "0x" followed by
|
|
six hex digits.
|
|
The value of the tag is a subsection where the relations in that
|
|
subsection override the default treatment of that particular problem
|
|
code.
|
|
.P
|
|
Note that inappropriate settings in this stanza may cause
|
|
.B e2fsck
|
|
to behave incorrectly, or even crash. Most system administrators should
|
|
not be making changes to this section without referring to source code.
|
|
.P
|
|
Within each problem code's subsection, the following tags may be used:
|
|
.TP
|
|
.I description
|
|
This relation allows the message which is printed when this filesystem
|
|
inconsistency is detected to be overridden.
|
|
.TP
|
|
.I preen_ok
|
|
This boolean relation overrides the default behavior controlling
|
|
whether this filesystem problem should be automatically fixed when
|
|
.B e2fsck
|
|
is running in preen mode.
|
|
.TP
|
|
.I max_count
|
|
This integer relation overrides the
|
|
.I max_count_problems
|
|
parameter (set in the options section) for this particular problem.
|
|
.TP
|
|
.I no_ok
|
|
This boolean relation overrides the default behavior determining
|
|
whether or not the filesystem will be marked as inconsistent if the user
|
|
declines to fix the reported problem.
|
|
.TP
|
|
.I no_default
|
|
This boolean relation overrides whether the default answer for this
|
|
problem (or question) should be "no".
|
|
.TP
|
|
.I preen_nomessage
|
|
This boolean relation overrides the default behavior controlling
|
|
whether or not the description for this filesystem problem should
|
|
be suppressed when
|
|
.B e2fsck
|
|
is running in preen mode.
|
|
.TP
|
|
.I no_nomsg
|
|
This boolean relation overrides the default behavior controlling
|
|
whether or not the description for this filesystem problem should
|
|
be suppressed when a problem forced not to be fixed, either because
|
|
.B e2fsck
|
|
is run with the
|
|
.B -n
|
|
option or because the
|
|
.I force_no
|
|
flag has been set for the problem.
|
|
.TP
|
|
.I force_no
|
|
This boolean option, if set to true, forces a problem to never be fixed.
|
|
That is, it will be as if the user problem responds 'no' to the question
|
|
of 'should this problem be fixed?'. The
|
|
.I force_no
|
|
option even overrides the
|
|
.B -y
|
|
option given on the command-line (just for the specific problem, of course).
|
|
.TP
|
|
.I not_a_fix
|
|
This boolean option, it set to true, marks the problem as
|
|
one where if the user gives permission to make the requested change,
|
|
it does not mean that the file system had a problem which has since
|
|
been fixed. This is used for requests to optimize the file system's
|
|
data structure, such as pruning an extent tree.
|
|
@TDB_MAN_COMMENT@.SH THE [scratch_files] STANZA
|
|
@TDB_MAN_COMMENT@The following relations are defined in the
|
|
@TDB_MAN_COMMENT@.I [scratch_files]
|
|
@TDB_MAN_COMMENT@stanza.
|
|
@TDB_MAN_COMMENT@.TP
|
|
@TDB_MAN_COMMENT@.I directory
|
|
@TDB_MAN_COMMENT@If the directory named by this relation exists and is
|
|
@TDB_MAN_COMMENT@writeable, then e2fsck will attempt to use this
|
|
@TDB_MAN_COMMENT@directory to store scratch files instead of using
|
|
@TDB_MAN_COMMENT@in-memory data structures.
|
|
@TDB_MAN_COMMENT@.TP
|
|
@TDB_MAN_COMMENT@.I numdirs_threshold
|
|
@TDB_MAN_COMMENT@If this relation is set, then in-memory data structures
|
|
@TDB_MAN_COMMENT@be used if the number of directories in the filesystem
|
|
@TDB_MAN_COMMENT@are fewer than amount specified.
|
|
@TDB_MAN_COMMENT@.TP
|
|
@TDB_MAN_COMMENT@.I dirinfo
|
|
@TDB_MAN_COMMENT@This relation controls whether or not the scratch file
|
|
@TDB_MAN_COMMENT@directory is used instead of an in-memory data
|
|
@TDB_MAN_COMMENT@structure for directory information. It defaults to
|
|
@TDB_MAN_COMMENT@true.
|
|
@TDB_MAN_COMMENT@.TP
|
|
@TDB_MAN_COMMENT@.I icount
|
|
@TDB_MAN_COMMENT@This relation controls whether or not the scratch file
|
|
@TDB_MAN_COMMENT@directory is used instead of an in-memory data
|
|
@TDB_MAN_COMMENT@structure when tracking inode counts. It defaults to
|
|
@TDB_MAN_COMMENT@true.
|
|
.SH LOGGING
|
|
E2fsck has the facility to save the information from an e2fsck run in a
|
|
directory so that a system administrator can review its output at their
|
|
leisure. This allows information captured during the automatic e2fsck
|
|
preen run, as well as a manually started e2fsck run, to be saved for
|
|
posterity. This facility is controlled by the
|
|
.IR log_filename ,
|
|
.IR log_dir ,
|
|
.IR log_dir_fallback ,
|
|
and
|
|
.I log_dir_wait
|
|
relations in the
|
|
.I [options]
|
|
stanza.
|
|
.PP
|
|
The filename in
|
|
.I log_filename
|
|
may contain the following percent-expressions that will be expanded as
|
|
follows.
|
|
.TP
|
|
.B %d
|
|
The current day of the month
|
|
.TP
|
|
.B %D
|
|
The current date; this is a equivalent of
|
|
.B %Y%m%d
|
|
.TP
|
|
.B %h
|
|
The hostname of the system.
|
|
.TP
|
|
.B %H
|
|
The current hour in 24-hour format (00..23)
|
|
.TP
|
|
.B %m
|
|
The current month as a two-digit number (01..12)
|
|
.TP
|
|
.B %M
|
|
The current minute (00..59)
|
|
.TP
|
|
.B %N
|
|
The name of the block device containing the file system, with any
|
|
directory pathname stripped off.
|
|
.TP
|
|
.B %p
|
|
The pid of the e2fsck process
|
|
.TP
|
|
.B %s
|
|
The current time expressed as the number of seconds since 1970-01-01
|
|
00:00:00 UTC
|
|
.TP
|
|
.B %S
|
|
The current second (00..59)
|
|
.TP
|
|
.B %T
|
|
The current time; this is equivalent of
|
|
.B %H%M%S
|
|
.TP
|
|
.B %u
|
|
The name of the user running e2fsck.
|
|
.TP
|
|
.B %U
|
|
This percent expression does not expand to anything, but it signals that
|
|
any following date or time expressions should be expressed in UTC time
|
|
instead of the local timzeone.
|
|
.TP
|
|
.B %y
|
|
The last two digits of the current year (00..99)
|
|
.TP
|
|
.B %Y
|
|
The current year (i.e., 2012).
|
|
.SH EXAMPLES
|
|
The following recipe will prevent e2fsck from aborting during the boot
|
|
process when a filesystem contains orphaned files. (Of course, this is
|
|
not always a good idea, since critical files that are needed for the
|
|
security of the system could potentially end up in lost+found, and
|
|
starting the system without first having a system administrator check
|
|
things out may be dangerous.)
|
|
.P
|
|
.br
|
|
[problems]
|
|
.br
|
|
0x040002 = {
|
|
.br
|
|
preen_ok = true
|
|
.br
|
|
description = "@u @i %i. "
|
|
.br
|
|
}
|
|
.P
|
|
The following recipe will cause an e2fsck logfile to be written to the
|
|
directory /var/log/e2fsck, with a filename that contains the device
|
|
name, the hostname of the system, the date, and time: e.g.,
|
|
"e2fsck-sda3.server.INFO.20120314-112142". If the directory containing
|
|
/var/log is located on the root file system
|
|
which is initially mounted read-only, then the output will be saved in
|
|
memory and written out once the root file system has been remounted
|
|
read/write. To avoid too much detail from being written to the serial
|
|
console (which could potentially slow down the boot sequence), only print
|
|
no more than 16 instances of each type of file system corruption.
|
|
.P
|
|
.br
|
|
[options]
|
|
.br
|
|
max_count_problems = 16
|
|
.br
|
|
log_dir = /var/log/e2fsck
|
|
.br
|
|
log_filename = e2fsck-%N.%h.INFO.%D-%T
|
|
.br
|
|
log_dir_wait = true
|
|
.P
|
|
.SH FILES
|
|
.TP
|
|
.I /etc/e2fsck.conf
|
|
The configuration file for
|
|
.BR e2fsck (8).
|
|
.SH SEE ALSO
|
|
.BR e2fsck (8)
|