.\" -*- 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 \-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 \-K
]
[
.B \-N
.I number-of-inodes
]
[
.B \-n
]
[
.B \-m
.I reserved-blocks-percentage
]
[
.B \-o
.I creator-os
]
[
.B \-O
.IR feature [,...]
]
[
.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
]
.I device
[
.I blocks-count
]
@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 blocks-count
@JDEV@]
.SH DESCRIPTION
.B mke2fs
is used to create an ext2, ext3, or ext4 filesystem, usually in a disk
partition.
.I device
is the special file corresponding to the device (e.g
.IR /dev/hdXX ).
.I blocks-count
is the number of blocks on the device.  If omitted,
.B mke2fs
automagically figures the file system size.  If called as
.B mkfs.ext3
a journal is created as if the
.B \-j
option was specified.
.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 negative, 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
.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.   The
following extended options are supported:
.RS 1.2i
.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 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 initialization.
.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.
.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.
.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 expand the number
of inodes on a filesystem after it is created, so be careful deciding the
correct value for this parameter.
.TP
.BI \-I " inode-size"
Specify the size of each inode in bytes.
.B mke2fs
creates 256-byte inodes by default.  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.  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.
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.  It is not
possible to change this value after the filesystem is created.
.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 102,400 filesystem blocks.
@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 \-K
Keep, do not attempt to discard blocks at mkfs time (discarding blocks initially
is useful on solid state devices and sparse / thin-provisioned storage).
.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 \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.  The
pseudo-filesystem feature "none" will clear all filesystem features.
.RS 1.2i
.TP
.B dir_index
Use hashed b-trees to speed up lookups in large directories.
.TP
.B extent
Instead of using the indirect block scheme for storing the location of
data blocks in an inode, use extents instead.  This is a much more
efficient encoding which speeds up filesystem access, especially for
large files.
.TP
.B filetype
Store file type information in directory entries.
.TP
.B flex_bg
Allow the per-block group metadata (allocation bitmaps and inode tables)
to be placed anywhere on the storage media.  In addition,
.B mke2fs
will place the per-block group metadata together starting at the first
block group of each "flex_bg group".   The size of the flex_bg group
can be specified using the 
.B \-G
option.
.TP
.B has_journal
Create an ext3 journal (as if using the
.B \-j
option).
@JDEV@.TP
@JDEV@.B journal_dev
@JDEV@Create an external ext3 journal on the given device
@JDEV@instead of a regular ext2 filesystem.
@JDEV@Note that
@JDEV@.I external-journal
@JDEV@must be created with the same
@JDEV@block size as the filesystems that will be using it.
.TP
.B large_file
Filesystem can contain files that are greater than 2GB.  (Modern kernels
set this feature automatically when a file > 2GB is created.)
.TP
.B resize_inode
Reserve space so the block group descriptor table may grow in the future.
Useful for online resizing using
.BR resize2fs .
By default
.B mke2fs
will attempt to reserve enough space so that the
filesystem may grow to 1024 times its initial size.  This can be changed
using the
.B resize
extended option.
.TP
.B sparse_super
Create a filesystem with fewer superblock backup copies
(saves space on large filesystems).
.TP
.B uninit_bg
Create a filesystem without initializing all of the block groups.  This
feature also enables checksums and highest-inode-used statistics in each
blockgroup.  This feature can
speed up filesystem creation time noticeably (if lazy_itable_init is
enabled), and can also reduce
.BR e2fsck
time dramatically.  It is only supported by the ext4 filesystem in
recent Linux kernels.
.RE
.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 useful if all of
the superblock and backup superblocks are corrupted, and a last-ditch
recovery method is desired.  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.  It is critical to
specify the correct filesystem blocksize when using this option,
or there is no chance of recovery.
.\" .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
.BR /etc/mke2fs.conf (5)
file.   This option controls which filesystem options are used by
default, based on the
.B fstypes
configuration stanza in
.BR /etc/mke2fs.conf (5).
.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 extents /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 (5).
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 or equal to 3 megabytes,
.B mke2fs
will use the filesystem type
.IR floppy .
If the filesystem size is greater than 3 but less than or equal to
512 megabytes,
.BR mke2fs (8)
will use the filesystem
.IR small .
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.
.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)
