systemd-journald 通过 /etc/systemd/journald.conf 中的 systemmaxuse 等参数限制日志磁盘占用,需配置 storage=persistent、重启服务并手动 vacuum 清理超限日志。

在 systemd-journald 中,限制日志磁盘占用主要通过 /etc/systemd/journald.conf 配置文件中的 SystemMaxUse 选项实现,它控制所有持久化日志(即保存在 /var/log/journal/ 下的日志)所允许使用的最大磁盘空间。
以下是关键配置项和操作步骤:
注意:journald.conf 中的 *MaxUse 参数只对 持久化日志(Storage=persistent 或 Storage=volatile 但启用了 ForwardToJournal=yes 且日志被落盘)生效;若 Storage=auto(默认),且 /var/log/journal/ 目录存在,journald 会自动启用持久存储并受这些限制约束。
1. 编辑 journald.conf 配置文件
```bash sudo nano /etc/systemd/journald.conf ```找到并取消注释(去掉 #)以下行,设置期望的最大磁盘用量(例如限制为 1GB):
SystemMaxUse=1G
你也可以同时设置其他相关限制,更稳妥地控制日志增长:
-
SystemKeepFree:保留至少多少空间不被日志占用(如
SystemKeepFree=500M) -
SystemMaxFileSize:单个日志文件最大体积(如
SystemMaxFileSize=50M),防止单个文件过大 -
MaxRetentionSec:日志最长保留时间(如
MaxRetentionSec=2week),配合空间限制使用
示例片段:
[Journal] Storage=persistent SystemMaxUse=1G SystemKeepFree=500M SystemMaxFileSize=50M MaxRetentionSec=2week
2. 重启 journald 生效配置
```bash sudo systemctl restart systemd-journald ```⚠️ 注意:重启后新策略立即生效,但已有超出限制的日志不会自动清理——需手动触发清理。
3. 手动清理已有日志(可选但推荐)
运行以下命令释放已超出 `SystemMaxUse` 的空间:sudo journalctl --vacuum-size=1G # 保留最多 1G 日志,多余部分删除 # 或按时间清理 sudo journalctl --vacuum-time=2weeks
也可用 --disk-usage 查看当前占用:
journalctl --disk-usage
4. 确保日志目录存在且权限正确
持久化日志依赖 `/var/log/journal/` 目录。若该目录不存在,journald 默认只写内存日志(重启即丢),不受 `SystemMaxUse` 约束。确保它存在且属主正确:
sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal
该命令会按 /usr/lib/tmpfiles.d/journal.conf 设置权限(通常是 root:root,drwxr-sr-x)。
不复杂但容易忽略











