Linux怎么查看磁盘分区挂载选项

作者:技术拾光时间:2026-07-02 09:08:01浏览:593

当前内核实际生效的挂载选项存储在/proc/mounts中,findmnt命令可准确读取。/etc/fstab仅为启动时的配置意愿,mount命令存在过滤与美化。df-h不显示挂载选项。修改fstab后需执行remount,注意路径匹配及内核参数可能会覆盖局部设置。

许多用户在排查磁盘挂载问题时,习惯性查看 /etc/fstab 或直接使用 mount 命令。然而,这两种方式存在一定的滞后性——/etc/fstab 仅反映系统启动时的配置意图,而 mount 命令的输出经过过滤与美化。真正反映当前内核实际设定的,是 /proc/self/mountinfo 文件,而 findmnt 命令正是专用于解析它的工具。

Linux怎么查看磁盘分区挂载选项

直接查看当前生效的挂载选项,用 findmnt 最准确

不要只依赖 /etc/fstab,它只是启动时的“愿望清单”。实际运行时,systemd、mount -o remount 或内核启动参数都可能覆盖其设置。findmnt 读取 /proc/self/mountinfo,字段语义明确,能正确处理空格和特殊字符,输出信息比 mount 更完整。

  • findmnt /dev/sdb1:直接查询设备,输出包含完整的挂载选项列(例如 rw,noatime,stripe=400)
  • findmnt /data:查询挂载点,比 mount | grep /data 更不易遗漏
  • findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS -t ext4:按文件系统类型筛选,可避开 tmpfs、proc 等伪文件系统

为什么 /proc/mounts 比 mount 命令更底层、更可信

mount 命令本质上是 /proc/mounts 的格式化输出,但存在一个隐藏风险:它默认会过滤掉 debugfs、securityfs 等内核内部挂载项,某些动态挂载(如 systemd-mount 或 autofs)也可能被遗漏。而 /proc/mounts 是内核维护的实时快照,其第四列是用逗号分隔的字符串(例如 rw,relatime,data=ordered),这个字符串正是当前真正起作用的参数——不经过任何中间层。

  • 快速定位根分区:grep " / " /proc/mounts
  • 整齐列出所有挂载点及其选项:awk '{print $2,$4}' /proc/mounts | column -t
  • 注意:mount 命令的输出顺序不固定,而 /proc/mounts 的字段位置稳定,脚本解析时使用后者更安全

df -h 不显示挂载选项,不要依赖它判断只读状态

df -h 仅统计磁盘空间用量,完全不涉及 ro/rw、noatime、barrier=1 等行为控制项。你能看到 /boot 挂载在 /dev/sda1 上,但无法判断它是只读还是可写。一旦误配为 ro,执行 touch /boot/test 会直接报错 Read-only file system,而 df -h 仍显示一切正常——这很容易造成误导。

  • 确认挂载点是否可写,必须使用:findmnt -o OPTIONS /boot 或 grep /boot /proc/mounts
  • df -T 能补充文件系统类型(例如 xfs),但仍不反映实际挂载行为
  • 部分发行版(如 RHEL 8+)通过 systemd-remount-fs.service 动态覆盖 fstab 中的配置,此时 /proc/mounts 才是唯一的真实来源

修改了 /etc/fstab 却未生效?常见原因就这三类

你在 fstab 的第四字段添加了 ,noatime,但 findmnt / 显示的仍是 relatime。此时不必急于重写配置,大概率不是语法错误,而是未触发重挂载,或被更高优先级的机制覆盖。

  • 未执行 sudo mount -o remount /:修改 /etc/fstab 不会自动重新挂载已在运行中的分区
  • LVM 或加密卷的路径不匹配:fstab 中写的是 /dev/sdb1,但实际挂载的是 /dev/mapper/vg-lv,修改的选项并未作用于真正的挂载点
  • 内核启动参数全局覆盖:例如 rootflags=noatime 会直接覆盖单个挂载点的局部设置

归根结底,真正起决定性作用的,永远是 /proc/mounts 中第四列的内容——其他的一切都只是中间状态或静态意图。