它减慢了我的系统启动时间。
我可以禁用它吗?
如果我在启动时禁用它会发生什么?
我正在使用 Ubuntu 版本 18.04。
答案1
如果启用了存储,则要求systemd-journal-flush.service
日志守护程序将存储在 /run/log/journal 中的所有日志数据刷新到 /var/log/journal。persistent
如果您有(已经)巨大的日志文件,这将导致启动速度变慢。此外,磁盘(带有/var/log
)必须以可写模式安装才能执行此操作。
总结一下:巨大的旧日志文件,在启动时进行检查,并附加新的日志数据会导致启动时间变慢。
要检查 journalctl 日志大小类型
journalctl --disk-usage
为了获取刷新处理的时间和磁盘空间信息,请输入以下命令
journalctl -b --unit systemd-journald
相应的输出将如下所示
-- Logs begin at Sat 2018-12-08 00:40:23 CET, end at Mon 2018-12-10 19:40:27 CET. --
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Journal started
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Runtime journal (/run/log/journal/265c93c062bf4c8da41abfe2ae793452) is 4.7M, max 38.3M, 33.5M free.
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Time spent on flushing to /var is 7.066904s for 132 entries.
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: System journal (/var/log/journal/265c93c062bf4c8da41abfe2ae793452) is 128.0M, max 256.0M, 128M free.
您可以
禁用该服务(不推荐)
那么可能并非所有日志数据都写入磁盘;在调试启动故障时很烦人。Journald 是systemdLinux 和许多其他服务都依赖于它。
验证日志文件的内部一致性:
journalctl --verify
注意每本日记都会出现经过。
使用
journalctl --vacuum
命令从
journalctl -h
--vacuum-size=BYTES 将磁盘使用量减少到指定大小以下
--vacuum-files=INT 仅保留指定数量的日志文件
--vacuum-time=TIME 删除超过指定时间的日志文件因此做一个
sudo journalctl --vacuum-size=1G --vacuum-time=5d --vacuum-files=5
更改存储类型
systemd-journal-flush.service
首先使用以下命令检查您的存储类型:
systemctl cat systemd-journal-flush.service | grep -i storage
从
man journald.conf
存储=
控制日志数据的存储位置。可选为“挥发性”、“持久性”、“自动”或“无”。
如果 ”易挥发的“,日志数据将只存储在内存中,即/run/log/journal 层次结构之下(如果需要则创建)。
如果 ”执着的“,数据将最好地存储在磁盘上,即在/var/log/journal 层次结构(如果需要则创建)之下,并在早期启动期间以及如果磁盘不可写时回退到/run/log/journal(如果需要则创建)。
“汽车“类似于“持久”,但如果需要,则不会创建目录 /var/log/journal,因此它的存在控制着日志数据的去向。
“没有任何“关闭所有存储,所有收到的日志数据将被删除。但是,转发到其他目标(例如控制台、内核日志缓冲区或 syslog 套接字)仍将有效。默认为“自动”。
编辑文件
sudo nano /etc/systemd/journald.conf
在日志部分取消注释并修改:
存储=自动SystemMaxUse=200M SystemKeepFree=1G
SystemMaxFileSize=1G SystemMaxFiles=5
推荐
我建议限制系统最大文件大小50MB 的密钥 -->
SystemMaxFileSize=50M
最后,如果您的 Ubuntu 不是在重要的服务器上运行,我建议将数据存储更改为易失性:
Storage=volatile
SystemMaxUse
控制日志最多可以使用多少磁盘空间。
SystemKeepFree
并RuntimeKeepFree
控制 systemd-journald 应为其他用途留下多少磁盘空间。systemd-journald 将尊重这两个限制并使用两个值中较小的一个。
如果您在调试模式下运行启动并跟踪系统调用(strace
),您可能会发现刷新写入的 I/O 性能非常差。就我而言,原因尚不清楚。也许一些内核消息会向日志文件发送垃圾邮件(请注意,在 10000 条消息之后,默认情况下该单元会被阻止,但 journald 必须管理这一点,这可能导致性能不佳)。在这种情况下,跳过消息并搜索错误,这些错误不一定被标记为错误。
journalctl -b --output short-monotonic
和
journalctl -b -p 1..4 --output short-monotonic
该--output short-monotonic
标志打印与默认 UTC 时间对比的时间步骤。
最后,删除旧的日志文件
sudo rm -rf /var/log/journal
保存并重新启动。
答案2
根据这篇文章systemd 开发者主页,你可以通过改变单元文件。
为此,请打开/lib/systemd/system/systemd-journal-flush.service
,例如
sudo vim /lib/systemd/system/systemd-journal-flush.service
并改变依赖之前从
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
到
 Before=systemd-tmpfiles-setup.service
此修复将针对 systemd 版本 > v240 自动更改。
不要忘记保存文件。