如何修改journalctl(systemd日志)的数据存储位置?
完全理解你的顾虑——机房里的服务器不敢瞎折腾,怕搞砖了没法现场救,直接用软链接确实是野路子,systemd早就有官方的标准方法,一步步来很稳:
第一步:先确认当前状态
先看看现在日志占了多少空间、存在哪,执行:journalctl --disk-usage再检查默认配置文件的内容,看看有没有已经被修改过的地方:
cat /etc/systemd/journald.conf第二步:准备新的存储目录
假设你想把日志移到/mnt/new-journal这个路径(替换成你实际要用到的目录),先创建目录并设置正确的权限——systemd-journald对目录权限有要求,必须让它能正常读写:mkdir -p /mnt/new-journal chown root:systemd-journal /mnt/new-journal chmod 2755 /mnt/new-journal第三步:修改journald的核心配置
编辑/etc/systemd/journald.conf这个配置文件(建议先备份一份:cp /etc/systemd/journald.conf /etc/systemd/journald.conf.bak),找到下面两行,去掉开头的#注释,改成你需要的内容:Storage=persistent JournalDirectory=/mnt/new-journal这里
Storage=persistent是指定日志要持久化存储(不是临时存在内存里),JournalDirectory就是你刚才创建的新路径。第四步:迁移旧日志(可选但推荐)
如果不想丢失之前的日志,先停掉journald服务:systemctl stop systemd-journald.service然后把旧目录下的所有内容完整复制到新目录:
cp -a /var/log/journal/* /mnt/new-journal/复制完成后可以再检查一下新目录里的文件权限,确保和旧的一致。
第五步:验证配置生效
重启journald服务:systemctl start systemd-journald.service再用
journalctl --disk-usage查看,应该显示新的存储路径了。另外可以写一条测试日志验证:logger "测试日志存储路径修改"然后用
journalctl -n 1查看最新的日志,能看到这条测试内容就说明没问题了。最后:清理旧目录(可选)
确认新路径完全正常运行几天后,再考虑删除旧的/var/log/journal目录,或者把它备份到其他地方。
备注:内容来源于stack exchange,提问作者guesty

