Linux系统不保存长期挂载历史,mount和/proc/mounts仅显示当前实时状态;journalctl是唯一带时间戳的可靠来源,可查本次启动以来的mount/unmount日志,但受日志保留策略限制。

为什么 mount 和 /proc/mounts 只显示当前状态
mount 命令和 /proc/mounts 都只反映内核当前维护的挂载树,是实时快照,不是日志。每次 umount 后对应条目就消失,不会留痕。/etc/mtab 在现代 systemd 系统中通常只是 /proc/self/mounts 的符号链接,行为一致——它不记录“曾经挂载过什么”,只记录“现在挂载着什么”。
journalctl 是最接近“历史”的可靠来源
如果你的系统使用 systemd(绝大多数现代发行版),journalctl 是唯一能查到带时间戳的挂载/卸载事件的地方:
- 运行
journalctl -b | grep -i 'mount\|unmount'查看本次启动以来的所有挂载相关日志 - 加
-u systemd-mount@*.service可筛选自动挂载单元的日志(如 automount 触发的挂载) - 用
journalctl --since "2026-06-01" | grep mount按时间范围过滤 - 注意:日志默认只保留最近 few days(取决于
/etc/systemd/journald.conf中的SystemMaxUse和MaxRetentionSec)
/var/log/syslog 或 /var/log/messages 可能含早期记录
某些发行版(如 Debian/Ubuntu 默认启用 rsyslog,RHEL/CentOS 8+ 默认用 journald)会把 mount 相关消息转发到传统 syslog 文件:
-
grep -i mount /var/log/syslog(Debian/Ubuntu) -
grep -i mount /var/log/messages(RHEL/CentOS 7 及更早) - 这些日志可能比 journal 更久远,但依赖 syslog 配置是否捕获 kernel 或 systemd 日志;且默认通常不记录普通用户
mount命令,只记录内核或 systemd 主动触发的行为
/etc/fstab 和 dmesg 的作用被高估了
/etc/fstab 不是历史,它是“期望配置”——只说明“开机时应该挂哪些”,不代表实际挂载过;dmesg | grep mount 几乎总为空,因为挂载不是内核模块加载,不走 printk 路径。真正有用的是 dmesg | grep -i "ext4\|xfs\|btrfs" 查文件系统初始化阶段的错误,而非挂载动作本身。
真正容易被忽略的点是:**挂载历史不可靠,也不该被当作运维依据**。生产环境需要可追溯的挂载行为,应主动记录——比如封装 mount 命令为 shell 函数并写入 audit log,或用 systemd unit 的 ExecStartPre= 打点日志。依赖系统自动留存“历史”,本身就是个风险假设。


















