关闭文件系统上的 atime

QWa*_*ade 28 linux unix filesystems mongodb

我正在设置一个 mongoDB 副本集,我想做的第一件事就是关闭文件系统上的 atime。经过一番研究,我不反对这样做,但我不得不问,atime有什么用?我搜索了互联网,发现很少有“这个应用程序或这个过程使用时间,如果你把它关掉你会很愚蠢”这样的警告,但是作为一个天生偏执的人,我不得不怀疑。

那么,什么使用 atime,如果我将其关闭,会破坏什么?

Ste*_*day 27

mutt是一个电子邮件客户端,它使用文件访问时间来监视到达 mbox 格式邮箱的新邮件。显然,这个问题并不严重,而且很容易解决

除此之外,很难找到突破的例子noatime。我noatime在所有文件系统上运行了许多 Linux 服务器,我不记得曾经见过任何可归因于noatime.

如果您担心noatime一般使用,您可以为您的 mongoDB 内容提供一个单独的文件系统,并仅使用noatime.

编辑

在 kerneltrap.org上发现了一个有趣的博客,其中引用了 Linux 开发人员(Linus Torvalds、Ingo Molnar、Alan Cox 等)之间关于atime. 在 Ingo 的第二封电子邮件中,他是这样说的:

...我对 ext3 没有真正的抱怨 - 必须具有 /etc/fstab 中的“noatime,nodiratime”的强制性资格。这非常明显地加快了速度 - 特别是在访问大量文件时。由于 atime 不断更新,每个 Linux 桌面和服务器都受到明显的 IO 性能下降的影响,这有点奇怪,而它只有两个真正的用户:tmpwatch [可以配置为使用 ctime 所以这不是一个大问题]和一些备份工具。(好吧,我猜也是邮件通知。)在数以万计的应用程序中。因此,对于大多数文件工作负载,我们为 Windows 提供了 20%-30% 的性能优势,而几乎一无所获。


Ign*_*ams 10

轮询文件使用情况的工具(例如临时文件清理器)使用它。您可以在某些文件系统和操作系统上通过使用relatime来解决这个问题,它只会在自上次更新以来经过一定时间后才更新 atime。


Fra*_*ans 8

您还可以为 mongoDB 副本集创建一个单独的挂载点。然后,您可以仅在该挂载点上设置 noatime 参数,而不会影响任何其他程序。


Ada*_*m C 5

作为这里的后续,在relatime2009 年 3 月左右发布的 2.6.30 内核中被设为默认值。这意味着您从 noatime 设置中看到的收益在任何现代内核上都会减少。

它仍然是一个建议,因为 MongoDB 仍有性能提升,但只要您使用的是合理的当前内核版本,它就不再像以前那样重要。

另外,除了这里提到的软件,我还看到了备份工具使用的atime。