Mi solución:
Intente averiguar si se trata de un problema de inodos con:
df -ih
Intente encontrar carpetas raíz con un gran número de inodos:
for i in /*; do echo $i; find $i |wc -l; done
Intenta encontrar carpetas específicas:
for i in /src/*; do echo $i; find $i |wc -l; done
Si se trata de encabezados de Linux, intente eliminar los más antiguos con:
sudo apt-get autoremove linux-headers-3.13.0-24
Personalmente, los moví a una carpeta montada (porque para mí falló el último comando) e instalé el último con:
sudo apt-get autoremove -f
Esto resolvió mi problema.
Mi situación era que me quedé sin inodos y ya había borrado casi todo lo que pude.
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 942080 507361 11 100% /
Estoy en un ubuntu 12.04LTS y no pude eliminar los antiguos núcleos de Linux que ocuparon alrededor de 400,000 inodos porque apt se rompió debido a la falta de un paquete. Y no pude instalar el nuevo paquete porque no tenía inodos, así que me quedé atascado.
Terminé eliminando a mano algunos núcleos antiguos de Linux para liberar alrededor de 10 000 inodos
$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*
Esto fue suficiente para permitirme instalar el paquete faltante y arreglar mi apt
$ sudo apt-get install linux-headers-3.2.0-76-generic-pae
y luego elimine el resto de los antiguos núcleos de Linux con apt
$ sudo apt-get autoremove
las cosas están mucho mejor ahora
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 942080 507361 434719 54% /
Es bastante fácil que un disco tenga una gran cantidad de inodos utilizados incluso si el disco no está muy lleno.
Un inodo se asigna a un archivo, por lo que, si tiene miles de millones de archivos, todos de 1 byte cada uno, se quedará sin inodos mucho antes de quedarse sin disco.
También es posible que la eliminación de archivos no reduzca el recuento de inodos si los archivos tienen varios enlaces físicos. Como dije, los inodos pertenecen al archivo, no la entrada del directorio. Si un archivo tiene dos entradas de directorio vinculadas, eliminar una no liberará el inodo.
Además, puede eliminar una entrada de directorio pero, si un proceso en ejecución todavía tiene el archivo abierto, el inodo no se liberará.
Mi consejo inicial sería eliminar todos los archivos que pueda, luego reiniciar el cuadro para asegurarse de que no queden procesos que mantengan abiertos los archivos.
Si lo hace y todavía tiene un problema, háganoslo saber.
Por cierto, si está buscando los directorios que contienen muchos archivos, este script puede ayudar:
#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$
Si tiene mucha mala suerte, ha usado aproximadamente el 100% de todos los inodos y no puede crear el scipt. Puede verificar esto con df -ih
.
Entonces este comando bash puede ayudarte:
sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
Y sí, esto llevará tiempo, pero puede ubicar el directorio con la mayoría de los archivos.