Re: Empty journal files consume space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/02/2024 13:45, Andrei Borzenkov wrote:

On Thu, Feb 1, 2024 at 3:25 PM Steve Traylen <steve.traylen@xxxxxxx> wrote:
Hi,

I'm trying to understand why I am only retaining just a couple of days
of logs when I would like to have more.

The system journalctl head of the logs is only  today:
Feb 01 10:47:14 nodeX.example.ch systemd-journald[722]: Data hash table
of /var/log/journal/c33ef6d0ada04ec4abc79c567a7d94b0/system.journal has
a fill level at 75.0 (174765 of 233016 items, 58720256 file size, 335
bytes per hash table item), suggesting rotation.
Feb 01 10:47:14 nodeX.example.ch systemd-journald[722]:
/var/log/journal/c33ef6d0ada04ec4abc79c567a7d94b0/system.journal:
Journal header limits reached or header out-of-date, rotating.


# journalctl --disk-usage
Archived and active journals take up 8.1G in the file system.

Reality is  system journal is tiny:

# du -sh system.journal
17M     system.journal

However we do have many

# ls -l user-*journal | wc -l
1044

and indeed

# du -sh /var/log/journal/c33ef6d0ada04ec4abc79c567a7d94b0
8.2G    /var/log/journal/c33ef6d0ada04ec4abc79c567a7d94b0

The vast majority of these user journals are empty and offline

# file user-*journal | awk '{print $4, $5}' | sort | uniq -c
      940 empty, offline
      102 offline
      2 online


These user journals are all 8.0M is size

So I think I have two questions:

1) Why am I loosing old logs sooner than I would like - what limit is "
fill level at 75.0 (174765 of 233016 items"
You did not provide any evidence that logs are lost. Archived
(offline) logs are processed and searched by journalctl so the oldest
available log is the oldest archive file, not the current online file.

The limit is the fill grade of the hash table in the individual log
file. It is hard coded and unrelated to the limits configured in the
journald.conf. It may affect how long logs are kept if you configured
retention by the number of log files.
Thanks for reply.

There are no archive files I believe:

# ls /var/log/journal/514fed82c54d4a89b9f7f8f33eca1c8e/*system*
/var/log/journal/514fed82c54d4a89b9f7f8f33eca1c8e/system.journal

The archive files would be alongside the live file I believe.

Just tried an explicit " journalctl --rotate" which logs:

Feb 01 14:36:33 nodeX.example.ch systemd-journald[658]: System Journal (/var/log/journal/514fed82c54d4a89b9f7f8f33eca1c8e) is 8.0G, max 3.0G, 0B free. Feb 01 14:36:40 nodeX.example.ch systemd-journald[658]: Received client request to rotate journal, rotating. Feb 01 14:36:40nodeX.example.ch systemd-journald[658]: Deleted empty archived journal /var/log/journal/514fed82c54d4a89b9f7f8f33eca1c8e/user-1234@537a18390e124dd6b4cf41a69ef5780d-0000000000000000-0000000000000000.journal (3.5M). Feb 01 14:36:40 lxplus978.cern.ch systemd-journald[658]: Deleted empty archived journal /var/log/journal/514fed82c54d4a89b9f7f8f33eca1c8e/user-1235@d7d23966c1454001a714ee5aef039c60-0000000000000000-0000000000000000.journal (3.5M).

So now maybe I understand at rotation I am over the configured max of 3GB so perhaps no archive is generated. Looking at another node with fewer number of users having ever logged in I have the archive of of the system log and a longer history. Those 940 "empty, offline"  user journals consume the space providing no particular value.

No other indication that rotation may not have worked.


2) Is there a safe mechanism to delete those empty offline user journals?

Just delete them.

Thanks.

Steve.

Version and configuration:

systemd-252-18.el9 - RHEL9 with a configuration of:

[Journal]
Storage = persistent
SplitMode = uid
SystemMaxUse = 3G
SystemKeepFree = 10G
MaxRetentionSec = 1year

# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        80G   65G   16G  81% /





[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux