Persistent journal storage keeps systemd log history across reboots so boot failures, short-lived service crashes, and one-off kernel events remain available after the next startup instead of disappearing with the runtime journal.
The systemd-journald service writes logs either to the memory-backed /run/log/journal hierarchy or to the on-disk /var/log/journal hierarchy. The Storage= setting controls that behavior, and the default Storage=auto mode uses persistent storage only when /var/log/journal is available soon enough for journald to treat the host as persistent.
On a running host that already booted without /var/log/journal, creating the directory alone does not always move the active journal onto disk immediately. Writing an explicit Storage=persistent drop-in, applying the shipped directory permissions, and restarting systemd-journald gives a predictable result and increases local disk use until normal journal retention limits are tuned or old logs are vacuumed.
Related: How to check systemd journal size
Related: How to clear old journal logs
$ sudo systemd-analyze cat-config systemd/journald.conf | grep --extended-regexp '^# /(etc|run|usr/lib)/systemd/|^[[:space:]]*(#)?Storage=' # /etc/systemd/journald.conf #Storage=auto # /usr/lib/systemd/journald.conf.d/syslog.conf
The last uncommented Storage= value wins. If a later drop-in already forces Storage=volatile or Storage=none, remove or replace that override before continuing.
$ sudo install --directory --mode=0755 /etc/systemd/journald.conf.d $ printf '%s\n' '[Journal]' 'Storage=persistent' | sudo tee /etc/systemd/journald.conf.d/zz-persistent-storage.conf >/dev/null
The drop-in keeps the distro default /etc/systemd/journald.conf file unchanged and removes the dependency on /var/log/journal existing during boot.
$ sudo mkdir --parents /var/log/journal
systemd-journald stores the system journal on disk below this path when persistent storage is enabled.
$ sudo systemd-tmpfiles --create --prefix /var/log/journal
This sets the access mode that systemd-journald expects before it creates the machine-id subdirectory and journal files.
$ sudo systemctl restart systemd-journald
A running host may not begin writing under /var/log/journal until systemd-journald is restarted or the system is rebooted.
$ sudo find /var/log/journal -maxdepth 2 -type f /var/log/journal/0123456789abcdef0123456789abcdef/system.journal
The 32-character directory name is the local machine ID, so it differs on every host.
$ sudo journalctl --directory=/var/log/journal --disk-usage Archived and active journals take up 8.0M in the file system.
A non-zero result from the /var/log/journal tree confirms that logs are now being retained on disk across reboots.
Related: How to check systemd journal size
Related: How to clear old journal logs