我正在设置一个 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——使用单独的文件系统。
对于数据库来说,这始终是一个不错的选择,它为您提供了调整数据库性能的更多灵活性,但需要管理额外的挂载点,这会带来一些不便。通常还会为您提供更多用于快照数据库备份的选项(在您可以快照和备份副本而不是主副本的情况下,这更加方便)