Journalctl --verify 报告损坏

Journalctl --verify 报告损坏

我刚刚注意到这个verify选项journalctl并决定尝试一下,它显示腐败,可能是什么原因导致的?如果我应该做些什么呢?我应该进一步调查吗?

journalctl --verify
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1000.journal
Invalid object contents at 3733856░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   0%
File corruption detected at /var/log/journal/19184893a1d645c7a43729e79b10a876/system.journal:3733856 (of 91734016, 4%).
FAIL: /var/log/journal/19184893a1d645c7a43729e79b10a876/system.journal (Bad message)
Invalid object contents at 21575496░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  45%
File corruption detected at /var/log/journal/19184893a1d645c7a43729e79b10a876/system@60e058db556e4de4b256d0b1ff176aa4-0000000000000001-0004e0b436d20aa1.journal:21575496 (of 44052480, 48%).
FAIL: /var/log/journal/19184893a1d645c7a43729e79b10a876/system@60e058db556e4de4b256d0b1ff176aa4-0000000000000001-0004e0b436d20aa1.journal (Bad message)
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1000@60e058db556e4de4b256d0b1ff176aa4-0000000000000a91-0004e0b4ff9a949a.journal
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1001.journal

答案1

目前,journalctl 可以检测损坏的日志,但没有“fsck”类型命令来尝试修复。一旦检测到问题,日志就会自动切换到写入新的“干净”文件,因此理论上数据丢失应该是最小的。

在出现文件修复命令之前,找到损坏的日志文件并将其删除是唯一的解决方法。你可以找到更多关于这个在我们的 Fedora 超级线程中,将仅日志记录设置为默认:

对于尾部损坏,您的普通 Journalctl 工具将为您提供尽可能多的信息,以便从文件中挽救。它将输出最后一个完整的日志行,然后完成。这已经非常接近你能达到的水平了。

中间的腐败情况则不同。我们没有很好的工具来从这种损坏中挽救数据,但它们可以相对容易地编写。然而,由于期刊的“仅附加”模式,它们不太可能出现在我们的 TODO 列表中。

当然,如果您能够首先确定导致问题的原因并报告,那就太好了。

答案2

它似乎与 ArchLinux wiki 上的这个线程相关,标题为:日志控制问题。看来和这个SystemMaxUse设定也有关系/etc/systemd/journald.conf

该线程不是结论性的,但有几个人在清除下面的日志/var/log/journal/*或增加 的值方面有一些运气SystemMaxUse

答案3

sudo journalctl --flush
sudo journalctl --verify

手动的:

如果启用了持久存储,则要求日志守护进程将存储在的所有日志数据刷新/run/log/journal/到 中。/var/log/journal/在操作完成之前,此调用不会返回。请注意,此调用是幂等的:数据仅在系统运行时期间刷新/run/log/journal/一次/var/log/journal/(但请参阅下面的 --relinquish-var ),并且如果已经发生这种情况,则此命令会干净地退出而不执行任何操作。该命令有效保证了/var/log/journal/返回时所有数据都被刷新。

在217版本中添加。

有一个相关的服务,systemd-journal-flush.service.

相关内容