minute to read


Festplatte voll

Jetzt hat es meinen vServer auch mal erwischt. Ich wollte gestern Abend meinen Blog aufrufen, aber nichts passierte im Firefox. Die Seite war nicht zu erreichen.

Also war jetzt Fehlersuche angesagt. Per ssh auf den vServer eingeloggt und schnell das Dateisystem mit df -h überprüft. Die Option -h zeigt mir die Ausgabe von Größen in menschenlesbarem Format (z.B. 1K 234M 2G).

vps832469665:~# df -h 
Dateisystem               Größe Benut  Verf  Ben% Eingehängt auf
/dev/vzfs                  11G    11G  1,6M  100% /

Ok, das Problem ist gefunden. Die Festplatte ist voll.

Um jetzt herauszufinden, welche Datei für das Chaos zuständig ist, gebe ich folgendes in die Konsole ein:

vps832469665:~# ls -lahS $(find / -type f -size +10000k)
-rw-rw-r-- 1 ossec    ossec    7,2G 12. Aug 22:16 /var/ossec/logs/ossec.log

Hier eine kurze Erklärung des Kommandos.

Ich nutze hier die einzelnen Kommandos ls und find. Das Kommando ls zeigt mir den Verzeichnisinhalt an, wobei ich die Darstellung der Ausgabe mit verschiedenen Optionen beeinflussen kann.

Die eingesetzten Optionen haben folgende Bedeutung:

  • l: Verwendung eines langen Listenformates.
  • a: Alle Dateien werden angezeigt, auch versteckte Dateien, die mit einem "." beginnen.
  • h: Größenangaben erfolgen in einem menschenlesbarem Format.
  • S: Die Ergebnisliste wird nach der Dateigröße sortiert.

An das ls-Kommando wird als Parameter das Ergebnis des find-Kommandos übergeben.

Dafür ist das Konstrukt $(find / -type f -size +10000k) verantwortlich. Innerhalb der Klammerung wird das find-Kommando ausgeführt, um alle Dateien zu ermitteln, die größer als 10 MB sind. Die Parameter haben hierbei folgende Bedeutung:

  • /: Dieser Parameter nennt das Verzeichnis, das durchsucht werden soll. Hier wird ab der Wurzel samt aller Unterverzeichnisse durchsucht.
  • -type f: Hiermit wird festgelegt, dass nur nach normalen Dateien gesucht werden soll.
  • -size 10000k: Diese Option legt die Mindestgröße der zu suchenden Dateien in Kilobyte fest.

Das Programm Ossec (Open Source Host-based Intrusion Detection System) mit seiner LOG-Datei (7,2 GB) ist der Übeltäter. Also weg damit. Die Datei wird später wieder von OSSEC erstellt.

vps832469665:~# rm /var/ossec/logs/ossec.log

So, jetzt noch einmal auf das Dateisystem schauen, wie es nun mit dem Speicherplatz aussieht.

vps832469665:~# df -h 
Dateisystem              Größe Benut   Verf   Ben% Eingehängt auf 
/dev/vzfs                 11G   2,8G   7,3G   28%  /

Na also, alles wieder im Lot.

Demnächst werde ich mir mal ein Script schreiben, was mich warnt, wenn eine Datei eine bestimmte Größe erreicht hat.

::Update::

Hier nun das Script bzw. der Einzeiler zum Aufspüren von großen Dateien.

grossedateien.sh

#!/bin/sh 
find / -type f -size +150M | xargs ls -lahS | mail -s
"Grosse Dateien vServer" meine@e-mail-adresse.de

Ich habe dazu einen Cronjob eingerichtet der wöchentlich läuft und mich dann per E-Mail informiert.