Linux file systems

Linux systems use a file system to store and process data. In this section we have a look at what a file system and supporting articles to learn more about it.

Purpose of a file system

At its core, a file system is the method by which data is organized and stored on a storage device. The storage device is typically a hard drive or solid-state drive (SSD), but it can also be memory. It provides the framework for managing files, directories, and other data structures. Its goal is enabling users and applications to interact with the stored information.

The file system serves several crucial purposes:

  • Data Organization: A file system organizes data into files and directories, making it easier for users to locate and manage information efficiently.
  • Data Access: It facilitates access to stored data, allowing users and applications to read, write, and modify files as needed.
  • Data Protection: File systems often incorporate mechanisms for data protection, such as permissions and encryption, to safeguard sensitive information from unauthorized access or corruption.
  • Performance Optimization: Certain file systems are optimized for specific tasks, such as maximizing performance for large files or minimizing overhead for small files.

Common Linux file systems

Linux supports a variety of file systems, each tailored to different use cases and requirements. Some of the most common file systems used in Linux include:

Ext4 (Fourth Extended File System):

Ext4 is one of the most widely used file systems in Linux distributions. It offers features such as journaling for data integrity, support for large file sizes and partitions, and efficient storage allocation. Ext4 is suitable for general-purpose use, including desktops, servers, and workstations.

XFS (XFS File System):

XFS is known for its scalability and performance, particularly for large-scale storage systems. It supports features like parallel I/O and delayed allocation, making it ideal for high-throughput environments. XFS is commonly used in enterprise environments, data centers, and systems with large storage arrays.

Btrfs (B-Tree File System):

Btrfs is a modern file system designed with features like built-in data integrity, snapshots, and support for advanced storage technologies like SSDs and RAID arrays. It emphasizes flexibility and data reliability. Btrfs was made by Oracle as a competitor to ZFS, and suitable for systems requiring advanced storage features, such as data backup, versioning, and efficient data deduplication.

ZFS (Zettabyte File System):

ZFS is a robust file system originally developed for Solaris and later ported to Linux. It offers features such as data compression, snapshotting, and built-in RAID support, providing a high level of data protection and flexibility. ZFS is favored in environments where data integrity and reliability are paramount, such as enterprise storage solutions and mission-critical applications. As ZFS provides a few options that others don’t, it comes at a cost of more overhead, such as memory usage.

How to find hard links or files that point to a specific file

Learn how to find hardlinks on a file system or which files they have in common. With several examples, we use the find command to get this information quickly available.


If you want to know which hard links are present, the find utility can give you the answer. In this article we have a look at a few ways to discover more information about hard links. Good to know: a hard link shares the same inode, where a symbolic link has its own inode and just points from one to another. Show all hard links within a specific file system or directory When we have a directory with hard links, we can discover by looking at the link count of each file.

Full article…

Understanding the output of the stat command

Learn everything about the output that the stat command returns. Great for forensics, intrusion detection, and system administration.


The stat command can be used to show file statistics, such as file size, ownership, type, and several timestamps. It is a great addition to ls. Time to let it work for us! Basic example If we use the command on our /etc/passwd file, we might get output like below. # stat /etc/passwd File: /etc/passwd Size: 3387 Blocks: 8 IO Block: 4096 regular file Device: 10303h/66307d Inode: 47186412 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2024-05-08 15:17:01.

Full article…

Frequently Asked Questions

How to find symbolic links that point to a directory?

find . -type l -xtype d

» Full answer and more examples

How to compare and find the differences between two directories?

diff -qr Directory1 Directory2

» Full answer and more examples

How to securely delete a file and its contents?

shred --remove FILE

» Full answer and more examples

How to see the creation date of a file?

stat --format=%w /etc/passwd

» Full answer and more examples

How to find the biggest directories on disk?

du -ahx / | sort -hr | head

» Full answer and more examples

See all frequently asked questions for Linux file systems