Filesystems Supported by Linux

Written by: Emmanuel Oyibo   |   Last updated: May 3, 2024

Filesystems are the backbone of how computers organize and store all your important information. You can think of them like different types of filing cabinets for your digital files - photos, documents, music, and everything else.

Linux offers an impressive range of filesystems to choose from. In this article, we’ll learn about conventional disk filesystems, flash storage filesystems, and some special purpose filesystems.

Conventional Disk Filesystems

Conventional disk filesystems are designed for traditional hard drives (HDDs) and the newer solid state drives (SDDs). They’re the workhorses of your Linux system, handling everyday storage needs.

These filesystems come with different strengths to match the type of work you do. Let’s explore a few of them.

Ext3/Ext4

The ext3 filesystem is a predecessor of ext4. It offers journaling functionality that makes sure your data is safe, in the event of an unexpected shutdown.

Ext4 builds on ext3’s robustness with improved performance, larger filesystem support, and increased file size limits. It’s usually recommended for situations where you require stability and backward compatibility.

XFS

XFS excels where you need to handle large files. It performs exceptionally well with large-scale data operations. It was originally developed by Silicon Graphics, Inc. (SGI).

This filesystem is often one of the top-choice for data analytics and scientific applications due to its high performance and scalability.

Btrfs

Btrfs, or B-tree filesystem, introduces advanced features like snapshotting, dynamic inode allocation, and integrated device management.

It’s a modern filesystem designed to address the fault tolerance, repair, and easy administration needs of today’s complex systems.

You can read up a detailed comparison of Btrfs vs Ext4 in our other article.

JFS

The Journaled File System (JFS) was developed by IBM. It’s known for its high reliability and efficiency, that’s why it’s used for managing large volumes of data.

Although it’s not commonly used as ext4 and XFS, JFS is a pretty solid option for systems that require stability and low overhead.

NTFS

This filesystem is primarily associated with Windows. However, it’s supported in Linux via compatibility layers like NTFS-3G. You can use it for dual-boot systems, as it allows access to Windows partitions.

VFAT and ExFAT

VFAT is an extension of the FAT filesystem. It’s widely used for its compatibility across different operating systems, including Linux.

On the other hand, ExFAT is designed for flash drives. It’s optimized for higher storage capacities and larger sizes compared to FAT32, making it ideal for external media.

Flash Storage Filesystems

Flash storage filesystems are tailored for NAND flash memory. They’re used in devices like USB flash drives, SD cards, and solid-state drives (SSDs).

These filesystems are designed to efficiently manage the specific challenges of flash memory, such as wear leveling and limited write endurance, while maximizing performance.

Now, let’s see some of these filesystems.

UBIFS

UBIFS stands for UBI File System. It operates on an UBI layer and it’s optimized for wear leveling and block management. It replaces older systems like JFFS2 by offering better scalability and performance. Therefore, it’s more suitable for modern flash-based devices.

JFFS and JFFS2

The Journaling Flash File System (JFFS) was built for use with flash memory before being succeeded by JFFS2. The latter added journaling to improve reliability and data integrity after unexpected shutdowns.

JFFS2 is still used in various embedded systems, though it’s generally being phased out in favor of more advanced technologies.

YAFFS

This was the first filesystem designed specifically for NAND flash memory. You can use it in environments where high reliability is necessary, despite the capacity limitations of older flash memory chips.

YAFFS continues to be relevant in specific embedded systems due to its robustness.

LogFS

This is designed to scale well to large flash devices and address the limitations of JFFS2 and YAFFS in handling large data volumes. It aims to provide a more efficient solution for logging data in systems where flash memory is heavily utilized. This improves overall system responsiveness and reliability.

Special Purpose Filesystems

Special purpose filesystems in Linux are designed not for general file storage, but to support the operating system by providing an interface to internal data structures of the kernel.

Unlike the traditional filesystems that store data on disk, these are virtual. This means they exist solely in memory and disappear when you shutdown the system.

They play a crucial role in system management and configuration. Also, they provide dynamic access to system internals. Let’s explore a few of them below:

Procfs

The Process File System, or procfs, is a virtual filesystem that provides a window into the inner workings of Linux. Located at /proc, this filesystem isn’t a real filesystem stored on a virtual disk. Instead, it’s a virtual one created by the kernel.

You can use it to get information about the system and running processes. For example, you can view a process’s environment variables, memory usage, and real-time system information. This makes procfs invaluable for system monitoring and debugging purposes.

Sysfs

This is another virtual filesystem that offers a view into the Linux kernel’s various devices and drivers. Sysfs is located in /sys and organizes information and configuration options for kernel entities in a hierarchy. This allows user-space programs to interact with the kernel.

Sysfs helps manage query device attributes, making it essential for managing devices drivers and obtaining information about the hardware configuration of a system.

Tmpfs

Tmpfs stands for Temporary File System. It uses a portion of the system memory as a filesystem. It’s faster than using disk-based storage as it resides in volatile memory.

The data that’s stored in tmpfs is temporary as it gets cleared on system reboot. This makes it perfect for scenarios where data persistence isn’t necessary (such as session storage in web applications or for caching).

The use of tmpfs can significantly enhance performance by reducing disk I/O for temporary data.

About The Author

Emmanuel Oyibo

Emmanuel Oyibo

Emmanuel is a Technical Writer and DevOps/Software Engineer with over 4 years of experience in streamlining technical documentation and automating workflows. He specializes in writing about Linux, Python, and DevOps concepts, utilizing his expertise to create clear guides and documentation. Emmanuel holds a B.Sc in Biochemistry and is passionate about the power of technology for problem-solving.

SHARE

Comments

Please add comments below to provide the author your ideas, appreciation and feedback.

Leave a Reply

Leave a Comment