1. 检查当前 journald 配置与状态
# 查看当前 journald 配置文件
sudo cat /etc/systemd/journald.conf
# 查看当前日志占用磁盘空间
journalctl --disk-usage
# 检查持久化日志是否启用
ls -la /var/log/journal/
2. 编辑 journald 配置文件
# 备份原配置文件
sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.backup
# 编辑配置文件
sudo nano /etc/systemd/journald.conf
在配置文件中修改或添加以下参数:
[Journal]
# 设置持久化存储(如未启用)
Storage=persistent
# 限制整个日志目录最大为 100M
SystemMaxUse=100M
# 限制单个日志文件最大大小
SystemMaxFileSize=10M
# 系统保留空间(可选,防止磁盘满)
SystemKeepFree=200M
# 最大保存时间(可选)
MaxRetentionSec=1month
# 启用压缩以节省空间
Compress=yes
3. 重启 journald 服务使配置生效
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 重启 journald 服务
sudo systemctl restart systemd-journald
# 检查服务状态
sudo systemctl status systemd-journald
4. 验证配置是否生效
# 查看 journald 运行时配置
sudo journalctl --update-catalog
sudo journalctl --header | grep -i "disk usage"
# 检查配置参数是否加载
sudo systemd-analyze cat-config systemd/journald.conf | grep -i maxuse
# 监控日志大小变化
watch -n 5 "journalctl --disk-usage"
5. 立即清理现有日志到 100M 以下
# 清理日志到指定大小
sudo journalctl --vacuum-size=100M
# 或按时间清理(保留最近7天)
sudo journalctl --vacuum-time=7days
# 验证清理结果
journalctl --disk-usage
6. 可选:创建持久化日志目录(如不存在)
# 创建 journal 目录并设置权限
sudo mkdir -p /var/log/journal
sudo chown root:systemd-journal /var/log/journal
sudo chmod 2755 /var/log/journal
# 强制 journald 切换到持久化模式
sudo systemctl restart systemd-journald
7. 设置定期日志清理任务(自动化)
# 编辑 crontab
sudo crontab -e
添加以下行(每周日凌晨3点清理):
0 3 * * 0 /usr/bin/journalctl --vacuum-size=100M
8. 监控与维护
# 监控日志大小的命令
journalctl --disk-usage
# 查看最大的日志文件
sudo ls -lh /var/log/journal/*/system*.journal
# 实时查看日志增长
sudo journalctl -f
注意事项
- 修改配置前务必备份原文件
- 重启 journald 服务不会丢失现有日志
SystemMaxUse=100M是软限制,实际可能略超- 确保
/var/log分区有足够空间 - 生产环境需根据日志产生速率调整参数
这些步骤完成后,systemd-journald 的日志总量将被限制在 100MB 以内,超出的旧日志会被自动清理。
评论区