.\" -*- 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 MKE2FS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
mke2fs \- create an ext2/ext3/ext4 filesystem
.SH SYNOPSIS
.B mke2fs
[
.B \-c
|
.B \-l
.I filename
]
[
.B \-b
.I block-size
]
[
.B \-C
.I cluster-size
]
[
.B \-d
.I root-directory
]
[
.B \-D
]
[
.B \-g
.I blocks-per-group
]
[
.B \-G
.I number-of-groups
]
[
.B \-i
.I bytes-per-inode
]
[
.B \-I
.I inode-size
]
[
.B \-j
]
[
.B \-J
.I journal-options
]
[
.B \-N
.I number-of-inodes
]
[
.B \-n
]
[
.B \-m
.I reserved-blocks-percentage
]
[
.B \-o
.I creator-os
]
[
.B \-O
[^]\fIfeature\fR[,...]
]
[
.B \-q
]
[
.B \-r
.I fs-revision-level
]
[
.B \-E
.I extended-options
]
[
.B \-v
]
[
.B \-F
]
[
.B \-L
.I volume-label
]
[
.B \-M
.I last-mounted-directory
]
[
.B \-S
]
[
.B \-t
.I fs-type
]
[
.B \-T
.I usage-type
]
[
.B \-U
.I UUID
]
[
.B \-V
]
[
.B \-e
.I errors-behavior
]
[
.B \-z
.I undo_file
]
.I device
[
.I fs-size
]
@JDEV@.sp
@JDEV@.B "mke2fs \-O journal_dev"
@JDEV@[
@JDEV@.B \-b
@JDEV@.I block-size
@JDEV@]
.\" No external-journal specific journal options yet (size is ignored)
.\" @JDEV@[
.\" @JDEV@.B \-J
.\" @JDEV@.I journal-options
.\" @JDEV@]
@JDEV@[
@JDEV@.B \-L
@JDEV@.I volume-label
@JDEV@]
@JDEV@[
@JDEV@.B \-n
@JDEV@]
@JDEV@[
@JDEV@.B \-q
@JDEV@]
@JDEV@[
@JDEV@.B \-v
@JDEV@]
@JDEV@.I external-journal
@JDEV@[
@JDEV@.I fs-size
@JDEV@]
.SH DESCRIPTION
.B mke2fs
is used to create an ext2, ext3, or ext4 filesystem, usually in a disk
partition (or file) named by
.IR device .
.PP
The file system size is specified by
.IR fs-size .
If
.I fs-size
does not have a suffix, it is interpreted as power-of-two kilobytes,
unless the
.B \-b
.I blocksize
option is specified, in which case
.I fs-size
is interpreted as the number of
.I blocksize
blocks.   If the fs-size is suffixed by 'k', 'm', 'g', 't'
(either upper-case or lower-case), then it is interpreted in
power-of-two kilobytes, megabytes, gigabytes, terabytes, etc.
If
.I fs-size
is omitted,
.B mke2fs
will create the file system based on the device size.
.PP
If
.B mke2fs
is run as
.B mkfs.XXX
(i.e.,
.BR mkfs.ext2 ,
.BR mkfs.ext3 ,
or
.BR mkfs.ext4 )
the option
.B \-t
.I XXX
is implied; so
.B mkfs.ext3
will create a file system for use with ext3,
.B mkfs.ext4
will create a file system for use with ext4, and so on.
.PP
The defaults of the parameters for the newly created filesystem, if not
overridden by the options listed below, are controlled by the
.B /etc/mke2fs.conf
configuration file.  See the
.BR mke2fs.conf (5)
manual page for more details.
.SH OPTIONS
.TP
.BI \-b " block-size"
Specify the size of blocks in bytes.  Valid block-size values are 1024,
2048 and 4096 bytes per block.  If omitted,
block-size is heuristically determined by the filesystem size and
the expected usage of the filesystem (see the
.B \-T
option).  If
.I block-size
is preceded by a negative sign ('-'), then
.B mke2fs
will use heuristics to determine the
appropriate block size, with the constraint that the block size will be
at least
.I block-size
bytes.  This is useful for certain hardware devices which require that
the blocksize be a multiple of 2k.
.TP
.B \-c
Check the device for bad blocks before creating the file system.  If
this option is specified twice, then a slower read-write
test is used instead of a fast read-only test.
.TP
.B \-C " cluster-size"
Specify the size of cluster in bytes for filesystems using the bigalloc
feature.  Valid cluster-size values are from 2048 to 256M bytes per
cluster.  This can only be specified if the bigalloc feature is
enabled.  (See the
.B ext4 (5)
man page for more details about bigalloc.)   The default cluster size if
bigalloc is enabled is 16 times the block size.
.TP
.BI \-d " root-directory"
Copy the contents of the given directory into the root directory of the
filesystem.
.TP
.B \-D
Use direct I/O when writing to the disk.  This avoids mke2fs dirtying a
lot of buffer cache memory, which may impact other applications running
on a busy server.  This option will cause mke2fs to run much more
slowly, however, so there is a tradeoff to using direct I/O.
.TP
.BI \-e " error-behavior"
Change the behavior of the kernel code when errors are detected.
In all cases, a filesystem error will cause
.BR e2fsck (8)
to check the filesystem on the next boot.
.I error-behavior
can be one of the following:
.RS 1.2i
.TP 1.2i
.B continue
Continue normal execution.
.TP
.B remount-ro
Remount filesystem read-only.
.TP
.B panic
Cause a kernel panic.
.RE
.TP
.BI \-E " extended-options"
Set extended options for the filesystem.  Extended options are comma
separated, and may take an argument using the equals ('=') sign.  The
.B \-E
option used to be
.B \-R
in earlier versions of
.BR mke2fs .
The
.B \-R
option is still accepted for backwards compatibility, but is deprecated.
The following extended options are supported:
.RS 1.2i
.TP
.BI encoding= encoding-name
Enable the
.I casefold
feature in the super block and set
.I encoding-name
as the encoding to be used.  If
.I encoding-name
is not specified, the encoding defined in
.BR mke2fs.conf (5)
is used.
.TP
.BI encoding_flags= encoding-flags
Define parameters for file name character encoding operations.  If a
flag is not changed using this parameter, its default value is used.
.I encoding-flags
should be a comma-separated lists of flags to be enabled.  To disable a
flag, add it to the list with the prefix "no".

The only flag that can be set right now is
.I strict
which means that invalid strings should be rejected by the file system.
In the default configuration, the
.I strict
flag is disabled.
.TP
.BI mmp_update_interval= interval
Adjust the initial MMP update interval to
.I interval
seconds.  Specifying an
.I interval
of 0 means to use the default interval.  The specified interval must
be less than 300 seconds.  Requires that the
.B mmp
feature be enabled.
.TP
.BI stride= stride-size
Configure the filesystem for a RAID array with
.I stride-size
filesystem blocks. This is the number of blocks read or written to disk
before moving to the next disk, which is sometimes referred to as the
.I chunk size.
This mostly affects placement of filesystem metadata like bitmaps at
.B mke2fs
time to avoid placing them on a single disk, which can hurt performance.
It may also be used by the block allocator.
.TP
.BI stripe_width= stripe-width
Configure the filesystem for a RAID array with
.I stripe-width
filesystem blocks per stripe. This is typically stride-size * N, where
N is the number of data-bearing disks in the RAID (e.g. for RAID 5 there is one
parity disk, so N will be the number of disks in the array minus 1).
This allows the block allocator to prevent read-modify-write of the
parity in a RAID stripe if possible when the data is written.
.TP
.BI offset= offset
Create the filesystem at an offset from the beginning of the device or
file.  This can be useful when creating disk images for virtual machines.
.TP
.BI resize= max-online-resize
Reserve enough space so that the block group descriptor table can grow
to support a filesystem that has
.I max-online-resize
blocks.
.TP
.B lazy_itable_init\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
If enabled and the uninit_bg feature is enabled, the inode table will
not be fully initialized by
.BR mke2fs .
This speeds up filesystem
initialization noticeably, but it requires the kernel to finish
initializing the filesystem in the background when the filesystem is
first mounted.  If the option value is omitted, it defaults to 1 to
enable lazy inode table zeroing.
.TP
.B lazy_journal_init\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
If enabled, the journal inode will not be fully zeroed out by
.BR mke2fs .
This speeds up filesystem initialization noticeably, but carries some
small risk if the system crashes before the journal has been overwritten
entirely one time.  If the option value is omitted, it defaults to 1 to
enable lazy journal inode zeroing.
.TP
.B no_copy_xattrs
Normally
.B mke2fs
will copy the extended attributes of the files in the directory
hierarchy specified via the (optional)
.B \-d
option.  This will disable the copy and leaves the files in the newly
created file system without any extended attributes.
.TP
.BI num_backup_sb= <0|1|2>
If the
.B sparse_super2
file system feature is enabled this option controls whether there will
be 0, 1, or 2 backup superblocks created in the file system.
.TP
.B packed_meta_blocks\fR[\fB= \fI<0 to disable, 1 to enable>\fR]
Place the allocation bitmaps and the inode table at the beginning of the
disk.  This option requires that the flex_bg file system feature to be
enabled in order for it to have effect, and will also create the journal
at the beginning of the file system.  This option is useful for flash
devices that use SLC flash at the beginning of the disk.
It also maximizes the range of contiguous data blocks, which
can be useful for certain specialized use cases, such as supported
Shingled Drives.
.TP
.BI root_owner [=uid:gid]
Specify the numeric user and group ID of the root directory.  If no UID:GID
is specified, use the user and group ID of the user running \fBmke2fs\fR.
In \fBmke2fs\fR 1.42 and earlier the UID and GID of the root directory were
set by default to the UID and GID of the user running the mke2fs command.
The \fBroot_owner=\fR option allows explicitly specifying these values,
and avoid side-effects for users that do not expect the contents of the
filesystem to change based on the user running \fBmke2fs\fR.
.TP
.B test_fs
Set a flag in the filesystem superblock indicating that it may be
mounted using experimental kernel code, such as the ext4dev filesystem.
.TP
.B discard
Attempt to discard blocks at mkfs time (discarding blocks initially is useful
on solid state devices and sparse / thin-provisioned storage). When the device
advertises that discard also zeroes data (any subsequent read after the discard
and before write returns zero), then mark all not-yet-zeroed inode tables as
zeroed. This significantly speeds up filesystem initialization. This is set
as default.
.TP
.B nodiscard
Do not attempt to discard blocks at mkfs time.
.TP
.B quotatype
Specify the which  quota types (usrquota, grpquota, prjquota) which
should be enabled in the created file system.  The argument of this
extended option should be a colon separated list.  This option has
effect only if the
.B quota
feature is set.   The default quota types to be initialized if this
option is not specified is both user and group quotas.  If the project
feature is enabled that project quotas will be initialized as well.
.RE
.TP
.B \-F
Force
.B mke2fs
to create a filesystem, even if the specified device is not a partition
on a block special device, or if other parameters do not make sense.
In order to force
.B mke2fs
to create a filesystem even if the filesystem appears to be in use
or is mounted (a truly dangerous thing to do), this option must be
specified twice.
.TP
.BI \-g " blocks-per-group"
Specify the number of blocks in a block group.  There is generally no
reason for the user to ever set this parameter, as the default is optimal
for the filesystem.  (For administrators who are creating
filesystems on RAID arrays, it is preferable to use the
.I stride
RAID parameter as part of the
.B \-E
option rather than manipulating the number of blocks per group.)
This option is generally used by developers who
are developing test cases.
.IP
If the bigalloc feature is enabled, the
.B \-g
option will specify the number of clusters in a block group.
.TP
.BI \-G " number-of-groups"
Specify the number of block groups that will be packed together to
create a larger virtual block group (or "flex_bg group") in an
ext4 filesystem.  This improves meta-data locality and performance
on meta-data heavy workloads.  The number of groups must be a power
of 2 and may only be specified if the
.B flex_bg
filesystem feature is enabled.
.TP
.BI \-i " bytes-per-inode"
Specify the bytes/inode ratio.
.B mke2fs
creates an inode for every
.I bytes-per-inode
bytes of space on the disk.  The larger the
.I bytes-per-inode
ratio, the fewer inodes will be created.  This value generally shouldn't
be smaller than the blocksize of the filesystem, since in that case more
inodes would be made than can ever be used.  Be warned that it is not
possible to change this ratio on a filesystem after it is created, so be
careful deciding the correct value for this parameter.  Note that resizing
a filesystem changes the number of inodes to maintain this ratio.
.TP
.BI \-I " inode-size"
Specify the size of each inode in bytes.
The
.I inode-size
value must be a power of 2 larger or equal to 128.  The larger the
.I inode-size
the more space the inode table will consume, and this reduces the usable
space in the filesystem and can also negatively impact performance.
It is not
possible to change this value after the filesystem is created.
.IP
In kernels after 2.6.10 and some
earlier vendor kernels it is possible to utilize inodes larger than
128 bytes to store
extended attributes for improved performance.
Extended attributes
stored in large inodes are not visible with older kernels, and such
filesystems will not be mountable with 2.4 kernels at all.
.IP
The default inode size is controlled by the
.BR mke2fs.conf (5)
file.  In the
.B mke2fs.conf
file shipped with e2fsprogs, the default inode size is 256 bytes for
most file systems, except for small file systems where the inode size
will be 128 bytes.
.TP
.B \-j
Create the filesystem with an ext3 journal.  If the
.B \-J
option is not specified, the default journal parameters will be used to
create an appropriately sized journal (given the size of the filesystem)
stored within the filesystem.  Note that you must be using a kernel
which has ext3 support in order to actually make use of the journal.
.TP
.BI \-J " journal-options"
Create the ext3 journal using options specified on the command-line.
Journal options are comma
separated, and may take an argument using the equals ('=')  sign.
The following journal options are supported:
.RS 1.2i
.TP
.BI size= journal-size
Create an internal journal (i.e., stored inside the filesystem) of size
.I journal-size
megabytes.
The size of the journal must be at least 1024 filesystem blocks
(i.e., 1MB if using 1k blocks, 4MB if using 4k blocks, etc.)
and may be no more than 10,240,000 filesystem blocks or half the total
file system size (whichever is smaller)
.TP
.BI location =journal-location
Specify the location of the journal.  The argument
.I journal-location
can either be specified as a block number, or if the number has a units
suffix (e.g., 'M', 'G', etc.) interpret it as the offset from the
beginning of the file system.
@JDEV@.TP
@JDEV@.BI device= external-journal
@JDEV@Attach the filesystem to the journal block device located on
@JDEV@.IR external-journal .
@JDEV@The external
@JDEV@journal must already have been created using the command
@JDEV@.IP
@JDEV@.B mke2fs -O journal_dev
@JDEV@.I external-journal
@JDEV@.IP
@JDEV@Note that
@JDEV@.I external-journal
@JDEV@must have been created with the
@JDEV@same block size as the new filesystem.
@JDEV@In addition, while there is support for attaching
@JDEV@multiple filesystems to a single external journal,
@JDEV@the Linux kernel and
@JDEV@.BR e2fsck (8)
@JDEV@do not currently support shared external journals yet.
@JDEV@.IP
@JDEV@Instead of specifying a device name directly,
@JDEV@.I external-journal
@JDEV@can also be specified by either
@JDEV@.BI LABEL= label
@JDEV@or
@JDEV@.BI UUID= UUID
@JDEV@to locate the external journal by either the volume label or UUID
@JDEV@stored in the ext2 superblock at the start of the journal.  Use
@JDEV@.BR dumpe2fs (8)
@JDEV@to display a journal device's volume label and UUID.  See also the
@JDEV@.B -L
@JDEV@option of
@JDEV@.BR tune2fs (8).
.RE
@JDEV@.IP
@JDEV@Only one of the
@JDEV@.BR size " or " device
@JDEV@options can be given for a filesystem.
.TP
.BI \-l " filename"
Read the bad blocks list from
.IR filename .
Note that the block numbers in the bad block list must be generated
using the same block size as used by
.BR mke2fs .
As a result, the
.B \-c
option to
.B mke2fs
is a much simpler and less error-prone method of checking a disk for bad
blocks before formatting it, as
.B mke2fs
will automatically pass the correct parameters to the
.B badblocks
program.
.TP
.BI \-L " new-volume-label"
Set the volume label for the filesystem to
.IR new-volume-label .
The maximum length of the
volume label is 16 bytes.
.TP
.BI \-m " reserved-blocks-percentage"
Specify the percentage of the filesystem blocks reserved for
the super-user.  This avoids fragmentation, and allows root-owned
daemons, such as
.BR syslogd (8),
to continue to function correctly after non-privileged processes are
prevented from writing to the filesystem.  The default percentage
is 5%.
.TP
.BI \-M " last-mounted-directory"
Set the last mounted directory for the filesystem.  This might be useful
for the sake of utilities that key off of the last mounted directory to
determine where the filesystem should be mounted.
.TP
.B \-n
Causes
.B mke2fs
to not actually create a filesystem, but display what it
would do if it were to create a filesystem.  This can be used to
determine the location of the backup superblocks for a particular
filesystem, so long as the
.B mke2fs
parameters that were passed when the
filesystem was originally created are used again.  (With the
.B \-n
option added, of course!)
.TP
.BI \-N " number-of-inodes"
Overrides the default calculation of the number of inodes that should be
reserved for the filesystem (which is based on the number of blocks and
the
.I bytes-per-inode
ratio).  This allows the user to specify the number
of desired inodes directly.
.TP
.BI \-o " creator-os"
Overrides the default value of the "creator operating system" field of the
filesystem.  The creator field is set by default to the name of the OS the
.B mke2fs
executable was compiled for.
.TP
.B "\-O \fR[^]\fIfeature\fR[,...]"
Create a filesystem with the given features (filesystem options),
overriding the default filesystem options.  The features that are
enabled by default are specified by the
.I base_features
relation, either in the
.I [defaults]
section in the
.B /etc/mke2fs.conf
configuration file,
or in the
.I [fs_types]
subsections for the usage types as specified by the
.B \-T
option, further modified by the
.I features
relation found in the
.I [fs_types]
subsections for the filesystem and usage types.  See the
.BR mke2fs.conf (5)
manual page for more details.
The filesystem type-specific configuration setting found in the
.I [fs_types]
section will override the global default found in
.IR [defaults] .
.sp
The filesystem feature set will be further edited
using either the feature set specified by this option,
or if this option is not given, by the
.I default_features
relation for the filesystem type being created, or in the
.I [defaults]
section of the configuration file.
.sp
The filesystem feature set is comprised of a list of features, separated
by commas, that are to be enabled.  To disable a feature, simply
prefix the feature name with a caret ('^') character.
Features with dependencies will not be removed successfully.
The pseudo-filesystem feature "none" will clear all filesystem features.
.TP
For more information about the features which can be set, please see
the manual page
.BR ext4 (5).
.TP
.B \-q
Quiet execution.  Useful if
.B mke2fs
is run in a script.
.TP
.BI \-r " revision"
Set the filesystem revision for the new filesystem.  Note that 1.2
kernels only support revision 0 filesystems.  The default is to
create revision 1 filesystems.
.TP
.B \-S
Write superblock and group descriptors only.  This is an extreme
measure to be taken only in the very unlikely case that all of
the superblock and backup superblocks are corrupted, and a last-ditch
recovery method is desired by experienced users.  It causes
.B mke2fs
to reinitialize the superblock and group descriptors, while not
touching the inode table and the block and inode bitmaps.  The
.B e2fsck
program should be run immediately after this option is used, and there
is no guarantee that any data will be salvageable.  Due to the wide
variety of possible options to
.B mke2fs
that affect the on-disk layout, it is critical to specify exactly
the same format options, such as blocksize, fs-type, feature flags, and
other tunables when using this option, or the filesystem will be further
corrupted.  In some cases, such as filesystems that have been resized,
or have had features enabled after format time, it is impossible to
overwrite all of the superblocks correctly, and at least some filesystem
corruption will occur.  It is best to run this on a full copy of the
filesystem so other options can be tried if this doesn't work.
.\" .TP
.\" .BI \-t " test"
.\" Check the device for bad blocks before creating the file system
.\" using the specified test.
.TP
.BI \-t " fs-type"
Specify the filesystem type (i.e., ext2, ext3, ext4, etc.) that is
to be created.
If this option is not specified,
.B mke2fs
will pick a default either via how
the command was run (for example, using a name of the form mkfs.ext2,
mkfs.ext3, etc.) or via a default as defined by the
.B /etc/mke2fs.conf
file.   This option controls which filesystem options are used by
default, based on the
.B fstypes
configuration stanza in
.BR /etc/mke2fs.conf .
.sp
If the
.B \-O
option is used to explicitly add or remove filesystem options that
should be set in the newly created filesystem, the
resulting filesystem may not be supported by the requested
.IR fs-type .
(e.g., "\fBmke2fs \-t ext3 \-O extent /dev/sdXX\fR" will create a
filesystem that is not supported by the ext3 implementation as found in
the Linux kernel; and "\fBmke2fs \-t ext3 \-O ^has_journal /dev/hdXX\fR"
will create a filesystem that does not have a journal and hence will not
be supported by the ext3 filesystem code in the Linux kernel.)
.TP
.BI \-T " usage-type[,...]"
Specify how the filesystem is going to be used, so that
.B mke2fs
can choose optimal filesystem parameters for that use.  The usage
types that are supported are defined in the configuration file
.BR /etc/mke2fs.conf .
The user may specify one or more usage types
using a comma separated list.
.sp
If this option is is not specified,
.B mke2fs
will pick a single default usage type based on the size of the filesystem to
be created.  If the filesystem size is less than 3 megabytes,
.B mke2fs
will use the filesystem type
.IR floppy .
If the filesystem size is greater than or equal to 3 but less than
512 megabytes,
.BR mke2fs (8)
will use the filesystem type
.IR small .
If the filesystem size is greater than or equal to 4 terabytes but less than
16 terabytes,
.BR mke2fs (8)
will use the filesystem type
.IR big .
If the filesystem size is greater than or equal to 16 terabytes,
.BR mke2fs (8)
will use the filesystem type
.IR huge .
Otherwise,
.BR mke2fs (8)
will use the default filesystem type
.IR default .
.TP
.BI \-U " UUID"
Set the universally unique identifier (UUID) of the filesystem to
.IR UUID .
The format of the UUID is a series of hex digits separated by hyphens,
like this:
"c1b9d5a2-f162-11cf-9ece-0020afc76f16".
The
.I UUID
parameter may also be one of the following:
.RS 1.2i
.TP
.I clear
clear the filesystem UUID
.TP
.I random
generate a new randomly-generated UUID
.TP
.I time
generate a new time-based UUID
.RE
.TP
.B \-v
Verbose execution.
.TP
.B \-V
Print the version number of
.B mke2fs
and exit.
.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
mke2fs-\fIdevice\fR.e2undo in the directory specified via the
\fIE2FSPROGS_UNDO_DIR\fR environment variable or the \fIundo_dir\fR directive
in the configuration file.

WARNING: The undo file cannot be used to recover from a power or system crash.
.SH ENVIRONMENT
.TP
.B MKE2FS_SYNC
If set to non-zero integer value, its value is used to determine how often
.BR sync (2)
is called during inode table initialization.
.TP
.B MKE2FS_CONFIG
Determines the location of the configuration file (see
.BR mke2fs.conf (5)).
.TP
.B MKE2FS_FIRST_META_BG
If set to non-zero integer value, its value is used to determine first meta
block group. This is mostly for debugging purposes.
.TP
.B MKE2FS_DEVICE_SECTSIZE
If set to non-zero integer value, its value is used to determine logical
sector size of the
.IR device .
.TP
.B MKE2FS_DEVICE_PHYS_SECTSIZE
If set to non-zero integer value, its value is used to determine physical
sector size of the
.IR device .
.TP
.B MKE2FS_SKIP_CHECK_MSG
If set, do not show the message of filesystem automatic check caused by
mount count or check interval.
.SH AUTHOR
This version of
.B mke2fs
has been written by Theodore Ts'o <tytso@mit.edu>.
.SH AVAILABILITY
.B mke2fs
is part of the e2fsprogs package and is available from
http://e2fsprogs.sourceforge.net.
.SH SEE ALSO
.BR mke2fs.conf (5),
.BR badblocks (8),
.BR dumpe2fs (8),
.BR e2fsck (8),
.BR tune2fs (8),
.BR ext4 (5)
