Introducción al Error 'No space left on device' en Linux
Uno de los problemas más desconcertantes para los administradores de sistemas y usuarios avanzados de Linux es encontrarse con el mensaje de error No space left on device al intentar guardar un archivo, instalar un paquete o ejecutar un script, a pesar de que el comando df -h muestra que hay espacio disponible en el disco duro. Este comportamiento inesperado suele generar confusión, pero tiene una explicación técnica muy clara relacionada con el sistema de archivos.
Causas Principales del Problema en Linux
Este error no siempre ocurre porque la capacidad en gigabytes del disco se haya agotado. Las dos causas más comunes son:
- Agotamiento de Inodos: Cada archivo y directorio en Linux utiliza un inodo para almacenar sus metadatos. Si creas millones de archivos pequeños (como cachés, sesiones web o nodos de
node_modules), puedes agotar todos los inodos disponibles aunque tengas espacio libre en gigabytes. - Archivos Borrados pero Abiertos por Procesos: Si eliminas un archivo grande (como un log del sistema) mientras un proceso sigue escribiendo en él, el espacio en disco no se libera realmente hasta que se reinicia el servicio o proceso correspondiente.
Método 1: Cómo Comprobar y Liberar Inodos Agotados
Para verificar si el problema es la falta de inodos, debes ejecutar un comando específico en tu terminal y posteriormente limpiar los directorios que acumulan archivos basura.
- Abre tu terminal de Linux y ejecuta el siguiente comando para verificar el uso de inodos:
df -i - Revisa la columna
IUse%. Si alguno de tus puntos de montaje muestra un 100%, has encontrado la causa del error. - Identifica qué directorio está consumiendo todos los inodos ejecutando:
sudo du --inodes -s /* | sort -hr - Una vez detectado el directorio problemático (por ejemplo, una carpeta de caché antigua), elimina los archivos masivos o comprime el directorio para liberar inodos.
Método 2: Detectar y Detener Procesos con Archivos Abiertos Eliminados
Si el sistema de archivos tiene inodos disponibles pero sigue sin haber espacio físico, es muy probable que un proceso mantenga retenido un archivo borrado.
- Ejecuta el siguiente comando para listar los archivos borrados que siguen ocupando espacio:
sudo lsof +L1 - Busca en la salida del comando aquellos archivos con un tamaño considerable y anota el ID del proceso (PID) que aparece en la columna correspondiente.
- Reinicia el servicio asociado a ese PID o mátalo de forma segura usando:
sudo kill -9 [PID] - Verifica que el espacio se haya liberado correctamente ejecutando de nuevo:
df -h
Conclusión
El error No space left on device en Linux es fácil de resolver una vez identificas si el cuello de botella está en los inodos o en archivos fantasma retenidos por procesos activos. Realizar un mantenimiento periódico de cachés y logs evitará que este inconveniente vuelva a interrumpir tus operaciones en el servidor o estación de trabajo.