16 votos

ext4 listado de archivos muy lentos en un directorio específico, que contenía gran cantidad de archivos antes de

De fondo

Yo tenía un pequeño logrotate misshap... Logrotate sería rotar los logs archivados por misstake causando una ecuación cuadrática crecimiento de mis archivos en /var/log/. Y por el momento me llamó el viento que algo estaba mal, /var/log/ contenía ya un par de millones de archivos...

Me las arreglé para (luego de la pérdida de cabello y encontrar/sed/grep magia) eliminar todos los archivos no deseados y arreglar mi logrotate config. Y pensé que todo estaba bien...

Problema

Siempre me ls/du -hs o de lo contrario lista el contenido de /var/log/ (que ahora contiene 80 mb de archivos/registros y en la mayoría de unos pocos cientos de archivos), el proceso de hacer que se bloquea durante un buen minuto o dos. Yo creo que esto es de alguna manera relacionados con el logrotate misshap pero no estoy seguro, podría ser algo más. De todos modos estoy en una pérdida para saber donde empezar a depurar o buscando una solución para esto. Ayuda por favor :3

Otra info

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 

Pensé: ¿cuántos archivos en un directorio es demasiado? (Descarga de datos de la red) se relacionan, pero no tengo los archivos a la izquierda nada más.

Editar

El problema persiste incluso después de una llamada a init 1 así que creo que es seguro asumir que no hay ningún otro proceso de la culpa, sino la de FS.

Solución (aplicada desde aceptado respuesta)

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

25voto

Matthew Ife Puntos 12680

Directorios sólo crecen en tamaño, no se encoja. Intente mover todos los archivos en un directorio temporal (como log2) entonces rmdir el antiguo directorio a renombrar el uno temporal como permanente una nueva.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: