首页/安全/取证与溯源速查/journald 持久化与日志完整性
Linux 取证135 条

journald 持久化与日志完整性

默认配置下部分发行版把日志放在 /run/log/journal(重启即失);确认 Storage 设置与 /var/log/journal 是否存在,决定能查到多久的历史。

取证与溯源速查安全更新于 2026-10-13

journal 日志持久化

systemd-journald 的日志默认可能只保存在内存里,重启就没了。决定是否落盘的是 /etc/systemd/journald.conf 中的 Storage 选项:持久化时写入 /var/log/journal,易失时写入 /run/log/journal。判断历史日志是否可用,先看这一项。

基本信息

配置文件/etc/systemd/journald.conf 与 journald.conf.d/ 目录
Storage 取值volatile 仅内存、persistent 落盘、auto 按目录是否存在、none 不保存
目录分工/var/log/journal 持久,/run/log/journal 易失
容量控制SystemMaxUse、SystemMaxFileSize、RuntimeMaxUse
占用查看journalctl --disk-usage
生效方式修改后重启 systemd-journald 服务

典型使用场景

  • 判断历史日志能否跨重启查询
  • 规划日志容量与保留策略
  • 排查日志缺失或记录过短的根因
  • 采集前确认数据范围是否覆盖事件时段
  • 与远端转发配置一起评估日志链路的可靠性

最小示例

最小示例
grep -E '^\s*Storage' /etc/systemd/journald.conf    # 查看当前的存储策略
ls -d /var/log/journal /run/log/journal 2>/dev/null  # 目录是否存在
journalctl --disk-usage                              # 当前日志占用空间
journalctl --list-boots                              # 能列出多少历史引导
journalctl --verify 2>/dev/null | tail -3            # 日志文件校验结果
grep -E '^\s*SystemMaxUse' /etc/systemd/journald.conf

配置与现象

配置或现象含义说明
Storage=volatile仅内存保存重启后历史日志消失
Storage=persistent始终落盘需要目录存在且权限正确
Storage=auto按目录是否存在决定目录被删后旧日志即丢失
/var/log/journal持久化目录读取需要相应组权限
/run/log/journal易失目录位于内存文件系统,重启清空
disk-usage 输出当前占用空间与容量上限一起评估保留时长
Storage=auto 依赖 /var/log/journal 目录是否存在:目录被删除后,后续日志会退回内存,重建目录也无法找回已丢失的内容。
日志文件的读取需要相应权限,非特权账号通常要加入 systemd-journal 组才能看到完整内容。
启用持久化后旧日志会按容量上限自动回收,本地能保留的时长往往只有数天到数周;需要长期留证时,除了调高上限还要配置远端转发。
不要用删除目录或清理命令来释放空间:会永久丢失历史日志,取证阶段尤其要避免。

易错点

  • 只改配置不看目录:persistent 也需要目录存在且权限正确,否则日志照样不落盘
  • 默认认为日志在磁盘上:部分系统默认策略下历史日志只存在于内存,采集必须及时
  • 清理旧日志腾空间:会永久删除记录,属于不可逆的数据丢失
  • 忽略容量上限:达到上限后旧日志被自动回收,时间覆盖范围会悄悄变短

数据来源与参考

  • systemd 官方文档(journald.conf)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌