Linux File Systems
Linux file systems organize stored data as files and directories, record metadata such as ownership and timestamps, and connect storage to one shared directory tree. Linux uses a common virtual interface so local, network, memory-backed, and user-space file systems can serve the same file operations.
itLinux | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Linux File Systems
A file system is Linux's way of turning storage, a remote service, or live kernel data into names and directories. Before this arrangement, each program would need its own map of disks and data layouts, which is a reliable route to paperwork with sharp edges. Instead, a path such as `/var/lib/app/state.db` can lead through one shared-looking tree while the machinery underneath changes completely.
The helpful clerk at the center is the VFS, the virtual file-system layer. It gives applications familiar operations such as open, read, write, and rename. Behind that calm desk, ext4, XFS, Btrfs, NFS, CephFS, FUSE, and proc take rather different routes. The shared verbs do not promise shared behavior for allocation, caching, recovery, or failure. That is the first useful suspicion to keep.
A mount attaches one hierarchy to a directory in a process's visible tree. This is why Linux can present many file systems as one place, and why the same spelling of a path can mean something different inside another mount namespace. The other surprise is that a name is not the object. A directory entry points at an inode, an inode carries metadata and data mapping, and an open file can remain alive after its last name vanishes. Files have a quiet afterlife, because apparently naming them was only part of the relationship.
Space reports also answer different questions. `df` asks the mounted file system about its accounting. `du` adds up reachable names. A mismatch is therefore a clue about snapshots, metadata, sparse allocation, or an open deleted file, not an automatic verdict that either command has lost the plot. Byte capacity and inode capacity are separate limits, so creating one more tiny file can fail while a large-looking amount of storage remains.
For the map of names, mounts, VFS objects, and durability, read the Introduction and Slides. Use the Cheatsheet when you need the comparison tables and failure-triage order. The Practice tab turns one temporary path into observable mount, inode, and capacity evidence. Field Notes covers the operational decisions that make a correct command output useful instead of merely decorative.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.kernel.org/filesystems/vfs.html
Supports
- VFS purpose and dispatch model
- Superblock, inode, dentry, and open file objects
- File-system operation and caching architecture
- https://man7.org/linux/man-pages/man7/path_resolution.7.html
Supports
- Absolute and relative pathname lookup
- Directory search permission, symbolic links, and mount traversal
- https://man7.org/linux/man-pages/man7/inode.7.html
Supports
- Inode metadata, file types, ownership, mode, link count, size, and timestamps
- https://man7.org/linux/man-pages/man8/mount.8.html
Supports
- Mount attachment, bind mounts, and mount options
- Covered directory contents and persistent mount configuration
- https://man7.org/linux/man-pages/man7/mount_namespaces.7.html
Supports
- Per-process mount topology and namespace isolation
- https://man7.org/linux/man-pages/man2/fsync.2.html
Supports
- File synchronization semantics and directory synchronization boundary
- https://www.kernel.org/doc/html/latest/filesystems/index.html
Supports
- Linux file-system implementation catalog
- Local, network, pseudo, and specialized file-system families
- https://docs.kernel.org/filesystems/ext2.html
Supports
- Blocks, block groups, inodes, directories, allocation, and fixed inode ratios
- https://docs.kernel.org/filesystems/ext4/index.html
Supports
- ext4 block groups, extents, allocation, checksums, and on-disk structures
- https://docs.kernel.org/filesystems/ext4/journal.html
Supports
- ext4 jbd2 journal transactions and recovery role
- https://docs.kernel.org/admin-guide/xfs.html
Supports
- XFS administration, mount behavior, freeze, errors, and allocation controls
- https://btrfs.readthedocs.io/en/latest/Introduction.html
Supports
- Btrfs copy-on-write, checksums, subvolumes, snapshots, compression, and multi-device model
- https://btrfs.readthedocs.io/en/latest/Kernel-by-version.html
Supports
- Btrfs entry into the Linux 2.6.29 release cycle
- https://docs.kernel.org/filesystems/f2fs.html
Supports
- F2FS log-structured design for flash translation layer devices
- https://docs.kernel.org/filesystems/fuse/fuse.html
Supports
- FUSE kernel and user-space request path, mounts, and failure behavior
- https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html
Supports
- File-system usage reporting by df
- https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html
Supports
- Directory-tree space reporting by du
- https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
Supports
- Purpose of major directories in the Linux file hierarchy
- https://docs.ceph.com/en/latest/cephfs/
Supports
- CephFS metadata server and RADOS data path
- Shared namespace use cases and client architecture
- https://github.com/sindresorhus/awesome
Supports
- Awesome-list discovery starting point
- https://github.com/awesome-foss/awesome-sysadmin
Supports
- Discovery of Ceph, GlusterFS, Lustre, JuiceFS, and rsnapshot
- https://docs.gluster.org/en/latest/
Supports
- GlusterFS architecture, volumes, replication, clients, healing, and split-brain operations
- https://wiki.lustre.org/Lustre_Architecture
Supports
- Lustre clients, metadata services, and object storage targets
- https://juicefs.com/docs/community/introduction/
Supports
- JuiceFS data and metadata separation, FUSE client, and POSIX-style mounts
- https://rsnapshot.org/
Supports
- rsnapshot use of rsync and hard links for navigable backup generations
- https://openzfs.github.io/openzfs-docs/
Supports
- OpenZFS pooled storage, copy-on-write, checksums, snapshots, and Linux installation boundary
- https://www.kernel.org/doc/ols/2006/ols2006v1-pages-395-408.pdf
Supports
- ext2 active use since 1993 and consistency-check context
- https://www.usenix.org/conference/usenix-1996-annual-technical-conference/scalability-xfs-file-system
Supports
- XFS shipment in IRIX 5.3 in December 1994
- Allocation, B-tree, extent, and scalability design
- https://xfs.org/index.php/XFS_FAQ
Supports
- XFS Linux port history and Linux operating characteristics
- https://www.kernel.org/pub/linux/kernel/v2.4/ChangeLog-2.4.15
Supports
- ext3 inclusion in the November 2001 Linux 2.4.15 release
- https://kernelnewbies.org/Linux_2_6_14
Supports
- FUSE inclusion in Linux 2.6.14 in October 2005
- https://kernelnewbies.org/Linux_2_6_28
Supports
- ext4 stable designation in Linux 2.6.28 in December 2008
- https://kernelnewbies.org/Linux_2_6_29
Supports
- Btrfs and SquashFS inclusion in Linux 2.6.29 in 2009
- https://kernelnewbies.org/Linux_3.8
Supports
- F2FS inclusion in Linux 3.8 in February 2013
- https://fedoraproject.org/wiki/Changes/BtrfsByDefault
Supports
- Fedora 33 Btrfs default for new desktop installations in 2020
- https://man7.org/linux/man-pages/man8/findmnt.8.html
Supports
- findmnt target lookup, mount source, file-system type, and options
- Stable column selection for scripted mount inspection
- https://www.gnu.org/s/coreutils/manual/html_node/stat-invocation.html
Supports
- stat file and file-system status reporting
- Symbolic-link and mount-point reporting behavior
- https://man7.org/linux/man-pages/man8/lsof.8.html
Supports
- Inspection of open files during space and unmount diagnosis
- https://www.michal-drozd.com/en/blog/kubernetes-inode-exhaustion-overlayfs/
Supports
- Practitioner incident showing inode exhaustion despite substantial free byte capacity
- Separate inode and byte-capacity monitoring for small-file workloads
