💾 Archived View for zaney.org › resources › gentoo › handbook › filesystem.gmi captured on 2023-09-08 at 16:00:02. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Filesystem

A filesystem is a means to organize data to be retained after a program terminates. Filesystems provide procedures to store, retrieve, and update data, as well as to manage the available space on the device(s) which contain it.

Linux has a few dozen filesystems available, each with their own advantages and disadvantages when considering a particular use case.

General information

Filesystem/Access Control List Guide

an additional security control feature for multiuser systems.

Filesystem/Security

one of the basic means to harden a system.

Flash memory filesystems

The following flash memory filesystems are designed to be used on embedded flash memory known as MTDs; they are not intended to be used for USB based flash drives, SD cards, or other types of removable flash block devices.

Name    Userspace Package       Description
JFFS2                           Journalling Flash File System version 2.
YAFFS   sys-fs/yaff2utils       Yet Another Flash File System

Disk filesystems

Name        Userspace Package       Description
bcachefs    sys-fs/bcachefs-tools   A next generation, robust, high performance 
                                    filesystem supporting CoW (Copy-on-write), compression, and encryption.
btrfs       sys-fs/btrfs-progs      A copy-on-write B-tree file system (btrfs) with advanced features.
Cramfs      sys-fs/cramfs           A memory and space sensitive compressed filesystem that supports random
                                    reading. It avoids the block device layer and usefulness in tiny
                                    embedded systems with very tight memory constraints.
eCryptfs    sys-fs/ecryptfs-utils   The enterprise cryptographic filesystem for Linux.
efivarfs                            A (U)EFI variable filesystem[1]
exFAT       sys-fs/exfatprogs       Extensible File Allocation Table (exFAT) filesystem by Microsoft,
                                    natively supported since Linux 5.7[2]
ext4        sys-fs/e2fsprogs        The default, GPL licensed journaling filesystem for many Linux
                                    distributions.
F2FS        sys-fs/f2fs-tools       A Flash-Friendly File System (F2FS) created by Samsung for the Linux kernel.
FAT         sys-fs/dosfstools       The File Allocation Table (FAT) filesystem. Originally created for use 
                                    with Microsoft Windows.
GFS2                                Global File System 2: A shared disk filesystem. Typically used in
                                    compute clusters.
HFS         sys-fs/hfsutils         Hierarchical File System (HFS). Originally created for use with the
                                    Macintosh System Software, later renamed to Mac OS (Classic).
HFS+        sys-fs/hfsplusutils     The successor to HFS, introduced in Mac OS 8.1 and default filesystem for
                                    Mac OS X until macOS 10.12 Sierra.
JFS         sys-fs/jfsutils         A GPL licensed, 64-bit Journaled File System (JFS) developed by IBM.[3]
NILFS       sys-fs/nilfs-utils      A log-structured file system implementation for the Linux kernel.
NTFS                                Microsoft Windows' New Technology File System (NTFS) (Windows' default
                                    filesystem).
OCFS2                               Oracle Cluster File System version 2.
OverlayFS                           The only union-like filesystem built-in to the Linux kernel.
ReiserFS    sys-fs/reiserfsprogs    Version 3 of the ReiserFS filesystem. Scheduled for removal from the
                                    kernel in 2025.
SquashFS    sys-fs/squashfs-tools,  A compressed, read-only file system for Linux[4]
            sys-fs/squashfs-tools-ng
UDF         sys-fs/udftools         Universal Disk Format - needed for mounting some kind of .iso files
UFS                                 The Unix File System (UFS) also called the Berkeley Fast File System.
XFS         sys-fs/xfsprogs         A GPL licensed, 64-bit journaling filesystem created by Silicon Graphics.[5]
ZFS         sys-fs/zfs              A CDDL (non-GPL compatible) licensed, copy-on-write filesystem created 
                                    by Sun Microsystems[6]. 

Virtual filesystems

Virtual filesystems, also called pseudo filesystems, are for storing temporary data in memory while the system is running.

Name        Userspace package    Description
debugfs                          Used for debugging purposes; primarily Linux kernel development.
procfs                           Used to output and change of system and process information.
securityfs                       Used by the TPM BIOS character driver, AppArmor and IMA, an integrity
                                 provider.[7]
sysfs                            Used to output information about and to configure devices and drivers.
tmpfs                            Used to store files in memory (RAM).
devtmpfs                         udev requires devtmpfs (Maintain a devtmpfs filesystem to mount at /dev)
                                 in the kernel.

Network Filesystems

Name        Userspace package     Description
Ceph        sys-cluster/ceph      A distributed object store and filesystem designed to provide excellent
                                  performance, reliability, and scalability.
GlusterFS	sys-cluster/glusterfs A powerful network/cluster filesystem.
NFS         net-fs/nfs-utils      A common Linux network file system protocol.
Samba       net-fs/samba          A re-implementation of the SMB/CIFS networking protocol.

FUSE-based filesystems

Name        Userspace package     Description
CurlFtpFS   net-fs/curlftpfs      File system for accessing FTP hosts based on FUSE.
FuseISO     sys-fs/fuseiso        FUSE module to mount ISO filesystem images.
MTPfs       sys-fs/mtpfs          A FUSE filesystem providing access to Media Transfer Protocol (MTP) devices.
smbnetfs    net-fs/smbnetfs       A FUSE filesystem for SMB shares.
SSHFS       net-fs/sshfs          Implements FUSE to mount filesystems in user space.
squashfuse  sys-fs/squashfuse     Mount SquashFS archives using FUSE.

Usage

Mounting

Filesystems can be mounted in several ways:

mount

/etc/fstab

Removable media

Udevil

AutoFS

See also

Bcache

Filesystem security

Filesystem in Userspace

Filesystems in Handbook AMD64

External resources

Linux Sea, by Sven Vermeulen, chapter about filesystems

Bitrot and atomic COWs: Inside “next-gen” filesystems (Ars Technica)

A Study of Linux File System Evolution (PDF document from USENIX)