Skip to content

Linux Storage Foundations: VFS, Inodes, Dentries, Mounts, and Filesystems

Linux storage is easier to reason about if you separate concerns: namespace and metadata handling at the VFS layer, filesystem-specific behavior in drivers, and persistence in underlying devices. This section builds that model step by step and prepares you for advanced topics such as tuning, troubleshooting, and storage design choices [1], [2].

What is it?

This storage section is a structured learning path for the Linux file stack. It covers the Virtual File System (VFS), inode and dentry behavior, mount mechanics, and common filesystem families used in production [1], [2], [3], [4].

The goal is not to memorize individual commands, but to understand how path-based operations map to kernel objects and where decisions are enforced:

  • Name resolution and caching (dentry)
  • Metadata identity (inode)
  • Namespace composition (mount)
  • On-disk or network-backed semantics (filesystem implementation)

Why do we need it? Where do we use it?

These concepts are required in almost every Linux role: platform engineering, SRE, security engineering, and systems development. If you cannot explain how an open(2) call crosses mountpoints and resolves inodes, you will struggle with permission bugs, performance bottlenecks, and operational incident analysis [1], [5].

Typical usage contexts:

  • Operating system and kernel courses
  • Production Linux platform operations
  • Container and Kubernetes runtime troubleshooting
  • Filesystem and storage architecture decisions

History Lesson

When What
1970s UNIX establishes the inode-based file model that modern Unix-like systems still use [6].
1991 Linux begins as a Unix-like kernel and adopts a VFS-centered filesystem architecture [1].
2001 XFS support matures in Linux for high-scale workloads [7].
2008 ext4 enters mainstream Linux usage as the successor to ext3 [8].
2009 Btrfs reaches mainline Linux and introduces CoW snapshots and checksumming [9].
2016 NFSv4.2 extends network filesystem capabilities in the IETF standard track [10].

Interaction with other topics?

Storage concepts interact with multiple sections in this repository:

  • Virtualization: virtual disks and host filesystem behavior directly affect guest performance and consistency.
  • Container: container writable layers and volume mounts depend on VFS and mount namespace behavior.
  • Infrastructure as Code: storage provisioning decisions (block/file/object) should be versioned and reproducible.

How does it work?

At runtime, Linux storage operations follow a layered architecture:

User ProcessSyscalls (open/read/write/stat)Linux VFSFilesystem Driver (ext4, XFS, Btrfs, NFS)Page Cache + Dentry/Inode CachesBlock Layer / Network ClientDevice or Remote Server path + flagsVFS APImetadata/data cache checksdispatch operationI/O requestpersistence
Hold "Alt" / "Option" to enable pan & zoom

The learning path in this section follows that model from abstraction to concrete examples:

  1. Linux VFS
  2. Inodes
  3. Dentries
  4. Mounting
  5. Filesystem examples

Examples: Usage or Theory

Example 1: Quick system inventory of storage layers

Prerequisites: Linux host with findmnt and lsblk.

$ set -euo pipefail
$ uname -r
$ cat /proc/filesystems
$ findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS
$ lsblk -f

This command group gives you a high-level map of the VFS-visible filesystem types, active mounts, and underlying block topology.

Example 2: Verify where a specific path resolves

$ set -euo pipefail
$ TARGET_PATH="/etc/passwd"
$ findmnt -T "${TARGET_PATH}" -o TARGET,SOURCE,FSTYPE,OPTIONS
$ stat "${TARGET_PATH}"

Use this pattern whenever a path behaves unexpectedly. It immediately shows which mount and filesystem actually back that path.

References and further reading

[1] Linux Kernel Documentation, "Virtual Filesystem." Accessed: Feb. 21, 2026. [Online]. Available: https://docs.kernel.org/filesystems/vfs.html

[2] Linux Kernel Documentation, "Dentry Cache (dcache)." Accessed: Feb. 21, 2026. [Online]. Available: https://www.kernel.org/doc/html/latest/filesystems/dcache.html

[3] M. Kerrisk, "path_resolution(7)." Accessed: Feb. 21, 2026. [Online]. Available: https://man7.org/linux/man-pages/man7/path_resolution.7.html

[4] M. Kerrisk, "mount(8)." Accessed: Feb. 21, 2026. [Online]. Available: https://man7.org/linux/man-pages/man8/mount.8.html

[5] M. Kerrisk, "open(2)." Accessed: Feb. 21, 2026. [Online]. Available: https://man7.org/linux/man-pages/man2/open.2.html

[6] M. Kerrisk, "inode(7)." Accessed: Feb. 21, 2026. [Online]. Available: https://www.man7.org/linux/man-pages/man7/inode.7.html

[7] Linux Kernel Documentation, "XFS Filesystem." Accessed: Feb. 21, 2026. [Online]. Available: https://docs.kernel.org/admin-guide/xfs.html

[8] Linux Kernel Documentation, "ext4 Filesystem." Accessed: Feb. 21, 2026. [Online]. Available: https://docs.kernel.org/6.16/admin-guide/ext4.html

[9] Linux Kernel Documentation, "Btrfs." Accessed: Feb. 21, 2026. [Online]. Available: https://docs.kernel.org/6.1/filesystems/btrfs.html

[10] C. Lever et al., "Network File System (NFS) Version 4 Minor Version 2 Protocol," RFC 7862, Nov. 2016. [Online]. Available: https://www.rfc-editor.org/rfc/rfc7862