跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    AlmaLinux 10:journald 日志去哪了,怎么留下来

    在 PVE 的 AlmaLinux 10.2 虚拟机(最小化安装,systemd 257-23.el10_2.1.alma.1)上实测:

    • 默认状态:没有 /etc/systemd/journald.conf,Storage 取默认 auto,没有 /var/log/journal;
    • 手动建目录并重启后的状态;
    • journalctl 的查询与 --vacuum-size 回收输出。

    截图与日志:public/evidence/journald/alma-journalctl.png。

    最小化安装后直接看:

    $ ls /etc/systemd/journald.conf
    ls: cannot access '/etc/systemd/journald.conf': No such file or directory
    $ systemd-analyze cat-config systemd/journald.conf | grep -E '^#?Storage'
    #Storage=auto
    $ ls -d /var/log/journal
    ls: cannot access '/var/log/journal': No such file or directory
    $ journalctl --disk-usage
    Archived and active journals take up 5.6M in the file system.

    Storage=auto 的语义是「有 /var/log/journal 就持久化,没有就易失」。所以这时那 5.6M 全在 /run/log/journal,重启即丢。

    配置片段只在 /usr/lib/systemd/journald.conf(软件包自带、全注释),/etc 下没有覆盖文件。

    # mkdir -p /var/log/journal
    # systemctl reboot

    重启后 journald 自己的日志给出证据:

    $ journalctl -u systemd-journald -b --no-pager | grep Journal
    Oct 21 08:32:01 localhost systemd-journald[565]: System Journal
    (/var/log/journal/c9bf91c1c75e4ff192415c3b38a521c3) is 12.5M, max 894.4M, 881.9M free.

    目录由 journald 自己补全属主与 ACL:

    $ ls -ld /var/log/journal/*
    drwxr-sr-x+ 2 root systemd-journal 53 ... c9bf91c1c75e4ff192415c3b38a521c3

    max 894.4M 是默认值:SystemMaxUse 未设置时取文件系统的 10%(这台 8.8G 根盘)。想改再写 SystemMaxUse=。

    AlmaLinux 10.2:journalctl 输出,含 System Journal 与 Runtime Journal 两行

    先说结论:在这台 EL10 上,写 Storage=persistent 再 systemctl restart systemd-journald 没有切换成功——连续三次重启后,journald 仍打印 Runtime Journal (/run/log/journal/...),/var/log/journal 始终是空目录。把 drop-in 换成 /etc/systemd/journald.conf 主文件也一样。

    有效的做法是建好目录后重启系统(上面那一步)。如果暂时不能重启,加 Storage=persistent 至少能保证下次开机生效。

    这条是实测记录,不是文档结论。systemd 官方文档只描述 Storage= 的语义,没有承诺「restart 即可切换存储位置」;版本差异以你的实际输出为准。

    $ journalctl --list-boots --no-pager | tail -2
    -1 5f6d9c1765b540b398764d07ce8e0655 Wed 2026-10-21 08:10:28 UTC Wed 2026-10-21 08:30:05 UTC
    0 00f206a0002b42f40d14f560b472fc42 Wed 2026-10-21 08:31:59 UTC Wed 2026-10-21 08:33:25 UTC
    $ journalctl -u sshd -n 2 --no-pager --output=short
    Oct 21 08:33:25 localhost.localdomain sshd-session[18261]: Accepted password for labuser from 192.168.2.2 port 52642 ssh2
    $ journalctl -p err -b --no-pager | tail -1
    Oct 21 08:33:03 localhost.localdomain systemd[1]: Failed to start NetworkManager-wait-online.service - Network Manager Wait Online.

    三个常用维度:-u 按 unit、-b 按本次启动、-p err 按级别。定位「刚重启后某个服务为什么没起来」通常就是 journalctl -b -u <unit>。

    回收:—vacuum-size 与 —vacuum-time

    Section titled “回收:—vacuum-size 与 —vacuum-time”
    $ journalctl --vacuum-size=2M
    Vacuuming done, freed 0B of archived journals from /run/log/journal.
    Vacuuming done, freed 0B of archived journals from /var/log/journal/c9bf91c1c75e4ff192415c3b38a521c3.
    $ journalctl --disk-usage
    Archived and active journals take up 12.5M in the file system.

    两点值得注意:

    • vacuum 会按目录分别打印一行,/run 和 /var 都处理;
    • freed 0B 不代表没执行——当前活动的 system.journal 不会被 vacuum 删掉,只有归档(*.journal~ 或已关闭的)才会被回收。
    • 以为日志已经持久化:journalctl 能看到很多历史,但那可能只是本次启动以来的内容,reboot 后全没;
    • 只写 drop-in 不建目录:Storage=persistent 不会替你创建 /var/log/journal;
    • 在 /etc 里找配置却找不到:最小化安装只有 /usr/lib/systemd/journald.conf,改它会被包升级覆盖,正确做法是 /etc/systemd/journald.conf.d/*.conf;
    • 用 rm 清理日志:应该用 journalctl --vacuum-*,直接删文件可能留下悬空索引。
    Terminal window
    journalctl --disk-usage
    ls -d /var/log/journal 2>&1
    # 建目录并重启
    journalctl --disk-usage
    journalctl -u systemd-journald -b | grep "System Journal"

    检查:

    1. 重启前 ls -d /var/log/journal 报不存在;
    2. 重启后同一命令能列出目录,且 journald 日志出现 System Journal;
    3. 重启前的日志仍在(说明落盘成功);
    4. --disk-usage 的数值包含持久化目录。

    常见问题

    为什么我的 AlmaLinux 有 /etc/systemd/journald.conf?

    服务器组或升级过的系统可能预置了该文件;最小化安装(349 包)没有。两处都看一遍:/etc 覆盖 /usr/lib。

    能否不用重启就切换?

    本页实测 restart 无效。若不能重启,可考虑先把日志转发到 rsyslog 或远端,等维护窗口再重启切换。

    journald 和 /var/log/messages 的关系?

    EL10 默认仍有 rsyslog 写文本日志(Server 组);两者独立,journald 存二进制、rsyslog 存文本,轮转规则也不同。