La utilidad dice que no hay más espacio libre en el disco, cuando hay mucho


4

De alguna manera mi sistema está en apuros.

$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.2.0-29 linux-headers-3.2.0-29-generic
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  linux-headers-3.2.0-80
The following NEW packages will be installed
  linux-headers-3.2.0-80
0 to upgrade, 1 to newly install, 0 to remove and 251 not to upgrade.
3 not fully installed or removed.
Need to get 0 B/11.7 MB of archives.
After this operation, 56.4 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
(Reading database ... 1255202 files and directories currently installed.)
Unpacking linux-headers-3.2.0-80 (from .../linux-headers-3.2.0-80_3.2.0-80.116_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.2.0-80_3.2.0-80.116_all.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.2.0-80/include/linux/sunrpc/gss_err.h.dpkg-new' (while processing `./usr/src/linux-headers-3.2.0-80/include/linux/sunrpc/gss_err.h'): No space left on device
No apport report written because the error message indicates a disk full error
                                                                              dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/linux-headers-3.2.0-80_3.2.0-80.116_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Pero:

us@desktop:/var/log$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1       20158332 16166516   2967816  85% /
udev             4026512        4   4026508   1% /dev
tmpfs             807064      996    806068   1% /run
none                5120        0      5120   0% /run/lock
none             4035308      128   4035180   1% /run/shm
/dev/sda4      904990760 51533960 807485908   6% /home

Perplejo!

us@desktop:~$ df -i
Filesystem       Inodes   IUsed    IFree IUse% Mounted on
/dev/sda1       1281120 1278499     2621  100% /
udev            1006628     507  1006121    1% /dev
tmpfs           1008827     445  1008382    1% /run
none            1008827       3  1008824    1% /run/lock
none            1008827       6  1008821    1% /run/shm
/dev/sda4      57466880  110192 57356688    1% /home

Ah, entonces la tabla de inodo está llena. Nunca tuve eso antes, ¿qué causa eso entonces?


1
¿Cuál es la salida de df -i?
heemayl

1
Esto podría ser causado por muchos archivos más pequeños creados somewhere..run sudo find / -type f -size -1k -lspara comprobar los archivos de tamaño inferior a 1 KB y retirar si no es necesario ..
heemayl

¡Decir ah! Parece que son archivos de encabezado del núcleo, millones de ellos. He tenido esto antes, ubuntu no elimina los núcleos antiguos, por lo que terminas con 2 docenas en una caja LTS. Gracias, creo que estoy en camino ahora.
artfulrobot

Respuestas:


11

Como se muestra en la salida de df -i, está ejecutando un número muy bajo de inodos libres /y, por lo tanto, dpkgno puede completar la operación.

La mayoría de las veces, esto es causado por numerosos archivos pequeños creados en algún lugar (sin intención) en el sistema de archivos.

Puede verificar los archivos de tamaño inferior a 1 KB y comenzar a eliminarlos si no es necesario:

sudo find / -type f -size -1k -ls

Del mismo modo, puede verificar aumentando el tamaño de los archivos hasta llegar a la raíz del problema.


4

Todo el crédito a @heemayl por los consejos que dieron como resultado esta respuesta. He aceptado esa respuesta, pero aquí están los detalles de cómo la arreglé, en caso de que sea útil para otros.

El problema fue causado por una tabla de inodo completa. Según tengo entendido, hay dos partes en un sistema de archivos, inodos y espacio. Los inodes están relacionados con la cantidad de archivos, donde el espacio es lo grande que son. Mi sistema estaba repleto de millones de pequeños archivos causados ​​por Ubuntu que no eliminaba los núcleos antiguos. Como el sistema ha funcionado durante mucho tiempo, tenía más de 40 núcleos, incl. archivos de encabezado, instalados, lo cual es demasiado para un sistema de archivos de una partición de sistema de 20 Gb.

Esto significaba que dpkg no podía completar una instalación, necesitaba más espacio para completar su trabajo, pero desafortunadamente eso tampoco significaba que podía crear espacio usando apt para desinstalar cosas.

La solución que encontré fue mover todos los /usr/src/archivos a mi otra partición, dejando solo un enlace simbólico a los archivos en el fs completo:

sudo mv /usr/src /home/usr-src
sudo ln -s /home/usr-src /usr/src

Después de hacer esto pude dejar que apt complete:

sudo apt install -f

Y después de eso pude desinstalar todos los núcleos más antiguos que no necesitaba, liberando espacio, y luego pude mover la carpeta src hacia atrás.


1
Piense en el sistema de archivos de esta manera: tiene una lista de nombres y números correspondientes. Los nombres se denominan "entradas de directorio" o "nombres de archivo" y los números se denominan "números de inodo". La lista completa se llama "directorio raíz" o /. Los números de inodo identifican de manera única "inodes". El directorio raíz es un inodo (número 2 en ext4), como lo es cualquier otro archivo o directorio. Los inodos se indexan en una tabla de búsqueda , que puede llenarse. Cuando se llena, te quedas sin inodos.
Kevin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.