.\" -*- 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 \-d
.I root-directory
]
[
.B \-D
]
[
.B \-f
.I fragment-size
]
[
.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 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
.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
.BI 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
.BI nodiscard
Do not attempt to discard blocks at mkfs time.
.TP
.BI 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
.BI \-f " fragment-size"
Specify the size of fragments in bytes.
.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 numer 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
.BR 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"
Create the filesystem with the specified UUID.
.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
.BI 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
.BI MKE2FS_CONFIG
Determines the location of the configuration file (see
.BR mke2fs.conf (5)).
.TP
.BI 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
.BI MKE2FS_DEVICE_SECTSIZE
If set to non-zero integer value, its value is used to determine physical
sector size of the
.IR device .
.TP
.BI 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 BUGS
.B mke2fs
accepts the
.B \-f
option but currently ignores it because the second
extended file system does not support fragments yet.
.br
There may be other ones.  Please, report them to the author.
.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)
