Re: Fuellstand von /var

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 16 Mar 2009 16:48:24 +0100 (CET)

Matthias Teege wrote:
> ich habe auf zwei aktuellen FreeBSD (Nanobsd, 7.1-STABLE) Systemen ein
> Problem mit dem Füllstand von /var. Das Dateisystem ist 18MB groß
> und voll.
> [...]
> Mein erster Reflex war natürlich "massive global delete" aber lauf "du"
> sind nur 4,7MB belegt, was schon eher stimmen kann.

Diskrepanzen zwischen df(1) und du(1) liegen meist daran,
dass irgendwelche Prozesse noch Dateien offen halten, deren
Verzeichniseinträge inzwischen gelöscht wurden.

Solange mind. ein Prozess die Datei noch geöffnet hat, kann
der Platz, den sie im Dateisystem belegt, nicht freigegeben
werden, daher wird es von df(1) entsprechend berücksichtigt.
Im Gegensatz dazu summiert du(1) einfach nur alle Dateien,
die im Verzeichnisbaum aufzufinden sind. Die gelöschten
Einträge findet es nicht, daher kann es sie nicht berück-
sichtigen.

Meistens ist der Effekt harmlos; es kann immer mal vorkom-
men. Viele Programm unlinken sogar absichtlich Temporär-
dateien, nachdem sie sie geöffnet haben.

Falls aber so eine massive Diskrepanz für einen längeren
Zeitraum in /var auftritt, dann wäre mein erster Verdacht,
dass beim Rotieren der Log-Dateien etwas schiefgegangen ist.
Es könnte ein Fehler in einem Rotier-Skript oder der Konfi-
guration sein. Vielleicht wurde auch einfach das Skript
aus irgendeinem Grund gekillt, so dass es kein Signal mehr
an den loggenden Prozess (z.B. Apache) schicken konnte.

> Nach einem Neustart ist alles wieder in Ordnung

Ja, beim Shutdown werden alle Prozesse beendet und alle
Dateien geschlossen. Bei solchen Dateien, die keinen
Verzeichniseintrag mehr haben (d.h. Link-Count == 0),
wird dann der belegte Platz im Dateisystem freigegeben.

Ein Stoppen bzw. Restarten der betreffenden Prozesse
hätte natürlich genügt; ein Reboot ist nicht erforderlich.

> Wie bekomme ich raus, wer da die Platte füllt?

Das folgende Kommando listet alle Prozesse, die Dateien mit
Link-Count 0 offen haben (inkl. Name, PID, Dateisystem und
Größe der Datei):

lsof +L1

(lsof gibt's in /usr/ports/sysutils/lsof)

Du solltest dann natürlich nicht alle diese Prozesse blind
killen, sondern einzeln schauen, ob es ein Kandidat sein
könnte (insbesondere anhand der Dateigröße). Wie gesagt,
manche Programme verwenden dieses UFS-Feature absichtlich,
und normalerweise ist es unschädlich.

Gruß
   Olli

PS: Das Ganze hat natürlich nichts mit FreeBSD zu tun.
Unter Solaris, Linux usw. ist es genauso.

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
"Being really good at C++ is like being really good
at using rocks to sharpen sticks."
        -- Thant Tessman
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 16 Mar 2009 - 16:48:52 CET

search this site