Ext3
為什麼 kjournald 在一個幾乎靜止的文件系統上非常活躍?
*注意:*這是一個“記錄我的過程”問題,我將寫一個答案。令人高興的是,serverfault 已經幫助我解決了這個問題,因為寫下我的情況以便其他人能夠評估它使我意識到發生了什麼。
- 我在 Debian 伺服器上使用 ext3 文件系統。
- 儘管我的主文件系統上發生的關於files的活動非常少,但來自
kjournald
(通過查看iotop
)的活動非常多。- 此活動以周期性爆發的形式出現,將我的整體平均寫入速度提高到大約 2 MB/秒(這讓我非常擔心,因為我想要一些 SSD,而這個速度實際上足以嚴重威脅到非常慷慨的寫入耐久性目前型號)。
- 我已經使用
noatime,nodiratime
.- 我已經將文件系統的日誌送出間隔從 5 秒增加到 300 秒。
到底是怎麼回事?(劇透:這是使用者空間的事情。我寫這篇文章主要是為了強調可能違反直覺的潛在問題。)
看,發生的事情是,在這台伺服器上執行的主應用程序管理著一個非常大、填充良好的目錄樹,並在該樹中寫入文件,但所有權和權限並不理想。因為讓該應用程序更改它是相當令人討厭的,並且文件需要相當快地修復它們的所有權和權限(一些延遲很好,但不是很多),我設置了一個 cron 作業,每分鐘拋出一個質量
chown -R
並chmod -R
在大的,填充良好的目錄樹中。在此過程中,一切似乎都執行良好,所以我說,嗯,這有點矯枉過正,但它有效,我會忍受的。然而。 事實證明,當您執行
chown
or時chmod
,它會註冊可日記的 ext 文件系統元數據*,無論是否發生任何更改*。因此,文件系統實際上沒有或幾乎沒有任何變化,但是生成了大量的元數據,然後在日誌送出時將其從磁碟中敲出。哎呀。因此,我將
chown
andchmod
更改find
為在更改文件之前實際查找需要更改的文件的作業,平均寫入速度從 2 MB/s 到大約 50 kB/s。耶。