💾 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
-=-=-=-=-=-=-
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.
Filesystem/Access Control List Guide
an additional security control feature for multiuser systems.
one of the basic means to harden a system.
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
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, 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.
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.
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.
Filesystems can be mounted in several ways:
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)