.I blocks-per-group
]
[
+.B \-G
+.I number-of-groups
+]
+[
.B \-i
.I bytes-per-inode
]
[
+.B \-I
+.I inode-size
+]
+[
.B \-j
]
[
.B \-S
]
[
+.B \-t
+.I fs-type
+]
+[
.B \-T
-.I filesystem-type
+.I usage-type
]
[
.B \-V
following extended options are supported:
.RS 1.2i
.TP
-.BI stride= stripe-size
+.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 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 the performanace.
+It may also be used by block allocator.
+.TP
+.BI stripe-width= stripe-width
Configure the filesystem for a RAID array with
-.I stripe-size
-filesystem blocks per stripe.
+.I stripe-width
+filesystem blocks per stripe. This is typically be 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 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 fully initialized by
+.BR mke2fs .
+This speeds up filesystem
+initialization noitceably, 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"
.B \-F
Force
.B mke2fs
-to run, even if the specified device is not a
-block special device, or appears to be mounted.
+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
filesystems on RAID arrays, it is preferable to use the
.I stride
RAID parameter as part of the
-.B \-R
+.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 goups that will be packed together to
+create one large virtual block group on an ext4 filesystem. This
+improves meta-data locality and performance on meta-data heavy
+workloads. The number of goups must be a power of 2 and may only be
+specified if the flex_bg filesystem feature is enabled.
+.TP
.BI \-i " bytes-per-inode"
Specify the bytes/inode ratio.
.B mke2fs
inodes will be made. Be warned that 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 two 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
@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
.TP
.B "\-O \fIfeature\fR[,...]"
Create filesystem with given features (filesystem options), overriding
-the default filesystem options.
-Currently, the
-.B sparse_super
-and
-.B filetype
-features are turned on by default when
-.B mke2fs
-is run on a system with Linux 2.2 or later (unless creator-os is set to
-the Hurd). Filesystems that may need to be mounted on pre-2.2 Linux or
-other kernels should be created with
-.B "\-O none"
-(or
-.B "\-r 0"
-for Linux 1.2) which will disable these features, even if
-.B mke2fs
-is run on a system which can support them.
+the default filesystem options. The default features which are
+enabled by default are specified by the
+.I base_features
+relation, either in the
+.I [libdefaults]
+section in the
+.B /etc/mke2fs.conf
+configuration file,
+or in the subsection of the
+.I [fs_types]
+section for the usage types as specified by the
+.B -T
+option, further modified by the
+.I features
+relation found in the
+.I [fs_types] section
+based on 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 [libdefaults] .
.sp
-The following filesystem options are supported:
+The filesystem feature set will be further edited
+using either the feature set specification specified by this option,
+or if this option is not specified, by the
+.I default_features
+relation for the filesystem type being created, or in the
+.I [libdefaults]
+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 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 dir_index
Use hashed b-trees to speed up lookups in large directories.
.TP
.B filetype
Store file type information in directory entries.
.TP
+.B flex_bg
+Allow bitmaps and inode tables for a block group to be placed anywhere
+on the storage media (use with -G option to group meta-data in order
+to create a large virtual block group).
+.TP
.B has_journal
Create an ext3 journal (as if using the
.B \-j
@JDEV@must be created with the same
@JDEV@block size as the filesystems that will be using it.
.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 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 noticably (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.
+.TP
.B resize_inode
Reserve space so the block group descriptor table may grow in the future.
Useful for online resizing using
.\" Check the device for bad blocks before creating the file system
.\" using the specified test.
.TP
-.BI \-T " fs-type"
+.BI
+.BI \-t " fs-type"
+Specify the filesystem (i.e., ext2, ext3, ext4, etc., is to be created.
+If this option is not specified mke2fs will pick a default either how
+the command was run (if it was run 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.
+.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. Currently, the
-primary filesystem parameter which is manipulated is the number of
-inodes contained the filesystem, but in the future other filesystem
-parameters may also changed for specific filesystem usage scenarios. If
-no filesystem type is specified, filesystem meant for general purpose
-use will be created, with default values for the blocksize, number of
-inodes, etc. based on the size of the filesystem to be created. The
-supported filesystem types are:
-.RS 1.2i
-.TP 1.2i
-news
-one inode per 4kb block
-.TP
-largefile
-one inode per megabyte
-.TP
-largefile4
-one inode per 4 megabytes
-.RE
+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
.B \-v
Verbose execution.
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),