关闭文件系统上的 atime

关闭文件系统上的 atime

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

那么,atime 有什么用处?如果我将其关闭,会发生什么情况?

答案1

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

除此之外,很难找到在 上发生故障的例子noatime。我在所有文件系统上运行了许多 Linux 服务器noatime,我不记得曾经见过任何因 而导致的问题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,所以这不是一个大问题] 和一些备份工具。(好吧,我想 mail-notify 也一样。)在数万个应用程序中。因此,对于大多数文件工作负载,我们给 Windows 20%-30% 的性能优势,几乎没有任何好处。

答案2

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

答案3

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

答案4

我只想强调一点@Steven Monday——使用单独的文件系统。

对于数据库来说,这始终是一个不错的选择,它为您提供了调整数据库性能的更多灵活性,但需要管理额外的挂载点,这会带来一些不便。通常还会为您提供更多用于快照数据库备份的选项(在您可以快照和备份副本而不是主副本的情况下,这更加方便)

相关内容