Communityoplossing

CasaOS-journallogs vullen de schijf: journald veilig beperken

A CasaOS server accumulated more than 5 GB of journal logs, prompting a manual journald size limit and questions about retention and alternate log locations.

Kort samengevat: begrens journald voordat het een kleine CasaOS-systeemschijf vult

Het oorspronkelijke CasaOS-systeem had meer dan 5 GB onder /var/log/journal. De duurzame oplossing is niet om journalbestanden handmatig te verwijderen. Stel een maximale grootte in, bewaar eventueel een minimale hoeveelheid vrije ruimte en ruim oude gearchiveerde logs één keer op. Daarna handhaaft journald het beleid automatisch.

Meet het journal voordat je iets wijzigt

journalctl --disk-usage
du -sh /var/log/journal 2>/dev/null
df -h /var

Als logs meerdere gigabytes in beslag nemen op een kleine opstartschijf, bepaal dan hoeveel recente geschiedenis je echt nodig hebt. Voor een homeserver is een vaste bovengrens meestal voorspelbaarder dan wanneer standaardinstellingen een percentage van het bestandssysteem mogen gebruiken.

Stel opslag- en bewaarbeperkingen in journald.conf in

[Journal]
SystemMaxUse=1G
SystemKeepFree=1G
MaxRetentionSec=14day

SystemMaxUse beperkt permanente journalopslag, terwijl SystemKeepFree vrije ruimte voor de rest van het besturingssysteem behoudt. MaxRetentionSec is optioneel als je ook een tijdsgebonden bovengrens wilt. De groottebeperkingen van journald beschrijven hoe deze limieten samenwerken.

Ruim oude logs één keer op nadat je het beleid hebt ingesteld

sudo journalctl --rotate
sudo journalctl --vacuum-size=1G

Door opschonen worden gearchiveerde journalbestanden verwijderd; de configuratie wordt er niet door vervangen. Als je alleen opschoont en nooit een limiet instelt, kan de map opnieuw groeien. De opschoonopties van journalctl beschrijven de ondersteunde opruimopdrachten.

Stop journald niet alleen om het configuratiebestand te vervangen

Het bericht uit 2024 stopte de service, verwijderde de configuratie en kopieerde een vervangend bestand. Dat werkte, maar is onnodig verstorend. Bewerk het bestand veilig, maak een back-up en start daarna de service opnieuw:

sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.bak
sudo nano /etc/systemd/journald.conf
sudo systemctl restart systemd-journald

Kan journald logs op een andere schijf opslaan?

Niet via een eenvoudig willekeurig pad in journald.conf. Storage=persistent doelen /var/log/journal; Storage=volatile gebruikt /run/log/journal. Als je elders langer gegevens wilt bewaren, stuur de logs dan door naar een andere syslog-/journalhost in plaats van kritieke systeempaden zomaar als bind-mount te koppelen.

Vind de service die buitensporig veel logs genereert

journalctl -p warning..alert --since "24 hours ago"
journalctl --since "24 hours ago" | tail -200
systemctl --failed

Een schijflimiet beschermt het besturingssysteem, maar verhelpt niet een service die duizenden keren dezelfde fout logt. Herstel de luidruchtige service zodra het systeem weer wat ademruimte heeft.

Als je overweegt over te stappen van een oudere CasaOS-installatie naar een meer appliance-achtige server, bieden het ZimaBoard 2-platform en de ZimaOS-back-up een veiligere migratiecontext.

Voorkom dat één service het journal overspoelt

Als één container of daemon voortdurend dezelfde waarschuwing genereert, beperken algemene opslaglimieten alleen de schade. Controleer de units die de meeste logs produceren en los vervolgens de oorzaak op:

journalctl --since "1 hour ago" -o short-unix | tail -500
journalctl -u SERVICE_NAME --since "1 hour ago"

Voor services die door systemd worden beheerd, kunnen logfrequentielimieten per unit pieken verminderen zonder alle andere systeemlogs weg te gooien. Gebruik snelheidsbeperking pas nadat je begrijpt wat er wordt onderdrukt; herhaalde opslag-, bestandssysteem- of netwerkfouten kunnen het bewijs zijn dat je nodig hebt om het onderliggende probleem op te lossen.

Veelgestelde vragen

Hoe groot moet SystemMaxUse zijn?

Er bestaat geen universele waarde. Op een kleine systeemschijf is 500 MB tot 2 GB een praktisch uitgangspunt als je zelden een lange loggeschiedenis nodig hebt. Laat voldoende vrije ruimte over voor updates en metadata van applicaties.

Verwijdert journalctl --vacuum-size huidige logs?

Het verwijdert gearchiveerde journalbestanden totdat de doelgrootte is bereikt. Roteer eerst als je het actieve journal naar de gearchiveerde set wilt verplaatsen.

Moet ik logrotate gebruiken voor /var/log/journal?

Nee. Binaire journalbestanden worden door systemd-journald zelf beheerd. Gebruik de instellingen voor grootte en bewaarbeleid van journald en de vacuum-bewerkingen van journalctl.

Kan ik logs op een andere HDD bewaren?

Ja, via logdoorsturing of een doelbewust ontworpen mount, maar journald biedt geen instelling voor een willekeurig aangepast pad. Logboekregistratie op afstand is doorgaans veiliger dan het verplaatsen van een kerndirectory van het besturingssysteem.

Waarom is het journal meerdere gigabytes groot geworden?

Het standaardbeleid kan aanzienlijke opslag toestaan, en één luidruchtige service kan snel vermeldingen genereren. Controleer zowel de geconfigureerde limiet als de service die het volume veroorzaakt.