¿Qué hacer cuando Linux dice que el disco está lleno?
Cristian Tafur
@Cristia16195614El disco lleno suele notarse cuando ya molesta: una actualización que falla, un programa que no abre o un contenedor que se detiene. Antes de borrar al azar, averigua qué partición está llena y qué la ocupa.
Paso 1: identifica la partición llena
df -h
Fíjate en la columna Uso% y en el punto de montaje: no es lo mismo que se llene / (el sistema) que /home (tus archivos). Las líneas tmpfs y loop no son discos reales, ignóralas.
Paso 2: encuentra las carpetas más pesadas
Para ver cuánto ocupa cada carpeta de primer nivel dentro de tu directorio personal:
du -h --max-depth=1 ~ | sort -h
Para revisar el sistema completo sin salir de la partición raíz:
sudo du -xh --max-depth=1 / | sort -h
La opción -x evita que el comando entre en otros discos montados. Repítelo bajando por la carpeta más grande hasta dar con el origen.
ncdu hace lo mismo de forma interactiva y se navega con las flechas:
sudo apt install ncdu
sudo ncdu -x /
Paso 3: revisa a los sospechosos habituales
Docker
Si usas contenedores, empieza por aquí: imágenes antiguas, contenedores detenidos y caché de compilación crecen sin que lo notes.
docker system df
Para eliminar lo que no está en uso:
docker system prune
Borra contenedores detenidos, redes sin usar, imágenes sin etiqueta y caché de compilación, pero no los volúmenes. Existe --volumes, aunque solo deberías usarla si estás seguro, porque ahí viven los datos de tus bases de datos y servicios.
Los registros de los contenedores tampoco tienen límite de tamaño por defecto. Puedes fijar uno en /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
El límite se aplica a los contenedores creados después de reiniciar el servicio de Docker.
Registros del sistema
Comprueba cuánto ocupa el diario de systemd y redúcelo:
journalctl --disk-usage
sudo journalctl --vacuum-size=200M
Paquetes y núcleos antiguos
En Ubuntu y derivadas:
sudo apt autoremove --purge
sudo apt clean
El primero quita dependencias huérfanas y núcleos viejos; el segundo vacía la caché de paquetes descargados.
Versiones antiguas de Snap
Snap conserva versiones anteriores de cada aplicación. Para ver cuáles están desactivadas:
snap list --all | grep desactivado
Si tu sistema está en inglés, busca disabled. Para limitar cuántas versiones se guardan en adelante:
sudo snap set system refresh.retain=2
Cachés de usuario
~/.cache se puede vaciar sin perder datos, porque los programas la reconstruyen cuando la necesitan. Mira primero qué pesa más:
du -h --max-depth=1 ~/.cache | sort -h
La papelera también ocupa espacio hasta que la vacías:
du -sh ~/.local/share/Trash
Dos casos que despistan
Hay espacio libre, pero el sistema dice que no
Puede que se hayan agotado los inodos, las entradas disponibles para archivos. Pasa cuando hay millones de archivos diminutos:
df -i
Si alguna partición marca 100 % en esa tabla, busca carpetas con muchísimos archivos, como cachés o sesiones antiguas.
Borraste archivos y el espacio no vuelve
Si un programa tenía abierto el archivo que eliminaste, el espacio no se libera hasta que ese programa se cierra; pasa mucho con los registros. Para encontrarlos:
sudo lsof +L1
Reinicia el servicio que aparezca en la lista y el espacio vuelve.
Para que no vuelva a pasar
- Fija un límite a los registros de Docker y al diario del sistema.
- Ejecuta
docker system prunecada cierto tiempo si compilas imágenes con frecuencia. - Revisa
df -hantes de una actualización grande. - No borres nada dentro de
/var/liba mano; usa siempre la herramienta del programa dueño de esos datos.