relatime是linux内核2.6.29起默认启用的挂载选项,仅在mtime或ctime比atime新、或距上次atime更新超24小时时才更新atime,兼顾性能与兼容性。

relatime 是 Linux 内核自 2.6.29 起默认启用的挂载选项,专为在减少 atime 更新开销和保留基本时间语义之间取得平衡而设计。它不是完全禁用访问时间,而是只在必要时更新,既避免了 strictatime 的频繁写盘,又比 noatime 更兼容依赖 atime 的旧程序(如某些备份工具、邮件检索系统或老旧 CMS)。
relatime 的触发条件很明确
它仅在以下任一情况发生时才更新 atime:
- 当前文件的 mtime(修改时间)或 ctime(状态变更时间)比现有 atime 更新;
- 距上次 atime 更新已超过 24 小时(内核默认阈值,不可配置)。
这意味着:日常读取不会引发写入;只有当文件刚被修改后又被读取,或长期未访问后首次读取,才会触发一次 atime 更新。这种机制大幅降低小文件高频读场景(如 Web 静态资源服务、日志轮转扫描)下的元数据 I/O 压力。
如何启用 relatime
relatime 已是现代发行版(RHEL 8+/CentOS 8+、Ubuntu 20.04+、Fedora 32+)中大多数文件系统的默认行为,无需额外操作。但若需显式确认或强制启用,有以下方式:
- 临时挂载:
mount -o remount,relatime /mount/point - 永久生效:编辑 /etc/fstab,在对应条目的挂载选项字段添加 relatime(可与其他选项如 noatime 共存,但 relatime 会覆盖 noatime);例如:
UUID=xxx /data xfs defaults,relatime 0 2 - 验证是否生效:
findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS /data,查看输出中是否含 relatime。
relatime 与 noatime、nodiratime 的配合逻辑
relatime 本身只控制文件 atime,不作用于目录。若你仍希望进一步优化(比如大量目录遍历场景),可叠加 nodiratime:
mount -o remount,relatime,nodiratime /mount/point- 这样文件 atime 按 relatime 规则更新,目录 atime 则完全禁用。
- 注意:noatime 和 relatime 同时指定时,relatime 生效;noatime 和 nodiratime 可共存,分别作用于文件和目录。
哪些场景适合用 relatime
它特别适用于以下混合负载环境:
- 运行旧版 Nagios 插件或 find -atime 脚本的监控系统;
- 使用 mutt 或 alpine 等依赖 atime 标记新邮件的终端邮件客户端;
- 容器宿主机上同时承载数据库(需稳定性)和静态 Web 服务(需低延迟);
- 无法全面测试 noatime 兼容性的生产环境,作为过渡或兜底方案。











