统信服务器操作系统【systemd journal日志】日志文件清理方案介绍

全文导读:本文介绍 systemd journal日志的存储类型及日志文件清理及管理方案

问题现象

系统中systemd统一管理所有Unit的启动日志,随着系统运行时间积累 journal日志可能会占用过多磁盘空间。

问题原因

存储在磁盘中的持久性日志数据持续积累,导致占用磁盘空间过大,需要清理删除已归档日志文件,同时指定日志保留周期。

解决方案

一、systemd-journald 是收集和存储日志数据的系统服务。此日志数据根据存储类型将存储在:
  1. /run/log/journal/MACHINE-ID/(易失性日志数据,存储在内存中并在重新启动时丢失)
  2. /var/log/journal/MACHINE-ID/(持久性日志数据,存储在磁盘上)
在配置为将 systemd 日志数据存储在磁盘上的系统上,日志会在一段时间后占用大量磁盘空间。
二、在尝试清除 systemd 日志文件之前,使用以下命令查看这些日志文件在系统上实际占用了多少空间:
  #  journalctl --disk-usage
输出示例:
$ journalctl --disk-usage Archived and active journals take up 1.6G in the file system.
值得注意的是,journalctl --disk-usage显示了归档日志文件和活动日志文件的磁盘使用总和,因此即使在如下所述清除日志日志文件后,它也不会显示 0 磁盘空间使用情况。
三、要删除所有日志条目(包括活动日志文件,需要用--rotate命令将这些文件标记为已存档),请使用:
sudo journalctl --rotate sudo journalctl --vacuum-time=1s
说明:
  • --rotate要求日志守护进程轮换日志文件。日志文件轮换的效果是,所有当前活动的日志文件都被标记为已归档并重命名,以便将来永远不会写入它们。然后在它们的位置创建新的(空的)日志文件。否则,该--vacuum*=命令不会删除活动日志文件。
  • --vacuum-time=1s 使所有日志文件不包含早于 1 秒的数据。您可以根据需要更改--vacuum-time时间段,例如1m表示1分钟、1h表示1小时、2weeks表示2周、4months表示4个月。
四、可以使用--vacuum-size而不是--vacuum-time(也可以同时使用两者)来删除最旧的归档日志文件,直到它们使用的磁盘空间低于指定大小。指定--vacuum-size值后跟通常的“K”、“M”、“G”和“T”后缀,
例如journalctl --vacuum-size=100M 表示删除归档的日志文件,直到它们使用的磁盘空间低于 100M。  
在较新的 systemd 版本(240 和更新版本),可以组合使用--vacuum*=--rotate命令。例如,要轮换日志文件并删除归档的日志文件,直到它们使用的磁盘空间低于 500M,可以使用:  
sudo journalctl --rotate --vacuum-size=500M
 五、 要手动清除日志日志时,这些命令可按需使用。也可以将 journald 配置为在磁盘上超过特定大小或给定时间后清除归档日志。这可以通过编辑 journald 配置文件 ( /etc/systemd/journald.conf),取消注释,然后向 SystemMaxUse= 添加一个值(例如:SystemMaxUse=100M删除归档的日志文件,直到它们使用的磁盘空间低于 100M), MaxFileSec=(例如:MaxFileSec=5day使所有日志文件不包含超过 5 天的数据)。  
©统信软件技术有限公司。访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务进行转载,须备注:该文档出自【faq.uniontech.com】统信软件知识分享平台。否则统信软件将追究相关版权责任。    
2023-05-12
1 1