如何减少 journald 日志的元数据磁盘使用量?

如何减少 journald 日志的元数据磁盘使用量?
myuser@myhost:~$ sudo journalctl > log.txt
myuser@myhost:~$ sudo journalctl --disk-usage
Archived and active journals take up 3.0G on disk.
myuser@myhost:~$ ls -lh log.txt 
-rw-rw-r-- 1 myuser myuser 298M Oct 31 15:15 log.txt

因此,我的日志占用了 3G 的磁盘空间,但实际日志条目只有约 300M。我猜想日志元数据占用了剩余的空间。

是否可以更改元数据与日志条目的比例?或者也许不是元数据而是其他东西?

几乎所有这些日志都是由容器化应用程序生成的,dockerd --log-driver=journald

更新

我的journald.conf

[Journal]
Storage=persistent
RateLimitInterval=0
RateLimitBurst=0
ForwardToSyslog=no

答案1

首先,您看到报告为“在磁盘上”的内容可能根本不在磁盘上。正如最近错误修复,新语言表示“在文件系统中”,可以是内存文件系统,也可以是磁盘文件系统。Ubuntu 16.04 默认是内存文件系统,但有一个错误报告,使 Ubuntu 中的 systemd 日志默认持久化

现在如何减少空间。如果您不确定从哪里开始查找有关 journald 的文档,man -k journald请查看是否已安装相关文档:

$ man -k journald
journald.conf (5)    - Journal service configuration files
journald.conf.d (5)  - Journal service configuration files
systemd-journald (8) - Journal service
systemd-journald-audit.socket (8) - Journal service
systemd-journald-dev-log.socket (8) - Journal service
systemd-journald.service (8) - Journal service
systemd-journald.socket (8) - Journal service

由于您似乎希望调整配置,man journald.conf因此这是一个不错的检查点。您会在那里找到与磁盘空间相关的几个选项的文档,您可以在那里阅读有关它们的详细信息。以下是摘要:

  • Compress=默认启用,压缩数据
  • SystemMaxUse=RuntimeMaxUse=控制日志最多可以使用多少磁盘空间。
  • MaxRetentionSec= 存储日记帐分录的最长时间。

请参阅所提到的手册页以获取完整文档,然后编辑/etc/systemd/journald.conf

最后systemctl daemon-reload && systemctl reload systemd-journald让你的更改生效。

相关内容