直接查实时挂载选项用findmnt,它是唯一能准确反映当前内核实际生效参数的工具,读取/proc/self/mountinfo,字段清晰、不丢信息、兼容特殊字符;mount和/etc/fstab均不可靠,前者过滤部分内核挂载,后者仅为启动“愿望清单”,易被systemd或remount覆盖。

直接查实时挂载选项用 findmnt
findmnt 是唯一能准确反映当前内核实际生效挂载参数的工具。它读取 /proc/self/mountinfo,字段语义清晰、不丢信息、兼容空格和特殊字符。
mount 和 /etc/fstab 都不可靠:mount 会过滤 debugfs、securityfs 等内核内部挂载;/etc/fstab 只是启动时的“愿望清单”,可能被 systemd-mount、mount -o remount 或内核策略覆盖。
- 查设备:运行
findmnt /dev/sdb1,输出含完整选项列(如rw,noatime,stripe=400) - 查挂载点:运行
findmnt /data,比mount | grep /data更精准,不依赖文本匹配 - 按类型筛选:运行
findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS -t ext4,避开 tmpfs、proc 等伪文件系统
/proc/mounts 是内核级真相源
/proc/mounts 是内核维护的实时快照,第四列逗号分隔的字符串(如 rw,relatime,data=ordered)就是此刻真正起作用的参数。
mount 命令本质是美化它的输出,但有隐藏风险:某些动态挂载(如 autofs)可能漏掉,且字段顺序不稳定,脚本解析容易出错。
- 快速定位根分区:运行
grep " / " /proc/mounts - 整齐列出所有挂载点及其选项:运行
awk '{print $2,$4}' /proc/mounts | column -t - 注意:
df -h完全不显示挂载选项,别指望它判断只读——touch /boot/test报Read-only file system时,df -h依然显示正常
为什么 fstab 里的选项没生效
你加了 noatime 到 /etc/fstab 第四字段,但 findmnt / 仍显示 relatime,大概率不是配置写错了,而是没触发重挂载或被更高优先级机制覆盖。
- 修改
/etc/fstab后必须执行mount -o remount /才能让根分区生效 - systemd 服务(如
systemd-fsck@.service)可能在启动阶段覆盖 fstab 设置 - 某些容器环境或云平台(如 AWS EC2)会在 init 阶段强制注入挂载选项,绕过 fstab
UUID 和挂载点对应关系怎么看
lsblk -f 是最省事的组合命令:一条输出同时显示设备名、文件系统类型、UUID 和当前挂载路径,树状结构直观呈现 LUKS 加密层与映射卷的关系。
blkid 更底层,直接读 superblock 元数据,结果最权威,尤其适合脚本取值:
- 运行
sudo blkid /dev/nvme0n1p2 -s UUID -o value输出纯 UUID 字符串,无引号无前缀 -
/dev/disk/by-uuid/是符号链接集合,运行ls -lh /dev/disk/by-uuid/可确认内核是否认得该 UUID 并映射到哪个设备 - 注意:刚用
tune2fs -U改完 UUID,/dev/disk/by-uuid/可能滞后,udev没重载前链接还是旧的
复杂点在于挂载行为受多层机制影响:fstab、systemd mount unit、remount 调用、内核默认策略。只看一个地方必然漏判,findmnt + /proc/mounts + lsblk -f 三者交叉验证才稳。











