已经确定journald
日志是巨大的。在这个特定系统上,日志每周增长约 3GB。出于审计目的,我希望将系统日志保存的时间比我可以舒适地存储在该系统上的时间更长;这只是“以防万一”的存储,不必快速检索。以节省空间的方式归档这些日志的最佳方式是什么?
我正在考虑定期做一些事情journalctl | xz >>/var/log/old-logs.txt.xz
,但这在 CPU 使用方面会非常浪费,一次又一次地重新归档数据的相同部分,如果它们被 journalctl 删除,可能会丢失日志,所以也许有更好的方法?
journald 会旋转它自己的文件,因此可以安全地将旧文件(
@
文件名中总是有一个)复制到其他地方,压缩它们,或者对它们做任何你想做的事情。如果有必要查看它们,journalctl
可以使用--file
命令行选项指向特定的日志文件。您还应该看到
journald.conf
限制 journald 磁盘使用的选项。确实,xz 压缩可能会为您提供最佳压缩级别。
然而 xz 压缩的日志不能用 journalctl 查询。
另一种方法是使用文件系统压缩。我为此使用 btrfs 和 zstd 压缩,它使我的空间使用减少了大约 10 倍,并且日志仍然可用于通过 journalctl 进行交互。我不建议对 /var/log/journal 使用 btrfs 卷,因为 journalctl 一直用
No_COW
属性(请参阅参考资料lsattr
)标记它的目录,这会阻止压缩。可以像我在设置中所做的那样克服这个问题,但它更加脆弱和复杂。另一种方法是将旧日志文件移动到单独的压缩目录。像这样的东西: