A filesystem is a way of organizing data on a computer. Most filesystems appear to the user as a hierarchy of directories and files. A journaling filesystem is one that logs file changes to a journal (i.e., a special file) before actually committing (i.e., writing) them to the filesystem in order to make it much easier to recover data in the event of a file reading or writing problem. The most commonly used filesystems on Linux are ext2, ext3 and reiserfs, and the latter two are journaling filesystems.
Ext4 is being developed to accommodate the rapidly approaching era of terabyte (1024 gigabytes) hard disk drive (HDD) capacities, and it features support for storage up to 1024 petabytes (1024 terabytes) per volume. Hitachi Ltd introduced the first terabyte HDD at the start of 2007 and was preparing to begin volume shipment in the third quarter of the year; other manufacturers are preparing to follow.
Ext4 also supports extent file writing. In extent, when a file is created, it is given a contiguous area of storage. Then, when the file is written to in the future, the new information is written at the end of that file in order to reduce file fragmentation (i.e., scattering of parts of the file on non-contiguous locations on the HDD) and improve HDD performance. Support for extents is already included in the Reiser4 and in IBM's JFS (Journaling filesystem), which is used in AIX and Linux.
Also featured is support for allocate-on-flush (also called delayed allocation), which had previously been implemented in the XFS, Reiser4 and ZFS (developed by Sun Microsystems for use in Solaris) filesystems. Benefits include reduced fragmentation and reduced CPU usage.
Ext4 is compatible with ext3 in the sense that ext4 partitions can be mounted as ext3 partitions, thereby allowing ext4 data to be accessed by Linux systems with older kernels. However, in such case the ability to use extents is lost. This limited compatibility contrasts with the very high degree of compatibility between the ext3 and ext2 filesystems.
Ext4 was announced on October 10, 2006 by Andrew Morton, one of the lead developers of the Linux kernel. It was included in 2.6.19 kernel, which was released on November 29, 2006.
Created March 24, 2007.
Copyright © 2007 The Linux Information Project. All Rights Reserved.