许多Linux运维工程师都知道,每个普通文件实际上隐藏着三个关键时间戳:atime(访问时间)、ctime(inode变化时间)和mtime(修改时间)。深入研究后会发现,每个时间戳都对应着文件生命周期中的不同节点。然而在实际场景中,例如Web服务器上大量的小图片,每次访问都会记录atime,导致频繁写入磁盘,I/O性能瞬间飙升。此时,一个最直接的优化思路便浮出水面:能否关闭访问时间的记录功能?
答案显然是肯定的。配置方法并不复杂,无需调整任何内核参数,只需在文件系统的挂载配置文件里稍作改动。打开 /etc/fstab,找到对应分区那一行,然后在挂载选项中添加两个参数:noatime 和 nodiratime。前者让文件本身不再更新访问时间,后者让目录也不更新——双管齐下,有效降低磁盘写入频率。
举个例子:假设你的图片都存放在 /data/pics 分区下,设备为 /dev/sda5,文件系统为 ext3。那么在 fstab 中对应的行应写成:
/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0
挂载完成后,再次访问这些文件时,系统不会因为记录访问时间而去写磁盘,I/O负载会立刻降低。对于包含大量小文件的热点目录,这一调优技巧效果立竿见影。当然,前提是你确实不需要知道文件的最近访问时间——在大多数Web场景下,这个信息其实无关紧要。
