Show Table of Contents
7.3. File Systems
7.3.1. The Ext4 File System
The ext4 file system is a scalable extension of the default ext3 file system available in Red Hat Enterprise Linux 5. Ext4 is now the default file system for Red Hat Enterprise Linux 6, and is supported for a maximum file system size of 16 TB and a single file maximum size of 16TB. It also removes the 32000 sub-directory limit present in ext3.
For file systems larger than 16TB, we recommend using a scalable high capacity file system such as XFS. For further information, see Section 7.3.2, “The XFS File System”.
The ext4 file system defaults are optimal for most workloads, but if performance analysis shows that file system behavior is impacting performance, several tuning options are available:
- Inode table initialization
- For very large file systems, the
mkfs.ext4process can take a very long time to initialize all inode tables in the file system. This process can be deferred with the
-E lazy_itable_init=1option. If this is used, kernel processes will continue to initialize the file system after it is mounted. The rate at which this initialization occurs can be controlled with the
-o init_itable=noption for the
mountcommand, where the amount of time spent performing this background initialization is roughly 1/n. The default value for
- Auto-fsync behavior
- Because some applications do not always properly
fsync()after renaming an existing file, or truncating and rewriting, ext4 defaults to automatic syncing of files after replace-via-rename and replace-via-truncate operations. This behavior is largely consistent with older ext3 filesystem behavior. However,
fsync()operations can be time consuming, so if this automatic behavior is not required, use the
-o noauto_da_allocoption with the
mountcommand to disable it. This will mean that the application must explicitly use
fsync()to ensure data persistence.
- Journal I/O priority
- By default, journal commit I/O is given a slightly higher priority than normal I/O. This priority can be controlled with the
journal_ioprio=noption of the
mountcommand. The default value is
3. Valid values range from 0 to 7, with 0 being the highest priority I/O.
mkfsand tuning options, please see the
mount(8)man pages, as well as the
Documentation/filesystems/ext4.txtfile in the kernel-doc package.