什麼觸發 journald 以釋放空間,以遵守 SystemMaxUse、SystemKeepFree?
當我進行軟體更新(Ubuntu 升級)並安裝新的 Linux 核心時,有時我的空間不足,這是一件壞事。這是在帶有 systemd 的 Ubuntu Bionic 18.04 上,因此安裝了 journald。
Journald 預設配置為為其他程序保留驅動器上 15% 的空間 (
SystemKeepFree
),並最多使用 10% 的空間 (SystemMaxUse
)。但它往往超過了這些價值觀。那麼是什麼觸發了吸塵操作呢?
當另一個操作需要它時,我們如何讓它快速清理空間?
有沒有辦法在日誌中搜尋以前的清理操作 - 它們是否被記錄?
請注意,缺少 grep 功能 - 為什麼?(並參見Ubuntu 錯誤 1751657)
$ journalctl --grep journald Compiled without pattern matching support
我不知道為什麼它超過了
SystemMaxUse=
,對不起。編輯:在評論中,@nealmcb 贊同下面的答案,並建議該期刊僅超過
SystemKeepFree=
,而不是超過SystemMaxUse=
。當另一個操作需要它時,我們如何讓它快速清理空間?
我認為您通常不能依賴它。
SystemKeepFree=
以比以下方式更不可靠的方式工作SystemMaxUse=
:如果文件系統快滿了,並且在 systemd-journald 啟動時違反了 SystemKeepFree= 或 RuntimeKeepFree=,則限制將提高到實際空閒的百分比。這意味著如果在創建日誌文件之前有足夠的可用空間,並且隨後有其他原因導致文件系統填滿,則 journald 將停止使用更多空間,但它不會刪除現有文件以再次減少佔用空間。 .
如果您在正在執行的系統上更改配置文件,您可以通過執行使其重新讀取
systemctl restart systemd-journald
您可以使用以下命令之一手動減少空間
journalctl --vacuum...
,例如journalctl --vacuum-size=500M
.似乎有記錄清理的程式碼,但在最近的版本中,消息優先級設置為“調試”。大概這意味著預設情況下會抑制消息。請參閱:systemd“Vacuuming done, freed 0 bytes”消息是什麼意思?