Updating to a new linux kernel
This gives the block allocator the opportunity to optimize the allocation in situations where the old system couldn't.
Delayed allocation plays very nicely with the two previous features mentioned, extents and multiblock allocation, because in many workloads when the file is written finally to the disk it will be allocated in extents whose block allocation is done with the mballoc allocator.
In Ext4, at the end of each group's inode table will be stored a list of unused inodes (with a checksum, for safety), so fsck will not check those inodes.
The result is that total fsck time improves from 2 to 20 times, depending on the number of used inodes (
That means that if the system needs to write the 100 MB data mentioned in the previous point, it will need to call the block allocator 25600 times (and it was just 100 MB! Not only this is inefficient, it doesn't allow the block allocator to optimize the allocation policy because it doesn't knows how many total data is being allocated, it only knows about a single block.
Ext4 uses a "multiblock allocator" (mballoc) which allocates many blocks in a single call, instead of a single block per call, avoiding a lot of overhead.
1 EB = 1,048,576 TB (1 EB = 1024 PB, 1 PB = 1024 TB, 1 TB = 1024 GB). There are some limitations that would need to be fixed before making Ext4 fully 64-bit capable, which have not been addressed in Ext4.
The Ext4 data structures have been designed keeping this in mind, so a future update to Ext4 will implement full 64-bit support at some point. (Note: The code to create filesystems bigger than 16 TB is -at the time of writing this article- not in any stable release of e2fsprogs.
In many ways, Ext4 is a deeper improvement over Ext3 than Ext3 was over Ext2.The performance is much better, and the fragmentation is much improved in some workloads.