Introducción
Uno de los errores más molestos y comunes a los que se enfrentan los administradores de sistemas y usuarios avanzados de Linux es el mensaje No space left on device. Lo sorprendente de este fallo es que, a menudo, ejecutas el comando df -h y descubres que todavía tienes gigabytes de espacio libre en el disco duro. ¿Cómo es posible? La respuesta suele estar en el agotamiento de los inodos o en archivos ocultos que están consumiendo la partición raíz.
Causas Principales del Error No Space Left on Device
Este problema puede originarse por dos razones principales:
- Agotamiento de espacio real: El disco duro o la partición (generalmente
/o/var) ha llegado al 100% de su capacidad debido a logs pesados, cachés acumuladas o grandes descargas. - Agotamiento de Inodos: Cada archivo y directorio en Linux requiere un inodo para almacenar sus metadatos. Si creas una cantidad masiva de archivos muy pequeños (como cachés de Node.js, sesiones de PHP o correos electrónicos), puedes agotar todos los inodos disponibles aunque todavía tengas espacio físico libre en gigabytes.
Método 1: Comprobar el Espacio Real en Disco y Eliminar Archivos Grandes
El primer paso es verificar el uso real de las particiones utilizando las herramientas nativas de la terminal.
- Abre tu terminal y ejecuta el siguiente comando para ver el espacio disponible:
df -h - Si observas que una partición está al 100%, busca los directorios que están consumiendo más espacio utilizando el comando
du:sudo du -h --max-depth=1 /var - Una vez identificado el directorio problemático (por ejemplo, los archivos de registro o logs), elimina los archivos innecesarios o vacía los logs antiguos:
sudo rm -rf /var/log/*.gz
Método 2: Solucionar el Agotamiento de Inodos
Si el comando df -h muestra espacio disponible pero sigues sin poder crear archivos, el problema son los inodos. Sigue estos pasos para solucionarlo:
- Verifica el uso actual de los inodos ejecutando:
df -inode - Si el uso de inodos en la partición
/está al 100%, debes buscar qué directorio contiene la mayor cantidad de archivos pequeños. Ejecuta:sudo find / -xdev -prepare | cut -d/ -f 2 | sort | uniq -c | sort -n - Una vez localizado el foco del problema (por ejemplo, una carpeta de sesiones antiguas o caché de paquetes), procede a limpiar dichos archivos masivamente o utiliza herramientas de limpieza específicas de tu distribución para recuperar inodos libres.
Método 3: Liberar Espacio Ocupado por Procesos en Ejecución (Archivos Abiertos)
A veces, eliminas archivos grandes para liberar espacio, pero el sistema operativo no recupera el almacenamiento porque un proceso en segundo plano sigue manteniendo esos archivos abiertos.
- Ejecuta el siguiente comando para listar los archivos eliminados pero que siguen abiertos por procesos activos:
sudo lsof +L1 - Identifica el ID del proceso (PID) en la columna correspondiente y reinicia el servicio o mata el proceso para liberar definitivamente el espacio en disco:
sudo kill -9 [PID_DEL_PROCESO]