What is Ext4? Linux’s Fast Native File System
Before we answer the question posed by this article, a bit of background will be required. Ext4 is only the latest, albeit not particularly new, iteration of the venerable Linux Extended file system (Extfs).
What is Ext4?
Ext4 started as a set of extensions to, yes, you guessed it–Ext3. Ext3 was itself an evolution of Ext2, which was the offspring of Extfs, the original Linux-specific file system. Extfs was created by Rémy Card and others to overcome the limitations of the MINIX file system employed by Linus Torvalds in the first Linux kernel. MINIX (1987), written by Andrew S. Tanenbaum, is a Unix-like operating system. The man wrote it for the benefit of higher education, so that UNIX could be taught without paying a considerable sum for the real deal. As mentioned, the MINIX file system has limitations, hence Extfs was “extending” it.
Ext4 was added to the Linux kernel in 2006 (Ext4dev) and the repositories in 2008. It’s what’s known as a journaling file system (as of Ext3), i.e. a list of impending and implemented changes is maintained. It’s a bit different than your diary in that its most recent entries describe what will happen, rather than what has. A combination day planner/journal if you will. Journaling (which is optional) makes it possible to quickly repair file system errors without using a utility (e2fsck) to traverse the entire data structure in search of wackiness.
Ext4 is a standard root/tree file system, with a boot sector, partition table, and like the Unix File System, uses inodes (index nodes) to describe files and objects. It offers transparent encryption, uses checksums on the metadata (journal and other), supports TRIM, and implements delayed allocation.
Delayed allocation means that Ext4 caches data until it can determine the quickest and most efficient way to write it. This is a boon to performance, but introduces the possibility that data might not be written in the case of power failure. Journaling mitigates the danger of data loss in this scenario.
Beyond that, Ext4 uses 48-bit addressing that allows up to an exbibyte (EiB) of data. 12-bit “extents” which describe large chunks of contiguous space augment Ext3’s 32-bit direct and indirect block addressing. The maximum single file size in Ext4 is 1 tebibyte (TiB), and the maximum number of files is 4 billion.
Note: When it comes to Tebibytes versus Terabytes et al, numbers whose names share the same first two letters (“ex”, “gi”, “pe”, etc.) are roughly equivalent in size. E.g., a gigabyte (10^9) is 1,000,000,000 bytes while 1 gibibyte (2^30) is 1,073,741,824 bytes. Remember them as “BI”nary and b”A”se 10.
In short, the main advantages and disadvantages of Ext4 are…
The Upside
- A long successful track record
- Very good performance
- Handles up to an 1 exbibyte (EiB) of data (1 million tebibytes)
- Journaling operations make error recovery quick
- Backwards compatible with Ext3
The Downside
- Lacks newer techniques such as copy on write
- No integrated volume manager as with Btrfs and OpenZFS
- Not native Windows support. (Third-party drivers are available. Free and from Paragon software)
When to use Ext4
As Ext4 is fast, tried, and true, not to mention the default file system for Linux, it’s perfectly fine for end-user fans of Tux. For NAS, servers, or any situation where fault tolerance and data integrity are more important than speed, Btrfs or OpenZFS could be better choices.
Why does linux native file system prefer ‘ExtFS’ file system? What is the benefit over NTFS? [closed]
This question was closed because it is not about an official Ubuntu flavor. It is not currently accepting answers.
This is not about an official Ubuntu flavor. Questions about other Linux distributions can be asked on Unix & Linux, those about Windows on Super User, those about Apple products on Ask Different and generic programming questions on Stack Overflow.
For almost all linux distros I came across, it seems to prefer ‘ExtFS’ file system for the installation drive. Why does it not go for NTFS ? Obviously, everyone has their own taste and style and more suitable environment to be at optimal whilst performing. But coming from windows, it does seem new. I want to know what are the benefits of ‘ExtFS’ over ‘NTFS’ ?
What makes you think the Linux distros should use a proprietary, partially obscure file system that doesn’t even fit very well with how UNIX systems work? I don’t get the point of this question.
NTFS stands for New Technology File System. It was specifically built for Windows NT, without any other OS in mind. Linux doesn’t «prefer» NTFS, because it’s not built for anything but Windows.
For almost all Windows version I came across, it seems to prefer ‘NTFS’ file system for the installation drive. Why does it not go for ExtFS?
3 Answers 3
NTFS doesn’t support some features that are important for Linux, like Unix-style file permissions and symlinks. It can’t be used for most parts of a Linux system.
Microsoft doesn’t support the creation of a NTFS driver for Linux. The current driver is largely made by reverse engineering and doesn’t support all NTFS features.
The preference isn’t about a subjective or theoretical EXT vs NTFS, just as this isn’t about Linux’s native EXT implementation against Microsoft’s native NTFS implementation. It’s about Linux-mainline EXT vs the NTFS-3G driver.
That’s the choice these installers are making. And that’s why they always pick the native version.
Ext is more mature in Linux. It has had powers more people testing it under Linux. It has more people working on it (being part of Linux itself, rather than a third-party driver). And developments to the EXT standard happen in Linux, not another operating system first.
There are technical reasons too. Historically there have been some limitations around what NTFS-3G can do. The permission system is subtly different. The users are different. ACL support is different. These are all things that would bias you towards another filesystem that did support all those things in the way you were expecting them to work.