AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1036286
Accepted
liori
liori
Asked: 2020-10-04 12:55:06 +0800 CST2020-10-04 12:55:06 +0800 CST 2020-10-04 12:55:06 +0800 CST

以节省空间的方式归档日志的最佳方式?

  • 772

已经确定journald日志是巨大的。在这个特定系统上,日志每周增长约 3GB。出于审计目的,我希望将系统日志保存的时间比我可以舒适地存储在该系统上的时间更长;这只是“以防万一”的存储,不必快速检索。以节省空间的方式归档这些日志的最佳方式是什么?

我正在考虑定期做一些事情journalctl | xz >>/var/log/old-logs.txt.xz,但这在 CPU 使用方面会非常浪费,一次又一次地重新归档数据的相同部分,如果它们被 journalctl 删除,可能会丢失日志,所以也许有更好的方法?

disk-space-utilization archive journald
  • 2 2 个回答
  • 916 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2020-10-04T16:14:00+08:002020-10-04T16:14:00+08:00

    journald 会旋转它自己的文件,因此可以安全地将旧文件(@文件名中总是有一个)复制到其他地方,压缩它们,或者对它们做任何你想做的事情。如果有必要查看它们,journalctl可以使用--file命令行选项指向特定的日志文件。

    您还应该看到journald.conf限制 journald 磁盘使用的选项。

    • 3
  2. Self-Perfection
    2021-06-20T06:51:03+08:002021-06-20T06:51:03+08:00

    确实,xz 压缩可能会为您提供最佳压缩级别。

    然而 xz 压缩的日志不能用 journalctl 查询。

    另一种方法是使用文件系统压缩。我为此使用 btrfs 和 zstd 压缩,它使我的空间使用减少了大约 10 倍,并且日志仍然可用于通过 journalctl 进行交互。我不建议对 /var/log/journal 使用 btrfs 卷,因为 journalctl 一直用No_COW属性(请参阅参考资料lsattr)标记它的目录,这会阻止压缩。可以像我在设置中所做的那样克服这个问题,但它更加脆弱和复杂。另一种方法是将旧日志文件移动到单独的压缩目录。像这样的东西:

    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_archive
    
    • 1

相关问题

  • 确定 inode 使用的位置

  • 是否有显示磁盘管理 MMC 等信息的内置 Windows 实用程序?

  • 为什么 AppData\Roaming 文件夹在 Vista x64 上会占用如此多的磁盘空间?

  • 在 Windows(XP、Vista)中显示实时磁盘使用情况的工具 [关闭]

  • Win2k3:可以从系统驱动器中删除哪些文件,以及删除它们的工具是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve