咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
1.每个文件内节点和目录内节点都有三个与之相关的时间戳:
ctime — 最后一次修改内节点状态的时间
mtime — 最后一次修改文件(或者目录)数据的时间
atime — 最后一次访问文件(或者目录)数据的时间
你可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
stat filename
2.ls命令查看:
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
3.atime更新的一些问题及解决方法
如果启用了 atime 更新,因为在 GFS2 和其它 Linux 文件系统中这是默认设置,那么每次在读取文件时都需要更新其内节点。
根据 POSIX 的规定,Linux 以及 Unix 等系统都要为系统中的所有文件记录文件的最后访问时间,叫做 atime。对于某些应用来说,atime 是很重要的信息。比如一些邮件程序会通过邮件文件的 atime 来判断此邮件是否已读;一些备份和清理程序会根据文件在多长时间内没有被访问,来决定是否对文件进行清理和归档。
但是对于大部分应用来说,atime 信息并不重要,而系统更新 atime 所带来的开销却是巨大的。因为系统每访问一次某个文件,就要对这个文件更新一个新的 atime 时间值。我这里所说的访问,并不是从用户角度来看的打开一个文件,而是系统底层的每一次 open 和 read 等操作。设想一下,我们每对文件进行一次读操作,都要引起一个对磁盘的写操作,即使我们要读的内容已经存在于内存的 Page Cache 中,还是要对磁盘进行一个写操作。这样引起的开销确实是巨大的,这些写操作会使磁盘更多的处于忙碌状态,这对系统性能(因为磁盘在完成一个写操作的时候会暂时阻止其他的写操作)以及电量消耗都是不利的。
使用 noatime 挂载用来降低 atime 更新效果的方法
使用 noatime 挂载,可在那个文件系统中禁用 atime 更新。
当挂载文件系统时,可指定 Linux 挂载选项 noatime,它可在那个文件系统中禁用 atime 更新。
用法
mount BlockDevice MountPoint -o noatime
示例:mount /dev/sdb5 /home/sdb5 -o noatime
也可以将 noatime 选项写在 /etc/fstab 文件里。
如果不想对整个文件系统禁止 atime 更新,而只是想针对某些文件或目录禁止,则可以通过 chattr 命令来完成,如下面的命令:
chattr -R +A /some/dir
可以对某个目录及其下面的所有文件禁止 atime 更新