Ext4 is a mature file system that is widely used these days.

With possibility for online growth and de-fragmentation ext4 is an attractive choice to consider when deciding which file system to use.

However for large storage it has two big limitations.

First and perhaps the most important problem with ext4 is long fsck time. It is not uncommon to take 40 min. or more to check ext4 file system which has is only 4 TiB of data.

Second problem is with growing ext4 beyond 16 TiB — it simply can't be done using current resize2fs. You can format ext4 partition larger than 16 TiB but it is not possible to grow smaller ext4 partition beyond 16 TiB.

Ext4 offers some nice features: journal_checksum (mount option) is important to ensure journal consistency. It is not used by default so we recommend to always use it when mounting.

journal_async_commit can be used instead of journal_checksum as it activates the latter automatically. async_commit accelerates (internal) journal operations a little without compromising the file system safety.

But perhaps the most interesting and unique feature of ext4 if a possibility to place journal to external device. Unlike XFS which can be formatted with external journal ext4 can be managed even if external journal is lost. Journal can be easily added or removed.

External journal allows to significantly boost ext4 performance which can't be underestimated if partition is exported over NFS.

See also