In the ext4 wiki article I've seen that ext4 can be used up to 1 EiB, but is only recommended up to 16 TiB. Why is that the case? Why is XFS recommended for larger file systems?

(ELICS: Explain me like I'm a CS student, but without much knowledge in file systems)

  • See also: What limits the number of drives in RAID? – Martin Thoma May 16 '17 at 10:19
  • If you're working with huge datasets, the Zetabyte File System might be something worth a look: en.wikipedia.org/wiki/ZFS – Mioriin May 16 '17 at 11:02
  • 16 TB is the maximum number of 4096-byte blocks that can be accounted for with a 32-bit counter. It appears there's a 64-bit concern with ext4. XFS has been fully 64-bit capable since its early SGI days. – Andrew Henle May 16 '17 at 11:50
  • @Andrew the ext4 limit is currently 48 bits, so while there is still a 64-bit concern, it’s not quite as bad as being limited to 32 bits. – Stephen Kitt May 16 '17 at 11:53
  • 1
    Yeah, the wikipedia page says 100 TB in the text, and 16 TB in the sidebar, the references to the first are of an old Red Hat and the obviously outdated Ext4_Howto (which has had 5 updates in the last 4.1 years). Maybe someone interested in the subject should go dig for some newer sources and update the page? :) – ilkkachu May 16 '17 at 12:02

The exact quote from the ext4 Wikipedia entry is

However, Red Hat recommends using XFS instead of ext4 for volumes larger than 100 TB.

The ext4 howto mentions that

The code to create file systems bigger than 16 TiB is, at the time of writing this article, not in any stable release of e2fsprogs. It will be in future releases.

which would be one reason to avoid file systems larger than 16 TiB, but that note is outdated: e2fsprogs since version 1.42 (November 2011) is quite capable of creating and processing file systems larger than 16 TiB. mke2fs uses the big and huge types for such systems (actually, big between 4 and 16 TiB, huge beyond); these increase the inode ratio so that fewer inodes are provisioned.

Returning to the Red Hat recommendation, as of RHEL 7.3, XFS is the default file system, supported up to 500 TiB, and ext4 is only supported up to 50 TiB. I think this is contractual rather than technical, although the Storage Administration Guide phrases the limits in a technical manner (without going into much detail). I imagine there are technical or performance reasons for the 50 TiB limit...

The e2fsprogs release notes do give one reason to avoid file systems larger than 16 TiB: apparently, the resize_inode feature has to be disabled on file systems larger than this.

  • What leads you to believe that reasons for using xfs over ext4 are contractual? – HSchmale May 16 '17 at 18:47
  • 5
    @HSchmale I don’t mean that there are contractual reasons for using XFS over ext4, I mean that when Red Hat says they support XFS up to 500 TiB and ext4 up to 50 TiB, that support involves contractual aspects, i.e. clients can demand support up to those sizes, but beyond that Red Hat would have no contractual obligation as I understand it. (Note that I work for Red Hat, but I speak only for myself.) – Stephen Kitt May 16 '17 at 20:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.