ext4 Auflistung von Dateien in einem bestimmten Verzeichnis, das zuvor viele Dateien enthielt, ist sehr langsam

16

Hintergrund

Ich hatte ein kleines Logrotate-Misshap ... Logrotate drehte die archivierten Protokolle durch einen Irrtum und verursachte ein quadratisches Wachstum der Dateien in meinem /var/log/. Und als ich Wind bekam, war etwas schief und /var/log/enthielt bereits ein paar Millionen Dateien ...

Ich habe es geschafft (nach einigem Haarausfall und der Suche nach / sed / grep magic), alle fehlerhaften Dateien zu entfernen und meine logrotate-Konfiguration zu reparieren. Und dachte alles wäre gut ...

Problem

Jedes Mal , wenn ich ls/ du -hsoder auf andere Weise auflisten , den Inhalt /var/log/(die jetzt 80 MB Archive / logs enthält und höchstens ein paar hundert Dateien) Der Prozess, der hängt für eine gute oder zwei Minuten zu tun. Ich glaube, das hängt irgendwie mit dem logrotierten Missgeschick zusammen, aber ich bin mir nicht sicher, es könnte etwas anderes sein. Wie auch immer, ich weiß nicht, wo ich anfangen soll, Fehler zu beheben oder nach einer Lösung dafür zu suchen. Bitte helfen Sie: 3

Andere Information

uname -a
Linux xxx 3.3.8-gentoo #18 SMP Sat Sep 21 22:44:40 CEST 2013 x86_64 Intel(R) 
Core(TM)2 CPU 4400 @ 2.00GHz GenuineIntel GNU/Linux

cat /proc/meminfo 
MemTotal:        2051552 kB
MemFree:           75612 kB
Buffers:            9016 kB
Cached:          1740608 kB
SwapCached:            0 kB

CFQ IO scheduler + SLUB allocator 

Ich dachte mir das: Wie viele Dateien in einem Verzeichnis sind zu viele? (Herunterladen von Daten aus dem Netz) war verwandt, aber ich habe die Dateien nicht mehr übrig.

Bearbeiten

Das Problem bleibt auch nach einem Anruf bei bestehen, init 1 sodass ich davon ausgehen kann, dass kein anderer Prozess als der FS schuld ist.

Lösung (wie von der akzeptierten Antwort übernommen)

init 1
mv /var/log /var/log1
mkdir /var/log
chmod --reference=/var/log1 /var/log
chown --reference=/var/log1 /var/log
tar -C /var/log1 -cvp . | tar -C /var/log -xvp
rm -rf /var/log1
init 5
Emily L.
quelle

Antworten:

25

Verzeichnisse werden immer größer, nicht kleiner. Versuchen Sie, alle diese Dateien in ein temporäres Verzeichnis (wie log2) zu verschieben, dann rmdir das alte Verzeichnis und benennen Sie das temporäre Verzeichnis in das neue permanente um.

Matthew Ife
quelle
Ich habe das getan, als du geantwortet hast. Es hat funktioniert :) Leider habe ich nicht genug Ruf, um dich zu unterstützen: /
Emily L.