笔记:这是一个“记录我的过程”问题,我将写一个答案。幸运的是,serverfault 已经帮助我解决了这个问题,因为写下我的情况以便其他人能够评估它让我意识到发生了什么。
- 我在 Debian 服务器上使用 ext3 文件系统。
- 尽管我的主文件系统上几乎没有发生任何活动文件
kjournald
, (通过 看到)的活动非常活跃iotop
。 - 这种活动以周期性的爆发形式出现,使我的总体平均写入速度提高到大约 2 MB/秒(这让我非常担心,因为我想获得一些 SSD,并且这个速率实际上足以严重威胁当前型号非常慷慨的写入耐久性)。
- 我已经用 挂载了有问题的文件系统
noatime,nodiratime
。 - 我已经将文件系统的日志提交间隔从 5 秒增加到 300 秒。
发生了什么事?(剧透:这是用户空间的事情。我写这篇文章主要是为了强调可能违反直觉的潜在问题。)
答案1
看看发生了什么,运行在此服务器上的主应用程序管理着一个非常大、填充良好的目录树,并以不太理想的所有权和权限在该树中写入文件。因为让该应用程序更改这一点相当令人讨厌,并且文件需要相当快地修复其所有权和权限(有些延迟是可以的,但不要太多),所以我设置了一个 cron 作业,每分钟向大型、填充良好的目录树抛出一个质量chown -R
和chmod -R
。在发生这种情况时,一切似乎都运行良好,所以我说,嗯,这有点过分,但它有效,我会忍受它。
然而。 事实证明,当你执行chown
或时chmod
,它会注册可日志式扩展文件系统元数据无论是否发生任何变化。因此文件系统上实际上没有或几乎没有发生任何变化,但是巨大生成了大量元数据,当日志提交时,这些元数据对磁盘造成了巨大破坏。哎呀。
因此,我将chown
和改为在更改文件之前查找需要更改的文件的作业,平均写入速度从 2 MB/s 提高到了 50 kB/s。太棒了chmod
。find