首页/系统/Linux 运维命令速查/journald 日志持久化配置

journald 日志持久化配置

默认 journal 可能是易失的(内存):/var/log/journal 不存在时重启即失忆;SystemMaxUse 等参数控制保留策略。

Linux 运维命令速查系统更新于 2026-10-13

日志持久化是什么

systemd 的日志默认可能只存在内存里:当 /var/log/journal 目录不存在时,journald 采用易失模式,机器一重启历史就没了。启用持久化只需建目录并重启服务,再用 SystemMaxUse 之类的参数控制磁盘占用上限。这两件事要一起做——只持久化不限额,日志迟早把磁盘吃掉。

基本信息

用途让 journal 日志跨重启保留,并限制它的磁盘占用
配置位置/etc/systemd/journald.conf 及其 drop-in 目录
所属systemd(journald 与 journalctl)
生效方式改完配置需要重启 systemd-journald 服务

典型使用场景

  • 跨重启排障:需要查看上一次启动的日志,必须先启用持久化
  • 容量治理:日志目录持续增长,用 SystemMaxUse 与 MaxRetentionSec 划出上限
  • 合规留存:要求保留一定天数的系统日志,用保留时间参数明确边界
  • 紧急瘦身:磁盘告急时用 vacuum 立刻回收空间
  • 排查丢日志:日志出现被抑制的提示时,核对速率限制参数

启用持久化

启用持久化
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
journalctl --list-boots          # 能看到多个启动轮次说明生效
journalctl --disk-usage          # 查看当前占用

限制占用与保留期

限制占用与保留期
# /etc/systemd/journald.conf
[Journal]
Storage=persistent
SystemMaxUse=2G
SystemMaxFileSize=200M
MaxRetentionSec=30day
# 旧版本使用 RateLimitInterval 与 RateLimitBurst 控制写入速率
RateLimitIntervalSec=30s
RateLimitBurst=10000

在线瘦身

在线瘦身
journalctl --disk-usage                     # 先看当前占用
journalctl --vacuum-size=1G                 # 缩到 1G 以内
journalctl --vacuum-time=7day               # 只保留最近 7 天
systemctl restart systemd-journald          # 改配置文件后重启生效

常用参数对照

参数作用说明
Storage日志存放方式persistent 落盘、volatile 只放内存、auto 按目录是否存在自动选择
SystemMaxUse持久日志总占用上限不设置时默认约为所在文件系统的 10%,仍有上限,但不一定符合你的预期
SystemMaxFileSize单个日志文件大小上限便于轮转与清理粒度控制
MaxRetentionSec最长保留时长按时间维度兜底,与容量上限配合使用
RuntimeMaxUse内存中日志的占用上限易失模式与运行时缓冲的边界
RateLimitIntervalSec 与 RateLimitBurst写入速率限制过高频率的日志会被抑制,表现为日志出现缺口
清理历史日志用 journalctl 的 vacuum 选项,不要手删 /var/log/journal 下的文件:journal 目录里除了日志文件还有索引结构,直接删除可能让后续查询出现异常。
日志出现被抑制的提示时要正视:速率限制会让高频日志被丢掉,排查突发问题最关键的那几秒可能恰好缺失。确认需求后适当放宽限制,或把该类日志交给专门的采集通道。

易错点

  • 只建目录不设上限:日志会按默认策略一直增长,大容量磁盘上被吃掉的空间相当可观
  • 改完 journald.conf 忘记重启服务:配置不生效,看起来像「参数不起作用」
  • 用 rm 清理日志目录:可能破坏内部索引,正确做法是 vacuum-size 或 vacuum-time
  • 忽略速率限制导致排查时找不到关键日志:被抑制的日志不会报错,只会在统计里留下痕迹

数据来源与参考

  • man 5 journald.conf
  • man 1 journalctl(--disk-usage/--vacuum-*)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌