Findmnt: Inspecting Kernel Mount Hierarchies, Triaging Filesystem Propagation Flags, and Resolving Nested Storage Topologies in Production
In your search for answers, you run the legacy mount command. Instantly, a blinding, unformatted wall of three hundred undifferentiated lines of text scrolls past your terminal buffer at lightning speed. Modern Linux servers are no longer simple machines where a handful of physical spinning disks are permanently pinned to fixed directories. Instead, they are intricate webs of container namespaces, ephemeral Docker overlay layers, Kubernetes volume projections, temporary memory filesystems, and dynamically shared kernel subtrees. Trying to parse this sprawling thicket during an active outage using utilities designed in the 1980s is an exercise in pure frustration.
When an underlying cloud storage block volume encounters a transient timeout or an ambient container namespace stealthily masks a local directory, legacy Unix tools like mount and df fail to convey the structural truth of the system. They were designed for a simpler era of static physical partitions. To pierce this operational fog and restore absolute diagnostic clarity to the Linux storage stack, modern systems rely on a dedicated tool: findmnt.
Built into the standard util-linux suite on virtually every modern distribution, findmnt interrogates the Linux kernel directly to translate the chaos of active filesystems into a clean, intuitive tree. If you ever find yourself staring down a production storage anomaly, the single most valuable command to run right away is a targeted tree inspection:
findmnt -t ext4,xfs,btrfs,overlay --tree
This single command instantly sweeps away hundreds of noisy virtual filesystems, isolating only your true physical storage volumes and active container layers. Rather than scrolling through hundreds of lines of noise, you get an immediate visual map of your storage hierarchy, showing exactly which block devices are mounted where, how much space they consume, and what runtime flags govern their operation.
What It Does in Plain English
At its core, findmnt is a dedicated inspection engine for the Linux Virtual File System (VFS) mount tree. Instead of presenting storage as a flat, unorganised list of raw text strings, findmnt interrogates the kernel directly to model and display all active filesystems as a structured, hierarchical tree.
It allows operators to instantly determine where a specific directory or file actually lives in physical or virtual storage, filter active volumes by filesystem type or runtime attributes, and track dynamic mount-table alterations in real time as they happen.
The Architectural Genesis: From /etc/mtab to /proc/self/mountinfo
To comprehend why findmnt has become an indispensable primitive in modern Linux systems engineering, one must trace the architectural evolution of the kernel's Virtual File System (VFS) and the historical failure modes of user-space mount tracking.
(PostgreSQL, systemd, containerd)"] end subgraph KernelVFS["Linux Virtual File System (VFS) Layer"] SysCalls["System Calls
(open, stat, mount)"] DentryTree["dentry / inode Tree
(Path resolution graph)"] VfsMountTree["struct vfsmount Tree
(Per-namespace Mount Tree)"] FSOps["Specific FS Operations
(ext4, xfs, btrfs, tmpfs)"] SubtreeEngine["Shared Subtree Engine
(shared, slave, private propagation)"] end subgraph LibMountLayer["util-linux libmount"] ProcMountinfo["/proc/self/mountinfo
(Kernel VFS state interface)"] LibMount["libmount Engine
(Parsing, token caching, canonical path resolution)"] end subgraph DiagnosticLayer["findmnt Command"] Findmnt["findmnt CLI
(Tree rendering, filter evaluation, JSON/raw telemetry)"] end App --> SysCalls SysCalls --> DentryTree SysCalls --> VfsMountTree DentryTree --- FSOps VfsMountTree --- SubtreeEngine VfsMountTree --> ProcMountinfo ProcMountinfo --> LibMount LibMount --> Findmnt
The Inherent Fragility of Legacy /etc/mtab
In classical Unix implementations and early Linux distributions, user-space tools maintained an ambient state file at /etc/mtab. Whenever the mount(8) binary attached a block device to a directory, it executed a bifurcated task: it invoked the mount(2) system call to mutate kernel state, and subsequently appended a descriptive line of text to /etc/mtab.
This design was fundamentally flawed. Because /etc/mtab resided in user space on a mutable root filesystem, it was vulnerable to write locks, file corruption during abrupt power events, and race conditions under concurrent execution. More critically, if the root filesystem was mounted read-only during single-user emergency rescue operations, /etc/mtab could not be updated at all.
The Namespace Revolution and the Birth of mountinfo
The legacy paradigm collapsed entirely with the integration of Linux mount namespaces (CLONE_NEWNS) in Linux 2.4.19 and the subsequent introduction of shared subtrees by Al Viro in Linux 2.6.15. In a containerised topology, every process can reside within an independent mount namespace exhibiting a totally distinct view of the filesystem hierarchy. A single global file like /etc/mtab is structurally incapable of reflecting per-process VFS reality.
The kernel initially addressed this by exposing /proc/mounts (a symlink to /proc/self/mounts). However, /proc/mounts suffered from severe informational deficits: it could not accurately represent peer-group propagation IDs, distinguish multiple bind mounts sharing identical superblock definitions, or expose per-mount flags independently from superblock flags.
To resolve these architectural limitations, the Linux kernel introduced /proc/[pid]/mountinfo in version 2.6.26 (documented comprehensively in proc(5)). This pseudo-file exposes a comprehensive 36-field-capable vector per mount point:
$$\text{Mount Entry} = \langle M_{\text{id}}, P_{\text{id}}, \text{dev}{\text{maj:min}}, R{\text{root}}, T_{\text{target}}, O_{\text{mount}}, F_{\text{optional}}, \dots, S_{\text{type}}, S_{\text{source}}, O_{\text{super}} \rangle$$
Where:
- $M_{\text{id}}$ represents the unique integer identifier of the mount.
- $P_{\text{id}}$ represents the parent mount identifier, allowing deterministic tree reconstruction without heuristic path parsing.
- $R_{\text{root}}$ isolates the root directory within the backing filesystem (enabling detection of sub-directory bind mounts).
- $T_{\text{target}}$ defines the mount target path relative to the process's root.
- $F_{\text{optional}}$ encapsulates shared subtree propagation tags (e.g., shared:N, master:N).
Directly parsing /proc/self/mountinfo using shell scripts is fraught with peril; paths containing whitespace or octal escape sequences, complex propagation tags, and overmounted directories require robust parsing logic. findmnt, developed as a central component of the util-linux suite and built upon the foundational libmount library, was engineered to serve as the definitive, high-performance interface for querying this kernel VFS topology.
Core Flags and Quick-Start Reference
The utility's command-line interface is modular and expressive. The table below delineates the operational flags essential for daily production engineering:
| Flag | Long Option | Architectural Function |
|---|---|---|
-t |
--types <list> |
Restricts evaluation to a comma-delimited subset of filesystem types (e.g., ext4, xfs, overlay). |
-T |
--target <path> |
Resolves the exact filesystem responsible for an arbitrary target path or file via recursive VFS ancestry lookup. |
-o |
--output <list> |
Selects the precise output projection columns (e.g., TARGET,SOURCE,FSTYPE,OPTIONS,PROPAGATION). |
-O |
--options <list> |
Filters mounts matching specific mount options (e.g., ro, rw, noatime, nodev). |
-l |
--list |
Enforces a flat, tabular output format rather than a nested tree graph. |
-J |
--json |
Generates a valid, schema-compliant JSON document for programmatic ingestion. |
-p |
--poll[=<list>] |
Monitors /proc/self/mountinfo via kernel poll(2)/epoll(7) notifications, logging changes as they occur. |
-R |
--submounts |
Recursively matches and outputs all sub-mounts located beneath the designated target directory. |
The Essential Baseline Diagnostic
For an immediate, structural overview of an unfamiliar Linux system, execute findmnt without arguments, or explicitly request the full tree view:
findmnt --tree
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda2 ext4 rw,relatime,errors=remount-ro
+--/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
| +--/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
| +--/sys/fs/cgroup cgroup2 cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate
| \--/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime
+--/proc proc proc rw,nosuid,nodev,noexec,relatime
+--/dev udev devtmpfs rw,nosuid,noexec,relatime,size=16345856k,nr_inodes=4086464,mode=755
| +--/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
| +--/dev/shm tmpfs tmpfs rw,nosuid,nodev
| \--/dev/hugepages hugetlbfs hugetlbfs rw,relatime,pagesize=2M
+--/run tmpfs tmpfs rw,nosuid,nodev,noexec,relatime,size=3276800k,mode=755
\--/var/lib/docker/overlay2/l/XYZ none overlay rw,relatime,lowerdir=...,upperdir=...,workdir=...
The output constructs a clean visual tree displaying parent-child dependencies directly from the kernel's $M_{\text{id}} \to P_{\text{id}}$ table, instantly demystifying pseudo-filesystems (sysfs, cgroup2, devtmpfs) and exposing actual physical storage mount points.
Five Real-World Production Scenarios
1. Isolating Container Workloads Across High-Density Nodes
Scenario: On a heavily loaded Kubernetes node running hundreds of container pods, standard df or mount commands output an unreadable mess of ephemeral overlay filesystems and volume projections. A storage alert indicates high inode consumption on local storage, and you must isolate physical host persistent volumes (ext4, xfs) alongside active container storage layers (overlay), stripping away hundreds of noise-inducing virtual filesystems (tmpfs, sysfs, cgroup2, proc).
findmnt -t ext4,xfs,overlay --tree -o TARGET,SOURCE,FSTYPE,SIZE,USED,USE%
TARGET SOURCE FSTYPE SIZE USED USE%
/ /dev/nvme0n1p2
| ext4 480G 142G 30%
+--/var/lib/kubelet/pods/8c23.../volumes/kubernetes.io~csi/pvc-49a.../mount
| /dev/nvme1n1
| xfs 1.9T 1.4T 74%
\--/var/lib/docker/overlay2/a1b2c3d4e5f6.../merged
overlay overlay 480G 142G 30%
Line-by-Line Technical Breakdown
findmnt -t ext4,xfs,overlay: Instructslibmountto construct a filter mask that evaluates each mount record's filesystem type, discarding any entry not matching this allowlist.--tree: Enforces recursive parent-child hierarchy reconstruction based on internalparent_idrelationships.-o TARGET,SOURCE,FSTYPE,SIZE,USED,USE%: Formats the output columns, invokingstatvfs(2)under the hood for each matched mount point to collect real-time capacity and utilisation figures./dev/nvme0n1p2: Demonstrates the root host system volume operating underext4./var/lib/kubelet/.../mount: Pinpoints an isolated CSI-managed block volume formatted withxfs, operating at 74% capacity.overlay: Displays the active container write layer, bound to the underlying host root filesystem storage pool.
Actionable Next Steps
The systems administrator immediately identifies that /dev/nvme1n1 (the attached CSI database persistent volume) is approaching capacity (74%), while the host container runtime volume remains healthy at 30%. The engineer can trigger a Kubernetes Persistent Volume Claim (PVC) storage expansion without disrupting the host node.
2. Safeguarding Automated Backup Pipelines via Path Ancestry Assertion
Scenario: An automated enterprise backup daemon executes every midnight to snapshot PostgreSQL databases located at /var/lib/postgresql/data. If the external SAN or NVMe-oF network volume fails to mount during system boot, the target directory exists merely as an empty directory on the local root filesystem (/dev/sda2). If the backup script executes against an unmounted mount point, it will snapshot an empty folder or silently dump gigabytes of data into the small host root partition, triggering cascading service outages.
The backup script must assert that /var/lib/postgresql/data is currently backed by a dedicated, healthy xfs filesystem on a specific storage volume.
findmnt -T /var/lib/postgresql/data --noheadings --output SOURCE,FSTYPE,TARGET
/dev/mapper/vg_db-lv_postgres xfs /var/lib/postgresql/data
Implementation in Production Defensive Bash:
#!/usr/bin/env bash
set -euo pipefail
TARGET_PATH="/var/lib/postgresql/data"
EXPECTED_FS="xfs"
EXPECTED_DEV="/dev/mapper/vg_db-lv_postgres"
# Execute programmatic VFS target verification
if ! MOUNT_DATA=$(findmnt -T "${TARGET_PATH}" --noheadings --output SOURCE,FSTYPE,TARGET); then
echo "CRITICAL: Path ${TARGET_PATH} is not associated with any active mount point!" >&2
exit 1
fi
READ_SOURCE=$(awk '{print $1}' <<< "${MOUNT_DATA}")
READ_FSTYPE=$(awk '{print $2}' <<< "${MOUNT_DATA}")
READ_TARGET=$(awk '{print $3}' <<< "${MOUNT_DATA}")
if [[ "${READ_TARGET}" != "${TARGET_PATH}" ]]; then
echo "CRITICAL: ${TARGET_PATH} is NOT an explicit mount target! Traversed up to parent: ${READ_TARGET}" >&2
exit 2
fi
if [[ "${READ_FSTYPE}" != "${EXPECTED_FS}" || "${READ_SOURCE}" != "${EXPECTED_DEV}" ]]; then
echo "CRITICAL: Mount mismatch! Expected ${EXPECTED_DEV} (${EXPECTED_FS}), but detected ${READ_SOURCE} (${READ_FSTYPE})" >&2
exit 3
fi
echo "ASSERTION SUCCESS: ${TARGET_PATH} correctly mounted on ${READ_SOURCE}. Proceeding with snapshot."
Line-by-Line Technical Breakdown
-T /var/lib/postgresql/data(or--target): Performs canonical VFS path resolution. Unlike a naive grep for a path string,-Tinspects the path's inode and traces up the directory tree to identify the closest enclosing mount point.--noheadings: Suppresses the column header output, emitting pure data suitable for token parsing.--output SOURCE,FSTYPE,TARGET: Restricts the output vector to the block device name, the filesystem format, and the explicit mount target.- If
/var/lib/postgresql/datais unmounted,findmnt -Twill resolve to/(the root filesystem). The conditional script logic checks[[ "${READ_TARGET}" != "${TARGET_PATH}" ]], catching the anomaly before data loss can occur.
Actionable Next Steps
The script safely halts execution if the storage volume is missing, dispatching a high-priority alert to the operations team while preventing destructive write operations onto the host root partition.
3. Debugging Kubernetes CSI Mount Propagation Across Container Namespaces
Scenario: A stateful storage CSI plugin (such as Ceph-RBD, Longhorn, or Portworx) fails to publish volumes to worker pods. The container storage daemon reports that the volume was successfully attached to the host, yet application pods running inside their own mount namespaces throw ENOENT or observe an empty directory. You suspect that the host mount point was created with incorrect mount propagation flags (rprivate instead of rshared), preventing mount events generated by the CSI driver on the host from propagating down into child container namespaces.
findmnt -o TARGET,SOURCE,PROPAGATION,FS-OPTIONS /var/lib/kubelet
TARGET SOURCE PROPAGATION FS-OPTIONS
/var/lib/kubelet /dev/sdb1 shared rw,relatime,attr2,inode64,noquota
Line-by-Line Technical Breakdown
findmnt ... /var/lib/kubelet: Interrogates/proc/self/mountinfofor the precise mount record governing the Kubernetes kubelet working tree.-o TARGET,SOURCE,PROPAGATION,FS-OPTIONS: Selects the target path, source block device, VFS mount propagation model, and filesystem-specific options.PROPAGATION: shared: Represents the core finding. In accordance with the Linux Kernel Shared Subtrees Specification, a propagation value ofsharedindicates that any mount or unmount event occurring under this tree will automatically replicate to all peer groups across dependent container namespaces.- If this field instead reported
privateorslave, sub-mounts created by the container runtime would remain invisible to container processes.
(Propagation: shared)"] end subgraph ContainerNS["Container Mount Namespace"] ContainerKubelet["/var/lib/kubelet
(Propagation: slave)"] end HostKubelet -- "CSI volume mount event propagates across boundary" --> ContainerKubelet
Actionable Next Steps
If the propagation displays private, the engineer executes:
mount --make-rshared /var/lib/kubelet
and updates the systemd service unit (kubelet.service) with MountFlags=shared to persist the configuration across reboots.
4. Detecting Emergency Read-Only Remounts After Storage Degradation
Scenario: A cloud provider block storage volume (such as AWS EBS or GCP Persistent Disk) experiences a transient I/O latency spike or dropped write-acknowledgement frame. The kernel filesystem driver (ext4 or xfs), operating under standard safety policies (errors=remount-ro), instantly transitions the VFS superblock to a read-only state to prevent disk corruption. Applications crash with I/O errors, but metrics daemons that only check whether the volume is mounted report everything as green.
You need an immediate command to scan the entire operating system and enumerate every filesystem currently locked in a read-only state.
findmnt -l -O ro -o TARGET,SOURCE,FSTYPE,OPTIONS
TARGET SOURCE FSTYPE OPTIONS
/ /dev/nvme0n1p2 ext4 ro,relatime,errors=remount-ro
/data/analytics/clickhouse /dev/nvme2n1 ext4 ro,noatime,errors=remount-ro
Line-by-Line Technical Breakdown
-l(or--list): Flattens the output into a pure tabular listing, disabling tree indentation to simplify parsing and sorting.-O ro(or--options ro): Filters kernel mount records strictly for filesystems containing thero(read-only) attribute in their active runtime option string.-o TARGET,SOURCE,FSTYPE,OPTIONS: Prints the full operational profile./dev/nvme0n1p2 ... ro,relatime,errors=remount-ro: Demonstrates that the root filesystem encountered a critical storage fault and invoked its defensive remount policy (errors=remount-ro), switching fromrwtoro.
Actionable Next Steps
- The administrator inspects
dmesg -T | grep -E "EXT4-fs|Buffer I/O error"to pinpoint the specific sector error or storage driver timeout. - Once the underlying hardware or network-attached block device is verified healthy, the administrator initiates a controlled filesystem remount:
bash mount -o remount,rw /data/analytics/clickhouse - If the remount fails due to structural metadata inconsistencies, the administrator schedules an emergency maintenance window to unmount the volume and execute
fsck.ext4 -fvy /dev/nvme2n1.
5. Deterministic JSON Telemetry for Enterprise Observability Agents
Scenario: You are authoring a custom, low-overhead Node-Problem-Detector plugin or Go/Python observability daemon that monitors storage health across a fleet of 5,000 bare-metal servers. The agent must parse the local storage topology without spawning shell pipelines (awk, sed, grep), avoiding the performance overhead and formatting inconsistencies of legacy utilities.
findmnt --json -o TARGET,SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,OPTIONS
{
"filesystems": [
{
"target": "/",
"source": "/dev/sda2",
"fstype": "ext4",
"size": "471.6G",
"used": "141.8G",
"avail": "305.8G",
"use%": "30%",
"options": "rw,relatime,errors=remount-ro"
},
{
"target": "/var/lib/containers/storage/overlay",
"source": "overlay",
"fstype": "overlay",
"size": "471.6G",
"used": "141.8G",
"avail": "305.8G",
"use%": "30%",
"options": "rw,relatime,lowerdir=/var/lib/containers/storage/overlay/l/..."
}
]
}
Line-by-Line Technical Breakdown
--json: Instructslibmountto serialise its internal parsing structures directly into a clean, RFC 8259-compliant JSON object.-o TARGET,SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,OPTIONS: Defines the exact key-value pairs exposed in the JSON schema.- Numbers and capacity values are converted into machine-digestible strings with consistent units, or raw bytes when combined with the
-b(--bytes) flag. - The output guarantees deterministic keys, allowing zero-copy deserialization in Go via
json.Unmarshaldirectly into a strongly typed struct:
type MountReport struct {
Filesystems []struct {
Target string `json:"target"`
Source string `json:"source"`
Fstype string `json:"fstype"`
Size string `json:"size"`
Used string `json:"used"`
Avail string `json:"avail"`
UsePct string `json:"use%"`
Options string `json:"options"`
} `json:"filesystems"`
}
Actionable Next Steps
The observability engineer configures the monitoring daemon to execute findmnt -b --json on a periodic timer or attaches an epoll listener to /proc/self/mountinfo via findmnt --poll --json, streaming storage lifecycle events directly to metrics backends.
What Can Go Wrong: Edge Cases, Shadow Mounts, and Failure Modes
While findmnt provides unmatched visibility into the Linux VFS, subtle architectural nuances can cause confusion if operators are unaware of them.
Common Mistake 1: Conflating Exact Match (/path) with Enclosing Target Resolution (-T /path)
One of the most dangerous scripting pitfalls involves querying a path without the -T flag.
# INCORRECT: Exact match query
findmnt /var/log/audit/audit.log
If /var/log/audit/audit.log is a plain file sitting inside the /var mount point, the command above returns an exit code of 1 and emits no output. This is because findmnt <path> without -T queries the mount table for a mount point whose literal TARGET is /var/log/audit/audit.log.
# CORRECT: Canonical VFS target lookup
findmnt -T /var/log/audit/audit.log
The -T (--target) flag instructs libmount to perform canonical path traversal via stat(2) and namei resolution, matching the nearest parent filesystem (such as /var or /).
In production shell scripts, always use findmnt -T "${PATH}" when checking which filesystem hosts an arbitrary file or directory. Relying on exact string matches leads to silent validation failures.
Common Mistake 2: Parsing Column-Padded Terminal Output
By default, when standard output is connected to a terminal, findmnt dynamically calculates column widths and pads them with spaces to create an aesthetically pleasing layout.
If a script attempts to process this output using cut -d' ' or basic regular expressions, it will fail whenever device paths or target directories contain spaces, or when column widths shift based on terminal dimensions.
The Solution: For automated scripts, never parse human-oriented tables. Use one of these machine-safe formats:
# Option A: Zero-ambiguity JSON format
findmnt --json -o TARGET,SOURCE
# Option B: Raw, unpadded whitespace-delimited format
findmnt --raw -o TARGET,SOURCE
# Option C: Key-value pairs formatted for shell evaluation
findmnt --pairs -o TARGET,SOURCE
Common Mistake 3: The "Shadow Mount" Blindspot (Overmounted Directories)
The Linux VFS permits an administrator or process to mount a filesystem directly on top of a non-empty directory, or even directly on top of an existing mount point. When this occurs, the previous contents or underlying mount point become completely invisible (shadowed) to standard user-space file operations.
Step 1: Mount /dev/sdb1 on /mnt/storage (Contains: fileA, fileB)
Step 2: Mount /dev/sdc1 on /mnt/storage (Contains: fileC)
Result: fileA and fileB are now inaccessible, but /dev/sdb1 remains mounted in kernel memory.
To detect overmounted directories, interrogate the kernel mount tree for duplicate TARGET paths using findmnt:
findmnt -o TARGET,SOURCE,FSTYPE,FS-OPTIONS | sort | uniq -d -w 30
Alternatively, inspect the full list of mounts sorted by their kernel Mount ID:
findmnt -l -o TARGET,SOURCE,MAJ:MIN
If multiple block devices claim identical TARGET paths, you have discovered a shadow mount. The administrator can safely reveal the underlying directory by unmounting the topmost layer:
umount /mnt/storage
Real-Time Storage Telemetry: The Polling Engine
A little-known but powerful capability of findmnt is its built-in kernel monitoring engine. Rather than repeatedly invoking findmnt in a CPU-intensive polling loop, you can instruct findmnt to block on kernel notification hooks using the Linux poll(2) subsystem:
findmnt --poll
Whenever a storage volume is mounted, unmounted, or remounted anywhere on the system, the kernel increments the sequence counter on /proc/self/mountinfo, waking up findmnt to instantly log the event:
ACTION TARGET SOURCE FSTYPE OPTIONS
mount /mnt/usb-backup /dev/sdc1 ext4 rw,relatime
umount /mnt/usb-backup /dev/sdc1 ext4
remount /var/lib/postgresql/data /dev/sdb1 xfs ro,relatime
This feature is invaluable for diagnosing short-lived transient mounts created by systemd auto-mounters, backup cron jobs, or container runtimes.
Today's Takeaway
The legacy habit of relying on /etc/mtab and running unformatted mount or df commands is an operational liability on modern Linux systems. Open your terminal right now and run findmnt -t ext4,xfs,btrfs,zfs,overlay --tree. In less than five seconds, you will see an unobstructed structural map of every persistent and containerised filesystem on your machine. Incorporate findmnt -T into your automation scripts to validate storage targets before performing disk I/O, and switch your observability collectors to findmnt --json to ensure robust, future-proof storage management.
Authoritative References and Technical Documentation
- findmnt(8) Linux Manual Page β Official util-linux interface specifications and flag definitions.
- proc(5) Linux Manual Page β Comprehensive schema definition for
/proc/[pid]/mountinfoand related VFS pseudo-files. - mount_namespaces(7) Linux Programmer's Manual β The formal specification of Linux mount namespaces, isolation boundaries, and
CLONE_NEWNS. - Linux Kernel Shared Subtrees Documentation β Al Viro's definitive architectural guide to shared, slave, private, and unbindable mount propagation.
- util-linux Core Repository β Upstream source code for
findmntandlibmount. - Arch Linux File Systems Architecture Guide β Production guide to mounting, block device topologies, and VFS management.