Para empezar mencionare la historia de como sucediรณย el problema y luego como solucionarlo.
Mi equipo es un netbook Sony Vaio m120AL que tengo desde hace unos 3 aรฑos largos con un disco duro de 320 GB donde conviven Windows 7, Chakra , mi particiรณn de trabajo con Xubuntu 12.04, la particiรณn de swap, la particiรณn /homeย y una particiรณn adicional de informaciรณn con la que comparto informaciรณn con Windows.
Por estas razones mis particiones raรญz en ambos sistemas son considerablemente pequeรฑas para los estรกndares de la mayorรญa (alrededor de 6GB cada una) pero que nunca me han dado problemas pues son mรกs que suficientes para todos los paquetes que necesito.
Ahora bien entrando a la situaciรณn en concreto, hace unos dรญas aplicando unas actualizaciones en Xubuntu (entre las cuales se incluรญa un nuevo Kernel) veo que el gestor de actualizaciones muestra un error diciendo queย se esta tratando de instalar linux-image-3.2.0-51-generic pero que su dependencia linux-headers-3.2.0-51 no serรก instalada, reviso en detalle el error y me doy cuenta que dpkg se queja de que no hay espacio disponible.
El error decรญa al algo de este estilo, aunque no idรฉntico porque no lo anotรฉ:
no se pudo crear `/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new' (mientras se procesaba `./usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h'): No queda espacio en el dispositivo
En alguna ocasiรณn anterior me ha pasado lo mismo pero habรญa sido por que habรญa dejado acumular varios Kernel antiguos sin borrarlos , pero en esta ocasiรณn reviso y tengo prรกcticamenteย 600 Mb disponibles segรบn Conky por lo que no lo entiendo, pero para confirmar si puede ser un error en como lo habรญa configuradoย o similar ejecuto un df -h:
Por lo que no me equivoco y ese es espacio mรกs que suficiente para realizar la actualizaciรณn (lo he hecho asรญ ya muchas veces en el aรฑo largo ya que llevo con Xubuntu) de todas formas realizo un sudo apt-get clean para limpiar los paquetes que tenga descargados e intento de nuevo, pero con los mismos resultados.
Se me sigue haciendo extraรฑo pero de todas formas intento mover fuera de / los temas de iconos que siempre uso y que he modificado mucho (Faenza y Awoken) para liberar mรกs espacio, y asรญ finalmente logro realizar la actualizaciรณn, procediendo nuevamente a devolverlos a /.
Sin embargo me quedรณ en la cabeza la idea de que el asunto tenรญa que ir por otra parte pero no sabรญa cual. Algunas horas mรกs tarde cuando intento instalar algunos paquetes extra sale de nuevo el susodicho error, y una vez mรกsย vez habรญa espacio suficienteย de sobra, por lo que me dedico a investigar.
Una bรบsqueda por Internet me lleva a varios hilos en los foros de ubuntu-es, pero la respuesta de algunos individuos allรญ siempre es al misma: no tienes suficiente espacio elimina archivos o amplia la particiรณn raรญz, pero me di cuenta de algo en comรบn en los diferentes hilos que encontrรฉ, siempre la particiรณn raรญz que tenรญa espacio libre, pero era similar al mio (~600-900 Mb) y el tamaรฑo de la particiรณn nunca superaba los 10 Gb por lo que me termine deย convencer que el problema debรญa ser otro, y es asรญ como llegue al tรญtulo del post gracias a esta pรกgina, el problema es que la particiรณn raรญz tenia el 100% de los inodos usados.
El uso de los inodos puede verse con el comando df -i:
Y ahora viene la explicaciรณn.
Los inodos son en palabra de Dennis Ritchie:
Un รญndice, debido a la estructura algo inusual de un sistema de ficheros que almacenaba la informaciรณn del acceso a los archivos como una lista plana en disco, dejando al margen toda la informaciรณn jerรกrquica de los directorios
y por tanto puede suceder que para un sistema de archivos determinado exista aรบn espacio libre paraย almacenar ficheros, pero no queden inodos disponibles para indexarlos porque existen muchos archivos en el sitema y por lo tanto no pueden crearse nuevos.
El asunto es que el nรบmero de inodos en una particiรณn EXT4 no puede ser modificado (existen otros tipos de sistemas como JFX o XFS donde esto no es una limitante pues es dinรกmico) es un nรบmero fijo que se calcula cuando se crea la particiรณn conย mkfs.ext4 de acuerdo al tamaรฑo de la misma con una relaciรณn de bytes por inodo segรบn las preferencias ubicadas en /etc/mke2fs.conf.
Al instalar el sistema lo usual es que use las preferencias por defecto que incluye un relaciรณn inode = 16384, que para particiones pequeรฑas pude ser demasiado grande y no cree el nรบmeroย suficiente (como en mi caso). La รบnica manera de cambiarla es creando/formateando la particiรณnย y especรญficandolo con la opciรณn -i.
Sin embargo esto no era una opciรณn para mi, como ya lo comentรฉ los inodos estรกn relacionados con el nรบmero de ficheros existentes, asรญ que use el siguiente script en bash que se encuentra en stackoverflow y que esta enlazado en la pรกgina que antes menciones para encontrar cuales eran los directorios en la particiรณn raรญz con mรกs ficheros:
#!/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_$$
Lo cual arroja el siguiente resultado:
El nรบmero que aparece a la izquierda indica la cantidad de archivos presentes y la ruta indica el directorio asociado, una lรญnea mรกs abajo sale el directorioย /var/lib/dpkg/info pero como siempre elimino mis paquetes con purge aquรญ no hay nada que hacer.
Sin embargo si reconozco dos problemas, el primero y aunque en la catpura no sale de ahรญ hacia arriba varias entradas mรกs incluyen a los iconos Awoken, por lo que debo moverlos si o si, ademรกs que eso explica por que cuando lo hice pude actualiza los paquetes, pues libere muchos inodos de la particiรณn raรญz cuando los movรญ, pero el problema volviรณ cuando los recoloque.
Y segundo el siguiente mayor nรบmero de entradas esta asociada a los headers de varios kernel viejos, y caigo en cuenta que el procedimiento que siempreย uso para eliminar los kernel viejos noย elimina los headers, lo que suelo usar es lo siguiente, en una terminal escribo:
dpkg --get-selections | grep linux-image
lo cual me muestraย los kernel instalados y luego uso:
sudo apt-get purge paquete
Donde paquete es el nombre del kernel en cuestiรณn, pero esto no remueve los headers asociados asรญ que hago un:
dpkg --get-selections | grep linux
Y entonces procedo a eliminar los antiguos headers, con:
sudo apt-get purge linux-headers-3.2.0-41 linux-headers-3.2.0-44 linux-headers-3.2.0-45 linux-headers-3.2.0-48
Yย voilร , pero claro estaba tambiรฉn el tema de lo iconos Awoken asรญ que decido moverlos a ~/.icons y para que estรฉn disponibles para todo el sistema simplemente hago un enlace simbรณlico en /usr/share/icons, el primer resultado de df -i es con la eliminaciรณn de los headers y el segundo despuรฉs de haber movido lo iconos.
Con esto ya esta solucionado el problema, yย puedo instalar/actualizar paquetes sin problema, espero que esta entrada le sea de ayuda a alguien, o sirva para futura referenciaย sobre instalaciones en particiones pequeรฑas y desmitifique el tema tan difundido por los foros de la falta de espacio.
Hola, utiliza ubuntu tweak ( http://ubuntu-tweak.com ) es como el tuneup para windows, te ayuda a sacar mucha basura y de paso desinstala los kernel viejos de manera segura, sin embargo, deja un antepenultimo kernel para arrancar, en alguna ocasion el ultimo kernel no me funciono y logre entrar al sistema gracias a que no los borre todos.
Si lo conozco de hace rato, pero siempre he preferido hacerlo a mi manera y entender la forma en que funcionan las cosas, de todas maneras aun sin el par de headers viejos que tenรญa el problema se hubiera presentado igual en mรกs o menos tiempo por lo temas de iconos, y que al final como lo mencione NO es un problema de falta de espaciรณ sino de inodos usados.
Gracias por compartir esto. Hasta ahora no he tenido ese problema, ya que los disco que uso, estan todos en formato para linux, nada de windows, ya que no tengo ese sistema en mi equipo.
Asi que, esto lo tendre presente, por si algun dia me llegase a ver con este problema.
El problema no viene por tener particiones con Windows (es solo una particularidad de mi caso) sino por tener particiones raรญz pequeรฑas, menores a 10Gb donde el instalador utiliza las opciones predeterminadas de mke2fs (que es el que da formato a las particiones) y te deja con un nรบmero pequeรฑo de inodos para el tamaรฑo de la misma, y que como suele ser casi norma, todas nuestras particiones estรกn en EXT4 que fija este nรบmero cuando se crea y no es posible modificarlo despuรฉs.
como pueden ver, este es el tipo de cosas que alejan a la gente de linux y terminan volviendo a windows, ยฟcomo creen que un usuario comun frente a esta situacion pueda resolver el problema?
uno no tiene por que estar perdiendo el tiempo arreglando y configurando este tipo de cosas y perdiendo tiempo productivo.
tenia razon Miguel de Icaza con lo que decia y por eso decidio cambiarse a Mac porque ahi TODO FUNCIONA y punto.
Asรญ mismo es. En OS X todo funciona bonito.. De nada vale explicar en este momento el por quรฉ sucediรณ lo que el autor del post comenta, asรญ que por favor, que nadie alimente este comentario. Terminarรก en flame.
En mi caso, Debian me funciona todo en mi PC y resulta que usando el DVD como repo adicional para actualizar de Squeeze a Wheezy. Asรญ cualquiera puede actualizar.
pues entones, tienes la mente de un usuario windows.
GNU/Linux te quedo grande.
saludos
esto sรญ estรก interesante.
Este error es muy frecuente al instalar gentoo en discos chicos, tantos archivos fuente pequeรฑos y se queda sin inodos la particion por mas que quede 60% de espacio libre. Por lo menos el handbook lo soluciona al escribir mke2fs -j -T small /dev/sdaX ,probablemente ande en ubuntu. Antes de estar tocando configuraciones extraรฑas ๐
Exactamente, como ya lo mencione antes puedes especificar una relaciรณn de bytes inodos con la opciรณn -i , pero tambiรฉn esta la opciรณn que mencionas -T utiliza uno de los modos predeterminados en el archivo de configuraciรณn que nombre /etc/mke2fs.conf , en este caso small aplicara un blocksize = 1024, tamaรฑo de inodo de = 128 y una relaciรณn de bytes- inods = 4096.
Excelente!
Es el tรญpico problema que te come la cabeza un rato largo hasta que te das cuenta por donde venรญa.
+10 por la explicaciรณn ๐
Tal cual lo dices, ยกme tuvo un buen tiempo matรกndome la cabeza!, muchas gracias por el comentario, viniendo de alguien que sabe tanto como tu es todo un honor!
Excelente !!, He aprendido algo mas, y me ha servido para recuperar 19Mb y pico al quitar un header antiguo, asรญ como recuperar algunos inodos. Ahora tengo mas espacio para instalar. Como soy bastante novato con linux, si os parece bien os animo a que hagais algรบn post sobre como formatear para obtener el mayor nรบmero de inodos e indicaciรณn de si se puede realizar manteniendo la informaciรณn del disco o no.
Un saludo y gracias
Como lo mencione en una indicaciรณn al inicio de la entrada es un problema muy poco comรบn y esta asociado a particiones raรญz de tamaรฑo reducido (<10GB) como lo es mi caso, con otros tamaรฑos es poco probable que ocurra. Ahora bien respecto al cambio del nรบmero de inodos, como tambiรฉn lo mencione en la entrada no es posible hacerlo sin formatear en particiones tipo EXT4 por lo que no podrรญas mantener la informaciรณn en el disco sin haber hecho un respaldo previo, para cambiar la relaciรณn bytes inodos se usa la opciรณn -i en el comando mke2fs o una de las opciones asociadas a -T (small, big , huge etc).
Excelente! La exposiciรณn del problema, la explicaciรณn del porque sucedio, sus fundamentos, y los pasos de la soluciรณn! A esto le llamo un excelente aporte! Gracias Rayonant!
Gracias por el artรญculo, me ayudรณ mucho. Habรญa probado de todo para superar este error y al eliminar los headers viejos y sus dependencias con aptitude pude volver a instalar programas y a hacer las actualizaciones. Gracias!
Me ha pasado el mismo problema hace nada, y me ha traรญdo de cabeza jajaja. En mi caso, la particiรณn raรญz tenรญa bastante memoria libre, ยกpero estaba con el 100% de inodos usados! La cuestiรณn es que si llevas usando una misma distribuciรณn durante bastante tiempo y con el paso del tiempo no eliminas ningรบn kernel antiguo, la acumulaciรณn es terrible. En mi caso pude solucionar el problema de manera parecida a cรณmo lo pones, solo que el sudo apt-get remove o purge no me funcionaba y la clave para poder eliminar esos archivos de kernel en desuso fue utilizar sudo dpkg –remove y –purge, y uno a uno pude ir liberando inodos. Todo eso que se aprende. รjala hubiera dado con esta entrada antes porque habrรญa solucionado el asunto antes. Gracias por bosquejar un poco quรฉ es eso de los inodos, que no tenรญa mucha idea.
ยกgran blog, un saludo!
sos un groso y aunque es engorroso se entiende bastante bien. Hice todo al pie de la letra pero lo que no puedo hacer es eliminar los linux-headers anteriores, no me deja, me pone
E: se interrumpiรณ la ejecuciรณn de dpkg, debe ejecutar manualmente ยซsudo dpkg –configure -aยป para corregir el problema
ejecuto lo que me dice y me pone
Configurando openshot (1.4.0-1ubuntu1) …
Traceback (most recent call last):
File ยซ/usr/sbin/update-python-modulesยป, line 478, in
package.install(py_installed)
File ยซ/usr/sbin/update-python-modulesยป, line 112, in install
os.symlink(filename,destpath)
OSError: [Errno 2] No such file or directory
Error in sys.excepthook:
Traceback (most recent call last):
File ยซ/usr/lib/python2.7/dist-packages/apport_python_hook.pyยป, line 128, in apport_excepthook
os.O_WRONLY|os.O_CREAT|os.O_EXCL, 0o640), ‘w’)
OSError: [Errno 28] No space left on device: ‘/var/crash/_usr_sbin_update-python-modules.0.crash’
Original exception was:
Traceback (most recent call last):
File ยซ/usr/sbin/update-python-modulesยป, line 478, in
package.install(py_installed)
File ยซ/usr/sbin/update-python-modulesยป, line 112, in install
os.symlink(filename,destpath)
OSError: [Errno 2] No such file or directory
dpkg: error al procesar openshot (–configure):
el subproceso instalado el script post-installation devolviรณ el cรณdigo de salida de error 1
dpkg: error: fallo al abrir `/var/lib/dpkg/status’ para escribir la base de datos status: No queda espacio en el dispositivo
La pregunta es, de que me disfrazo?
ยกMuchas gracias! Me sirviรณ un montรณn este post.
Ole !!!
No solo resuelves un problema peliagudo, sino que aprendo (y disfruto) por el camino
Hola. En primer lugar, gracias por el post…
En segundo, lamentablemente no me sirviรณ. Lleguรฉ a รฉl por un problema de un paquete roto, que el sistema no me deja resolver por falta de espacio, que en realidad por lo que acรก se explicรณ era de los nodos i.
Entonces intentรฉ purgar los kernels viejos, como se sugiere, pero el sistema no me deja:
juan@juan-P29G:~$ sudo apt-get purge linux-image-3.2.0-29-generic-pae
Leyendo lista de paquetes… Hecho
Creando รกrbol de dependencias
Leyendo la informaciรณn de estado… Hecho
Tal vez quiera ejecutar ยซapt-get -f installยป para corregirlo:
Los siguientes paquetes tienen dependencias incumplidas:
tzdata-java : Depende: tzdata (= 2014i-0ubuntu0.12.04) pero 2014e-0ubuntu0.12.04 va a ser instalado
E: Dependencias incumplidas. Intente ยซapt-get -f installยป sin paquetes (o especifique una soluciรณn).
Y cuando sigo el consejo del sistema:
juan@juan-P29G:~$ sudo apt-get -f install
Leyendo lista de paquetes… Hecho
Creando รกrbol de dependencias
Leyendo la informaciรณn de estado… Hecho
Corrigiendo dependencias… Listo
Se instalarรกn los siguientes paquetes extras:
tzdata
Se actualizarรกn los siguientes paquetes:
tzdata
1 actualizados, 0 se instalarรกn, 0 para eliminar y 23 no actualizados.
1 no instalados del todo o eliminados.
Se necesita descargar 0 B/461 kB de archivos.
Se liberarรกn 31,7 kB despuรฉs de esta operaciรณn.
ยฟDesea continuar [S/n]? s
Preconfigurando paquetes …
(Leyendo la base de datos … 893468 ficheros o directorios instalados actualmente.)
Preparando para reemplazar tzdata 2014e-0ubuntu0.12.04 (usando …/tzdata_2014i-0ubuntu0.12.04_all.deb) …
Desempaquetando el reemplazo de tzdata …
dpkg: error al procesar /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb (–unpack):
no se puede respaldar enlace simbรณlico para `./usr/share/zoneinfo/posix/America/Santo_Domingo’: No queda espacio en el dispositivo
No se escribiรณ un informe ยซapportยป porque el mensaje de error indica que el error es de disco lleno
Se encontraron errores al procesar:
/var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Un cรญrculo vicioso… En fin, verรฉ quรฉ puedo hacer.
Saludos.
Hola de nuevo… ya sรฉ cรณmo romper el cรญrculo vicioso.
Eliminarรฉ la imagen del mรกs viejo de los kernels con este comando:
sudo dpkg –remove linux-image-3.2.0-29-generic-pae
Con eso gano 4389 nodos-i, suficientes para reparar el paquete roto, y luego elimino los encabezados del kernel mรกs viejo segรบn lo indicado en el post.
Y ahora recuperarรฉ mรกs nodos-i eliminando un montรณn de kernels viejos…
Gracias y saludos, Juan Carlos.
A mi no me dejaba borrar los headers
He tecleado
sudo nautilus
Y he ido a la carpeta /usr/src
Ahi he visto los ficheros ยซheadersยป y los he borrado
Con eso ya me ha dejado poner la orden autoremove
Gracias!! el post puede ser un poco viejo pero sigue siendo de gran utilidad, problema resuelto con los inodes
Rayonant: una explicaciรณn ejemplar.
Aunque, en mi caso, he debido ampliar la particiรณn (con Gparted), tu post me he servido para entender el problema. Y despuรฉs de seguir tu mรฉtodo, he pasado de un 90% de inodos ocupados (tras haber ampliado la particiรณn), a tan solo el 28%.
Muchas gracias. Lo utilizaลรฉ en adelante para ir eliminando los viejos kernels (y los headers).
Gracias tambiรฉn a Juan Carlos (yo tenรญa el mismo problema).
Un abrazo.
Interesante post,
En mi caso he bajado de un 100% de uso a un 9%
root@pi:/home/pi# apt-get clean
root@pi:/home/pi# df -i
S.ficheros Nodos-i NUsados NLibres NUso% Montado en
/dev/root 1915424 1915288 136 100% /
despuรฉs encontrar q los temporales de ntopng me estaban tocando las narices, los he eliminado y…
root@pi:/home/pi# rm -rf /var/tmp/ntopng/
ยกยกยกtachรกn!!!
root@pi:/# df -i
S.ficheros Nodos-i NUsados NLibres NUso% Montado en
/dev/root 1915424 160408 1755016 9% /
Gracias ๐