journal默认运行在易失性存储模式,需通过创建/var/log/journal目录并设置权限、修改journald.conf中Storage=persistent、限制MaxUse和MaxRetentionSec等实现持久化存储与磁盘管理。

如果在Linux系统中使用systemd-journal,但重启后发现日志丢失,则说明journal当前运行在易失性存储模式下,默认仅将日志保存在内存或/run/log/journal中。以下是实现journal持久化存储的多种配置方法:
一、启用持久化日志目录
systemd-journald默认不创建持久化日志目录,需手动创建并设置正确权限,使日志写入/var/log/journal而非/run/log/journal。
1、执行命令创建日志根目录:sudo mkdir -p /var/log/journal
2、设置目录归属为root:systemd-journal:sudo chown root:systemd-journal /var/log/journal
3、设置目录权限为2755(确保setgid位生效):sudo chmod 2755 /var/log/journal
4、重启journald服务以应用变更:sudo systemctl kill --signal=SIGUSR1 --kill-who=main systemd-journald
二、修改journald配置文件
通过编辑/etc/systemd/journald.conf可显式指定日志存储策略与路径,覆盖默认行为。
1、使用文本编辑器打开配置文件:sudo nano /etc/systemd/journald.conf
2、定位到Storage=行,将其修改为:Storage=persistent
3、确认ForwardToSyslog=和ForwardToKMsg=保持为no(避免冗余转发)
4、保存文件后重启journald服务:sudo systemctl restart systemd-journald
三、验证持久化是否生效
配置完成后需检查实际日志路径及保留状态,确认日志已落盘且跨重启可用。
1、查看当前日志存储位置:journalctl --disk-usage
2、检查日志目录是否存在且非空:ls -l /var/log/journal/*/system.journal
3、模拟重启前记录一条测试日志:logger "journal persistence test before reboot"
4、重启系统后执行:journalctl -n 10 --since "1 hour ago",确认测试日志可见
四、限制日志磁盘占用空间
持久化日志可能持续增长,需通过配置防止/var/log/journal耗尽磁盘空间。
1、在/etc/systemd/journald.conf中取消注释并设置MaxUse=:MaxUse=512M
2、同时设置MaxFileSize=控制单个日志文件上限:MaxFileSize=64M
3、设置RuntimeMaxUse=对/run/log/journal(临时目录)也施加限制:RuntimeMaxUse=128M
4、重载配置并触发日志轮转:sudo systemctl kill --signal=SIGHUP systemd-journald
五、调整日志保留时间策略
除空间限制外,还可按时间维度自动清理旧日志,避免无限累积。
1、启用基于时间的清理,在journald.conf中设置:MaxRetentionSec=3month
2、确保VacuumTimeSec=未被禁用(默认启用),该参数控制自动清理触发间隔
3、手动触发一次清理以验证配置:sudo journalctl --vacuum-time=30d
4、查看清理后剩余日志量:journalctl --disk-usage

















