What
在 Linux 文件系统中,每个文件都有三个主要的时间戳:
atime (access time):表示文件最后一次被 读取 的时间。
mtime (modification time):表示文件内容最后一次被 修改 的时间。
ctime (change time):表示文件或其元数据(如权限、所有者等)最后一次被 改变 的时间。
当你打开一个文件来读取它的内容时,Linux 默认会更新该文件的 atime。这个操作会涉及到磁盘写入,即使你只是读取数据,也可能会对性能产生一些影响,尤其是在频繁访问大量文件的系统上,比如 Web 服务器、邮件服务器或者进行大量编译的开发环境。
noatime
是一个文件系统挂载选项,它的作用是 禁用文件 atime 的更新。当你使用 noatime 挂载一个文件系统时,系统将不再记录文件的最后访问时间,从而减少了不必要的磁盘写入操作。
Advantage
提高性能:通过减少磁盘写入操作,可以提高文件系统的读写性能,尤其是在有大量小文件读操作的场景下。
减少磁盘 I/O:降低了对硬盘的读写负载,这对于固态硬盘(SSD)来说尤其有益,因为可以减少写入次数,从而延长 SSD 的寿命。
降低功耗:在一些嵌入式系统或移动设备上,减少磁盘 I/O 也能间接降低功耗。
Disadvantage
无法追踪文件访问时间:对于一些需要依赖文件访问时间来执行任务的应用程序(例如备份工具、文件清理脚本等),禁用 atime 可能会导致这些程序无法正常工作或做出错误的判断。
安全审计问题:在某些安全审计场景中,需要记录文件的访问时间以追踪潜在的恶意活动。禁用 atime 会使这部分信息缺失。
兼容性:大多数现代应用程序都设计为不需要精确的 atime,但仍有一些旧的或特定的应用程序可能会依赖它。
Config
UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef / ext4 defaults 0 1
UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef / ext4 defaults,noatime 0 1
Check
mount | grep " / "
/dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro)
Ref: