# Disco lleno en un servidor Linux: encuentra qué ocupa el espacio

Un disco lleno suele tener una o dos causas evidentes. Trabaja de arriba abajo, lee antes de borrar y nunca elimines archivos de /var/lib a mano si no sabes qué servicio es su propietario.

## 1. Confirma qué sistema de archivos está lleno

Ejecuta df -h. Fíjate en la columna Use% y en la columna Mounted on: el sistema de archivos lleno puede ser / o un montaje independiente como /var, /home o /data, y limpiar el equivocado no cambia nada.
Ejecuta también df -i. Un sistema de archivos puede tener espacio libre pero no inodos libres, lo que ocurre cuando se acumulan millones de archivos diminutos (sesiones, colas de correo, archivos de caché). Si IUse% está cerca del 100 %, lo que buscas son muchos archivos pequeños, no unos pocos grandes.

## 2. Encuentra los directorios más grandes

Ejecuta sudo du -xh --max-depth=1 / | sort -h y lee las últimas líneas. La opción -x se mantiene en un solo sistema de archivos, de modo que los discos montados y los sistemas de archivos virtuales no distorsionan el resultado. Repite el proceso dentro del directorio más grande, por ejemplo sudo du -xh --max-depth=1 /var | sort -h.
Si ncdu está instalado (sudo apt install ncdu en Debian y Ubuntu), sudo ncdu -x / te permite recorrer los mismos datos de forma interactiva.

## 3. Busca archivos eliminados que siguen abiertos

Si du muestra mucho menos que df, es posible que un proceso siga manteniendo abierto un archivo eliminado, a menudo un registro grande. sudo lsof +L1 lista los archivos abiertos con un recuento de enlaces igual a cero. El espacio se recupera cuando ese proceso cierra el archivo, lo que normalmente significa reiniciar el servicio que lo utiliza. Hazlo en un momento tranquilo, no en pleno pico de solicitudes.

## 4. Revisa los sospechosos habituales

Registros: mira en /var/log y comprueba el journal con journalctl --disk-usage. Consulta nuestra guía sobre cómo limitar el tamaño de journald si es grande.
Paquetes: sudo apt clean elimina los archivos de paquetes descargados; sudo apt autoremove lista los paquetes y los kernels antiguos que ya no hacen falta, y muestra lo que va a eliminar antes de que confirmes. Conserva el kernel en ejecución y una versión anterior.
Docker: docker system df muestra imágenes, contenedores, volúmenes y caché de compilación. docker system prune elimina los contenedores detenidos, las redes sin usar y las imágenes huérfanas; no elimina los volúmenes a menos que añadas --volumes, así que lee el mensaje antes de responder.
Snap: snap list --all muestra revisiones antiguas de snaps que están deshabilitadas y que pueden eliminarse una a una con snap remove NAME --revision=NUMBER.

## 5. Después de liberar espacio

Ejecuta df -h de nuevo y comprueba que los servicios que se detuvieron por el disco lleno están en ejecución (systemctl --failed). Es posible que una base de datos que llegó a un disco lleno necesite reiniciarse o revisarse antes de confiar en ella.
Después establece un límite para que no se repita: rotación de registros, un límite de journald y una alerta antes de que el disco llegue al 90 %.

## FAQ

**¿Es seguro eliminar archivos de /var/log?**

Los registros rotados y comprimidos (por ejemplo syslog.1 o archivos .gz) normalmente se pueden eliminar cuando ya no los necesites. No elimines el archivo de registro actual de un servicio en ejecución; trúncalo con cuidado o deja que logrotate se encargue, y comprueba primero qué espera el servicio.

**¿Por qué df muestra un disco lleno pero las cifras de du no cuadran?**

Normalmente un proceso en ejecución mantiene abierto un archivo eliminado (consulta lsof +L1), o las cifras proceden de sistemas de archivos distintos. Usa du -x y compáralo con df para el mismo punto de montaje.

**¿Debo ejecutar docker system prune en un servidor de producción?**

Solo después de revisar docker system df y ver qué no se usa. Puede eliminar imágenes que todavía piensas iniciar. Los volúmenes se conservan de forma predeterminada, pero asegúrate de tener copias de seguridad de todo lo importante.

Source: https://raincleaner.eu/es/guides/linux-server-disk-full-find-what-is-using-space