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