| .\" -*- 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 E2FSCK 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@" |
| .SH NAME |
| e2fsck \- check a Linux ext2/ext3/ext4 file system |
| .SH SYNOPSIS |
| .B e2fsck |
| [ |
| .B \-pacnyrdfkvtDFV |
| ] |
| [ |
| .B \-b |
| .I superblock |
| ] |
| [ |
| .B \-B |
| .I blocksize |
| ] |
| [ |
| .BR \-l | \-L |
| .I bad_blocks_file |
| ] |
| [ |
| .B \-C |
| .I fd |
| ] |
| @JDEV@[ |
| @JDEV@.B \-j |
| @JDEV@.I external-journal |
| @JDEV@] |
| [ |
| .B \-E |
| .I extended_options |
| ] |
| [ |
| .B \-z |
| .I undo_file |
| ] |
| .I device |
| .SH DESCRIPTION |
| .B e2fsck |
| is used to check the ext2/ext3/ext4 family of file systems. |
| For ext3 and ext4 filesystems that use a journal, if the system has been |
| shut down uncleanly without any errors, normally, after replaying the |
| committed transactions in the journal, the file system should be |
| marked as clean. Hence, for filesystems that use journalling, |
| .B e2fsck |
| will normally replay the journal and exit, unless its superblock |
| indicates that further checking is required. |
| .PP |
| .I device |
| is a block device (e.g., |
| .IR /dev/sdc1 ) |
| or file containing the file system. |
| .PP |
| Note that in general it is not safe to run |
| .B e2fsck |
| on mounted filesystems. The only exception is if the |
| .B \-n |
| option is specified, and |
| .BR \-c , |
| .BR \-l , |
| or |
| .B -L |
| options are |
| .I not |
| specified. However, even if it is safe to do so, the results printed by |
| .B e2fsck |
| are not valid if the filesystem is mounted. If |
| .B e2fsck |
| asks whether or not you should check a filesystem which is mounted, |
| the only correct answer is ``no''. Only experts who really know what |
| they are doing should consider answering this question in any other way. |
| .PP |
| If |
| .B e2fsck |
| is run in interactive mode (meaning that none of |
| .BR \-y , |
| .BR \-n , |
| or |
| .BR \-p |
| are specified), the program will ask the user to fix each problem found in the |
| filesystem. A response of 'y' will fix the error; 'n' will leave the error |
| unfixed; and 'a' will fix the problem and all subsequent problems; pressing |
| Enter will proceed with the default response, which is printed before the |
| question mark. Pressing Control-C terminates e2fsck immediately. |
| .SH OPTIONS |
| .TP |
| .B \-a |
| This option does the same thing as the |
| .B \-p |
| option. It is provided for backwards compatibility only; it is |
| suggested that people use |
| .B \-p |
| option whenever possible. |
| .TP |
| .BI \-b " superblock" |
| Instead of using the normal superblock, use an alternative superblock |
| specified by |
| .IR superblock . |
| This option is normally used when the primary superblock has been |
| corrupted. The location of backup superblocks is dependent on the |
| filesystem's blocksize, the number of blocks per group, and features |
| such as |
| .BR sparse_super . |
| .IP |
| Additional backup superblocks can be determined by using the |
| .B mke2fs |
| program using the |
| .B \-n |
| option to print out where the superblocks exist, supposing |
| .B mke2fs |
| is supplied with arguments that are consistent with the filesystem's layout |
| (e.g. blocksize, blocks per group, |
| .BR sparse_super , |
| etc.). |
| .IP |
| If an alternative superblock is specified and |
| the filesystem is not opened read-only, e2fsck will make sure that the |
| primary superblock is updated appropriately upon completion of the |
| filesystem check. |
| .TP |
| .BI \-B " blocksize" |
| Normally, |
| .B e2fsck |
| will search for the superblock at various different |
| block sizes in an attempt to find the appropriate block size. |
| This search can be fooled in some cases. This option forces |
| .B e2fsck |
| to only try locating the superblock at a particular blocksize. |
| If the superblock is not found, |
| .B e2fsck |
| will terminate with a fatal error. |
| .TP |
| .B \-c |
| This option causes |
| .B e2fsck |
| to use |
| .BR badblocks (8) |
| 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. |
| .TP |
| .BI \-C " fd" |
| This option causes |
| .B e2fsck |
| to write 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 |
| .BR e2fsck . |
| If the file descriptor number is negative, then absolute value of |
| the file descriptor will be used, and the progress information will be |
| suppressed initially. It can later be enabled by sending the |
| .B e2fsck |
| process a SIGUSR1 signal. |
| If the file descriptor specified is 0, |
| .B e2fsck |
| will print a completion bar as it goes about its business. This requires |
| that e2fsck is running on a video console or terminal. |
| .TP |
| .B \-d |
| Print debugging output (useless unless you are debugging |
| .BR e2fsck ). |
| .TP |
| .B \-D |
| Optimize directories in filesystem. This option causes e2fsck to |
| try to optimize all directories, either by reindexing them if the |
| filesystem supports directory indexing, or by sorting and compressing |
| directories for smaller directories, or for filesystems using |
| traditional linear directories. |
| .IP |
| Even without the |
| .B \-D |
| option, |
| .B e2fsck |
| may sometimes optimize a few directories --- for example, if |
| directory indexing is enabled and a directory is not indexed and would |
| benefit from being indexed, or if the index structures are corrupted |
| and need to be rebuilt. The |
| .B \-D |
| option forces all directories in the filesystem to be optimized. This can |
| sometimes make them a little smaller and slightly faster to search, but |
| in practice, you should rarely need to use this option. |
| .IP |
| The |
| .B \-D |
| option will detect directory entries with duplicate names in a single |
| directory, which e2fsck normally does not enforce for performance reasons. |
| .TP |
| .BI \-E " extended_options" |
| Set e2fsck extended options. Extended options are comma |
| separated, and may take an argument using the equals ('=') sign. The |
| following options are supported: |
| .RS 1.2i |
| .TP |
| .BI ea_ver= extended_attribute_version |
| Set the version of the extended attribute blocks which |
| .B e2fsck |
| will require while checking the filesystem. The version number may |
| be 1 or 2. The default extended attribute version format is 2. |
| .TP |
| .BI journal_only |
| Only replay the journal if required, but do not perform any further checks |
| or repairs. |
| .TP |
| .BI fragcheck |
| During pass 1, print a detailed report of any discontiguous blocks for |
| files in the filesystem. |
| .TP |
| .BI discard |
| Attempt to discard free blocks and unused inode blocks after the full |
| filesystem check (discarding blocks is useful on solid state devices and sparse |
| / thin-provisioned storage). Note that discard is done in pass 5 AFTER the |
| filesystem has been fully checked and only if it does not contain recognizable |
| errors. However there might be cases where |
| .B e2fsck |
| does not fully recognize a problem and hence in this case this |
| option may prevent you from further manual data recovery. |
| .TP |
| .BI nodiscard |
| Do not attempt to discard free blocks and unused inode blocks. This option is |
| exactly the opposite of discard option. This is set as default. |
| .TP |
| .BI no_optimize_extents |
| Do not offer to optimize the extent tree by eliminating unnecessary |
| width or depth. This can also be enabled in the options section of |
| .BR /etc/e2fsck.conf . |
| .TP |
| .BI optimize_extents |
| Offer to optimize the extent tree by eliminating unnecessary |
| width or depth. This is the default unless otherwise specified in |
| .BR /etc/e2fsck.conf . |
| .TP |
| .BI inode_count_fullmap |
| Trade off using memory for speed when checking a file system with a |
| large number of hard-linked files. The amount of memory required is |
| proportional to the number of inodes in the file system. For large file |
| systems, this can be gigabytes of memory. (For example, a 40TB file system |
| with 2.8 billion inodes will consume an additional 5.7 GB memory if this |
| optimization is enabled.) This optimization can also be enabled in the |
| options section of |
| .BR /etc/e2fsck.conf . |
| .TP |
| .BI no_inode_count_fullmap |
| Disable the |
| .B inode_count_fullmap |
| optimization. This is the default unless otherwise specified in |
| .BR /etc/e2fsck.conf . |
| .TP |
| .BI readahead_kb |
| Use this many KiB of memory to pre-fetch metadata in the hopes of reducing |
| e2fsck runtime. By default, this is set to 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. Set this to zero |
| to disable readahead entirely. |
| .TP |
| .BI bmap2extent |
| Convert block-mapped files to extent-mapped files. |
| .TP |
| .BI fixes_only |
| Only fix damaged metadata; do not optimize htree directories or compress |
| extent trees. This option is incompatible with the -D and -E bmap2extent |
| options. |
| .TP |
| .BI unshare_blocks |
| If the filesystem has shared blocks, with the shared blocks read-only feature |
| enabled, then this will unshare all shared blocks and unset the read-only |
| feature bit. If there is not enough free space then the operation will fail. |
| If the filesystem does not have the read-only feature bit, but has shared |
| blocks anyway, then this option will have no effect. Note when using this |
| option, if there is no free space to clone blocks, there is no prompt to |
| delete files and instead the operation will fail. |
| .IP |
| Note that unshare_blocks implies the "-f" option to ensure that all passes |
| are run. Additionally, if "-n" is also specified, e2fsck will simulate trying |
| to allocate enough space to deduplicate. If this fails, the exit code will |
| be non-zero. |
| .RE |
| .TP |
| .B \-f |
| Force checking even if the file system seems clean. |
| .TP |
| .B \-F |
| Flush the filesystem device's buffer caches before beginning. Only |
| really useful for doing |
| .B e2fsck |
| time trials. |
| @JDEV@.TP |
| @JDEV@.BI \-j " external-journal" |
| @JDEV@Set the pathname where the external-journal for this filesystem can be |
| @JDEV@found. |
| .TP |
| .BI \-k |
| When combined with the |
| .B \-c |
| option, any existing bad blocks in the bad blocks list are preserved, |
| and any new bad blocks found by running |
| .BR badblocks (8) |
| will be added to the existing bad blocks list. |
| .TP |
| .BI \-l " filename" |
| Add the block numbers listed in the file specified by |
| .I filename |
| to the list of bad blocks. The format of this file is the same as the |
| one generated by the |
| .BR badblocks (8) |
| program. Note that the block numbers are based on the blocksize |
| of the filesystem. Hence, |
| .BR badblocks (8) |
| must be given the blocksize of the filesystem in order to obtain correct |
| results. As a result, it is much simpler and safer to use the |
| .B -c |
| option to |
| .BR e2fsck , |
| since it will assure that the correct parameters are passed to the |
| .B badblocks |
| program. |
| .TP |
| .BI \-L " filename" |
| Set the bad blocks list to be the list of blocks specified by |
| .IR filename . |
| (This option is the same as the |
| .B \-l |
| option, except the bad blocks list is cleared before the blocks listed |
| in the file are added to the bad blocks list.) |
| .TP |
| .B \-n |
| Open the filesystem read-only, and assume an answer of `no' to all |
| questions. Allows |
| .B e2fsck |
| to be used non-interactively. This option |
| may not be specified at the same time as the |
| .B \-p |
| or |
| .B \-y |
| options. |
| .TP |
| .B \-p |
| Automatically repair ("preen") the file system. This option will cause |
| .B e2fsck |
| to automatically |
| fix any filesystem problems that can be safely fixed without human |
| intervention. If |
| .B e2fsck |
| discovers a problem which may require the system administrator |
| to take additional corrective action, |
| .B e2fsck |
| will print a description of the problem and then exit with the value 4 |
| logically or'ed into the exit code. (See the \fBEXIT CODE\fR section.) |
| This option is normally used by the system's boot scripts. It may not |
| be specified at the same time as the |
| .B \-n |
| or |
| .B \-y |
| options. |
| .TP |
| .B \-r |
| This option does nothing at all; it is provided only for backwards |
| compatibility. |
| .TP |
| .B \-t |
| Print timing statistics for |
| .BR e2fsck . |
| If this option is used twice, additional timing statistics are printed |
| on a pass by pass basis. |
| .TP |
| .B \-v |
| Verbose mode. |
| .TP |
| .B \-V |
| Print version information and exit. |
| .TP |
| .B \-y |
| Assume an answer of `yes' to all questions; allows |
| .B e2fsck |
| to be used non-interactively. This option |
| may not be specified at the same time as the |
| .B \-n |
| or |
| .B \-p |
| options. |
| .TP |
| .BI \-z " undo_file" |
| Before overwriting a file system block, write the old contents of the block to |
| an undo file. This undo file can be used with e2undo(8) to restore the old |
| contents of the file system should something go wrong. If the empty string is |
| passed as the undo_file argument, the undo file will be written to a file named |
| e2fsck-\fIdevice\fR.e2undo in the directory specified via the |
| \fIE2FSPROGS_UNDO_DIR\fR environment variable. |
| |
| WARNING: The undo file cannot be used to recover from a power or system crash. |
| .SH EXIT CODE |
| The exit code returned by |
| .B e2fsck |
| is the sum of the following conditions: |
| .br |
| \ 0\ \-\ No errors |
| .br |
| \ 1\ \-\ File system errors corrected |
| .br |
| \ 2\ \-\ File system errors corrected, system should |
| .br |
| \ \ \ \ be rebooted |
| .br |
| \ 4\ \-\ File system errors left uncorrected |
| .br |
| \ 8\ \-\ Operational error |
| .br |
| \ 16\ \-\ Usage or syntax error |
| .br |
| \ 32\ \-\ E2fsck canceled by user request |
| .br |
| \ 128\ \-\ Shared library error |
| .br |
| .SH SIGNALS |
| The following signals have the following effect when sent to |
| .BR e2fsck . |
| .TP |
| .B SIGUSR1 |
| This signal causes |
| .B e2fsck |
| to start displaying a completion bar or emitting progress information. |
| (See discussion of the |
| .B \-C |
| option.) |
| .TP |
| .B SIGUSR2 |
| This signal causes |
| .B e2fsck |
| to stop displaying a completion bar or emitting progress information. |
| .SH REPORTING BUGS |
| Almost any piece of software will have bugs. If you manage to find a |
| filesystem which causes |
| .B e2fsck |
| to crash, or which |
| .B e2fsck |
| is unable to repair, please report it to the author. |
| .PP |
| Please include as much information as possible in your bug report. |
| Ideally, include a complete transcript of the |
| .B e2fsck |
| run, so I can see exactly what error messages are displayed. (Make sure |
| the messages printed by |
| .B e2fsck |
| are in English; if your system has been |
| configured so that |
| .BR e2fsck 's |
| messages have been translated into another language, please set the the |
| .B LC_ALL |
| environment variable to |
| .B C |
| so that the transcript of e2fsck's output will be useful to me.) |
| If you |
| have a writable filesystem where the transcript can be stored, the |
| .BR script (1) |
| program is a handy way to save the output of |
| .B e2fsck |
| to a file. |
| .PP |
| It is also useful to send the output of |
| .BR dumpe2fs (8). |
| If a specific inode or inodes seems to be giving |
| .B e2fsck |
| trouble, try running the |
| .BR debugfs (8) |
| command and send the output of the |
| .BR stat (1u) |
| command run on the relevant inode(s). If the inode is a directory, the |
| .B debugfs |
| .I dump |
| command will allow you to extract the contents of the directory inode, |
| which can sent to me after being first run through |
| .BR uuencode (1). |
| The most useful data you can send to help reproduce |
| the bug is a compressed raw image dump of the filesystem, generated using |
| .BR e2image (8). |
| See the |
| .BR e2image (8) |
| man page for more details. |
| .PP |
| Always include the full version string which |
| .B e2fsck |
| displays when it is run, so I know which version you are running. |
| .SH ENVIRONMENT |
| .TP |
| .BI E2FSCK_CONFIG |
| Determines the location of the configuration file (see |
| .BR e2fsck.conf (5)). |
| .SH AUTHOR |
| This version of |
| .B e2fsck |
| was written by Theodore Ts'o <tytso@mit.edu>. |
| .SH SEE ALSO |
| .BR e2fsck.conf (5), |
| .BR badblocks (8), |
| .BR dumpe2fs (8), |
| .BR debugfs (8), |
| .BR e2image (8), |
| .BR mke2fs (8), |
| .BR tune2fs (8) |