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.