Problem: Systemd Journald Does Not Honor SystemMaxUse Settings for Journal Space

Problem

Systemd Journald Does Not Honor SystemMaxUse Settings for Journal Space

You configure limits for disk usage of the systemd journal files but it appears they are not taken into account.

ucr set systemd/journald/SystemMaxUse=400M
systemctl restart systemd-journald

But:

root@ucs:~# journalctl --disk-usage
Archived and active journals take up 536.0M in the file system.

Solution

One goal of journald is to keep as many log entries as possible by regarding the configured limits. If one limit allows to store more entries it is preferred.

Journald calculates the effective values based upon several system variables. It takes into account the free disk space when starting up as well as the SystemKeepFree value (if set, otherwise the default of 15% of the disk size). If you want to enforce the SystemMaxUse, set SystemKeepFree to the current available disk space (plus some more…).
Use the ucr command to set:

ucr set systemd/journald/SystemMaxUse=400M
ucr set systemd/journald/SystemKeepFree=3500M
systemctl restart systemd-journald

Note You have to use fixed values here as systemd does not accept percentages!
Note2 SystemKeepFree is capped to 4G always!

Example

$ ucr get systemd/journald/SystemMaxUse
250M
$ df -h
filesystem    size    used  avail   used% mounted at
/dev/sda1      14G      4G    10G    29%  /
Dez 20 15:44:45 ucs systemd-journal[28852]: Permanent journal is using 288.0M (max allowed 250.0M, trying to leave 2.1G free of 10G available → current limit 288.0M).

Although the limit is configured for 250M journald consumes 288M and ignores the setting. This is because there is still plenty of disk space available- in this case more than the default values for SystemKeepFree (15% of 14G = 2.1G).

If you want to enforce the SystemMaxUse, set SystemKeepFree to a little bit more than is actually available. In this example set SystemKeepFree to 11G but it will be caped to 4G anyways.

See Also

Mastodon