Wenn ich ein mache, journalctl --disk-usage
sagt es etwas über300 MBGröße der Journaldateien, aber wenn ich mir den eigentlichen Text anschaue, journalctl | wc -c
ist es etwas über28 MB. Nun, journald verfügt über eine Komprimierung und selbst wenn man Metadaten wie Zeitstempel, UID, Nachrichten-Hash und ähnliches berücksichtigt, scheint es mir eine lächerliche Verschwendung von Speicherplatz zu sein.
Kann mir jemand sagen, warum die Journaldateien im Vergleich zum eigentlichen Text darin so groß sind?
Antwort1
Dafür gibt es zwei Gründe. Erstens gibt es, wie @Mella erwähnte, den Unterschied zwischen dem aktuellen Protokoll und allen Protokollen.
Zweitens man journalctl
gibt es, wie in dokumentiert, eine Reihe von Ausgabeformaten. Sie haben die Größe des kompaktesten/am wenigsten detaillierten Formats gemessen. Um die maximale Anzahl an Daten im systemd-Journal anzuzeigen, verwenden Sie:
journactl --output=verbose
In meinem Fall gibt die kompakte Journalausgabe 32 Megabyte an Daten zurück, während mit 128 MB zurückgegeben --output=verbose
und mit 152 MB gefunden werden journalctl --disk-usage
, wobei sowohl aktive als auch archivierte Journale abgedeckt sind.
Lesen Sie nach, wie Sie bei Bedenken man journald.conf
den genutzten Speicherplatz begrenzen können .journald
Antwort2
- Sie sind riesig, weil es sich um eine Art Fehler handelt:
Wie angegebenstromaufwärtsund daher ist den Entwicklern von journald bekannt, dass das im Binärprotokoll verwendete Format (noch?) überhaupt nicht besonders toll ist.
- Sie sind riesig, weil vielleicht die Kompression nicht aktiviert ist
Es gibt auch eine Option mit /etc/systemd/journald.conf
dem Namen Compress=yes
, die auf Ihrem System möglicherweise nicht aktiv ist, sodass effektiv keine Komprimierung stattfindet.
- Die Ausgabe archivierter Zeitschriften spielt hierbei keine Rolle.
Obwohl es im Prinzip richtig ist, dass Journald unterscheidet zwischenaktivUndarchiviertJournalprotokolle, dies ist eine irreführende Antwort auf die anderen Antworten, da darin man journalctl
eindeutig steht:
Die Ausgabe erfolgt aus allen zugänglichen Journaldateien, unabhängig davon, ob sie rotiert sind oder gerade geschrieben werden und ob sie zum System selbst gehören oder zugängliche Benutzerjournale sind.
Die anderen Antworten sind daher hier irreführend.
- Der Festplattenverbrauch von journalctl ist aufgrund einiger Maßnahmen zur Dateizuordnung, Fragmentierung und Beschädigungssicherung enorm (d. h. größer als bei einfachen Textdateien mit vergleichbarem Informationsgehalt, also Feldern).
„Probleme mit der Dateifragmentierung/-zuordnung“
Auf meiner Box journalctl --version == "systemd 239[...]"
sind die Journaldateien, die die Daten enthalten, in Dateigrößen von einem Vielfachen von 8 MiB vorhanden. Als Folge davon ist die Journaldatei meines Systems 8 MiB groß, auch wenn nur ein Bruchteil (in einem Fall 56 KiB) der Daten tatsächlich darin gespeichert ist.
"Anti-Korruptionsproblem" Laut Poettering, einem der Entwickler von journald
und systemd
in einem Fall, in dem eine Zeitschrift als durch korrumpiert angesehen wird journald
, wird sie nicht "repariert", sondern so belassen, wie sie ist, um weitere Probleme zu vermeiden. (siehehttps://bugs.freedesktop.org/show_bug.cgi?id=64116#c3)
Dies bedeutet natürlich, dass die Wahrscheinlichkeit groß ist, dass sich in Ihrem Var-Protokoll unkomprimierte, fast leere Binärprotokolldateien befinden, wodurch es effektiv viel, viel größer wird als eine vernünftige Alternative im Klartext.
Antwort3
journalctl
ohne Parameter (mit deren Ausgabe Sie messen wc -c
) werden nur Journaleinträge im aktiven Journal angezeigt (ich bin mir nicht spontan sicher, was einen Umschlag auslöst). journalctl --disk-usage
wird der von den archivierten Journalen sowie dem aktiven Journal verwendete Speicherplatz angezeigt.