Ich führe einen Daemon aus, der Dateien in einem Verzeichnis analysiert und sie dann löscht. Falls der Daemon aus irgendeinem Grund nicht läuft, werden Dateien dort gestapelt. Heute hatte ich 90k Dateien in diesem Verzeichnis. Nachdem der Daemon erneut gestartet wurde, wurden alle Dateien verarbeitet.Wie "defragmentieren" Sie ein Verzeichnis auf ext3?
Das Verzeichnis bleibt jedoch groß; "ls -dh." gibt eine Größe von 5,6M zurück. Wie kann ich dieses Verzeichnis "defragmentieren"? Ich habe bereits herausgefunden, dass das Umbenennen dieses Verzeichnisses und das Erstellen eines neuen mit dem gleichen Namen und den gleichen Berechtigungen das Problem lösen. Wie auch immer, da Dateien zu jeder Zeit dort hineingeschrieben werden, scheint es keine sichere Möglichkeit zu geben, das Verzeichnis umzubenennen und ein neues zu erstellen, da das Zielverzeichnis nicht existiert.
Also a) gibt es ein Weg/ein (Shell-) Programm, das Verzeichnisse auf einem ext3-Dateisystem defragmentieren kann? oder b) Gibt es eine Möglichkeit, eine Sperre für ein Verzeichnis zu erstellen, so dass das Schreiben von Dateien blockiert wird, bis das Umbenennen/Erstellen beendet ist?
BTW.offenbar können Sie mit dem Befehl "filefrag" prüfen, ob ein Verzeichnis fragmentiert ist. – oliver
Siehe auch http://serverfault.com/questions/264124/shrink-reset-directory-size und http://unix.stackexchange.com/questions/38639/how-to-compact-a-directory – oliver