Introducción al error No space left on device
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 o instalar un paquete, a pesar de que el comando df -h muestra que aún hay almacenamiento disponible. Este error puede paralizar servicios críticos como bases de datos, servidores web y la ejecución de scripts en segundo plano.
Causas principales de este fallo en Linux
Aunque el motivo más obvio es que la partición del disco duro se ha llenado al 100%, existen otras causas técnicas muy comunes que provocan este comportamiento:
- Agotamiento de inodos: El sistema de archivos se queda sin inodos (estructuras que almacenan los metadatos de los archivos), aunque todavía quede espacio físico en gigabytes.
- Archivos eliminados pero retenidos por procesos activos: Un proceso sigue escribiendo o manteniendo abierto un archivo que fue borrado con
rm, por lo que el espacio no se libera realmente hasta que se reinicia el servicio o el sistema. - Uso excesivo de la partición temporal (/tmp): Archivos basura acumulados que saturan la partición raíz o los directorios temporales.
Método 1: Verificar y liberar inodos en el sistema de archivos
Si el comando df -h indica espacio libre pero sigues sin poder crear archivos, el problema son los inodos. Sigue estos pasos para solucionarlo:
- Abre tu terminal de Linux con privilegios de superusuario.
- Ejecuta el siguiente comando para comprobar el uso de inodos:
df -i - Identifica la partición que se encuentra al 100% de uso de inodos (generalmente
/o/var). - Busca los directorios que contienen mayor cantidad de archivos pequeños ejecutando:
sudo du --inodes -s /* | sort -hr - Elimina archivos basura acumulados, como cachés de correo electrónico o sesiones antiguas, para liberar inodos rápidamente.
Método 2: Encontrar archivos eliminados retenidos por procesos
A menudo, los archivos grandes se eliminan de la vista del usuario, pero los demonios del sistema siguen usándolos, impidiendo que el disco libere el espacio. Para resolverlo:
- Ejecuta el comando para listar archivos borrados pero aún abiertos:
sudo lsof +L1 - Revisa la lista generada y localiza los procesos que muestran el estado
deleteden la columna correspondiente. - Reinicia el servicio asociado a ese proceso para forzar al sistema operativo a cerrar los descriptores de archivos y liberar el espacio en disco. Por ejemplo, si es el servidor web Apache, usa:
sudo systemctl restart apache2 - Si el proceso no se asocia a un servicio fácil de reiniciar, puedes terminarlo mediante su PID con el comando:
sudo kill -9 PID
Conclusión
El error No space left on device en sistemas Linux no siempre significa que necesites un disco duro más grande. Comprobando regularmente el estado de los inodos y gestionando adecuadamente los procesos que mantienen archivos fantasma abiertos, podrás mantener tu servidor o estación de trabajo funcionando de manera óptima y sin interrupciones.