No más espacio en disco

No más espacio en disco

Estoy usando Ubuntu 14.04. Desde hace algún tiempo no puedo ejecutar más programas simultáneamente. Esto es lo que df -hda:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G   25G  3.4G  88% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             16G  4.0K   16G   1% /dev
tmpfs           3.2G  724K  3.2G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             16G   59M   16G   1% /run/shm
none            100M   40K  100M   1% /run/user
/dev/sda2       438G  138M  416G   1% /scratch
AFS             8.6G     0  8.6G   0% /afs

y de df -i:

Filesystem       Inodes   IUsed    IFree IUse% Mounted on
/dev/sda1       1875968 1875968        0  100% /
none            4106915      11  4106904    1% /sys/fs/cgroup
udev            4103190     499  4102691    1% /dev
tmpfs           4106915     524  4106391    1% /run
none            4106915       3  4106912    1% /run/lock
none            4106915     122  4106793    1% /run/shm
none            4106915      27  4106888    1% /run/user
/dev/sda2      29138944     709 29138235    1% /scratch
AFS             9000000       0  9000000    0% /afs

También probé la sugerencia aquí:bash: echo: error de escritura: no queda espacio en el dispositivo, no ayuda, en realidad lo empeora. Ahora, si entro a la terminal y escribo parcialmente el nombre de una carpeta, presiono Tab y me sale:

cd Pybash: cannot create temp file for here-document: No space left on device

donde solo queria escribir

cd Python

Editar: La salida de sudo du -hxd1 /es:

1.5G    /var
22G /usr
18M /etc
16K /lost+found
36K /home
349M    /opt
68K /tmp
9.7M    /bin
4.2M    /libx32
12K /.config
2.5M    /root
4.0K    /mnt
4.0K    /lib64
13M /sbin
81M /boot
505M    /lib
3.5M    /lib32
12K /media
4.0K    /srv
25G /

Respuesta1

El espacio no es el problema aquí. Tiene un directorio con muchos archivos vacíos (o casi vacíos). Cada uno de ellos toma un inodo y los has usado todos. Encuentra ese directorio:

for i in /* ; do echo "$i" ; find "$i" | wc -l ; done

(Debes hacer esto como root). Esto probablemente mostrará un directorio con una gran cantidad de archivos. Profundice hasta encontrar los archivos que han agotado sus inodos. Elimina todos esos archivos. Entonces estarás bien por el momento. El origen de estos archivos es, por supuesto, otra historia.

Respuesta2

Como puede ver en df -h, todavía le queda espacio en su partición raíz. Sin embargo, df -imuestra que se ha quedado sin inodos. En mi computadora, tengo 7.3G usados ​​en mi partición raíz, pero solo se usan 320,000 inodos, por lo que probablemente tengas muchos archivos muy pequeños obstruyendo las cosas en alguna parte.

Para una discusión sobre dónde, ver, por ejemploStack Exchange: encuentre dónde se utilizan los inodos. Intentaría lo siguiente desde esa página:

sudo find / -xdev -printf '%h\0' | sort -z | uniq -cz | sort -nrzk 1 | tr '\0' '\n' | head -n 50

Si tiene una versión más reciente de Ubuntu (por ejemplo, 15.10), este comando más corto también podría ser más rápido:

sudo du / --inodes -xS | sort -rh | head -n 50

Cualquiera de los dos le dará una lista de directorios ordenados según la cantidad de inodos que están utilizando. Probablemente encontrará uno con un número muy alto (probablemente esté en /varalguna parte). Esto debería darle una idea de qué archivos puede eliminar, pero si tiene alguna pregunta, vuelva a preguntar aquí primero.

Como referencia de lo que podría ser normal, en mi computadora (que ejecuta Ubuntu 15.10), obtengo el siguiente resultado de ese comando:

3297    /usr/share/app-install/desktop
3022    /usr/share/man/man3
2325    /usr/bin
2149    /usr/share/man/man1
2104    /usr/share/app-install/icons
1816    /usr/lib/x86_64-linux-gnu
1089    /usr/src/linux-headers-4.2.0-19/include/linux
1089    /usr/src/linux-headers-4.2.0-18/include/linux
1089    /usr/src/linux-headers-4.2.0-16/include/linux
...

Aquí hay una explicación del comando más simple. sudoes necesario para ejecutar el comando du como root, para que podamos encontrar archivos en carpetas que su usuario normal quizás no pueda leer. du /proporciona el uso del disco del directorio raíz /; --inodesle dice que enumere el uso de inodos, -Sque solo enumere archivos en el directorio mismo y no en subdirectorios, y -xque no cruce los límites del sistema de archivos (ya que su problema definitivamente está activado /y no activado, por ejemplo /scratch). Luego canalizamos la salida de ese comando para sortencontrar a los peores infractores; -rinvierte la clasificación para que los más grandes estén en la parte superior y -hordena numéricamente y no alfabéticamente. Finalmente, head -n 50solo genera las primeras 50 líneas (es decir, los 50 peores infractores).


Aquí hay una explicación del comando más complicado. sudoes necesario para ejecutar el comando de búsqueda como root, de modo que podamos buscar archivos en carpetas que su usuario normal quizás no pueda leer. find /da una lista de todos los archivos en el directorio raíz /; -xdevle indica findque no cruce los límites del sistema de archivos (ya que su problema definitivamente está activado /y no activado, por ejemplo /scratch); -printf '%h\0'imprime el nombre del directorio que termina en un byte cero. Luego canalizamos la salida de ese comando sort -zy luego uniq -czcontamos cuántas veces se imprimió cada directorio (es decir, cuántos archivos hay en cada directorio); sortEs necesario aquí ya que uniqnecesita una lista ordenada. Luego seleccionamos para encontrar a los peores infractores; -rinvierte la clasificación para que los más grandes estén en la parte superior y -nordena numéricamente y no alfabéticamente. tr '\0' '\n'reemplaza cero bytes con nuevas líneas. Finalmente, head -n 50solo genera las primeras 50 líneas (es decir, los 50 peores infractores).

información relacionada