Posted: Sat Apr 19, 2008 2:59 pm
I just read an artical on ext4 and would like to know if there is a plan in place to implement this new and improved file system. Here is the information I found on the suse linux FAQ:
Ext4, or Fourth Extended File System is an enhanced version of the popular Ext3 journaling file system used in Linux. It was created because the previous Ext3 file system was at its limits in both maximum supported file system size and features set. As of Linux kernel version 2.6.19, it is officially merged into the mainstream kernel.
Physical Block Journaling
Tree-based directory indexes (H-trees - Hashed trees)
Allocate On Flush (aka Delayed Allocation)
64-bit file system
Online file system growth
Development of the Ext4 file system started in 2006 and was officially revealed by Andrew Morton. It was introduced by him as a compatible improvement to the Ext3 file system with modern features like Allocate On Flush, Extents and 64-bit file system. Ext4, like previous versions of the Ext file systems family, is backwards compatible with Ext3. However, if Extents are used in a Ext4 file system (disabled by default), it will break the backwards compatibility and one can no longer mount it as Ext3.
Like Ext3, Ext4 supports three journaling modes, writeback, ordered, and journal and one can switch between them using the data= mount option at file system mount time.
The new features set was introduced to cope with the limitations presented in its predecessor, Ext3. The ever growing data capacity of hard disks are a huge issue for Ext3 as this version of the Ext file systems family supports only a maximum file system size of 32 Terabytes but today this amount of disk storage space is common in high-end server systems and other enterprise class machines. For this reason, Ext4 was extended to be a 64-bit file system so it can scale up to 1 Exabyte in file system size (depends on the block size at creation time).
Other major improvements over Ext3 are Extents and Allocate On Flush. An extent in a file system is a continuous area of storage, reserved to a file. When writing to a file, a whole extent is allocated. When writing again to the same file, the data continues where the previous write left off. This technique reduces external file system fragmentation (external fragmentation occurs when data in a file system is scattered all over the partition thus making the disk heads seek a lot in order to gather the required information).
The other major feature in Ext4, Allocate On Flush, also tends to reduce external file system fragmentation and speeds up overall file system performance. Allocate On Flush reserves space for data that has to be written to disk but is holding the data itself in memory until it is flushed to disk because of a memory pressure, a kernel flush call or because some application has issued the "sync" system call. This has the effect of batching together disk writes into larger chunks. Allocate On Flush also reduces CPU usage and keeps allocations contiguous when there are several files growing at the same time.