已经证实了journald原木很大。在这个特定的系统上,日志每周增长约3GB。为了审计目的,我希望保存系统日志的时间比我可以轻松地存储在该系统上的时间更长;这将仅仅是“以防万一”的存储,不需要快速检索。以空间高效的方式归档这些日志的最佳方法是什么?
我正在考虑定期执行某种journalctl | xz >>/var/log/old-logs.txt.xz,但这将是相当浪费的CPU使用,重新归档相同部分的数据一次又一次,如果日志被日志删除可能会错过,所以也许有更好的方法?
发布于 2020-10-04 00:14:00
日志会旋转自己的文件,所以在其他地方复制旧文件(文件名中总是有一个@ )、压缩它们或对它们做任何你想做的事情都是安全的。如果有必要查看它们,可以使用journalctl命令行选项指向特定的日志文件。
您还应该看到限制日志磁盘使用的选项的journald.conf。
发布于 2021-06-19 14:51:03
的确,xz压缩可能会给您提供最佳的压缩级别。
然而,xz压缩日志不能使用日志查询。
另一种方法是使用文件系统压缩。我使用btrfs进行zstd压缩,它减少了大约10倍的空间使用,日志仍然可以通过日志进行交互。我不建议对/var/log/日记使用btrfs卷,因为日志its一直用No_COW属性标记目录(请参阅lsattr),这可以防止压缩。这是有可能克服这一点,就像我在我的设置,但它更脆弱和复杂。另一种方法是将旧日志文件移动到分离压缩的dir。就像这样:
mkfs.btrfs "$BLOCK_DEVICE_PATH"
mkdir /var/log/journal_archive
# With my data zstd compression level gives best compression/speed ratio.
# Your mileage may vary.
#Default level 3 is quite good so you might just stick with the default
mount -o compress=zstd:8 "$BLOCK_DEVICE_PATH" /var/log/journal
# To archive old logs (older than a week):
find /var/log/journal/$MACHINEID/ -name '*@*.journal' -mtime +7 -exec mv -v {} /var/log/journal_archive \;
# To query old logs
journalctl --directory=/var/log/journal_archive
# Cleanup archive to keep 20GB of uncompressed files
journalctl --vacuum-size=20G --directory /var/log/journal_archivehttps://serverfault.com/questions/1036286
复制相似问题