优先用findmnt是因为它结构化强、字段完整、不依赖缓存,能准确显示设备、挂载点、文件系统类型、选项(含ro/rw)、嵌套关系,且覆盖bind mount和overlayfs;而mount格式松散、字段不定,不反映实际生效选项,也常漏systemd或nfs自动挂载项。

直接用 findmnt 就行,它能一次性看清设备、挂载点、文件系统类型、选项、是否只读,不漏 bind mount 和 overlayfs,比 mount 和 df 更可靠。
为什么优先用 findmnt 而不是 mount
mount 输出格式松散、无表头、字段顺序不固定,不同发行版输出可能不一致;它不显示挂载选项是否实际生效(比如指定了 -t xfs 但底层是 ext4),也不保证显示 systemd automount 或刚触发的 NFS 挂载。findmnt 底层读 /proc/mounts 和 /etc/fstab,还能交叉验证,输出结构稳定:
- 默认执行
findmnt,带表头,字段包括SOURCE、TARGET、FSTYPE、OPTIONS、VFS-OPTIONS - 加
-D显示设备绝对路径(如/dev/nvme0n1p2),避免/dev/disk/by-uuid/...别名混淆 - 加
--tree展示嵌套关系,比如/var/lib/docker/overlay2会缩进显示在/var/lib/docker下 - 加
-t ext4,xfs只过滤指定类型,跳过tmpfs、proc等虚拟文件系统
df -hT 是用来交叉验证挂载点空间和类型的
df -hT 不是挂载“详情”工具,但它能快速确认某个挂载点是否真实可用、有没有空间、文件系统类型是否匹配:
-
Mounted on列必须和findmnt的TARGET完全对得上,否则说明挂载异常或路径被覆盖 - 如果某路径在
findmnt里存在,但df -hT里没出现,大概率是该文件系统未启用 block 统计(如某些 FUSE 挂载) -
df -hT不显示挂载选项(如noatime、ro),也不能反映 bind mount 的源路径 - 查 inode 是否耗尽:运行
df -i /path,这是“磁盘有空间却写不进”的常见原因
遇到 SOURCE 为空或显示 ? 怎么办
这不表示出错,而是内核无法关联到物理块设备——常见于 tmpfs、bind mount、overlayfs 或卸载残留条目:
-
mount输出第一列为?:大概率是tmpfs或bind mount,看第三列(类型)和第四列(选项)确认 -
findmnt显示SOURCE为空:检查FSTYPE列,tmpfs、overlay、none都属此类 - 刚卸载过设备但还显示在列表中:可能是内核未及时清理,用
ls /mount/point实际访问验证是否真有效 - 想确认是否来自
/etc/fstab:运行findmnt -t ext4 --source /dev/sda2,输出中标有FSTAB标记的才是静态配置项
真正容易被忽略的是挂载状态和内核视图之间存在多层抽象——比如 systemd 的 automount、NFS 的按需挂载、容器里的 overlay 嵌套,这些都不会在 df 里体现,也未必立刻出现在 mount 输出中。所以排查时别只盯一个命令,findmnt /path + df -i /path + stat -f /path 这三步组合才够扎实。











