Linux 默认禁用实时 atime 更新以提升性能,需通过挂载选项(relatime/noatime/strictatime)控制;strictatime 可临时用 mount -o remount,strictatime / 启用,或永久修改 /etc/fstab 实现;btime 不受此影响。

Linux 默认会记录文件的访问时间(atime),但出于性能考虑,大多数现代发行版在挂载文件系统时已默认禁用实时 atime 更新。要开启或调整 atime 行为,关键在于修改文件系统的挂载选项,而不是运行某个“开关命令”。
查看当前挂载选项是否启用 atime
执行以下命令,检查根文件系统或其他目标分区的挂载参数:
mount | grep " / " 或 findmnt -T /
观察输出中是否包含 relatime、noatime 或 strictatime。常见情况:
- relatime(默认):只在 mtime/ctime 比 atime 新,或 atime 超过 24 小时未更新时才刷新 —— 平衡性选择,既保留部分 atime 可用性,又减少磁盘写入。
- noatime:完全不更新 atime —— 性能最优,但 atime 始终停滞,stat 查看无变化。
- strictatime:每次读取都更新 atime —— 符合传统 POSIX 语义,但频繁小文件读会带来明显 I/O 开销。
临时启用 strictatime(重启失效)
用 mount -o remount,strictatime / 重新挂载根分区(需 root 权限)。该操作立即生效,适用于调试或验证 atime 行为。
验证是否生效:用 cat 文件名 后执行 stat 文件名,观察 “Access” 时间是否随每次 cat 更新。
永久启用 strictatime
编辑 /etc/fstab,找到对应文件系统行,在第四个字段(挂载选项)中将 relatime 或 noatime 替换为 strictatime。例如:
UUID=xxx / ext4 defaults,strictatime 0 1
保存后执行 sudo mount -a 重读配置(或重启生效)。
注意:btime 不受此控制影响
创建时间(btime)由文件系统在文件首次写入时记录,且不可通过挂载选项开启/关闭。它依赖于底层文件系统支持(如 ext4、xfs),且无法被用户态程序直接修改。启用 atime 控制对 btime 完全无影响。











