Belegten Speicherplatz von Core dumps mit systemd begrenzen
(Update 23.7.2016)

Posted on Friday, 16 January 2015 in Linux
Last modified on 23 July 2016

Irgendwann erhielt ich die Meldung, in meinem root-Verzeichnis sei kein Speicherplatz mehr frei. Dabei habe ich selbst keinerlei Aktionen durchgeführt, die unnötigen Speicherplatz in Anspruch nehmen. Mittels find habe ich schnell die Übeltäter gefunden: Speicherabzüge oder auch Core dumps von Firefox. Mein Verzeichnis /var/lib/systemd/coredump/* hat mehrere GB an Speicher eingenommen.

In letzter Zeit habe ich, teils auch durch Spielereien meinerseits, des öfteren mal einen Firefox-Absturz erlebt. Da ich in der Regel sehr große Sitzungen und einige installierte Add-ons habe, ist der Speicherverbrauch entsprechend hoch. Da bei einem Core dump der Speicherinhalt zum Debuggen abgespeichert wird, wird bei unkomprimierten Speicherabzügen mindestens die Größe des verwendeten Arbeitsspeichers benötigt. Da ich allerdings keinerlei Absichten hatte, die Core dumps für Debugging-Zwecke zu verwenden, ist es nicht nötig, diese aufzuheben.

Um automatische Core dumps für Programme aus dem Userspace auszuschalten, muss in der Datei /etc/systemd/coredump.conf die Zeile

Storage=none

aktiviert werden. Damit wird systemd mitgeteilt, keine Speicherabzüge aufzuzeichnen. Um die Einstellung anzuwenden, muss die systemd-Konfiguration neu geladen werden:

# systemctl daemon-reload

Ein weiterer Vorteil: Nach einem Crash von Firefox werden kaum System-Ressourcen benötigt, da nicht mehr ein GB oder mehr auf die Festplatte geschrieben wird.

[Update vom 23.7.2016]

Es ist sinnvoller, /etc/systemd/coredump.conf.d/custom.conf statt /etc/systemd/coredump.conf zu verwenden, da diese selbst angelegte Datei die systemeigene Datei /etc/systemd/coredump.conf überschreibt. So werden eventuelle Probleme aufgrund einer geänderten Standardkonfiguration bei einem Update vermieden und die in /etc/systemd/coredump.conf.d/custom.conf vorgenommenen Einstellungen behalten weiterhin ihre Gültigkeit.

Zuerst muss mit

# mkdir /etc/systemd/coredump.conf.d

das Verzeichnis angelegt werden. Danach mit einem Editor der Wahl die Datei anlegen, z. B. vim /etc/systemd/coredump.conf.d/custom.conf, und folgenden Inhalt einfügen:

[Coredump]
Storage=none

Dabei ist der [Coredump] Abschnittsname wichtig, da die Einstellung ansonsten ignoriert wird. Damit die Einstellung angewendet wird, muss die Konfiguration mittels

# systemctl daemon-reload

neu geladen werden.