¿Qué es el 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 No space left on device al intentar guardar un archivo, instalar un paquete o ejecutar un proceso. Lo más frustrante de este fallo es que, a menudo, ejecutas el comando df -h y descubres que todavía hay gigabytes de almacenamiento disponible.
Este comportamiento ocurre por dos motivos principales: o bien el sistema de archivos se ha quedado completamente sin bloques de datos reales, o bien se han agotado los inodos (las estructuras de datos que almacenan la metainformación de los archivos). A continuación, te explicamos cómo identificar la causa exacta y aplicar la solución definitiva.
Causas comunes del error de espacio agotado
- Llenado real del disco: Los archivos de registro (logs), cachés o descargas han ocupado el 100% de la partición.
- Agotamiento de inodos: Aunque tengas espacio libre en disco, si creas millones de archivos muy pequeños (como cachés de npm o sesiones PHP), consumes todos los inodos disponibles.
- Archivos eliminados pero abiertos: Procesos en segundo plano siguen escribiendo en archivos que fueron borrados con
rm, reteniendo el espacio en el disco duro.
Método 1: Liberar espacio eliminando archivos grandes y cachés
El primer paso consiste en verificar el uso real de las particiones y limpiar los archivos temporales más comunes que saturan el sistema.
- Abre tu terminal de Linux.
- Ejecuta el siguiente comando para identificar qué directorios están consumiendo más espacio:
sudo du -h --max-depth=1 /var/log - Elimina los archivos de log antiguos o comprimidos que ya no necesites.
- Limpia la caché del gestor de paquetes (por ejemplo, en Ubuntu/Debian):
sudo apt clean
Método 2: Comprobar y 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:
- Ejecuta el comando para revisar el uso de inodos:
df -inode - Si alguna partición muestra un uso del 100% en la columna
IUse%, debes buscar qué directorio acumula tantos archivos pequeños. - Ejecuta este comando para ver el consumo de inodos por carpeta:
sudo ncdu /(o utilizals -d */ | xargs -n 1 sh -c 'echo "$(ls $1 | wc -l) $1"'). - Borra lotes de archivos temporales obsoletos para liberar inodos de forma inmediata.
Método 3: Liberar espacio retenido por procesos activos
A veces borras archivos con rm, pero si un servicio sigue utilizándolos, Linux no libera el espacio en disco. Para solucionarlo:
- Busca archivos borrados pero que siguen abiertos ejecutando:
sudo lsof +L1 - Identifica el PID del proceso asociado en la lista resultante.
- Reinicia el servicio o proceso afectado para forzar al sistema operativo a liberar el espacio en disco de manera definitiva. Por ejemplo:
sudo systemctl restart nginx