Se me olvidó copiar a la lista: ---------- Mensaje reenviado ---------- De: Igor Zubiaurre <[email protected]> Fecha: 20 de abril de 2010 13:22 Asunto: Re: [CRySoL] Borrado de 15 millones de ficheros Para: Fernando Sancho [email protected]
El 20 de abril de 2010 10:41, Fernando Sancho <[email protected]> escribió: Aquí os propongo un problema que me tiene dando vueltas como un tonto los > últimos días. > > Tengo un servidor dando servicio de forja mediante Redmine ( > http://www.redmine.org/). La versión que tengo en producción tiene un bug > que no conocía, y es que no borra los ficheros que mantienen las sesiones > abiertas. En aproximadamente 10 meses ha llegado a prácticamente agotar el > espacio de i-nodos disponibles en la partición. como puede verse en la > salida del comando df -i > > df -i /var > Filesystem Inodes IUsed IFree IUse% Mounted on > /dev/mapper/lvm00-var > 16842752 15448231 1394521 92% /var > > Para que el sitio siguiese funcionando renombré el directorio y lo recreé > de nuevo vacío. El problema lo tengo a la hora de borrarlo. Todos los > métodos que he intentado me dejan el sistema prácticamente inusable al cabo > de unas horas y realmente no llegan a borrar nada. Este es el directorio en > cuestión > > drwxr-xr-x 2 www-data www-data 871227392 2010-04-19 16:57 sessions.bak > > Como podéis ver, el directorio ocupa 831MB y calculo que dentro hay unos 15 > millones de ficheros. No los he contado, pero creo que al ser ficheros casi > vacíos hay uno por i-nodo y si el total de i-nodos ocupados en la partición > es de 15 millones y medio, unos 15 millones deben estar ahí dentro. > > He probado con: > > rm -rf sessions.bak > find sessions.bak -print0 | xargs -0 rm -f > > En ambos casos al cabo de un rato el sistema se queda en 98% waiting y no > veo que la cuenta de i-nodos decrezca lo mas mínimo. > > Cualquier otra combinación de parámetros intentará analizar primero el > contenido del directorio y se eternizaría aun mas. > Imagino que find así a pelo trata de poner en cola los 15M de archivos y eso es lo que satura la E/S. No sé si head recibe todo su input antes de cortar o corta cuando le parece y deja de recibir. Si es lo segundo, podría servirte para limitar la lista a paquetes de tamaño controlado. Habría que repetir muchas veces, pero quizá no te sature el sistema. La idea sería llegar a un bucle de, pongamos, N llamadas consecutivas (no paralelas) que limpien M archivos cada vez. Algo como N=3000; M=5000.
_______________________________________________ CRySoL mailing list http://crysol.inf-cr.uclm.es/ https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol
